From 690b1d880069fa8bafa7a8999d21baa574706d9a Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 14 Oct 2014 21:31:39 +0200 Subject: [PATCH 001/249] codec: disable AAC on Android device without hardware AEC --- coreapi/linphonecore.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index fa1adf331..816f6b618 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1011,6 +1011,13 @@ static MSList *codec_append_if_new(MSList *l, PayloadType *pt){ return l; } +#if defined(ANDROID) +static int is_aac_eld_payload(const void* a, const void* b) { + PayloadType *pt = (PayloadType*)a; + return strncmp(pt->mime_type, "mpeg4-generic", strlen("mpeg4-generic")); +} +#endif + static void codecs_config_read(LinphoneCore *lc) { int i; @@ -1025,6 +1032,17 @@ static void codecs_config_read(LinphoneCore *lc) } } audio_codecs=add_missing_codecs(lc,SalAudio,audio_codecs); + +#if defined(ANDROID) + /* AAC-ELD requires hardware AEC */ + if (lc->sound_conf.capt_sndcard && + !(ms_snd_card_get_capabilities(lc->sound_conf.capt_sndcard) & MS_SND_CARD_CAP_BUILTIN_ECHO_CANCELLER)) { + /* Remove AAC-ELD */ + audio_codecs = ms_list_remove_custom(audio_codecs, is_aac_eld_payload, NULL); + ms_message("Disable AAC-ELD (needs hardware AEC)"); + } +#endif + for (i=0;get_codec(lc,"video_codec",i,&pt);i++){ if (pt){ if (!ms_filter_codec_supported(pt->mime_type)){ @@ -3510,7 +3528,7 @@ int linphone_core_accept_call_with_params(LinphoneCore *lc, LinphoneCall *call, return -1; break; } - + /* check if this call is supposed to replace an already running one*/ replaced=sal_call_get_replaces(call->op); if (replaced){ From deaaf0a19b20f55ad258fb4a6b95a84af32146cc Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 14 Oct 2014 23:40:44 +0200 Subject: [PATCH 002/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 2fa9c8e25..8ae28e84a 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 2fa9c8e258eacadc789f87d3ea3a152faea291ea +Subproject commit 8ae28e84aac235daa3d032bb7b35888764ebd8c6 From a7d81a117d5ec933e08bb3dccece05ce2f8a11d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 15 Oct 2014 09:37:06 +0200 Subject: [PATCH 003/249] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 8ae28e84a..c45dca7be 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 8ae28e84aac235daa3d032bb7b35888764ebd8c6 +Subproject commit c45dca7bedea220fe3bc718b89bd36a21c97fa2f From 08539a08958f2fdab6fbf01723d76db8dd4eddbe Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 15 Oct 2014 10:57:08 +0200 Subject: [PATCH 004/249] atomically sync the lpconfig on disk --- coreapi/lpconfig.c | 7 ++++++- coreapi/misc.c | 2 ++ mediastreamer2 | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/coreapi/lpconfig.c b/coreapi/lpconfig.c index c1ffea0fc..5c556acc7 100644 --- a/coreapi/lpconfig.c +++ b/coreapi/lpconfig.c @@ -77,6 +77,7 @@ struct _LpConfig{ int refcnt; FILE *file; char *filename; + char *tmpfilename; MSList *sections; int modified; int readonly; @@ -349,6 +350,7 @@ LpConfig *lp_config_new_with_factory(const char *config_filename, const char *fa if (config_filename!=NULL){ ms_message("Using (r/w) config information from %s", config_filename); lpconfig->filename=ortp_strdup(config_filename); + lpconfig->tmpfilename=ortp_strdup_printf("%s.tmp",config_filename); lpconfig->file=fopen(config_filename,"r+"); if (lpconfig->file!=NULL){ lp_config_parse(lpconfig,lpconfig->file); @@ -583,7 +585,7 @@ int lp_config_sync(LpConfig *lpconfig){ /* don't create group/world-accessible files */ (void) umask(S_IRWXG | S_IRWXO); #endif - file=fopen(lpconfig->filename,"w"); + file=fopen(lpconfig->tmpfilename,"w"); if (file==NULL){ ms_warning("Could not write %s ! Maybe it is read-only. Configuration will not be saved.",lpconfig->filename); lpconfig->readonly=1; @@ -591,6 +593,9 @@ int lp_config_sync(LpConfig *lpconfig){ } ms_list_for_each2(lpconfig->sections,(void (*)(void *,void*))lp_section_write,(void *)file); fclose(file); + if (rename(lpconfig->tmpfilename,lpconfig->filename)!=0){ + ms_error("Cannot rename %s into %s: %s",lpconfig->tmpfilename,lpconfig->filename,strerror(errno)); + } lpconfig->modified=0; return 0; } diff --git a/coreapi/misc.c b/coreapi/misc.c index 30100a304..c89111333 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -966,6 +966,8 @@ unsigned int linphone_core_get_audio_features(LinphoneCore *lc){ else if (strcasecmp(name,"DTMF")==0) ret|=AUDIO_STREAM_FEATURE_DTMF; else if (strcasecmp(name,"DTMF_ECHO")==0) ret|=AUDIO_STREAM_FEATURE_DTMF_ECHO; else if (strcasecmp(name,"MIXED_RECORDING")==0) ret|=AUDIO_STREAM_FEATURE_MIXED_RECORDING; + else if (strcasecmp(name,"LOCAL_PLAYING")==0) ret|=AUDIO_STREAM_FEATURE_LOCAL_PLAYING; + else if (strcasecmp(name,"REMOTE_PLAYING")==0) ret|=AUDIO_STREAM_FEATURE_REMOTE_PLAYING; else if (strcasecmp(name,"ALL")==0) ret|=AUDIO_STREAM_FEATURE_ALL; else if (strcasecmp(name,"NONE")==0) ret=0; else ms_error("Unsupported audio feature %s requested in config file.",name); diff --git a/mediastreamer2 b/mediastreamer2 index c45dca7be..2054fd609 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit c45dca7bedea220fe3bc718b89bd36a21c97fa2f +Subproject commit 2054fd60911b585458b62d52092894a5d1b59503 From 40a82f05f5f8a01227d6d6a3a71743bc3c047d73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 15 Oct 2014 12:10:03 +0200 Subject: [PATCH 005/249] Rename fileplayer.c into localplayer.c --- coreapi/Makefile.am | 2 +- coreapi/fileplayer.c | 96 ------------------------------------- coreapi/linphonecore.h | 10 ++-- coreapi/linphonecore_jni.cc | 6 +-- coreapi/localplayer.c | 96 +++++++++++++++++++++++++++++++++++++ mediastreamer2 | 2 +- tester/player_tester.c | 6 +-- 7 files changed, 109 insertions(+), 109 deletions(-) delete mode 100644 coreapi/fileplayer.c create mode 100644 coreapi/localplayer.c diff --git a/coreapi/Makefile.am b/coreapi/Makefile.am index e2a6beb4f..2bb8498d9 100644 --- a/coreapi/Makefile.am +++ b/coreapi/Makefile.am @@ -62,7 +62,7 @@ liblinphone_la_SOURCES=\ call_log.c \ call_params.c \ player.c \ - fileplayer.c \ + localplayer.c \ $(GITVERSION_FILE) if BUILD_UPNP diff --git a/coreapi/fileplayer.c b/coreapi/fileplayer.c deleted file mode 100644 index 103dd205e..000000000 --- a/coreapi/fileplayer.c +++ /dev/null @@ -1,96 +0,0 @@ -/* -linphone -Copyright (C) 2000 - 2010 Simon MORLAT (simon.morlat@linphone.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 "private.h" -#include -#include - -static int file_player_open(LinphonePlayer *obj, const char *filename); -static int file_player_start(LinphonePlayer *obj); -static int file_player_pause(LinphonePlayer *obj); -static int file_player_seek(LinphonePlayer *obj, int time_ms); -static MSPlayerState file_player_get_state(LinphonePlayer *obj); -static int file_player_get_duration(LinphonePlayer *obj); -static int file_player_get_current_position(LinphonePlayer *obj); -static void file_player_close(LinphonePlayer *obj); -static void file_player_eof_callback(void *user_data); - -LinphonePlayer *linphone_core_create_file_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, void *window_id) { - LinphonePlayer *obj = ms_new0(LinphonePlayer, 1); - if(snd_card == NULL) snd_card = lc->sound_conf.play_sndcard; - if(video_out == NULL) video_out = linphone_core_get_video_display_filter(lc); - obj->impl = ms_file_player_new(snd_card, video_out, window_id); - obj->open = file_player_open; - obj->start = file_player_start; - obj->pause = file_player_pause; - obj->seek = file_player_seek; - obj->get_state = file_player_get_state; - obj->get_duration = file_player_get_duration; - obj->get_position = file_player_get_current_position; - obj->close = file_player_close; - ms_file_player_set_eof_callback((MSFilePlayer *)obj->impl, file_player_eof_callback, obj); - return obj; -} - -void linphone_file_player_destroy(LinphonePlayer *obj) { - ms_file_player_free((MSFilePlayer *)obj->impl); - ms_free(obj); -} - -bool_t linphone_file_player_matroska_supported(void) { - return ms_file_player_matroska_supported(); -} - -static int file_player_open(LinphonePlayer *obj, const char *filename) { - return ms_file_player_open((MSFilePlayer *)obj->impl, filename) ? 0 : -1; -} - -static int file_player_start(LinphonePlayer *obj) { - return ms_file_player_start((MSFilePlayer *)obj->impl) ? 0 : -1; -} - -static int file_player_pause(LinphonePlayer *obj) { - ms_file_player_pause((MSFilePlayer *)obj->impl); - return 0; -} - -static int file_player_seek(LinphonePlayer *obj, int time_ms) { - return ms_file_player_seek((MSFilePlayer *)obj->impl, time_ms) ? 0 : -1; -} - -static MSPlayerState file_player_get_state(LinphonePlayer *obj) { - return ms_file_player_get_state((MSFilePlayer *)obj->impl); -} - -static int file_player_get_duration(LinphonePlayer *obj) { - return ms_file_player_get_duration((MSFilePlayer *)obj->impl); -} - -static int file_player_get_current_position(LinphonePlayer *obj) { - return ms_file_player_get_current_position((MSFilePlayer *)obj->impl); -} - -static void file_player_close(LinphonePlayer *obj) { - ms_file_player_close((MSFilePlayer *)obj->impl); -} - -static void file_player_eof_callback(void *user_data) { - LinphonePlayer *obj = (LinphonePlayer *)user_data; - obj->cb(obj, obj->user_data); -} diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 7dd4d8f55..2f1036678 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -599,25 +599,25 @@ void linphone_player_close(LinphonePlayer *obj); /** * @brief Create an independent media file player. * This player support WAVE and MATROSKA formats. - * @param lc A LinphoneCore + * @param lc A LinphoneCore object * @param snd_card Playback sound card. If NULL, the sound card set in LinphoneCore will be used * @param video_out Video display. If NULL, the video display set in LinphoneCore will be used * @param window_id Pointer on the drawing window * @return A pointer on the new instance. NULL if faild. */ -LINPHONE_PUBLIC LinphonePlayer *linphone_core_create_file_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, void *window_id); +LINPHONE_PUBLIC LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, void *window_id); /** - * @brief Destroy a file player + * @brief Destroy a local player * @param obj File player to destroy */ -LINPHONE_PUBLIC void linphone_file_player_destroy(LinphonePlayer *obj); +LINPHONE_PUBLIC void linphone_local_player_destroy(LinphonePlayer *obj); /** * @brief Check whether Matroksa format is supported by the player * @return TRUE if it is supported */ -LINPHONE_PUBLIC bool_t linphone_file_player_matroska_supported(void); +LINPHONE_PUBLIC bool_t linphone_local_player_matroska_supported(void); /** * LinphoneCallState enum represents the different state a call can reach into. diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index dbcc128c7..c1cc56e47 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -5303,7 +5303,7 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_createPlayer(JNIEnv *en return 0; } window_ref = env->NewGlobalRef(window); - LinphonePlayer *player = linphone_core_create_file_player((LinphoneCore *)ptr, snd_card, "MSAndroidDisplay", window_ref); + LinphonePlayer *player = linphone_core_create_local_player((LinphoneCore *)ptr, snd_card, "MSAndroidDisplay", window_ref); if(player == NULL) { ms_error("Fails to create a player"); if(window_ref) env->DeleteGlobalRef(window_ref); @@ -5318,7 +5318,7 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_destroyPlayer(JNIEnv *en if(player->user_data) { delete (LinphonePlayerData *)player->user_data; } - jobject window_id = (jobject)ms_file_player_get_window_id((MSFilePlayer *)player->impl); + jobject window_id = (jobject)ms_media_player_get_window_id((MSMediaPlayer *)player->impl); if(window_id) env->DeleteGlobalRef(window_id); - linphone_file_player_destroy(player); + linphone_local_player_destroy(player); } diff --git a/coreapi/localplayer.c b/coreapi/localplayer.c new file mode 100644 index 000000000..9d6e1b5c3 --- /dev/null +++ b/coreapi/localplayer.c @@ -0,0 +1,96 @@ +/* +linphone +Copyright (C) 2000 - 2010 Simon MORLAT (simon.morlat@linphone.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 "private.h" +#include +#include + +static int _local_player_open(LinphonePlayer *obj, const char *filename); +static int _local_player_start(LinphonePlayer *obj); +static int _local_player_pause(LinphonePlayer *obj); +static int _local_player_seek(LinphonePlayer *obj, int time_ms); +static MSPlayerState _local_player_get_state(LinphonePlayer *obj); +static int _local_player_get_duration(LinphonePlayer *obj); +static int _local_player_get_current_position(LinphonePlayer *obj); +static void _local_player_close(LinphonePlayer *obj); +static void _local_player_eof_callback(void *user_data); + +LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, void *window_id) { + LinphonePlayer *obj = ms_new0(LinphonePlayer, 1); + if(snd_card == NULL) snd_card = lc->sound_conf.play_sndcard; + if(video_out == NULL) video_out = linphone_core_get_video_display_filter(lc); + obj->impl = ms_media_player_new(snd_card, video_out, window_id); + obj->open = _local_player_open; + obj->start = _local_player_start; + obj->pause = _local_player_pause; + obj->seek = _local_player_seek; + obj->get_state = _local_player_get_state; + obj->get_duration = _local_player_get_duration; + obj->get_position = _local_player_get_current_position; + obj->close = _local_player_close; + ms_media_player_set_eof_callback((MSMediaPlayer *)obj->impl, _local_player_eof_callback, obj); + return obj; +} + +void linphone_local_player_destroy(LinphonePlayer *obj) { + ms_media_player_free((MSMediaPlayer *)obj->impl); + ms_free(obj); +} + +bool_t linphone_local_player_matroska_supported(void) { + return ms_media_player_matroska_supported(); +} + +static int _local_player_open(LinphonePlayer *obj, const char *filename) { + return ms_media_player_open((MSMediaPlayer *)obj->impl, filename) ? 0 : -1; +} + +static int _local_player_start(LinphonePlayer *obj) { + return ms_media_player_start((MSMediaPlayer *)obj->impl) ? 0 : -1; +} + +static int _local_player_pause(LinphonePlayer *obj) { + ms_media_player_pause((MSMediaPlayer *)obj->impl); + return 0; +} + +static int _local_player_seek(LinphonePlayer *obj, int time_ms) { + return ms_media_player_seek((MSMediaPlayer *)obj->impl, time_ms) ? 0 : -1; +} + +static MSPlayerState _local_player_get_state(LinphonePlayer *obj) { + return ms_media_player_get_state((MSMediaPlayer *)obj->impl); +} + +static int _local_player_get_duration(LinphonePlayer *obj) { + return ms_media_player_get_duration((MSMediaPlayer *)obj->impl); +} + +static int _local_player_get_current_position(LinphonePlayer *obj) { + return ms_media_player_get_current_position((MSMediaPlayer *)obj->impl); +} + +static void _local_player_close(LinphonePlayer *obj) { + ms_media_player_close((MSMediaPlayer *)obj->impl); +} + +static void _local_player_eof_callback(void *user_data) { + LinphonePlayer *obj = (LinphonePlayer *)user_data; + obj->cb(obj, obj->user_data); +} diff --git a/mediastreamer2 b/mediastreamer2 index 2054fd609..38b219a95 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 2054fd60911b585458b62d52092894a5d1b59503 +Subproject commit 38b219a95a5ecdf2ed52594c6aadcf0a78c880f5 diff --git a/tester/player_tester.c b/tester/player_tester.c index 7c37a95de..14bb6d3ab 100644 --- a/tester/player_tester.c +++ b/tester/player_tester.c @@ -59,7 +59,7 @@ static void play_file(const char *filename, bool_t unsupported_format) { CU_ASSERT_PTR_NOT_NULL(lc_manager); if(lc_manager == NULL) return; - player = linphone_core_create_file_player(lc_manager->lc, ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()), _get_default_video_renderer(), NULL); + player = linphone_core_create_local_player(lc_manager->lc, ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()), _get_default_video_renderer(), NULL); CU_ASSERT_PTR_NOT_NULL(player); if(player == NULL) goto fail; @@ -79,12 +79,12 @@ static void play_file(const char *filename, bool_t unsupported_format) { linphone_player_close(player); fail: - if(player) linphone_file_player_destroy(player); + if(player) linphone_local_player_destroy(player); if(lc_manager) linphone_core_manager_destroy(lc_manager); } static void playing_test(void) { - play_file("sounds/hello_opus_h264.mkv", !linphone_file_player_matroska_supported()); + play_file("sounds/hello_opus_h264.mkv", !linphone_local_player_matroska_supported()); } test_t player_tests[] = { From 4be7d1c93102790ea74893632eb5d26ddabc4f71 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 15 Oct 2014 12:31:56 +0200 Subject: [PATCH 006/249] Fix message_storage for WP8 --- build/wp8/LibLinphone.vcxproj | 9 ++++++--- coreapi/message_storage.c | 13 ++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/build/wp8/LibLinphone.vcxproj b/build/wp8/LibLinphone.vcxproj index 7d8d4b014..f1bdecc0d 100644 --- a/build/wp8/LibLinphone.vcxproj +++ b/build/wp8/LibLinphone.vcxproj @@ -53,7 +53,7 @@ Level4 - $(ProjectDir)..\..\..\belle-sip\include;$(ProjectDir)..\..\oRTP\include;$(ProjectDir)..\..\mediastreamer2\include;$(ProjectDir)..\..\..\tunnel\include;$(ProjectDir)..\..\coreapi;$(ProjectDir)..\..\include;$(SolutionDir)$(Platform)\$(Configuration)\include;$(ProjectDir)..\..\..\zlib;%(AdditionalIncludeDirectories) + $(ProjectDir)..\..\..\belle-sip\include;$(ProjectDir)..\..\oRTP\include;$(ProjectDir)..\..\mediastreamer2\include;$(ProjectDir)..\..\..\tunnel\include;$(ProjectDir)..\..\coreapi;$(ProjectDir)..\..\include;$(SolutionDir)$(Platform)\$(Configuration)\include;$(ProjectDir)..\..\..\zlib;$(ProjectDir)..\..\..\sqlite\;%(AdditionalIncludeDirectories) __STDC_CONSTANT_MACROS;_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;_USRDLL;WINDOW_NATIVE;_TRUE_TIME;IN_LINPHONE;USE_BELLESIP;TUNNEL_ENABLED;VIDEO_ENABLED;LINPHONE_PACKAGE_NAME="linphone";LINPHONE_VERSION="Devel";LIBLINPHONE_EXPORTS;LINPHONE_PLUGINS_DIR=".";UNICODE;_XKEYCHECK_H;HAVE_ZLIB;%(PreprocessorDefinitions) Default NotUsing @@ -74,7 +74,7 @@ - _DEBUG;%(PreprocessorDefinitions) + _DEBUG;MSG_STORAGE_ENABLED;%(PreprocessorDefinitions) true @@ -82,7 +82,7 @@ - NDEBUG;%(PreprocessorDefinitions) + NDEBUG;MSG_STORAGE_ENABLED;%(PreprocessorDefinitions) MaxSpeed true true @@ -189,6 +189,9 @@ {0565952a-ea62-46a2-8261-f5b4b490da42} + + {a45d63b9-60de-476c-8836-f8eedbe139d0} + {59500dd1-b192-4ddf-a402-8a8e3739e032} diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index c87891a34..81e3c0415 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -21,10 +21,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "linphonecore.h" #ifdef MSG_STORAGE_ENABLED +#ifndef PRIu64 +#define PRIu64 "I64u" +#endif #include "sqlite3.h" -static inline LinphoneChatMessage* get_transient_message(LinphoneChatRoom* cr, unsigned int storage_id){ +static ORTP_INLINE LinphoneChatMessage* get_transient_message(LinphoneChatRoom* cr, unsigned int storage_id){ MSList* transients = cr->transient_messages; LinphoneChatMessage* chat; while( transients ){ @@ -225,7 +228,7 @@ unsigned int linphone_chat_message_store(LinphoneChatMessage *msg){ peer=linphone_address_as_string_uri_only(linphone_chat_room_get_peer_address(msg->chat_room)); local_contact=linphone_address_as_string_uri_only(linphone_chat_message_get_local_address(msg)); - buf=sqlite3_mprintf("INSERT INTO history VALUES(NULL,%Q,%Q,%i,%Q,%Q,%i,%i,%Q,%i,%Q,%i);", + buf = sqlite3_mprintf("INSERT INTO history VALUES(NULL,%Q,%Q,%i,%Q,%Q,%i,%i,%Q,%lld,%Q,%i);", local_contact, peer, msg->dir, @@ -250,7 +253,7 @@ unsigned int linphone_chat_message_store(LinphoneChatMessage *msg){ void linphone_chat_message_store_state(LinphoneChatMessage *msg){ LinphoneCore *lc=msg->chat_room->lc; if (lc->db){ - char *buf=sqlite3_mprintf("UPDATE history SET status=%i WHERE (id = %i) AND utc = %i;", + char *buf=sqlite3_mprintf("UPDATE history SET status=%i WHERE (id = %i) AND utc = %lld;", msg->state,msg->storage_id,msg->time); linphone_sql_request(lc->db,buf); sqlite3_free(buf); @@ -459,7 +462,7 @@ static int migrate_messages_timestamp(void* data,int argc, char** argv, char** c time_t new_time = parse_time_from_db(argv[1]); if( new_time ){ /* replace 'time' by -1 and set 'utc' to the timestamp */ - char *buf = sqlite3_mprintf("UPDATE history SET utc=%i,time='-1' WHERE id=%i;", new_time, atoi(argv[0])); + char *buf = sqlite3_mprintf("UPDATE history SET utc=%lld,time='-1' WHERE id=%i;", new_time, atoi(argv[0])); if( buf) { linphone_sql_request((sqlite3*)data, buf); sqlite3_free(buf); @@ -486,7 +489,7 @@ static void linphone_migrate_timestamps(sqlite3* db){ uint64_t end; linphone_sql_request(db, "COMMIT"); end=ortp_get_cur_time_ms(); - ms_message("Migrated message timestamps to UTC in %i ms",(int)(end-begin)); + ms_message("Migrated message timestamps to UTC in %lld ms",(end-begin)); } } From 45d93b828ddaedad57d8c8d1ee267a6c497ae9f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 15 Oct 2014 12:32:50 +0200 Subject: [PATCH 007/249] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 38b219a95..04fa73768 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 38b219a95a5ecdf2ed52594c6aadcf0a78c880f5 +Subproject commit 04fa73768107968abf6ff8440e5dff20f6a4a0c9 From 2630a9b0f0b4cfccf0f7c84ac0b81eca22176023 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 15 Oct 2014 12:44:52 +0200 Subject: [PATCH 008/249] Fix compilation on Android --- build/android/Android.mk | 2 +- coreapi/linphonecore_jni.cc | 2 +- mediastreamer2 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/android/Android.mk b/build/android/Android.mk index 1edc91fac..e634d3fa0 100755 --- a/build/android/Android.mk +++ b/build/android/Android.mk @@ -69,7 +69,7 @@ LOCAL_SRC_FILES := \ call_log.c \ call_params.c \ player.c \ - fileplayer.c + localplayer.c ifndef LIBLINPHONE_VERSION LIBLINPHONE_VERSION = "Devel" diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index c1cc56e47..eb90870eb 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -28,7 +28,7 @@ extern "C" { #include "mediastreamer2/mediastream.h" #include "mediastreamer2/mscommon.h" #include "mediastreamer2/dsptools.h" -#include "mediastreamer2/fileplayer.h" +#include "mediastreamer2/msmediaplayer.h" } #include "mediastreamer2/msjava.h" #include "private.h" diff --git a/mediastreamer2 b/mediastreamer2 index 04fa73768..83bceea35 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 04fa73768107968abf6ff8440e5dff20f6a4a0c9 +Subproject commit 83bceea35319df31971ae3dede509f02fdf7df9b From 3c955d16809f261b6e3467765d936a8b62677f0e Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 15 Oct 2014 13:35:35 +0200 Subject: [PATCH 009/249] add option sip,call_logs_use_asserted_id_instead_of_from to update call logs from value with value from P-Asserted-identity --- coreapi/callbacks.c | 28 +++++++++++++++++++++------ tester/call_tester.c | 45 ++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 65 insertions(+), 8 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index f60e230f8..8dc5cad9e 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -234,9 +234,9 @@ static bool_t already_a_call_pending(LinphoneCore *lc){ static void call_received(SalOp *h){ LinphoneCore *lc=(LinphoneCore *)sal_get_user_pointer(sal_op_get_sal(h)); LinphoneCall *call; - const char *from,*to; char *alt_contact; - LinphoneAddress *from_addr, *to_addr; + LinphoneAddress *from_addr=NULL; + LinphoneAddress *to_addr=NULL; /*this mode is deprcated because probably useless*/ bool_t prevent_colliding_calls=lp_config_get_int(lc->config,"sip","prevent_colliding_calls",FALSE); @@ -272,10 +272,26 @@ static void call_received(SalOp *h){ sal_op_release(h); return; } - from=sal_op_get_from(h); - to=sal_op_get_to(h); - from_addr=linphone_address_new(from); - to_addr=linphone_address_new(to); + /*in some situation, better to trust the network rather than the UAC*/ + if (lp_config_get_int(lc->config,"sip","call_logs_use_asserted_id_instead_of_from",0)) { + const char * p_asserted_id = sal_custom_header_find(sal_op_get_recv_custom_header(h),"P-Asserted-Identity"); + LinphoneAddress *p_asserted_id_addr; + if (!p_asserted_id) { + ms_warning("No P-Asserted-Identity header found so cannot use it for op [%p] instead of from",h); + } else { + p_asserted_id_addr = linphone_address_new(p_asserted_id); + if (!p_asserted_id_addr) { + ms_warning("Unsupported P-Asserted-Identity header for op [%p] ",h); + } else { + ms_message("Using P-Asserted-Identity [%s] instead of from [%s] for op [%p]",p_asserted_id,sal_op_get_from(h),h); + from_addr=p_asserted_id_addr; + } + } + } + + if (!from_addr) + from_addr=linphone_address_new(sal_op_get_from(h)); + to_addr=linphone_address_new(sal_op_get_to(h)); 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."); diff --git a/tester/call_tester.c b/tester/call_tester.c index a2feaab92..1e04fa448 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -215,8 +215,11 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr else { LinphoneAddress* callee_from=linphone_address_clone(caller_mgr->identity); linphone_address_set_port(callee_from,0); /*remove port because port is never present in from header*/ + if (linphone_call_params_get_privacy(linphone_call_get_current_params(linphone_core_get_current_call(caller_mgr->lc))) == LinphonePrivacyNone) { - CU_ASSERT_TRUE(linphone_address_weak_equal(callee_from,linphone_core_get_current_call_remote_address(callee_mgr->lc))); + /*don't check in case of p asserted id*/ + if (!lp_config_get_int(callee_mgr->lc->config,"sip","call_logs_use_asserted_id_instead_of_from",0)) + CU_ASSERT_TRUE(linphone_address_weak_equal(callee_from,linphone_core_get_current_call_remote_address(callee_mgr->lc))); } else { CU_ASSERT_FALSE(linphone_address_weak_equal(callee_from,linphone_core_get_current_call_remote_address(callee_mgr->lc))); } @@ -3142,6 +3145,43 @@ static void call_with_custom_supported_tags(void) { } } +static void call_log_from_taken_from_p_asserted_id(void) { + LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + LinphoneCall *c1,*c2; + LinphoneCallParams *params; + const char* paulie_asserted_id ="\"Paupauche\" "; + LinphoneAddress *paulie_asserted_id_addr = linphone_address_new(paulie_asserted_id); + params=linphone_core_create_default_call_parameters(pauline->lc); + + linphone_call_params_add_custom_header(params,"P-Asserted-Identity",paulie_asserted_id); + /*fixme, should be able to add several time the same header linphone_call_params_add_custom_header(params,"P-Asserted-Identity","\"Paupauche\" ");*/ + + LpConfig *marie_lp = linphone_core_get_config(marie->lc); + lp_config_set_int(marie_lp,"sip","call_logs_use_asserted_id_instead_of_from",1); + + + CU_ASSERT_TRUE(call_with_caller_params(pauline,marie,params)); + linphone_call_params_destroy(params); + + c1=linphone_core_get_current_call(pauline->lc); + c2=linphone_core_get_current_call(marie->lc); + + CU_ASSERT_PTR_NOT_NULL(c1); + CU_ASSERT_PTR_NOT_NULL(c2); + + /*make sure remote identity is hidden*/ + CU_ASSERT_TRUE(linphone_address_weak_equal(linphone_call_get_remote_address(c2),paulie_asserted_id_addr)); + + + /*just to sleep*/ + linphone_core_terminate_all_calls(pauline->lc); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); +} test_t call_tests[] = { { "Early declined call", early_declined_call }, { "Call declined", call_declined }, @@ -3241,7 +3281,8 @@ test_t call_tests[] = { { "Call with in-dialog UPDATE request", call_with_in_dialog_update }, { "Call with in-dialog codec change", call_with_in_dialog_codec_change }, { "Call with in-dialog codec change no sdp", call_with_in_dialog_codec_change_no_sdp }, - { "Call with custom supported tags", call_with_custom_supported_tags } + { "Call with custom supported tags", call_with_custom_supported_tags }, + { "Call log from taken from asserted id",call_log_from_taken_from_p_asserted_id} }; test_suite_t call_test_suite = { From d90dc113b2533282dc7284d45c35dd953f13f9e1 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 15 Oct 2014 13:57:34 +0200 Subject: [PATCH 010/249] fix format specifiers --- coreapi/message_storage.c | 4 ++-- tester/call_tester.c | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index 81e3c0415..eb60537ca 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -237,7 +237,7 @@ unsigned int linphone_chat_message_store(LinphoneChatMessage *msg){ msg->is_read, msg->state, msg->external_body_url, - msg->time, + (int64_t)msg->time, msg->appdata, content_id ); @@ -489,7 +489,7 @@ static void linphone_migrate_timestamps(sqlite3* db){ uint64_t end; linphone_sql_request(db, "COMMIT"); end=ortp_get_cur_time_ms(); - ms_message("Migrated message timestamps to UTC in %lld ms",(end-begin)); + ms_message("Migrated message timestamps to UTC in %lu ms",(unsigned long)(end-begin)); } } diff --git a/tester/call_tester.c b/tester/call_tester.c index 1e04fa448..072ef7002 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -3152,12 +3152,14 @@ static void call_log_from_taken_from_p_asserted_id(void) { LinphoneCallParams *params; const char* paulie_asserted_id ="\"Paupauche\" "; LinphoneAddress *paulie_asserted_id_addr = linphone_address_new(paulie_asserted_id); + LpConfig *marie_lp; + params=linphone_core_create_default_call_parameters(pauline->lc); linphone_call_params_add_custom_header(params,"P-Asserted-Identity",paulie_asserted_id); /*fixme, should be able to add several time the same header linphone_call_params_add_custom_header(params,"P-Asserted-Identity","\"Paupauche\" ");*/ - LpConfig *marie_lp = linphone_core_get_config(marie->lc); + marie_lp = linphone_core_get_config(marie->lc); lp_config_set_int(marie_lp,"sip","call_logs_use_asserted_id_instead_of_from",1); From fd75b79477517af5ea70e51808396cae019a60c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 15 Oct 2014 14:34:15 +0200 Subject: [PATCH 011/249] Add a destroy function to the Linphone Player Interface --- coreapi/linphonecore.h | 7 +------ coreapi/localplayer.c | 12 +++++++----- coreapi/player.c | 14 +++++++++++++- coreapi/private.h | 3 +++ tester/player_tester.c | 2 +- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 2f1036678..9b2ef15ec 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -595,6 +595,7 @@ MSPlayerState linphone_player_get_state(LinphonePlayer *obj); int linphone_player_get_duration(LinphonePlayer *obj); int linphone_player_get_current_position(LinphonePlayer *obj); void linphone_player_close(LinphonePlayer *obj); +void linphone_player_destroy(LinphonePlayer *obj); /** * @brief Create an independent media file player. @@ -607,12 +608,6 @@ void linphone_player_close(LinphonePlayer *obj); */ LINPHONE_PUBLIC LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, void *window_id); -/** - * @brief Destroy a local player - * @param obj File player to destroy - */ -LINPHONE_PUBLIC void linphone_local_player_destroy(LinphonePlayer *obj); - /** * @brief Check whether Matroksa format is supported by the player * @return TRUE if it is supported diff --git a/coreapi/localplayer.c b/coreapi/localplayer.c index 9d6e1b5c3..ad06e1751 100644 --- a/coreapi/localplayer.c +++ b/coreapi/localplayer.c @@ -29,6 +29,7 @@ static MSPlayerState _local_player_get_state(LinphonePlayer *obj); static int _local_player_get_duration(LinphonePlayer *obj); static int _local_player_get_current_position(LinphonePlayer *obj); static void _local_player_close(LinphonePlayer *obj); +static void _local_player_destroy(LinphonePlayer *obj); static void _local_player_eof_callback(void *user_data); LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, void *window_id) { @@ -44,15 +45,11 @@ LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *s obj->get_duration = _local_player_get_duration; obj->get_position = _local_player_get_current_position; obj->close = _local_player_close; + obj->destroy = _local_player_destroy; ms_media_player_set_eof_callback((MSMediaPlayer *)obj->impl, _local_player_eof_callback, obj); return obj; } -void linphone_local_player_destroy(LinphonePlayer *obj) { - ms_media_player_free((MSMediaPlayer *)obj->impl); - ms_free(obj); -} - bool_t linphone_local_player_matroska_supported(void) { return ms_media_player_matroska_supported(); } @@ -86,6 +83,11 @@ static int _local_player_get_current_position(LinphonePlayer *obj) { return ms_media_player_get_current_position((MSMediaPlayer *)obj->impl); } +static void _local_player_destroy(LinphonePlayer *obj) { + ms_media_player_free((MSMediaPlayer *)obj->impl); + _linphone_player_destroy(obj); +} + static void _local_player_close(LinphonePlayer *obj) { ms_media_player_close((MSMediaPlayer *)obj->impl); } diff --git a/coreapi/player.c b/coreapi/player.c index 54573ccb8..1b2a01022 100644 --- a/coreapi/player.c +++ b/coreapi/player.c @@ -97,6 +97,18 @@ void linphone_player_close(LinphonePlayer *obj){ return obj->close(obj); } +/** + * @brief Destroy a player + * @param obj The player + */ +void linphone_player_destroy(LinphonePlayer *obj) { + if(obj->destroy) obj->destroy(obj); +} + +void _linphone_player_destroy(LinphonePlayer *player) { + ms_free(player); +} + /* * Call player implementation below. @@ -169,7 +181,7 @@ static void call_player_close(LinphonePlayer *player){ } static void on_call_destroy(void *obj, belle_sip_object_t *call_being_destroyed){ - ms_free(obj); + _linphone_player_destroy(obj); } LinphonePlayer *linphone_call_build_player(LinphoneCall *call){ diff --git a/coreapi/private.h b/coreapi/private.h index 40777e207..bc0ff038c 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -923,11 +923,14 @@ struct _LinphonePlayer{ int (*get_duration)(struct _LinphonePlayer *player); int (*get_position)(struct _LinphonePlayer *player); void (*close)(struct _LinphonePlayer* player); + void (*destroy)(struct _LinphonePlayer *player); LinphonePlayerEofCallback cb; void *user_data; void *impl; }; +void _linphone_player_destroy(LinphonePlayer *player); + /***************************************************************************** * XML UTILITY FUNCTIONS * diff --git a/tester/player_tester.c b/tester/player_tester.c index 14bb6d3ab..17e692d23 100644 --- a/tester/player_tester.c +++ b/tester/player_tester.c @@ -79,7 +79,7 @@ static void play_file(const char *filename, bool_t unsupported_format) { linphone_player_close(player); fail: - if(player) linphone_local_player_destroy(player); + if(player) linphone_player_destroy(player); if(lc_manager) linphone_core_manager_destroy(lc_manager); } From 9cee579ee11482a4e4eb74e5aa50821b18b1f9cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 15 Oct 2014 14:39:37 +0200 Subject: [PATCH 012/249] Fix compilation on Android --- coreapi/linphonecore_jni.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index eb90870eb..4a9c7f158 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -5320,5 +5320,5 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_destroyPlayer(JNIEnv *en } jobject window_id = (jobject)ms_media_player_get_window_id((MSMediaPlayer *)player->impl); if(window_id) env->DeleteGlobalRef(window_id); - linphone_local_player_destroy(player); + linphone_player_destroy(player); } From e7b469eded20a3b798455414afe8b9a67e334a89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 15 Oct 2014 14:55:36 +0200 Subject: [PATCH 013/249] JNI wrapping of linphone_player_destroy() --- coreapi/linphonecore_jni.cc | 20 +++++++++---------- .../org/linphone/core/LinphoneCore.java | 6 ------ .../org/linphone/core/LinphoneCoreImpl.java | 6 ------ .../org/linphone/core/LinphonePlayerImpl.java | 6 ++++++ 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 4a9c7f158..9bd10557a 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -5295,6 +5295,16 @@ extern "C" void Java_org_linphone_core_LinphonePlayerImpl_close(JNIEnv *env, job linphone_player_close(player); } +extern "C" void Java_org_linphone_core_LinphonePlayerImpl_destroy(JNIEnv *env, jobject jobj, jlong playerPtr) { + LinphonePlayer *player = (LinphonePlayer *)playerPtr; + if(player->user_data) { + delete (LinphonePlayerData *)player->user_data; + } + jobject window_id = (jobject)ms_media_player_get_window_id((MSMediaPlayer *)player->impl); + if(window_id) env->DeleteGlobalRef(window_id); + linphone_player_destroy(player); +} + extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_createPlayer(JNIEnv *env, jobject jobj, jlong ptr, jobject window) { jobject window_ref = NULL; MSSndCard *snd_card = ms_snd_card_manager_get_default_playback_card(ms_snd_card_manager_get()); @@ -5312,13 +5322,3 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_createPlayer(JNIEnv *en return (jlong)player; } } - -extern "C" void Java_org_linphone_core_LinphoneCoreImpl_destroyPlayer(JNIEnv *env, jobject jobj, jlong playerPtr) { - LinphonePlayer *player = (LinphonePlayer *)playerPtr; - if(player->user_data) { - delete (LinphonePlayerData *)player->user_data; - } - jobject window_id = (jobject)ms_media_player_get_window_id((MSMediaPlayer *)player->impl); - if(window_id) env->DeleteGlobalRef(window_id); - linphone_player_destroy(player); -} diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index dfa2f6bca..fced284f8 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -1787,10 +1787,4 @@ public interface LinphoneCore { * @return An object that implement LinphonePlayer */ public LinphonePlayer createPlayer(AndroidVideoWindowImpl window); - - /** - * Destroy a player - * @param player Player to destroy - */ - public void destroyPlayer(LinphonePlayer player); } diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index 750ec1903..8ba90e937 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -1290,10 +1290,4 @@ class LinphoneCoreImpl implements LinphoneCore { return null; } } - - private native void destroyPlayer(long playerPtr); - @Override - public synchronized void destroyPlayer(LinphonePlayer player) { - - } } diff --git a/java/impl/org/linphone/core/LinphonePlayerImpl.java b/java/impl/org/linphone/core/LinphonePlayerImpl.java index 08168e093..fe486321e 100644 --- a/java/impl/org/linphone/core/LinphonePlayerImpl.java +++ b/java/impl/org/linphone/core/LinphonePlayerImpl.java @@ -61,4 +61,10 @@ public class LinphonePlayerImpl implements LinphonePlayer { public synchronized void close() { close(nativePtr); } + + private native void destroy(long nativePtr); + @Override + protected void finalize() { + destroy(nativePtr); + } } From d184192b9f6c4000f1cf780b446c97dac8697844 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 15 Oct 2014 15:08:29 +0200 Subject: [PATCH 014/249] fix linphonerc renaming for windows --- coreapi/lpconfig.c | 49 +++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/coreapi/lpconfig.c b/coreapi/lpconfig.c index 5c556acc7..a940fb696 100644 --- a/coreapi/lpconfig.c +++ b/coreapi/lpconfig.c @@ -49,7 +49,9 @@ #include #endif - +#ifdef WIN32 +#define RENAME_REQUIRES_NONEXISTENT_NEW_PATH 1 +#endif #define lp_new0(type,n) (type*)calloc(sizeof(type),n) @@ -351,22 +353,33 @@ LpConfig *lp_config_new_with_factory(const char *config_filename, const char *fa ms_message("Using (r/w) config information from %s", config_filename); lpconfig->filename=ortp_strdup(config_filename); lpconfig->tmpfilename=ortp_strdup_printf("%s.tmp",config_filename); - lpconfig->file=fopen(config_filename,"r+"); + +#if !defined(WIN32) + { + struct stat fileStat; + if ((stat(config_filename,&fileStat) == 0) && (S_ISREG(fileStat.st_mode))) { + /* make existing configuration files non-group/world-accessible */ + if (chmod(config_filename, S_IRUSR | S_IWUSR) == -1) { + ms_warning("unable to correct permissions on " + "configuration file: %s", strerror(errno)); + } + } + } +#endif /*WIN32*/ + /*open with r+ to check if we can write on it later*/ + lpconfig->file=fopen(lpconfig->filename,"r+"); +#ifdef RENAME_REQUIRES_NONEXISTENT_NEW_PATH + if (lpconfig->file==NULL){ + lpconfig->file=fopen(lpconfig->tmpfilename,"r+"); + if (lpconfig->file){ + ms_warning("Could not open %s but %s works, app may have crashed during last sync.",lpconfig->filename,lpconfig->tmpfilename); + } + } +#endif if (lpconfig->file!=NULL){ lp_config_parse(lpconfig,lpconfig->file); fclose(lpconfig->file); -#if !defined(WIN32) - { - struct stat fileStat; - if ((stat(config_filename,&fileStat) == 0) && (S_ISREG(fileStat.st_mode))) { - /* make existing configuration files non-group/world-accessible */ - if (chmod(config_filename, S_IRUSR | S_IWUSR) == -1) { - ms_warning("unable to correct permissions on " - "configuration file: %s", strerror(errno)); - } - } - } -#endif /*WIN32*/ + lpconfig->file=NULL; lpconfig->modified=0; } @@ -398,6 +411,7 @@ void lp_item_set_value(LpItem *item, const char *value){ static void _lp_config_destroy(LpConfig *lpconfig){ if (lpconfig->filename!=NULL) ortp_free(lpconfig->filename); + if (lpconfig->tmpfilename) ortp_free(lpconfig->tmpfilename); ms_list_for_each(lpconfig->sections,(void (*)(void*))lp_section_destroy); ms_list_free(lpconfig->sections); free(lpconfig); @@ -593,6 +607,13 @@ int lp_config_sync(LpConfig *lpconfig){ } ms_list_for_each2(lpconfig->sections,(void (*)(void *,void*))lp_section_write,(void *)file); fclose(file); +#ifdef RENAME_REQUIRES_NONEXISTENT_NEW_PATH + /* On windows, rename() does not accept that the newpath is an existing file, while it is accepted on Unix. + * As a result, we are forced to first delete the linphonerc file, and then rename.*/ + if (remove(lpconfig->filename)!=0){ + ms_error("Cannot remove %s: %s",lpconfig->filename, strerror(errno)); + } +#endif if (rename(lpconfig->tmpfilename,lpconfig->filename)!=0){ ms_error("Cannot rename %s into %s: %s",lpconfig->tmpfilename,lpconfig->filename,strerror(errno)); } From 19a4e2fbd2f77060ac2acb7a6255c46fb160a705 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 15 Oct 2014 15:39:05 +0200 Subject: [PATCH 015/249] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 83bceea35..f6d3d86be 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 83bceea35319df31971ae3dede509f02fdf7df9b +Subproject commit f6d3d86be0c8d66533c88bedae391c0d7ba0d7d5 From 0825195d4f126619c5c1c1449245e53a144503d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 15 Oct 2014 15:59:19 +0200 Subject: [PATCH 016/249] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index f6d3d86be..73ac0e724 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit f6d3d86be0c8d66533c88bedae391c0d7ba0d7d5 +Subproject commit 73ac0e724ebbd16c3349d460a77c7585d6a294da From 0f523615495acc14441231d25fd4fc271e2f207c Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 15 Oct 2014 16:25:03 +0200 Subject: [PATCH 017/249] set correct name to constructor of LinphoneCoreVTable --- coreapi/TunnelManager.cc | 4 ++-- coreapi/linphonecore.c | 8 ++++---- coreapi/linphonecore.h | 12 ++++++------ tester/message_tester.c | 2 +- tester/register_tester.c | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/coreapi/TunnelManager.cc b/coreapi/TunnelManager.cc index a0158a88a..03f6923ca 100644 --- a/coreapi/TunnelManager.cc +++ b/coreapi/TunnelManager.cc @@ -168,7 +168,7 @@ TunnelManager::TunnelManager(LinphoneCore* lc) : mTransportFactories.video_rtcp_func_data=this; mTransportFactories.video_rtp_func=sCreateRtpTransport; mTransportFactories.video_rtp_func_data=this; - mVTable = linphone_vtable_new(); + mVTable = linphone_core_v_table_new(); mVTable->network_reachable = networkReachableCb; linphone_core_add_listener(mCore, mVTable); } @@ -179,7 +179,7 @@ TunnelManager::~TunnelManager(){ } stopClient(); linphone_core_remove_listener(mCore, mVTable); - linphone_vtable_destroy(mVTable); + linphone_core_v_table_destroy(mVTable); } void TunnelManager::doRegistration(){ diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 816f6b618..fac43f463 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1436,7 +1436,7 @@ void linphone_configuring_terminated(LinphoneCore *lc, LinphoneConfiguringState static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtable, LpConfig *config, void * userdata) { const char *remote_provisioning_uri = NULL; - LinphoneCoreVTable* local_vtable= linphone_vtable_new(); + LinphoneCoreVTable* local_vtable= linphone_core_v_table_new(); ms_message("Initializing LinphoneCore %s", linphone_core_get_version()); memset (lc, 0, sizeof (LinphoneCore)); lc->config=lp_config_ref(config); @@ -6180,7 +6180,7 @@ static void linphone_core_uninit(LinphoneCore *lc) if (liblinphone_serialize_logs == TRUE) { ortp_set_log_thread_id(0); } - ms_list_free_with_data(lc->vtables,(void (*)(void *))linphone_vtable_destroy); + ms_list_free_with_data(lc->vtables,(void (*)(void *))linphone_core_v_table_destroy); } static void set_network_reachable(LinphoneCore* lc,bool_t isReachable, time_t curtime){ @@ -6916,11 +6916,11 @@ int linphone_payload_type_get_channels(const LinphonePayloadType *pt) { return pt->channels; } -LinphoneCoreVTable *linphone_vtable_new() { +LinphoneCoreVTable *linphone_core_v_table_new() { return ms_new0(LinphoneCoreVTable,1); } -void linphone_vtable_destroy(LinphoneCoreVTable* table) { +void linphone_core_v_table_destroy(LinphoneCoreVTable* table) { ms_free(table); } #define NOTIFY_IF_EXIST(function_name) \ diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 9b2ef15ec..cd72701d7 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1731,16 +1731,16 @@ typedef struct _LinphoneCoreVTable{ } LinphoneCoreVTable; /** - * Instantiate a vtable with all argument set to NULL + * Instantiate a vtable with all arguments set to NULL * @returns newly allocated vtable */ -LINPHONE_PUBLIC LinphoneCoreVTable *linphone_vtable_new(); +LINPHONE_PUBLIC LinphoneCoreVTable *linphone_core_v_table_new(); /** - * destroy a vtable. + * Destroy a vtable. * @param vtable to be destroyed */ -LINPHONE_PUBLIC void linphone_vtable_destroy(LinphoneCoreVTable* table); +LINPHONE_PUBLIC void linphone_core_v_table_destroy(LinphoneCoreVTable* table); /** * @} @@ -1748,8 +1748,8 @@ LINPHONE_PUBLIC void linphone_vtable_destroy(LinphoneCoreVTable* table); typedef struct _LCCallbackObj { - LinphoneCoreCbFunc _func; - void * _user_data; + LinphoneCoreCbFunc _func; + void * _user_data; }LCCallbackObj; diff --git a/tester/message_tester.c b/tester/message_tester.c index a361eab1c..21ef387ae 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -226,7 +226,7 @@ static void text_message_with_credential_from_auth_cb_auth_info_requested(Linpho static void text_message_with_credential_from_auth_cb(void) { char* to; LinphoneChatRoom* chat_room; - LinphoneCoreVTable* vtable = linphone_vtable_new(); + LinphoneCoreVTable* vtable = linphone_core_v_table_new(); LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); text_message_with_credential_from_auth_cb_auth_info=linphone_auth_info_clone((LinphoneAuthInfo*)(linphone_core_get_auth_info_list(marie->lc)->data)); diff --git a/tester/register_tester.c b/tester/register_tester.c index d47ffa2df..907a10db7 100644 --- a/tester/register_tester.c +++ b/tester/register_tester.c @@ -36,7 +36,7 @@ static LinphoneCoreManager* create_lcm_with_auth(unsigned int with_auth) { LinphoneCoreManager* mgr=linphone_core_manager_new(NULL); if (with_auth) { - LinphoneCoreVTable* vtable = linphone_vtable_new(); + LinphoneCoreVTable* vtable = linphone_core_v_table_new(); vtable->auth_info_requested=auth_info_requested; linphone_core_add_listener(mgr->lc,vtable); } @@ -314,7 +314,7 @@ static void ha1_authenticated_register(){ static void authenticated_register_with_no_initial_credentials(){ LinphoneCoreManager *mgr; - LinphoneCoreVTable* vtable = linphone_vtable_new(); + LinphoneCoreVTable* vtable = linphone_core_v_table_new(); stats* counters; char route[256]; From a6c013bdb7a2b4a837763899178e44065fd0b27c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 15 Oct 2014 16:42:40 +0200 Subject: [PATCH 018/249] Rename LinphoneCore.createPlayer() into LinphoneCore.createLocalPlayer() --- coreapi/linphonecore_jni.cc | 2 +- java/common/org/linphone/core/LinphoneCore.java | 2 +- java/impl/org/linphone/core/LinphoneCoreImpl.java | 6 +++--- mediastreamer2 | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 9bd10557a..2fff651f5 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -5305,7 +5305,7 @@ extern "C" void Java_org_linphone_core_LinphonePlayerImpl_destroy(JNIEnv *env, j linphone_player_destroy(player); } -extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_createPlayer(JNIEnv *env, jobject jobj, jlong ptr, jobject window) { +extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_createLocalPlayer(JNIEnv *env, jobject jobj, jlong ptr, jobject window) { jobject window_ref = NULL; MSSndCard *snd_card = ms_snd_card_manager_get_default_playback_card(ms_snd_card_manager_get()); if(snd_card == NULL) { diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index fced284f8..af878e24f 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -1786,5 +1786,5 @@ public interface LinphoneCore { * Create a media player * @return An object that implement LinphonePlayer */ - public LinphonePlayer createPlayer(AndroidVideoWindowImpl window); + public LinphonePlayer createLocalPlayer(AndroidVideoWindowImpl window); } diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index 8ba90e937..6e6f5a21f 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -1280,10 +1280,10 @@ class LinphoneCoreImpl implements LinphoneCore { return getFileTransferServer(nativePtr); } - private native long createPlayer(long nativePtr, AndroidVideoWindowImpl window); + private native long createLocalPlayer(long nativePtr, AndroidVideoWindowImpl window); @Override - public synchronized LinphonePlayer createPlayer(AndroidVideoWindowImpl window) { - long playerPtr = createPlayer(nativePtr, window); + public synchronized LinphonePlayer createLocalPlayer(AndroidVideoWindowImpl window) { + long playerPtr = createLocalPlayer(nativePtr, window); if(playerPtr != 0) { return new LinphonePlayerImpl(playerPtr); } else { diff --git a/mediastreamer2 b/mediastreamer2 index 73ac0e724..0190b1c34 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 73ac0e724ebbd16c3349d460a77c7585d6a294da +Subproject commit 0190b1c34fead09a19bf1eac6ee72e4b408ec94a From 2ce93fe5dcfdca39346d86b4548e0dd9f8a58cff Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 16 Oct 2014 00:52:13 +0200 Subject: [PATCH 019/249] Assign payload type to AAC 16/32/48 kHz (and update ms2/ortp) --- coreapi/linphonecore.c | 9 ++++++--- mediastreamer2 | 2 +- oRTP | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index fac43f463..827553dd1 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1482,8 +1482,8 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab linphone_core_assign_payload_type(lc,&payload_type_h264,102,"profile-level-id=42801F"); linphone_core_assign_payload_type(lc,&payload_type_vp8,103,NULL); - linphone_core_assign_payload_type(lc,&payload_type_theora,97,NULL); - linphone_core_assign_payload_type(lc,&payload_type_x_snow,-1,NULL); + /* linphone_core_assign_payload_type(lc,&payload_type_theora,97,NULL); commented out to free 1 slot */ + /* linphone_core_assign_payload_type(lc,&payload_type_x_snow,-1,NULL); commented out to free 1 slot */ /* due to limited space in SDP, we have to disable this h264 line which is normally no more necessary */ /* linphone_core_assign_payload_type(&payload_type_h264,-1,"packetization-mode=1;profile-level-id=428014");*/ #endif @@ -1492,7 +1492,7 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab 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_lpc1015,-1,NULL); commented out to free 1 slot */ linphone_core_assign_payload_type(lc,&payload_type_g726_16,-1,NULL); linphone_core_assign_payload_type(lc,&payload_type_g726_24,-1,NULL); linphone_core_assign_payload_type(lc,&payload_type_g726_32,-1,NULL); @@ -1506,8 +1506,11 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab linphone_core_assign_payload_type(lc,&payload_type_silk_wb,-1,NULL); linphone_core_assign_payload_type(lc,&payload_type_silk_swb,-1,NULL); linphone_core_assign_payload_type(lc,&payload_type_g729,18,"annexb=no"); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_16k,-1,"config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"); linphone_core_assign_payload_type(lc,&payload_type_aaceld_22k,-1,"config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_32k,-1,"config=F8E82000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"); linphone_core_assign_payload_type(lc,&payload_type_aaceld_44k,-1,"config=F8E82000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_48k,-1,"config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"); linphone_core_assign_payload_type(lc,&payload_type_opus,-1,"useinbandfec=1; stereo=0; sprop-stereo=0"); linphone_core_assign_payload_type(lc,&payload_type_isac,-1,NULL); linphone_core_handle_static_payloads(lc); diff --git a/mediastreamer2 b/mediastreamer2 index 0190b1c34..80cd283c5 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 0190b1c34fead09a19bf1eac6ee72e4b408ec94a +Subproject commit 80cd283c5910767ca869bb6a8c29ff56214fe4af diff --git a/oRTP b/oRTP index 05e0242a9..7ded70711 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 05e0242a91391747408340dffa34f9b4e1335be4 +Subproject commit 7ded70711a9201591db13f06ab0b69ba4d89f992 From ee2a235302d7188a596e972a04285bc65797a98a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 16 Oct 2014 10:39:14 +0200 Subject: [PATCH 020/249] Change the API of AndroidVideoWindowImpl class --- java/common/org/linphone/core/LinphonePlayer.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java/common/org/linphone/core/LinphonePlayer.java b/java/common/org/linphone/core/LinphonePlayer.java index faba92d5d..79d05dbb4 100644 --- a/java/common/org/linphone/core/LinphonePlayer.java +++ b/java/common/org/linphone/core/LinphonePlayer.java @@ -14,9 +14,9 @@ public interface LinphonePlayer { * */ public enum State { - closed, /**< No file is open */ - paused, /**< A file is open and playback is not running */ - playing; /**< A file is open and playback is running */ + closed, /*< No file is open */ + paused, /*< A file is open and playback is not running */ + playing; /*< A file is open and playback is running */ public static State fromValue(int value) { if(value == 0) { From 17e3935464a61e0d0c02e938322d7702bf2651a8 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 16 Oct 2014 11:53:22 +0200 Subject: [PATCH 021/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 80cd283c5..82d73df17 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 80cd283c5910767ca869bb6a8c29ff56214fe4af +Subproject commit 82d73df1790af2ad21dc2eac5cb424d56060dccf From a11ac06204d2fae8dc382b4cbd656e81922fc54a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 16 Oct 2014 14:34:04 +0200 Subject: [PATCH 022/249] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 82d73df17..c64458384 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 82d73df1790af2ad21dc2eac5cb424d56060dccf +Subproject commit c644583841f98744689096305ae9dc1156043aee From 54e6f89dac0a196d561961a1837ea125e3d92fcc Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 17 Oct 2014 11:25:28 +0200 Subject: [PATCH 023/249] fix message state whose storage in db was broken --- coreapi/message_storage.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index eb60537ca..8cbd088f2 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -253,8 +253,8 @@ unsigned int linphone_chat_message_store(LinphoneChatMessage *msg){ void linphone_chat_message_store_state(LinphoneChatMessage *msg){ LinphoneCore *lc=msg->chat_room->lc; if (lc->db){ - char *buf=sqlite3_mprintf("UPDATE history SET status=%i WHERE (id = %i) AND utc = %lld;", - msg->state,msg->storage_id,msg->time); + char *buf=sqlite3_mprintf("UPDATE history SET status=%i WHERE (id = %i);", + msg->state,msg->storage_id); linphone_sql_request(lc->db,buf); sqlite3_free(buf); } From 9e55c638750368e5b87ff986d4a304ab5c17944d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 17 Oct 2014 13:38:37 +0200 Subject: [PATCH 024/249] Add getPlayer() method to LinphoneCore class --- coreapi/linphonecore_jni.cc | 4 ++++ java/common/org/linphone/core/LinphoneCall.java | 7 +++++++ java/impl/org/linphone/core/LinphoneCallImpl.java | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 2fff651f5..857ad716d 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -2445,6 +2445,10 @@ extern "C" jfloat Java_org_linphone_core_LinphoneCallImpl_getAverageQuality( JNI return (jfloat)linphone_call_get_average_quality((LinphoneCall*)ptr); } +extern "C" jlong Java_org_linphone_core_LinphoneCallImpl_getPlayer(JNIEnv *env, jobject thiz, jlong callPtr) { + return (jlong)linphone_call_get_player((LinphoneCall *)callPtr); +} + //LinphoneFriend extern "C" jlong Java_org_linphone_core_LinphoneFriendImpl_newLinphoneFriend(JNIEnv* env ,jobject thiz diff --git a/java/common/org/linphone/core/LinphoneCall.java b/java/common/org/linphone/core/LinphoneCall.java index d75f1bbdb..f6f11ebd7 100644 --- a/java/common/org/linphone/core/LinphoneCall.java +++ b/java/common/org/linphone/core/LinphoneCall.java @@ -333,4 +333,11 @@ public interface LinphoneCall { * @return an Object. */ Object getUserData(); + + /** + * Get a call player + * Call player enable to stream a media file through a call + * @return A player + */ + public LinphonePlayer getPlayer(); } diff --git a/java/impl/org/linphone/core/LinphoneCallImpl.java b/java/impl/org/linphone/core/LinphoneCallImpl.java index ee78e9d89..b2cad202c 100644 --- a/java/impl/org/linphone/core/LinphoneCallImpl.java +++ b/java/impl/org/linphone/core/LinphoneCallImpl.java @@ -245,4 +245,10 @@ class LinphoneCallImpl implements LinphoneCall { public Object getUserData() { return userData; } + + private native long getPlayer(long callPtr); + @Override + public LinphonePlayer getPlayer() { + return new LinphonePlayerImpl(getPlayer(nativePtr)); + } } From bac60c86b0e6e12ea6ca5f85bc701729f23704b5 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Fri, 17 Oct 2014 13:49:54 +0200 Subject: [PATCH 025/249] Multipart Message: let bellesip take care of message header --- coreapi/chat.c | 10 +--------- coreapi/linphonecore.c | 7 +------ 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index 0c89485f3..f9322bdd0 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -36,8 +36,6 @@ static void _linphone_chat_room_send_message(LinphoneChatRoom *cr, LinphoneChatMessage* msg); -#define MULTIPART_BOUNDARY "---------------------------14737809831466499882746641449" -const char *multipart_boundary=MULTIPART_BOUNDARY; static void process_io_error_upload(void *data, const belle_sip_io_error_event_t *event){ LinphoneChatMessage* msg=(LinphoneChatMessage *)data; @@ -128,7 +126,6 @@ static void linphone_chat_message_process_response_from_post_file(void *data, co belle_http_request_t *req; belle_sip_multipart_body_handler_t *bh; char* ua; - char *content_type; char *first_part_header; belle_sip_user_body_handler_t *first_part_bh; @@ -144,19 +141,14 @@ static void linphone_chat_message_process_response_from_post_file(void *data, co /* insert it in a multipart body handler which will manage the boundaries of multipart message */ bh=belle_sip_multipart_body_handler_new(linphone_chat_message_file_transfer_on_progress, msg, (belle_sip_body_handler_t *)first_part_bh); + /* create the http request: do not include the message header at this point, it is done by bellesip when setting the multipart body handler in the message */ ua = ms_strdup_printf("%s/%s", linphone_core_get_user_agent_name(), linphone_core_get_user_agent_version()); - - content_type=belle_sip_strdup_printf("multipart/form-data; boundary=%s",multipart_boundary); - uri=belle_generic_uri_parse(linphone_core_get_file_transfer_server(msg->chat_room->lc)); - req=belle_http_request_create("POST", uri, belle_sip_header_create("User-Agent",ua), - belle_sip_header_create("Content-type",content_type), NULL); ms_free(ua); - belle_sip_free(content_type); belle_sip_message_set_body_handler(BELLE_SIP_MESSAGE(req),BELLE_SIP_BODY_HANDLER(bh)); cbs.process_response=linphone_chat_message_process_response_from_post_file; cbs.process_io_error=process_io_error_upload; diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 827553dd1..5f794718f 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -276,8 +276,6 @@ static void process_auth_requested_upload_log_collection(void *data, belle_sip_a delete_log_collection_upload_file(); } -extern const char *multipart_boundary; - /** * Callback called when posting a log collection file to server (following rcs5.1 recommendation) * @@ -341,7 +339,6 @@ static void process_response_from_post_file_log_collection(void *data, const bel belle_http_request_t *req; belle_sip_multipart_body_handler_t *bh; char* ua; - char *content_type; char *first_part_header; belle_sip_user_body_handler_t *first_part_bh; @@ -359,11 +356,9 @@ static void process_response_from_post_file_log_collection(void *data, const bel /* Insert it in a multipart body handler which will manage the boundaries of multipart message */ bh = belle_sip_multipart_body_handler_new(log_collection_upload_on_progress, core, (belle_sip_body_handler_t *)first_part_bh); ua = ms_strdup_printf("%s/%s", linphone_core_get_user_agent_name(), linphone_core_get_user_agent_version()); - content_type = belle_sip_strdup_printf("multipart/form-data; boundary=%s", multipart_boundary); uri = belle_generic_uri_parse(linphone_core_get_log_collection_upload_server_url(core)); - req = belle_http_request_create("POST", uri, belle_sip_header_create("User-Agent", ua), belle_sip_header_create("Content-type", content_type), NULL); + req = belle_http_request_create("POST", uri, belle_sip_header_create("User-Agent", ua), NULL); ms_free(ua); - belle_sip_free(content_type); belle_sip_message_set_body_handler(BELLE_SIP_MESSAGE(req), BELLE_SIP_BODY_HANDLER(bh)); cbs.process_response = process_response_from_post_file_log_collection; cbs.process_io_error = process_io_error_upload_log_collection; From 4afcb2ede3f577e3f6089442a508bf804aeaf4ae Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 20 Oct 2014 11:01:31 +0200 Subject: [PATCH 026/249] Fix user data in chat message state callbacks. --- coreapi/chat.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index f9322bdd0..cbdacd7aa 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -41,14 +41,14 @@ static void process_io_error_upload(void *data, const belle_sip_io_error_event_t LinphoneChatMessage* msg=(LinphoneChatMessage *)data; ms_error("I/O Error during file upload to %s - msg [%p] chat room[%p]", linphone_core_get_file_transfer_server(msg->chat_room->lc), msg, msg->chat_room); if (msg->cb) { - msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->chat_room->lc); + msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->cb_ud); } } static void process_auth_requested_upload(void *data, belle_sip_auth_event_t *event){ LinphoneChatMessage* msg=(LinphoneChatMessage *)data; ms_error("Error during file upload : auth requested to connect %s - msg [%p] chat room[%p]", linphone_core_get_file_transfer_server(msg->chat_room->lc), msg, msg->chat_room); if (msg->cb) { - msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->chat_room->lc); + msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->cb_ud); } } @@ -56,14 +56,14 @@ static void process_io_error_download(void *data, const belle_sip_io_error_event LinphoneChatMessage* msg=(LinphoneChatMessage *)data; ms_error("I/O Error during file download %s - msg [%p] chat room[%p]", msg->external_body_url, msg, msg->chat_room); if (msg->cb) { - msg->cb(msg, LinphoneChatMessageStateFileTransferError, msg->chat_room->lc); + msg->cb(msg, LinphoneChatMessageStateFileTransferError, msg->cb_ud); } } static void process_auth_requested_download(void *data, belle_sip_auth_event_t *event){ LinphoneChatMessage* msg=(LinphoneChatMessage *)data; ms_error("Error during file download : auth requested to get %s - msg [%p] chat room[%p]", msg->external_body_url, msg, msg->chat_room); if (msg->cb) { - msg->cb(msg, LinphoneChatMessageStateFileTransferError, msg->chat_room->lc); + msg->cb(msg, LinphoneChatMessageStateFileTransferError, msg->cb_ud); } } @@ -1135,7 +1135,7 @@ void linphone_chat_room_cancel_file_transfer(LinphoneChatMessage *msg) { /* waiting for this API, just set to NULL the reference to the request in the message and any request */ msg->http_request = NULL; if (msg->cb) { - msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->chat_room->lc); + msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->cb_ud); } } From 2f47ffacd3adb311a585d24084317de60497d705 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 20 Oct 2014 11:05:27 +0200 Subject: [PATCH 027/249] Change file transfer progression indication to have the number of bytes sent/received and the total. --- coreapi/chat.c | 2 +- coreapi/linphonecore.c | 4 ++-- coreapi/linphonecore.h | 6 +++--- coreapi/private.h | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index cbdacd7aa..3f00d291c 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -75,7 +75,7 @@ static void linphone_chat_message_file_transfer_on_progress(belle_sip_body_handl LinphoneChatMessage* chatMsg=(LinphoneChatMessage *)data; LinphoneCore *lc = chatMsg->chat_room->lc; /* call back given by application level */ - linphone_core_notify_file_transfer_progress_indication(lc, chatMsg, chatMsg->file_transfer_information, (size_t)(((double)offset/(double)total)*100.0)); + linphone_core_notify_file_transfer_progress_indication(lc, chatMsg, chatMsg->file_transfer_information, offset, total); return; } diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 5f794718f..a6aed5269 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -6979,8 +6979,8 @@ void linphone_core_notify_file_transfer_recv(LinphoneCore *lc, LinphoneChatMessa void linphone_core_notify_file_transfer_send(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, char* buff, size_t* size) { NOTIFY_IF_EXIST(file_transfer_send)(lc,message,content,buff,size); } -void linphone_core_notify_file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t progress) { - NOTIFY_IF_EXIST(file_transfer_progress_indication)(lc,message,content,progress); +void linphone_core_notify_file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total) { + NOTIFY_IF_EXIST(file_transfer_progress_indication)(lc,message,content,offset,total); } void linphone_core_notify_is_composing_received(LinphoneCore *lc, LinphoneChatRoom *room) { NOTIFY_IF_EXIST(is_composing_received)(lc,room); diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index cd72701d7..06fcb8e1a 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1603,10 +1603,10 @@ typedef void (*LinphoneCoreFileTransferSendCb)(LinphoneCore *lc, LinphoneChatMes * @param lc #LinphoneCore object * @param message #LinphoneChatMessage message from which the body is received. * @param content #LinphoneContent incoming content information - * @param progress number of bytes sent/received from the begening of the transfer. - * + * @param offset The number of bytes sent/received since the beginning of the transfer. + * @param total The total number of bytes to be sent/received. */ -typedef void (*LinphoneCoreFileTransferProgressIndicationCb)(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t progress); +typedef void (*LinphoneCoreFileTransferProgressIndicationCb)(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total); /** * Is composing notification callback prototype. diff --git a/coreapi/private.h b/coreapi/private.h index bc0ff038c..bb021c27c 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -1007,7 +1007,7 @@ void linphone_core_notify_text_message_received(LinphoneCore *lc, LinphoneChatRo void linphone_core_notify_message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage *message); void linphone_core_notify_file_transfer_recv(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, const char* buff, size_t size); void linphone_core_notify_file_transfer_send(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, char* buff, size_t* size); -void linphone_core_notify_file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t progress); +void linphone_core_notify_file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total); void linphone_core_notify_is_composing_received(LinphoneCore *lc, LinphoneChatRoom *room); void linphone_core_notify_dtmf_received(LinphoneCore* lc, LinphoneCall *call, int dtmf); /* From 4717028dedc20be119ab9cfbba9daf54956d2ad3 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 20 Oct 2014 11:09:49 +0200 Subject: [PATCH 028/249] Allow sending a chat message containing a file from its path. --- coreapi/chat.c | 35 ++++++++++++++++++++++++++++------- coreapi/linphonecore.h | 14 ++++++++++++-- coreapi/private.h | 1 + 3 files changed, 41 insertions(+), 9 deletions(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index 3f00d291c..61d1b3065 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -127,19 +127,23 @@ static void linphone_chat_message_process_response_from_post_file(void *data, co belle_sip_multipart_body_handler_t *bh; char* ua; char *first_part_header; - belle_sip_user_body_handler_t *first_part_bh; + belle_sip_body_handler_t *first_part_bh; /* temporary storage for the Content-disposition header value */ first_part_header = belle_sip_strdup_printf("form-data; name=\"File\"; filename=\"%s\"", msg->file_transfer_information->name); /* create a user body handler to take care of the file and add the content disposition and content-type headers */ - first_part_bh=belle_sip_user_body_handler_new(msg->file_transfer_information->size,NULL,NULL,linphone_chat_message_file_transfer_on_send_body,msg); - belle_sip_body_handler_add_header((belle_sip_body_handler_t *)first_part_bh, belle_sip_header_create("Content-disposition", first_part_header)); + if (msg->file_transfer_filepath != NULL) { + first_part_bh=(belle_sip_body_handler_t *)belle_sip_file_body_handler_new(msg->file_transfer_filepath,NULL,msg); + } else { + first_part_bh=(belle_sip_body_handler_t *)belle_sip_user_body_handler_new(msg->file_transfer_information->size,NULL,NULL,linphone_chat_message_file_transfer_on_send_body,msg); + } + belle_sip_body_handler_add_header(first_part_bh, belle_sip_header_create("Content-disposition", first_part_header)); belle_sip_free(first_part_header); - belle_sip_body_handler_add_header((belle_sip_body_handler_t *)first_part_bh, (belle_sip_header_t *)belle_sip_header_content_type_create(msg->file_transfer_information->type, msg->file_transfer_information->subtype)); + belle_sip_body_handler_add_header(first_part_bh, (belle_sip_header_t *)belle_sip_header_content_type_create(msg->file_transfer_information->type, msg->file_transfer_information->subtype)); /* insert it in a multipart body handler which will manage the boundaries of multipart message */ - bh=belle_sip_multipart_body_handler_new(linphone_chat_message_file_transfer_on_progress, msg, (belle_sip_body_handler_t *)first_part_bh); + bh=belle_sip_multipart_body_handler_new(linphone_chat_message_file_transfer_on_progress, msg, first_part_bh); /* create the http request: do not include the message header at this point, it is done by bellesip when setting the multipart body handler in the message */ ua = ms_strdup_printf("%s/%s", linphone_core_get_user_agent_name(), linphone_core_get_user_agent_version()); @@ -166,6 +170,9 @@ static void linphone_chat_message_process_response_from_post_file(void *data, co body = belle_sip_message_get_body((belle_sip_message_t *)event->response); msg->message = ms_strdup(body); msg->content_type = ms_strdup("application/vnd.gsma.rcs-ft-http+xml"); + if (msg->cb) { + msg->cb(msg, LinphoneChatMessageStateFileTransferDone, msg->cb_ud); + } _linphone_chat_room_send_message(msg->chat_room, msg); } } @@ -1076,8 +1083,6 @@ static void linphone_chat_process_response_headers_from_get_file(void *data, con } static void linphone_chat_process_response_from_get_file(void *data, const belle_http_response_event_t *event){ - //LinphoneChatMessage* msg=(LinphoneChatMessage *)data; - /* check the answer code */ if (event->response){ int code=belle_http_response_get_status_code(event->response); @@ -1086,6 +1091,9 @@ static void linphone_chat_process_response_from_get_file(void *data, const belle LinphoneCore *lc = chatMsg->chat_room->lc; /* file downloaded succesfully, call again the callback with size at zero */ linphone_core_notify_file_transfer_recv(lc, chatMsg, chatMsg->file_transfer_information, NULL, 0); + if (chatMsg->cb) { + chatMsg->cb(chatMsg, LinphoneChatMessageStateFileTransferDone, chatMsg->cb_ud); + } } } } @@ -1286,6 +1294,7 @@ LinphoneChatMessage* linphone_chat_message_clone(const LinphoneChatMessage* msg) new_message->state=msg->state; new_message->storage_id=msg->storage_id; if (msg->from) new_message->from=linphone_address_clone(msg->from); + if (msg->file_transfer_filepath) new_message->file_transfer_filepath=ms_strdup(msg->file_transfer_filepath); return new_message; } @@ -1313,6 +1322,9 @@ static void _linphone_chat_message_destroy(LinphoneChatMessage* msg) { linphone_content_uninit(msg->file_transfer_information); ms_free(msg->file_transfer_information); } + if (msg->file_transfer_filepath != NULL) { + ms_free(msg->file_transfer_filepath); + } ms_message("LinphoneChatMessage [%p] destroyed.",msg); } @@ -1372,6 +1384,15 @@ LinphoneChatMessage* linphone_chat_room_create_file_transfer_message(LinphoneCha return msg; } +LinphoneChatMessage * linphone_chat_room_create_file_transfer_message_from_file(LinphoneChatRoom *cr, LinphoneContent *initial_content, const char *filepath) { + LinphoneChatMessage *msg = linphone_chat_room_create_file_transfer_message(cr, initial_content); + if (msg->file_transfer_filepath != NULL) { + ms_free(msg->file_transfer_filepath); + } + msg->file_transfer_filepath = ms_strdup(filepath); + return msg; +} + /** * @} */ diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 06fcb8e1a..8ff23a430 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1297,9 +1297,10 @@ typedef struct _LinphoneChatRoom LinphoneChatRoom; typedef enum _LinphoneChatMessageState { LinphoneChatMessageStateIdle, /**< Initial state */ LinphoneChatMessageStateInProgress, /**< Delivery in progress */ - LinphoneChatMessageStateDelivered, /**< Message succesffully delivered an acknoleged by remote end point */ + LinphoneChatMessageStateDelivered, /**< Message successfully delivered and acknowledged by remote end point */ LinphoneChatMessageStateNotDelivered, /**< Message was not delivered */ - LinphoneChatMessageStateFileTransferError /**< Message was received(and acknowledged) but cannot get file from server */ + LinphoneChatMessageStateFileTransferError, /**< Message was received(and acknowledged) but cannot get file from server */ + LinphoneChatMessageStateFileTransferDone /**< File transfer has been completed successfully. */ } LinphoneChatMessageState; /** @@ -1357,6 +1358,15 @@ LINPHONE_PUBLIC void linphone_chat_room_set_user_data(LinphoneChatRoom *cr, void */ LINPHONE_PUBLIC LinphoneChatMessage* linphone_chat_room_create_file_transfer_message(LinphoneChatRoom *cr, LinphoneContent* initial_content); +/** + * Create a message with an attached file that will be read from the given filepath. + * @param[in] cr LinphoneChatRoom object + * @param[in] initial_content LinphoneContent object describing the file to be transfered. + * @param[in] filepath The path to the file to be sent. + * @return A new LinphoneChatMessage object. + */ +LINPHONE_PUBLIC LinphoneChatMessage * linphone_chat_room_create_file_transfer_message_from_file(LinphoneChatRoom *cr, LinphoneContent *initial_content, const char *filepath); + LINPHONE_PUBLIC const LinphoneAddress* linphone_chat_room_get_peer_address(LinphoneChatRoom *cr); LINPHONE_PUBLIC void linphone_chat_room_send_message(LinphoneChatRoom *cr, const char *msg); LINPHONE_PUBLIC void linphone_chat_room_send_message2(LinphoneChatRoom *cr, LinphoneChatMessage* msg,LinphoneChatMessageStateChangedCb status_cb,void* ud); diff --git a/coreapi/private.h b/coreapi/private.h index bb021c27c..f23859ddd 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -171,6 +171,7 @@ struct _LinphoneChatMessage { LinphoneContent *file_transfer_information; /**< used to store file transfer information when the message is of file transfer type */ char *content_type; /**< is used to specified the type of message to be sent, used only for file transfer message */ belle_http_request_t *http_request; /**< keep a reference to the http_request in case of file transfer in order to be able to cancel the transfer */ + char *file_transfer_filepath; }; BELLE_SIP_DECLARE_VPTR(LinphoneChatMessage); From 78acd91a54a0cca244df68475cdc158f03608322 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 20 Oct 2014 14:00:46 +0200 Subject: [PATCH 029/249] Add API to save the compressed log collection to a file. --- coreapi/linphonecore.c | 39 ++++++++++++++++++++++----------------- coreapi/linphonecore.h | 8 ++++++++ 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index a6aed5269..b01430066 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -56,6 +56,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #endif #ifdef HAVE_ZLIB +#define COMPRESSED_LOG_COLLECTION_FILENAME "linphone_log.gz" #ifdef WIN32 #include #include @@ -64,6 +65,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define SET_BINARY_MODE(file) #endif #include +#else +#define COMPRESSED_LOG_COLLECTION_FILENAME "linphone_log.txt" #endif /*#define UNSTANDART_GSM_11K 1*/ @@ -254,12 +257,9 @@ void linphone_core_enable_log_collection(bool_t enable) { } static void delete_log_collection_upload_file(void) { -#ifdef HAVE_ZLIB - char *filename = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone_log.gz"); -#else - char *filename = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone_log.gz"); -#endif + char *filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, COMPRESSED_LOG_COLLECTION_FILENAME); unlink(filename); + ms_free(filename); } static void process_io_error_upload_log_collection(void *data, const belle_sip_io_error_event_t *event) { @@ -292,17 +292,16 @@ static int log_collection_upload_on_send_body(belle_sip_user_body_handler_t *bh, /* If we've not reach the end of file yet, fill the buffer with more data */ if (offset < core->log_collection_upload_information->size) { + char *log_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, COMPRESSED_LOG_COLLECTION_FILENAME); #ifdef HAVE_ZLIB - char *log_filename = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone_log.gz"); FILE *log_file = fopen(log_filename, "rb"); #else - char *log_filename = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone_log.txt"); FILE *log_file = fopen(log_filename, "r"); #endif fseek(log_file, offset, SEEK_SET); *size = fread(buffer, 1, *size, log_file); fclose(log_file); - ortp_free(log_filename); + ms_free(log_filename); } return BELLE_SIP_CONTINUE; @@ -439,17 +438,17 @@ static int prepare_log_collection_file_to_upload(const char *filename) { int ret = 0; ortp_mutex_lock(&liblinphone_log_collection_mutex); - output_filename = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path, filename); + output_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, filename); output_file = COMPRESS_OPEN(output_filename, "a"); if (output_file == NULL) goto error; - input_filename = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone1.log"); + input_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone1.log"); input_file = fopen(input_filename, "r"); if (input_file == NULL) goto error; ret = compress_file(input_file, output_file); if (ret < 0) goto error; fclose(input_file); - ortp_free(input_filename); - input_filename = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone2.log"); + ms_free(input_filename); + input_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone2.log"); input_file = fopen(input_filename, "r"); if (input_file != NULL) { ret = compress_file(input_file, output_file); @@ -459,18 +458,19 @@ static int prepare_log_collection_file_to_upload(const char *filename) { error: if (input_file != NULL) fclose(input_file); if (output_file != NULL) COMPRESS_CLOSE(output_file); - if (input_filename != NULL) ortp_free(input_filename); - if (output_filename != NULL) ortp_free(output_filename); + if (input_filename != NULL) ms_free(input_filename); + if (output_filename != NULL) ms_free(output_filename); ortp_mutex_unlock(&liblinphone_log_collection_mutex); return ret; } static size_t get_size_of_file_to_upload(const char *filename) { struct stat statbuf; - char *output_filename = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path, filename); + char *output_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, filename); FILE *output_file = fopen(output_filename, "rb"); fstat(fileno(output_file), &statbuf); fclose(output_file); + ms_free(output_filename); return statbuf.st_size; } @@ -487,12 +487,11 @@ void linphone_core_upload_log_collection(LinphoneCore *core) { #ifdef HAVE_ZLIB core->log_collection_upload_information->type = "application"; core->log_collection_upload_information->subtype = "gzip"; - core->log_collection_upload_information->name = "linphone_log.gz"; #else core->log_collection_upload_information->type = "text"; core->log_collection_upload_information->subtype = "plain"; - core->log_collection_upload_information->name = "linphone_log.txt"; #endif + core->log_collection_upload_information->name = COMPRESSED_LOG_COLLECTION_FILENAME; if (prepare_log_collection_file_to_upload(core->log_collection_upload_information->name) < 0) return; core->log_collection_upload_information->size = get_size_of_file_to_upload(core->log_collection_upload_information->name); uri = belle_generic_uri_parse(linphone_core_get_log_collection_upload_server_url(core)); @@ -505,6 +504,12 @@ void linphone_core_upload_log_collection(LinphoneCore *core) { } } +char * linphone_core_compress_log_collection(LinphoneCore *core) { + if (liblinphone_log_collection_enabled == FALSE) return NULL; + if (prepare_log_collection_file_to_upload(COMPRESSED_LOG_COLLECTION_FILENAME) < 0) return NULL; + return ms_strdup_printf("%s/%s", liblinphone_log_collection_path, COMPRESSED_LOG_COLLECTION_FILENAME); +} + /** * Enable logs in supplied FILE*. * diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 8ff23a430..ef23f1315 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1814,6 +1814,14 @@ LINPHONE_PUBLIC void linphone_core_set_log_collection_upload_server_url(Linphone */ LINPHONE_PUBLIC void linphone_core_upload_log_collection(LinphoneCore *core); +/** + * Compress the log collection in a single file. + * @ingroup misc + * @param[in] core LinphoneCore object + * @return The path of the compressed log collection file (to be freed calling ms_free()). + */ +LINPHONE_PUBLIC char * linphone_core_compress_log_collection(LinphoneCore *core); + /** * Define a log handler. * From 3c4a6f7ed4111d33965735bef3679efa4cb91a03 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 20 Oct 2014 14:44:23 +0200 Subject: [PATCH 030/249] Added callback user data to start_file_download --- coreapi/chat.c | 3 ++- coreapi/linphonecore.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index 61d1b3065..d52ab4a70 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -1104,7 +1104,7 @@ static void linphone_chat_process_response_from_get_file(void *data, const belle * @param message #LinphoneChatMessage * @param status_cb LinphoneChatMessageStateChangeCb status callback invoked when file is downloaded or could not be downloaded */ -void linphone_chat_message_start_file_download(LinphoneChatMessage *message, LinphoneChatMessageStateChangedCb status_cb) { +void linphone_chat_message_start_file_download(LinphoneChatMessage *message, LinphoneChatMessageStateChangedCb status_cb, void *ud) { belle_http_request_listener_callbacks_t cbs={0}; belle_http_request_listener_t *l; belle_generic_uri_t *uri; @@ -1129,6 +1129,7 @@ void linphone_chat_message_start_file_download(LinphoneChatMessage *message, Lin belle_sip_object_data_set(BELLE_SIP_OBJECT(req),"message",(void *)message,NULL); message->http_request = req; /* keep a reference on the request to be able to cancel the download */ message->cb = status_cb; + message->cb_ud = cb_ud; message->state = LinphoneChatMessageStateInProgress; /* start the download, status is In Progress */ belle_http_provider_send_request(message->chat_room->lc->http_provider,req,l); } diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index ef23f1315..bac438e93 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1430,7 +1430,7 @@ LINPHONE_PUBLIC const LinphoneAddress* linphone_chat_message_get_to_address(cons LINPHONE_PUBLIC const char* linphone_chat_message_get_external_body_url(const LinphoneChatMessage* message); LINPHONE_PUBLIC void linphone_chat_message_set_external_body_url(LinphoneChatMessage* message,const char* url); LINPHONE_PUBLIC const LinphoneContent* linphone_chat_message_get_file_transfer_information(const LinphoneChatMessage* message); -LINPHONE_PUBLIC void linphone_chat_message_start_file_download(LinphoneChatMessage* message, LinphoneChatMessageStateChangedCb status_cb); +LINPHONE_PUBLIC void linphone_chat_message_start_file_download(LinphoneChatMessage* message, LinphoneChatMessageStateChangedCb status_cb, void* ud); LINPHONE_PUBLIC void linphone_chat_room_cancel_file_transfer(LinphoneChatMessage* msg); LINPHONE_PUBLIC const char* linphone_chat_message_get_appdata(const LinphoneChatMessage* message); LINPHONE_PUBLIC void linphone_chat_message_set_appdata(LinphoneChatMessage* message, const char* data); From 7126c413a76d742cc10ce07c0a9f6e62f0a75387 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 20 Oct 2014 14:51:09 +0200 Subject: [PATCH 031/249] Fix typo --- coreapi/chat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index d52ab4a70..cc8bc895a 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -1129,7 +1129,7 @@ void linphone_chat_message_start_file_download(LinphoneChatMessage *message, Lin belle_sip_object_data_set(BELLE_SIP_OBJECT(req),"message",(void *)message,NULL); message->http_request = req; /* keep a reference on the request to be able to cancel the download */ message->cb = status_cb; - message->cb_ud = cb_ud; + message->cb_ud = ud; message->state = LinphoneChatMessageStateInProgress; /* start the download, status is In Progress */ belle_http_provider_send_request(message->chat_room->lc->http_provider,req,l); } From 965add9d6e8baef897c32fc4427f4bd4758594d7 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 20 Oct 2014 15:09:48 +0200 Subject: [PATCH 032/249] add new states LinphoneCallEarlyUpdating and LinphoneCallEarlyUpdatedByRemote to properly handle the early dialog UPDATE scenarios. fix test suite. --- coreapi/callbacks.c | 32 ++++++++++++------ coreapi/linphonecall.c | 4 +++ coreapi/linphonecore.c | 12 +++++-- coreapi/linphonecore.h | 4 ++- .../org/linphone/core/LinphoneCall.java | 9 +++++ mediastreamer2 | 2 +- oRTP | 2 +- tester/call_tester.c | 31 +++++++++-------- tester/liblinphone_tester.h | 2 ++ tester/sounds/hello8000.mkv | Bin 42162 -> 96210 bytes 10 files changed, 67 insertions(+), 31 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 8dc5cad9e..bb6b5b9fb 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -411,6 +411,7 @@ static void call_accepted(SalOp *op){ LinphoneCore *lc=(LinphoneCore *)sal_get_user_pointer(sal_op_get_sal(op)); LinphoneCall *call=(LinphoneCall*)sal_op_get_user_pointer(op); SalMediaDescription *md; + bool_t update_state=TRUE; if (call==NULL){ ms_warning("No call to accept."); @@ -433,12 +434,21 @@ static void call_accepted(SalOp *op){ if (md) /*make sure re-invite will not propose video again*/ call->params->has_video &= linphone_core_media_description_contains_video_stream(md); - if (call->state==LinphoneCallOutgoingProgress || - call->state==LinphoneCallOutgoingRinging || - call->state==LinphoneCallOutgoingEarlyMedia){ - linphone_call_set_state(call,LinphoneCallConnected,"Connected"); - if (call->referer) linphone_core_notify_refer_state(lc,call->referer,call); + switch (call->state){ + case LinphoneCallOutgoingProgress: + case LinphoneCallOutgoingRinging: + case LinphoneCallOutgoingEarlyMedia: + linphone_call_set_state(call,LinphoneCallConnected,"Connected"); + if (call->referer) linphone_core_notify_refer_state(lc,call->referer,call); + break; + case LinphoneCallEarlyUpdating: + linphone_call_set_state(call,call->prevstate,"Early update accepted"); + update_state=FALSE; + break; + default: + break; } + if (md && !sal_media_description_empty(md) && !linphone_core_incompatible_security(lc,md)){ linphone_call_update_remote_session_id_and_ver(call); if (sal_media_description_has_dir(md,SalStreamSendOnly) || @@ -451,7 +461,7 @@ static void call_accepted(SalOp *op){ ms_free(msg); } linphone_core_update_streams (lc,call,md); - linphone_call_set_state(call,LinphoneCallPaused,"Call paused"); + if (update_state) linphone_call_set_state(call,LinphoneCallPaused,"Call paused"); if (call->refer_pending) linphone_core_start_refered_call(lc,call,NULL); }else if (sal_media_description_has_dir(md,SalStreamRecvOnly)){ @@ -464,7 +474,7 @@ static void call_accepted(SalOp *op){ ms_free(msg); } linphone_core_update_streams (lc,call,md); - linphone_call_set_state(call,LinphoneCallPausedByRemote,"Call paused by remote"); + if (update_state) linphone_call_set_state(call,LinphoneCallPausedByRemote,"Call paused by remote"); }else{ if (call->state!=LinphoneCallUpdating){ if (call->state==LinphoneCallResuming){ @@ -485,8 +495,7 @@ static void call_accepted(SalOp *op){ linphone_call_fix_call_parameters(call); if (!call->current_params->in_conference) lc->current_call=call; - if (call->prevstate != LinphoneCallIncomingEarlyMedia) /*don't change state in aswer to a SIP UPDATE in early media*/ - linphone_call_set_state(call, LinphoneCallStreamsRunning, "Streams running"); + if (update_state) linphone_call_set_state(call, LinphoneCallStreamsRunning, "Streams running"); } }else{ /*send a bye*/ @@ -570,7 +579,8 @@ static void call_updated_by_remote(LinphoneCore *lc, LinphoneCall *call, bool_t if (rmd==NULL) call->expect_media_in_ack=TRUE; } else if (is_update){ /*SIP UPDATE case, can occur in early states*/ - _linphone_core_accept_call_update(lc,call,NULL,call->state,linphone_call_state_to_string(call->state)); + linphone_call_set_state(call, LinphoneCallEarlyUpdatedByRemote, "EarlyUpdatedByRemote"); + _linphone_core_accept_call_update(lc,call,NULL,call->prevstate,linphone_call_state_to_string(call->prevstate)); } } @@ -627,6 +637,8 @@ static void call_updating(SalOp *op, bool_t is_update){ case LinphoneCallRefered: case LinphoneCallError: case LinphoneCallReleased: + case LinphoneCallEarlyUpdatedByRemote: + case LinphoneCallEarlyUpdating: ms_warning("Receiving reINVITE or UPDATE while in state [%s], should not happen.",linphone_call_state_to_string(call->state)); break; } diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 5e7f9e5af..152f35e2c 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -924,6 +924,10 @@ const char *linphone_call_state_to_string(LinphoneCallState cs){ return "LinphoneCallUpdating"; case LinphoneCallReleased: return "LinphoneCallReleased"; + case LinphoneCallEarlyUpdatedByRemote: + return "LinphoneCallEarlyUpdatedByRemote"; + case LinphoneCallEarlyUpdating: + return "LinphoneCallEarlyUpdating"; } return "undefined state"; } diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index b01430066..40723820a 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -3281,15 +3281,20 @@ int linphone_core_start_update_call(LinphoneCore *lc, LinphoneCall *call){ **/ int linphone_core_update_call(LinphoneCore *lc, LinphoneCall *call, const LinphoneCallParams *params){ int err=0; + LinphoneCallState nextstate; #if defined(VIDEO_ENABLED) && defined(BUILD_UPNP) bool_t has_video = FALSE; #endif switch(call->state){ - case LinphoneCallIncomingEarlyMedia: case LinphoneCallIncomingReceived: + case LinphoneCallIncomingEarlyMedia: + case LinphoneCallOutgoingRinging: + case LinphoneCallOutgoingEarlyMedia: + nextstate=LinphoneCallEarlyUpdating; + break; case LinphoneCallStreamsRunning: - /*these states are allowed for linphone_core_update_call()*/ + nextstate=LinphoneCallUpdating; break; default: ms_error("linphone_core_update_call() is not allowed in [%s] state",linphone_call_state_to_string(call->state)); @@ -3297,7 +3302,7 @@ int linphone_core_update_call(LinphoneCore *lc, LinphoneCall *call, const Linpho } if (params!=NULL){ - linphone_call_set_state(call,LinphoneCallUpdating,"Updating call"); + linphone_call_set_state(call,nextstate,"Updating call"); #if defined(VIDEO_ENABLED) && defined(BUILD_UPNP) has_video = call->params->has_video; @@ -6413,6 +6418,7 @@ LinphoneCallParams *linphone_core_create_default_call_parameters(LinphoneCore *l * @param lc the LinphoneCore * @param call the call for which the parameters are to be build, or NULL in the case where the parameters are to be used for a new outgoing call. * @return a new LinphoneCallParams + * @ingroup call_control */ LinphoneCallParams *linphone_core_create_call_params(LinphoneCore *lc, LinphoneCall *call){ if (!call) return linphone_core_create_default_call_parameters(lc); diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index bac438e93..f3fbe22cb 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -638,7 +638,9 @@ typedef enum _LinphoneCallState{ LinphoneCallUpdatedByRemote, /**number_of_LinphoneCallIncomingEarlyMedia++;break; case LinphoneCallUpdating :counters->number_of_LinphoneCallUpdating++;break; case LinphoneCallReleased :counters->number_of_LinphoneCallReleased++;break; + case LinphoneCallEarlyUpdating: counters->number_of_LinphoneCallEarlyUpdating++;break; + case LinphoneCallEarlyUpdatedByRemote: counters->number_of_LinphoneCallEarlyUpdatedByRemote++;break; default: CU_FAIL("unexpected event");break; } @@ -1906,7 +1908,9 @@ static void call_with_file_player(void) { snprintf(hellopath,sizeof(hellopath), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); - /*caller uses soundcard*/ + /*caller uses files instead of soundcard in order to avoid mixing soundcard input with file played using call's player*/ + linphone_core_use_files(pauline->lc,TRUE); + linphone_core_set_play_file(pauline->lc,NULL); /*callee is recording and plays file*/ linphone_core_use_files(pauline->lc,TRUE); @@ -1963,8 +1967,9 @@ static void call_with_mkv_file_player(void) { snprintf(hellowav,sizeof(hellowav), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); snprintf(hellomkv,sizeof(hellomkv), "%s/sounds/hello8000.mkv", liblinphone_tester_file_prefix); - /*caller uses soundcard*/ - + /*caller uses files instead of soundcard in order to avoid mixing soundcard input with file played using call's player*/ + linphone_core_use_files(pauline->lc,TRUE); + linphone_core_set_play_file(pauline->lc,NULL); /*callee is recording and plays file*/ linphone_core_use_files(pauline->lc,TRUE); linphone_core_set_play_file(pauline->lc,hellowav); /*just to send something but we are not testing what is sent by pauline*/ @@ -1985,7 +1990,7 @@ static void call_with_mkv_file_player(void) { CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); CU_ASSERT_TRUE(ms_audio_diff(hellowav,recordpath,&similar,NULL,NULL)==0); - CU_ASSERT_TRUE(similar>0.9); + CU_ASSERT_TRUE(similar>0.6); CU_ASSERT_TRUE(similar<=1.0); ms_free(recordpath); @@ -2185,7 +2190,6 @@ static void early_media_call_with_update_base(bool_t media_change){ if (media_change) { disable_all_audio_codecs_except_one(marie->lc,"pcmu",-1); disable_all_audio_codecs_except_one(pauline->lc,"pcmu",-1); - } /* Marie calls Pauline, and after the call has rung, transitions to an early_media session @@ -2216,26 +2220,23 @@ static void early_media_call_with_update_base(bool_t media_change){ linphone_call_params_set_session_name(pauline_params,UPDATED_SESSION_NAME); linphone_core_update_call(pauline->lc, pauline_call, pauline_params); + CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallEarlyUpdating,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallEarlyUpdatedByRemote,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingEarlyMedia,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingEarlyMedia,1,2000)); /*just to wait 2s*/ liblinphone_tester_check_rtcp(marie, pauline); - wait_for_list(lcs, &marie->stat.number_of_LinphoneCallUpdatedByRemote,100000,2000); CU_ASSERT_STRING_EQUAL( linphone_call_params_get_session_name(linphone_call_get_remote_params(marie_call)) , UPDATED_SESSION_NAME); linphone_core_accept_call(pauline->lc, linphone_core_get_current_call(pauline->lc)); + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallConnected, 1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); - - CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneCallOutgoingEarlyMedia,1); - CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneCallStreamsRunning,1); - CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneCallConnected,1); - - CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneCallIncomingEarlyMedia,1); - CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneCallStreamsRunning,1); - CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneCallConnected,1); - CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneCallUpdating,1); + CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallConnected, 1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); liblinphone_tester_check_rtcp(marie, pauline); diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 9178bac8f..eda851698 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -116,6 +116,8 @@ typedef struct _stats { int number_of_LinphoneCallIncomingEarlyMedia; int number_of_LinphoneCallUpdating; int number_of_LinphoneCallReleased; + int number_of_LinphoneCallEarlyUpdatedByRemote; + int number_of_LinphoneCallEarlyUpdating; int number_of_LinphoneTransferCallOutgoingInit; int number_of_LinphoneTransferCallOutgoingProgress; diff --git a/tester/sounds/hello8000.mkv b/tester/sounds/hello8000.mkv index 42fa387e552d470186a9a4313939d74b6ca274a7..812d62563dd0a01586e16a5ddb37a49aacc91f8e 100644 GIT binary patch literal 96210 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

f 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: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

3HoM7C8s}HNiPa2J*v45 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∨=Ms3nL;^yg|P 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 Date: Mon, 20 Oct 2014 15:26:55 +0200 Subject: [PATCH 033/249] Added missing param since recent changes --- coreapi/linphonecore_jni.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 857ad716d..8b7ea4039 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -2911,7 +2911,7 @@ extern "C" void Java_org_linphone_core_LinphoneChatMessageImpl_startFileDownload jobject listener = env->NewGlobalRef(jlistener); LinphoneChatMessage * message = (LinphoneChatMessage *)ptr; message->cb_ud = listener; - linphone_chat_message_start_file_download(message, chat_room_impl_callback); + linphone_chat_message_start_file_download(message, chat_room_impl_callback, NULL); } extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setVideoWindowId(JNIEnv* env From 4fc7ef7a0bf0adfd68896b231ff17bffcc1e7ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Mon, 20 Oct 2014 16:33:50 +0200 Subject: [PATCH 034/249] Fix compilation --- coreapi/help/filetransfer.c | 6 +++--- tester/liblinphone_tester.h | 2 +- tester/message_tester.c | 9 +++++---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/coreapi/help/filetransfer.c b/coreapi/help/filetransfer.c index 01f6f3c2a..035a05597 100644 --- a/coreapi/help/filetransfer.c +++ b/coreapi/help/filetransfer.c @@ -48,11 +48,11 @@ static void stop(int signum){ /** * function invoked to report file transfer progress. * */ -static void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t progress) { +static void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total) { const LinphoneAddress* from_address = linphone_chat_message_get_from(message); const LinphoneAddress* to_address = linphone_chat_message_get_to(message); char *address = linphone_chat_message_is_outgoing(message)?linphone_address_as_string(to_address):linphone_address_as_string(from_address); - printf(" File transfer [%d%%] %s of type [%s/%s] %s [%s] \n", (int)progress + printf(" File transfer [%d%%] %s of type [%s/%s] %s [%s] \n", (int)((offset *100)/total) ,(linphone_chat_message_is_outgoing(message)?"sent":"received") , content->type , content->subtype @@ -133,7 +133,7 @@ static void message_received(LinphoneCore *lc, LinphoneChatRoom *cr, LinphoneCha const LinphoneContent *file_transfer_info = linphone_chat_message_get_file_transfer_information(msg); printf ("Do you really want to download %s (size %ld)?[Y/n]\nOk, let's go\n", file_transfer_info->name, (long int)file_transfer_info->size); - linphone_chat_message_start_file_download(msg, linphone_file_transfer_state_changed); + linphone_chat_message_start_file_download(msg, linphone_file_transfer_state_changed, NULL); } diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index eda851698..18990f313 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -226,7 +226,7 @@ void text_message_received(LinphoneCore *lc, LinphoneChatRoom *room, const Linph void message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage* message); void file_transfer_received(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, const char* buff, size_t size); void file_transfer_send(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, char* buff, size_t* size); -void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t progress); +void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total); void is_composing_received(LinphoneCore *lc, LinphoneChatRoom *room); void info_message_received(LinphoneCore *lc, LinphoneCall *call, const LinphoneInfoMessage *msg); void new_subscription_requested(LinphoneCore *lc, LinphoneFriend *lf, const char *url); diff --git a/tester/message_tester.c b/tester/message_tester.c index 21ef387ae..ff6d16cc9 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -116,12 +116,13 @@ void file_transfer_send(LinphoneCore *lc, LinphoneChatMessage *message, const L /** * function invoked to report file transfer progress. * */ -void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t progress) { +void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total) { const LinphoneAddress* from_address = linphone_chat_message_get_from(message); const LinphoneAddress* to_address = linphone_chat_message_get_to(message); char *address = linphone_chat_message_is_outgoing(message)?linphone_address_as_string(to_address):linphone_address_as_string(from_address); stats* counters = get_stats(lc); - ms_message(" File transfer [%d%%] %s of type [%s/%s] %s [%s] \n", (int)progress + int progress = (int)((offset * 100)/total); + ms_message(" File transfer [%d%%] %s of type [%s/%s] %s [%s] \n", progress ,(linphone_chat_message_is_outgoing(message)?"sent":"received") , content->type , content->subtype @@ -431,7 +432,7 @@ static void file_transfer_message(void) { linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1)); if (marie->stat.last_received_chat_message ) { - linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change); + linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change, NULL); } CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageExtBodyReceived,1)); @@ -486,7 +487,7 @@ static void small_file_transfer_message(void) { linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1)); if (marie->stat.last_received_chat_message ) { - linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change); + linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change, NULL); } CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageExtBodyReceived,1)); From 6a455bc346914ecddebabcc8ff3ec743748f42e5 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 20 Oct 2014 16:44:56 +0200 Subject: [PATCH 035/249] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index c5b6a6df8..d2ed7e161 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit c5b6a6df8c5ccad06e34e6d09410cf8c15d32cf7 +Subproject commit d2ed7e1615a040eb0596e80f8f5b0fcb62a2d5ad From 78c11c8f6e9807fd1342aae78532d46d20f70248 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 20 Oct 2014 22:49:40 +0200 Subject: [PATCH 036/249] compute call log duration since connected state instead of from call creation --- coreapi/call_log.c | 1 + coreapi/call_log.h | 2 +- coreapi/linphonecall.c | 9 ++++----- coreapi/linphonecore.c | 4 ++-- coreapi/private.h | 4 ++-- tester/call_tester.c | 14 ++++++++++++-- tester/rcfiles/laure_rc | 5 ++++- tester/rcfiles/marie_rc | 3 +++ tester/rcfiles/pauline_rc | 3 +++ 9 files changed, 32 insertions(+), 13 deletions(-) diff --git a/coreapi/call_log.c b/coreapi/call_log.c index d1e59578f..7ce488096 100644 --- a/coreapi/call_log.c +++ b/coreapi/call_log.c @@ -281,6 +281,7 @@ LinphoneCallLog * linphone_call_log_new(LinphoneCallDir dir, LinphoneAddress *fr cl->reporting.reports[LINPHONE_CALL_STATS_AUDIO]=linphone_reporting_new(); cl->reporting.reports[LINPHONE_CALL_STATS_VIDEO]=linphone_reporting_new(); + cl->connected_date_time=0; return cl; } diff --git a/coreapi/call_log.h b/coreapi/call_log.h index d274037d2..6a3ec8dab 100644 --- a/coreapi/call_log.h +++ b/coreapi/call_log.h @@ -79,7 +79,7 @@ LINPHONE_PUBLIC const char * linphone_call_log_get_call_id(const LinphoneCallLog LINPHONE_PUBLIC LinphoneCallDir linphone_call_log_get_dir(LinphoneCallLog *cl); /** - * Get the duration of the call. + * Get the duration of the call since connected. * @param[in] cl LinphoneCallLog object * @return The duration of the call in seconds. **/ diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 152f35e2c..7608c47ba 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -564,7 +564,6 @@ static void linphone_call_init_common(LinphoneCall *call, LinphoneAddress *from, ms_message("New LinphoneCall [%p] initialized (LinphoneCore version: %s)",call,linphone_core_get_version()); call->state=LinphoneCallIdle; call->transfer_state = LinphoneCallIdle; - call->media_start_time=0; call->log=linphone_call_log_new(call->dir, from, to); call->camera_enabled=TRUE; call->current_params = linphone_call_params_new(); @@ -972,7 +971,7 @@ void linphone_call_set_state_base(LinphoneCall *call, LinphoneCallState cstate, } if (cstate == LinphoneCallConnected) { call->log->status=LinphoneCallSuccess; - call->media_start_time=time(NULL); + call->log->connected_date_time=time(NULL); } if (!silently) @@ -1284,8 +1283,8 @@ bool_t linphone_call_has_transfer_pending(const LinphoneCall *call){ * Returns call's duration in seconds. **/ int linphone_call_get_duration(const LinphoneCall *call){ - if (call->media_start_time==0) return 0; - return time(NULL)-call->media_start_time; + if (call->log->connected_date_time==0) return 0; + return time(NULL)-call->log->connected_date_time; } /** @@ -2952,7 +2951,7 @@ void linphone_call_background_tasks(LinphoneCall *call, bool_t one_second_elapse void linphone_call_log_completed(LinphoneCall *call){ LinphoneCore *lc=call->core; - call->log->duration=time(NULL)-call->log->start_date_time; + call->log->duration=linphone_call_get_duration(call); /*store duration since connected*/ if (call->log->status==LinphoneCallMissed){ char *info; diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 40723820a..69152647f 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -2452,8 +2452,8 @@ void linphone_core_iterate(LinphoneCore *lc){ } } if ( (lc->sip_conf.in_call_timeout > 0) - && (call->media_start_time != 0) - && ((curtime - call->media_start_time) > lc->sip_conf.in_call_timeout)) + && (call->log->connected_date_time != 0) + && ((curtime - call->log->connected_date_time) > lc->sip_conf.in_call_timeout)) { ms_message("in call timeout (%i)",lc->sip_conf.in_call_timeout); linphone_core_terminate_call(lc,call); diff --git a/coreapi/private.h b/coreapi/private.h index f23859ddd..7cef61242 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -125,12 +125,13 @@ struct _LinphoneCallLog{ LinphoneAddress *from; /**lc); lcs = ms_list_append(lcs,pauline->lc); @@ -2142,6 +2146,7 @@ static void early_media_call_with_ringing(void){ linphone_core_set_play_file(pauline->lc,hellopath); marie_call = linphone_core_invite_address(marie->lc, pauline->identity); + marie_call_log = linphone_call_get_call_log(marie_call); CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingReceived,1,3000)); CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingRinging,1,1000)); @@ -2159,20 +2164,25 @@ static void early_media_call_with_ringing(void){ linphone_core_accept_call(pauline->lc, linphone_core_get_current_call(pauline->lc)); + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallConnected, 1,1000)); + connected_time=time(NULL); CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); CU_ASSERT_EQUAL(marie_call, linphone_core_get_current_call(marie->lc)); liblinphone_tester_check_rtcp(marie, pauline); + /*just to have a call duration !=0*/ + wait_for_list(lcs,&dummy,1,2000); linphone_core_terminate_all_calls(pauline->lc); CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,1000)); - - + ended_time=time(NULL); + CU_ASSERT_TRUE (abs (linphone_call_log_get_duration(marie_call_log) - (ended_time - connected_time)) <1 ); ms_list_free(lcs); } + linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } diff --git a/tester/rcfiles/laure_rc b/tester/rcfiles/laure_rc index 54a682401..7f4d099f5 100644 --- a/tester/rcfiles/laure_rc +++ b/tester/rcfiles/laure_rc @@ -38,4 +38,7 @@ automatically_accept=0 device=StaticImage: Static picture [sound] -echocancellation=0 #to not overload cpu in case of VG \ No newline at end of file +echocancellation=0 #to not overload cpu in case of VG + +[net] +dns_srv_enabled=0 #no srv needed in general \ No newline at end of file diff --git a/tester/rcfiles/marie_rc b/tester/rcfiles/marie_rc index f4f9aa793..a1721c22a 100644 --- a/tester/rcfiles/marie_rc +++ b/tester/rcfiles/marie_rc @@ -48,3 +48,6 @@ device=StaticImage: Static picture [sound] echocancellation=0 #to not overload cpu in case of VG + +[net] +dns_srv_enabled=0 #no srv needed in general diff --git a/tester/rcfiles/pauline_rc b/tester/rcfiles/pauline_rc index 09669b72c..7322fd99a 100644 --- a/tester/rcfiles/pauline_rc +++ b/tester/rcfiles/pauline_rc @@ -45,3 +45,6 @@ device=StaticImage: Static picture [sound] echocancellation=0 #to not overload cpu in case of VG + +[net] +dns_srv_enabled=0 #no srv needed in general \ No newline at end of file From d76e97d73f6d7f6e5b5425c0e74438a024add6a0 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 21 Oct 2014 08:50:56 +0200 Subject: [PATCH 037/249] Copy path string when setting log collection path. --- coreapi/linphonecore.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 69152647f..c85be1c1a 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -82,7 +82,7 @@ static const char *liblinphone_version= ; static OrtpLogFunc liblinphone_log_func = NULL; static bool_t liblinphone_log_collection_enabled = FALSE; -static const char * liblinphone_log_collection_path = "."; +static char * liblinphone_log_collection_path = NULL; static ortp_mutex_t liblinphone_log_collection_mutex; static bool_t liblinphone_serialize_logs = FALSE; static void set_network_reachable(LinphoneCore* lc,bool_t isReachable, time_t curtime); @@ -205,8 +205,8 @@ static void linphone_core_log_collection_handler(OrtpLogLevel level, const char } msg = ortp_strdup_vprintf(fmt, args); - log_filename1 = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone1.log"); - log_filename2 = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone2.log"); + log_filename1 = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone1.log"); + log_filename2 = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone2.log"); ortp_mutex_lock(&liblinphone_log_collection_mutex); log_file = fopen(log_filename1, "a"); fstat(fileno(log_file), &statbuf); @@ -233,7 +233,13 @@ static void linphone_core_log_collection_handler(OrtpLogLevel level, const char } void linphone_core_set_log_collection_path(const char *path) { - liblinphone_log_collection_path = path; + if (liblinphone_log_collection_path != NULL) { + ms_free(liblinphone_log_collection_path); + liblinphone_log_collection_path = NULL; + } + if (path != NULL) { + liblinphone_log_collection_path = ms_strdup(path); + } } const char *linphone_core_get_log_collection_upload_server_url(LinphoneCore *core) { @@ -257,7 +263,7 @@ void linphone_core_enable_log_collection(bool_t enable) { } static void delete_log_collection_upload_file(void) { - char *filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, COMPRESSED_LOG_COLLECTION_FILENAME); + char *filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", COMPRESSED_LOG_COLLECTION_FILENAME); unlink(filename); ms_free(filename); } @@ -292,7 +298,7 @@ static int log_collection_upload_on_send_body(belle_sip_user_body_handler_t *bh, /* If we've not reach the end of file yet, fill the buffer with more data */ if (offset < core->log_collection_upload_information->size) { - char *log_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, COMPRESSED_LOG_COLLECTION_FILENAME); + char *log_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", COMPRESSED_LOG_COLLECTION_FILENAME); #ifdef HAVE_ZLIB FILE *log_file = fopen(log_filename, "rb"); #else @@ -438,17 +444,17 @@ static int prepare_log_collection_file_to_upload(const char *filename) { int ret = 0; ortp_mutex_lock(&liblinphone_log_collection_mutex); - output_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, filename); + output_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", filename); output_file = COMPRESS_OPEN(output_filename, "a"); if (output_file == NULL) goto error; - input_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone1.log"); + input_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone1.log"); input_file = fopen(input_filename, "r"); if (input_file == NULL) goto error; ret = compress_file(input_file, output_file); if (ret < 0) goto error; fclose(input_file); ms_free(input_filename); - input_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, "linphone2.log"); + input_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone2.log"); input_file = fopen(input_filename, "r"); if (input_file != NULL) { ret = compress_file(input_file, output_file); @@ -466,7 +472,7 @@ error: static size_t get_size_of_file_to_upload(const char *filename) { struct stat statbuf; - char *output_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path, filename); + char *output_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", filename); FILE *output_file = fopen(output_filename, "rb"); fstat(fileno(output_file), &statbuf); fclose(output_file); @@ -507,7 +513,7 @@ void linphone_core_upload_log_collection(LinphoneCore *core) { char * linphone_core_compress_log_collection(LinphoneCore *core) { if (liblinphone_log_collection_enabled == FALSE) return NULL; if (prepare_log_collection_file_to_upload(COMPRESSED_LOG_COLLECTION_FILENAME) < 0) return NULL; - return ms_strdup_printf("%s/%s", liblinphone_log_collection_path, COMPRESSED_LOG_COLLECTION_FILENAME); + return ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", COMPRESSED_LOG_COLLECTION_FILENAME); } /** From be7cb58b1899577f4356cb9d9159e406854bc949 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 21 Oct 2014 11:02:33 +0200 Subject: [PATCH 038/249] Fix message tester. --- tester/message_tester.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tester/message_tester.c b/tester/message_tester.c index ff6d16cc9..5fb61d999 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -432,7 +432,7 @@ static void file_transfer_message(void) { linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1)); if (marie->stat.last_received_chat_message ) { - linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change, NULL); + linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change, marie->lc); } CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageExtBodyReceived,1)); @@ -487,7 +487,7 @@ static void small_file_transfer_message(void) { linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1)); if (marie->stat.last_received_chat_message ) { - linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change, NULL); + linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change, marie->lc); } CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageExtBodyReceived,1)); @@ -606,7 +606,7 @@ static void file_transfer_message_io_error_download(void) { if (marie->stat.last_received_chat_message ) { /* get last message and use it to download file */ - linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change); + linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change, marie->lc); /* wait for file to be 50% downloaded */ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.progress_of_LinphoneFileTransfer, 50)); /* and simulate network error */ @@ -725,7 +725,7 @@ static void file_transfer_message_download_cancelled(void) { if (marie->stat.last_received_chat_message ) { /* get last message and use it to download file */ - linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change); + linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change, marie->lc); /* wait for file to be 50% downloaded */ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.progress_of_LinphoneFileTransfer, 50)); /* and cancel the transfer */ From 9a128da1dbba0ace64e94022af4a5af0b0f097d4 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 21 Oct 2014 12:31:49 +0200 Subject: [PATCH 039/249] Handle file transfer download to a file. --- coreapi/chat.c | 36 +++++++++++++++++++++++------------- coreapi/linphonecore.h | 1 + 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index cc8bc895a..11c63af6d 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -1075,10 +1075,17 @@ static void linphone_chat_process_response_headers_from_get_file(void *data, con body_size = message->file_transfer_information->size; } - belle_sip_message_set_body_handler( - (belle_sip_message_t*)event->response, - (belle_sip_body_handler_t*)belle_sip_user_body_handler_new(body_size, linphone_chat_message_file_transfer_on_progress,on_recv_body,NULL,message) - ); + if (message->file_transfer_filepath == NULL) { + belle_sip_message_set_body_handler( + (belle_sip_message_t*)event->response, + (belle_sip_body_handler_t*)belle_sip_user_body_handler_new(body_size, linphone_chat_message_file_transfer_on_progress,on_recv_body,NULL,message) + ); + } else { + belle_sip_message_set_body_handler( + (belle_sip_message_t *)event->response, + (belle_sip_body_handler_t *)belle_sip_file_body_handler_new(message->file_transfer_filepath, linphone_chat_message_file_transfer_on_progress, message) + ); + } } } @@ -1362,6 +1369,18 @@ LinphoneReason linphone_chat_message_get_reason(LinphoneChatMessage* msg) { } +/** + * Set the path to the file to read from or write to during the file transfer. + * @param[in] msg LinphoneChatMessage object + * @param[in] filepath The path to the file to use for the file transfer. + */ +void linphone_chat_message_set_file_transfer_filepath(LinphoneChatMessage *msg, const char *filepath) { + if (msg->file_transfer_filepath != NULL) { + ms_free(msg->file_transfer_filepath); + } + msg->file_transfer_filepath = ms_strdup(filepath); +} + /** * Create a message attached to a dedicated chat room with a particular content. Use #linphone_chat_room_send_message2 to initiate the transfer @@ -1385,15 +1404,6 @@ LinphoneChatMessage* linphone_chat_room_create_file_transfer_message(LinphoneCha return msg; } -LinphoneChatMessage * linphone_chat_room_create_file_transfer_message_from_file(LinphoneChatRoom *cr, LinphoneContent *initial_content, const char *filepath) { - LinphoneChatMessage *msg = linphone_chat_room_create_file_transfer_message(cr, initial_content); - if (msg->file_transfer_filepath != NULL) { - ms_free(msg->file_transfer_filepath); - } - msg->file_transfer_filepath = ms_strdup(filepath); - return msg; -} - /** * @} */ diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index f3fbe22cb..9ed211fae 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1450,6 +1450,7 @@ LINPHONE_PUBLIC bool_t linphone_chat_message_is_outgoing(LinphoneChatMessage* me LINPHONE_PUBLIC unsigned int linphone_chat_message_get_storage_id(LinphoneChatMessage* message); LINPHONE_PUBLIC LinphoneReason linphone_chat_message_get_reason(LinphoneChatMessage* msg); LINPHONE_PUBLIC const LinphoneErrorInfo *linphone_chat_message_get_error_info(const LinphoneChatMessage *msg); +LINPHONE_PUBLIC void linphone_chat_message_set_file_transfer_filepath(LinphoneChatMessage *msg, const char *filepath); /** * @} */ From 63ec504cfc66855db8eec15ebb535a25adfd43a6 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 21 Oct 2014 14:19:18 +0200 Subject: [PATCH 040/249] Add accessor to get the file transfer filepath. --- coreapi/chat.c | 9 +++++++++ coreapi/linphonecore.h | 1 + 2 files changed, 10 insertions(+) diff --git a/coreapi/chat.c b/coreapi/chat.c index 11c63af6d..45e1fc1ce 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -1381,6 +1381,15 @@ void linphone_chat_message_set_file_transfer_filepath(LinphoneChatMessage *msg, msg->file_transfer_filepath = ms_strdup(filepath); } +/** + * Get the path to the file to read from or write to during the file transfer. + * @param[in] msg LinphoneChatMessage object + * @return The path to the file to use for the file transfer. + */ +const char * linphone_chat_message_get_file_transfer_filepath(LinphoneChatMessage *msg) { + return msg->file_transfer_filepath; +} + /** * Create a message attached to a dedicated chat room with a particular content. Use #linphone_chat_room_send_message2 to initiate the transfer diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 9ed211fae..a9ca88ddf 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1451,6 +1451,7 @@ LINPHONE_PUBLIC unsigned int linphone_chat_message_get_storage_id(LinphoneChatMe LINPHONE_PUBLIC LinphoneReason linphone_chat_message_get_reason(LinphoneChatMessage* msg); LINPHONE_PUBLIC const LinphoneErrorInfo *linphone_chat_message_get_error_info(const LinphoneChatMessage *msg); LINPHONE_PUBLIC void linphone_chat_message_set_file_transfer_filepath(LinphoneChatMessage *msg, const char *filepath); +LINPHONE_PUBLIC const char * linphone_chat_message_get_file_transfer_filepath(LinphoneChatMessage *msg); /** * @} */ From 3cbddce46dda9c77b9d4470465bd0e34e5cc211e Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 21 Oct 2014 14:35:30 +0200 Subject: [PATCH 041/249] Add missing declaration of linphone_core_set_avpf_rr_interval(). --- coreapi/linphonecore.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index a9ca88ddf..85b7109a9 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -3044,6 +3044,8 @@ LINPHONE_PUBLIC void linphone_core_set_avpf_mode(LinphoneCore *lc, LinphoneAVPFM LINPHONE_PUBLIC LinphoneAVPFMode linphone_core_get_avpf_mode(const LinphoneCore *lc); +LINPHONE_PUBLIC void linphone_core_set_avpf_rr_interval(LinphoneCore *lc, int interval); + LINPHONE_PUBLIC int linphone_core_get_avpf_rr_interval(const LinphoneCore *lc); #ifdef __cplusplus From 2a4b0857d84b86b604896facec548476a7802d61 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 21 Oct 2014 14:55:27 +0200 Subject: [PATCH 042/249] Remove declaration of linphone_chat_room_create_file_transfer_message_from_file(). --- coreapi/linphonecore.h | 9 --------- 1 file changed, 9 deletions(-) diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 85b7109a9..ec4ab8d1d 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1360,15 +1360,6 @@ LINPHONE_PUBLIC void linphone_chat_room_set_user_data(LinphoneChatRoom *cr, void */ LINPHONE_PUBLIC LinphoneChatMessage* linphone_chat_room_create_file_transfer_message(LinphoneChatRoom *cr, LinphoneContent* initial_content); -/** - * Create a message with an attached file that will be read from the given filepath. - * @param[in] cr LinphoneChatRoom object - * @param[in] initial_content LinphoneContent object describing the file to be transfered. - * @param[in] filepath The path to the file to be sent. - * @return A new LinphoneChatMessage object. - */ -LINPHONE_PUBLIC LinphoneChatMessage * linphone_chat_room_create_file_transfer_message_from_file(LinphoneChatRoom *cr, LinphoneContent *initial_content, const char *filepath); - LINPHONE_PUBLIC const LinphoneAddress* linphone_chat_room_get_peer_address(LinphoneChatRoom *cr); LINPHONE_PUBLIC void linphone_chat_room_send_message(LinphoneChatRoom *cr, const char *msg); LINPHONE_PUBLIC void linphone_chat_room_send_message2(LinphoneChatRoom *cr, LinphoneChatMessage* msg,LinphoneChatMessageStateChangedCb status_cb,void* ud); From b156e392075653fda1cb475a9c319f547eebe39f Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 21 Oct 2014 15:20:30 +0200 Subject: [PATCH 043/249] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index d2ed7e161..2564422eb 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit d2ed7e1615a040eb0596e80f8f5b0fcb62a2d5ad +Subproject commit 2564422ebf4dfe128ddaf922bfae25255a14f377 From b7a8975d4f3c6950160ef11f81ea1ec61aa26843 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 21 Oct 2014 15:22:12 +0200 Subject: [PATCH 044/249] Add localplayer to the Windows Phone 8 build. --- build/wp8/LibLinphone.vcxproj | 1 + 1 file changed, 1 insertion(+) diff --git a/build/wp8/LibLinphone.vcxproj b/build/wp8/LibLinphone.vcxproj index f1bdecc0d..876c93d2a 100644 --- a/build/wp8/LibLinphone.vcxproj +++ b/build/wp8/LibLinphone.vcxproj @@ -121,6 +121,7 @@ + From f7640d9e455fa9e00d5f570c9c5ee14c5883631e Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 22 Oct 2014 08:54:15 +0200 Subject: [PATCH 045/249] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 2564422eb..edb8e3a17 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 2564422ebf4dfe128ddaf922bfae25255a14f377 +Subproject commit edb8e3a1732e1e94b750d546b21be2c968bca0cc From 61419585b47b92d77d8a264472827f6c9bc045b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 22 Oct 2014 11:59:32 +0200 Subject: [PATCH 046/249] Test that LinphonePlayer has been instanciated while destroying --- coreapi/linphonecore_jni.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 8b7ea4039..bcaaa3de0 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -5301,6 +5301,10 @@ extern "C" void Java_org_linphone_core_LinphonePlayerImpl_close(JNIEnv *env, job extern "C" void Java_org_linphone_core_LinphonePlayerImpl_destroy(JNIEnv *env, jobject jobj, jlong playerPtr) { LinphonePlayer *player = (LinphonePlayer *)playerPtr; + if(player == NULL) { + ms_error("Cannot destroy the LinphonePlayerImpl object. Native pointer is NULL"); + return; + } if(player->user_data) { delete (LinphonePlayerData *)player->user_data; } From a742a5aa9b9f9adb4d9fc46574f0836da8de0b90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 22 Oct 2014 14:07:39 +0200 Subject: [PATCH 047/249] Fix compilation on Android --- coreapi/linphonecore_jni.cc | 3 ++- mediastreamer2 | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index bcaaa3de0..42f9848b2 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -812,9 +812,10 @@ public: env->CallVoidMethod(lcData->listener, lcData->configuringStateId, lcData->core, env->CallStaticObjectMethod(lcData->configuringStateClass,lcData->configuringStateFromIntId,(jint)status), message ? env->NewStringUTF(message) : NULL); } - static void fileTransferProgressIndication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t progress) { + static void fileTransferProgressIndication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total) { JNIEnv *env = 0; jobject jmsg; + size_t progress = (offset * 100) / total; jint result = jvm->AttachCurrentThread(&env,NULL); if (result != 0) { ms_error("cannot attach VM"); diff --git a/mediastreamer2 b/mediastreamer2 index edb8e3a17..d051490ff 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit edb8e3a1732e1e94b750d546b21be2c968bca0cc +Subproject commit d051490ff070aece407149baa9a477d97031c1c6 From 367109341e17360979581efa7905ebff9d6e3372 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 22 Oct 2014 17:22:49 +0200 Subject: [PATCH 048/249] Generate enums with the good values in lp_gen_wrappers. --- tools/generator.cc | 7 +++---- tools/genwrappers.cc | 8 ++++++-- tools/software-desc.hh | 6 +++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/tools/generator.cc b/tools/generator.cc index 82f50c660..2b8ab0a39 100644 --- a/tools/generator.cc +++ b/tools/generator.cc @@ -52,7 +52,7 @@ void CplusplusGenerator::generate(Project *proj){ void CplusplusGenerator::writeEnumMember(ConstField *cf, bool isLast){ writeTabs(1); - mOutfile<getName(); + mOutfile<getName()<<"="<getValue(); if (!isLast) mOutfile<<","; if (!cf->getHelp().empty()) mOutfile<<"\t/**< "<getHelp()<<" */"; mOutfile< members=klass->getConstFields(); list::iterator it; string enum_name=getEnumName(klass); - int value=0; filename<getName())<<"/"<getHelp().empty()){ writeTabs(1); @@ -254,7 +253,7 @@ void JavascriptGenerator::writeEnum(Class *klass){ mOutfile<<"*/"<getName().substr(prefix_size,string::npos)<<" : "<getName().substr(prefix_size,string::npos)<<" : "<getValue(); if (++it!=members.end()) mOutfile<<","; mOutfile< #include #include +#include #include #include #include @@ -335,11 +336,14 @@ static void parseEnum(Project *proj, XmlNode node){ klass->setHelp(node.getChild("detaileddescription").getChild("para").getText()); list enumValues=node.getChildren("enumvalue"); list::iterator it; + int value = 0; for (it=enumValues.begin();it!=enumValues.end();++it){ - ConstField *cf=new ConstField(Type::getType("int"),(*it).getChild("name").getText()); + XmlNode initializer = (*it).getChild("initializer"); + if (initializer) value=atoi(initializer.getText().c_str()); + ConstField *cf=new ConstField(Type::getType("int"),(*it).getChild("name").getText(),value); cf->setHelp((*it).getChild("detaileddescription").getChild("para").getText()); klass->addConstField(cf); - + value++; } } diff --git a/tools/software-desc.hh b/tools/software-desc.hh index 2d454e502..575f52fb0 100644 --- a/tools/software-desc.hh +++ b/tools/software-desc.hh @@ -294,7 +294,7 @@ private: class ConstField{ public: - ConstField(Type *type, const string &name, const string &value="") : mType(type), mName(name), mValue(value){ + ConstField(Type *type, const string &name, int value) : mType(type), mName(name), mValue(value){ } void setHelp(const string & help){ mHelp=help; @@ -308,7 +308,7 @@ public: Type *getType()const{ return mType; } - const string &getValue()const{ + int getValue()const{ return mValue; } static string getCommonPrefix(list fields){ @@ -338,7 +338,7 @@ public: private: Type *mType; string mName; - string mValue; + int mValue; string mHelp; }; From 615ceb278fd6df29be0cf1d5b92d4e5c711695d2 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 22 Oct 2014 17:28:40 +0200 Subject: [PATCH 049/249] Fix compilation of lp_gen_wrappers. --- tools/genwrappers.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/genwrappers.cc b/tools/genwrappers.cc index 6f5178367..7c17a2554 100644 --- a/tools/genwrappers.cc +++ b/tools/genwrappers.cc @@ -338,8 +338,8 @@ static void parseEnum(Project *proj, XmlNode node){ list::iterator it; int value = 0; for (it=enumValues.begin();it!=enumValues.end();++it){ - XmlNode initializer = (*it).getChild("initializer"); - if (initializer) value=atoi(initializer.getText().c_str()); + string initializer = (*it).getChild("initializer").getText(); + if (initializer!="") value=atoi(initializer.c_str()); ConstField *cf=new ConstField(Type::getType("int"),(*it).getChild("name").getText(),value); cf->setHelp((*it).getChild("detaileddescription").getChild("para").getText()); klass->addConstField(cf); From 830d990771be4e9e19230f7a58422a952275974d Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 22 Oct 2014 17:47:36 +0200 Subject: [PATCH 050/249] Fix parsing of enum values in the lp_gen_wrappers. --- tools/genwrappers.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/genwrappers.cc b/tools/genwrappers.cc index 7c17a2554..5f942002f 100644 --- a/tools/genwrappers.cc +++ b/tools/genwrappers.cc @@ -339,7 +339,7 @@ static void parseEnum(Project *proj, XmlNode node){ int value = 0; for (it=enumValues.begin();it!=enumValues.end();++it){ string initializer = (*it).getChild("initializer").getText(); - if (initializer!="") value=atoi(initializer.c_str()); + if (initializer.length() > 1) value=atoi(initializer.substr(1).c_str()); ConstField *cf=new ConstField(Type::getType("int"),(*it).getChild("name").getText(),value); cf->setHelp((*it).getChild("detaileddescription").getChild("para").getText()); klass->addConstField(cf); From bc69b2796decdafb3b1e344a60ca0a088e7c3c65 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 23 Oct 2014 09:49:35 +0200 Subject: [PATCH 051/249] Improve parsing of enum values in lp_gen_wrappers to support octal and hexadecimal values. --- tools/genwrappers.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tools/genwrappers.cc b/tools/genwrappers.cc index 5f942002f..26ad7acc1 100644 --- a/tools/genwrappers.cc +++ b/tools/genwrappers.cc @@ -24,7 +24,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include #include -#include #include #include #include @@ -339,7 +338,19 @@ static void parseEnum(Project *proj, XmlNode node){ int value = 0; for (it=enumValues.begin();it!=enumValues.end();++it){ string initializer = (*it).getChild("initializer").getText(); - if (initializer.length() > 1) value=atoi(initializer.substr(1).c_str()); + if ((initializer.length() > 1) && (initializer.at(0) == '=')) { + std::stringstream ss; + if ((initializer.length() > 2) && (initializer.at(1) == '0')) { + if ((initializer.length() > 3) && (initializer.at(2) == 'x')) { + ss << std::hex << initializer.substr(3); + } else { + ss << std::oct << initializer.substr(2); + } + } else { + ss << std::dec << initializer.substr(1); + } + ss >> value; + } ConstField *cf=new ConstField(Type::getType("int"),(*it).getChild("name").getText(),value); cf->setHelp((*it).getChild("detaileddescription").getChild("para").getText()); klass->addConstField(cf); From 672b8336659c1b03cb185e39bbacc522c8636494 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 23 Oct 2014 10:53:11 +0200 Subject: [PATCH 052/249] Ignore macos bundle geenrated files --- .gitignore | 3 +++ README.macos | 22 +++++++++++----------- java/common/org/.DS_Store | Bin 6148 -> 0 bytes java/common/org/linphone/.DS_Store | Bin 6148 -> 0 bytes mediastreamer2 | 2 +- 5 files changed, 15 insertions(+), 12 deletions(-) delete mode 100644 java/common/org/.DS_Store delete mode 100644 java/common/org/linphone/.DS_Store diff --git a/.gitignore b/.gitignore index 6a94843fa..d5a842ef1 100644 --- a/.gitignore +++ b/.gitignore @@ -73,3 +73,6 @@ tools/xml2lpc_test coreapi/help/filetransfer tester/receive_file.dump tester/tmp.db +.DS_Store +Linphone.app +*.dmg diff --git a/README.macos b/README.macos index e3ffb72d5..722bdc939 100644 --- a/README.macos +++ b/README.macos @@ -27,7 +27,7 @@ You need: $ sudo port install hicolor-icon-theme The next pieces need to be compiled manually. To ensure compatibility with multiple mac os version it is recommended to do: - $ export MACOSX_DEPLOYMENT_TARGET=10.6 + $ export MACOSX_DEPLOYMENT_TARGET=10.6 $ export CFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" $ export OBJCFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" $ export CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" @@ -41,7 +41,7 @@ The next pieces need to be compiled manually. To ensure compatibility with multi $ git clone -b linphone git://git.linphone.org/antlr3.git $ cd antlr3/runtime/C $ ./autogen.sh - $ ./configure --disable-static --prefix=/opt/local && make + $ ./configure --disable-static --prefix=/opt/local && make $ sudo make install - Install polarssl (encryption library used by belle-sip) @@ -65,7 +65,7 @@ The next pieces need to be compiled manually. To ensure compatibility with multi $ sudo port install cmake $ git clone https://github.com/wernerd/ZRTPCPP.git $ cd ZRTPCPP - $ cmake -DCORE_LIB=true -DSDES=false CMAKE_INSTALL_NAME_DIR=/usr/local/lib/ -DCMAKE_C_FLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" -DCMAKE_CXX_FLAGS="-arch i386 -arch x86_64 --stdlib=libstdc++ -std=c++11 -lstdc++ -mmacosx-version-min=10.5" -DCMAKE_C_COMPILER=`xcrun --find clang` -DCMAKE_CXX_COMPILER=`xcrun --find clang` . + $ cmake -DCORE_LIB=true -DSDES=false CMAKE_INSTALL_NAME_DIR=/usr/local/lib/ -DCMAKE_C_FLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" -DCMAKE_CXX_FLAGS="-arch i386 -arch x86_64 --stdlib=libstdc++ -std=c++11 -lstdc++ -mmacosx-version-min=10.5" -DCMAKE_C_COMPILER=`xcrun --find clang` -DCMAKE_CXX_COMPILER=`xcrun --find clang` . $ sudo make install @@ -87,22 +87,22 @@ $ sudo make install If you got the source code from git, run ./autogen.sh first. Then or otherwise, do: - + $ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --with-readline=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict && make Install to /opt/local - $ sudo make install + $ sudo make install Done. If you want to generate a portable bundle, then install gtk-mac-bundler. Use git: - $ git clone https://github.com/jralls/gtk-mac-bundler.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 + $ sudo touch /opt/local/lib/charset.alias The bundler file in build/macos/linphone.bundle expects some plugins to be installed in /opt/local/lib/mediastreamer/plugins . If you don't need plugins, remove or comment out this line from the bundler file: @@ -121,13 +121,13 @@ For a better appearance, you can install the gtk-quartz-engine (a gtk theme) tha $ git clone https://github.com/jralls/gtk-quartz-engine.git $ cd gtk-quartz-engine - $ autoreconf -i - $ ./configure --prefix=/opt/local CFLAGS="$CFLAGS -Wno-error" && make + $ autoreconf -i + $ ./configure --prefix=/opt/local CFLAGS="$CFLAGS -Wno-error" && make $ sudo make install Generate a new bundle to have it included. -libiconv hack +libiconv hack ************* The Makefile.am rules used to generate the bundle fetch a libiconv.2.dylib from a linphone download page. @@ -141,6 +141,6 @@ In case this library needs to generated, here are the commands: The resulted library can be found in /tmp/opt/local/lib - + diff --git a/java/common/org/.DS_Store b/java/common/org/.DS_Store deleted file mode 100644 index 2d8977d32c09ad774315cd4189e97f8691d52aef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJ8r`;3?*9+2D*6cs4L_KLXe&y7YI@ZXaJ)wP;~dybMW_g#>`1v|D*?$L&+shaZ zmjD(E0BhnBhzLxB3Jj`di=jbBykuTYTmpkGn$3si&6*vG`t3Nsc)Dl}RF zSPoYIU*K2z|22s#DnJG9N&)S5``s2#%G%mI&T4IeAK;er12@CmDHyyQ1HBw$VdePQ clOnI!9Q!qK33NK*P6zU5z;vNef&W(E7lsNImH+?% diff --git a/java/common/org/linphone/.DS_Store b/java/common/org/linphone/.DS_Store deleted file mode 100644 index f0988f2021b965fa11efdf8712fc62f3d2a44de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~J&MCX427RIE&|)QOgYUSAU7C7a)MkS*I1iPt)Ctw2uyWN*^)X&uu{pNC7Dz1*Cu! zSdapFjITcz^h|mbDIf)wp@4rM3f)FOW6aI$5DvP7ju? z7GsFlqn#{yT}`&m-VV#*!}8ANQw+^|JFGCFSq&&i0Vyz3VAb={&;JAculax0qEre< zfj3jYhW&BB<4fh)`to{SKV{X|jZVhp3{O7+O#CR`(8IW2d_mS^>tuzdAAyiTK??k< F0>7ec60QIM diff --git a/mediastreamer2 b/mediastreamer2 index d051490ff..055690a69 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit d051490ff070aece407149baa9a477d97031c1c6 +Subproject commit 055690a69eea4758f7aa265862992aca1f2cb982 From d60890107afe62be1207e09ae6c8e98e3b09733f Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 23 Oct 2014 11:20:43 +0200 Subject: [PATCH 053/249] Add API to reset the log collection. --- coreapi/linphonecore.c | 13 +++++++++++++ coreapi/linphonecore.h | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index c85be1c1a..22e53b7a0 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -516,6 +516,19 @@ char * linphone_core_compress_log_collection(LinphoneCore *core) { return ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", COMPRESSED_LOG_COLLECTION_FILENAME); } +void linphone_core_reset_log_collection(LinphoneCore *core) { + char *filename; + ortp_mutex_lock(&liblinphone_log_collection_mutex); + delete_log_collection_upload_file(); + filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone1.log"); + unlink(filename); + ms_free(filename); + filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone2.log"); + unlink(filename); + ms_free(filename); + ortp_mutex_unlock(&liblinphone_log_collection_mutex); +} + /** * Enable logs in supplied FILE*. * diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index ec4ab8d1d..c35b7187a 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1817,6 +1817,13 @@ LINPHONE_PUBLIC void linphone_core_upload_log_collection(LinphoneCore *core); */ LINPHONE_PUBLIC char * linphone_core_compress_log_collection(LinphoneCore *core); +/** + * Reset the log collection by removing the log files. + * @ingroup misc + * @param[in] core LinphoneCore object + */ +LINPHONE_PUBLIC void linphone_core_reset_log_collection(LinphoneCore *core); + /** * Define a log handler. * From 891010b78af4fe2484c7d1787e2659f7dee14e45 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 23 Oct 2014 20:56:21 +0200 Subject: [PATCH 054/249] android/aac: aac needs either hardware AEC or 16kHz sample rate --- coreapi/linphonecore.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 22e53b7a0..cac592107 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1031,8 +1031,10 @@ static MSList *codec_append_if_new(MSList *l, PayloadType *pt){ } #if defined(ANDROID) -static int is_aac_eld_payload(const void* a, const void* b) { - PayloadType *pt = (PayloadType*)a; +static int is_aac_eld_not_16k_payload(const void* _pt, const void* unused) { + PayloadType *pt = (PayloadType*)_pt; + if (pt->clock_rate == 16000) + return 1; return strncmp(pt->mime_type, "mpeg4-generic", strlen("mpeg4-generic")); } #endif @@ -1053,11 +1055,11 @@ static void codecs_config_read(LinphoneCore *lc) audio_codecs=add_missing_codecs(lc,SalAudio,audio_codecs); #if defined(ANDROID) - /* AAC-ELD requires hardware AEC */ + /* AAC-ELD requires hardware AEC or 16kHz sample rate */ if (lc->sound_conf.capt_sndcard && !(ms_snd_card_get_capabilities(lc->sound_conf.capt_sndcard) & MS_SND_CARD_CAP_BUILTIN_ECHO_CANCELLER)) { /* Remove AAC-ELD */ - audio_codecs = ms_list_remove_custom(audio_codecs, is_aac_eld_payload, NULL); + audio_codecs = ms_list_remove_custom(audio_codecs, is_aac_eld_not_16k_payload, NULL); ms_message("Disable AAC-ELD (needs hardware AEC)"); } #endif From 0c124c486e84ae1ebe194f410e440260e8477eba Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Fri, 24 Oct 2014 14:23:17 +0200 Subject: [PATCH 055/249] Fix logs disable when linphone_core_enable_log_collection is called with FALSE at app start --- coreapi/linphonecore.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index cac592107..03dd18c7f 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -173,7 +173,7 @@ static void linphone_core_log_collection_handler(OrtpLogLevel level, const char char *log_filename2; FILE *log_file; struct timeval tp; - struct tm *lt; + struct tm *lt; time_t tt; struct stat statbuf; @@ -251,6 +251,11 @@ void linphone_core_set_log_collection_upload_server_url(LinphoneCore *core, cons } void linphone_core_enable_log_collection(bool_t enable) { + /* at first call of this function, set liblinphone_log_func to the current + * ortp log function */ + if( liblinphone_log_func == NULL ){ + liblinphone_log_func = ortp_logv_out; + } if ((enable == TRUE) && (liblinphone_log_collection_enabled == FALSE)) { liblinphone_log_collection_enabled = TRUE; ortp_mutex_init(&liblinphone_log_collection_mutex, NULL); From 367db94f2d3f96a6123330e9c21c71b670d1898a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 24 Oct 2014 16:32:59 +0200 Subject: [PATCH 056/249] Fix crash when playing a file with call player once again --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 055690a69..0941fe191 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 055690a69eea4758f7aa265862992aca1f2cb982 +Subproject commit 0941fe191ce6e80c34c33d6d66a19894e7e22cd8 From 74ac3e68da4bfb6f29854d99ba8c38cacd789640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 24 Oct 2014 16:50:41 +0200 Subject: [PATCH 057/249] Fix call_with_mkv_file_player() tester --- tester/call_tester.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 042a4ba61..62b4d55b5 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -1955,7 +1955,9 @@ static void call_with_mkv_file_player(void) { char hellowav[256]; char *recordpath; double similar; - + + ortp_set_log_level_mask(ORTP_ERROR | ORTP_FATAL | ORTP_MESSAGE | ORTP_WARNING); + if (!is_format_supported(marie->lc,"mkv")){ ms_warning("Test skipped, no mkv support."); goto end; @@ -1968,8 +1970,8 @@ static void call_with_mkv_file_player(void) { snprintf(hellomkv,sizeof(hellomkv), "%s/sounds/hello8000.mkv", liblinphone_tester_file_prefix); /*caller uses files instead of soundcard in order to avoid mixing soundcard input with file played using call's player*/ - linphone_core_use_files(pauline->lc,TRUE); - linphone_core_set_play_file(pauline->lc,NULL); + linphone_core_use_files(marie->lc,TRUE); + linphone_core_set_play_file(marie->lc,NULL); /*callee is recording and plays file*/ linphone_core_use_files(pauline->lc,TRUE); linphone_core_set_play_file(pauline->lc,hellowav); /*just to send something but we are not testing what is sent by pauline*/ @@ -1982,8 +1984,9 @@ static void call_with_mkv_file_player(void) { if (player){ CU_ASSERT_TRUE(linphone_player_open(player,hellomkv,on_eof,marie)==0); CU_ASSERT_TRUE(linphone_player_start(player)==0); + CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&marie->stat.number_of_player_eof,1,12000)); + linphone_player_close(player); } - CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&marie->stat.number_of_player_eof,1,12000)); /*just to sleep*/ linphone_core_terminate_all_calls(marie->lc); From 4f23779ab6bed7ef0fa50fab84e7c57ba1835523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 24 Oct 2014 17:32:46 +0200 Subject: [PATCH 058/249] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 0941fe191..1f1dc7d66 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 0941fe191ce6e80c34c33d6d66a19894e7e22cd8 +Subproject commit 1f1dc7d66dfc8c0fe06c56bbdbebf99795e68a3a From 91d660562f50925ecdee157a740864cd119cd998 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 25 Oct 2014 15:23:34 +0200 Subject: [PATCH 059/249] fixes video quality problem at high definition and bitrate - key frame spoofing because of loss reported very fast resulting in target bitrate largely exceeded - rate control algorithm taking decision too often due to loss rate estimator counting packets only (not time) --- coreapi/linphonecore.c | 2 +- mediastreamer2 | 2 +- oRTP | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 03dd18c7f..d8ee0ef0b 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1218,7 +1218,7 @@ void linphone_core_set_adaptive_rate_algorithm(LinphoneCore *lc, const char* alg * See linphone_core_set_adaptive_rate_algorithm(). **/ const char * linphone_core_get_adaptive_rate_algorithm(const LinphoneCore *lc){ - return lp_config_get_string(lc->config, "net", "adaptive_rate_algorithm", "Simple"); + return lp_config_get_string(lc->config, "net", "adaptive_rate_algorithm", "Stateful"); } bool_t linphone_core_rtcp_enabled(const LinphoneCore *lc){ diff --git a/mediastreamer2 b/mediastreamer2 index 1f1dc7d66..674ce09c1 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 1f1dc7d66dfc8c0fe06c56bbdbebf99795e68a3a +Subproject commit 674ce09c17014bcf62e89bbddee624f74eee88d1 diff --git a/oRTP b/oRTP index 4077e127e..f1e77dd83 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 4077e127ee731b0797a9303d55f0d61bcb947bf8 +Subproject commit f1e77dd83f697954e78e024e6c837f32fc70ba5f From ea9952ee899235e44a0d2bda761abd3c2c8e3dec Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 25 Oct 2014 15:26:33 +0200 Subject: [PATCH 060/249] revert change (commited by mistake) --- coreapi/linphonecore.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index d8ee0ef0b..03dd18c7f 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1218,7 +1218,7 @@ void linphone_core_set_adaptive_rate_algorithm(LinphoneCore *lc, const char* alg * See linphone_core_set_adaptive_rate_algorithm(). **/ const char * linphone_core_get_adaptive_rate_algorithm(const LinphoneCore *lc){ - return lp_config_get_string(lc->config, "net", "adaptive_rate_algorithm", "Stateful"); + return lp_config_get_string(lc->config, "net", "adaptive_rate_algorithm", "Simple"); } bool_t linphone_core_rtcp_enabled(const LinphoneCore *lc){ From 7c3d6206505133a0ac1546edda576fa5a0dcab94 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 27 Oct 2014 11:56:24 +0100 Subject: [PATCH 061/249] Update README.macos: use Markdown and add HomeBrew installation --- README.macos | 146 ---------------------------------- README.macos.md | 202 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 202 insertions(+), 146 deletions(-) delete mode 100644 README.macos create mode 100644 README.macos.md diff --git a/README.macos b/README.macos deleted file mode 100644 index 722bdc939..000000000 --- a/README.macos +++ /dev/null @@ -1,146 +0,0 @@ -********************************** -* Compiling linphone on macos X * -********************************** - -You need: - - Xcode (download from apple or using appstore application) - - Java SE - - Macports: http://www.macports.org/ - Download and install macports using its user friendly installer. - -- In order to enable generation of bundle for multiple macos version and 32 bit processors, it is recommended to: - 1) edit /opt/local/etc/macports/macports.conf to add the following line: - macosx_deployment_target 10.6 - 2) edit /opt/local/etc/macports/variants.conf to add the following line: - +universal - -- Install build time dependencies - $ sudo port install automake autoconf libtool intltool wget cunit - -- Install some linphone dependencies with macports - $ sudo port install antlr3 speex libvpx readline sqlite3 libsoup openldap libupnp - $ sudo port install ffmpeg-devel -gpl2 - -- Install gtk. It is recommended to use the quartz backend for better integration. - $ sudo port install gtk2 +quartz +no_x11 - $ sudo port install gtk-osx-application -python27 - $ sudo port install hicolor-icon-theme - -The next pieces need to be compiled manually. To ensure compatibility with multiple mac os version it is recommended to do: - $ export MACOSX_DEPLOYMENT_TARGET=10.6 - $ export CFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" - $ export OBJCFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" - $ export CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" - $ export LDFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5 -Wl,-headerpad_max_install_names -Wl,-read_only_relocs -Wl,suppress" - -- (Optional) libvpx-1.2 has a bug on macos resulting in ugly video. It is recommended to upgrade it manually to 1.3 from source. - The libvpx build isn't able to produce dual architecture files. To workaround this, configure libvpx twice and use lipo to create a dual architecture - libvpx.a . - -- Install libantlr3c (library used by belle-sip for parsing) - $ git clone -b linphone git://git.linphone.org/antlr3.git - $ cd antlr3/runtime/C - $ ./autogen.sh - $ ./configure --disable-static --prefix=/opt/local && make - $ sudo make install - -- Install polarssl (encryption library used by belle-sip) - $ git clone git://git.linphone.org/polarssl.git -b linphone - $ cd polarssl - $ ./autogen.sh && ./configure --prefix=/opt/local && make - $ sudo make install - -- Install belle-sip (sip stack) - $ git clone git://git.linphone.org/belle-sip.git - $ cd belle-sip - $ ./autogen.sh && ./configure --prefix=/opt/local && make - $ sudo make install - -- Install srtp (optional) for call encryption - $ git clone git://git.linphone.org/srtp.git - $ cd srtp && autoconf && ./configure --prefix=/opt/local && make libsrtp.a - $ sudo make install - -- Install zrtpcpp (optional), for unbreakable call encryption - $ sudo port install cmake - $ git clone https://github.com/wernerd/ZRTPCPP.git - $ cd ZRTPCPP - $ cmake -DCORE_LIB=true -DSDES=false CMAKE_INSTALL_NAME_DIR=/usr/local/lib/ -DCMAKE_C_FLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" -DCMAKE_CXX_FLAGS="-arch i386 -arch x86_64 --stdlib=libstdc++ -std=c++11 -lstdc++ -mmacosx-version-min=10.5" -DCMAKE_C_COMPILER=`xcrun --find clang` -DCMAKE_CXX_COMPILER=`xcrun --find clang` . -$ sudo make install - - -- Install gsm codec (optional) - $ git clone git://git.linphone.org/gsm.git - $ cd gsm - $ make CCFLAGS="$CFLAGS -c -O2 -DNeedFunctionPrototypes=1" - $ sudo make install INSTALL_ROOT=/opt/local GSM_INSTALL_INC=/opt/local/include - -- Compile and install the tunnel library (optional, proprietary extension only) - - 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: - - $ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --with-readline=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict && make - - Install to /opt/local - - $ sudo make install - - Done. - -If you want to generate a portable bundle, then install gtk-mac-bundler. -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 /opt/local/lib/charset.alias - -The bundler file in build/macos/linphone.bundle expects some plugins to be installed in /opt/local/lib/mediastreamer/plugins . -If you don't need plugins, remove or comment out this line from the bundler file: - - ${prefix:ms2plugins}/lib/mediastreamer/plugins/*.*.so - - -Then run, inside linphone source tree: - Run configure as told before but with "--enable-relativeprefix" appended. - $ make - $ make bundle - -The resulting bundle is located in linphone build directory, together with a zipped version. - -For a better appearance, you can install the gtk-quartz-engine (a gtk theme) that make gtk application more similar to other mac applications (but not perfect). - - $ git clone https://github.com/jralls/gtk-quartz-engine.git - $ cd gtk-quartz-engine - $ autoreconf -i - $ ./configure --prefix=/opt/local CFLAGS="$CFLAGS -Wno-error" && make - $ sudo make install - -Generate a new bundle to have it included. - -libiconv hack -************* - -The Makefile.am rules used to generate the bundle fetch a libiconv.2.dylib from a linphone download page. -This library adds some additional symbols so that dependencies requiring the iconv from /usr/lib and the ones requiring from the bundle are both satisfied. -In case this library needs to generated, here are the commands: - $ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz - $ cd libiconv-1.14 - $ patch -p1 < ../linphone/build/macos/libiconv-macos.patch - $ ./configure --prefix=/opt/local --disable-static 'CFLAGS=-arch i386 -arch x86_64 -mmacosx-version-min=10.5' 'LDFLAGS=-arch i386 -arch x86_64 -mmacosx-version-min=10.5' CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" && make - $ make install DESTDIR=/tmp - -The resulted library can be found in /tmp/opt/local/lib - - - - diff --git a/README.macos.md b/README.macos.md new file mode 100644 index 000000000..8b3ecc0cb --- /dev/null +++ b/README.macos.md @@ -0,0 +1,202 @@ +# Compiling Linphone on MacOS X + +## Dependencies + +* Xcode (download from apple or using appstore application) +* Java SE +* [HomeBrew](http://brew.sh) or [Macports](http://www.macports.org/). + +### Multiple MacOS version support + +In order to enable generation of bundle for multiple MacOS version and 32 bit processors, it is recommended to: + +1. Edit `/opt/local/etc/macports/macports.conf` to add the following line: + + > macosx_deployment_target 10.6 + +2. Edit `/opt/local/etc/macports/variants.conf` to add the following line: + + > +universal + +### Build time dependencies + +#### Using MacPorts + +* Linphone core dependencies + ```sh + sudo port install automake autoconf libtool intltool wget cunit \ + antlr3 speex libvpx readline sqlite3 libsoup openldap libupnp \ + ffmpeg-devel -gpl2 + ``` + +* UI dependencies: install `GTK`. It is recommended to use the `quartz` backend for better integration. + + ```sh + sudo port install gtk2 +quartz +no_x11 + sudo port install gtk-osx-application -python27 + sudo port install hicolor-icon-theme + ``` + + #### Using HomeBrew + + ```sh +brew install automake intltool libtool pkg-config coreutils \ +yasm nasm wget imagemagick gettext gtk+ speex ffmpeg pygtk +brew link gettext --force + +# Yet gtk-mac-integration is not available in main repository +wget https://raw.githubusercontent.com/guitorri/homebrew/794cb6f68dd92cffc60da86fc4b900bc9ce571ef/Library/Formula/gtk-mac-integration.rb +sudo mv gtk-mac-integration.rb /usr/local/Library/Formula/ +brew install gtk-mac-integration + ``` + + ### Building Linphone + +The next pieces need to be compiled manually. + +* To ensure compatibility with multiple MacOS versions it is recommended to do: + + ```sh + export MACOSX_DEPLOYMENT_TARGET=10.6 + export CFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" + export OBJCFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" + export CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" + export LDFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5 -Wl,-headerpad_max_install_names -Wl,-read_only_relocs -Wl,suppress" + ``` + +* Install libantlr3c (library used by belle-sip for parsing) + + ```sh + git clone -b linphone git://git.linphone.org/antlr3.git + cd antlr3/runtime/C + ./autogen.sh + ./configure --disable-static --prefix=/opt/local && make + sudo make install + ``` + +* Install polarssl (encryption library used by belle-sip) + ```sh + git clone git://git.linphone.org/polarssl.git -b linphone + cd polarssl + ./autogen.sh && ./configure --prefix=/opt/local && make + sudo make install + ``` + +* Install belle-sip (sip stack) + + ```sh + git clone git://git.linphone.org/belle-sip.git + cd belle-sip + ./autogen.sh && ./configure --prefix=/opt/local && make + sudo make install + ``` + +* (Optional) Install srtp for call encryption + + ```sh + git clone git://git.linphone.org/srtp.git + cd srtp && autoconf && ./configure --prefix=/opt/local && make libsrtp.a + sudo make install + ``` + +* (Optional) Install zrtpcpp, for unbreakable call encryption + + ```sh + sudo port install cmake + git clone https://github.com/wernerd/ZRTPCPP.git + cd ZRTPCPP + cmake -DCORE_LIB=true -DSDES=false CMAKE_INSTALL_NAME_DIR=/usr/local/lib/ -DCMAKE_C_FLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" -DCMAKE_CXX_FLAGS="-arch i386 -arch x86_64 --stdlib=libstdc++ -std=c++11 -lstdc++ -mmacosx-version-min=10.5" -DCMAKE_C_COMPILER=`xcrun --find clang` -DCMAKE_CXX_COMPILER=`xcrun --find clang` . + sudo make install + ``` + +* (Optional) Install gsm codec + + ```sh + git clone git://git.linphone.org/gsm.git + cd gsm + make CCFLAGS="$CFLAGS -c -O2 -DNeedFunctionPrototypes=1" + sudo make install INSTALL_ROOT=/opt/local GSM_INSTALL_INC=/opt/local/include + ``` + +* (Optional) libvpx-1.2 has a bug on MacOS resulting in ugly video. It is recommended to upgrade it manually to 1.3 from source. +The libvpx build isn't able to produce dual architecture files. To workaround this, configure libvpx twice and use lipo to create a dual architecture `libvpx.a`. + +* (Optional, proprietary extension only) Compile and install the tunnel library + + 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: + + `PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --with-readline=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict && make` + +* Install on the system + + `sudo make install` + +You are done. + +### Generate portable bundle + +If you want to generate a portable bundle, then install `gtk-mac-bundler`: + + ```sh + 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 /opt/local/lib/charset.alias + ``` + +The bundler file in `build/MacOS/linphone.bundle` expects some plugins to be installed in `/opt/local/lib/mediastreamer/plugins`. +If you don't need plugins, remove or comment out this line from the bundler file: + +```xml + +${prefix:ms2plugins}/lib/mediastreamer/plugins/*.*.so + +``` + +Then run, inside Linphone source tree configure as told before but with `--enable-relativeprefix` appended. + + `make && make bundle` + +The resulting bundle is located in Linphone build directory, together with a zipped version. + +* For a better appearance, you can install `gtk-quartz-engine` (a GTK theme) that makes GTK application more similar to other Mac applications (but not perfect). + + ```sh + git clone https://github.com/jralls/gtk-quartz-engine.git + cd gtk-quartz-engine + autoreconf -i + ./configure --prefix=/opt/local CFLAGS="$CFLAGS -Wno-error" && make + sudo make install + ``` + +Generate a new bundle to have it included. + +### libiconv hack + +The `Makefile.am` rules used to generate the bundle fetch a `libiconv.2.dylib` from a Linphone download page. +This library adds some additional symbols so that dependencies requiring the `iconv` from `/usr/lib` and the ones requiring from the bundle are both satisfied. +In case this library needs to generated, here are the commands: + + ```sh + wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz + cd libiconv-1.14 + patch -p1 < ../linphone/build/MacOS/libiconv-MacOS.patch + ./configure --prefix=/opt/local --disable-static 'CFLAGS=-arch i386 -arch x86_64 -mmacosx-version-min=10.5' 'LDFLAGS=-arch i386 -arch x86_64 -mmacosx-version-min=10.5' CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" && make + make install DESTDIR=/tmp + ``` + +The resulted library can be found in `/tmp/opt/local/lib`. + + + + From cce5ea1923f42d46112226057e1b541895b12491 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Mon, 27 Oct 2014 12:21:17 +0100 Subject: [PATCH 062/249] Update ms2 for AAC-ELD --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 674ce09c1..aacb46a5d 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 674ce09c17014bcf62e89bbddee624f74eee88d1 +Subproject commit aacb46a5dc5c7c9c40844ea52a182c14c08df9fa From 1c16614c3d964290786bbab02b2179cda266806f Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 27 Oct 2014 12:26:39 +0100 Subject: [PATCH 063/249] Use which to detect intltoolize (for HomeBrew) --- autogen.sh | 9 ++------- mediastreamer2 | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/autogen.sh b/autogen.sh index cf357cd66..9cedbf164 100755 --- a/autogen.sh +++ b/autogen.sh @@ -22,6 +22,7 @@ if test -f /opt/local/bin/glibtoolize ; then else LIBTOOLIZE=libtoolize fi + if test -d /opt/local/share/aclocal ; then ACLOCAL_ARGS="-I /opt/local/share/aclocal" fi @@ -30,13 +31,7 @@ if test -d /share/aclocal ; then ACLOCAL_ARGS="$ACLOCAL_ARGS -I /share/aclocal" fi -if test -f /opt/local/bin/intltoolize ; then - #darwin - INTLTOOLIZE=/opt/local/bin/intltoolize -else - #on mingw, it is important to invoke intltoolize with an absolute path to avoid a bug - INTLTOOLIZE=/usr/bin/intltoolize -fi +INTLTOOLIZE=$(which intltoolize) echo "Generating build scripts in linphone..." set -x diff --git a/mediastreamer2 b/mediastreamer2 index aacb46a5d..5f9a266ad 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit aacb46a5dc5c7c9c40844ea52a182c14c08df9fa +Subproject commit 5f9a266adb16fc981ed06ce5d21865a38f47a935 From b682b01ffab498a41e7ac472564c66a17e01bbf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Mon, 27 Oct 2014 14:34:18 +0100 Subject: [PATCH 064/249] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 5f9a266ad..9f5f86113 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 5f9a266adb16fc981ed06ce5d21865a38f47a935 +Subproject commit 9f5f861136a9d46dbc7965fbff97b9df74c1adf2 From cd6ffc1b413e4bfdccfb0c8dec65e1470490152b Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 27 Oct 2014 14:41:59 +0100 Subject: [PATCH 065/249] restore support for gtk/x11 on mac --- gtk/videowindow.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gtk/videowindow.c b/gtk/videowindow.c index 4a119faa9..8d404adc5 100644 --- a/gtk/videowindow.c +++ b/gtk/videowindow.c @@ -100,7 +100,11 @@ unsigned long get_native_handle(GdkWindow *gdkw){ #elif defined(WIN32) return (unsigned long)GDK_WINDOW_HWND(gdkw); #elif defined(__APPLE__) - return (unsigned long)gdk_quartz_window_get_nsview(gdkw); +# ifdef HAVE_GTK_OSX /*let's assume the use of gtk-osx implies the use of gtk-quartz.*/ + return (unsigned long)gdk_quartz_window_get_nsview(gdkw); +# else + return (unsigned long)GDK_WINDOW_XID(gdkw); +# endif #endif g_warning("No way to get the native handle from gdk window"); return 0; From 9a6d848d09a80075fb878718a0e6a462ddaaf6fb Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 27 Oct 2014 14:51:39 +0100 Subject: [PATCH 066/249] better handling of gdkx dependency --- gtk/videowindow.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/gtk/videowindow.c b/gtk/videowindow.c index 8d404adc5..24dc584f7 100644 --- a/gtk/videowindow.c +++ b/gtk/videowindow.c @@ -19,7 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "linphone.h" -#ifdef __linux +#ifdef GDK_WINDOWING_X11 #include #elif defined(WIN32) #include @@ -95,16 +95,12 @@ static gboolean drag_drop(GtkWidget *widget, GdkDragContext *drag_context, gint } unsigned long get_native_handle(GdkWindow *gdkw){ -#ifdef __linux +#ifdef GDK_WINDOWING_X11 return (unsigned long)GDK_WINDOW_XID(gdkw); #elif defined(WIN32) return (unsigned long)GDK_WINDOW_HWND(gdkw); #elif defined(__APPLE__) -# ifdef HAVE_GTK_OSX /*let's assume the use of gtk-osx implies the use of gtk-quartz.*/ - return (unsigned long)gdk_quartz_window_get_nsview(gdkw); -# else - return (unsigned long)GDK_WINDOW_XID(gdkw); -# endif + return (unsigned long)gdk_quartz_window_get_nsview(gdkw); #endif g_warning("No way to get the native handle from gdk window"); return 0; From 2409af763767e51f8f8bca91a7c30b8eb83d7768 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 27 Oct 2014 15:45:54 +0100 Subject: [PATCH 067/249] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 9f5f86113..ac63fdc65 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 9f5f861136a9d46dbc7965fbff97b9df74c1adf2 +Subproject commit ac63fdc657cf86c6aceaff6bf76e9f04179793c0 From cf3b09e35b4d293e5582f59c2facc1b4abda8e99 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 27 Oct 2014 15:51:15 +0100 Subject: [PATCH 068/249] forcely do not use some codecs under the following conditions: rate!=8000 and rate!=16000 no hardware AEC AEC required (thus software) webRTC AEC is used not opus (because opus can accept 16khz in input) --- coreapi/linphonecore.c | 19 ------------------- coreapi/misc.c | 13 ++++++++++++- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 03dd18c7f..bdf64f557 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1035,15 +1035,6 @@ static MSList *codec_append_if_new(MSList *l, PayloadType *pt){ return l; } -#if defined(ANDROID) -static int is_aac_eld_not_16k_payload(const void* _pt, const void* unused) { - PayloadType *pt = (PayloadType*)_pt; - if (pt->clock_rate == 16000) - return 1; - return strncmp(pt->mime_type, "mpeg4-generic", strlen("mpeg4-generic")); -} -#endif - static void codecs_config_read(LinphoneCore *lc) { int i; @@ -1059,16 +1050,6 @@ static void codecs_config_read(LinphoneCore *lc) } audio_codecs=add_missing_codecs(lc,SalAudio,audio_codecs); -#if defined(ANDROID) - /* AAC-ELD requires hardware AEC or 16kHz sample rate */ - if (lc->sound_conf.capt_sndcard && - !(ms_snd_card_get_capabilities(lc->sound_conf.capt_sndcard) & MS_SND_CARD_CAP_BUILTIN_ECHO_CANCELLER)) { - /* Remove AAC-ELD */ - audio_codecs = ms_list_remove_custom(audio_codecs, is_aac_eld_not_16k_payload, NULL); - ms_message("Disable AAC-ELD (needs hardware AEC)"); - } -#endif - for (i=0;get_codec(lc,"video_codec",i,&pt);i++){ if (pt){ if (!ms_filter_codec_supported(pt->mime_type)){ diff --git a/coreapi/misc.c b/coreapi/misc.c index c89111333..efca3c9f9 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -250,7 +250,18 @@ bool_t linphone_core_is_payload_type_usable_for_bandwidth(LinphoneCore *lc, cons /* return TRUE if codec can be used with bandwidth, FALSE else*/ bool_t linphone_core_check_payload_type_usability(LinphoneCore *lc, const PayloadType *pt){ - return linphone_core_is_payload_type_usable_for_bandwidth(lc, pt, linphone_core_get_payload_type_bitrate(lc,pt)); + bool_t ret=linphone_core_is_payload_type_usable_for_bandwidth(lc, pt, linphone_core_get_payload_type_bitrate(lc,pt)); + if (lc->sound_conf.capt_sndcard + && !(ms_snd_card_get_capabilities(lc->sound_conf.capt_sndcard) & MS_SND_CARD_CAP_BUILTIN_ECHO_CANCELLER) + && linphone_core_echo_cancellation_enabled(lc) + && (pt->clock_rate!=16000 && pt->clock_rate!=8000) + && strcasecmp(pt->mime_type,"opus")!=0 + && ms_filter_lookup_by_name("MSWebRTCAEC")!=NULL){ + ms_warning("Payload type %s/%i cannot be used because software echo cancellation is required but is unable to operate at this rate.", + pt->mime_type,pt->clock_rate); + ret=FALSE; + } + return ret; } bool_t lp_spawn_command_line_sync(const char *command, char **result,int *command_ret){ From 21d20b86b87123d5fb3fca327fc7c763f0af13f4 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Mon, 27 Oct 2014 16:38:23 +0100 Subject: [PATCH 069/249] Update readme for osx --- README.macos.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.macos.md b/README.macos.md index 8b3ecc0cb..06bfb2228 100644 --- a/README.macos.md +++ b/README.macos.md @@ -39,18 +39,19 @@ In order to enable generation of bundle for multiple MacOS version and 32 bit pr #### Using HomeBrew - ```sh -brew install automake intltool libtool pkg-config coreutils \ -yasm nasm wget imagemagick gettext gtk+ speex ffmpeg pygtk -brew link gettext --force + ```sh + brew install automake intltool libtool pkg-config coreutils \ + yasm nasm wget imagemagick gettext gtk+ speex ffmpeg pygtk + brew link gettext --force + + -- gtk-mac-integration is not available in main repository or Brew yet. -# Yet gtk-mac-integration is not available in main repository -wget https://raw.githubusercontent.com/guitorri/homebrew/794cb6f68dd92cffc60da86fc4b900bc9ce571ef/Library/Formula/gtk-mac-integration.rb -sudo mv gtk-mac-integration.rb /usr/local/Library/Formula/ -brew install gtk-mac-integration - ``` + wget https://gist.github.com/Gui13/cdcad37faa6b8ffa0588/raw/bf2277d45e261ad48ae1344c4c97f2684974ed87/gtk-mac-integration.rb + mv gtk-mac-integration.rb /usr/local/Library/Formula/ + brew install gtk-mac-integration - ### Building Linphone + +### Building Linphone The next pieces need to be compiled manually. From 856231394b2c8c127045e75a863aadeaa6ec68e7 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 27 Oct 2014 16:42:29 +0100 Subject: [PATCH 070/249] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index ac63fdc65..1f20c8f1f 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit ac63fdc657cf86c6aceaff6bf76e9f04179793c0 +Subproject commit 1f20c8f1fda2d904c0a70819e434c6f2d75062f1 From 03f8b6ae22f7ecdea7c479352e6ee9ee33eb90ea Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 28 Oct 2014 10:12:19 +0100 Subject: [PATCH 071/249] Update README ZRTP --- README | 31 ++++++++++++++----------------- README.macos.md | 8 +++----- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/README b/README index e10ecc2d2..30666070a 100644 --- a/README +++ b/README @@ -11,12 +11,12 @@ This is Linphone, a free (GPL) video softphone based on the SIP protocol. - belle-sip>=1.3.0 - speex>=1.2.0 (including libspeexdsp part) - libxml2 - + + if you want the gtk/glade interface: - libgtk >=2.16.0 + if you want video support: - libvpx (VP8 codec) - - libavcodec (ffmpeg) + - libavcodec (ffmpeg) - libswscale (part of ffmpeg too) for better scaling performance - libxv (x11 video extension) - libgl1-mesa (OpenGL API -- GLX development files) @@ -31,7 +31,7 @@ This is Linphone, a free (GPL) video softphone based on the SIP protocol. + if you want uPnP support (optional): - libupnp (version 1.6 branch (not patched with 18-url-upnpstrings.patch)) - Here is the command line to get these dependencies installed for Ubuntu && Debian + Here is the command line to get these dependencies installed for Ubuntu && Debian $ sudo apt-get install libtool intltool libgtk2.0-dev libspeexdsp-dev \ libavcodec-dev libswscale-dev libx11-dev libxv-dev libgl1-mesa-dev \ @@ -43,22 +43,19 @@ libsoup2.4-dev libsqlite3-dev libupnp4-dev + Install srtp (optional) for call encryption : $ git clone git://git.linphone.org/srtp.git - $ cd srtp && autoconf && ./configure && make - $ sudo make install + $ cd srtp && autoconf && ./configure && make + $ sudo make install - + Install zrtpcpp (optional), for unbreakable call encryption - $ sudo apt-get install cmake - $ git clone https://github.com/wernerd/ZRTPCPP.git - $ cd ZRTPCPP - $ cmake -DCORE_LIB=true -DSDES=false . && make - $ sudo make install - If you get this error: "cc1plus: error: unrecognized command line option ‘-std=c++11’", edit CMakeLists.txt and replace c++11 by c++0x . + + Install zrtp (optional), for unbreakable call encryption + $ git clone git://git.linphone.org:bzrtp + $ cd bzrtp && ./autogen.sh && ./configure && make + $ sudo make install - Compile linphone $ ./autogen.sh - $ ./configure - $ make && sudo make install + $ ./configure + $ make && sudo make install $ sudo ldconfig @@ -71,10 +68,10 @@ For macOS X, see README.macos Here is a short description of the content of the source tree. -- oRTP/ is a poweful implementation of the RTP protocol. See the oRTP/README for more details. +- oRTP/ is a poweful implementation of the RTP protocol. See the oRTP/README for more details. It is used by the mediastreamer to send and receive streams to the network. -- mediastreamer2/ is one of the important part of linphone. It is a framework library for audio +- mediastreamer2/ is one of the important part of linphone. It is a framework library for audio and video processing. It contains several objects for grabing audio and video and outputing it (through rtp, to file). It contains also codec objects to compress audio and video streams. @@ -89,6 +86,6 @@ Here is a short description of the content of the source tree. * linphonec.c is the main file for the console version of linphone. * sipomatic.c / sipomatic.h contains the code for sipomatic, the test program that auto-answer to linphone calls. * shell.c (program name: linphonecsh) is a small utilities to send interactive commands to a running linphonec daemon. - + - share/ contains translation, documentation, rings and hello sound files. diff --git a/README.macos.md b/README.macos.md index 06bfb2228..e8d7b1e16 100644 --- a/README.macos.md +++ b/README.macos.md @@ -100,13 +100,11 @@ The next pieces need to be compiled manually. sudo make install ``` -* (Optional) Install zrtpcpp, for unbreakable call encryption +* (Optional) Install zrtp, for unbreakable call encryption ```sh - sudo port install cmake - git clone https://github.com/wernerd/ZRTPCPP.git - cd ZRTPCPP - cmake -DCORE_LIB=true -DSDES=false CMAKE_INSTALL_NAME_DIR=/usr/local/lib/ -DCMAKE_C_FLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" -DCMAKE_CXX_FLAGS="-arch i386 -arch x86_64 --stdlib=libstdc++ -std=c++11 -lstdc++ -mmacosx-version-min=10.5" -DCMAKE_C_COMPILER=`xcrun --find clang` -DCMAKE_CXX_COMPILER=`xcrun --find clang` . + git clone git://git.linphone.org:bzrtp + cd bzrtp && ./autogen.sh && ./configure --prefix=/opt/local && make sudo make install ``` From 445cdeb88bf70f70e261c1cc653e40c701ca7d70 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 28 Oct 2014 11:07:22 +0100 Subject: [PATCH 072/249] Fix readme renaming in makefile --- Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index ff729400c..dd66874b2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -51,7 +51,7 @@ PACKAGE_BUNDLE_FILE=$(top_srcdir)/build/macos/$(PACKAGE).bundle EXTRA_DIST = BUGS \ README.arm \ README.mingw \ - README.macos \ + README.macos.md \ autogen.sh \ linphone.spec \ linphone.spec.in \ @@ -172,7 +172,7 @@ filelist: zip setup.exe: filelist cp $(ISS_SCRIPT) $(INSTALLDIR_WITH_PREFIX)/. cd $(INSTALLDIR_WITH_PREFIX) && \ - $(ISCC) $(ISS_SCRIPT) + $(ISCC) $(ISS_SCRIPT) mv $(INSTALLDIR_WITH_PREFIX)/Output/setup.exe $(PACKAGE)-$(VERSION)-setup.exe rm -rf $(INSTALLDIR_WITH_PREFIX)/Output rm -f $(INSTALLDIR_WITH_PREFIX)/$(PACKAGE_WIN32_FILELIST) From 5e6c3bfb9941ebf2cca340cc0fc217cbd426f490 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 28 Oct 2014 11:26:11 +0100 Subject: [PATCH 073/249] Update README.macos --- README.macos.md | 12 ++++++++++-- mediastreamer2 | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/README.macos.md b/README.macos.md index e8d7b1e16..48b1e425c 100644 --- a/README.macos.md +++ b/README.macos.md @@ -43,12 +43,20 @@ In order to enable generation of bundle for multiple MacOS version and 32 bit pr brew install automake intltool libtool pkg-config coreutils \ yasm nasm wget imagemagick gettext gtk+ speex ffmpeg pygtk brew link gettext --force - - -- gtk-mac-integration is not available in main repository or Brew yet. + # then you have to install antlr3 from a tap. + wget https://gist.githubusercontent.com/Gui13/f5cf103f50d34c28c7be/raw/f50242f5e0c3a6d25ed7fca1462bce3a7b738971/antlr3.rb + mv antlr3.rb /usr/local/Library/Formula/ + brew install antlr3 + + brew tap marekjelen/gtk + brew install gtk+-quartz + + # gtk-mac-integration is not available in main repository or Brew yet. wget https://gist.github.com/Gui13/cdcad37faa6b8ffa0588/raw/bf2277d45e261ad48ae1344c4c97f2684974ed87/gtk-mac-integration.rb mv gtk-mac-integration.rb /usr/local/Library/Formula/ brew install gtk-mac-integration + ``` ### Building Linphone diff --git a/mediastreamer2 b/mediastreamer2 index 1f20c8f1f..5f9a266ad 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 1f20c8f1fda2d904c0a70819e434c6f2d75062f1 +Subproject commit 5f9a266adb16fc981ed06ce5d21865a38f47a935 From b4b1683616bd185ee3e5c0bf113f9ee5da4c3427 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 28 Oct 2014 11:43:18 +0100 Subject: [PATCH 074/249] Add readline linking in readme.macos which is needed for linphonec.c --- README.macos.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.macos.md b/README.macos.md index 48b1e425c..46cdcf4b6 100644 --- a/README.macos.md +++ b/README.macos.md @@ -43,6 +43,8 @@ In order to enable generation of bundle for multiple MacOS version and 32 bit pr brew install automake intltool libtool pkg-config coreutils \ yasm nasm wget imagemagick gettext gtk+ speex ffmpeg pygtk brew link gettext --force + # readline is required from linphonec.c otherwise compilation will fail + brew link readline --force # then you have to install antlr3 from a tap. wget https://gist.githubusercontent.com/Gui13/f5cf103f50d34c28c7be/raw/f50242f5e0c3a6d25ed7fca1462bce3a7b738971/antlr3.rb From e8afe1573d0a939b767519ae53dae28ba0397e88 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Tue, 28 Oct 2014 12:53:20 +0100 Subject: [PATCH 075/249] Better doc indentation --- README.macos.md | 173 ++++++++++++++++++++---------------------------- 1 file changed, 73 insertions(+), 100 deletions(-) diff --git a/README.macos.md b/README.macos.md index 46cdcf4b6..cbdd4c24c 100644 --- a/README.macos.md +++ b/README.macos.md @@ -23,43 +23,37 @@ In order to enable generation of bundle for multiple MacOS version and 32 bit pr #### Using MacPorts * Linphone core dependencies - ```sh - sudo port install automake autoconf libtool intltool wget cunit \ - antlr3 speex libvpx readline sqlite3 libsoup openldap libupnp \ - ffmpeg-devel -gpl2 - ``` + + sudo port install automake autoconf libtool intltool wget cunit \ + antlr3 speex libvpx readline sqlite3 libsoup openldap libupnp \ + ffmpeg-devel -gpl2 * UI dependencies: install `GTK`. It is recommended to use the `quartz` backend for better integration. - ```sh - sudo port install gtk2 +quartz +no_x11 - sudo port install gtk-osx-application -python27 - sudo port install hicolor-icon-theme - ``` + sudo port install gtk2 +quartz +no_x11 + sudo port install gtk-osx-application -python27 + sudo port install hicolor-icon-theme #### Using HomeBrew - ```sh - brew install automake intltool libtool pkg-config coreutils \ - yasm nasm wget imagemagick gettext gtk+ speex ffmpeg pygtk - brew link gettext --force - # readline is required from linphonec.c otherwise compilation will fail - brew link readline --force + brew install automake intltool libtool pkg-config coreutils \ + yasm nasm wget imagemagick gettext gtk+ speex ffmpeg pygtk + brew link gettext --force + # readline is required from linphonec.c otherwise compilation will fail + brew link readline --force - # then you have to install antlr3 from a tap. - wget https://gist.githubusercontent.com/Gui13/f5cf103f50d34c28c7be/raw/f50242f5e0c3a6d25ed7fca1462bce3a7b738971/antlr3.rb - mv antlr3.rb /usr/local/Library/Formula/ - brew install antlr3 + # then you have to install antlr3 from a tap. + wget https://gist.githubusercontent.com/Gui13/f5cf103f50d34c28c7be/raw/f50242f5e0c3a6d25ed7fca1462bce3a7b738971/antlr3.rb + mv antlr3.rb /usr/local/Library/Formula/ + brew install antlr3 - brew tap marekjelen/gtk - brew install gtk+-quartz - - # gtk-mac-integration is not available in main repository or Brew yet. - wget https://gist.github.com/Gui13/cdcad37faa6b8ffa0588/raw/bf2277d45e261ad48ae1344c4c97f2684974ed87/gtk-mac-integration.rb - mv gtk-mac-integration.rb /usr/local/Library/Formula/ - brew install gtk-mac-integration - ``` + brew tap marekjelen/gtk + brew install gtk+-quartz + # gtk-mac-integration is not available in main repository or Brew yet. + wget https://gist.github.com/Gui13/cdcad37faa6b8ffa0588/raw/bf2277d45e261ad48ae1344c4c97f2684974ed87/gtk-mac-integration.rb + mv gtk-mac-integration.rb /usr/local/Library/Formula/ + brew install gtk-mac-integration ### Building Linphone @@ -67,65 +61,52 @@ The next pieces need to be compiled manually. * To ensure compatibility with multiple MacOS versions it is recommended to do: - ```sh - export MACOSX_DEPLOYMENT_TARGET=10.6 - export CFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" - export OBJCFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" - export CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" - export LDFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5 -Wl,-headerpad_max_install_names -Wl,-read_only_relocs -Wl,suppress" - ``` + export MACOSX_DEPLOYMENT_TARGET=10.6 + export CFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" + export OBJCFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" + export CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" + export LDFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5 -Wl,-headerpad_max_install_names -Wl,-read_only_relocs -Wl,suppress" * Install libantlr3c (library used by belle-sip for parsing) - ```sh - git clone -b linphone git://git.linphone.org/antlr3.git - cd antlr3/runtime/C - ./autogen.sh - ./configure --disable-static --prefix=/opt/local && make - sudo make install - ``` + git clone -b linphone git://git.linphone.org/antlr3.git + cd antlr3/runtime/C + ./autogen.sh + ./configure --disable-static --prefix=/opt/local && make + sudo make install * Install polarssl (encryption library used by belle-sip) - ```sh - git clone git://git.linphone.org/polarssl.git -b linphone - cd polarssl - ./autogen.sh && ./configure --prefix=/opt/local && make - sudo make install - ``` + + git clone git://git.linphone.org/polarssl.git -b linphone + cd polarssl + ./autogen.sh && ./configure --prefix=/opt/local && make + sudo make install * Install belle-sip (sip stack) - ```sh - git clone git://git.linphone.org/belle-sip.git - cd belle-sip - ./autogen.sh && ./configure --prefix=/opt/local && make - sudo make install - ``` + git clone git://git.linphone.org/belle-sip.git + cd belle-sip + ./autogen.sh && ./configure --prefix=/opt/local && make + sudo make install * (Optional) Install srtp for call encryption - ```sh - git clone git://git.linphone.org/srtp.git - cd srtp && autoconf && ./configure --prefix=/opt/local && make libsrtp.a - sudo make install - ``` + git clone git://git.linphone.org/srtp.git + cd srtp && autoconf && ./configure --prefix=/opt/local && make libsrtp.a + sudo make install * (Optional) Install zrtp, for unbreakable call encryption - ```sh - git clone git://git.linphone.org:bzrtp - cd bzrtp && ./autogen.sh && ./configure --prefix=/opt/local && make - sudo make install - ``` + git clone git://git.linphone.org:bzrtp + cd bzrtp && ./autogen.sh && ./configure --prefix=/opt/local && make + sudo make install * (Optional) Install gsm codec - ```sh - git clone git://git.linphone.org/gsm.git - cd gsm - make CCFLAGS="$CFLAGS -c -O2 -DNeedFunctionPrototypes=1" - sudo make install INSTALL_ROOT=/opt/local GSM_INSTALL_INC=/opt/local/include - ``` + git clone git://git.linphone.org/gsm.git + cd gsm + make CCFLAGS="$CFLAGS -c -O2 -DNeedFunctionPrototypes=1" + sudo make install INSTALL_ROOT=/opt/local GSM_INSTALL_INC=/opt/local/include * (Optional) libvpx-1.2 has a bug on MacOS resulting in ugly video. It is recommended to upgrade it manually to 1.3 from source. The libvpx build isn't able to produce dual architecture files. To workaround this, configure libvpx twice and use lipo to create a dual architecture `libvpx.a`. @@ -135,7 +116,7 @@ The libvpx build isn't able to produce dual architecture files. To workaround th If you got the source code from git, run `./autogen.sh` first. Then or otherwise, do: - `./configure --prefix=/opt/local && make && sudo make install` + ./configure --prefix=/opt/local && make && sudo make install * Compile Linphone @@ -143,11 +124,11 @@ The libvpx build isn't able to produce dual architecture files. To workaround th Then or otherwise, do: - `PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --with-readline=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict && make` + PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --with-readline=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict && make * Install on the system - `sudo make install` + sudo make install You are done. @@ -155,38 +136,32 @@ You are done. If you want to generate a portable bundle, then install `gtk-mac-bundler`: - ```sh - 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 /opt/local/lib/charset.alias - ``` + 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 /opt/local/lib/charset.alias The bundler file in `build/MacOS/linphone.bundle` expects some plugins to be installed in `/opt/local/lib/mediastreamer/plugins`. If you don't need plugins, remove or comment out this line from the bundler file: -```xml - -${prefix:ms2plugins}/lib/mediastreamer/plugins/*.*.so - -``` + + ${prefix:ms2plugins}/lib/mediastreamer/plugins/*.*.so + Then run, inside Linphone source tree configure as told before but with `--enable-relativeprefix` appended. - `make && make bundle` + make && make bundle The resulting bundle is located in Linphone build directory, together with a zipped version. * For a better appearance, you can install `gtk-quartz-engine` (a GTK theme) that makes GTK application more similar to other Mac applications (but not perfect). - ```sh - git clone https://github.com/jralls/gtk-quartz-engine.git - cd gtk-quartz-engine - autoreconf -i - ./configure --prefix=/opt/local CFLAGS="$CFLAGS -Wno-error" && make - sudo make install - ``` + git clone https://github.com/jralls/gtk-quartz-engine.git + cd gtk-quartz-engine + autoreconf -i + ./configure --prefix=/opt/local CFLAGS="$CFLAGS -Wno-error" && make + sudo make install Generate a new bundle to have it included. @@ -196,13 +171,11 @@ The `Makefile.am` rules used to generate the bundle fetch a `libiconv.2.dylib` f This library adds some additional symbols so that dependencies requiring the `iconv` from `/usr/lib` and the ones requiring from the bundle are both satisfied. In case this library needs to generated, here are the commands: - ```sh - wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz - cd libiconv-1.14 - patch -p1 < ../linphone/build/MacOS/libiconv-MacOS.patch - ./configure --prefix=/opt/local --disable-static 'CFLAGS=-arch i386 -arch x86_64 -mmacosx-version-min=10.5' 'LDFLAGS=-arch i386 -arch x86_64 -mmacosx-version-min=10.5' CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" && make - make install DESTDIR=/tmp - ``` + wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz + cd libiconv-1.14 + patch -p1 < ../linphone/build/MacOS/libiconv-MacOS.patch + ./configure --prefix=/opt/local --disable-static 'CFLAGS=-arch i386 -arch x86_64 -mmacosx-version-min=10.5' 'LDFLAGS=-arch i386 -arch x86_64 -mmacosx-version-min=10.5' CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" && make + make install DESTDIR=/tmp The resulted library can be found in `/tmp/opt/local/lib`. From 327aadb48cb5534067d4a0341236e1cc79f40756 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 28 Oct 2014 15:06:56 +0100 Subject: [PATCH 076/249] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 5f9a266ad..5efd2f201 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 5f9a266adb16fc981ed06ce5d21865a38f47a935 +Subproject commit 5efd2f20158e72b028ee16dddc08e56b812aff65 From d91b0eaa2867f57840e7bd91cdfca06a3c9f2b9e Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 28 Oct 2014 15:59:58 +0100 Subject: [PATCH 077/249] fix video payload becoming unusable by mistake --- coreapi/misc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/coreapi/misc.c b/coreapi/misc.c index efca3c9f9..81365f5a2 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -251,7 +251,8 @@ bool_t linphone_core_is_payload_type_usable_for_bandwidth(LinphoneCore *lc, cons /* return TRUE if codec can be used with bandwidth, FALSE else*/ bool_t linphone_core_check_payload_type_usability(LinphoneCore *lc, const PayloadType *pt){ bool_t ret=linphone_core_is_payload_type_usable_for_bandwidth(lc, pt, linphone_core_get_payload_type_bitrate(lc,pt)); - if (lc->sound_conf.capt_sndcard + if ((pt->type==PAYLOAD_AUDIO_CONTINUOUS || pt->type==PAYLOAD_AUDIO_PACKETIZED) + && lc->sound_conf.capt_sndcard && !(ms_snd_card_get_capabilities(lc->sound_conf.capt_sndcard) & MS_SND_CARD_CAP_BUILTIN_ECHO_CANCELLER) && linphone_core_echo_cancellation_enabled(lc) && (pt->clock_rate!=16000 && pt->clock_rate!=8000) From 9d42b2964ce43405ef7b157af1c9cd02b24483ee Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 28 Oct 2014 23:10:18 +0100 Subject: [PATCH 078/249] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 5efd2f201..36d8af7fa 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 5efd2f20158e72b028ee16dddc08e56b812aff65 +Subproject commit 36d8af7faba64c9970e40bf986ae98c3aebcf9c0 From 29ce46aa1ff04b133daa3e4e6c244fef7757eb94 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 29 Oct 2014 11:26:03 +0100 Subject: [PATCH 079/249] Add API to get the preferred video size name. --- coreapi/linphonecore.c | 6 +++++- coreapi/linphonecore.h | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index bdf64f557..8e1bdcfc2 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -5577,10 +5577,14 @@ void linphone_core_set_preferred_video_size_by_name(LinphoneCore *lc, const char * * @ingroup media_parameters **/ -MSVideoSize linphone_core_get_preferred_video_size(LinphoneCore *lc){ +MSVideoSize linphone_core_get_preferred_video_size(const LinphoneCore *lc){ return lc->video_conf.vsize; } +char * linphone_core_get_preferred_video_size_name(const LinphoneCore *lc) { + return ms_strdup(video_size_get_name(lc->video_conf.vsize)); +} + /** * Set the preferred frame rate for video. * Based on the available bandwidth constraints and network conditions, the video encoder diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index c35b7187a..99fe701ea 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -2627,7 +2627,14 @@ LINPHONE_PUBLIC void linphone_core_set_preferred_video_size(LinphoneCore *lc, MS LINPHONE_PUBLIC void linphone_core_set_preview_video_size(LinphoneCore *lc, MSVideoSize vsize); LINPHONE_PUBLIC void linphone_core_set_preview_video_size_by_name(LinphoneCore *lc, const char *name); LINPHONE_PUBLIC MSVideoSize linphone_core_get_preview_video_size(const LinphoneCore *lc); -LINPHONE_PUBLIC MSVideoSize linphone_core_get_preferred_video_size(LinphoneCore *lc); +LINPHONE_PUBLIC MSVideoSize linphone_core_get_preferred_video_size(const LinphoneCore *lc); + +/** + * Get the name of the current preferred video size for sending. + * @param[in] lc #LinphoneCore object. + * @returns A string containing the name of the current preferred video size (to be freed with ms_free()). + */ +LINPHONE_PUBLIC char * linphone_core_get_preferred_video_size_name(const LinphoneCore *lc); LINPHONE_PUBLIC void linphone_core_set_preferred_video_size_by_name(LinphoneCore *lc, const char *name); LINPHONE_PUBLIC void linphone_core_set_preferred_framerate(LinphoneCore *lc, float fps); LINPHONE_PUBLIC float linphone_core_get_preferred_framerate(LinphoneCore *lc); From 0c5309a3c875a2d07d05094358b8e67931595bfc Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 29 Oct 2014 15:38:51 +0100 Subject: [PATCH 080/249] Fix SDP overflow --- coreapi/bellesip_sal/.dirstamp | 0 coreapi/bellesip_sal/sal_op_call.c | 27 +++++++++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 coreapi/bellesip_sal/.dirstamp diff --git a/coreapi/bellesip_sal/.dirstamp b/coreapi/bellesip_sal/.dirstamp new file mode 100644 index 000000000..e69de29bb diff --git a/coreapi/bellesip_sal/sal_op_call.c b/coreapi/bellesip_sal/sal_op_call.c index bf352d1b4..9f99077d9 100644 --- a/coreapi/bellesip_sal/sal_op_call.c +++ b/coreapi/bellesip_sal/sal_op_call.c @@ -75,22 +75,33 @@ static void sdp_process(SalOp *h){ static int set_sdp(belle_sip_message_t *msg,belle_sdp_session_description_t* session_desc) { belle_sip_header_content_type_t* content_type ; belle_sip_header_content_length_t* content_length; - belle_sip_error_code error = BELLE_SIP_OK; + belle_sip_error_code error = BELLE_SIP_BUFFER_OVERFLOW; size_t length = 0; - char buff[2048]; if (session_desc) { + size_t bufLen = 2048; + size_t hardlimit = 16*1024; /* 16k SDP limit seems reasonable */ + char* buff = belle_sip_malloc(bufLen); content_type = belle_sip_header_content_type_create("application","sdp"); - error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,sizeof(buff),&length); - if (error != BELLE_SIP_OK) { - ms_error("Buffer too small or sdp too big"); + + /* try to marshal the description. This could go higher than 2k so we iterate */ + while( error != BELLE_SIP_OK && bufLen <= hardlimit && buff != NULL){ +// error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,bufLen,&length); + if( error != BELLE_SIP_OK ){ + bufLen *= 2; + buff = belle_sip_realloc(buff,bufLen); + } + } + /* give up if hard limit reached */ + if (error != BELLE_SIP_OK || buff == NULL) { + ms_error("Buffer too small (%d) or not enough memory, giving up SDP", (int)bufLen); return -1; } - content_length= belle_sip_header_content_length_create(length); + content_length = belle_sip_header_content_length_create(length); belle_sip_message_add_header(msg,BELLE_SIP_HEADER(content_type)); belle_sip_message_add_header(msg,BELLE_SIP_HEADER(content_length)); - belle_sip_message_set_body(msg,buff,length); + belle_sip_message_assign_body(msg,buff,length); return 0; } else { return -1; @@ -319,7 +330,7 @@ static void call_process_transaction_terminated(void *user_ctx, const belle_sip_ belle_sip_request_t* req; belle_sip_response_t* resp; bool_t release_call=FALSE; - + if (client_transaction) { req=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(client_transaction)); resp=belle_sip_transaction_get_response(BELLE_SIP_TRANSACTION(client_transaction)); From 18e619884c11bee1e648145374bf275a029c78cf Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 29 Oct 2014 15:41:03 +0100 Subject: [PATCH 081/249] Remove dirstamp --- coreapi/bellesip_sal/.dirstamp | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 coreapi/bellesip_sal/.dirstamp diff --git a/coreapi/bellesip_sal/.dirstamp b/coreapi/bellesip_sal/.dirstamp deleted file mode 100644 index e69de29bb..000000000 From b84133da775286c542f78bc06b866d82574ceb36 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 29 Oct 2014 16:54:51 +0100 Subject: [PATCH 082/249] Unbreakable space should be also detected as valid for phone numbers (used by iOS to format contacts) --- coreapi/proxy.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/coreapi/proxy.c b/coreapi/proxy.c index 13fa6e048..7e0e35c8a 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -881,8 +881,11 @@ static bool_t is_a_phone_number(const char *username){ *p==')' || *p=='(' || *p=='/' || - *p=='+') continue; - else return FALSE; + *p=='+' || + (unsigned char)*p== 0xca // non-breakable space (iOS uses it to format contacts phone number) + ) + continue; + return FALSE; } return TRUE; } From de1f471a89810ca14802f5e562fc0e707de52957 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 29 Oct 2014 22:59:39 +0100 Subject: [PATCH 083/249] Revert "Fix SDP overflow" This reverts commit 0c5309a3c875a2d07d05094358b8e67931595bfc. --- coreapi/bellesip_sal/sal_op_call.c | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/coreapi/bellesip_sal/sal_op_call.c b/coreapi/bellesip_sal/sal_op_call.c index 9f99077d9..bf352d1b4 100644 --- a/coreapi/bellesip_sal/sal_op_call.c +++ b/coreapi/bellesip_sal/sal_op_call.c @@ -75,33 +75,22 @@ static void sdp_process(SalOp *h){ static int set_sdp(belle_sip_message_t *msg,belle_sdp_session_description_t* session_desc) { belle_sip_header_content_type_t* content_type ; belle_sip_header_content_length_t* content_length; - belle_sip_error_code error = BELLE_SIP_BUFFER_OVERFLOW; + belle_sip_error_code error = BELLE_SIP_OK; size_t length = 0; + char buff[2048]; if (session_desc) { - size_t bufLen = 2048; - size_t hardlimit = 16*1024; /* 16k SDP limit seems reasonable */ - char* buff = belle_sip_malloc(bufLen); content_type = belle_sip_header_content_type_create("application","sdp"); - - /* try to marshal the description. This could go higher than 2k so we iterate */ - while( error != BELLE_SIP_OK && bufLen <= hardlimit && buff != NULL){ -// error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,bufLen,&length); - if( error != BELLE_SIP_OK ){ - bufLen *= 2; - buff = belle_sip_realloc(buff,bufLen); - } - } - /* give up if hard limit reached */ - if (error != BELLE_SIP_OK || buff == NULL) { - ms_error("Buffer too small (%d) or not enough memory, giving up SDP", (int)bufLen); + error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,sizeof(buff),&length); + if (error != BELLE_SIP_OK) { + ms_error("Buffer too small or sdp too big"); return -1; } - content_length = belle_sip_header_content_length_create(length); + content_length= belle_sip_header_content_length_create(length); belle_sip_message_add_header(msg,BELLE_SIP_HEADER(content_type)); belle_sip_message_add_header(msg,BELLE_SIP_HEADER(content_length)); - belle_sip_message_assign_body(msg,buff,length); + belle_sip_message_set_body(msg,buff,length); return 0; } else { return -1; @@ -330,7 +319,7 @@ static void call_process_transaction_terminated(void *user_ctx, const belle_sip_ belle_sip_request_t* req; belle_sip_response_t* resp; bool_t release_call=FALSE; - + if (client_transaction) { req=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(client_transaction)); resp=belle_sip_transaction_get_response(BELLE_SIP_TRANSACTION(client_transaction)); From 636976e55d9dcb9137a17a39c7596bc4f1c71a9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 30 Oct 2014 11:02:20 +0100 Subject: [PATCH 084/249] Reworking TunnelManager Some booleans have been replaced by a state variable --- coreapi/TunnelManager.cc | 190 +++++++++++++++++++++------------------ coreapi/TunnelManager.hh | 15 ++-- 2 files changed, 113 insertions(+), 92 deletions(-) diff --git a/coreapi/TunnelManager.cc b/coreapi/TunnelManager.cc index 03f6923ca..77e26fb1b 100644 --- a/coreapi/TunnelManager.cc +++ b/coreapi/TunnelManager.cc @@ -97,32 +97,15 @@ RtpTransport *TunnelManager::createRtpTransport(int port){ void TunnelManager::startClient() { ms_message("TunnelManager: Starting tunnel client"); - if (mTunnelClient == NULL) { - mTunnelClient = new TunnelClient(); - mTunnelClient->setCallback((TunnelClientController::StateCallback)tunnelCallback,this); - list::iterator it; - for(it=mServerAddrs.begin();it!=mServerAddrs.end();++it){ - const ServerAddr &addr=*it; - mTunnelClient->addServer(addr.mAddr.c_str(), addr.mPort); - } - mTunnelClient->setHttpProxy(mHttpProxyHost.c_str(), mHttpProxyPort, mHttpUserName.c_str(), mHttpPasswd.c_str()); + mTunnelClient = new TunnelClient(); + mTunnelClient->setCallback((TunnelClientController::StateCallback)tunnelCallback,this); + list::iterator it; + for(it=mServerAddrs.begin();it!=mServerAddrs.end();++it){ + const ServerAddr &addr=*it; + mTunnelClient->addServer(addr.mAddr.c_str(), addr.mPort); } + mTunnelClient->setHttpProxy(mHttpProxyHost.c_str(), mHttpProxyPort, mHttpUserName.c_str(), mHttpPasswd.c_str()); mTunnelClient->start(); - linphone_core_set_rtp_transport_factories(mCore,&mTransportFactories); - if(mTunnelizeSipPackets) { - sal_enable_tunnel(mCore->sal, mTunnelClient); - } - mConnecting = true; -} - -void TunnelManager::stopClient(){ - ms_message("TunnelManager: Stopping tunnel client"); - linphone_core_set_rtp_transport_factories(mCore,NULL); - sal_disable_tunnel(mCore->sal); - if (mTunnelClient){ - delete mTunnelClient; - mTunnelClient=NULL; - } } bool TunnelManager::isConnected() const { @@ -151,9 +134,7 @@ TunnelManager::TunnelManager(LinphoneCore* lc) : mExosipTransport(NULL), #endif mMode(LinphoneTunnelModeDisable), - mAutoDetecting(false), - mConnecting(false), - mScheduledRegistration(false), + mState(disabled), mTunnelizeSipPackets(true), mTunnelClient(NULL), mHttpProxyPort(0), @@ -177,62 +158,94 @@ TunnelManager::~TunnelManager(){ for(UdpMirrorClientList::iterator udpMirror = mUdpMirrorClients.begin(); udpMirror != mUdpMirrorClients.end(); udpMirror++) { udpMirror->stop(); } - stopClient(); + if(mTunnelClient) delete mTunnelClient; linphone_core_remove_listener(mCore, mVTable); linphone_core_v_table_destroy(mVTable); } void TunnelManager::doRegistration(){ - if(mTunnelizeSipPackets) { - LinphoneProxyConfig* lProxy; - linphone_core_get_default_proxy(mCore, &lProxy); - if (lProxy) { - ms_message("TunnelManager: need to register"); - if(linphone_proxy_config_get_state(lProxy) != LinphoneRegistrationProgress) { - linphone_proxy_config_refresh_register(lProxy); - mScheduledRegistration = false; - } else { - ms_warning("TunnelManager: register difered. There is already a registration in progress"); - mScheduledRegistration = true; - } - } else { - mScheduledRegistration = false; - } + LinphoneProxyConfig* lProxy; + linphone_core_get_default_proxy(mCore, &lProxy); + if (lProxy) { + ms_message("TunnelManager: New registration"); + lProxy->commit = TRUE; + } +} + +void TunnelManager::doUnregistration() { + LinphoneProxyConfig *lProxy; + linphone_core_get_default_proxy(mCore, &lProxy); + if(lProxy) { + _linphone_proxy_config_unregister(lProxy); } } void TunnelManager::processTunnelEvent(const Event &ev){ if (ev.mData.mConnected){ - ms_message("Tunnel is connected"); - doRegistration(); + ms_message("TunnelManager: tunnel is connected"); + if(mState == connecting) { + linphone_core_set_rtp_transport_factories(mCore,&mTransportFactories); + if(mTunnelizeSipPackets) { + doUnregistration(); + sal_enable_tunnel(mCore->sal, mTunnelClient); + doRegistration(); + } + mState = ready; + } } else { - ms_error("Tunnel has been disconnected"); + ms_error("TunnelManager: tunnel has been disconnected"); } - mConnecting = false; } void TunnelManager::setMode(LinphoneTunnelMode mode) { - if(mMode != mode) { - ms_message("TunnelManager: Switching mode from %s to %s", - tunnel_mode_to_string(mMode), - tunnel_mode_to_string(mode)); - switch(mode) { - case LinphoneTunnelModeEnable: - mMode = mode; + if(mMode == mode) return; + if((mode==LinphoneTunnelModeDisable && mState==disabled) + || (mode==LinphoneTunnelModeEnable && mState==ready)) { + return; + } + ms_message("TunnelManager: switching mode from %s to %s", + tunnel_mode_to_string(mMode), + tunnel_mode_to_string(mode)); + switch(mode) { + case LinphoneTunnelModeEnable: + if(mState == disabled) { startClient(); - break; - case LinphoneTunnelModeDisable: + mState = connecting; mMode = mode; - stopClient(); - doRegistration(); - break; - case LinphoneTunnelModeAuto: - mMode = mode; - autoDetect(); - break; - default: - ms_error("TunnelManager::setMode(): invalid mode (%d)", mode); + } else { + ms_error("TunnelManager: could not change mode. Bad state"); } + break; + case LinphoneTunnelModeDisable: + if(mState == ready) { + linphone_core_set_rtp_transport_factories(mCore,NULL); + if(mTunnelizeSipPackets) { + doUnregistration(); + sal_disable_tunnel(mCore->sal); + } + delete mTunnelClient; + mTunnelClient=NULL; + if(mTunnelizeSipPackets) { + doRegistration(); + } + mState = disabled; + mMode = mode; + } else { + ms_error("TunnelManager: could not change mode. Bad state"); + } + break; + case LinphoneTunnelModeAuto: + if(mState == disabled || mState == ready) { + if(startAutoDetection()) { + mState = autodetecting; + mMode = mode; + } + } else { + ms_error("TunnelManager: could not change mode. Bad state"); + } + break; + default: + ms_error("TunnelManager::setMode(): invalid mode (%d)", mode); } } @@ -244,10 +257,6 @@ void TunnelManager::tunnelCallback(bool connected, TunnelManager *zis){ } void TunnelManager::onIterate(){ - if(mScheduledRegistration) { - ms_message("Apply difered registration"); - doRegistration(); - } mMutex.lock(); while(!mEvq.empty()){ Event ev=mEvq.front(); @@ -313,22 +322,31 @@ LinphoneTunnelMode TunnelManager::getMode() const { } void TunnelManager::processUdpMirrorEvent(const Event &ev){ + if(mState != autodetecting) return; if (ev.mData.mHaveUdp) { - ms_message("TunnelManager: auto detection test succeed"); - stopClient(); - doRegistration(); - mAutoDetecting = false; + ms_message("TunnelManager: UDP mirror test succeed"); + if(mTunnelClient) { + if(mTunnelizeSipPackets) doUnregistration(); + delete mTunnelClient; + mTunnelClient = NULL; + if(mTunnelizeSipPackets) doRegistration(); + } + mState = disabled; } else { - ms_message("TunnelManager: auto detection test failed"); + ms_message("TunnelManager: UDP mirror test failed"); mCurrentUdpMirrorClient++; if (mCurrentUdpMirrorClient !=mUdpMirrorClients.end()) { - ms_message("TunnelManager: trying another udp mirror"); + ms_message("TunnelManager: trying another UDP mirror"); UdpMirrorClient &lUdpMirrorClient=*mCurrentUdpMirrorClient; lUdpMirrorClient.start(TunnelManager::sUdpMirrorClientCallback,(void*)this); } else { - ms_message("TunnelManager: all auto detection failed. Need ti enable tunnel"); - startClient(); - mAutoDetecting = false; + ms_message("TunnelManager: all UDP mirror tests failed"); + if(mTunnelClient==NULL) { + startClient(); + mState = connecting; + } else { + mState = ready; + } } } } @@ -349,24 +367,22 @@ void TunnelManager::sUdpMirrorClientCallback(bool isUdpAvailable, void* data) { void TunnelManager::networkReachableCb(LinphoneCore *lc, bool_t reachable) { TunnelManager *tunnel = bcTunnel(linphone_core_get_tunnel(lc)); - if(reachable && tunnel->getMode() == LinphoneTunnelModeAuto) { - tunnel->autoDetect(); + if(reachable && tunnel->getMode() == LinphoneTunnelModeAuto && tunnel->mState != connecting && tunnel->mState != autodetecting) { + tunnel->startAutoDetection(); + tunnel->mState = autodetecting; } } -void TunnelManager::autoDetect() { - if(mAutoDetecting) { - ms_error("TunnelManager: Cannot start auto detection. One auto detection is going on"); - return; - } +bool TunnelManager::startAutoDetection() { if (mUdpMirrorClients.empty()) { ms_error("TunnelManager: No UDP mirror server configured aborting auto detection"); - return; + return false; } + ms_message("TunnelManager: Starting auto-detection"); mCurrentUdpMirrorClient = mUdpMirrorClients.begin(); UdpMirrorClient &lUdpMirrorClient=*mCurrentUdpMirrorClient; lUdpMirrorClient.start(TunnelManager::sUdpMirrorClientCallback,(void*)this); - mAutoDetecting = true; + return true; } void TunnelManager::setHttpProxyAuthInfo(const char* username,const char* passwd) { diff --git a/coreapi/TunnelManager.hh b/coreapi/TunnelManager.hh index 9b1a4c3a9..58475aab3 100644 --- a/coreapi/TunnelManager.hh +++ b/coreapi/TunnelManager.hh @@ -143,6 +143,13 @@ namespace belledonnecomm { bool isConnected() const; private: + enum State { + disabled, + connecting, + ready, + autodetecting + }; + enum EventType{ UdpMirrorClientEvent, TunnelEvent, @@ -168,9 +175,9 @@ namespace belledonnecomm { private: void onIterate(); void doRegistration(); + void doUnregistration(); void startClient(); - void stopClient(); - void autoDetect(); + bool startAutoDetection(); void processTunnelEvent(const Event &ev); void processUdpMirrorEvent(const Event &ev); void postEvent(const Event &ev); @@ -178,9 +185,7 @@ namespace belledonnecomm { private: LinphoneCore* mCore; LinphoneTunnelMode mMode; - bool mAutoDetecting; - bool mConnecting; - bool mScheduledRegistration; + State mState; bool mTunnelizeSipPackets; TunnelClient* mTunnelClient; std::string mHttpUserName; From a2954ef1aab1ef1337c09aec6a5ec10ea657273b Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 30 Oct 2014 14:59:08 +0100 Subject: [PATCH 085/249] Fix compilation warnings/errors when compiling for Android. --- build/android/Android.mk | 3 +++ coreapi/linphonecore_jni.cc | 10 +++++++--- mediastreamer2 | 2 +- oRTP | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/build/android/Android.mk b/build/android/Android.mk index e634d3fa0..c281b241d 100755 --- a/build/android/Android.mk +++ b/build/android/Android.mk @@ -266,5 +266,8 @@ LOCAL_MODULE_FILENAME := liblinphone-$(TARGET_ARCH_ABI) include $(BUILD_SHARED_LIBRARY) +LOCAL_CPPFLAGS=$(LOCAL_CFLAGS) +LOCAL_CFLAGS += -Wdeclaration-after-statement + $(call import-module,android/cpufeatures) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 42f9848b2..241f130cc 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -715,7 +715,6 @@ public: static void infoReceived(LinphoneCore *lc, LinphoneCall*call, const LinphoneInfoMessage *info){ JNIEnv *env = 0; jint result = jvm->AttachCurrentThread(&env,NULL); - jobject jcall; if (result != 0) { ms_error("cannot attach VM"); return; @@ -4055,7 +4054,7 @@ JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneInfoMessageImpl_addHeader( * Signature: (JLjava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_org_linphone_core_LinphoneInfoMessageImpl_getHeader(JNIEnv *env, jobject jobj, jlong infoptr, jstring jname){ - const char *name=name=env->GetStringUTFChars(jname,NULL); + const char *name=env->GetStringUTFChars(jname,NULL); const char *ret=linphone_info_message_get_header((LinphoneInfoMessage*)infoptr,name); env->ReleaseStringUTFChars(jname,name); return ret ? env->NewStringUTF(ret) : NULL; @@ -4727,6 +4726,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_PresenceActivityImpl_setDescriptio const char *cdescription = description ? env->GetStringUTFChars(description, NULL) : NULL; linphone_presence_activity_set_description(activity, cdescription); if (cdescription) env->ReleaseStringUTFChars(description, cdescription); + return (jint)0; } /* @@ -4778,6 +4778,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_PresenceServiceImpl_setId(JNIEnv * const char *cid = id ? env->GetStringUTFChars(id, NULL) : NULL; linphone_presence_service_set_id(service, cid); if (cid) env->ReleaseStringUTFChars(id, cid); + return (jint)0; } /* @@ -4823,6 +4824,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_PresenceServiceImpl_setContact(JNI const char *ccontact = contact ? env->GetStringUTFChars(contact, NULL) : NULL; linphone_presence_service_set_contact(service, ccontact); if (ccontact) env->ReleaseStringUTFChars(contact, ccontact); + return (jint)0; } /* @@ -4913,6 +4915,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_PresencePersonImpl_setId(JNIEnv *e const char *cid = id ? env->GetStringUTFChars(id, NULL) : NULL; linphone_presence_person_set_id(person, cid); if (cid) env->ReleaseStringUTFChars(id, cid); + return (jint)0; } /* @@ -5085,6 +5088,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_PresenceNoteImpl_setContent(JNIEnv const char *ccontent = content ? env->GetStringUTFChars(content, NULL) : NULL; linphone_presence_note_set_content(note, ccontent); if (ccontent) env->ReleaseStringUTFChars(content, ccontent); + return (jint)0; } /* @@ -5108,6 +5112,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_PresenceNoteImpl_setLang(JNIEnv *e const char *clang = lang ? env->GetStringUTFChars(lang, NULL) : NULL; linphone_presence_note_set_lang(note, clang); if (clang) env->ReleaseStringUTFChars(lang, clang); + return (jint)0; } /* @@ -5266,7 +5271,6 @@ extern "C" jint Java_org_linphone_core_LinphonePlayerImpl_open(JNIEnv *env, jobj } extern "C" jint Java_org_linphone_core_LinphonePlayerImpl_start(JNIEnv *env, jobject jobj, jlong ptr) { - LinphonePlayerData *player_data = (LinphonePlayerData *)((LinphonePlayer *)ptr)->user_data; return (jint)linphone_player_start((LinphonePlayer *)ptr); } diff --git a/mediastreamer2 b/mediastreamer2 index 36d8af7fa..8642a0971 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 36d8af7faba64c9970e40bf986ae98c3aebcf9c0 +Subproject commit 8642a0971455f5bd444e2b84c555848d9981aebc diff --git a/oRTP b/oRTP index f1e77dd83..90a19604d 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit f1e77dd83f697954e78e024e6c837f32fc70ba5f +Subproject commit 90a19604d061d7f23189feb925847e66d366898e From d58ec509e96126fdd699b7db68f9754704977180 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 30 Oct 2014 15:02:14 +0100 Subject: [PATCH 086/249] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 8642a0971..203e7f061 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 8642a0971455f5bd444e2b84c555848d9981aebc +Subproject commit 203e7f061ab816d4bb204845995c8a208a184230 From 53af357a32e1981a26977a57d6af7626bf17382b Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Thu, 30 Oct 2014 15:38:42 +0100 Subject: [PATCH 087/249] Update ms2 for SBR in AAC --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 203e7f061..4cd6b406b 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 203e7f061ab816d4bb204845995c8a208a184230 +Subproject commit 4cd6b406b43e9c481c8bbf223735fd7f16f4d178 From 87893d9b8f144693d4504c69963a876187daa706 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Thu, 30 Oct 2014 15:39:40 +0100 Subject: [PATCH 088/249] Add SBR support for AAC when [misc] aac_use_sbr=1 is in linphonerc --- coreapi/linphonecore.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 8e1bdcfc2..e715d9e78 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1443,6 +1443,7 @@ void linphone_configuring_terminated(LinphoneCore *lc, LinphoneConfiguringState static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtable, LpConfig *config, void * userdata) { const char *remote_provisioning_uri = NULL; + const char *aac_ftmp162248, *aac_ftmp3244; LinphoneCoreVTable* local_vtable= linphone_core_v_table_new(); ms_message("Initializing LinphoneCore %s", linphone_core_get_version()); memset (lc, 0, sizeof (LinphoneCore)); @@ -1495,6 +1496,18 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab /* linphone_core_assign_payload_type(&payload_type_h264,-1,"packetization-mode=1;profile-level-id=428014");*/ #endif + /* For AAC, we use a config value to determine if we ought to support SBR. Since it is not offically supported + * for the mpeg4-generic mime type, setting this flag to 1 will break compatibility with other clients. */ + if( lp_config_get_int(lc->config, "misc", "aac_use_sbr", FALSE) ) { + ms_message("Using SBR for AAC"); + aac_ftmp162248 = "config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5 SBR-enabled=1;"; + aac_ftmp3244 = "config=F8E82000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5 SBR-enabled=1;"; + } else { + aac_ftmp162248 = "config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"; + aac_ftmp3244 = "config=F8E82000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"; + } + + /*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"); @@ -1513,11 +1526,11 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab linphone_core_assign_payload_type(lc,&payload_type_silk_wb,-1,NULL); linphone_core_assign_payload_type(lc,&payload_type_silk_swb,-1,NULL); linphone_core_assign_payload_type(lc,&payload_type_g729,18,"annexb=no"); - linphone_core_assign_payload_type(lc,&payload_type_aaceld_16k,-1,"config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"); - linphone_core_assign_payload_type(lc,&payload_type_aaceld_22k,-1,"config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"); - linphone_core_assign_payload_type(lc,&payload_type_aaceld_32k,-1,"config=F8E82000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"); - linphone_core_assign_payload_type(lc,&payload_type_aaceld_44k,-1,"config=F8E82000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"); - linphone_core_assign_payload_type(lc,&payload_type_aaceld_48k,-1,"config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_16k,-1,aac_ftmp162248); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_22k,-1,aac_ftmp162248); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_32k,-1,aac_ftmp3244); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_44k,-1,aac_ftmp3244); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_48k,-1,aac_ftmp162248); linphone_core_assign_payload_type(lc,&payload_type_opus,-1,"useinbandfec=1; stereo=0; sprop-stereo=0"); linphone_core_assign_payload_type(lc,&payload_type_isac,-1,NULL); linphone_core_handle_static_payloads(lc); From 2c940567961a979dff77f1c0998784997c3fdf16 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Thu, 30 Oct 2014 15:40:22 +0100 Subject: [PATCH 089/249] Fix SDP overflow commit --- coreapi/bellesip_sal/sal_op_call.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/coreapi/bellesip_sal/sal_op_call.c b/coreapi/bellesip_sal/sal_op_call.c index bf352d1b4..fbed2cf18 100644 --- a/coreapi/bellesip_sal/sal_op_call.c +++ b/coreapi/bellesip_sal/sal_op_call.c @@ -75,22 +75,33 @@ static void sdp_process(SalOp *h){ static int set_sdp(belle_sip_message_t *msg,belle_sdp_session_description_t* session_desc) { belle_sip_header_content_type_t* content_type ; belle_sip_header_content_length_t* content_length; - belle_sip_error_code error = BELLE_SIP_OK; + belle_sip_error_code error = BELLE_SIP_BUFFER_OVERFLOW; size_t length = 0; - char buff[2048]; if (session_desc) { + size_t bufLen = 2048; + size_t hardlimit = 16*1024; /* 16k SDP limit seems reasonable */ + char* buff = belle_sip_malloc(bufLen); content_type = belle_sip_header_content_type_create("application","sdp"); - error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,sizeof(buff),&length); - if (error != BELLE_SIP_OK) { - ms_error("Buffer too small or sdp too big"); + + /* try to marshal the description. This could go higher than 2k so we iterate */ + while( error != BELLE_SIP_OK && bufLen <= hardlimit && buff != NULL){ + error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,bufLen,&length); + if( error != BELLE_SIP_OK ){ + bufLen *= 2; + buff = belle_sip_realloc(buff,bufLen); + } + } + /* give up if hard limit reached */ + if (error != BELLE_SIP_OK || buff == NULL) { + ms_error("Buffer too small (%d) or not enough memory, giving up SDP", (int)bufLen); return -1; } - content_length= belle_sip_header_content_length_create(length); + content_length = belle_sip_header_content_length_create(length); belle_sip_message_add_header(msg,BELLE_SIP_HEADER(content_type)); belle_sip_message_add_header(msg,BELLE_SIP_HEADER(content_length)); - belle_sip_message_set_body(msg,buff,length); + belle_sip_message_assign_body(msg,buff,length); return 0; } else { return -1; From f5c52560499a9d39cb3c212567b1fabd933383c7 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 30 Oct 2014 15:46:00 +0100 Subject: [PATCH 090/249] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 4cd6b406b..6d7273da2 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 4cd6b406b43e9c481c8bbf223735fd7f16f4d178 +Subproject commit 6d7273da2b8cde1d12d5b4395925b453e7e8bbcb From 7461f509f7f5266a4799fb11d292d71d662ea9b2 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 30 Oct 2014 15:53:19 +0100 Subject: [PATCH 091/249] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 6d7273da2..3f84f2ffb 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 6d7273da2b8cde1d12d5b4395925b453e7e8bbcb +Subproject commit 3f84f2ffbb6043414bd5aa99e6320295adf458c9 From f84a588c11700913dbae7c324c3b0d9a87af3307 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Thu, 30 Oct 2014 16:19:17 +0100 Subject: [PATCH 092/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 3f84f2ffb..d6dcb9b91 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 3f84f2ffbb6043414bd5aa99e6320295adf458c9 +Subproject commit d6dcb9b91ec7c2d3d9ef9bdcacb5bdfd5471abad From dc2ad51c2b629a21d1b6cb19f50d26371672c830 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 30 Oct 2014 16:38:15 +0100 Subject: [PATCH 093/249] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index d6dcb9b91..7255bc7ad 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit d6dcb9b91ec7c2d3d9ef9bdcacb5bdfd5471abad +Subproject commit 7255bc7adb8bdf1e19be3b52b3d2f168c6b1b4cc From 62fd80b8555567bffb7b5a15ac25104e5bddae50 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 30 Oct 2014 16:50:39 +0100 Subject: [PATCH 094/249] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 7255bc7ad..9dd1d9633 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 7255bc7adb8bdf1e19be3b52b3d2f168c6b1b4cc +Subproject commit 9dd1d9633e66ea018d346cc79a6d93ff6daeddf1 From ba815377f7ee98142b370e7d091fbca4608520e7 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 31 Oct 2014 09:47:50 +0100 Subject: [PATCH 095/249] Change API of linphone_core_enable_log_collection() to be able to deactivate the previous log handler. --- coreapi/linphonecore.c | 10 +++++++--- coreapi/linphonecore.h | 10 ++++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index e715d9e78..8e6316b54 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -250,16 +250,20 @@ void linphone_core_set_log_collection_upload_server_url(LinphoneCore *core, cons lp_config_set_string(core->config, "misc", "log_collection_upload_server_url", server_url); } -void linphone_core_enable_log_collection(bool_t enable) { +void linphone_core_enable_log_collection(LinphoneLogCollectionState state) { /* at first call of this function, set liblinphone_log_func to the current * ortp log function */ if( liblinphone_log_func == NULL ){ liblinphone_log_func = ortp_logv_out; } - if ((enable == TRUE) && (liblinphone_log_collection_enabled == FALSE)) { + if ((state != LinphoneLogCollectionDisabled) && (liblinphone_log_collection_enabled == FALSE)) { liblinphone_log_collection_enabled = TRUE; ortp_mutex_init(&liblinphone_log_collection_mutex, NULL); - liblinphone_log_func = ortp_logv_out; + if (state == LinphoneLogCollectionEnabledWithoutPreviousLogHandler) { + liblinphone_log_func = NULL; + } else { + liblinphone_log_func = ortp_logv_out; + } ortp_set_log_handler(linphone_core_log_collection_handler); } else { liblinphone_log_collection_enabled = FALSE; diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 99fe701ea..be9e367a4 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1780,12 +1780,18 @@ typedef void * (*LinphoneCoreWaitingCallback)(LinphoneCore *lc, void *context, L /* THE main API */ +typedef enum _LinphoneLogCollectionState { + LinphoneLogCollectionDisabled, + LinphoneLogCollectionEnabled, + LinphoneLogCollectionEnabledWithoutPreviousLogHandler +} LinphoneLogCollectionState; + /** * Enable the linphone core log collection to upload logs on a server. * @ingroup misc - * @param[in] enable Boolean value telling whether to enable log collection or not. + * @param[in] state LinphoneLogCollectionState value telling whether to enable log collection or not. */ -LINPHONE_PUBLIC void linphone_core_enable_log_collection(bool_t enable); +LINPHONE_PUBLIC void linphone_core_enable_log_collection(LinphoneLogCollectionState state); /** * Set the path where the log files will be written for log collection. From 422010f804ca31fb02e32bb256eefa1dc9fafecc Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Fri, 31 Oct 2014 11:58:25 +0100 Subject: [PATCH 096/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 9dd1d9633..70c21028b 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 9dd1d9633e66ea018d346cc79a6d93ff6daeddf1 +Subproject commit 70c21028b9463f61bc1f483387e13de503731386 From dadefe2a10759e38e836130c0990664b72e67fb7 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 3 Nov 2014 11:41:19 +0100 Subject: [PATCH 097/249] Build with correct version number on Windows Phone 8. --- build/wp8/LibLinphone.vcxproj | 15 ++++++++++----- coreapi/quality_reporting.c | 2 +- coreapi/sipsetup.c | 2 +- mediastreamer2 | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/build/wp8/LibLinphone.vcxproj b/build/wp8/LibLinphone.vcxproj index 876c93d2a..cca41bb87 100644 --- a/build/wp8/LibLinphone.vcxproj +++ b/build/wp8/LibLinphone.vcxproj @@ -53,8 +53,8 @@ Level4 - $(ProjectDir)..\..\..\belle-sip\include;$(ProjectDir)..\..\oRTP\include;$(ProjectDir)..\..\mediastreamer2\include;$(ProjectDir)..\..\..\tunnel\include;$(ProjectDir)..\..\coreapi;$(ProjectDir)..\..\include;$(SolutionDir)$(Platform)\$(Configuration)\include;$(ProjectDir)..\..\..\zlib;$(ProjectDir)..\..\..\sqlite\;%(AdditionalIncludeDirectories) - __STDC_CONSTANT_MACROS;_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;_USRDLL;WINDOW_NATIVE;_TRUE_TIME;IN_LINPHONE;USE_BELLESIP;TUNNEL_ENABLED;VIDEO_ENABLED;LINPHONE_PACKAGE_NAME="linphone";LINPHONE_VERSION="Devel";LIBLINPHONE_EXPORTS;LINPHONE_PLUGINS_DIR=".";UNICODE;_XKEYCHECK_H;HAVE_ZLIB;%(PreprocessorDefinitions) + $(ProjectDir)..\..\..\belle-sip\include;$(ProjectDir)..\..\oRTP\include;$(ProjectDir)..\..\mediastreamer2\include;$(ProjectDir)..\..\..\tunnel\include;$(ProjectDir)..\..\coreapi;$(ProjectDir)..\..\include;$(SolutionDir)$(Platform)\$(Configuration)\include;$(ProjectDir)..\..\..\zlib;$(ProjectDir)..\..\..\sqlite\;$(ProjectDir);%(AdditionalIncludeDirectories) + __STDC_CONSTANT_MACROS;_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;_USRDLL;WINDOW_NATIVE;_TRUE_TIME;IN_LINPHONE;USE_BELLESIP;TUNNEL_ENABLED;VIDEO_ENABLED;LINPHONE_PACKAGE_NAME="linphone";LIBLINPHONE_EXPORTS;LINPHONE_PLUGINS_DIR=".";UNICODE;_XKEYCHECK_H;HAVE_ZLIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) Default NotUsing false @@ -68,9 +68,12 @@ $(SolutionDir)$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib - - $(TargetDir)$(TargetName)_dll.lib;%(Outputs) - + + version.bat + + + Batch script to get the git version + @@ -152,6 +155,8 @@ + + diff --git a/coreapi/quality_reporting.c b/coreapi/quality_reporting.c index 9e2e6c7ea..6072834eb 100644 --- a/coreapi/quality_reporting.c +++ b/coreapi/quality_reporting.c @@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H -#include "../config.h" +#include "config.h" #endif #include "linphonecore.h" diff --git a/coreapi/sipsetup.c b/coreapi/sipsetup.c index 91abf5d62..bf1b411e8 100644 --- a/coreapi/sipsetup.c +++ b/coreapi/sipsetup.c @@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H -#include "../config.h" +#include "config.h" #endif #include "linphonecore.h" diff --git a/mediastreamer2 b/mediastreamer2 index 70c21028b..6469e3d23 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 70c21028b9463f61bc1f483387e13de503731386 +Subproject commit 6469e3d236e3d8e9c5da0d3bec73515cab900b1d From 35434faecdc0309f42827451a8d807f923d59d95 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 3 Nov 2014 16:40:40 +0100 Subject: [PATCH 098/249] update ms2 (for audio fix on moto G) --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 6469e3d23..b8bf1d43d 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 6469e3d236e3d8e9c5da0d3bec73515cab900b1d +Subproject commit b8bf1d43de8c3e3aece04bf1aa6600c0130c055d From 593454ce53d0befec206a5556555201eca5b58bd Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 4 Nov 2014 08:52:38 +0100 Subject: [PATCH 099/249] Add missing file for Windows Phone 8 build. --- build/wp8/version.bat | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 build/wp8/version.bat diff --git a/build/wp8/version.bat b/build/wp8/version.bat new file mode 100644 index 000000000..55ee42831 --- /dev/null +++ b/build/wp8/version.bat @@ -0,0 +1,22 @@ +@ECHO off + +SET gitlog= +FOR /f "delims=" %%a IN ('git log -1 "--pretty=format:%%H" ../../configure.ac') DO SET gitlog=%%a + +IF [%gitlog%] == [] GOTO UnknownGitVersion + +FOR /f "delims=" %%a IN ('git describe --always') DO SET gitdescribe=%%a +GOTO End + +:UnknownGitVersion +SET gitdescribe=unknown + +:End +ECHO #define LIBLINPHONE_GIT_VERSION "%gitdescribe%" > liblinphone_gitversion.h + + +FOR /F "delims=" %%a IN ('findstr /B AC_INIT ..\..\configure.ac') DO ( + FOR /F "tokens=1,2,3 delims=[,]" %%1 IN ("%%a") DO ( + ECHO #define LIBLINPHONE_VERSION "%%3" > config.h + ) +) From 82bec9343bc1c98a7a39557b3d7b00fc3792690b Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 4 Nov 2014 10:58:42 +0100 Subject: [PATCH 100/249] Change signature of LinphoneCoreLogCollectionUploadProgressIndicationCb. --- coreapi/linphonecore.c | 6 +++--- coreapi/linphonecore.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 8e6316b54..b09037bf2 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -328,7 +328,7 @@ static int log_collection_upload_on_send_body(belle_sip_user_body_handler_t *bh, */ static void log_collection_upload_on_progress(belle_sip_body_handler_t *bh, belle_sip_message_t *msg, void *data, size_t offset, size_t total) { LinphoneCore *core = (LinphoneCore *)data; - linphone_core_notify_log_collection_upload_progress_indication(core, (size_t)(((double)offset / (double)total) * 100.0)); + linphone_core_notify_log_collection_upload_progress_indication(core, offset, total); } /** @@ -7067,8 +7067,8 @@ void linphone_core_notify_publish_state_changed(LinphoneCore *lc, LinphoneEvent void linphone_core_notify_log_collection_upload_state_changed(LinphoneCore *lc, LinphoneCoreLogCollectionUploadState state, const char *info) { NOTIFY_IF_EXIST(log_collection_upload_state_changed)(lc, state, info); } -void linphone_core_notify_log_collection_upload_progress_indication(LinphoneCore *lc, size_t progress) { - NOTIFY_IF_EXIST(log_collection_upload_progress_indication)(lc, progress); +void linphone_core_notify_log_collection_upload_progress_indication(LinphoneCore *lc, size_t offset, size_t total) { + NOTIFY_IF_EXIST(log_collection_upload_progress_indication)(lc, offset, total); } void linphone_core_add_listener(LinphoneCore *lc, LinphoneCoreVTable *vtable) { ms_message("Vtable [%p] registered on core [%p]",lc,vtable); diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index be9e367a4..a909191ee 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1694,7 +1694,7 @@ typedef void (*LinphoneCoreLogCollectionUploadStateChangedCb)(LinphoneCore *lc, * @param[in] lc LinphoneCore object * @param[in] progress Percentage of the file size of the log collection already uploaded. */ -typedef void (*LinphoneCoreLogCollectionUploadProgressIndicationCb)(LinphoneCore *lc, size_t progress); +typedef void (*LinphoneCoreLogCollectionUploadProgressIndicationCb)(LinphoneCore *lc, size_t offset, size_t total); /** * This structure holds all callbacks that the application should implement. From 3488b92f317b07266c71cb0c3a0d7450c62b91e9 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 4 Nov 2014 13:59:28 +0100 Subject: [PATCH 101/249] update ms2 and documentation --- coreapi/linphonecore.c | 5 ++++- mediastreamer2 | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index b09037bf2..340f589fc 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -4606,7 +4606,10 @@ const char * linphone_core_get_ringback(const LinphoneCore *lc){ } /** - * Enables or disable echo cancellation. Value is saved an used for subsequent calls + * Enables or disable echo cancellation. Value is saved and used for subsequent calls. + * This actually controls software echo cancellation. If hardware echo cancellation is available, it will be always used and activated for calls, regardless + * of the value passed to this function. + * When hardware echo cancellation is available, the software one is of course not activated. * * @ingroup media_parameters **/ diff --git a/mediastreamer2 b/mediastreamer2 index b8bf1d43d..f74295ef1 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit b8bf1d43de8c3e3aece04bf1aa6600c0130c055d +Subproject commit f74295ef1a01ec50fa46aac5ab891527a33d8eb6 From f07b7be07ae85adc48c03e7b3ec89991862a0b90 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 4 Nov 2014 14:03:57 +0100 Subject: [PATCH 102/249] Fix compilation --- coreapi/private.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/coreapi/private.h b/coreapi/private.h index 7cef61242..e42d6c177 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -102,7 +102,7 @@ struct _LinphoneCallParams{ bool_t real_early_media; /*send real media even during early media (for outgoing calls)*/ bool_t in_conference; /*in conference mode */ bool_t low_bandwidth; - bool_t no_user_consent;/*when set to TRUE an UPDATE request will be used instead of reINVITE*/ + bool_t no_user_consent;/*when set to TRUE an UPDATE request will be used instead of reINVITE*/ uint16_t avpf_rr_interval; /*in milliseconds*/ LinphonePrivacyMask privacy; }; @@ -464,17 +464,17 @@ struct _LinphoneProxyConfig LinphoneRegistrationState state; SalOp *publish_op; LinphoneAVPFMode avpf_mode; - + bool_t commit; bool_t reg_sendregister; bool_t publish; bool_t dial_escape_plus; - + bool_t send_publish; bool_t quality_reporting_enabled; uint8_t avpf_rr_interval; uint8_t quality_reporting_interval; - + time_t deletion_date; LinphonePrivacyMask privacy; /*use to check if server config has changed between edit() and done()*/ @@ -1026,7 +1026,7 @@ void linphone_core_notify_notify_received(LinphoneCore *lc, LinphoneEvent *lev, void linphone_core_notify_subscription_state_changed(LinphoneCore *lc, LinphoneEvent *lev, LinphoneSubscriptionState state); void linphone_core_notify_publish_state_changed(LinphoneCore *lc, LinphoneEvent *lev, LinphonePublishState state); void linphone_core_notify_log_collection_upload_state_changed(LinphoneCore *lc, LinphoneCoreLogCollectionUploadState state, const char *info); -void linphone_core_notify_log_collection_upload_progress_indication(LinphoneCore *lc, size_t progress); +void linphone_core_notify_log_collection_upload_progress_indication(LinphoneCore *lc, size_t offset, size_t total); void set_mic_gain_db(AudioStream *st, float gain); void set_playback_gain_db(AudioStream *st, float gain); From cd2de42f86a42e7f0c4509446fb4a7aec6309c8c Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 4 Nov 2014 14:26:29 +0100 Subject: [PATCH 103/249] Fix some clang warnings on Debian --- coreapi/quality_reporting.c | 4 ++-- mediastreamer2 | 2 +- tester/call_tester.c | 38 ++++++++++++++++++------------------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/coreapi/quality_reporting.c b/coreapi/quality_reporting.c index 6072834eb..52d88a7a2 100644 --- a/coreapi/quality_reporting.c +++ b/coreapi/quality_reporting.c @@ -386,7 +386,7 @@ static void update_ip(LinphoneCall * call, int stats_type) { if (local_desc != NULL) { /*since this function might be called for video stream AFTER it has been uninitialized, local description might be invalid. In any other case, IP/port should be always filled and valid*/ - if (local_desc->rtp_addr != NULL && strlen(local_desc->rtp_addr) > 0) { + if (strlen(local_desc->rtp_addr) > 0) { call->log->reporting.reports[stats_type]->info.local_addr.port = local_desc->rtp_port; STR_REASSIGN(call->log->reporting.reports[stats_type]->info.local_addr.ip, ms_strdup(local_desc->rtp_addr)); } @@ -397,7 +397,7 @@ static void update_ip(LinphoneCall * call, int stats_type) { call->log->reporting.reports[stats_type]->info.remote_addr.port = remote_desc->rtp_port; /*for IP it can be not set if we are using a direct route*/ - if (remote_desc->rtp_addr != NULL && strlen(remote_desc->rtp_addr) > 0) { + if (strlen(remote_desc->rtp_addr) > 0) { STR_REASSIGN(call->log->reporting.reports[stats_type]->info.remote_addr.ip, ms_strdup(remote_desc->rtp_addr)); } else { STR_REASSIGN(call->log->reporting.reports[stats_type]->info.remote_addr.ip, ms_strdup(sal_call_get_remote_media_description(call->op)->addr)); diff --git a/mediastreamer2 b/mediastreamer2 index f74295ef1..30246c54f 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit f74295ef1a01ec50fa46aac5ab891527a33d8eb6 +Subproject commit 30246c54f458c8bc2b93851b5c2e7aa7f16da8ce diff --git a/tester/call_tester.c b/tester/call_tester.c index 62b4d55b5..f1a92a07c 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -145,7 +145,7 @@ void liblinphone_tester_check_rtcp(LinphoneCoreManager* caller, LinphoneCoreMana if (!c1 || !c2) return; linphone_call_ref(c1); linphone_call_ref(c2); - + liblinphone_tester_clock_start(&ts); do { if (linphone_call_get_audio_stats(c1)->round_trip_delay >0.0 @@ -1343,14 +1343,14 @@ static void call_with_declined_video_base(bool_t using_policy) { caller_params=linphone_core_create_default_call_parameters(pauline->lc); if (!using_policy) linphone_call_params_enable_video(caller_params,TRUE); - + if (!using_policy){ callee_params=linphone_core_create_default_call_parameters(marie->lc); linphone_call_params_enable_video(callee_params,FALSE); } CU_ASSERT_TRUE(call_with_params2(pauline,marie,caller_params,callee_params,using_policy)); - + linphone_call_params_destroy(caller_params); if (callee_params) linphone_call_params_destroy(callee_params); marie_call=linphone_core_get_current_call(marie->lc); @@ -1398,7 +1398,7 @@ static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* ma caller_params=linphone_core_create_default_call_parameters(pauline->lc); if (!using_policy) linphone_call_params_enable_video(caller_params,TRUE); - + if (!using_policy){ callee_params=linphone_core_create_default_call_parameters(marie->lc); linphone_call_params_enable_video(callee_params,TRUE); @@ -1902,21 +1902,21 @@ static void call_with_file_player(void) { char hellopath[256]; char *recordpath = create_filepath(liblinphone_tester_writable_dir_prefix, "record", "wav"); double similar; - + /*make sure the record file doesn't already exists, otherwise this test will append new samples to it*/ unlink(recordpath); - + snprintf(hellopath,sizeof(hellopath), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); - + /*caller uses files instead of soundcard in order to avoid mixing soundcard input with file played using call's player*/ linphone_core_use_files(pauline->lc,TRUE); linphone_core_set_play_file(pauline->lc,NULL); - + /*callee is recording and plays file*/ linphone_core_use_files(pauline->lc,TRUE); linphone_core_set_play_file(pauline->lc,hellopath); linphone_core_set_record_file(pauline->lc,recordpath); - + CU_ASSERT_TRUE(call(marie,pauline)); player=linphone_call_get_player(linphone_core_get_current_call(marie->lc)); @@ -1926,7 +1926,7 @@ static void call_with_file_player(void) { CU_ASSERT_TRUE(linphone_player_start(player)==0); } CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&marie->stat.number_of_player_eof,1,12000)); - + /*just to sleep*/ linphone_core_terminate_all_calls(marie->lc); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); @@ -1965,10 +1965,10 @@ static void call_with_mkv_file_player(void) { recordpath = create_filepath(liblinphone_tester_writable_dir_prefix, "record", "wav"); /*make sure the record file doesn't already exists, otherwise this test will append new samples to it*/ unlink(recordpath); - + snprintf(hellowav,sizeof(hellowav), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); snprintf(hellomkv,sizeof(hellomkv), "%s/sounds/hello8000.mkv", liblinphone_tester_file_prefix); - + /*caller uses files instead of soundcard in order to avoid mixing soundcard input with file played using call's player*/ linphone_core_use_files(marie->lc,TRUE); linphone_core_set_play_file(marie->lc,NULL); @@ -1976,7 +1976,7 @@ static void call_with_mkv_file_player(void) { linphone_core_use_files(pauline->lc,TRUE); linphone_core_set_play_file(pauline->lc,hellowav); /*just to send something but we are not testing what is sent by pauline*/ linphone_core_set_record_file(pauline->lc,recordpath); - + CU_ASSERT_TRUE(call(marie,pauline)); player=linphone_call_get_player(linphone_core_get_current_call(marie->lc)); @@ -1987,7 +1987,7 @@ static void call_with_mkv_file_player(void) { CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&marie->stat.number_of_player_eof,1,12000)); linphone_player_close(player); } - + /*just to sleep*/ linphone_core_terminate_all_calls(marie->lc); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); @@ -1996,11 +1996,11 @@ static void call_with_mkv_file_player(void) { CU_ASSERT_TRUE(similar>0.6); CU_ASSERT_TRUE(similar<=1.0); ms_free(recordpath); - + end: linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); - + } @@ -2182,7 +2182,7 @@ static void early_media_call_with_ringing(void){ CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,1000)); ended_time=time(NULL); - CU_ASSERT_TRUE (abs (linphone_call_log_get_duration(marie_call_log) - (ended_time - connected_time)) <1 ); + CU_ASSERT_TRUE (labs (linphone_call_log_get_duration(marie_call_log) - (ended_time - connected_time)) <1 ); ms_list_free(lcs); } @@ -3138,7 +3138,7 @@ static void call_with_custom_supported_tags(void) { marie = linphone_core_manager_new( "marie_rc"); pauline = linphone_core_manager_new( "pauline_rc"); - + linphone_core_add_supported_tag(marie->lc,"pouet-tag"); CU_ASSERT_TRUE(call(pauline,marie)); liblinphone_tester_check_rtcp(marie,pauline); @@ -3167,7 +3167,7 @@ static void call_log_from_taken_from_p_asserted_id(void) { const char* paulie_asserted_id ="\"Paupauche\" "; LinphoneAddress *paulie_asserted_id_addr = linphone_address_new(paulie_asserted_id); LpConfig *marie_lp; - + params=linphone_core_create_default_call_parameters(pauline->lc); linphone_call_params_add_custom_header(params,"P-Asserted-Identity",paulie_asserted_id); From 0250469c314228e9832a17a4f9863dd3948993f1 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Tue, 4 Nov 2014 16:04:24 +0100 Subject: [PATCH 104/249] Typo for AAC --- coreapi/linphonecore.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 340f589fc..207310c99 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1447,7 +1447,7 @@ void linphone_configuring_terminated(LinphoneCore *lc, LinphoneConfiguringState static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtable, LpConfig *config, void * userdata) { const char *remote_provisioning_uri = NULL; - const char *aac_ftmp162248, *aac_ftmp3244; + const char *aac_fmtp162248, *aac_fmtp3244; LinphoneCoreVTable* local_vtable= linphone_core_v_table_new(); ms_message("Initializing LinphoneCore %s", linphone_core_get_version()); memset (lc, 0, sizeof (LinphoneCore)); @@ -1504,11 +1504,11 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab * for the mpeg4-generic mime type, setting this flag to 1 will break compatibility with other clients. */ if( lp_config_get_int(lc->config, "misc", "aac_use_sbr", FALSE) ) { ms_message("Using SBR for AAC"); - aac_ftmp162248 = "config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5 SBR-enabled=1;"; - aac_ftmp3244 = "config=F8E82000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5 SBR-enabled=1;"; + aac_fmtp162248 = "config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5; SBR-enabled=1"; + aac_fmtp3244 = "config=F8E82000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5; SBR-enabled=1"; } else { - aac_ftmp162248 = "config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"; - aac_ftmp3244 = "config=F8E82000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"; + aac_fmtp162248 = "config=F8EE2000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"; + aac_fmtp3244 = "config=F8E82000; constantDuration=512; indexDeltaLength=3; indexLength=3; mode=AAC-hbr; profile-level-id=76; sizeLength=13; streamType=5"; } @@ -1530,11 +1530,11 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab linphone_core_assign_payload_type(lc,&payload_type_silk_wb,-1,NULL); linphone_core_assign_payload_type(lc,&payload_type_silk_swb,-1,NULL); linphone_core_assign_payload_type(lc,&payload_type_g729,18,"annexb=no"); - linphone_core_assign_payload_type(lc,&payload_type_aaceld_16k,-1,aac_ftmp162248); - linphone_core_assign_payload_type(lc,&payload_type_aaceld_22k,-1,aac_ftmp162248); - linphone_core_assign_payload_type(lc,&payload_type_aaceld_32k,-1,aac_ftmp3244); - linphone_core_assign_payload_type(lc,&payload_type_aaceld_44k,-1,aac_ftmp3244); - linphone_core_assign_payload_type(lc,&payload_type_aaceld_48k,-1,aac_ftmp162248); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_16k,-1,aac_fmtp162248); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_22k,-1,aac_fmtp162248); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_32k,-1,aac_fmtp3244); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_44k,-1,aac_fmtp3244); + linphone_core_assign_payload_type(lc,&payload_type_aaceld_48k,-1,aac_fmtp162248); linphone_core_assign_payload_type(lc,&payload_type_opus,-1,"useinbandfec=1; stereo=0; sprop-stereo=0"); linphone_core_assign_payload_type(lc,&payload_type_isac,-1,NULL); linphone_core_handle_static_payloads(lc); From 179d834bb6ff6ab5cacb858f79026385730f7ec4 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Tue, 4 Nov 2014 16:04:46 +0100 Subject: [PATCH 105/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 30246c54f..b37fdd869 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 30246c54f458c8bc2b93851b5c2e7aa7f16da8ce +Subproject commit b37fdd869e17c70ae2683ef1fc09231094c52f4a From d67957ab2a4673f98ae39333acb8b5b9f7e2a552 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 4 Nov 2014 14:47:13 +0100 Subject: [PATCH 106/249] Add log collection tester suite --- .gitignore | 2 + build/android/liblinphone_tester.mk | 1 + .../LibLinphoneTester-native.vcxproj | 1 + coreapi/linphonecore.c | 2 +- tester/Makefile.am | 1 + tester/liblinphone_tester.h | 1 + tester/log_collection_tester.c | 145 ++++++++++++++++++ tester/tester.c | 1 + 8 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 tester/log_collection_tester.c diff --git a/.gitignore b/.gitignore index d5a842ef1..85a6aed1d 100644 --- a/.gitignore +++ b/.gitignore @@ -76,3 +76,5 @@ tester/tmp.db .DS_Store Linphone.app *.dmg +tester/linphone*.log +tester/linphone_log.txt diff --git a/build/android/liblinphone_tester.mk b/build/android/liblinphone_tester.mk index b23a381bd..5ca3732be 100644 --- a/build/android/liblinphone_tester.mk +++ b/build/android/liblinphone_tester.mk @@ -14,6 +14,7 @@ common_SRC_FILES := \ tester.c \ remote_provisioning_tester.c \ quality_reporting_tester.c \ + log_collection_tester.c \ transport_tester.c \ player_tester.c diff --git a/build/wp8/LibLinphoneTester-native/LibLinphoneTester-native.vcxproj b/build/wp8/LibLinphoneTester-native/LibLinphoneTester-native.vcxproj index 0512be517..021ab6328 100644 --- a/build/wp8/LibLinphoneTester-native/LibLinphoneTester-native.vcxproj +++ b/build/wp8/LibLinphoneTester-native/LibLinphoneTester-native.vcxproj @@ -100,6 +100,7 @@ + diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 207310c99..661604ab0 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -454,7 +454,7 @@ static int prepare_log_collection_file_to_upload(const char *filename) { ortp_mutex_lock(&liblinphone_log_collection_mutex); output_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", filename); - output_file = COMPRESS_OPEN(output_filename, "a"); + output_file = COMPRESS_OPEN(output_filename, "w"); if (output_file == NULL) goto error; input_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone1.log"); input_file = fopen(input_filename, "r"); diff --git a/tester/Makefile.am b/tester/Makefile.am index d8877119d..7fb08bb0f 100644 --- a/tester/Makefile.am +++ b/tester/Makefile.am @@ -22,6 +22,7 @@ liblinphonetester_la_SOURCES = tester.c \ stun_tester.c \ remote_provisioning_tester.c \ quality_reporting_tester.c \ + log_collection_tester.c \ transport_tester.c \ player_tester.c diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 18990f313..a1ad60ec0 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -58,6 +58,7 @@ extern test_suite_t flexisip_test_suite; extern test_suite_t stun_test_suite; extern test_suite_t remote_provisioning_test_suite; extern test_suite_t quality_reporting_test_suite; +extern test_suite_t log_collection_test_suite; extern test_suite_t transport_test_suite; extern test_suite_t player_test_suite; diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c new file mode 100644 index 000000000..d8b9dd13d --- /dev/null +++ b/tester/log_collection_tester.c @@ -0,0 +1,145 @@ +/* + belle-sip - SIP (RFC3261) library. + Copyright (C) 2010 Belledonne Communications SARL + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include +#include +#include "CUnit/Basic.h" +#include "linphonecore.h" +#include "private.h" +#include "liblinphone_tester.h" + +extern char *strptime(char*, char*, struct tm*); + +LinphoneCoreManager* setup(bool_t enable_logs) { + linphone_core_enable_log_collection(enable_logs); + LinphoneCoreManager *marie; + int timeout_ms = 3000; + + // linphone_core_set_log_collection_size(10); + marie = linphone_core_manager_new( "marie_rc"); + // wait a few seconds to generate some traffic + while (timeout_ms > 0){ + linphone_core_iterate(marie->lc); + ms_usleep(100000); //100 ms sleep + timeout_ms -= 100; + // Generate some logs + ms_message("Time left: %d", timeout_ms); + } + return marie; +} + +time_t check_file(char * filepath, bool_t remove_file) { + time_t time_curr = -1; + if (filepath != NULL) { + int line_count = 0; + FILE *file = fopen(filepath, "r"); + char *line = NULL; + size_t line_size = 256; + struct tm tm_curr; + time_t time_prev = -1; + + // 1) expect to find folder name in filename path + CU_ASSERT_PTR_NOT_NULL(strstr(filepath, liblinphone_tester_writable_dir_prefix)); + + // 2) check file contents + while (getline(&line, &line_size, file) != -1) { + // a) there should be at least 100 lines + ++line_count; + + // b) logs should be ordered by date (format: 2014-11-04 15:22:12:606) + if (strlen(line) > 24) { + char date[24] = {'\0'}; + memcpy(date, line, 23); + if (strptime(date, "%Y-%m-%d %H:%M:%S", &tm_curr) != NULL) { + time_curr = mktime(&tm_curr); + CU_ASSERT_TRUE(time_curr >= time_prev); + time_prev = time_curr; + } + } + } + CU_ASSERT(line_count > 100); + free(line); + fclose(file); + if (remove_file) { + remove(filepath); + } + ms_free(filepath); + } + // return latest time in file + return time_curr; +} + +static OrtpLogLevel old_log_level; +// static LinphoneLogCollectionState old_collection_state; +static int collect_init() { + old_log_level = ortp_get_log_level_mask(); + // old_collection_state = liblinphone_log_collection_enabled; + // CU_ASSERT_FALSE("Fixme: // old_collection_state = liblinphone_log_collection_enabled;"); + + // if we want some logs, we must force them... even if user dont want to! + linphone_core_set_log_level(ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL); + linphone_core_set_log_collection_path(liblinphone_tester_writable_dir_prefix); + + return 0; +} + +static int collect_cleanup() { + linphone_core_set_log_level(old_log_level); + // liblinphone_log_collection_enabled = old_collection_state; + // CU_ASSERT_FALSE("Fixme: // liblinphone_log_collection_enabled = old_collection_state;"); + + return 0; +} + +static void collect_files_disabled() { + LinphoneCoreManager* marie = setup(FALSE); + CU_ASSERT_PTR_NULL(linphone_core_compress_log_collection(marie->lc)); + linphone_core_manager_destroy(marie); +} + +static void collect_files_filled() { + LinphoneCoreManager* marie = setup(TRUE); + char * filepath = linphone_core_compress_log_collection(marie->lc); + CU_ASSERT_PTR_NOT_NULL(filepath); + CU_ASSERT_EQUAL(ms_time(0), check_file(filepath, FALSE)); + linphone_core_manager_destroy(marie); +} + +static void collect_files_small_size() { + LinphoneCoreManager* marie = setup(TRUE); + // linphone_core_set_log_collection_size(10); + char * filepath= linphone_core_compress_log_collection(marie->lc); + CU_ASSERT_PTR_NOT_NULL(filepath); + CU_ASSERT_EQUAL(ms_time(0), check_file(filepath, TRUE)); + linphone_core_manager_destroy(marie); +} + +test_t log_collection_tests[] = { + { "No file when disabled", collect_files_disabled}, + { "Collect files filled when enabled", collect_files_filled}, + { "Logs collected into small file", collect_files_small_size}, +}; + +test_suite_t log_collection_test_suite = { + "LogCollection", + collect_init, + collect_cleanup, + sizeof(log_collection_tests) / sizeof(log_collection_tests[0]), + log_collection_tests +}; + diff --git a/tester/tester.c b/tester/tester.c index 97b45713d..c157fe49b 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -387,6 +387,7 @@ void liblinphone_tester_init(void) { add_test_suite(&flexisip_test_suite); add_test_suite(&remote_provisioning_test_suite); add_test_suite(&quality_reporting_test_suite); + add_test_suite(&log_collection_test_suite); add_test_suite(&transport_test_suite); add_test_suite(&player_test_suite); } From 91122e11da8a3d595beb413e5086ce7b481c9034 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 4 Nov 2014 17:13:27 +0100 Subject: [PATCH 107/249] Improve log collection API: - Allow setting a prefix for the log collection filenames - Allow defining the max file size of the log collection files --- coreapi/linphonecore.c | 122 ++++++++++++++++++++++++++++++++--------- coreapi/linphonecore.h | 42 ++++++++++++++ 2 files changed, 139 insertions(+), 25 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 661604ab0..ef81ef8c1 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -56,7 +56,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #endif #ifdef HAVE_ZLIB -#define COMPRESSED_LOG_COLLECTION_FILENAME "linphone_log.gz" +#define COMPRESSED_LOG_COLLECTION_EXTENSION "gz" #ifdef WIN32 #include #include @@ -66,8 +66,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #endif #include #else -#define COMPRESSED_LOG_COLLECTION_FILENAME "linphone_log.txt" +#define COMPRESSED_LOG_COLLECTION_EXTENSION "txt" #endif +#define LOG_COLLECTION_DEFAULT_PATH "." +#define LOG_COLLECTION_DEFAULT_PREFIX "linphone" +#define LOG_COLLECTION_DEFAULT_MAX_FILE_SIZE (10 * 1024 * 1024) + /*#define UNSTANDART_GSM_11K 1*/ @@ -81,8 +85,10 @@ static const char *liblinphone_version= #endif ; static OrtpLogFunc liblinphone_log_func = NULL; -static bool_t liblinphone_log_collection_enabled = FALSE; +static LinphoneLogCollectionState liblinphone_log_collection_state = LinphoneLogCollectionDisabled; static char * liblinphone_log_collection_path = NULL; +static char * liblinphone_log_collection_prefix = NULL; +static int liblinphone_log_collection_max_file_size = LOG_COLLECTION_DEFAULT_MAX_FILE_SIZE; static ortp_mutex_t liblinphone_log_collection_mutex; static bool_t liblinphone_serialize_logs = FALSE; static void set_network_reachable(LinphoneCore* lc,bool_t isReachable, time_t curtime); @@ -164,8 +170,6 @@ void linphone_core_set_log_level(OrtpLogLevel loglevel) { } } -#define LOGFILE_MAXSIZE (10 * 1024 * 1024) - static void linphone_core_log_collection_handler(OrtpLogLevel level, const char *fmt, va_list args) { const char *lname="undef"; char *msg; @@ -205,16 +209,20 @@ static void linphone_core_log_collection_handler(OrtpLogLevel level, const char } msg = ortp_strdup_vprintf(fmt, args); - log_filename1 = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone1.log"); - log_filename2 = ortp_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone2.log"); + log_filename1 = ortp_strdup_printf("%s/%s1.log", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX); + log_filename2 = ortp_strdup_printf("%s/%s2.log", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX); ortp_mutex_lock(&liblinphone_log_collection_mutex); log_file = fopen(log_filename1, "a"); fstat(fileno(log_file), &statbuf); - if (statbuf.st_size > LOGFILE_MAXSIZE) { + if (statbuf.st_size > liblinphone_log_collection_max_file_size) { fclose(log_file); log_file = fopen(log_filename2, "a"); fstat(fileno(log_file), &statbuf); - if (statbuf.st_size > LOGFILE_MAXSIZE) { + if (statbuf.st_size > liblinphone_log_collection_max_file_size) { fclose(log_file); unlink(log_filename1); rename(log_filename2, log_filename1); @@ -232,6 +240,13 @@ static void linphone_core_log_collection_handler(OrtpLogLevel level, const char ortp_free(msg); } +const char * linphone_core_get_log_collection_path(void) { + if (liblinphone_log_collection_path != NULL) { + return liblinphone_log_collection_path; + } + return LOG_COLLECTION_DEFAULT_PATH; +} + void linphone_core_set_log_collection_path(const char *path) { if (liblinphone_log_collection_path != NULL) { ms_free(liblinphone_log_collection_path); @@ -242,6 +257,31 @@ void linphone_core_set_log_collection_path(const char *path) { } } +const char * linphone_core_get_log_collection_prefix(void) { + if (liblinphone_log_collection_prefix != NULL) { + return liblinphone_log_collection_prefix; + } + return LOG_COLLECTION_DEFAULT_PREFIX; +} + +void linphone_core_set_log_collection_prefix(const char *prefix) { + if (liblinphone_log_collection_prefix != NULL) { + ms_free(liblinphone_log_collection_prefix); + liblinphone_log_collection_prefix = NULL; + } + if (prefix != NULL) { + liblinphone_log_collection_prefix = ms_strdup(prefix); + } +} + +int linphone_core_get_log_collection_max_file_size(void) { + return liblinphone_log_collection_max_file_size; +} + +void linphone_core_set_log_collection_max_file_size(int size) { + liblinphone_log_collection_max_file_size = size; +} + const char *linphone_core_get_log_collection_upload_server_url(LinphoneCore *core) { return lp_config_get_string(core->config, "misc", "log_collection_upload_server_url", NULL); } @@ -250,14 +290,18 @@ void linphone_core_set_log_collection_upload_server_url(LinphoneCore *core, cons lp_config_set_string(core->config, "misc", "log_collection_upload_server_url", server_url); } +LinphoneLogCollectionState linphone_core_log_collection_enabled(void) { + return liblinphone_log_collection_state; +} + void linphone_core_enable_log_collection(LinphoneLogCollectionState state) { /* at first call of this function, set liblinphone_log_func to the current * ortp log function */ if( liblinphone_log_func == NULL ){ liblinphone_log_func = ortp_logv_out; } - if ((state != LinphoneLogCollectionDisabled) && (liblinphone_log_collection_enabled == FALSE)) { - liblinphone_log_collection_enabled = TRUE; + liblinphone_log_collection_state = state; + if (state != LinphoneLogCollectionDisabled) { ortp_mutex_init(&liblinphone_log_collection_mutex, NULL); if (state == LinphoneLogCollectionEnabledWithoutPreviousLogHandler) { liblinphone_log_func = NULL; @@ -266,13 +310,15 @@ void linphone_core_enable_log_collection(LinphoneLogCollectionState state) { } ortp_set_log_handler(linphone_core_log_collection_handler); } else { - liblinphone_log_collection_enabled = FALSE; ortp_set_log_handler(liblinphone_log_func); } } static void delete_log_collection_upload_file(void) { - char *filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", COMPRESSED_LOG_COLLECTION_FILENAME); + char *filename = ms_strdup_printf("%s/%s_log.%s", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX, + COMPRESSED_LOG_COLLECTION_EXTENSION); unlink(filename); ms_free(filename); } @@ -307,7 +353,10 @@ static int log_collection_upload_on_send_body(belle_sip_user_body_handler_t *bh, /* If we've not reach the end of file yet, fill the buffer with more data */ if (offset < core->log_collection_upload_information->size) { - char *log_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", COMPRESSED_LOG_COLLECTION_FILENAME); + char *log_filename = ms_strdup_printf("%s/%s_log.%s", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX, + COMPRESSED_LOG_COLLECTION_EXTENSION); #ifdef HAVE_ZLIB FILE *log_file = fopen(log_filename, "rb"); #else @@ -453,17 +502,22 @@ static int prepare_log_collection_file_to_upload(const char *filename) { int ret = 0; ortp_mutex_lock(&liblinphone_log_collection_mutex); - output_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", filename); + output_filename = ms_strdup_printf("%s/%s", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, filename); output_file = COMPRESS_OPEN(output_filename, "w"); if (output_file == NULL) goto error; - input_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone1.log"); + input_filename = ms_strdup_printf("%s/%s1.log", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX); input_file = fopen(input_filename, "r"); if (input_file == NULL) goto error; ret = compress_file(input_file, output_file); if (ret < 0) goto error; fclose(input_file); ms_free(input_filename); - input_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone2.log"); + input_filename = ms_strdup_printf("%s/%s2.log", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX); input_file = fopen(input_filename, "r"); if (input_file != NULL) { ret = compress_file(input_file, output_file); @@ -481,7 +535,8 @@ error: static size_t get_size_of_file_to_upload(const char *filename) { struct stat statbuf; - char *output_filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", filename); + char *output_filename = ms_strdup_printf("%s/%s", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, filename); FILE *output_file = fopen(output_filename, "rb"); fstat(fileno(output_file), &statbuf); fclose(output_file); @@ -490,7 +545,7 @@ static size_t get_size_of_file_to_upload(const char *filename) { } void linphone_core_upload_log_collection(LinphoneCore *core) { - if ((core->log_collection_upload_information == NULL) && (linphone_core_get_log_collection_upload_server_url(core) != NULL) && (liblinphone_log_collection_enabled == TRUE)) { + if ((core->log_collection_upload_information == NULL) && (linphone_core_get_log_collection_upload_server_url(core) != NULL) && (liblinphone_log_collection_state != LinphoneLogCollectionDisabled)) { /* open a transaction with the server and send an empty request(RCS5.1 section 3.5.4.8.3.1) */ belle_http_request_listener_callbacks_t cbs = { 0 }; belle_http_request_listener_t *l; @@ -506,7 +561,9 @@ void linphone_core_upload_log_collection(LinphoneCore *core) { core->log_collection_upload_information->type = "text"; core->log_collection_upload_information->subtype = "plain"; #endif - core->log_collection_upload_information->name = COMPRESSED_LOG_COLLECTION_FILENAME; + core->log_collection_upload_information->name = ms_strdup_printf("%s_log.%s", + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX, + COMPRESSED_LOG_COLLECTION_EXTENSION); if (prepare_log_collection_file_to_upload(core->log_collection_upload_information->name) < 0) return; core->log_collection_upload_information->size = get_size_of_file_to_upload(core->log_collection_upload_information->name); uri = belle_generic_uri_parse(linphone_core_get_log_collection_upload_server_url(core)); @@ -520,19 +577,34 @@ void linphone_core_upload_log_collection(LinphoneCore *core) { } char * linphone_core_compress_log_collection(LinphoneCore *core) { - if (liblinphone_log_collection_enabled == FALSE) return NULL; - if (prepare_log_collection_file_to_upload(COMPRESSED_LOG_COLLECTION_FILENAME) < 0) return NULL; - return ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", COMPRESSED_LOG_COLLECTION_FILENAME); + char *filename = NULL; + if (liblinphone_log_collection_state == LinphoneLogCollectionDisabled) return NULL; + filename = ms_strdup_printf("%s_log.%s", + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX, + COMPRESSED_LOG_COLLECTION_EXTENSION); + if (prepare_log_collection_file_to_upload(filename) < 0) { + ms_free(filename); + return NULL; + } + ms_free(filename); + return ms_strdup_printf("%s/%s_log.%s", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX, + COMPRESSED_LOG_COLLECTION_EXTENSION); } void linphone_core_reset_log_collection(LinphoneCore *core) { char *filename; ortp_mutex_lock(&liblinphone_log_collection_mutex); delete_log_collection_upload_file(); - filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone1.log"); + filename = ms_strdup_printf("%s/%s1.log", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX); unlink(filename); ms_free(filename); - filename = ms_strdup_printf("%s/%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : ".", "linphone2.log"); + filename = ms_strdup_printf("%s/%s2.log", + liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, + liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX); unlink(filename); ms_free(filename); ortp_mutex_unlock(&liblinphone_log_collection_mutex); diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index a909191ee..edb390570 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1786,6 +1786,13 @@ typedef enum _LinphoneLogCollectionState { LinphoneLogCollectionEnabledWithoutPreviousLogHandler } LinphoneLogCollectionState; +/** + * Tells whether the linphone core log collection is enabled. + * @ingroup misc + * @returns The state of the linphone core log collection. + */ +LINPHONE_PUBLIC LinphoneLogCollectionState linphone_core_log_collection_enabled(void); + /** * Enable the linphone core log collection to upload logs on a server. * @ingroup misc @@ -1793,6 +1800,13 @@ typedef enum _LinphoneLogCollectionState { */ LINPHONE_PUBLIC void linphone_core_enable_log_collection(LinphoneLogCollectionState state); +/** + * Get the path where the log files will be written for log collection. + * @ingroup misc + * @returns The path where the log files will be written. + */ +LINPHONE_PUBLIC const char * linphone_core_get_log_collection_path(void); + /** * Set the path where the log files will be written for log collection. * @ingroup misc @@ -1800,6 +1814,34 @@ LINPHONE_PUBLIC void linphone_core_enable_log_collection(LinphoneLogCollectionSt */ LINPHONE_PUBLIC void linphone_core_set_log_collection_path(const char *path); +/** + * Get the prefix of the filenames that will be used for log collection. + * @ingroup misc + * @returns The prefix of the filenames used for log collection. + */ +LINPHONE_PUBLIC const char * linphone_core_get_log_collection_prefix(void); + +/** + * Set the prefix of the filenames that will be used for log collection. + * @ingroup misc + * @param[in] prefix The prefix to use for the filenames for log collection. + */ +LINPHONE_PUBLIC void linphone_core_set_log_collection_prefix(const char *prefix); + +/** + * Get the max file size in bytes of the files used for log collection. + * @ingroup misc + * @returns The max file size in bytes of the files used for log collection. + */ +LINPHONE_PUBLIC int linphone_core_get_log_collection_max_file_size(void); + +/** + * Set the max file size in bytes of the files used for log collection. + * @ingroup misc + * @param[in] size The max file size in bytes of the files used for log collection. + */ +LINPHONE_PUBLIC void linphone_core_set_log_collection_max_file_size(int size); + /** * Set the url of the server where to upload the collected log files. * @ingroup misc From c63bf0ee9e261ce4ed5b3252bc01b89738717a0e Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Tue, 4 Nov 2014 17:16:40 +0100 Subject: [PATCH 108/249] Fix a verbose non-error --- coreapi/misc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/coreapi/misc.c b/coreapi/misc.c index 81365f5a2..6a9141ea1 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -117,8 +117,9 @@ void linphone_core_set_payload_type_bitrate(LinphoneCore *lc, LinphonePayloadTyp ms_error("Cannot set an explicit bitrate for codec %s/%i, because it is not VBR.",pt->mime_type,pt->clock_rate); return; } + } else { + ms_error("linphone_core_set_payload_type_bitrate() payload type not in audio or video list !"); } - ms_error("linphone_core_set_payload_type_bitrate() payload type not in audio or video list !"); } From b3871b37b3fecadf72fab965e810a2fa1281a7cb Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 4 Nov 2014 18:43:42 +0100 Subject: [PATCH 109/249] fix compilation errors --- mediastreamer2 | 2 +- tester/log_collection_tester.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index b37fdd869..cefa09edf 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit b37fdd869e17c70ae2683ef1fc09231094c52f4a +Subproject commit cefa09edff80c2a1eacbee523979beaa763a21e9 diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index d8b9dd13d..2fd91509e 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -26,9 +26,11 @@ extern char *strptime(char*, char*, struct tm*); LinphoneCoreManager* setup(bool_t enable_logs) { - linphone_core_enable_log_collection(enable_logs); LinphoneCoreManager *marie; int timeout_ms = 3000; + + linphone_core_enable_log_collection(enable_logs); + // linphone_core_set_log_collection_size(10); marie = linphone_core_manager_new( "marie_rc"); From 4b7b43974d29f0e2e375833b5b4760116924ad14 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 5 Nov 2014 11:06:14 +0100 Subject: [PATCH 110/249] Fix log collection tests & API --- coreapi/linphonecore.c | 6 ++- coreapi/linphonecore.h | 10 +++-- tester/log_collection_tester.c | 74 ++++++++++++++++++---------------- 3 files changed, 50 insertions(+), 40 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index ef81ef8c1..db8e9391f 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -295,6 +295,8 @@ LinphoneLogCollectionState linphone_core_log_collection_enabled(void) { } void linphone_core_enable_log_collection(LinphoneLogCollectionState state) { + if (liblinphone_log_collection_state == state) return; + /* at first call of this function, set liblinphone_log_func to the current * ortp log function */ if( liblinphone_log_func == NULL ){ @@ -576,7 +578,7 @@ void linphone_core_upload_log_collection(LinphoneCore *core) { } } -char * linphone_core_compress_log_collection(LinphoneCore *core) { +char * linphone_core_compress_log_collection() { char *filename = NULL; if (liblinphone_log_collection_state == LinphoneLogCollectionDisabled) return NULL; filename = ms_strdup_printf("%s_log.%s", @@ -593,7 +595,7 @@ char * linphone_core_compress_log_collection(LinphoneCore *core) { COMPRESSED_LOG_COLLECTION_EXTENSION); } -void linphone_core_reset_log_collection(LinphoneCore *core) { +void linphone_core_reset_log_collection() { char *filename; ortp_mutex_lock(&liblinphone_log_collection_mutex); delete_log_collection_upload_file(); diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index edb390570..666872865 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1837,6 +1837,10 @@ LINPHONE_PUBLIC int linphone_core_get_log_collection_max_file_size(void); /** * Set the max file size in bytes of the files used for log collection. + * Warning: this function should only not be used to change size + * dynamically but instead only before calling @see + * linphone_core_enable_log_collection. If you increase max size + * on runtime, logs chronological order COULD be broken. * @ingroup misc * @param[in] size The max file size in bytes of the files used for log collection. */ @@ -1860,17 +1864,15 @@ LINPHONE_PUBLIC void linphone_core_upload_log_collection(LinphoneCore *core); /** * Compress the log collection in a single file. * @ingroup misc - * @param[in] core LinphoneCore object * @return The path of the compressed log collection file (to be freed calling ms_free()). */ -LINPHONE_PUBLIC char * linphone_core_compress_log_collection(LinphoneCore *core); +LINPHONE_PUBLIC char * linphone_core_compress_log_collection(); /** * Reset the log collection by removing the log files. * @ingroup misc - * @param[in] core LinphoneCore object */ -LINPHONE_PUBLIC void linphone_core_reset_log_collection(LinphoneCore *core); +LINPHONE_PUBLIC void linphone_core_reset_log_collection(); /** * Define a log handler. diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index 2fd91509e..62aaa096b 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -27,25 +27,21 @@ extern char *strptime(char*, char*, struct tm*); LinphoneCoreManager* setup(bool_t enable_logs) { LinphoneCoreManager *marie; - int timeout_ms = 3000; - - linphone_core_enable_log_collection(enable_logs); - + int timeout = 300; + + linphone_core_enable_log_collection(enable_logs); - // linphone_core_set_log_collection_size(10); marie = linphone_core_manager_new( "marie_rc"); // wait a few seconds to generate some traffic - while (timeout_ms > 0){ - linphone_core_iterate(marie->lc); - ms_usleep(100000); //100 ms sleep - timeout_ms -= 100; - // Generate some logs - ms_message("Time left: %d", timeout_ms); + while (--timeout){ + // Generate some logs - error logs because we must ensure that + // even if user did not enable logs, we will see them + ms_error("(test error)Timeout in %d...", timeout); } return marie; } -time_t check_file(char * filepath, bool_t remove_file) { +time_t check_file(char * filepath) { time_t time_curr = -1; if (filepath != NULL) { int line_count = 0; @@ -60,7 +56,7 @@ time_t check_file(char * filepath, bool_t remove_file) { // 2) check file contents while (getline(&line, &line_size, file) != -1) { - // a) there should be at least 100 lines + // a) there should be at least 25 lines ++line_count; // b) logs should be ordered by date (format: 2014-11-04 15:22:12:606) @@ -74,37 +70,25 @@ time_t check_file(char * filepath, bool_t remove_file) { } } } - CU_ASSERT(line_count > 100); + CU_ASSERT(line_count > 25); free(line); fclose(file); - if (remove_file) { - remove(filepath); - } ms_free(filepath); } // return latest time in file return time_curr; } -static OrtpLogLevel old_log_level; -// static LinphoneLogCollectionState old_collection_state; +static LinphoneLogCollectionState old_collection_state; static int collect_init() { - old_log_level = ortp_get_log_level_mask(); - // old_collection_state = liblinphone_log_collection_enabled; - // CU_ASSERT_FALSE("Fixme: // old_collection_state = liblinphone_log_collection_enabled;"); - - // if we want some logs, we must force them... even if user dont want to! - linphone_core_set_log_level(ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL); + old_collection_state = linphone_core_log_collection_enabled(); linphone_core_set_log_collection_path(liblinphone_tester_writable_dir_prefix); - return 0; } static int collect_cleanup() { - linphone_core_set_log_level(old_log_level); - // liblinphone_log_collection_enabled = old_collection_state; - // CU_ASSERT_FALSE("Fixme: // liblinphone_log_collection_enabled = old_collection_state;"); - + linphone_core_enable_log_collection(old_collection_state); + linphone_core_reset_log_collection(); return 0; } @@ -118,16 +102,37 @@ static void collect_files_filled() { LinphoneCoreManager* marie = setup(TRUE); char * filepath = linphone_core_compress_log_collection(marie->lc); CU_ASSERT_PTR_NOT_NULL(filepath); - CU_ASSERT_EQUAL(ms_time(0), check_file(filepath, FALSE)); + CU_ASSERT_EQUAL(ms_time(0), check_file(filepath)); linphone_core_manager_destroy(marie); } static void collect_files_small_size() { LinphoneCoreManager* marie = setup(TRUE); - // linphone_core_set_log_collection_size(10); - char * filepath= linphone_core_compress_log_collection(marie->lc); + char * filepath; + linphone_core_set_log_collection_max_file_size(1000); + filepath = linphone_core_compress_log_collection(marie->lc); CU_ASSERT_PTR_NOT_NULL(filepath); - CU_ASSERT_EQUAL(ms_time(0), check_file(filepath, TRUE)); + CU_ASSERT_EQUAL(ms_time(0), check_file(filepath)); + linphone_core_manager_destroy(marie); +} + +static void collect_files_changing_size() { + LinphoneCoreManager* marie = setup(TRUE); + char * filepath; + int waiting = 100; + + filepath = linphone_core_compress_log_collection(marie->lc); + CU_ASSERT_PTR_NOT_NULL(filepath); + CU_ASSERT_EQUAL(ms_time(0), check_file(filepath)); + + linphone_core_set_log_collection_max_file_size(1000); + // Generate some logs + while (--waiting) ms_error("(test error)Waiting %d...", waiting); + + filepath = linphone_core_compress_log_collection(marie->lc); + CU_ASSERT_PTR_NOT_NULL(filepath); + CU_ASSERT_EQUAL(ms_time(0), check_file(filepath)); + linphone_core_manager_destroy(marie); } @@ -135,6 +140,7 @@ test_t log_collection_tests[] = { { "No file when disabled", collect_files_disabled}, { "Collect files filled when enabled", collect_files_filled}, { "Logs collected into small file", collect_files_small_size}, + { "Logs collected when decreasing max size", collect_files_changing_size}, }; test_suite_t log_collection_test_suite = { From dee580f5e82fb3f1a7042984f0f524dbf537ef8d Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 5 Nov 2014 11:22:29 +0100 Subject: [PATCH 111/249] Fix compilation on Darwin --- tester/log_collection_tester.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index 62aaa096b..98035e89c 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -23,7 +23,9 @@ #include "private.h" #include "liblinphone_tester.h" +#ifndef __APPLE__ extern char *strptime(char*, char*, struct tm*); +#endif LinphoneCoreManager* setup(bool_t enable_logs) { LinphoneCoreManager *marie; From 0892bd026d56253dcb5f35d4e3ad7c821751141b Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 5 Nov 2014 12:10:09 +0100 Subject: [PATCH 112/249] Fix method linphone_chat_room_get_history which returned one extra message + fix memory leaks in message storage tester --- coreapi/linphonecore.c | 3 +++ coreapi/message_storage.c | 19 +++++++++++++------ tester/message_tester.c | 24 ++++++++++++++++++------ 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index db8e9391f..af9f61f0f 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -6282,6 +6282,9 @@ static void linphone_core_uninit(LinphoneCore *lc) if(lc->rec_file!=NULL){ ms_free(lc->rec_file); } + if (lc->chat_db_file){ + ms_free(lc->chat_db_file); + } if(lc->presence_model){ linphone_presence_model_unref(lc->presence_model); } diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index 8cbd088f2..dd22535ff 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -364,7 +364,7 @@ void linphone_chat_room_delete_history(LinphoneChatRoom *cr){ MSList *linphone_chat_room_get_history_range(LinphoneChatRoom *cr, int startm, int endm){ LinphoneCore *lc=linphone_chat_room_get_lc(cr); MSList *ret; - char *buf; + char *buf,*buf2; char *peer; uint64_t begin,end; int buf_max_size = 512; @@ -378,17 +378,24 @@ MSList *linphone_chat_room_get_history_range(LinphoneChatRoom *cr, int startm, i buf=ms_malloc(buf_max_size); buf=sqlite3_snprintf(buf_max_size-1,buf,"SELECT * FROM history WHERE remoteContact = %Q ORDER BY id DESC",peer); + if (startm<0) startm=0; if (endm>0&&endm>=startm){ - buf=sqlite3_snprintf(buf_max_size-1,buf,"%s LIMIT %i ",buf,endm+1-startm); + buf2=ms_strdup_printf("%s LIMIT %i ",buf,endm+1-startm); + ms_free(buf); + buf = buf2; }else if(startm>0){ - ms_message("%s(): end is lower than start (%d < %d). No end assumed.",__FUNCTION__,endm,startm); - buf=sqlite3_snprintf(buf_max_size-1,buf,"%s LIMIT -1",buf); + ms_message("%s(): end is lower than start (%d < %d). Assuming no end limit.",__FUNCTION__,endm,startm); + buf2=ms_strdup_printf("%s LIMIT -1",buf); + ms_free(buf); + buf = buf2; } if (startm>0){ - buf=sqlite3_snprintf(buf_max_size-1,buf,"%s OFFSET %i ",buf,startm); + buf2=ms_strdup_printf("%s OFFSET %i ",buf,startm); + ms_free(buf); + buf = buf2; } begin=ortp_get_cur_time_ms(); @@ -403,7 +410,7 @@ MSList *linphone_chat_room_get_history_range(LinphoneChatRoom *cr, int startm, i } MSList *linphone_chat_room_get_history(LinphoneChatRoom *cr,int nb_message){ - return linphone_chat_room_get_history_range(cr, 0, nb_message); + return linphone_chat_room_get_history_range(cr, 0, nb_message-1); } diff --git a/tester/message_tester.c b/tester/message_tester.c index 5fb61d999..8de0e8cfd 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -1001,25 +1001,37 @@ static void history_messages_count() { chatroom = linphone_core_get_chat_room(marie->lc, jehan_addr); CU_ASSERT_PTR_NOT_NULL(chatroom); if (chatroom){ - MSList *history=linphone_chat_room_get_history(chatroom,0); + messages=linphone_chat_room_get_history(chatroom,10); + CU_ASSERT_EQUAL(ms_list_size(messages), 10); + ms_list_free_with_data(messages, (void (*)(void*))linphone_chat_message_unref); + + messages=linphone_chat_room_get_history(chatroom,0); CU_ASSERT_EQUAL(linphone_chat_room_get_history_size(chatroom), 1270); - CU_ASSERT_EQUAL(ms_list_size(history), linphone_chat_room_get_history_size(chatroom)); + CU_ASSERT_EQUAL(ms_list_size(messages), 1270); /*check the second most recent message*/ - CU_ASSERT_STRING_EQUAL(linphone_chat_message_get_text((LinphoneChatMessage *)history->next->data), "Fore and aft follow each other."); + CU_ASSERT_STRING_EQUAL(linphone_chat_message_get_text((LinphoneChatMessage *)messages->next->data), "Fore and aft follow each other."); + ms_list_free_with_data(messages, (void (*)(void*))linphone_chat_message_unref); /*test offset+limit: retrieve the 42th latest message only and check its content*/ messages=linphone_chat_room_get_history_range(chatroom, 42, 42); CU_ASSERT_EQUAL(ms_list_size(messages), 1); CU_ASSERT_STRING_EQUAL(linphone_chat_message_get_text((LinphoneChatMessage *)messages->data), "If you open yourself to the Tao is intangible and evasive, yet prefers to keep us at the mercy of the kingdom, then all of the streams of hundreds of valleys because of its limitless possibilities."); + ms_list_free_with_data(messages, (void (*)(void*))linphone_chat_message_unref); /*test offset without limit*/ - CU_ASSERT_EQUAL(ms_list_size(linphone_chat_room_get_history_range(chatroom, 1265, -1)), 1270-1265); + messages = linphone_chat_room_get_history_range(chatroom, 1265, -1); + CU_ASSERT_EQUAL(ms_list_size(messages), 1270-1265); + ms_list_free_with_data(messages, (void (*)(void*))linphone_chat_message_unref); /*test limit without offset*/ - CU_ASSERT_EQUAL(ms_list_size(linphone_chat_room_get_history_range(chatroom, 0, 5)), 6); + messages = linphone_chat_room_get_history_range(chatroom, 0, 5); + CU_ASSERT_EQUAL(ms_list_size(messages), 6); + ms_list_free_with_data(messages, (void (*)(void*))linphone_chat_message_unref); /*test invalid start*/ - CU_ASSERT_EQUAL(ms_list_size(linphone_chat_room_get_history_range(chatroom, 1265, 1260)), 1270-1265); + messages = linphone_chat_room_get_history_range(chatroom, 1265, 1260); + CU_ASSERT_EQUAL(ms_list_size(messages), 1270-1265); + ms_list_free_with_data(messages, (void (*)(void*))linphone_chat_message_unref); } linphone_core_manager_destroy(marie); linphone_address_destroy(jehan_addr); From a7bbf819a7da31a767c74a29ba9f68f9b3345ccb Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 5 Nov 2014 14:15:33 +0100 Subject: [PATCH 113/249] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index cefa09edf..18902ba63 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit cefa09edff80c2a1eacbee523979beaa763a21e9 +Subproject commit 18902ba63c126a8d9cb4570fd86fc58692412127 From f2c6b211aa8aba0daa89ee57fdb914e068788319 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 5 Nov 2014 14:31:32 +0100 Subject: [PATCH 114/249] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 18902ba63..fecb96889 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 18902ba63c126a8d9cb4570fd86fc58692412127 +Subproject commit fecb96889cd96fd7a4837652e2a41762f72199c1 From 1466639bac348595318fea89ca8f55c6bc1ceba5 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 5 Nov 2014 16:54:03 +0100 Subject: [PATCH 115/249] Do not notify that a call was received when INVITE was invalid and rejected (488 Not acceptable for instance) --- coreapi/bellesip_sal/sal_op_call.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/coreapi/bellesip_sal/sal_op_call.c b/coreapi/bellesip_sal/sal_op_call.c index fbed2cf18..1530a0165 100644 --- a/coreapi/bellesip_sal/sal_op_call.c +++ b/coreapi/bellesip_sal/sal_op_call.c @@ -330,7 +330,7 @@ static void call_process_transaction_terminated(void *user_ctx, const belle_sip_ belle_sip_request_t* req; belle_sip_response_t* resp; bool_t release_call=FALSE; - + if (client_transaction) { req=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(client_transaction)); resp=belle_sip_transaction_get_response(BELLE_SIP_TRANSACTION(client_transaction)); @@ -484,15 +484,15 @@ static void process_request_event(void *op_base, const belle_sip_request_event_t ms_warning("replace header already set"); } - process_sdp_for_invite(op,req); - - if ((call_info=belle_sip_message_get_header(BELLE_SIP_MESSAGE(req),"Call-Info"))) { - if( strstr(belle_sip_header_get_unparsed_value(call_info),"answer-after=") != NULL) { - op->auto_answer_asked=TRUE; - ms_message("The caller asked to automatically answer the call(Emergency?)\n"); + if (process_sdp_for_invite(op,req) == 0) { + if ((call_info=belle_sip_message_get_header(BELLE_SIP_MESSAGE(req),"Call-Info"))) { + if( strstr(belle_sip_header_get_unparsed_value(call_info),"answer-after=") != NULL) { + op->auto_answer_asked=TRUE; + ms_message("The caller asked to automatically answer the call(Emergency?)\n"); + } } + op->base.root->callbacks.call_received(op); } - op->base.root->callbacks.call_received(op); break; } /* else same behavior as for EARLY state*/ } From 2c06389a226b57ace00dfb96176521407d4bb7b4 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 6 Nov 2014 10:53:14 +0100 Subject: [PATCH 116/249] update ms2 and ortp --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index fecb96889..da866fe64 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit fecb96889cd96fd7a4837652e2a41762f72199c1 +Subproject commit da866fe6449ae1156d3ce02b126beb7056479b0e diff --git a/oRTP b/oRTP index 90a19604d..1bfd94cea 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 90a19604d061d7f23189feb925847e66d366898e +Subproject commit 1bfd94cea8e62972162f926db3c6ffedca68ae22 From b7e3d3f4edf2a2c1f674c81c34bc3c1af5072115 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 6 Nov 2014 14:53:30 +0100 Subject: [PATCH 117/249] Fix compilation for strptime issue: declare __USE_XOPEN instead of declaring function prototype --- tester/log_collection_tester.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index 98035e89c..dd8d9bb7b 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -17,16 +17,16 @@ */ #include +#ifndef __USE_XOPEN + /*on Debian OS, time.h does declare strptime only if __USE_XOPEN is declared */ + #define __USE_XOPEN +#endif #include #include "CUnit/Basic.h" #include "linphonecore.h" #include "private.h" #include "liblinphone_tester.h" -#ifndef __APPLE__ -extern char *strptime(char*, char*, struct tm*); -#endif - LinphoneCoreManager* setup(bool_t enable_logs) { LinphoneCoreManager *marie; int timeout = 300; From abe5a1943107edefad56882606100b5e48a80f90 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 6 Nov 2014 17:25:03 +0100 Subject: [PATCH 118/249] Do not crash if SDP could not be parsed and had some unit tests. - avoid crash if missing SDP in REINVITE ACK - resume previous media parametrs instead of aborting call in case of invalid SDP in REINVITE --- coreapi/bellesip_sal/sal_impl.c | 8 +- coreapi/bellesip_sal/sal_impl.h | 2 + coreapi/bellesip_sal/sal_op_call.c | 26 +++- coreapi/bellesip_sal/sal_op_impl.c | 6 +- coreapi/callbacks.c | 20 ++- coreapi/linphonecall.c | 5 +- include/sal/sal.h | 6 + tester/call_tester.c | 221 ++++++++++++++++++++++++----- tester/liblinphone_tester.h | 10 ++ 9 files changed, 255 insertions(+), 49 deletions(-) diff --git a/coreapi/bellesip_sal/sal_impl.c b/coreapi/bellesip_sal/sal_impl.c index 6c2e84483..875f09ad0 100644 --- a/coreapi/bellesip_sal/sal_impl.c +++ b/coreapi/bellesip_sal/sal_impl.c @@ -953,7 +953,7 @@ static void make_supported_header(Sal *sal){ char *alltags=NULL; size_t buflen=64; size_t written=0; - + if (sal->supported){ belle_sip_object_unref(sal->supported); sal->supported=NULL; @@ -1003,7 +1003,7 @@ void sal_add_supported_tag(Sal *ctx, const char* tag){ ctx->supported_tags=ms_list_append(ctx->supported_tags,ms_strdup(tag)); make_supported_header(ctx); } - + } void sal_remove_supported_tag(Sal *ctx, const char* tag){ @@ -1101,3 +1101,7 @@ void sal_enable_sip_update_method(Sal *ctx,bool_t value) { ctx->enable_sip_update=value; } +void sal_default_enable_sdp_removal(Sal *sal, bool_t enable) { + if (enable) ms_message("Enabling SDP removal feature by default for all new SalOp in Sal[%p]!", sal); + sal->default_sdp_removal = enable; +} diff --git a/coreapi/bellesip_sal/sal_impl.h b/coreapi/bellesip_sal/sal_impl.h index 07124feb3..ed19b19e3 100644 --- a/coreapi/bellesip_sal/sal_impl.h +++ b/coreapi/bellesip_sal/sal_impl.h @@ -53,6 +53,7 @@ struct Sal{ bool_t enable_test_features; bool_t no_initial_route; bool_t enable_sip_update; /*true by default*/ + bool_t default_sdp_removal; }; typedef enum SalOpState { @@ -107,6 +108,7 @@ struct SalOp{ bool_t call_released; bool_t manual_refresher; bool_t has_auth_pending; + bool_t sdp_removal; /* do not add SDP in outgoing INVITE and remove it from incoming INVITE */ int auth_requests; /*number of auth requested for this op*/ }; diff --git a/coreapi/bellesip_sal/sal_op_call.c b/coreapi/bellesip_sal/sal_op_call.c index 1530a0165..c2e9a4a64 100644 --- a/coreapi/bellesip_sal/sal_op_call.c +++ b/coreapi/bellesip_sal/sal_op_call.c @@ -19,7 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "sal_impl.h" #include "offeranswer.h" -static int extract_sdp(belle_sip_message_t* message,belle_sdp_session_description_t** session_desc, SalReason *error); +static int extract_sdp(SalOp* op,belle_sip_message_t* message,belle_sdp_session_description_t** session_desc, SalReason *error); /*used for calls terminated before creation of a dialog*/ static void call_set_released(SalOp* op){ @@ -41,7 +41,12 @@ static void sdp_process(SalOp *h){ ms_message("Doing SDP offer/answer process of type %s",h->sdp_offering ? "outgoing" : "incoming"); if (h->result){ sal_media_description_unref(h->result); + h->result = NULL; } + + /* if SDP was invalid */ + if (h->base.remote_media == NULL) return; + h->result=sal_media_description_new(); if (h->sdp_offering){ offer_answer_initiate_outgoing(h->base.local_media,h->base.remote_media,h->result); @@ -162,13 +167,14 @@ static void handle_sdp_from_response(SalOp* op,belle_sip_response_t* response) { sal_media_description_unref(op->base.remote_media); op->base.remote_media=NULL; } - if (extract_sdp(BELLE_SIP_MESSAGE(response),&sdp,&reason)==0) { + if (extract_sdp(op,BELLE_SIP_MESSAGE(response),&sdp,&reason)==0) { if (sdp){ op->base.remote_media=sal_media_description_new(); sdp_to_media_description(sdp,op->base.remote_media); - if (op->base.local_media) sdp_process(op); }/*if no sdp in response, what can we do ?*/ } + /* process sdp in any case to reset result media description*/ + if (op->base.local_media) sdp_process(op); } static void cancelling_invite(SalOp* op ){ @@ -378,8 +384,16 @@ static void unsupported_method(belle_sip_server_transaction_t* server_transactio * If body was present is not a SDP or parsing of SDP failed, -1 is returned and SalReason is set appropriately. * **/ -static int extract_sdp(belle_sip_message_t* message,belle_sdp_session_description_t** session_desc, SalReason *error) { +static int extract_sdp(SalOp *op, belle_sip_message_t* message,belle_sdp_session_description_t** session_desc, SalReason *error) { belle_sip_header_content_type_t* content_type=belle_sip_message_get_header_by_type(message,belle_sip_header_content_type_t); + + if (op&&op->sdp_removal){ + ms_error("Removed willingly SDP because sal_call_enable_sdp_removal was set to TRUE."); + *session_desc=NULL; + *error=SalReasonNotAcceptable; + return -1; + } + if (content_type){ if (strcmp("application",belle_sip_header_content_type_get_type(content_type))==0 && strcmp("sdp",belle_sip_header_content_type_get_subtype(content_type))==0) { @@ -409,7 +423,7 @@ static int process_sdp_for_invite(SalOp* op,belle_sip_request_t* invite) { belle_sdp_session_description_t* sdp; int err=0; SalReason reason; - if (extract_sdp(BELLE_SIP_MESSAGE(invite),&sdp,&reason)==0) { + if (extract_sdp(op,BELLE_SIP_MESSAGE(invite),&sdp,&reason)==0) { if (sdp){ op->sdp_offering=FALSE; op->base.remote_media=sal_media_description_new(); @@ -532,7 +546,7 @@ static void process_request_event(void *op_base, const belle_sip_request_event_t if (strcmp("ACK",method)==0) { if (op->sdp_offering){ SalReason reason; - if (extract_sdp(BELLE_SIP_MESSAGE(req),&sdp,&reason)==0){ + if (extract_sdp(op,BELLE_SIP_MESSAGE(req),&sdp,&reason)==0){ if (sdp){ if (op->base.remote_media) sal_media_description_unref(op->base.remote_media); diff --git a/coreapi/bellesip_sal/sal_op_impl.c b/coreapi/bellesip_sal/sal_op_impl.c index ed18f52d0..2be6ce4eb 100644 --- a/coreapi/bellesip_sal/sal_op_impl.c +++ b/coreapi/bellesip_sal/sal_op_impl.c @@ -18,7 +18,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "sal_impl.h" - /*create an operation */ SalOp * sal_op_new(Sal *sal){ SalOp *op=ms_new0(SalOp,1); @@ -26,6 +25,7 @@ SalOp * sal_op_new(Sal *sal){ op->type=SalOpUnknown; op->privacy=SalPrivacyNone; op->manual_refresher=FALSE;/*tells that requests with expiry (SUBSCRIBE, PUBLISH) will be automatically refreshed*/ + op->sdp_removal=sal->default_sdp_removal; sal_op_ref(op); return op; } @@ -770,3 +770,7 @@ void sal_op_stop_refreshing(SalOp *op){ } } +void sal_call_enable_sdp_removal(SalOp *h, bool_t enable) { + if (enable) ms_message("Enabling SDP removal feature for SalOp[%p]!", h); + h->sdp_removal = enable; +} diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index bb6b5b9fb..2776a90ec 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -448,7 +448,7 @@ static void call_accepted(SalOp *op){ default: break; } - + if (md && !sal_media_description_empty(md) && !linphone_core_incompatible_security(lc,md)){ linphone_call_update_remote_session_id_and_ver(call); if (sal_media_description_has_dir(md,SalStreamSendOnly) || @@ -498,9 +498,21 @@ static void call_accepted(SalOp *op){ if (update_state) linphone_call_set_state(call, LinphoneCallStreamsRunning, "Streams running"); } }else{ - /*send a bye*/ - ms_error("Incompatible SDP offer received in 200Ok, need to abort the call"); - linphone_core_abort_call(lc,call,_("Incompatible, check codecs or security settings...")); + switch (call->prevstate){ + /*send a bye only in case of outgoing state*/ + case LinphoneCallOutgoingInit: + case LinphoneCallOutgoingProgress: + case LinphoneCallOutgoingRinging: + case LinphoneCallOutgoingEarlyMedia: + ms_error("Incompatible SDP offer received in 200 OK, need to abort the call"); + linphone_core_abort_call(lc,call,_("Incompatible, check codecs or security settings...")); + break; + /*otherwise we are able to resume previous state*/ + default: + ms_message("Incompatible SDP offer received in 200 OK, restoring previous state[%s]",linphone_call_state_to_string(call->prevstate)); + linphone_call_set_state(call,call->prevstate,_("Incompatible media parameters.")); + break; + } } } diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 7608c47ba..98ab0b47d 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -1879,11 +1879,14 @@ static void configure_rtp_session_for_rtcp_xr(LinphoneCore *lc, LinphoneCall *ca OrtpRtcpXrConfiguration currentconfig; const SalStreamDescription *localstream; const SalStreamDescription *remotestream; + SalMediaDescription *remotedesc = sal_call_get_remote_media_description(call->op); + + if (!remotedesc) return; localstream = sal_media_description_find_best_stream(call->localdesc, type); if (!localstream) return; localconfig = &localstream->rtcp_xr; - remotestream = sal_media_description_find_best_stream(sal_call_get_remote_media_description(call->op), type); + remotestream = sal_media_description_find_best_stream(remotedesc, type); if (!remotestream) return; remoteconfig = &remotestream->rtcp_xr; diff --git a/include/sal/sal.h b/include/sal/sal.h index 8f81f320d..74f1780bf 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -639,6 +639,12 @@ bool_t sal_call_autoanswer_asked(SalOp *op); void sal_call_send_vfu_request(SalOp *h); int sal_call_is_offerer(const SalOp *h); int sal_call_notify_refer_state(SalOp *h, SalOp *newcall); +/* Call test API */ +/*willingly fails to parse SDP from received packets (INVITE and/or ACK) if value=true */ +/* First version: for all new SalOp created (eg. each incoming or outgoing call). Do not forget to reset previous value when you are done!*/ +void sal_default_enable_sdp_removal(Sal* h, bool_t enable) ; +/* Second version: for a specific call*/ +void sal_call_enable_sdp_removal(SalOp *h, bool_t enable) ; /*Registration*/ int sal_register(SalOp *op, const char *proxy, const char *from, int expires); diff --git a/tester/call_tester.c b/tester/call_tester.c index f1a92a07c..512768725 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -171,13 +171,21 @@ void liblinphone_tester_check_rtcp(LinphoneCoreManager* caller, LinphoneCoreMana bool_t call_with_params2(LinphoneCoreManager* caller_mgr ,LinphoneCoreManager* callee_mgr - , const LinphoneCallParams *caller_params - , const LinphoneCallParams *callee_params, bool_t build_callee_params) { + , const LinphoneCallTestParams *caller_test_params + , const LinphoneCallTestParams *callee_test_params + , bool_t build_callee_params) { int retry=0; stats initial_caller=caller_mgr->stat; stats initial_callee=callee_mgr->stat; bool_t result=FALSE; char hellopath[256]; + LinphoneCallParams *caller_params = caller_test_params->base; + LinphoneCallParams *callee_params = callee_test_params->base; + bool_t did_received_call; + + sal_default_enable_sdp_removal(caller_mgr->lc->sal, caller_test_params->sdp_removal); + sal_default_enable_sdp_removal(callee_mgr->lc->sal, callee_test_params->sdp_removal); + /*use playfile for callee to avoid locking on capture card*/ linphone_core_use_files (callee_mgr->lc,TRUE); snprintf(hellopath,sizeof(hellopath), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); @@ -188,12 +196,21 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr CU_ASSERT_PTR_NOT_NULL(linphone_core_invite_address_with_params(caller_mgr->lc,callee_mgr->identity,caller_params)); } + /*linphone_core_invite(caller_mgr->lc,"pauline");*/ - CU_ASSERT_TRUE(wait_for(callee_mgr->lc - ,caller_mgr->lc - ,&callee_mgr->stat.number_of_LinphoneCallIncomingReceived - ,initial_callee.number_of_LinphoneCallIncomingReceived+1)); + did_received_call = wait_for(callee_mgr->lc + ,caller_mgr->lc + ,&callee_mgr->stat.number_of_LinphoneCallIncomingReceived + ,initial_callee.number_of_LinphoneCallIncomingReceived+1); + CU_ASSERT_EQUAL(did_received_call, !callee_test_params->sdp_removal); + + sal_default_enable_sdp_removal(caller_mgr->lc->sal, FALSE); + sal_default_enable_sdp_removal(callee_mgr->lc->sal, FALSE); + + if (!did_received_call) return 0; + + CU_ASSERT_TRUE(linphone_core_inc_invite_pending(callee_mgr->lc)); CU_ASSERT_EQUAL(caller_mgr->stat.number_of_LinphoneCallOutgoingProgress,initial_caller.number_of_LinphoneCallOutgoingProgress+1); @@ -212,9 +229,9 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr CU_ASSERT_PTR_NOT_NULL(linphone_core_get_current_call_remote_address(callee_mgr->lc)); - if(!linphone_core_get_current_call(caller_mgr->lc) || !linphone_core_get_current_call(callee_mgr->lc) || !linphone_core_get_current_call_remote_address(callee_mgr->lc)) + if(!linphone_core_get_current_call(caller_mgr->lc) || !linphone_core_get_current_call(callee_mgr->lc) || !linphone_core_get_current_call_remote_address(callee_mgr->lc)) { return 0; - else { + } else { LinphoneAddress* callee_from=linphone_address_clone(caller_mgr->identity); linphone_address_set_port(callee_from,0); /*remove port because port is never present in from header*/ @@ -264,9 +281,19 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr bool_t call_with_params(LinphoneCoreManager* caller_mgr ,LinphoneCoreManager* callee_mgr - , const LinphoneCallParams *caller_params - , const LinphoneCallParams *callee_params){ - return call_with_params2(caller_mgr,callee_mgr,caller_params,callee_params,FALSE); + ,const LinphoneCallParams *caller_params + ,const LinphoneCallParams *callee_params){ + LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; + caller_test_params.base = (LinphoneCallParams*)caller_params; + callee_test_params.base = (LinphoneCallParams*)caller_params; + return call_with_params2(caller_mgr,callee_mgr,&caller_test_params,&callee_test_params,FALSE); +} + +bool_t call_with_test_params(LinphoneCoreManager* caller_mgr + ,LinphoneCoreManager* callee_mgr + ,const LinphoneCallTestParams *caller_test_params + ,const LinphoneCallTestParams *callee_test_params){ + return call_with_params2(caller_mgr,callee_mgr,caller_test_params,callee_test_params,FALSE); } bool_t call_with_caller_params(LinphoneCoreManager* caller_mgr,LinphoneCoreManager* callee_mgr, const LinphoneCallParams *params) { @@ -1137,12 +1164,10 @@ static void call_paused_resumed_from_callee(void) { } #ifdef VIDEO_ENABLED -static bool_t add_video(LinphoneCoreManager* caller,LinphoneCoreManager* callee) { +static LinphoneCall* setup_video(LinphoneCoreManager* caller,LinphoneCoreManager* callee) { LinphoneVideoPolicy caller_policy; LinphoneCallParams* callee_params; LinphoneCall* call_obj; - stats initial_caller_stat=caller->stat; - stats initial_callee_stat=callee->stat; if (!linphone_core_get_current_call(callee->lc) || linphone_call_get_state(linphone_core_get_current_call(callee->lc)) != LinphoneCallStreamsRunning || !linphone_core_get_current_call(caller->lc) || linphone_call_get_state(linphone_core_get_current_call(caller->lc)) != LinphoneCallStreamsRunning ) { @@ -1158,14 +1183,20 @@ static bool_t add_video(LinphoneCoreManager* caller,LinphoneCoreManager* callee) linphone_core_enable_video_display(caller->lc, FALSE); linphone_core_set_video_policy(caller->lc,&caller_policy); - - if ((call_obj = linphone_core_get_current_call(callee->lc))) { callee_params = linphone_call_params_copy(linphone_call_get_current_params(call_obj)); /*add video*/ linphone_call_params_enable_video(callee_params,TRUE); linphone_core_update_call(callee->lc,call_obj,callee_params); + } + return call_obj; +} +static bool_t add_video(LinphoneCoreManager* caller,LinphoneCoreManager* callee) { + stats initial_caller_stat=caller->stat; + stats initial_callee_stat=callee->stat; + LinphoneCall *call_obj; + if ((call_obj=setup_video(caller, callee))){ CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallUpdatedByRemote,initial_caller_stat.number_of_LinphoneCallUpdatedByRemote+1)); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallUpdating,initial_callee_stat.number_of_LinphoneCallUpdating+1)); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallStreamsRunning,initial_callee_stat.number_of_LinphoneCallStreamsRunning+1)); @@ -1320,11 +1351,10 @@ static void srtp_call_with_several_video_switches(void) { static void call_with_declined_video_base(bool_t using_policy) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - LinphoneCallParams* callee_params=NULL; - LinphoneCallParams* caller_params; LinphoneCall* marie_call; LinphoneCall* pauline_call; LinphoneVideoPolicy marie_policy, pauline_policy; + LinphoneCallTestParams caller_test_params, callee_test_params; linphone_core_enable_video_capture(marie->lc, TRUE); linphone_core_enable_video_display(marie->lc, TRUE); linphone_core_enable_video_capture(pauline->lc, TRUE); @@ -1340,19 +1370,19 @@ static void call_with_declined_video_base(bool_t using_policy) { linphone_core_set_video_policy(pauline->lc,&pauline_policy); } - caller_params=linphone_core_create_default_call_parameters(pauline->lc); + caller_test_params.base=linphone_core_create_default_call_parameters(pauline->lc); if (!using_policy) - linphone_call_params_enable_video(caller_params,TRUE); + linphone_call_params_enable_video(caller_test_params.base,TRUE); if (!using_policy){ - callee_params=linphone_core_create_default_call_parameters(marie->lc); - linphone_call_params_enable_video(callee_params,FALSE); + callee_test_params.base=linphone_core_create_default_call_parameters(marie->lc); + linphone_call_params_enable_video(callee_test_params.base,FALSE); } - CU_ASSERT_TRUE(call_with_params2(pauline,marie,caller_params,callee_params,using_policy)); + CU_ASSERT_TRUE(call_with_params2(pauline,marie,&caller_test_params,&callee_test_params,using_policy)); - linphone_call_params_destroy(caller_params); - if (callee_params) linphone_call_params_destroy(callee_params); + linphone_call_params_destroy(caller_test_params.base); + if (callee_test_params.base) linphone_call_params_destroy(callee_test_params.base); marie_call=linphone_core_get_current_call(marie->lc); pauline_call=linphone_core_get_current_call(pauline->lc); @@ -1375,8 +1405,7 @@ static void call_with_declined_video_using_policy(void) { } static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* marie, bool_t using_policy) { - LinphoneCallParams* callee_params=NULL; - LinphoneCallParams* caller_params; + LinphoneCallTestParams caller_test_params, callee_test_params; LinphoneCall* marie_call; LinphoneCall* pauline_call; LinphoneVideoPolicy marie_policy, pauline_policy; @@ -1395,21 +1424,21 @@ static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* ma linphone_core_set_video_policy(pauline->lc,&pauline_policy); } - caller_params=linphone_core_create_default_call_parameters(pauline->lc); + caller_test_params.base=linphone_core_create_default_call_parameters(pauline->lc); if (!using_policy) - linphone_call_params_enable_video(caller_params,TRUE); + linphone_call_params_enable_video(caller_test_params.base,TRUE); if (!using_policy){ - callee_params=linphone_core_create_default_call_parameters(marie->lc); - linphone_call_params_enable_video(callee_params,TRUE); + callee_test_params.base=linphone_core_create_default_call_parameters(marie->lc); + linphone_call_params_enable_video(callee_test_params.base,TRUE); } - CU_ASSERT_TRUE(call_with_params2(pauline,marie,caller_params,callee_params,using_policy)); + CU_ASSERT_TRUE(call_with_params2(pauline,marie,&caller_test_params,&callee_test_params,using_policy)); marie_call=linphone_core_get_current_call(marie->lc); pauline_call=linphone_core_get_current_call(pauline->lc); - linphone_call_params_destroy(caller_params); - if (callee_params) linphone_call_params_destroy(callee_params); + linphone_call_params_destroy(caller_test_params.base); + if (callee_test_params.base) linphone_call_params_destroy(callee_test_params.base); if (marie_call && pauline_call ) { CU_ASSERT_TRUE(linphone_call_log_video_enabled(linphone_call_get_call_log(marie_call))); @@ -3198,6 +3227,124 @@ static void call_log_from_taken_from_p_asserted_id(void) { linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } + +static void incoming_invite_without_sdp() { + LinphoneCoreManager* caller = linphone_core_manager_new( "pauline_rc"); + LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); + LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; + + callee_test_params.sdp_removal = TRUE; + CU_ASSERT_FALSE(call_with_params2(caller,callee,&caller_test_params, &callee_test_params, FALSE)); + + CU_ASSERT_PTR_NULL(linphone_core_get_current_call(callee->lc)); + CU_ASSERT_EQUAL(caller->stat.number_of_LinphoneCallError,1); + /*call will be drop before presented to the application, because it is invalid*/ + CU_ASSERT_EQUAL(callee->stat.number_of_LinphoneCallIncomingReceived,0); + + linphone_core_manager_destroy(callee); + linphone_core_manager_destroy(caller); +} + +static void outgoing_invite_without_sdp() { + LinphoneCoreManager* caller = linphone_core_manager_new( "pauline_rc"); + LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); + LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; + + caller_test_params.sdp_removal = TRUE; + CU_ASSERT_FALSE(call_with_params2(caller,callee,&caller_test_params, &callee_test_params, FALSE)); + + CU_ASSERT_PTR_NULL(linphone_core_get_current_call(callee->lc)); + CU_ASSERT_EQUAL(callee->stat.number_of_LinphoneCallIncomingReceived,1); + CU_ASSERT_EQUAL(caller->stat.number_of_LinphoneCallError,1); + // actually callee does not receive error, because it just get a BYE from the other part + CU_ASSERT_EQUAL(callee->stat.number_of_LinphoneCallError,0); + CU_ASSERT_EQUAL(callee->stat.number_of_LinphoneCallEnd,1); + + linphone_core_manager_destroy(callee); + linphone_core_manager_destroy(caller); +} + +static void incoming_reinvite_without_ack_sdp() { +#ifdef VIDEO_ENABLED + LinphoneCoreManager* caller = linphone_core_manager_new( "pauline_rc"); + LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); + LinphoneCall * inc_call; + CU_ASSERT_TRUE(call(caller,callee)); + inc_call = linphone_core_get_current_call(callee->lc); + + CU_ASSERT_PTR_NOT_NULL(inc_call); + if (inc_call) { + const LinphoneCallParams *caller_params; + stats initial_caller_stat=caller->stat; + stats initial_callee_stat=callee->stat; + sal_call_enable_sdp_removal(inc_call->op, TRUE); + CU_ASSERT_PTR_NOT_NULL(setup_video(caller, callee)); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallUpdating,initial_callee_stat.number_of_LinphoneCallUpdating+1)); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallStreamsRunning,initial_callee_stat.number_of_LinphoneCallStreamsRunning+1)); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallStreamsRunning,initial_caller_stat.number_of_LinphoneCallStreamsRunning)); + /*Basically the negotiation failed but since the call was already running, we expect it to restore to + the previous state so error stats should not be changed*/ + CU_ASSERT_EQUAL(callee->stat.number_of_LinphoneCallError,initial_callee_stat.number_of_LinphoneCallError); + /*and remote should have received an update notification*/ + CU_ASSERT_EQUAL(caller->stat.number_of_LinphoneCallUpdatedByRemote,initial_caller_stat.number_of_LinphoneCallUpdatedByRemote+1); + + + CU_ASSERT_FALSE(linphone_call_params_video_enabled(linphone_call_get_current_params(linphone_core_get_current_call(callee->lc)))); + caller_params = linphone_call_get_current_params(linphone_core_get_current_call(caller->lc)); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,(int*)&caller_params->has_video,FALSE)); + + sal_call_enable_sdp_removal(inc_call->op, FALSE); + } + linphone_core_terminate_all_calls(caller->lc); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallEnd,1)); + + linphone_core_manager_destroy(callee); + linphone_core_manager_destroy(caller); +#else + ms_warning("not tested because video not available"); +#endif +} + +static void outgoing_reinvite_without_ack_sdp() { +#ifdef VIDEO_ENABLED + LinphoneCoreManager* caller = linphone_core_manager_new( "pauline_rc"); + LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); + LinphoneCall * out_call; + CU_ASSERT_TRUE(call(caller,callee)); + out_call = linphone_core_get_current_call(caller->lc); + + CU_ASSERT_PTR_NOT_NULL(out_call); + if (out_call) { + stats initial_caller_stat=caller->stat; + stats initial_callee_stat=callee->stat; + sal_call_enable_sdp_removal(out_call->op, TRUE); + CU_ASSERT_PTR_NOT_NULL(setup_video(caller, callee)); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallUpdating,initial_callee_stat.number_of_LinphoneCallUpdating+1)); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallStreamsRunning,initial_callee_stat.number_of_LinphoneCallStreamsRunning+1)); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallStreamsRunning,initial_caller_stat.number_of_LinphoneCallStreamsRunning)); + /*Basically the negotiation failed but since the call was already running, we expect it to restore to + the previous state so error stats should not be changed*/ + CU_ASSERT_EQUAL(callee->stat.number_of_LinphoneCallError,initial_callee_stat.number_of_LinphoneCallError); + /*and remote should not have received any update notification*/ + CU_ASSERT_EQUAL(caller->stat.number_of_LinphoneCallUpdatedByRemote,initial_caller_stat.number_of_LinphoneCallUpdatedByRemote); + + CU_ASSERT_FALSE(linphone_call_params_video_enabled(linphone_call_get_current_params(linphone_core_get_current_call(callee->lc)))); + CU_ASSERT_FALSE(linphone_call_params_video_enabled(linphone_call_get_current_params(linphone_core_get_current_call(caller->lc)))); + + sal_call_enable_sdp_removal(out_call->op, FALSE); + } + linphone_core_terminate_all_calls(caller->lc); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallEnd,1)); + + linphone_core_manager_destroy(callee); + linphone_core_manager_destroy(caller); +#else + ms_warning("not tested because video not available"); +#endif +} + test_t call_tests[] = { { "Early declined call", early_declined_call }, { "Call declined", call_declined }, @@ -3298,7 +3445,11 @@ test_t call_tests[] = { { "Call with in-dialog codec change", call_with_in_dialog_codec_change }, { "Call with in-dialog codec change no sdp", call_with_in_dialog_codec_change_no_sdp }, { "Call with custom supported tags", call_with_custom_supported_tags }, - { "Call log from taken from asserted id",call_log_from_taken_from_p_asserted_id} + { "Call log from taken from asserted id",call_log_from_taken_from_p_asserted_id}, + { "Incoming INVITE without SDP",incoming_invite_without_sdp}, + { "Outgoing INVITE without SDP",outgoing_invite_without_sdp}, + { "Incoming REINVITE without SDP in ACK",incoming_reinvite_without_ack_sdp}, + { "Outgoing REINVITE without SDP in ACK",outgoing_reinvite_without_ack_sdp}, }; test_suite_t call_test_suite = { diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index a1ad60ec0..d8ecb1987 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -212,6 +212,11 @@ typedef struct _LinphoneCoreManager { bool_t decline_subscribe; } LinphoneCoreManager; +typedef struct _LinphoneCallTestParams { + LinphoneCallParams *base; + bool_t sdp_removal; +} LinphoneCallTestParams; + LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, int check_for_proxies); LinphoneCoreManager* linphone_core_manager_new(const char* rc_file); void linphone_core_manager_stop(LinphoneCoreManager *mgr); @@ -246,6 +251,11 @@ bool_t call_with_params(LinphoneCoreManager* caller_mgr ,LinphoneCoreManager* callee_mgr , const LinphoneCallParams *caller_params , const LinphoneCallParams *callee_params); +bool_t call_with_test_params(LinphoneCoreManager* caller_mgr + ,LinphoneCoreManager* callee_mgr + ,const LinphoneCallTestParams *caller_test_params + ,const LinphoneCallTestParams *callee_test_params); + bool_t call(LinphoneCoreManager* caller_mgr,LinphoneCoreManager* callee_mgr); void end_call(LinphoneCoreManager *m1, LinphoneCoreManager *m2); stats * get_stats(LinphoneCore *lc); From cc5ec63197fba457f66f1d589fc27dddd4e7ed0b Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 7 Nov 2014 08:39:00 +0100 Subject: [PATCH 119/249] log_collection_tester on android, delete local ref to avoid 500 local ref limit on android --- build/android/liblinphone_tester.mk | 1 - tester/liblinphone_tester.c | 1 + tester/tester.c | 2 ++ 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/build/android/liblinphone_tester.mk b/build/android/liblinphone_tester.mk index 5ca3732be..b23a381bd 100644 --- a/build/android/liblinphone_tester.mk +++ b/build/android/liblinphone_tester.mk @@ -14,7 +14,6 @@ common_SRC_FILES := \ tester.c \ remote_provisioning_tester.c \ quality_reporting_tester.c \ - log_collection_tester.c \ transport_tester.c \ player_tester.c diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c index 5fb91605c..5d68bc2cf 100644 --- a/tester/liblinphone_tester.c +++ b/tester/liblinphone_tester.c @@ -80,6 +80,7 @@ void cunit_android_trace_handler(int level, const char *fmt, va_list args) { jmethodID method = (*env)->GetMethodID(env, cls, "printLog", "(ILjava/lang/String;)V"); (*env)->CallVoidMethod(env, current_obj, method, javaLevel, javaString); (*env)->DeleteLocalRef(env,javaString); + (*env)->DeleteLocalRef(env,cls); } JNIEXPORT jint JNICALL Java_org_linphone_tester_Tester_run(JNIEnv *env, jobject obj, jobjectArray stringArray) { diff --git a/tester/tester.c b/tester/tester.c index c157fe49b..0973c5810 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -387,7 +387,9 @@ void liblinphone_tester_init(void) { add_test_suite(&flexisip_test_suite); add_test_suite(&remote_provisioning_test_suite); add_test_suite(&quality_reporting_test_suite); +#ifndef ANDROID add_test_suite(&log_collection_test_suite); +#endif add_test_suite(&transport_test_suite); add_test_suite(&player_test_suite); } From f139119eae359e2f834849aff02b292e84710922 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 7 Nov 2014 10:10:24 +0100 Subject: [PATCH 120/249] Minor improvement to README --- README.macos.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/README.macos.md b/README.macos.md index cbdd4c24c..6dd8b4625 100644 --- a/README.macos.md +++ b/README.macos.md @@ -34,7 +34,7 @@ In order to enable generation of bundle for multiple MacOS version and 32 bit pr sudo port install gtk-osx-application -python27 sudo port install hicolor-icon-theme - #### Using HomeBrew +#### Using HomeBrew brew install automake intltool libtool pkg-config coreutils \ yasm nasm wget imagemagick gettext gtk+ speex ffmpeg pygtk @@ -112,25 +112,24 @@ The next pieces need to be compiled manually. The libvpx build isn't able to produce dual architecture files. To workaround this, configure libvpx twice and use lipo to create a dual architecture `libvpx.a`. * (Optional, proprietary extension only) Compile and install the tunnel library - 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, : - Then or otherwise, do: - - PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --with-readline=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict && make + # HomeBrew + PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict --with-readline=/usr/local && make + # MacPorts + PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict --with-readline=/opt/local && make * Install on the system sudo make install - -You are done. + You are done. ### Generate portable bundle From d551c1282a5dca0005400c6357cd365e16390d1a Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 7 Nov 2014 14:14:43 +0100 Subject: [PATCH 121/249] Fix segfault in call suite: initialize correctly test params --- tester/call_tester.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 512768725..62959a3d9 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -1354,7 +1354,7 @@ static void call_with_declined_video_base(bool_t using_policy) { LinphoneCall* marie_call; LinphoneCall* pauline_call; LinphoneVideoPolicy marie_policy, pauline_policy; - LinphoneCallTestParams caller_test_params, callee_test_params; + LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; linphone_core_enable_video_capture(marie->lc, TRUE); linphone_core_enable_video_display(marie->lc, TRUE); linphone_core_enable_video_capture(pauline->lc, TRUE); @@ -1405,7 +1405,7 @@ static void call_with_declined_video_using_policy(void) { } static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* marie, bool_t using_policy) { - LinphoneCallTestParams caller_test_params, callee_test_params; + LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; LinphoneCall* marie_call; LinphoneCall* pauline_call; LinphoneVideoPolicy marie_policy, pauline_policy; @@ -1837,7 +1837,7 @@ static void simple_conference_base(LinphoneCoreManager* marie, LinphoneCoreManag CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallStreamsRunning,initial_marie_stat.number_of_LinphoneCallStreamsRunning+2,3000)); CU_ASSERT_TRUE(linphone_core_is_in_conference(marie->lc)); - CU_ASSERT_EQUAL(linphone_core_get_conference_size(marie->lc),3) + CU_ASSERT_EQUAL(linphone_core_get_conference_size(marie->lc),3); /* * FIXME: check_ice cannot work as it is today because there is no current call for the party that hosts the conference From 52312c0361290bab0c955f134e660ab44220ca85 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 7 Nov 2014 15:15:57 +0100 Subject: [PATCH 122/249] Fix compilation with ndk 10c --- build/android/Android.mk | 4 +--- java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java | 8 ++------ 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/build/android/Android.mk b/build/android/Android.mk index c281b241d..cb4b703f4 100755 --- a/build/android/Android.mk +++ b/build/android/Android.mk @@ -256,9 +256,7 @@ LOCAL_EXPORT_CFLAGS := $(LOCAL_CFLAGS) ifeq ($(_BUILD_VIDEO),1) LOCAL_SHARED_LIBRARIES += \ - libavcodec-linphone \ - libswscale-linphone \ - libavutil-linphone + libffmpeg-linphone endif LOCAL_MODULE := liblinphone diff --git a/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java b/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java index f0d3ae064..2bf7b6245 100644 --- a/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java @@ -48,13 +48,9 @@ public class LinphoneCoreFactoryImpl extends LinphoneCoreFactory { // FFMPEG (audio/video) if (Version.isX86()) { - loadOptionalLibrary("avutil-linphone-x86"); - loadOptionalLibrary("swscale-linphone-x86"); - loadOptionalLibrary("avcodec-linphone-x86"); + loadOptionalLibrary("ffmpeg-linphone-x86"); } else if (Version.isArmv7()) { - loadOptionalLibrary("avutil-linphone-arm"); - loadOptionalLibrary("swscale-linphone-arm"); - loadOptionalLibrary("avcodec-linphone-arm"); + loadOptionalLibrary("ffmpeg-linphone-arm"); } //Main library From 77f4e6d2d670d191625534c48656de180810010a Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 7 Nov 2014 15:36:42 +0100 Subject: [PATCH 123/249] Fix log collection test: 1000 bytes for 25 lines in a file is a little undersized (actually, it fits 24 lines!) --- tester/log_collection_tester.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index dd8d9bb7b..c9299f1bb 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -72,7 +72,7 @@ time_t check_file(char * filepath) { } } } - CU_ASSERT(line_count > 25); + CU_ASSERT_TRUE(line_count > 25); free(line); fclose(file); ms_free(filepath); @@ -111,7 +111,7 @@ static void collect_files_filled() { static void collect_files_small_size() { LinphoneCoreManager* marie = setup(TRUE); char * filepath; - linphone_core_set_log_collection_max_file_size(1000); + linphone_core_set_log_collection_max_file_size(5000); filepath = linphone_core_compress_log_collection(marie->lc); CU_ASSERT_PTR_NOT_NULL(filepath); CU_ASSERT_EQUAL(ms_time(0), check_file(filepath)); @@ -127,7 +127,7 @@ static void collect_files_changing_size() { CU_ASSERT_PTR_NOT_NULL(filepath); CU_ASSERT_EQUAL(ms_time(0), check_file(filepath)); - linphone_core_set_log_collection_max_file_size(1000); + linphone_core_set_log_collection_max_file_size(5000); // Generate some logs while (--waiting) ms_error("(test error)Waiting %d...", waiting); From 4392e2ff4ae9d6f794b13850e2920bc00d331d75 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 7 Nov 2014 15:39:59 +0100 Subject: [PATCH 124/249] Rename SDP invites tests --- tester/call_tester.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 62959a3d9..37b28ddfd 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -3447,9 +3447,9 @@ test_t call_tests[] = { { "Call with custom supported tags", call_with_custom_supported_tags }, { "Call log from taken from asserted id",call_log_from_taken_from_p_asserted_id}, { "Incoming INVITE without SDP",incoming_invite_without_sdp}, - { "Outgoing INVITE without SDP",outgoing_invite_without_sdp}, - { "Incoming REINVITE without SDP in ACK",incoming_reinvite_without_ack_sdp}, - { "Outgoing REINVITE without SDP in ACK",outgoing_reinvite_without_ack_sdp}, + { "Outgoing INVITE without ACK SDP",outgoing_invite_without_sdp}, + { "Incoming REINVITE without SDP",incoming_reinvite_without_ack_sdp}, + { "Outgoing REINVITE without ACK SDP",outgoing_reinvite_without_ack_sdp}, }; test_suite_t call_test_suite = { From a12c07a3abd3981609d517d90bde8f049f648f4b Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 7 Nov 2014 16:01:24 +0100 Subject: [PATCH 125/249] Fix quality reporting test: since qos analyzer now use a minimum interval time, we have to add some extra delay --- mediastreamer2 | 2 +- tester/quality_reporting_tester.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index da866fe64..fa31c93d0 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit da866fe6449ae1156d3ce02b126beb7056479b0e +Subproject commit fa31c93d0a27a2e45877ed5b746c4673064f8452 diff --git a/tester/quality_reporting_tester.c b/tester/quality_reporting_tester.c index d0ad63968..505949a74 100644 --- a/tester/quality_reporting_tester.c +++ b/tester/quality_reporting_tester.c @@ -275,14 +275,14 @@ static void quality_reporting_interval_report() { if (create_call_for_quality_reporting_tests(marie, pauline, &call_marie, &call_pauline, NULL, NULL)) { linphone_reporting_set_on_report_send(call_marie, on_report_send_mandatory); - linphone_proxy_config_set_quality_reporting_interval(call_marie->dest_proxy, 3); + linphone_proxy_config_set_quality_reporting_interval(call_marie->dest_proxy, 10); CU_ASSERT_PTR_NOT_NULL(linphone_core_get_current_call(marie->lc)); CU_ASSERT_PTR_NOT_NULL(linphone_core_get_current_call(pauline->lc)); // PUBLISH submission to the collector should be ok - CU_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,&marie->stat.number_of_LinphonePublishProgress,3,25000)); - CU_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,&marie->stat.number_of_LinphonePublishOk,3,25000)); + CU_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,&marie->stat.number_of_LinphonePublishProgress,3,60000)); + CU_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,&marie->stat.number_of_LinphonePublishOk,3,60000)); } linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); From 3d744d407034e72f2a9bc5291509c08f84f9666a Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 7 Nov 2014 17:59:27 +0100 Subject: [PATCH 126/249] * add test for ipv6 calls add linphone_call_media_in_progress() method for app to easily check that ice has finished or not its processing. Update GTK app accordingly, so that adding video is no longer possible while ICE is in progress. --- coreapi/linphonecall.c | 21 +++++++++++++++++++++ coreapi/linphonecore.c | 4 +++- coreapi/linphonecore.h | 3 ++- coreapi/misc.c | 2 +- gtk/incall_view.c | 12 +++++++++++- tester/call_tester.c | 26 ++++++++++++++++++++++++++ tester/liblinphone_tester.c | 18 +++++++++++++++++- tester/liblinphone_tester.h | 1 + tester/rcfiles/pauline_tcp_rc | 2 +- 9 files changed, 83 insertions(+), 6 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 98ab0b47d..c0afd17a5 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2532,6 +2532,27 @@ const LinphoneCallStats *linphone_call_get_video_stats(LinphoneCall *call) { return stats; } +static bool_t ice_in_progress(LinphoneCallStats *stats){ + return stats->ice_state==LinphoneIceStateInProgress; +} + +/** + * Indicates whether an operation is in progress at the media side. + * It can a bad idea to initiate signaling operations (adding video, pausing the call, removing video, changing video parameters) while + * the media is busy in establishing the connection (typically ICE connectivity checks). It can result in failures generating loss of time + * in future operations in the call. + * Applications are invited to check this function after each call state change to decide whether certain operations are permitted or not. + * @param call the call + * @return TRUE if media is busy in establishing the connection, FALSE otherwise. +**/ +bool_t linphone_call_media_in_progress(LinphoneCall *call){ + bool_t ret=FALSE; + if (ice_in_progress(&call->stats[LINPHONE_CALL_STATS_AUDIO]) || ice_in_progress(&call->stats[LINPHONE_CALL_STATS_VIDEO])) + ret=TRUE; + /*TODO: could check zrtp state, upnp state*/ + return ret; +} + /** * Get the local loss rate since last report * @return The sender loss rate diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index af9f61f0f..0832fc947 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -2295,9 +2295,11 @@ void linphone_core_enable_ipv6(LinphoneCore *lc, bool_t val){ if (lc->sip_conf.ipv6_enabled!=val){ lc->sip_conf.ipv6_enabled=val; if (lc->sal){ - /* we need to restart eXosip */ + /* we need to update the sip stack */ apply_transports(lc); } + /*update the localip immediately for the network monitor to avoid to "discover" later that we switched to ipv6*/ + linphone_core_get_local_ip(lc,AF_UNSPEC,NULL,lc->localip); } } diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 666872865..0be4be5b0 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -481,7 +481,7 @@ typedef struct _LinphoneVideoPolicy LinphoneVideoPolicy; * @ingroup initializing **/ enum _LinphoneIceState{ - LinphoneIceStateNotActivated, /**< ICE has not been activated for this call */ + LinphoneIceStateNotActivated, /**< ICE has not been activated for this call or stream*/ LinphoneIceStateFailed, /**< ICE processing has failed */ LinphoneIceStateInProgress, /**< ICE process is in progress */ LinphoneIceStateHostConnection, /**< ICE has established a direct connection to the remote host */ @@ -730,6 +730,7 @@ LINPHONE_PUBLIC void linphone_call_zoom_video(LinphoneCall* call, float zoom_fac LINPHONE_PUBLIC void linphone_call_start_recording(LinphoneCall *call); LINPHONE_PUBLIC void linphone_call_stop_recording(LinphoneCall *call); LINPHONE_PUBLIC LinphonePlayer * linphone_call_get_player(LinphoneCall *call); +LINPHONE_PUBLIC bool_t linphone_call_media_in_progress(LinphoneCall *call); /** * Return TRUE if this call is currently part of a conference diff --git a/coreapi/misc.c b/coreapi/misc.c index 6a9141ea1..f762bb537 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -686,7 +686,7 @@ void linphone_core_update_ice_state_in_call_stats(LinphoneCall *call) } else { call->stats[LINPHONE_CALL_STATS_VIDEO].ice_state = LinphoneIceStateFailed; } - } + }else call->stats[LINPHONE_CALL_STATS_VIDEO].ice_state = LinphoneIceStateNotActivated; } else if (session_state == IS_Running) { call->stats[LINPHONE_CALL_STATS_AUDIO].ice_state = LinphoneIceStateInProgress; if (call->params->has_video && (video_check_list != NULL)) { diff --git a/gtk/incall_view.c b/gtk/incall_view.c index 5329508b6..4fa0bd66b 100644 --- a/gtk/incall_view.c +++ b/gtk/incall_view.c @@ -426,7 +426,9 @@ void linphone_gtk_update_video_button(LinphoneCall *call){ GtkWidget *conf_frame; const LinphoneCallParams *params=linphone_call_get_current_params(call); gboolean has_video=linphone_call_params_video_enabled(params); + gboolean button_sensitive=FALSE; if (call_view==NULL) return; + button=linphone_gtk_get_widget(call_view,"video_button"); gtk_button_set_image(GTK_BUTTON(button), @@ -436,12 +438,20 @@ void linphone_gtk_update_video_button(LinphoneCall *call){ gtk_widget_set_sensitive(button,FALSE); return; } + switch(linphone_call_get_state(call)){ + case LinphoneCallStreamsRunning: + button_sensitive=!linphone_call_media_in_progress(call); + break; + default: + button_sensitive=FALSE; + break; + } + gtk_widget_set_sensitive(button,button_sensitive); if (GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button),"signal_connected"))==0){ g_signal_connect(G_OBJECT(button),"clicked",(GCallback)video_button_clicked,call); g_object_set_data(G_OBJECT(button),"signal_connected",GINT_TO_POINTER(1)); } conf_frame=(GtkWidget *)g_object_get_data(G_OBJECT(linphone_gtk_get_main_window()),"conf_frame"); - gtk_widget_set_sensitive(button,linphone_call_get_state(call)==LinphoneCallStreamsRunning); if(conf_frame!=NULL){ gtk_widget_set_sensitive(button,FALSE); } diff --git a/tester/call_tester.c b/tester/call_tester.c index 37b28ddfd..9918e526d 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -336,6 +336,31 @@ static void simple_call(void) { } } +static void direct_call_over_ipv6(){ + LinphoneCoreManager* marie; + LinphoneCoreManager* pauline; + + if (liblinphone_tester_ipv6_available()){ + marie = linphone_core_manager_new( "marie_rc"); + pauline = linphone_core_manager_new( "pauline_tcp_rc"); + linphone_core_enable_ipv6(marie->lc,TRUE); + linphone_core_enable_ipv6(pauline->lc,TRUE); + linphone_core_set_default_proxy_config(marie->lc,NULL); + linphone_core_invite(marie->lc,"sip:[::1]:12002;transport=tcp"); + + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallOutgoingRinging,1)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallIncomingReceived,1)); + linphone_core_accept_call(pauline->lc,linphone_core_get_current_call(pauline->lc)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,1)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,1)); + + liblinphone_tester_check_rtcp(marie,pauline); + end_call(marie,pauline); + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); + }else ms_warning("Test skipped, no ipv6 available"); +} + static void call_outbound_with_multiple_proxy() { LinphoneCoreManager* pauline = linphone_core_manager_new2( "pauline_rc", FALSE); LinphoneCoreManager* marie = linphone_core_manager_new2( "marie_rc", FALSE); @@ -3354,6 +3379,7 @@ test_t call_tests[] = { { "Cancelled ringing call", cancelled_ringing_call }, { "Call failed because of codecs", call_failed_because_of_codecs }, { "Simple call", simple_call }, + { "Direct call over IPv6", direct_call_over_ipv6}, { "Outbound call with multiple proxy possible", call_outbound_with_multiple_proxy }, { "Audio call recording", audio_call_recording_test }, #if 0 /* not yet activated because not implemented */ diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c index 5d68bc2cf..26f3521ec 100644 --- a/tester/liblinphone_tester.c +++ b/tester/liblinphone_tester.c @@ -115,7 +115,23 @@ static void liblinphone_tester_qnx_log_handler(OrtpLogLevel lev, const char *fmt } #endif /* __QNX__ */ - +int liblinphone_tester_ipv6_available(void){ + struct addrinfo *ai=belle_sip_ip_address_to_addrinfo(AF_INET6,"2a01:e00::2",53); + if (ai){ + struct sockaddr_storage ss; + struct addrinfo src; + socklen_t slen=sizeof(ss); + char localip[128]; + int port=0; + belle_sip_get_src_addr_for(ai->ai_addr,ai->ai_addrlen,(struct sockaddr*) &ss,&slen,4444); + src.ai_addr=(struct sockaddr*) &ss; + src.ai_addrlen=slen; + belle_sip_addrinfo_to_ip(&src,localip, sizeof(localip),&port); + freeaddrinfo(ai); + return strcmp(localip,"::1")!=0; + } + return FALSE; +} void helper(const char *name) { liblinphone_tester_fprintf(stderr,"%s --help\n" diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index d8ecb1987..464926707 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -76,6 +76,7 @@ extern void liblinphone_tester_uninit(void); extern int liblinphone_tester_run_tests(const char *suite_name, const char *test_name); extern void liblinphone_tester_set_fileprefix(const char* file_prefix); extern void liblinphone_tester_set_writable_dir_prefix(const char* writable_dir_prefix); +extern int liblinphone_tester_ipv6_available(void); #ifdef __cplusplus }; diff --git a/tester/rcfiles/pauline_tcp_rc b/tester/rcfiles/pauline_tcp_rc index 809c1ace6..11cdb64cd 100644 --- a/tester/rcfiles/pauline_tcp_rc +++ b/tester/rcfiles/pauline_tcp_rc @@ -1,6 +1,6 @@ [sip] sip_port=-1 -sip_tcp_port=-1 +sip_tcp_port=12002 sip_tls_port=-1 default_proxy=0 ping_with_options=0 From eff695ef11521587e7d91b1adb86941f1999c8e9 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 7 Nov 2014 18:02:11 +0100 Subject: [PATCH 127/249] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index fa31c93d0..8fa1c1655 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit fa31c93d0a27a2e45877ed5b746c4673064f8452 +Subproject commit 8fa1c1655b7f6be5617be11ce5ba2fcd1d2fb874 From 1285d1cf2146a20ffa8fd53bd7abca1f48cea2cf Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 7 Nov 2014 18:33:15 +0100 Subject: [PATCH 128/249] add check for displayname transmission in simple call test --- tester/call_tester.c | 20 +++++++++++++++++++- tester/rcfiles/marie_rc | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 9918e526d..f67ee74ab 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -317,13 +317,31 @@ static void simple_call(void) { int leaked_objects; LinphoneCoreManager* marie; LinphoneCoreManager* pauline; + const LinphoneAddress *from; + LinphoneCall *pauline_call; belle_sip_object_enable_leak_detector(TRUE); begin=belle_sip_object_get_object_count(); marie = linphone_core_manager_new( "marie_rc"); pauline = linphone_core_manager_new( "pauline_rc"); - CU_ASSERT_TRUE(call(pauline,marie)); + CU_ASSERT_TRUE(call(marie,pauline)); + pauline_call=linphone_core_get_current_call(pauline->lc); + CU_ASSERT_PTR_NOT_NULL(pauline_call); + /*check that display name is correctly propagated in From */ + if (pauline_call){ + from=linphone_call_get_remote_address(linphone_core_get_current_call(pauline->lc)); + CU_ASSERT_PTR_NOT_NULL(from); + if (from){ + const char *dname=linphone_address_get_display_name(from); + CU_ASSERT_PTR_NOT_NULL(dname); + if (dname){ + CU_ASSERT_STRING_EQUAL(dname, "Super Marie"); + } + } + } + + liblinphone_tester_check_rtcp(marie,pauline); end_call(marie,pauline); linphone_core_manager_destroy(marie); diff --git a/tester/rcfiles/marie_rc b/tester/rcfiles/marie_rc index a1721c22a..367353d06 100644 --- a/tester/rcfiles/marie_rc +++ b/tester/rcfiles/marie_rc @@ -17,7 +17,7 @@ realm=sip.example.org [proxy_0] reg_proxy=sip.example.org;transport=tcp reg_route=sip.example.org;transport=tcp;lr -reg_identity=sip:marie@sip.example.org +reg_identity="Super Marie" reg_expires=3600 reg_sendregister=1 publish=0 From 8c96f738df26c20cd027642eac83a9daf261d6d5 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 10 Nov 2014 13:50:04 +0100 Subject: [PATCH 129/249] move ipv6 check at the correct place --- tester/liblinphone_tester.c | 18 ------------------ tester/tester.c | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c index 26f3521ec..171f4eae9 100644 --- a/tester/liblinphone_tester.c +++ b/tester/liblinphone_tester.c @@ -115,24 +115,6 @@ static void liblinphone_tester_qnx_log_handler(OrtpLogLevel lev, const char *fmt } #endif /* __QNX__ */ -int liblinphone_tester_ipv6_available(void){ - struct addrinfo *ai=belle_sip_ip_address_to_addrinfo(AF_INET6,"2a01:e00::2",53); - if (ai){ - struct sockaddr_storage ss; - struct addrinfo src; - socklen_t slen=sizeof(ss); - char localip[128]; - int port=0; - belle_sip_get_src_addr_for(ai->ai_addr,ai->ai_addrlen,(struct sockaddr*) &ss,&slen,4444); - src.ai_addr=(struct sockaddr*) &ss; - src.ai_addrlen=slen; - belle_sip_addrinfo_to_ip(&src,localip, sizeof(localip),&port); - freeaddrinfo(ai); - return strcmp(localip,"::1")!=0; - } - return FALSE; -} - void helper(const char *name) { liblinphone_tester_fprintf(stderr,"%s --help\n" "\t\t\t--verbose\n" diff --git a/tester/tester.c b/tester/tester.c index 0973c5810..994dc67c4 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -469,6 +469,7 @@ int liblinphone_tester_run_tests(const char *suite_name, const char *test_name) CU_cleanup_registry(); return ret; } + int liblinphone_tester_fprintf(FILE * stream, const char * format, ...) { int result; va_list args; @@ -483,3 +484,22 @@ int liblinphone_tester_fprintf(FILE * stream, const char * format, ...) { va_end(args); return result; } + +int liblinphone_tester_ipv6_available(void){ + struct addrinfo *ai=belle_sip_ip_address_to_addrinfo(AF_INET6,"2a01:e00::2",53); + if (ai){ + struct sockaddr_storage ss; + struct addrinfo src; + socklen_t slen=sizeof(ss); + char localip[128]; + int port=0; + belle_sip_get_src_addr_for(ai->ai_addr,ai->ai_addrlen,(struct sockaddr*) &ss,&slen,4444); + src.ai_addr=(struct sockaddr*) &ss; + src.ai_addrlen=slen; + belle_sip_addrinfo_to_ip(&src,localip, sizeof(localip),&port); + freeaddrinfo(ai); + return strcmp(localip,"::1")!=0; + } + return FALSE; +} + From 050a1e1a86008682d9adf3d5e156800662b813c6 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 10 Nov 2014 17:30:26 +0100 Subject: [PATCH 130/249] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 8fa1c1655..d344de5fe 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 8fa1c1655b7f6be5617be11ce5ba2fcd1d2fb874 +Subproject commit d344de5fe5875b219bc19aa0fa76380986a70fa2 From 7cd1243f667e26bf491b76e3f59a64984020aefc Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 10 Nov 2014 17:51:00 +0100 Subject: [PATCH 131/249] Only check number of non migrated message --- tester/message_tester.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tester/message_tester.c b/tester/message_tester.c index 8de0e8cfd..195ea3a92 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -953,7 +953,9 @@ message_tester_copy_file(const char *from, const char *to) } static int check_no_strange_time(void* data,int argc, char** argv,char** cNames) { - CU_ASSERT_EQUAL(argc, 0); + CU_ASSERT_EQUAL(argc, 1); + CU_ASSERT_STRING_EQUAL(cNames[0], "COUNT(*)"); // count of non updated messages should be 0 + CU_ASSERT_STRING_EQUAL(argv[0], "0"); // count of non updated messages should be 0 return 0; } @@ -978,7 +980,7 @@ static void message_storage_migration() { CU_ASSERT(ms_list_size(chatrooms) > 0); // check that all messages have been migrated to the UTC time storage - CU_ASSERT(sqlite3_exec(marie->lc->db, "SELECT * FROM history WHERE time != '-1';", check_no_strange_time, NULL, NULL) == SQLITE_OK ); + CU_ASSERT(sqlite3_exec(marie->lc->db, "SELECT COUNT(*) FROM history WHERE time != '-1';", check_no_strange_time, NULL, NULL) == SQLITE_OK ); linphone_core_manager_destroy(marie); remove(tmp_db); From b70e389ef54ded24f7bf1e955fe5824ca79bee08 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 12 Nov 2014 12:20:55 +0100 Subject: [PATCH 132/249] Improve tunnel documentation. --- coreapi/linphone_tunnel.h | 157 ++++++++++++++++++-------------------- 1 file changed, 76 insertions(+), 81 deletions(-) diff --git a/coreapi/linphone_tunnel.h b/coreapi/linphone_tunnel.h index 8bf94fcef..77d5e45b3 100644 --- a/coreapi/linphone_tunnel.h +++ b/coreapi/linphone_tunnel.h @@ -60,7 +60,7 @@ typedef enum _LinphoneTunnelMode { } LinphoneTunnelMode; /** - * @brief Convert a string into LinphoneTunnelMode enum + * Convert a string into LinphoneTunnelMode enum * @param string String to convert * @return An LinphoneTunnelMode enum. If the passed string is NULL or * does not match with any mode, the LinphoneTunnelModeDisable is returned. @@ -68,7 +68,7 @@ typedef enum _LinphoneTunnelMode { LINPHONE_PUBLIC LinphoneTunnelMode string_to_tunnel_mode(const char *string); /** - * @brief Convert a tunnel mode enum into string + * Convert a tunnel mode enum into string * @param mode Enum to convert * @return "disable", "enable" or "auto" */ @@ -80,170 +80,166 @@ LINPHONE_PUBLIC const char *tunnel_mode_to_string(LinphoneTunnelMode mode); LINPHONE_PUBLIC LinphoneTunnelConfig *linphone_tunnel_config_new(void); /** - * Set address of server. - * - * @param tunnel configuration object - * @param host tunnel server ip address + * Set the IP address or hostname of the tunnel server. + * @param tunnel LinphoneTunnelConfig object + * @param host The tunnel server IP address or hostname */ LINPHONE_PUBLIC void linphone_tunnel_config_set_host(LinphoneTunnelConfig *tunnel, const char *host); /** - * Get address of server. - * - * @param tunnel configuration object + * Get the IP address or hostname of the tunnel server. + * @param tunnel LinphoneTunnelConfig object + * @return The tunnel server IP address or hostname */ LINPHONE_PUBLIC const char *linphone_tunnel_config_get_host(const LinphoneTunnelConfig *tunnel); /** * Set tls port of server. - * - * @param tunnel configuration object - * @param port tunnel server tls port, recommended value is 443 + * @param tunnel LinphoneTunnelConfig object + * @param port The tunnel server TLS port, recommended value is 443 */ LINPHONE_PUBLIC void linphone_tunnel_config_set_port(LinphoneTunnelConfig *tunnel, int port); /** - * Get tls port of server. - * - * @param tunnel configuration object + * Get the TLS port of the tunnel server. + * @param tunnel LinphoneTunnelConfig object + * @return The TLS port of the tunnel server */ LINPHONE_PUBLIC int linphone_tunnel_config_get_port(const LinphoneTunnelConfig *tunnel); /** - * Set the remote port on the tunnel server side used to test udp reachability. - * - * @param tunnel configuration object - * @param remote_udp_mirror_port remote port on the tunnel server side used to test udp reachability, set to -1 to disable the feature + * Set the remote port on the tunnel server side used to test UDP reachability. + * This is used when the mode is set auto, to detect whether the tunnel has to be enabled or not. + * @param tunnel LinphoneTunnelConfig object + * @param remote_udp_mirror_port The remote port on the tunnel server side used to test UDP reachability, set to -1 to disable the feature */ LINPHONE_PUBLIC void linphone_tunnel_config_set_remote_udp_mirror_port(LinphoneTunnelConfig *tunnel, int remote_udp_mirror_port); /** - * Get the remote port on the tunnel server side used to test udp reachability. - * - * @param tunnel configuration object + * Get the remote port on the tunnel server side used to test UDP reachability. + * This is used when the mode is set auto, to detect whether the tunnel has to be enabled or not. + * @param tunnel LinphoneTunnelConfig object + * @return The remote port on the tunnel server side used to test UDP reachability */ LINPHONE_PUBLIC int linphone_tunnel_config_get_remote_udp_mirror_port(const LinphoneTunnelConfig *tunnel); /** - * Set the udp packet round trip delay in ms for a tunnel configuration. - * - * @param tunnel configuration object - * @param delay udp packet round trip delay in ms considered as acceptable. recommended value is 1000 ms. + * Set the UDP packet round trip delay in ms for a tunnel configuration. + * @param tunnel LinphoneTunnelConfig object + * @param delay The UDP packet round trip delay in ms considered as acceptable (recommended value is 1000 ms). */ LINPHONE_PUBLIC void linphone_tunnel_config_set_delay(LinphoneTunnelConfig *tunnel, int delay); /** - * Get the udp packet round trip delay in ms for a tunnel configuration. - * - * @param tunnel configuration object + * Get the UDP packet round trip delay in ms for a tunnel configuration. + * @param tunnel LinphoneTunnelConfig object + * @return The UDP packet round trip delay in ms. */ LINPHONE_PUBLIC int linphone_tunnel_config_get_delay(const LinphoneTunnelConfig *tunnel); /** * Destroy a tunnel configuration - * - * @param tunnel configuration object + * @param tunnel LinphoneTunnelConfig object */ LINPHONE_PUBLIC void linphone_tunnel_config_destroy(LinphoneTunnelConfig *tunnel); /** - * Add tunnel server configuration - * - * @param tunnel object - * @param tunnel_config object + * Add a tunnel server configuration. + * @param tunnel LinphoneTunnel object + * @param tunnel_config LinphoneTunnelConfig object */ LINPHONE_PUBLIC void linphone_tunnel_add_server(LinphoneTunnel *tunnel, LinphoneTunnelConfig *tunnel_config); /** - * @brief Remove tunnel server configuration - * @param tunnel object - * @param tunnel_config object + * Remove a tunnel server configuration. + * @param tunnel LinphoneTunnel object + * @param tunnel_config LinphoneTunnelConfig object */ LINPHONE_PUBLIC void linphone_tunnel_remove_server(LinphoneTunnel *tunnel, LinphoneTunnelConfig *tunnel_config); /** - * @brief Get added servers - * @param tunnel A LinphoneTunnel object - * @return A list of LinphoneTunnelConfig objects + * Get added servers + * @param tunnel LinphoneTunnel object + * @return \mslist{LinphoneTunnelConfig} */ LINPHONE_PUBLIC const MSList *linphone_tunnel_get_servers(const LinphoneTunnel *tunnel); /** - * @brief Removes all tunnel server address previously entered with addServer() - * @param tunnel A LinphoneTunnel object + * Remove all tunnel server addresses previously entered with linphone_tunnel_add_server() + * @param tunnel LinphoneTunnel object **/ LINPHONE_PUBLIC void linphone_tunnel_clean_servers(LinphoneTunnel *tunnel); /** - * @brief Set tunnel mode + * Set the tunnel mode. * The tunnel mode can be 'enable', 'disable' or 'auto' * If the mode is set to 'auto', the tunnel manager will try to established an RTP session * with the tunnel server on the UdpMirrorPort. If the connection fail, the tunnel is automatically * activated whereas the tunnel is automatically disabled if the connection succeed. - * @param tunnel object - * @param mode See #LinphoneTunnelMode + * @param tunnel LinphoneTunnel object + * @param mode The desired LinphoneTunnelMode **/ LINPHONE_PUBLIC void linphone_tunnel_set_mode(LinphoneTunnel *tunnel, LinphoneTunnelMode mode); /** - * @brief Get the tunnel mode - * @param tunnel A LinphoneTunnel object - * @return Return a #LinphoneTunnelMode enumeration + * Get the tunnel mode + * @param tunnel LinphoneTunnel object + * @return The current LinphoneTunnelMode **/ LINPHONE_PUBLIC LinphoneTunnelMode linphone_tunnel_get_mode(const LinphoneTunnel *tunnel); /** - * @brief Check whether the tunnel is connected - * @param tunnel LinphoneTunnel object - * @return True if the tunnel is connected + * Check whether the tunnel is connected + * @param tunnel LinphoneTunnel object + * @return A boolean value telling if the tunnel is connected **/ LINPHONE_PUBLIC bool_t linphone_tunnel_connected(const LinphoneTunnel *tunnel); /** - * @param tunnel object - * Forces reconnection to the tunnel server. + * Force 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. + * @param tunnel LinphoneTunnel object **/ LINPHONE_PUBLIC void linphone_tunnel_reconnect(LinphoneTunnel *tunnel); /** - * @brief Set whether SIP packets must be directly sent to a UA or pass through the tunnel - * @param tunnel Tunnel to configure + * Set whether SIP packets must be directly sent to a UA or pass through the tunnel + * @param tunnel LinphoneTunnel object * @param enable If true, SIP packets shall pass through the tunnel */ LINPHONE_PUBLIC void linphone_tunnel_enable_sip(LinphoneTunnel *tunnel, bool_t enable); /** - * @brief Check whether tunnel is set to transport SIP packets - * @param tunnel Tunnel to check - * @return True, SIP packets shall pass through through tunnel + * Check whether tunnel is set to transport SIP packets + * @param tunnel LinphoneTunnel object + * @return A boolean value telling whether SIP packets shall pass through the tunnel */ LINPHONE_PUBLIC bool_t linphone_tunnel_sip_enabled(const LinphoneTunnel *tunnel); /** * Set an optional http proxy to go through when connecting to tunnel server. * @param tunnel LinphoneTunnel object - * @param host Http proxy host. - * @param port http proxy port. - * @param username optional http proxy username if the proxy request authentication. Currently only basic authentication is supported. Use NULL if not needed. - * @param passwd optional http proxy password. Use NULL if not needed. + * @param host http proxy host + * @param port http proxy port + * @param username Optional http proxy username if the proxy request authentication. Currently only basic authentication is supported. Use NULL if not needed. + * @param passwd Optional http proxy password. Use NULL if not needed. **/ LINPHONE_PUBLIC void linphone_tunnel_set_http_proxy(LinphoneTunnel *tunnel, const char *host, int port, const char* username,const char* passwd); /** * Retrieve optional http proxy configuration previously set with linphone_tunnel_set_http_proxy(). * @param tunnel LinphoneTunnel object - * @param host Http proxy host. - * @param port http proxy port. - * @param username optional http proxy username if the proxy request authentication. Currently only basic authentication is supported. Use NULL if not needed. - * @param passwd optional http proxy password. Use NULL if not needed. + * @param host http proxy host + * @param port http proxy port + * @param username Optional http proxy username if the proxy request authentication. Currently only basic authentication is supported. Use NULL if not needed. + * @param passwd Optional http proxy password. Use NULL if not needed. **/ LINPHONE_PUBLIC void linphone_tunnel_get_http_proxy(LinphoneTunnel*tunnel,const char **host, int *port, const char **username, const char **passwd); /** - * @brief Set authentication info for the http proxy + * Set authentication info for the http proxy * @param tunnel LinphoneTunnel object * @param username User name * @param passwd Password @@ -251,38 +247,37 @@ LINPHONE_PUBLIC void linphone_tunnel_get_http_proxy(LinphoneTunnel*tunnel,const LINPHONE_PUBLIC void linphone_tunnel_set_http_proxy_auth_info(LinphoneTunnel*tunnel, const char* username,const char* passwd); /** - * @deprecated Replaced by linphone_tunnel_set_mode() - * @brief Sets whether tunneling of SIP and RTP is required. - * @param tunnel object + * Sets whether tunneling of SIP and RTP is required. + * @param tunnel object * @param enabled 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. - * + * @deprecated Replaced by linphone_tunnel_set_mode() **/ LINPHONE_PUBLIC void linphone_tunnel_enable(LinphoneTunnel *tunnel, bool_t enabled); /** - * @deprecated Replaced by linphone_tunnel_get_mode() - * @brief Check whether tunnel is enabled - * @param tunnel Tunnel object + * Check whether tunnel is enabled + * @param tunnel Tunnel object * @return Returns a boolean indicating whether tunneled operation is enabled. + * @deprecated Replaced by linphone_tunnel_get_mode() **/ LINPHONE_PUBLIC bool_t linphone_tunnel_enabled(const LinphoneTunnel *tunnel); /** - * @deprecated Replaced by linphone_tunnel_set_mode(LinphoneTunnelModeAuto) - * @brief Start tunnel need detection. + * Start tunnel need detection. * @param tunnel object - * In auto detect mode, the tunnel manager try to establish a real time rtp cummunication with the tunnel server on specified port. - *
In case of success, the tunnel is automatically turned off. Otherwise, if no udp commmunication is feasible, tunnel mode is turned on. + * In auto detect mode, the tunnel manager try to establish a real time rtp communication with the tunnel server on specified port. + *
In case of success, the tunnel is automatically turned off. Otherwise, if no udp communication is feasible, tunnel mode is turned on. *
Call this method each time to run the auto detection algorithm + * @deprecated Replaced by linphone_tunnel_set_mode(LinphoneTunnelModeAuto) */ LINPHONE_PUBLIC void linphone_tunnel_auto_detect(LinphoneTunnel *tunnel); /** - * @deprecated Replaced by linphone_tunnel_get_mode() - * @brief Tells whether tunnel auto detection is enabled. + * Tell whether tunnel auto detection is enabled. * @param[in] tunnel LinphoneTunnel object. * @return TRUE if auto detection is enabled, FALSE otherwise. + * @deprecated Replaced by linphone_tunnel_get_mode() */ LINPHONE_PUBLIC bool_t linphone_tunnel_auto_detect_enabled(LinphoneTunnel *tunnel); From a9a651b9549f296a88009431ecce63bbc6594b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 12 Nov 2014 14:22:56 +0100 Subject: [PATCH 133/249] Change window IDs type and make local player to use the default ring sound card instead of the default playback one --- coreapi/linphonecore.h | 4 ++-- coreapi/linphonecore_jni.cc | 2 +- coreapi/localplayer.c | 4 ++-- mediastreamer2 | 2 +- tester/player_tester.c | 38 ++++++++++++++++++------------------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 0be4be5b0..c95adbc4f 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -603,10 +603,10 @@ void linphone_player_destroy(LinphonePlayer *obj); * @param lc A LinphoneCore object * @param snd_card Playback sound card. If NULL, the sound card set in LinphoneCore will be used * @param video_out Video display. If NULL, the video display set in LinphoneCore will be used - * @param window_id Pointer on the drawing window + * @param window_id Id of the drawing window. Depend of video out * @return A pointer on the new instance. NULL if faild. */ -LINPHONE_PUBLIC LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, void *window_id); +LINPHONE_PUBLIC LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, unsigned long window_id); /** * @brief Check whether Matroksa format is supported by the player diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 241f130cc..8abf9c4cd 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -5326,7 +5326,7 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_createLocalPlayer(JNIEn return 0; } window_ref = env->NewGlobalRef(window); - LinphonePlayer *player = linphone_core_create_local_player((LinphoneCore *)ptr, snd_card, "MSAndroidDisplay", window_ref); + LinphonePlayer *player = linphone_core_create_local_player((LinphoneCore *)ptr, NULL, "MSAndroidDisplay", (unsigned long)window_ref); if(player == NULL) { ms_error("Fails to create a player"); if(window_ref) env->DeleteGlobalRef(window_ref); diff --git a/coreapi/localplayer.c b/coreapi/localplayer.c index ad06e1751..964c1c920 100644 --- a/coreapi/localplayer.c +++ b/coreapi/localplayer.c @@ -32,9 +32,9 @@ static void _local_player_close(LinphonePlayer *obj); static void _local_player_destroy(LinphonePlayer *obj); static void _local_player_eof_callback(void *user_data); -LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, void *window_id) { +LinphonePlayer *linphone_core_create_local_player(LinphoneCore *lc, MSSndCard *snd_card, const char *video_out, unsigned long window_id) { LinphonePlayer *obj = ms_new0(LinphonePlayer, 1); - if(snd_card == NULL) snd_card = lc->sound_conf.play_sndcard; + if(snd_card == NULL) snd_card = lc->sound_conf.ring_sndcard; if(video_out == NULL) video_out = linphone_core_get_video_display_filter(lc); obj->impl = ms_media_player_new(snd_card, video_out, window_id); obj->open = _local_player_open; diff --git a/mediastreamer2 b/mediastreamer2 index d344de5fe..cebd5a0e1 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit d344de5fe5875b219bc19aa0fa76380986a70fa2 +Subproject commit cebd5a0e1d1aa69cc2721a82a4d6514288abe7c7 diff --git a/tester/player_tester.c b/tester/player_tester.c index 17e692d23..be0b47284 100644 --- a/tester/player_tester.c +++ b/tester/player_tester.c @@ -18,23 +18,23 @@ #include "liblinphone_tester.h" -static const char *_get_default_video_renderer(void){ -#ifdef WIN32 - return "MSDrawDibDisplay"; -#elif defined(ANDROID) - return "MSAndroidDisplay"; -#elif __APPLE__ && !defined(__ios) - return "MSOSXGLDisplay"; -#elif defined (HAVE_XV) - return "MSX11Video"; -#elif defined(HAVE_GL) - return "MSGLXVideo"; -#elif defined(__ios) - return "IOSDisplay"; -#else - return "MSVideoOut"; -#endif -} +//static const char *_get_default_video_renderer(void){ +//#ifdef WIN32 +// return "MSDrawDibDisplay"; +//#elif defined(ANDROID) +// return "MSAndroidDisplay"; +//#elif __APPLE__ && !defined(__ios) +// return "MSOSXGLDisplay"; +//#elif defined (HAVE_XV) +// return "MSX11Video"; +//#elif defined(HAVE_GL) +// return "MSGLXVideo"; +//#elif defined(__ios) +// return "IOSDisplay"; +//#else +// return "MSVideoOut"; +//#endif +//} static bool_t wait_for_eof(bool_t *eof, int *time,int time_refresh, int timeout) { while(*time < timeout && !*eof) { @@ -59,7 +59,7 @@ static void play_file(const char *filename, bool_t unsupported_format) { CU_ASSERT_PTR_NOT_NULL(lc_manager); if(lc_manager == NULL) return; - player = linphone_core_create_local_player(lc_manager->lc, ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()), _get_default_video_renderer(), NULL); + player = linphone_core_create_local_player(lc_manager->lc, ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()), "MSX11Video", 0); CU_ASSERT_PTR_NOT_NULL(player); if(player == NULL) goto fail; @@ -84,7 +84,7 @@ static void play_file(const char *filename, bool_t unsupported_format) { } static void playing_test(void) { - play_file("sounds/hello_opus_h264.mkv", !linphone_local_player_matroska_supported()); + play_file("/home/francois/Téléchargements/test_linphone.mkv", !linphone_local_player_matroska_supported()); } test_t player_tests[] = { From 4caf475724696b273a5bc2868b6e35616554a815 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 12 Nov 2014 11:48:26 +0100 Subject: [PATCH 134/249] Readd log collection test on Android but do not check timestamps yet --- tester/log_collection_tester.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index c9299f1bb..6397e6299 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -65,11 +65,13 @@ time_t check_file(char * filepath) { if (strlen(line) > 24) { char date[24] = {'\0'}; memcpy(date, line, 23); + #ifndef ANDROID if (strptime(date, "%Y-%m-%d %H:%M:%S", &tm_curr) != NULL) { time_curr = mktime(&tm_curr); CU_ASSERT_TRUE(time_curr >= time_prev); time_prev = time_curr; } + #endif } } CU_ASSERT_TRUE(line_count > 25); @@ -78,7 +80,12 @@ time_t check_file(char * filepath) { ms_free(filepath); } // return latest time in file + #ifdef ANDROID + ms_warning("fix me: Use mktime function on android"); + return ms_time(0); //should be fixed + #else return time_curr; + #endif } static LinphoneLogCollectionState old_collection_state; From 0aabc05145331fc38b3e34d24e3e09972d8986a3 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 12 Nov 2014 11:48:59 +0100 Subject: [PATCH 135/249] Add linphone_call_send_dtmfs method to allow sending a DTMF sequence instead of a single one, and add a test suite --- build/android/liblinphone_tester.mk | 3 +- .../LibLinphoneTester-native.vcxproj | 2 + coreapi/linphonecall.c | 78 +++++++++ coreapi/linphonecore.c | 30 +--- coreapi/linphonecore.h | 41 +++++ coreapi/private.h | 3 + oRTP | 2 +- tester/Makefile.am | 3 +- tester/call_tester.c | 8 +- tester/dtmf_tester.c | 148 ++++++++++++++++++ tester/liblinphone_tester.h | 4 + tester/quality_reporting_tester.c | 1 - tester/tester.c | 4 +- 13 files changed, 288 insertions(+), 39 deletions(-) create mode 100644 tester/dtmf_tester.c diff --git a/build/android/liblinphone_tester.mk b/build/android/liblinphone_tester.mk index b23a381bd..e4387132f 100644 --- a/build/android/liblinphone_tester.mk +++ b/build/android/liblinphone_tester.mk @@ -15,7 +15,8 @@ common_SRC_FILES := \ remote_provisioning_tester.c \ quality_reporting_tester.c \ transport_tester.c \ - player_tester.c + player_tester.c \ + dtmf_tester.c common_C_INCLUDES += \ $(LOCAL_PATH) \ diff --git a/build/wp8/LibLinphoneTester-native/LibLinphoneTester-native.vcxproj b/build/wp8/LibLinphoneTester-native/LibLinphoneTester-native.vcxproj index 021ab6328..6bc245f9f 100644 --- a/build/wp8/LibLinphoneTester-native/LibLinphoneTester-native.vcxproj +++ b/build/wp8/LibLinphoneTester-native/LibLinphoneTester-native.vcxproj @@ -107,6 +107,8 @@ + + true diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index c0afd17a5..8d5d82c5f 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -979,6 +979,11 @@ void linphone_call_set_state_base(LinphoneCall *call, LinphoneCallState cstate, linphone_reporting_call_state_updated(call); + /*cancelling DTMF sequence, if any*/ + if (cstate!=LinphoneCallStreamsRunning&&call->dtmfs_timer!=NULL){ + linphone_call_cancel_dtmfs(call); + } + if (cstate==LinphoneCallReleased){ if (call->op!=NULL) { /*transfer the last error so that it can be obtained even in Released state*/ @@ -3124,3 +3129,76 @@ void linphone_call_set_new_params(LinphoneCall *call, const LinphoneCallParams * if (call->params) linphone_call_params_unref(call->params); call->params=cp; } + +static int send_dtmf_handler(void *data, unsigned int revents){ + LinphoneCall *call = (LinphoneCall*)data; + /*By default we send DTMF RFC2833 if we do not have enabled SIP_INFO but we can also send RFC2833 and SIP_INFO*/ + if (linphone_core_get_use_rfc2833_for_dtmf(call->core)!=0 || linphone_core_get_use_info_for_dtmf(call->core)==0) + { + /* In Band DTMF */ + if (call->audiostream!=NULL){ + audio_stream_send_dtmf(call->audiostream,*call->dtmf_sequence); + } + else + { + ms_error("Cannot send RFC2833 DTMF when we are not in communication."); + return FALSE; + } + } + if (linphone_core_get_use_info_for_dtmf(call->core)!=0){ + /* Out of Band DTMF (use INFO method) */ + sal_call_send_dtmf(call->op,*call->dtmf_sequence); + } + + /*this check is needed because linphone_call_send_dtmf does not set the timer since its a single character*/ + if (call->dtmfs_timer!=NULL) { + memmove(call->dtmf_sequence, call->dtmf_sequence+1, strlen(call->dtmf_sequence)); + } + /* continue only if the dtmf sequence is not empty*/ + if (call->dtmf_sequence!=NULL&&*call->dtmf_sequence!='\0') { + return TRUE; + } else { + linphone_call_cancel_dtmfs(call); + return FALSE; + } +} +int linphone_call_send_dtmf(LinphoneCall *call,char dtmf){ + if (call==NULL){ + ms_warning("linphone_call_send_dtmf(): invalid call, canceling DTMF."); + return -1; + } + call->dtmf_sequence = &dtmf; + send_dtmf_handler(call,0); + call->dtmf_sequence = NULL; + return 0; +} + +int linphone_call_send_dtmfs(LinphoneCall *call,char *dtmfs) { + if (call==NULL){ + ms_warning("linphone_call_send_dtmfs(): invalid call, canceling DTMF sequence."); + return -1; + } + if (call->dtmfs_timer!=NULL){ + ms_warning("linphone_call_send_dtmfs(): a DTMF sequence is already in place, canceling DTMF sequence."); + return -2; + } + if (dtmfs != NULL) { + int delay_ms = lp_config_get_int(call->core->config,"net","dtmf_delay_ms",200); + call->dtmf_sequence = ms_strdup(dtmfs); + call->dtmfs_timer = sal_create_timer(call->core->sal, send_dtmf_handler, call, delay_ms, "DTMF sequence timer"); + } + return 0; +} + +void linphone_call_cancel_dtmfs(LinphoneCall *call) { + /*nothing to do*/ + if (!call || !call->dtmfs_timer) return; + + sal_cancel_timer(call->core->sal, call->dtmfs_timer); + belle_sip_object_unref(call->dtmfs_timer); + call->dtmfs_timer = NULL; + if (call->dtmf_sequence != NULL) { + ms_free(call->dtmf_sequence); + call->dtmf_sequence = NULL; + } +} diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 0832fc947..122657a14 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -4780,38 +4780,10 @@ bool_t linphone_core_agc_enabled(const LinphoneCore *lc){ return lc->sound_conf.agc; } -/** - * Send the specified dtmf. - * - * @ingroup media_parameters - * This function only works during calls. The dtmf is automatically played to the user. - * @param lc The LinphoneCore object - * @param dtmf The dtmf name specified as a char, such as '0', '#' etc... - * -**/ void linphone_core_send_dtmf(LinphoneCore *lc, char dtmf) { LinphoneCall *call=linphone_core_get_current_call(lc); - if (call==NULL){ - ms_warning("linphone_core_send_dtmf(): no active call"); - return; - } - /*By default we send DTMF RFC2833 if we do not have enabled SIP_INFO but we can also send RFC2833 and SIP_INFO*/ - if (linphone_core_get_use_rfc2833_for_dtmf(lc)!=0 || linphone_core_get_use_info_for_dtmf(lc)==0) - { - /* In Band DTMF */ - if (call->audiostream!=NULL){ - audio_stream_send_dtmf(call->audiostream,dtmf); - } - else - { - ms_error("we cannot send RFC2833 dtmf when we are not in communication"); - } - } - if (linphone_core_get_use_info_for_dtmf(lc)!=0){ - /* Out of Band DTMF (use INFO method) */ - sal_call_send_dtmf(call->op,dtmf); - } + linphone_call_send_dtmf(call, dtmf); } void linphone_core_set_stun_server(LinphoneCore *lc, const char *server){ diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index c95adbc4f..00cd466a3 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -731,6 +731,37 @@ LINPHONE_PUBLIC void linphone_call_start_recording(LinphoneCall *call); LINPHONE_PUBLIC void linphone_call_stop_recording(LinphoneCall *call); LINPHONE_PUBLIC LinphonePlayer * linphone_call_get_player(LinphoneCall *call); LINPHONE_PUBLIC bool_t linphone_call_media_in_progress(LinphoneCall *call); +/** + * Send the specified dtmf. + * + * The dtmf is automatically played to the user. + * @param call The LinphoneCall object + * @param dtmf The dtmf name specified as a char, such as '0', '#' etc... + * @returns 0 if successful, -1 on error. +**/ +LINPHONE_PUBLIC int linphone_call_send_dtmf(LinphoneCall *lc,char dtmf); + +/** + * Send a list of dtmf. + * + * The dtmfs are automatically sent to remote, separated by some needed customizable delay. + * Sending is canceled if the call state changes to something not LinphoneCallStreamsRunning. + * @param call The LinphoneCall object + * @param dtmfs A dtmf sequence such as '123#123123' + * @returns -2 if there is already a DTMF sequence, -1 if call is not ready, 0 otherwise. +**/ +LINPHONE_PUBLIC int linphone_call_send_dtmfs(LinphoneCall *call,char *dtmfs); + +/** + * Stop current DTMF sequence sending. + * + * Please note that some DTMF could be already sent, + * depending on when this function call is delayed from #linphone_call_send_dtmfs. This + * function will be automatically called if call state change to anything but LinphoneCallStreamsRunning. + * + * @param call The LinphoneCall object +**/ +LINPHONE_PUBLIC void linphone_call_cancel_dtmfs(LinphoneCall *call); /** * Return TRUE if this call is currently part of a conference @@ -2049,6 +2080,16 @@ LINPHONE_PUBLIC LinphoneCallParams *linphone_core_create_call_params(LinphoneCor LINPHONE_PUBLIC LinphoneCall *linphone_core_get_call_by_remote_address(LinphoneCore *lc, const char *remote_address); +/** + * Send the specified dtmf. + * + * @ingroup media_parameters + * @deprecated Use #linphone_call_send_dtmf instead. + * This function only works during calls. The dtmf is automatically played to the user. + * @param lc The LinphoneCore object + * @param dtmf The dtmf name specified as a char, such as '0', '#' etc... + * +**/ LINPHONE_PUBLIC void linphone_core_send_dtmf(LinphoneCore *lc,char dtmf); LINPHONE_PUBLIC int linphone_core_set_primary_contact(LinphoneCore *lc, const char *contact); diff --git a/coreapi/private.h b/coreapi/private.h index e42d6c177..ac274545a 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -239,6 +239,9 @@ struct _LinphoneCall int localdesc_changed;/*not a boolean, contains a mask representing changes*/ LinphonePlayer *player; + char *dtmf_sequence; /*DTMF sequence needed to be sent using #dtmfs_timer*/ + belle_sip_source_t *dtmfs_timer; /*DTMF timer needed to send a DTMF sequence*/ + bool_t refer_pending; bool_t expect_media_in_ack; bool_t audio_muted; diff --git a/oRTP b/oRTP index 1bfd94cea..486604095 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 1bfd94cea8e62972162f926db3c6ffedca68ae22 +Subproject commit 486604095db3f2ed4cb3fa8d30c45baf191d79e0 diff --git a/tester/Makefile.am b/tester/Makefile.am index 7fb08bb0f..ec5366726 100644 --- a/tester/Makefile.am +++ b/tester/Makefile.am @@ -24,7 +24,8 @@ liblinphonetester_la_SOURCES = tester.c \ quality_reporting_tester.c \ log_collection_tester.c \ transport_tester.c \ - player_tester.c + player_tester.c \ + dtmf_tester.c liblinphonetester_la_LDFLAGS= -no-undefined liblinphonetester_la_LIBADD= ../coreapi/liblinphone.la $(CUNIT_LIBS) diff --git a/tester/call_tester.c b/tester/call_tester.c index f67ee74ab..a881e709d 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -340,8 +340,8 @@ static void simple_call(void) { } } } - - + + liblinphone_tester_check_rtcp(marie,pauline); end_call(marie,pauline); linphone_core_manager_destroy(marie); @@ -365,13 +365,13 @@ static void direct_call_over_ipv6(){ linphone_core_enable_ipv6(pauline->lc,TRUE); linphone_core_set_default_proxy_config(marie->lc,NULL); linphone_core_invite(marie->lc,"sip:[::1]:12002;transport=tcp"); - + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallOutgoingRinging,1)); CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallIncomingReceived,1)); linphone_core_accept_call(pauline->lc,linphone_core_get_current_call(pauline->lc)); CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,1)); CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,1)); - + liblinphone_tester_check_rtcp(marie,pauline); end_call(marie,pauline); linphone_core_manager_destroy(marie); diff --git a/tester/dtmf_tester.c b/tester/dtmf_tester.c new file mode 100644 index 000000000..fa627cfd4 --- /dev/null +++ b/tester/dtmf_tester.c @@ -0,0 +1,148 @@ +/* + liblinphone_tester - liblinphone test suite + Copyright (C) 2013 Belledonne Communications SARL + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "liblinphone_tester.h" +#include "private.h" + +LinphoneCoreManager* marie; +LinphoneCoreManager* pauline; +LinphoneCall *marie_call; + +void dtmf_received(LinphoneCore *lc, LinphoneCall *call, int dtmf) { + stats* counters = get_stats(lc); + char** dst = &counters->dtmf_list_received; + *dst = *dst ? + ms_strcat_printf(*dst, "%c", dtmf) + : ms_strdup_printf("%c", dtmf); +} + +void send_dtmf_base(bool_t use_rfc2833, bool_t use_sipinfo, char dtmf, char* dtmf_seq) { + char* expected = NULL; + marie = linphone_core_manager_new( "marie_rc"); + pauline = linphone_core_manager_new( "pauline_rc"); + + linphone_core_set_use_rfc2833_for_dtmf(marie->lc, use_rfc2833); + linphone_core_set_use_info_for_dtmf(marie->lc, use_sipinfo); + linphone_core_set_use_rfc2833_for_dtmf(pauline->lc, use_rfc2833); + linphone_core_set_use_info_for_dtmf(pauline->lc, use_sipinfo); + + CU_ASSERT_TRUE(call(pauline,marie)); + + marie_call = linphone_core_get_current_call(marie->lc); + + if (dtmf != '\0') { + linphone_call_send_dtmf(marie_call, dtmf); + + /*wait for the DTMF to be received from pauline*/ + wait_for_until(marie->lc, pauline->lc, NULL, 0, 1000); + expected = ms_strdup_printf("%c", dtmf); + } + + if (dtmf_seq != NULL) { + int dtmf_delay_ms = lp_config_get_int(marie_call->core->config,"net","dtmf_delay_ms",200); + linphone_call_send_dtmfs(marie_call, dtmf_seq); + + /*wait for the DTMF sequence to be received from pauline*/ + wait_for_until(marie->lc, pauline->lc, NULL, 0, 1000 + dtmf_delay_ms * strlen(dtmf_seq)); + expected = (dtmf!='\0')?ms_strdup_printf("%c%s",dtmf,dtmf_seq):ms_strdup(dtmf_seq); + } + + if (expected != NULL) { + CU_ASSERT_PTR_NOT_NULL(pauline->stat.dtmf_list_received); + if (pauline->stat.dtmf_list_received) { + CU_ASSERT_STRING_EQUAL(pauline->stat.dtmf_list_received, expected); + } + ms_free(expected); + } else { + CU_ASSERT_PTR_NULL(pauline->stat.dtmf_list_received); + } +} + +void send_dtmf_cleanup() { + CU_ASSERT_PTR_NULL(marie_call->dtmfs_timer); + CU_ASSERT_PTR_NULL(marie_call->dtmf_sequence); + + /*just to sleep*/ + linphone_core_terminate_all_calls(pauline->lc); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); +} + +static void send_dtmf_rfc2833() { + send_dtmf_base(TRUE,FALSE,'1',NULL); + send_dtmf_cleanup(); +} + +static void send_dtmf_sip_info() { + send_dtmf_base(FALSE,TRUE,'#',NULL); + send_dtmf_cleanup(); +} + +static void send_dtmfs_sequence_rfc2833() { + send_dtmf_base(TRUE,FALSE,'\0',"1230#"); + send_dtmf_cleanup(); +} + +static void send_dtmfs_sequence_sip_info() { + send_dtmf_base(FALSE,TRUE,'\0',"1230#"); + send_dtmf_cleanup(); +} + +static void send_dtmfs_sequence_not_ready() { + marie = linphone_core_manager_new( "marie_rc"); + CU_ASSERT_EQUAL(linphone_call_send_dtmfs(linphone_core_get_current_call(marie->lc), "123"), -1); + linphone_core_manager_destroy(marie); +} + +static void send_dtmfs_sequence_call_state_changed() { + send_dtmf_base(FALSE,TRUE,'\0',NULL); + + /*very long DTMF(around 4 sec to be sent)*/ + linphone_call_send_dtmfs(marie_call, "123456789123456789"); + /*just after, change call state, and expect DTMF to be canceled*/ + linphone_core_pause_call(marie_call->core,marie_call); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallPausing,1)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallPaused,1)); + + /*wait a few time to ensure that no DTMF are received*/ + wait_for_until(marie->lc, pauline->lc, NULL, 0, 1000); + + CU_ASSERT_PTR_NULL(pauline->stat.dtmf_list_received); + + send_dtmf_cleanup(); +} + +test_t dtmf_tests[] = { + { "Send DTMF using RFC2833",send_dtmf_rfc2833}, + { "Send DTMF using SIP INFO",send_dtmf_sip_info}, + { "Send DTMF sequence using RFC2833",send_dtmfs_sequence_rfc2833}, + { "Send DTMF sequence using SIP INFO",send_dtmfs_sequence_sip_info}, + { "DTMF sequence not sent if invalid call",send_dtmfs_sequence_not_ready}, + { "DTMF sequence canceled if call state changed",send_dtmfs_sequence_call_state_changed}, +}; + +test_suite_t dtmf_test_suite = { + "DTMF", + NULL, + NULL, + sizeof(dtmf_tests) / sizeof(dtmf_tests[0]), + dtmf_tests +}; diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 464926707..4bbe1fa3a 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -61,6 +61,7 @@ extern test_suite_t quality_reporting_test_suite; extern test_suite_t log_collection_test_suite; extern test_suite_t transport_test_suite; extern test_suite_t player_test_suite; +extern test_suite_t dtmf_test_suite; extern int liblinphone_tester_nb_test_suites(void); @@ -202,6 +203,8 @@ typedef struct _stats { int number_of_NetworkReachableFalse; int number_of_player_eof; LinphoneChatMessage* last_received_chat_message; + + char * dtmf_list_received; }stats; typedef struct _LinphoneCoreManager { @@ -242,6 +245,7 @@ void linphone_publish_state_changed(LinphoneCore *lc, LinphoneEvent *ev, Linphon void linphone_notify_received(LinphoneCore *lc, LinphoneEvent *lev, const char *eventname, const LinphoneContent *content); void linphone_configuration_status(LinphoneCore *lc, LinphoneConfiguringState status, const char *message); void linphone_call_encryption_changed(LinphoneCore *lc, LinphoneCall *call, bool_t on, const char *authentication_token); +void dtmf_received(LinphoneCore *lc, LinphoneCall *call, int dtmf); LinphoneAddress * create_linphone_address(const char * domain); bool_t wait_for(LinphoneCore* lc_1, LinphoneCore* lc_2,int* counter,int value); diff --git a/tester/quality_reporting_tester.c b/tester/quality_reporting_tester.c index 505949a74..1190f188f 100644 --- a/tester/quality_reporting_tester.c +++ b/tester/quality_reporting_tester.c @@ -17,7 +17,6 @@ */ #include -#include "CUnit/Basic.h" #include "linphonecore.h" #include "private.h" #include "liblinphone_tester.h" diff --git a/tester/tester.c b/tester/tester.c index 994dc67c4..aa0bd3e8b 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -225,6 +225,7 @@ LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, int check_f mgr->v_table.configuring_status=linphone_configuration_status; mgr->v_table.call_encryption_changed=linphone_call_encryption_changed; mgr->v_table.network_reachable=network_reachable; + mgr->v_table.dtmf_received=dtmf_received; reset_counters(&mgr->stat); if (rc_file) rc_path = ms_strdup_printf("rcfiles/%s", rc_file); @@ -387,11 +388,10 @@ void liblinphone_tester_init(void) { add_test_suite(&flexisip_test_suite); add_test_suite(&remote_provisioning_test_suite); add_test_suite(&quality_reporting_test_suite); -#ifndef ANDROID add_test_suite(&log_collection_test_suite); -#endif add_test_suite(&transport_test_suite); add_test_suite(&player_test_suite); + add_test_suite(&dtmf_test_suite); } void liblinphone_tester_uninit(void) { From e45b7bc3f08f2e1f030ce6065591393b8e8dca45 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 12 Nov 2014 15:08:54 +0100 Subject: [PATCH 136/249] Fix database time migration for Android: store time_t as 64bits in database --- coreapi/message_storage.c | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index dd22535ff..feb243ba7 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -469,7 +469,7 @@ static int migrate_messages_timestamp(void* data,int argc, char** argv, char** c time_t new_time = parse_time_from_db(argv[1]); if( new_time ){ /* replace 'time' by -1 and set 'utc' to the timestamp */ - char *buf = sqlite3_mprintf("UPDATE history SET utc=%lld,time='-1' WHERE id=%i;", new_time, atoi(argv[0])); + char *buf = sqlite3_mprintf("UPDATE history SET utc=%lld,time='-1' WHERE id=%i;", (int64_t)new_time, atoi(argv[0])); if( buf) { linphone_sql_request((sqlite3*)data, buf); sqlite3_free(buf); diff --git a/oRTP b/oRTP index 486604095..a8dcd5b3e 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 486604095db3f2ed4cb3fa8d30c45baf191d79e0 +Subproject commit a8dcd5b3ee563b5746199a605b94459308f5d009 From d249550e0a304c685e8dc9cd6fa709d74b79dcc2 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 12 Nov 2014 15:33:23 +0100 Subject: [PATCH 137/249] Fix log collection test suite for Android --- build/android/liblinphone_tester.mk | 1 + oRTP | 2 +- tester/log_collection_tester.c | 86 +++++++++++++++++++++++------ 3 files changed, 70 insertions(+), 19 deletions(-) diff --git a/build/android/liblinphone_tester.mk b/build/android/liblinphone_tester.mk index e4387132f..430f203be 100644 --- a/build/android/liblinphone_tester.mk +++ b/build/android/liblinphone_tester.mk @@ -14,6 +14,7 @@ common_SRC_FILES := \ tester.c \ remote_provisioning_tester.c \ quality_reporting_tester.c \ + log_collection_tester.c \ transport_tester.c \ player_tester.c \ dtmf_tester.c diff --git a/oRTP b/oRTP index a8dcd5b3e..913099228 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit a8dcd5b3ee563b5746199a605b94459308f5d009 +Subproject commit 913099228e4f6faf92669e03e209c6ab19268bdd diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index 6397e6299..b9c1835c5 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -1,19 +1,19 @@ /* belle-sip - SIP (RFC3261) library. - Copyright (C) 2010 Belledonne Communications SARL + Copyright (C) 2010 Belledonne Communications SARL - 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 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. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ #include @@ -27,6 +27,63 @@ #include "private.h" #include "liblinphone_tester.h" + +/*getline is not available on android...*/ +#ifdef ANDROID +/* This code is public domain -- Will Hartung 4/9/09 */ +size_t getline(char **lineptr, size_t *n, FILE *stream) { + char *bufptr = NULL; + char *p = bufptr; + size_t size; + int c; + + if (lineptr == NULL) { + return -1; + } + if (stream == NULL) { + return -1; + } + if (n == NULL) { + return -1; + } + bufptr = *lineptr; + size = *n; + + c = fgetc(stream); + if (c == EOF) { + return -1; + } + if (bufptr == NULL) { + bufptr = malloc(128); + if (bufptr == NULL) { + return -1; + } + size = 128; + } + p = bufptr; + while(c != EOF) { + if ((p - bufptr) > (size - 1)) { + size = size + 128; + bufptr = realloc(bufptr, size); + if (bufptr == NULL) { + return -1; + } + } + *p++ = c; + if (c == '\n') { + break; + } + c = fgetc(stream); + } + + *p++ = '\0'; + *lineptr = bufptr; + *n = size; + + return p - bufptr - 1; +} +#endif + LinphoneCoreManager* setup(bool_t enable_logs) { LinphoneCoreManager *marie; int timeout = 300; @@ -65,13 +122,11 @@ time_t check_file(char * filepath) { if (strlen(line) > 24) { char date[24] = {'\0'}; memcpy(date, line, 23); - #ifndef ANDROID if (strptime(date, "%Y-%m-%d %H:%M:%S", &tm_curr) != NULL) { time_curr = mktime(&tm_curr); CU_ASSERT_TRUE(time_curr >= time_prev); time_prev = time_curr; } - #endif } } CU_ASSERT_TRUE(line_count > 25); @@ -80,12 +135,7 @@ time_t check_file(char * filepath) { ms_free(filepath); } // return latest time in file - #ifdef ANDROID - ms_warning("fix me: Use mktime function on android"); - return ms_time(0); //should be fixed - #else return time_curr; - #endif } static LinphoneLogCollectionState old_collection_state; From 7787c91c46840aea13e2c209ab6453774036acb1 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 12 Nov 2014 16:22:20 +0100 Subject: [PATCH 138/249] Blacklist functions that prevent the Python module from building. --- tools/python/apixml2python.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/python/apixml2python.py b/tools/python/apixml2python.py index 357816a5a..1fb37b9bb 100755 --- a/tools/python/apixml2python.py +++ b/tools/python/apixml2python.py @@ -58,7 +58,9 @@ blacklisted_functions = [ 'linphone_core_publish', # missing LinphoneContent 'linphone_core_remove_listener', 'linphone_core_serialize_logs', # There is no use to wrap this function + 'linphone_core_set_log_collection_max_file_size', # need to handle class properties 'linphone_core_set_log_collection_path', # need to handle class properties + 'linphone_core_set_log_collection_prefix', # need to handle class properties 'linphone_core_set_log_file', # There is no use to wrap this function 'linphone_core_set_log_handler', # Hand-written but put directly in the linphone module 'linphone_core_set_log_level', # There is no use to wrap this function From 512093a3ee9ebf9e9b522a669542924e2718f2d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 7 Nov 2014 17:11:26 +0100 Subject: [PATCH 139/249] Set the application context while creating a LinphoneCore with LinphoneFactory.createLinphoneCore(listener, context) --- java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java | 4 +++- java/impl/org/linphone/core/LinphoneCoreImpl.java | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java b/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java index 2bf7b6245..925bae78d 100644 --- a/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java @@ -98,7 +98,9 @@ public class LinphoneCoreFactoryImpl extends LinphoneCoreFactory { public LinphoneCore createLinphoneCore(LinphoneCoreListener listener, Object context) throws LinphoneCoreException { try { MediastreamerAndroidContext.setContext(context); - return new LinphoneCoreImpl(listener); + LinphoneCore lc = new LinphoneCoreImpl(listener); + if(context!=null) lc.setContext(context); + return lc; } catch (IOException e) { throw new LinphoneCoreException("Cannot create LinphoneCore",e); } diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index 6e6f5a21f..ee360e13c 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -268,6 +268,7 @@ class LinphoneCoreImpl implements LinphoneCore { return logs; } public synchronized void destroy() { + setAndroidPowerManager(null); delete(nativePtr); nativePtr=0; } From 8a6a2e4ccacc4f1c9c7d410eecfd5998e02bc453 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 12 Nov 2014 16:25:34 +0100 Subject: [PATCH 140/249] Make local player to use the ring default sound card --- coreapi/linphonecore_jni.cc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 8abf9c4cd..ffc9e913d 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -5320,11 +5320,6 @@ extern "C" void Java_org_linphone_core_LinphonePlayerImpl_destroy(JNIEnv *env, j extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_createLocalPlayer(JNIEnv *env, jobject jobj, jlong ptr, jobject window) { jobject window_ref = NULL; - MSSndCard *snd_card = ms_snd_card_manager_get_default_playback_card(ms_snd_card_manager_get()); - if(snd_card == NULL) { - ms_error("No default playback sound card found"); - return 0; - } window_ref = env->NewGlobalRef(window); LinphonePlayer *player = linphone_core_create_local_player((LinphoneCore *)ptr, NULL, "MSAndroidDisplay", (unsigned long)window_ref); if(player == NULL) { From a76aa60ff524304284462a470d5d90e5e6cc4c29 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 12 Nov 2014 17:32:18 +0100 Subject: [PATCH 141/249] Free dtmf timer on call destruction, if needed --- coreapi/linphonecall.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 8d5d82c5f..e02a358f8 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -1042,11 +1042,15 @@ static void linphone_call_destroy(LinphoneCall *obj) if (obj->transfer_target){ linphone_call_unref(obj->transfer_target); } - if (obj->log) + if (obj->log) { linphone_call_log_unref(obj->log); + } if (obj->auth_token) { ms_free(obj->auth_token); } + if (obj->dtmfs_timer) { + linphone_call_cancel_dtmfs(obj); + } linphone_call_params_unref(obj->params); linphone_call_params_unref(obj->current_params); if (obj->remote_params != NULL) { From 0d4f9e0c92ef8ba5d3a306374656d770634fc7a4 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 13 Nov 2014 09:13:13 +0100 Subject: [PATCH 142/249] fix tester Flexisip/Subscribe forking --- tester/call_tester.c | 12 +++++++++++- tester/rcfiles/pauline_tcp_rc | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index a881e709d..642464d5c 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -359,12 +359,21 @@ static void direct_call_over_ipv6(){ LinphoneCoreManager* pauline; if (liblinphone_tester_ipv6_available()){ + LCSipTransports pauline_transports; + LinphoneAddress* pauline_dest = linphone_address_new("sip:[::1];transport=tcp"); marie = linphone_core_manager_new( "marie_rc"); pauline = linphone_core_manager_new( "pauline_tcp_rc"); + linphone_core_enable_ipv6(marie->lc,TRUE); linphone_core_enable_ipv6(pauline->lc,TRUE); linphone_core_set_default_proxy_config(marie->lc,NULL); - linphone_core_invite(marie->lc,"sip:[::1]:12002;transport=tcp"); + /*wait for register in v6 mode + CU_ASSERT_TRUE(wait_for_until(pauline->lc, NULL, &pauline->stat.number_of_LinphoneRegistrationOk, 2, 2000)); + CU_ASSERT_TRUE(wait_for_until(pauline->lc, NULL, &marie->stat.number_of_LinphoneRegistrationOk, 2, 2000)); + */ + linphone_core_get_sip_transports_used(pauline->lc,&pauline_transports); + linphone_address_set_port(pauline_dest,pauline_transports.tcp_port); + linphone_core_invite_address(marie->lc,pauline_dest); CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallOutgoingRinging,1)); CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallIncomingReceived,1)); @@ -376,6 +385,7 @@ static void direct_call_over_ipv6(){ end_call(marie,pauline); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); + linphone_address_destroy(pauline_dest); }else ms_warning("Test skipped, no ipv6 available"); } diff --git a/tester/rcfiles/pauline_tcp_rc b/tester/rcfiles/pauline_tcp_rc index 11cdb64cd..809c1ace6 100644 --- a/tester/rcfiles/pauline_tcp_rc +++ b/tester/rcfiles/pauline_tcp_rc @@ -1,6 +1,6 @@ [sip] sip_port=-1 -sip_tcp_port=12002 +sip_tcp_port=-1 sip_tls_port=-1 default_proxy=0 ping_with_options=0 From 25d6a4ef7092577c0920b196f5d47d68f90e920c Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 13 Nov 2014 10:11:46 +0100 Subject: [PATCH 143/249] update ms2 test --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index cebd5a0e1..6a438c81a 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit cebd5a0e1d1aa69cc2721a82a4d6514288abe7c7 +Subproject commit 6a438c81af537241662e2be911667fdd8c94bfff From 5417ffb8862682e437b5bde7b812926f4d9dbe59 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 13 Nov 2014 10:18:08 +0100 Subject: [PATCH 144/249] Fix submodule ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 6a438c81a..b92735ef0 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 6a438c81af537241662e2be911667fdd8c94bfff +Subproject commit b92735ef0cb784089e338b0100beb4dccebe76ba From 48a5ba6d98756ac4a916fef6f89ecd171253fc8e Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 13 Nov 2014 11:38:25 +0100 Subject: [PATCH 145/249] code cleanup --- coreapi/chat.c | 24 +++++++----------------- oRTP | 2 +- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index 45e1fc1ce..94a184b16 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -505,9 +505,10 @@ void linphone_chat_room_send_message(LinphoneChatRoom *cr, const char *msg) { } void linphone_chat_room_message_received(LinphoneChatRoom *cr, LinphoneCore *lc, LinphoneChatMessage *msg){ - if (msg->message) - //legacy API + if (msg->message){ + /*legacy API*/ linphone_core_notify_text_message_received(lc, cr, msg->from, msg->message); + } linphone_core_notify_message_received(lc, cr,msg); cr->remote_is_composing = LinphoneIsComposingIdle; linphone_core_notify_is_composing_received(cr->lc, cr); @@ -516,20 +517,13 @@ void linphone_chat_room_message_received(LinphoneChatRoom *cr, LinphoneCore *lc, void linphone_core_message_received(LinphoneCore *lc, SalOp *op, const SalMessage *sal_msg){ LinphoneChatRoom *cr=NULL; LinphoneAddress *addr; - char *cleanfrom; - char *from; LinphoneChatMessage* msg; const SalCustomHeader *ch; addr=linphone_address_new(sal_msg->from); linphone_address_clean(addr); cr=linphone_core_get_chat_room(lc,addr); - cleanfrom=linphone_address_as_string(addr); - from=linphone_address_as_string_uri_only(addr); - if (cr==NULL){ - /* create a new chat room */ - cr=linphone_core_create_chat_room(lc,cleanfrom); - } + if (sal_msg->content_type != NULL) { /* content_type field is, for now, used only for rcs file transfer but we shall strcmp it with "application/vnd.gsma.rcs-ft-http+xml" */ xmlChar *file_url = NULL; xmlDocPtr xmlMessageBody; @@ -537,8 +531,7 @@ void linphone_core_message_received(LinphoneCore *lc, SalOp *op, const SalMessag msg = linphone_chat_room_create_message(cr, NULL); /* create a message with empty body */ msg->content_type = ms_strdup(sal_msg->content_type); /* add the content_type "application/vnd.gsma.rcs-ft-http+xml" */ - msg->file_transfer_information = (LinphoneContent *)malloc(sizeof(LinphoneContent)); - memset(msg->file_transfer_information, 0, sizeof(*(msg->file_transfer_information))); + msg->file_transfer_information = ms_new0(LinphoneContent,1); /* parse the message body to get all informations from it */ xmlMessageBody = xmlParseDoc((const xmlChar *)sal_msg->text); @@ -615,8 +608,6 @@ void linphone_core_message_received(LinphoneCore *lc, SalOp *op, const SalMessag msg->storage_id=linphone_chat_message_store(msg); linphone_chat_room_message_received(cr,lc,msg); linphone_chat_message_unref(msg); - ms_free(cleanfrom); - ms_free(from); } static int linphone_chat_room_remote_refresh_composing_expired(void *data, unsigned int revents) { @@ -1033,7 +1024,7 @@ static void on_recv_body(belle_sip_user_body_handler_t *bh, belle_sip_message_t static LinphoneContent* linphone_chat_create_file_transfer_information_from_headers(const belle_sip_message_t* message ){ - LinphoneContent *content = ms_malloc0(sizeof(LinphoneContent)); + LinphoneContent *content = ms_new0(LinphoneContent,1); belle_sip_header_content_length_t* content_length_hdr = BELLE_SIP_HEADER_CONTENT_LENGTH(belle_sip_message_get_header(message, "Content-Length")); belle_sip_header_content_type_t* content_type_hdr = BELLE_SIP_HEADER_CONTENT_TYPE(belle_sip_message_get_header(message, "Content-Type")); @@ -1402,8 +1393,7 @@ LinphoneChatMessage* linphone_chat_room_create_file_transfer_message(LinphoneCha LinphoneChatMessage* msg = belle_sip_object_new(LinphoneChatMessage); msg->chat_room=(LinphoneChatRoom*)cr; msg->message = NULL; - msg->file_transfer_information = (LinphoneContent *)malloc(sizeof(LinphoneContent)); - memset(msg->file_transfer_information, 0, sizeof(LinphoneContent)); + msg->file_transfer_information = ms_new0(LinphoneContent,1); linphone_content_copy(msg->file_transfer_information, initial_content); msg->dir=LinphoneChatMessageOutgoing; linphone_chat_message_set_to(msg, linphone_chat_room_get_peer_address(cr)); diff --git a/oRTP b/oRTP index 913099228..a27dcf2b7 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 913099228e4f6faf92669e03e209c6ab19268bdd +Subproject commit a27dcf2b7874c98bb1b7885262b7391efde4d036 From 29f556302fc33eddec9196d3b05dbb7bcc9570c3 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 13 Nov 2014 11:47:36 +0100 Subject: [PATCH 146/249] Updated ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index b92735ef0..d5cd3b145 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit b92735ef0cb784089e338b0100beb4dccebe76ba +Subproject commit d5cd3b145c9ce7ca3c3e7810320c3a7f04cee3b3 From c0b7ae8359a83deac4814f3047bcb9764599d1dc Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 13 Nov 2014 14:12:55 +0100 Subject: [PATCH 147/249] Updated ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index d5cd3b145..54c3926ae 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit d5cd3b145c9ce7ca3c3e7810320c3a7f04cee3b3 +Subproject commit 54c3926ae917a0adcd598e2bb5ec01ad1adeff1e From 981659465330966614df98cf6feec06f79a217a1 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 13 Nov 2014 22:39:30 +0100 Subject: [PATCH 148/249] store ipv6 setting in config immediately --- coreapi/linphonecore.c | 3 +++ tester/call_tester.c | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 122657a14..c1f02e833 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -2300,6 +2300,9 @@ void linphone_core_enable_ipv6(LinphoneCore *lc, bool_t val){ } /*update the localip immediately for the network monitor to avoid to "discover" later that we switched to ipv6*/ linphone_core_get_local_ip(lc,AF_UNSPEC,NULL,lc->localip); + if (linphone_core_ready(lc)){ + lp_config_set_int(lc->config,"sip","use_ipv6",(int)val); + } } } diff --git a/tester/call_tester.c b/tester/call_tester.c index 642464d5c..000c05f41 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -367,10 +367,12 @@ static void direct_call_over_ipv6(){ linphone_core_enable_ipv6(marie->lc,TRUE); linphone_core_enable_ipv6(pauline->lc,TRUE); linphone_core_set_default_proxy_config(marie->lc,NULL); - /*wait for register in v6 mode + /*wait for register in v6 mode, however sip2.linphone.org has an ipv6 address but doesn't listen to it*/ +#if 0 CU_ASSERT_TRUE(wait_for_until(pauline->lc, NULL, &pauline->stat.number_of_LinphoneRegistrationOk, 2, 2000)); CU_ASSERT_TRUE(wait_for_until(pauline->lc, NULL, &marie->stat.number_of_LinphoneRegistrationOk, 2, 2000)); - */ +#endif + linphone_core_get_sip_transports_used(pauline->lc,&pauline_transports); linphone_address_set_port(pauline_dest,pauline_transports.tcp_port); linphone_core_invite_address(marie->lc,pauline_dest); From 32e7ffe2bd03b789f7e6f4ac2dcba5f3122abf5a Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 13 Nov 2014 22:51:03 +0100 Subject: [PATCH 149/249] update ms2 and ortp --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 54c3926ae..5581a7cdf 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 54c3926ae917a0adcd598e2bb5ec01ad1adeff1e +Subproject commit 5581a7cdfdbe0c27d1485c7191977ff12e6cface diff --git a/oRTP b/oRTP index a27dcf2b7..99edd188a 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit a27dcf2b7874c98bb1b7885262b7391efde4d036 +Subproject commit 99edd188a5f0c708bf044d4c39da1aac436acba4 From e913d2e5a044a0e907d91ac4c4455af3a29327ff Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 14 Nov 2014 10:48:29 +0100 Subject: [PATCH 150/249] Make linphone_core_get_device_rotation() public. --- coreapi/linphonecore.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 00cd466a3..211e29982 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -2801,7 +2801,7 @@ LINPHONE_PUBLIC void linphone_core_set_native_preview_window_id(LinphoneCore *lc **/ LINPHONE_PUBLIC void linphone_core_use_preview_window(LinphoneCore *lc, bool_t yesno); -int linphone_core_get_device_rotation(LinphoneCore *lc ); +LINPHONE_PUBLIC int linphone_core_get_device_rotation(LinphoneCore *lc ); LINPHONE_PUBLIC void linphone_core_set_device_rotation(LinphoneCore *lc, int rotation); /** From b0b705da7a7b7f6004aa28d76fc04db6fba049ad Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 14 Nov 2014 14:46:14 +0100 Subject: [PATCH 151/249] Rename wrong API. --- coreapi/chat.c | 2 +- coreapi/linphonecore.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index 94a184b16..a6f2a952d 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -1136,7 +1136,7 @@ void linphone_chat_message_start_file_download(LinphoneChatMessage *message, Lin * Cancel an ongoing file transfer attached to this message.(upload or download) * @param msg #LinphoneChatMessage */ -void linphone_chat_room_cancel_file_transfer(LinphoneChatMessage *msg) { +void linphone_chat_message_cancel_file_transfer(LinphoneChatMessage *msg) { ms_message("Cancelled file transfer %s - msg [%p] chat room[%p]", (msg->external_body_url==NULL)?linphone_core_get_file_transfer_server(msg->chat_room->lc):msg->external_body_url, msg, msg->chat_room); /* TODO: here we shall call the cancel http request from bellesip API when it is available passing msg->http_request */ /* waiting for this API, just set to NULL the reference to the request in the message and any request */ diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 211e29982..33dd95df2 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1456,7 +1456,7 @@ LINPHONE_PUBLIC const char* linphone_chat_message_get_external_body_url(const Li LINPHONE_PUBLIC void linphone_chat_message_set_external_body_url(LinphoneChatMessage* message,const char* url); LINPHONE_PUBLIC const LinphoneContent* linphone_chat_message_get_file_transfer_information(const LinphoneChatMessage* message); LINPHONE_PUBLIC void linphone_chat_message_start_file_download(LinphoneChatMessage* message, LinphoneChatMessageStateChangedCb status_cb, void* ud); -LINPHONE_PUBLIC void linphone_chat_room_cancel_file_transfer(LinphoneChatMessage* msg); +LINPHONE_PUBLIC void linphone_chat_message_cancel_file_transfer(LinphoneChatMessage* msg); LINPHONE_PUBLIC const char* linphone_chat_message_get_appdata(const LinphoneChatMessage* message); LINPHONE_PUBLIC void linphone_chat_message_set_appdata(LinphoneChatMessage* message, const char* data); LINPHONE_PUBLIC const char* linphone_chat_message_get_text(const LinphoneChatMessage* message); From 916a3e8e028c9dab06c286c8214257380cca5b31 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 14 Nov 2014 16:06:02 +0100 Subject: [PATCH 152/249] Fix compilation of message tester. --- tester/message_tester.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tester/message_tester.c b/tester/message_tester.c index 195ea3a92..d5f084f44 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -667,7 +667,7 @@ static void file_transfer_message_upload_cancelled(void) { /*wait for file to be 50% uploaded and cancel the transfer */ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.progress_of_LinphoneFileTransfer, 50)); - linphone_chat_room_cancel_file_transfer(message); + linphone_chat_message_cancel_file_transfer(message); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneMessageNotDelivered,1)); @@ -729,7 +729,7 @@ static void file_transfer_message_download_cancelled(void) { /* wait for file to be 50% downloaded */ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.progress_of_LinphoneFileTransfer, 50)); /* and cancel the transfer */ - linphone_chat_room_cancel_file_transfer(marie->stat.last_received_chat_message); + linphone_chat_message_cancel_file_transfer(marie->stat.last_received_chat_message); } CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneMessageInProgress,1); From c828b54b330076fd020612c56c9be65ba44318fc Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 14 Nov 2014 18:58:51 +0100 Subject: [PATCH 153/249] fix errors in the file transfer API design that were also wrapped in java. --- coreapi/linphonecore_jni.cc | 4 ++-- java/common/org/linphone/core/LinphoneChatMessage.java | 5 +++++ java/common/org/linphone/core/LinphoneChatRoom.java | 5 ----- java/impl/org/linphone/core/LinphoneChatMessageImpl.java | 6 ++++++ java/impl/org/linphone/core/LinphoneChatRoomImpl.java | 7 ------- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index ffc9e913d..2a985519e 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -2685,8 +2685,8 @@ extern "C" jlong Java_org_linphone_core_LinphoneChatRoomImpl_createFileTransferM return (jlong) message; } -extern "C" void Java_org_linphone_core_LinphoneChatRoomImpl_cancelFileTransfer(JNIEnv* env, jobject thiz, jlong ptr, jlong message) { - linphone_chat_room_cancel_file_transfer((LinphoneChatMessage *)message); +extern "C" void Java_org_linphone_core_LinphoneChatMessageImpl_cancelFileTransfer(JNIEnv* env, jobject thiz, jlong ptr) { + linphone_chat_message_cancel_file_transfer((LinphoneChatMessage *)ptr); } extern "C" jobject Java_org_linphone_core_LinphoneChatMessageImpl_getFileTransferInformation(JNIEnv* env, jobject thiz, jlong ptr) { diff --git a/java/common/org/linphone/core/LinphoneChatMessage.java b/java/common/org/linphone/core/LinphoneChatMessage.java index 930a064db..b1b839b5e 100644 --- a/java/common/org/linphone/core/LinphoneChatMessage.java +++ b/java/common/org/linphone/core/LinphoneChatMessage.java @@ -163,6 +163,10 @@ public interface LinphoneChatMessage { */ void startFileDownload(LinphoneChatMessage.StateListener listener); + /** + * Cancel an ongoing file transfer attached to this message.(upload or download). + */ + void cancelFileTransfer(); /** * Get the file_transfer_information (used by call backs to recover informations during a rcs file transfer) * @return a pointer to the LinphoneContent structure or NULL if not present. @@ -179,4 +183,5 @@ public interface LinphoneChatMessage { * @return the data stored in the chat message if any, else null */ String getAppData(); + } diff --git a/java/common/org/linphone/core/LinphoneChatRoom.java b/java/common/org/linphone/core/LinphoneChatRoom.java index 1f8c58f8c..b18e79d0c 100644 --- a/java/common/org/linphone/core/LinphoneChatRoom.java +++ b/java/common/org/linphone/core/LinphoneChatRoom.java @@ -144,9 +144,4 @@ public interface LinphoneChatRoom { */ LinphoneChatMessage createFileTransferMessage(LinphoneContent content); - /** - * Cancel an ongoing file transfer attached to this message (upload or download) - * @param message - */ - void cancelFileTransfer(LinphoneChatMessage message); } diff --git a/java/impl/org/linphone/core/LinphoneChatMessageImpl.java b/java/impl/org/linphone/core/LinphoneChatMessageImpl.java index d25ae426a..7e6d474a2 100644 --- a/java/impl/org/linphone/core/LinphoneChatMessageImpl.java +++ b/java/impl/org/linphone/core/LinphoneChatMessageImpl.java @@ -127,4 +127,10 @@ public class LinphoneChatMessageImpl implements LinphoneChatMessage { public String getAppData() { return getAppData(nativePtr); } + + private native void cancelFileTransfer(long messagePtr); + @Override + public void cancelFileTransfer() { + cancelFileTransfer(nativePtr); + } } diff --git a/java/impl/org/linphone/core/LinphoneChatRoomImpl.java b/java/impl/org/linphone/core/LinphoneChatRoomImpl.java index d47e4e47e..9236bce03 100644 --- a/java/impl/org/linphone/core/LinphoneChatRoomImpl.java +++ b/java/impl/org/linphone/core/LinphoneChatRoomImpl.java @@ -177,11 +177,4 @@ class LinphoneChatRoomImpl implements LinphoneChatRoom { } } - private native void cancelFileTransfer(long ptr, long messagePtr); - @Override - public void cancelFileTransfer(LinphoneChatMessage message) { - synchronized(getCore()) { - cancelFileTransfer(nativePtr, ((LinphoneChatMessageImpl)message).getNativePtr()); - } - } } From d0095948b9360b02876f1bb299dd3b5c71a1af14 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 14 Nov 2014 20:16:50 +0100 Subject: [PATCH 154/249] Allow the tunnel mode to work with any proxy config (except for sips destinations) fix the tunnel tests, that were not working correctly. --- coreapi/TunnelManager.cc | 36 +++++++++++------ coreapi/TunnelManager.hh | 5 +-- coreapi/bellesip_sal/sal_impl.c | 63 ++++++++++-------------------- coreapi/bellesip_sal/sal_impl.h | 3 +- coreapi/bellesip_sal/sal_op_impl.c | 8 +++- coreapi/linphone_tunnel.cc | 4 ++ coreapi/linphone_tunnel.h | 9 +++++ coreapi/linphonecall.c | 3 +- coreapi/linphonecore.c | 38 ++++++++++-------- coreapi/private.h | 2 +- include/sal/sal.h | 7 ++-- oRTP | 2 +- tester/transport_tester.c | 24 +++++------- 13 files changed, 104 insertions(+), 100 deletions(-) diff --git a/coreapi/TunnelManager.cc b/coreapi/TunnelManager.cc index 77e26fb1b..9b4cebda3 100644 --- a/coreapi/TunnelManager.cc +++ b/coreapi/TunnelManager.cc @@ -106,6 +106,7 @@ void TunnelManager::startClient() { } mTunnelClient->setHttpProxy(mHttpProxyHost.c_str(), mHttpProxyPort, mHttpUserName.c_str(), mHttpPasswd.c_str()); mTunnelClient->start(); + sal_set_tunnel(mCore->sal, mTunnelClient); } bool TunnelManager::isConnected() const { @@ -185,12 +186,13 @@ void TunnelManager::processTunnelEvent(const Event &ev){ ms_message("TunnelManager: tunnel is connected"); if(mState == connecting) { linphone_core_set_rtp_transport_factories(mCore,&mTransportFactories); + mState = ready; if(mTunnelizeSipPackets) { doUnregistration(); - sal_enable_tunnel(mCore->sal, mTunnelClient); + _linphone_core_apply_transports(mCore); doRegistration(); } - mState = ready; + } } else { ms_error("TunnelManager: tunnel has been disconnected"); @@ -219,17 +221,15 @@ void TunnelManager::setMode(LinphoneTunnelMode mode) { case LinphoneTunnelModeDisable: if(mState == ready) { linphone_core_set_rtp_transport_factories(mCore,NULL); - if(mTunnelizeSipPackets) { - doUnregistration(); - sal_disable_tunnel(mCore->sal); - } - delete mTunnelClient; - mTunnelClient=NULL; - if(mTunnelizeSipPackets) { - doRegistration(); - } mState = disabled; mMode = mode; + if(mTunnelizeSipPackets) { + doUnregistration(); + _linphone_core_apply_transports(mCore); + } + sal_set_tunnel(mCore->sal,NULL); + delete mTunnelClient; + mTunnelClient=NULL; } else { ms_error("TunnelManager: could not change mode. Bad state"); } @@ -385,6 +385,18 @@ bool TunnelManager::startAutoDetection() { return true; } +bool TunnelManager::isActivated() const{ + switch(getMode()){ + case LinphoneTunnelModeAuto: + return !mState==disabled; + case LinphoneTunnelModeDisable: + return false; + case LinphoneTunnelModeEnable: + return true; + } + return false; +} + void TunnelManager::setHttpProxyAuthInfo(const char* username,const char* passwd) { mHttpUserName=username?username:""; mHttpPasswd=passwd?passwd:""; @@ -392,7 +404,7 @@ void TunnelManager::setHttpProxyAuthInfo(const char* username,const char* passwd } void TunnelManager::tunnelizeSipPackets(bool enable){ - mTunnelizeSipPackets = enable; + mTunnelizeSipPackets = enable; } bool TunnelManager::tunnelizeSipPacketsEnabled() const { diff --git a/coreapi/TunnelManager.hh b/coreapi/TunnelManager.hh index 58475aab3..0af89fce9 100644 --- a/coreapi/TunnelManager.hh +++ b/coreapi/TunnelManager.hh @@ -142,6 +142,7 @@ namespace belledonnecomm { */ bool isConnected() const; + bool isActivated() const; private: enum State { disabled, @@ -199,10 +200,6 @@ namespace belledonnecomm { LinphoneRtpTransportFactories mTransportFactories; Mutex mMutex; std::queue mEvq; -#ifndef USE_BELLESIP - TunnelSocket *mSipSocket; - eXosip_transport_hooks_t mExosipTransport; -#endif }; /** diff --git a/coreapi/bellesip_sal/sal_impl.c b/coreapi/bellesip_sal/sal_impl.c index 875f09ad0..286fffc67 100644 --- a/coreapi/bellesip_sal/sal_impl.c +++ b/coreapi/bellesip_sal/sal_impl.c @@ -554,19 +554,24 @@ int sal_transport_available(Sal *sal, SalTransport t){ return FALSE; } -int sal_add_listen_port(Sal *ctx, SalAddress* addr){ +static int sal_add_listen_port(Sal *ctx, SalAddress* addr, bool_t is_tunneled){ int result; - belle_sip_listening_point_t* lp = belle_sip_stack_create_listening_point(ctx->stack, + belle_sip_listening_point_t* lp; + if (is_tunneled){ + if (sal_address_get_transport(addr)!=SalTransportUDP){ + ms_error("Tunneled mode is only available for UDP kind of transports."); + return -1; + } + lp = belle_sip_tunnel_listening_point_new(ctx->stack, ctx->tunnel_client); + if (!lp){ + ms_error("Could not create tunnel listening point."); + return -1; + } + }else{ + lp = belle_sip_stack_create_listening_point(ctx->stack, sal_address_get_domain(addr), sal_address_get_port(addr), sal_transport_to_string(sal_address_get_transport(addr))); - if (sal_address_get_port(addr)==-1 && lp==NULL){ - int random_port=(0xDFFF&ortp_random())+1024; - ms_warning("This version of belle-sip doesn't support random port, choosing one here."); - lp = belle_sip_stack_create_listening_point(ctx->stack, - sal_address_get_domain(addr), - random_port, - sal_transport_to_string(sal_address_get_transport(addr))); } if (lp) { belle_sip_listening_point_set_keep_alive(lp,ctx->keep_alive); @@ -578,13 +583,13 @@ int sal_add_listen_port(Sal *ctx, SalAddress* addr){ return result; } -int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int is_secure) { +int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int is_tunneled) { SalAddress* sal_addr = sal_address_new(NULL); int result; sal_address_set_domain(sal_addr,addr); sal_address_set_port(sal_addr,port); sal_address_set_transport(sal_addr,tr); - result = sal_add_listen_port(ctx,sal_addr); + result = sal_add_listen_port(ctx, sal_addr, is_tunneled); sal_address_destroy(sal_addr); return result; } @@ -646,43 +651,15 @@ void sal_set_keepalive_period(Sal *ctx,unsigned int value){ } } } -int sal_enable_tunnel(Sal *ctx, void *tunnelclient) { +int sal_set_tunnel(Sal *ctx, void *tunnelclient) { #ifdef TUNNEL_ENABLED - belle_sip_listening_point_t *lp_udp = NULL; - if(ctx->lp_tunnel != NULL) { - ortp_error("sal_enable_tunnel(): tunnel is already enabled"); - return -1; - } - while((lp_udp = belle_sip_provider_get_listening_point(ctx->prov, "udp")) != NULL) { - belle_sip_object_ref(lp_udp); - belle_sip_provider_remove_listening_point(ctx->prov, lp_udp); - ctx->udp_listening_points = ms_list_append(ctx->udp_listening_points, lp_udp); - } - ctx->lp_tunnel = belle_sip_tunnel_listening_point_new(ctx->stack, tunnelclient); - if(ctx->lp_tunnel == NULL) return -1; - belle_sip_listening_point_set_keep_alive(ctx->lp_tunnel, ctx->keep_alive); - belle_sip_provider_add_listening_point(ctx->prov, ctx->lp_tunnel); - belle_sip_object_ref(ctx->lp_tunnel); + ctx->tunnel_client=tunnelclient; return 0; #else - return 0; -#endif -} -void sal_disable_tunnel(Sal *ctx) { -#ifdef TUNNEL_ENABLED - MSList *it; - if(ctx->lp_tunnel) { - belle_sip_provider_remove_listening_point(ctx->prov, ctx->lp_tunnel); - belle_sip_object_unref(ctx->lp_tunnel); - ctx->lp_tunnel = NULL; - for(it=ctx->udp_listening_points; it!=NULL; it=it->next) { - belle_sip_provider_add_listening_point(ctx->prov, (belle_sip_listening_point_t *)it->data); - } - ms_list_free_with_data(ctx->udp_listening_points, belle_sip_object_unref); - ctx->udp_listening_points = NULL; - } + return -1; #endif } + /** * returns keepalive period in ms * 0 desactiaved diff --git a/coreapi/bellesip_sal/sal_impl.h b/coreapi/bellesip_sal/sal_impl.h index ed19b19e3..21aeadc74 100644 --- a/coreapi/bellesip_sal/sal_impl.h +++ b/coreapi/bellesip_sal/sal_impl.h @@ -33,8 +33,7 @@ struct Sal{ belle_sip_provider_t *prov; belle_sip_header_user_agent_t* user_agent; belle_sip_listener_t *listener; - belle_sip_listening_point_t *lp_tunnel; - MSList *udp_listening_points; + void *tunnel_client; void *up; /*user pointer*/ int session_expires; unsigned int keep_alive; diff --git a/coreapi/bellesip_sal/sal_op_impl.c b/coreapi/bellesip_sal/sal_op_impl.c index 2be6ce4eb..addb47ea9 100644 --- a/coreapi/bellesip_sal/sal_op_impl.c +++ b/coreapi/bellesip_sal/sal_op_impl.c @@ -285,6 +285,7 @@ static int _sal_op_send_request_with_contact(SalOp* op, belle_sip_request_t* req const MSList *elem=sal_op_get_route_addresses(op); const char *transport; const char *method=belle_sip_request_get_method(request); + belle_sip_listening_point_t *udplp=belle_sip_provider_get_listening_point(prov,"UDP"); if (elem) { outbound_proxy=belle_sip_header_address_get_uri((belle_sip_header_address_t*)elem->data); @@ -297,7 +298,7 @@ static int _sal_op_send_request_with_contact(SalOp* op, belle_sip_request_t* req /*compatibility mode: by default it should be udp as not explicitely set and if no udp listening point is available, then use * the first available transport*/ if (!belle_sip_uri_is_secure(next_hop_uri)){ - if (belle_sip_provider_get_listening_point(prov,"UDP")==0){ + if (udplp==NULL){ if (belle_sip_provider_get_listening_point(prov,"TCP")!=NULL){ transport="tcp"; }else if (belle_sip_provider_get_listening_point(prov,"TLS")!=NULL ){ @@ -309,6 +310,11 @@ static int _sal_op_send_request_with_contact(SalOp* op, belle_sip_request_t* req belle_sip_uri_set_transport_param(next_hop_uri,transport); } } + }else{ + if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(udplp,belle_sip_tunnel_listening_point_t)){ + /* our tunnel mode only supports UDP. Force transport to be set to UDP */ + belle_sip_uri_set_transport_param(next_hop_uri,"udp"); + } } if ((strcmp(method,"REGISTER")==0 || strcmp(method,"SUBSCRIBE")==0) && transport && (strcasecmp(transport,"TCP")==0 || strcasecmp(transport,"TLS")==0)){ diff --git a/coreapi/linphone_tunnel.cc b/coreapi/linphone_tunnel.cc index beabd43a8..9dd4e8adf 100644 --- a/coreapi/linphone_tunnel.cc +++ b/coreapi/linphone_tunnel.cc @@ -246,6 +246,10 @@ bool_t linphone_tunnel_connected(const LinphoneTunnel *tunnel){ return bcTunnel(tunnel)->isConnected(); } +bool_t linphone_tunnel_get_activated(const LinphoneTunnel *tunnel){ + return bcTunnel(tunnel)->isActivated(); +} + static OrtpLogFunc tunnelOrtpLogHandler=NULL; /* diff --git a/coreapi/linphone_tunnel.h b/coreapi/linphone_tunnel.h index 77d5e45b3..f071f3c37 100644 --- a/coreapi/linphone_tunnel.h +++ b/coreapi/linphone_tunnel.h @@ -188,6 +188,15 @@ LINPHONE_PUBLIC void linphone_tunnel_set_mode(LinphoneTunnel *tunnel, LinphoneTu **/ LINPHONE_PUBLIC LinphoneTunnelMode linphone_tunnel_get_mode(const LinphoneTunnel *tunnel); +/** + * Returns whether the tunnel is activated. If mode is set to auto, this gives indication whether the automatic detection determined + * that tunnel was necessary or not. + * @param tunnel the tunnel + * @return TRUE if tunnel is in use, FALSE otherwise. +**/ +LINPHONE_PUBLIC bool_t linphone_tunnel_get_activated(const LinphoneTunnel *tunnel); + + /** * Check whether the tunnel is connected * @param tunnel LinphoneTunnel object diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index e02a358f8..a7d114ecc 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2975,7 +2975,8 @@ void linphone_call_background_tasks(LinphoneCall *call, bool_t one_second_elapse linphone_call_handle_stream_events(call,0); linphone_call_handle_stream_events(call,1); - if (call->state==LinphoneCallStreamsRunning && one_second_elapsed && call->audiostream!=NULL && disconnect_timeout>0 ) + if (call->state==LinphoneCallStreamsRunning && one_second_elapsed && call->audiostream!=NULL + && call->audiostream->ms.state==MSStreamStarted && disconnect_timeout>0 ) disconnected=!audio_stream_alive(call->audiostream,disconnect_timeout); if (disconnected) linphone_core_disconnected(call->core,call); diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index c1f02e833..a476ab3e8 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -2151,7 +2151,7 @@ static bool_t transports_unchanged(const LCSipTransports * tr1, const LCSipTrans tr2->tls_port==tr1->tls_port; } -static int apply_transports(LinphoneCore *lc){ +int _linphone_core_apply_transports(LinphoneCore *lc){ Sal *sal=lc->sal; const char *anyaddr; LCSipTransports *tr=&lc->sip_conf.transports; @@ -2165,20 +2165,26 @@ static int apply_transports(LinphoneCore *lc){ anyaddr="0.0.0.0"; 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); + if (lc->tunnel && linphone_tunnel_sip_enabled(lc->tunnel) && linphone_tunnel_get_activated(lc->tunnel)){ + if (sal_listen_port(sal,anyaddr,tr->udp_port,SalTransportUDP,TRUE)!=0){ + transport_error(lc,"udp+tunnel",tr->udp_port); } - } - if (tr->tcp_port!=0){ - if (sal_listen_port (sal,anyaddr,tr->tcp_port,SalTransportTCP,FALSE)!=0){ - transport_error(lc,"tcp",tr->tcp_port); + }else{ + if (tr->udp_port!=0){ + if (sal_listen_port(sal,anyaddr,tr->udp_port,SalTransportUDP,FALSE)!=0){ + transport_error(lc,"udp",tr->udp_port); + } } - } - if (linphone_core_sip_transport_supported(lc,LinphoneTransportTls)){ - if (tr->tls_port!=0){ - if (sal_listen_port (sal,anyaddr,tr->tls_port,SalTransportTLS,TRUE)!=0){ - transport_error(lc,"tls",tr->tls_port); + if (tr->tcp_port!=0){ + if (sal_listen_port (sal,anyaddr,tr->tcp_port,SalTransportTCP,FALSE)!=0){ + transport_error(lc,"tcp",tr->tcp_port); + } + } + if (linphone_core_sip_transport_supported(lc,LinphoneTransportTls)){ + if (tr->tls_port!=0){ + if (sal_listen_port (sal,anyaddr,tr->tls_port,SalTransportTLS,FALSE)!=0){ + transport_error(lc,"tls",tr->tls_port); + } } } } @@ -2231,7 +2237,7 @@ int linphone_core_set_sip_transports(LinphoneCore *lc, const LCSipTransports * t } if (lc->sal==NULL) return 0; - return apply_transports(lc); + return _linphone_core_apply_transports(lc); } /** @@ -2296,7 +2302,7 @@ void linphone_core_enable_ipv6(LinphoneCore *lc, bool_t val){ lc->sip_conf.ipv6_enabled=val; if (lc->sal){ /* we need to update the sip stack */ - apply_transports(lc); + _linphone_core_apply_transports(lc); } /*update the localip immediately for the network monitor to avoid to "discover" later that we switched to ipv6*/ linphone_core_get_local_ip(lc,AF_UNSPEC,NULL,lc->localip); @@ -6830,7 +6836,7 @@ void linphone_core_set_sip_dscp(LinphoneCore *lc, int dscp){ sal_set_dscp(lc->sal,dscp); if (linphone_core_ready(lc)){ lp_config_set_int_hex(lc->config,"sip","dscp",dscp); - apply_transports(lc); + _linphone_core_apply_transports(lc); } } diff --git a/coreapi/private.h b/coreapi/private.h index ac274545a..314149860 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -414,7 +414,7 @@ void linphone_call_stop_media_streams_for_ice_gathering(LinphoneCall *call); void linphone_call_update_crypto_parameters(LinphoneCall *call, SalMediaDescription *old_md, SalMediaDescription *new_md); void linphone_call_update_remote_session_id_and_ver(LinphoneCall *call); void linphone_call_set_state_base(LinphoneCall *call, LinphoneCallState cstate, const char *message,bool_t silently); - +int _linphone_core_apply_transports(LinphoneCore *lc); const char * linphone_core_get_identity(LinphoneCore *lc); void linphone_core_start_waiting(LinphoneCore *lc, const char *purpose); diff --git a/include/sal/sal.h b/include/sal/sal.h index 74f1780bf..5fb0fbd92 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -65,7 +65,7 @@ typedef enum { SalTransportUDP, /*UDP*/ SalTransportTCP, /*TCP*/ SalTransportTLS, /*TLS*/ - SalTransportDTLS /*DTLS*/ + SalTransportDTLS, /*DTLS*/ }SalTransport; #define SAL_MEDIA_DESCRIPTION_UNCHANGED 0x00 @@ -516,7 +516,7 @@ void sal_signing_key_delete(SalSigningKey *key); void sal_set_callbacks(Sal *ctx, const SalCallbacks *cbs); -int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int is_secure); +int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int is_tunneled); int sal_get_listening_port(Sal *ctx, SalTransport tr); int sal_unlisten_ports(Sal *ctx); int sal_transport_available(Sal *ctx, SalTransport t); @@ -533,8 +533,7 @@ void sal_append_stack_string_to_user_agent(Sal *ctx); /*keepalive period in ms*/ void sal_set_keepalive_period(Sal *ctx,unsigned int value); void sal_use_tcp_tls_keepalive(Sal *ctx, bool_t enabled); -int sal_enable_tunnel(Sal *ctx, void *tunnelclient); -void sal_disable_tunnel(Sal *ctx); +int sal_set_tunnel(Sal *ctx, void *tunnelclient); /*Default value is true*/ void sal_enable_sip_update_method(Sal *ctx,bool_t value); diff --git a/oRTP b/oRTP index 99edd188a..497960634 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 99edd188a5f0c708bf044d4c39da1aac436acba4 +Subproject commit 497960634594593bd5441804fc548587b06389c6 diff --git a/tester/transport_tester.c b/tester/transport_tester.c index 8f0673d60..fdc4a194f 100644 --- a/tester/transport_tester.c +++ b/tester/transport_tester.c @@ -61,7 +61,6 @@ static char* get_public_contact_ip(LinphoneCore* lc) { } static void call_with_transport_base(LinphoneTunnelMode tunnel_mode, bool_t with_sip, LinphoneMediaEncryption encryption) { if (linphone_core_tunnel_available()){ - char *tmp_char; LinphoneCoreManager *pauline = linphone_core_manager_new( "pauline_rc"); LinphoneCoreManager *marie = linphone_core_manager_new( "marie_rc"); LinphoneCall *pauline_call; @@ -81,28 +80,23 @@ static void call_with_transport_base(LinphoneTunnelMode tunnel_mode, bool_t with LinphoneTunnel *tunnel = linphone_core_get_tunnel(pauline->lc); LinphoneTunnelConfig *config = linphone_tunnel_config_new(); - /*tunnel works only in UDP mode*/ - linphone_proxy_config_edit(proxy); - linphone_address_set_transport(server_addr, LinphoneTransportUdp); - linphone_address_set_transport(route, LinphoneTransportUdp); - tmp_char = linphone_address_as_string(server_addr); - linphone_proxy_config_set_server_addr(proxy, tmp_char); - ms_free(tmp_char); - tmp_char = linphone_address_as_string(route); - linphone_proxy_config_set_route(proxy, tmp_char); - ms_free(tmp_char); linphone_tunnel_config_set_host(config, "tunnel.linphone.org"); linphone_tunnel_config_set_port(config, 443); linphone_tunnel_config_set_remote_udp_mirror_port(config, 12345); linphone_tunnel_add_server(tunnel, config); linphone_tunnel_set_mode(tunnel, tunnel_mode); linphone_tunnel_enable_sip(tunnel, with_sip); - linphone_proxy_config_done(proxy); - /*enabling the tunnel cause another REGISTER to be made*/ - CU_ASSERT_TRUE(wait_for(pauline->lc,NULL,&pauline->stat.number_of_LinphoneRegistrationOk,2)); + /* + * Enabling the tunnel with sip cause another REGISTER to be made. + * In automatic mode, the udp test should conclude (assuming we have a normal network), that no + * tunnel is needed. Thus the number of registrations should stay to 1. + * The library is missing a notification of "tunnel connectivity test finished" to enable the + * full testing of the automatic mode. + */ - if(tunnel_mode == LinphoneTunnelModeEnable) { + if(tunnel_mode == LinphoneTunnelModeEnable && with_sip) { + CU_ASSERT_TRUE(wait_for(pauline->lc,NULL,&pauline->stat.number_of_LinphoneRegistrationOk,2)); /* Ensure that we did use the tunnel. If so, we should see contact changed from: Contact: ;.[...] To: From 1716178e384484e3e1c80925bb8e058ec1a4f0bb Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 15 Nov 2014 11:38:06 +0100 Subject: [PATCH 155/249] fix compilation without tunnel --- coreapi/bellesip_sal/sal_impl.c | 5 +++++ coreapi/linphone_tunnel_stubs.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/coreapi/bellesip_sal/sal_impl.c b/coreapi/bellesip_sal/sal_impl.c index 286fffc67..052c83971 100644 --- a/coreapi/bellesip_sal/sal_impl.c +++ b/coreapi/bellesip_sal/sal_impl.c @@ -558,6 +558,7 @@ static int sal_add_listen_port(Sal *ctx, SalAddress* addr, bool_t is_tunneled){ int result; belle_sip_listening_point_t* lp; if (is_tunneled){ +#ifdef TUNNEL_ENABLED if (sal_address_get_transport(addr)!=SalTransportUDP){ ms_error("Tunneled mode is only available for UDP kind of transports."); return -1; @@ -567,6 +568,10 @@ static int sal_add_listen_port(Sal *ctx, SalAddress* addr, bool_t is_tunneled){ ms_error("Could not create tunnel listening point."); return -1; } +#else + ms_error("No tunnel support in library."); + return -1; +#endif }else{ lp = belle_sip_stack_create_listening_point(ctx->stack, sal_address_get_domain(addr), diff --git a/coreapi/linphone_tunnel_stubs.c b/coreapi/linphone_tunnel_stubs.c index 72693463b..bfe793be6 100644 --- a/coreapi/linphone_tunnel_stubs.c +++ b/coreapi/linphone_tunnel_stubs.c @@ -63,6 +63,9 @@ bool_t linphone_tunnel_connected(const LinphoneTunnel *tunnel){ return FALSE; } +bool_t linphone_tunnel_get_activated(const LinphoneTunnel *tunnel){ + return FALSE; +} void linphone_tunnel_enable_logs_with_handler(LinphoneTunnel *tunnel, bool_t enabled, OrtpLogFunc logHandler){ } From 89ac410152a9ae68ed861156285d2e2f78c070dd Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sun, 16 Nov 2014 12:09:22 +0100 Subject: [PATCH 156/249] fix crash without tunnel, fix compilation on debian 6 --- coreapi/bellesip_sal/sal_op_impl.c | 2 ++ gtk/videowindow.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/coreapi/bellesip_sal/sal_op_impl.c b/coreapi/bellesip_sal/sal_op_impl.c index addb47ea9..5acfd5eae 100644 --- a/coreapi/bellesip_sal/sal_op_impl.c +++ b/coreapi/bellesip_sal/sal_op_impl.c @@ -311,10 +311,12 @@ static int _sal_op_send_request_with_contact(SalOp* op, belle_sip_request_t* req } } }else{ +#ifdef TUNNEL_ENABLED if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(udplp,belle_sip_tunnel_listening_point_t)){ /* our tunnel mode only supports UDP. Force transport to be set to UDP */ belle_sip_uri_set_transport_param(next_hop_uri,"udp"); } +#endif } if ((strcmp(method,"REGISTER")==0 || strcmp(method,"SUBSCRIBE")==0) && transport && (strcasecmp(transport,"TCP")==0 || strcasecmp(transport,"TLS")==0)){ diff --git a/gtk/videowindow.c b/gtk/videowindow.c index 24dc584f7..f2247e573 100644 --- a/gtk/videowindow.c +++ b/gtk/videowindow.c @@ -74,7 +74,7 @@ static void drag_data_received(GtkWidget *widget, GdkDragContext *context, gint } static gboolean drag_drop(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, guint time, gpointer user_data){ -#if GTK_CHECK_VERSION(2,20,0) +#if GTK_CHECK_VERSION(2,21,0) GList *l=gdk_drag_context_list_targets(drag_context); GList *elem; From e3b3a5aa5bd1d15d00bc1142136494397ed67a42 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Sun, 16 Nov 2014 23:26:14 +0100 Subject: [PATCH 157/249] move ZRTP management from oRTP to Mediastreamer2 using transport modifier --- coreapi/linphonecall.c | 24 ++++++++++++------------ coreapi/linphonecore.c | 6 +++--- mediastreamer2 | 2 +- oRTP | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index a7d114ecc..d017d3b4b 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -183,7 +183,7 @@ static void linphone_call_audiostream_encryption_changed(void *data, bool_t encr { const LinphoneCallParams *params=linphone_call_get_current_params(call); if (params->has_video) { - OrtpZrtpParams params; + MSZrtpParams params; ms_message("Trying to enable encryption on video stream"); params.zid_file=NULL; //unused video_stream_enable_zrtp(call->videostream,call->audiostream,¶ms); @@ -219,9 +219,9 @@ void linphone_call_set_authentication_token_verified(LinphoneCall *call, bool_t ms_error("linphone_call_set_authentication_token_verified(): No zrtp context."); } if (!call->auth_token_verified && verified){ - ortp_zrtp_sas_verified(call->audiostream->ms.sessions.zrtp_context); + ms_zrtp_sas_verified(call->audiostream->ms.sessions.zrtp_context); }else if (call->auth_token_verified && !verified){ - ortp_zrtp_sas_reset_verified(call->audiostream->ms.sessions.zrtp_context); + ms_zrtp_sas_reset_verified(call->audiostream->ms.sessions.zrtp_context); } call->auth_token_verified=verified; propagate_encryption_changed(call); @@ -2001,8 +2001,8 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, const char *cna crypto_idx = find_crypto_index_from_tag(local_st_desc->crypto, stream->crypto_local_tag); if (crypto_idx >= 0) { - media_stream_set_srtp_recv_key(&call->audiostream->ms,stream->crypto[0].algo,stream->crypto[0].master_key); - media_stream_set_srtp_send_key(&call->audiostream->ms,stream->crypto[0].algo,local_st_desc->crypto[crypto_idx].master_key); + media_stream_set_srtp_recv_key(&call->audiostream->ms,stream->crypto[0].algo,stream->crypto[0].master_key, TRUE); + media_stream_set_srtp_send_key(&call->audiostream->ms,stream->crypto[0].algo,local_st_desc->crypto[crypto_idx].master_key, TRUE); } else { ms_warning("Failed to find local crypto algo with tag: %d", stream->crypto_local_tag); } @@ -2123,8 +2123,8 @@ static void linphone_call_start_video_stream(LinphoneCall *call, const char *cna if (sal_stream_description_has_srtp(vstream) == TRUE) { int crypto_idx = find_crypto_index_from_tag(local_st_desc->crypto, vstream->crypto_local_tag); if (crypto_idx >= 0) { - media_stream_set_srtp_recv_key(&call->videostream->ms,vstream->crypto[0].algo,vstream->crypto[0].master_key); - media_stream_set_srtp_send_key(&call->videostream->ms,vstream->crypto[0].algo,local_st_desc->crypto[crypto_idx].master_key); + media_stream_set_srtp_recv_key(&call->videostream->ms,vstream->crypto[0].algo,vstream->crypto[0].master_key, TRUE); + media_stream_set_srtp_send_key(&call->videostream->ms,vstream->crypto[0].algo,local_st_desc->crypto[crypto_idx].master_key, TRUE); } } configure_rtp_session_for_rtcp_xr(lc, call, SalVideo); @@ -2204,15 +2204,15 @@ void linphone_call_start_media_streams(LinphoneCall *call, bool_t all_inputs_mut call->up_bw=linphone_core_get_upload_bandwidth(lc); if (call->params->media_encryption==LinphoneMediaEncryptionZRTP) { - OrtpZrtpParams params; - memset(¶ms,0,sizeof(OrtpZrtpParams)); + MSZrtpParams params; + memset(¶ms,0,sizeof(MSZrtpParams)); /*call->current_params.media_encryption will be set later when zrtp is activated*/ params.zid_file=lc->zrtp_secrets_cache; audio_stream_enable_zrtp(call->audiostream,¶ms); #if VIDEO_ENABLED if (media_stream_secured((MediaStream *)call->audiostream) && media_stream_get_state((MediaStream *)call->videostream) == MSStreamStarted) { /*audio stream is already encrypted and video stream is active*/ - memset(¶ms,0,sizeof(OrtpZrtpParams)); + memset(¶ms,0,sizeof(MSZrtpParams)); video_stream_enable_zrtp(call->videostream,call->audiostream,¶ms); } #endif @@ -2244,9 +2244,9 @@ static bool_t update_stream_crypto_params(LinphoneCall *call, const SalStreamDes int crypto_idx = find_crypto_index_from_tag(local_st_desc->crypto, new_stream->crypto_local_tag); if (crypto_idx >= 0) { if (call->localdesc_changed & SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED) - media_stream_set_srtp_send_key(ms,new_stream->crypto[0].algo,local_st_desc->crypto[crypto_idx].master_key); + media_stream_set_srtp_send_key(ms,new_stream->crypto[0].algo,local_st_desc->crypto[crypto_idx].master_key, TRUE); if (strcmp(old_stream->crypto[0].master_key,new_stream->crypto[0].master_key)!=0){ - media_stream_set_srtp_recv_key(ms,new_stream->crypto[0].algo,new_stream->crypto[0].master_key); + media_stream_set_srtp_recv_key(ms,new_stream->crypto[0].algo,new_stream->crypto[0].master_key,TRUE); } return TRUE; } else { diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index a476ab3e8..9905fdee7 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include #include -#include +#include #include "mediastreamer2/mediastream.h" #include "mediastreamer2/mseventqueue.h" #include "mediastreamer2/msvolume.h" @@ -6761,7 +6761,7 @@ bool_t linphone_core_media_encryption_supported(const LinphoneCore *lc, Linphone case LinphoneMediaEncryptionSRTP: return media_stream_srtp_supported(); case LinphoneMediaEncryptionZRTP: - return ortp_zrtp_available(); + return ms_zrtp_available(); case LinphoneMediaEncryptionNone: return TRUE; } @@ -6778,7 +6778,7 @@ int linphone_core_set_media_encryption(LinphoneCore *lc, LinphoneMediaEncryption ret=-1; }else type="srtp"; }else if (menc == LinphoneMediaEncryptionZRTP){ - if (!ortp_zrtp_available()){ + if (!ms_zrtp_available()){ ms_warning("ZRTP not supported by library."); type="none"; ret=-1; diff --git a/mediastreamer2 b/mediastreamer2 index 5581a7cdf..5c5f7c826 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 5581a7cdfdbe0c27d1485c7191977ff12e6cface +Subproject commit 5c5f7c82645a76ea700553eca4416197e895b966 diff --git a/oRTP b/oRTP index 497960634..15f1e5f89 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 497960634594593bd5441804fc548587b06389c6 +Subproject commit 15f1e5f89c7381f580190432f33a7f9e86c32e7f From c4d26de43382fc73dc3e9e957d1eef8d6d63fd30 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Sun, 16 Nov 2014 23:47:39 +0100 Subject: [PATCH 158/249] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 5c5f7c826..5fc61fb42 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 5c5f7c82645a76ea700553eca4416197e895b966 +Subproject commit 5fc61fb4234cbdb2ab5069cc18c41eaa93b94703 From c973be8d1dbe602663f67479218a613be5b284ba Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Mon, 17 Nov 2014 16:25:53 +0100 Subject: [PATCH 159/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 5fc61fb42..f059dcef2 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 5fc61fb4234cbdb2ab5069cc18c41eaa93b94703 +Subproject commit f059dcef22f353efbbdf2150e6c5bb9fe386df8d From b65ccceacb661719e38b6edd4281e5fb6acaa64a Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 18 Nov 2014 11:56:58 +0100 Subject: [PATCH 160/249] Use ms_debug instead of ms_message for noisy flattening messages --- coreapi/proxy.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/coreapi/proxy.c b/coreapi/proxy.c index 7e0e35c8a..ca9c21c9d 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -924,7 +924,7 @@ int linphone_proxy_config_normalize_number(LinphoneProxyConfig *proxy, const cha if (is_a_phone_number(username)){ char *flatten; flatten=flatten_number(username); - ms_message("Flattened number is '%s'",flatten); + ms_debug("Flattened number is '%s'",flatten); if (proxy->dial_prefix==NULL || proxy->dial_prefix[0]=='\0'){ /*no prefix configured, nothing else to do*/ @@ -934,10 +934,10 @@ int linphone_proxy_config_normalize_number(LinphoneProxyConfig *proxy, const cha }else{ dial_plan_t dialplan; lookup_dial_plan(proxy->dial_prefix,&dialplan); - ms_message("Using dialplan '%s'",dialplan.country); + ms_debug("Using dialplan '%s'",dialplan.country); if (flatten[0]=='+' || strstr(flatten,dialplan.icp)==flatten){ /* the number has international prefix or +, so nothing to do*/ - ms_message("Prefix already present."); + ms_debug("Prefix already present."); /*eventually replace the plus*/ replace_plus(flatten,result,result_len,proxy->dial_escape_plus ? dialplan.icp : NULL); ms_free(flatten); From 3c66a8521d053a4ad64c482ee0fd35c715608a78 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Tue, 18 Nov 2014 14:29:35 +0100 Subject: [PATCH 161/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index f059dcef2..e07bc4ba6 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit f059dcef22f353efbbdf2150e6c5bb9fe386df8d +Subproject commit e07bc4ba689e5f5dfc868b69ba4919f3e149b346 From 9db4ae276bb956730892fe093cdeec03f1511d38 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 18 Nov 2014 14:38:42 +0100 Subject: [PATCH 162/249] fix direct_call_over_ipv6 on Android --- tester/call_tester.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tester/call_tester.c b/tester/call_tester.c index 000c05f41..94a1a2464 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -364,6 +364,8 @@ static void direct_call_over_ipv6(){ marie = linphone_core_manager_new( "marie_rc"); pauline = linphone_core_manager_new( "pauline_tcp_rc"); + linphone_core_use_files (pauline->lc,TRUE); + linphone_core_enable_ipv6(marie->lc,TRUE); linphone_core_enable_ipv6(pauline->lc,TRUE); linphone_core_set_default_proxy_config(marie->lc,NULL); From 2e515642f07eb33974583587ddb2ee4669d4ff29 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 18 Nov 2014 16:00:28 +0100 Subject: [PATCH 163/249] fix bad call state notification (Released) when receiving a call with incompatible codecs. Normally this should not trigger any notification. Fix bug allowing two incoming calls to be notified if ICE is used. --- coreapi/callbacks.c | 23 ++++++- coreapi/linphonecall.c | 145 ++++++++++++++++++++++++----------------- coreapi/linphonecore.c | 27 ++++---- coreapi/misc.c | 7 +- coreapi/private.h | 9 ++- coreapi/upnp.c | 2 + mediastreamer2 | 2 +- tester/call_tester.c | 45 ++++++++----- 8 files changed, 157 insertions(+), 103 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 2776a90ec..bc58f3c7d 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -224,7 +224,8 @@ static bool_t already_a_call_pending(LinphoneCore *lc){ || call->state==LinphoneCallOutgoingInit || call->state==LinphoneCallOutgoingProgress || call->state==LinphoneCallOutgoingEarlyMedia - || call->state==LinphoneCallOutgoingRinging){ + || call->state==LinphoneCallOutgoingRinging + || call->state==LinphoneCallIdle){ /*case of an incoming call for which ICE candidate gathering is pending.*/ return TRUE; } } @@ -239,6 +240,7 @@ static void call_received(SalOp *h){ LinphoneAddress *to_addr=NULL; /*this mode is deprcated because probably useless*/ bool_t prevent_colliding_calls=lp_config_get_int(lc->config,"sip","prevent_colliding_calls",FALSE); + SalMediaDescription *md; /* first check if we can answer successfully to this invite */ if (linphone_presence_model_get_basic_status(lc->presence_model) == LinphonePresenceBasicStatusClosed) { @@ -301,8 +303,19 @@ static void call_received(SalOp *h){ linphone_address_destroy(to_addr); return; } - + call=linphone_call_new_incoming(lc,from_addr,to_addr,h); + + linphone_call_make_local_media_description(lc,call); + sal_call_set_local_media_description(call->op,call->localdesc); + md=sal_call_get_final_media_description(call->op); + if (md){ + if (sal_media_description_empty(md) || linphone_core_incompatible_security(lc,md)){ + sal_call_decline(call->op,SalReasonNotAcceptable,NULL); + linphone_call_unref(call); + return; + } + } /* the call is acceptable so we can now add it to our list */ linphone_core_add_call(lc,call); @@ -372,6 +385,10 @@ static void call_ringing(SalOp *h){ md=sal_call_get_final_media_description(h); if (md==NULL){ linphone_core_stop_dtmf_stream(lc); + if (call->state==LinphoneCallOutgoingEarlyMedia){ + /*already doing early media */ + return; + } if (lc->ringstream!=NULL) return;/*already ringing !*/ if (lc->sound_conf.play_sndcard!=NULL){ MSSndCard *ringcard=lc->sound_conf.lsd_card ? lc->sound_conf.lsd_card : lc->sound_conf.play_sndcard; @@ -422,7 +439,7 @@ static void call_accepted(SalOp *op){ /* Handle remote ICE attributes if any. */ if (call->ice_session != NULL) { - linphone_core_update_ice_from_remote_media_description(call, sal_call_get_remote_media_description(op)); + linphone_call_update_ice_from_remote_media_description(call, sal_call_get_remote_media_description(op)); } #ifdef BUILD_UPNP if (call->upnp_session != NULL) { diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index d017d3b4b..dc991c616 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -381,6 +381,19 @@ void linphone_call_increment_local_media_description(LinphoneCall *call){ md->session_ver++; } +void linphone_call_update_local_media_description_from_ice_or_upnp(LinphoneCall *call){ + if (call->ice_session != NULL) { + _update_local_media_description_from_ice(call->localdesc, call->ice_session); + linphone_core_update_ice_state_in_call_stats(call); + } +#ifdef BUILD_UPNP + if(call->upnp_session != NULL) { + linphone_core_update_local_media_description_from_upnp(call->localdesc, call->upnp_session); + linphone_core_update_upnp_state_in_call_stats(call); + } +#endif //BUILD_UPNP +} + void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall *call){ MSList *l; PayloadType *pt; @@ -463,18 +476,9 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * setup_rtcp_xr(call, md); update_media_description_from_stun(md,&call->ac,&call->vc); - if (call->ice_session != NULL) { - linphone_core_update_local_media_description_from_ice(md, call->ice_session); - linphone_core_update_ice_state_in_call_stats(call); - } -#ifdef BUILD_UPNP - if(call->upnp_session != NULL) { - linphone_core_update_local_media_description_from_upnp(md, call->upnp_session); - linphone_core_update_upnp_state_in_call_stats(call); - } -#endif //BUILD_UPNP - linphone_address_destroy(addr); call->localdesc=md; + linphone_call_update_local_media_description_from_ice_or_upnp(call); + linphone_address_destroy(addr); if (old_md){ call->localdesc_changed=sal_media_description_equals(md,old_md); sal_media_description_unref(old_md); @@ -840,7 +844,50 @@ LinphoneCall * linphone_call_new_incoming(LinphoneCore *lc, LinphoneAddress *fro return call; } -/* this function is called internally to get rid of a call. +/* + * Frees the media resources of the call. + * This has to be done at the earliest, unlike signaling resources that sometimes need to be kept a bit more longer. + * It is called by linphone_call_set_terminated() (for termination of calls signaled to the application), or directly by the destructor of LinphoneCall + * (_linphone_call_destroy) if the call was never notified to the application. + */ +void linphone_call_free_media_resources(LinphoneCall *call){ + linphone_call_stop_media_streams(call); + ms_media_stream_sessions_uninit(&call->sessions[0]); + ms_media_stream_sessions_uninit(&call->sessions[1]); + linphone_call_delete_upnp_session(call); + linphone_call_delete_ice_session(call); + linphone_call_stats_uninit(&call->stats[0]); + linphone_call_stats_uninit(&call->stats[1]); +} + +/* + * Called internally when reaching the Released state, to perform cleanups to break circular references. +**/ +static void linphone_call_set_released(LinphoneCall *call){ + if (call->op!=NULL) { + /*transfer the last error so that it can be obtained even in Released state*/ + if (call->non_op_error.reason==SalReasonNone){ + const SalErrorInfo *ei=sal_op_get_error_info(call->op); + sal_error_info_set(&call->non_op_error,ei->reason,ei->protocol_code,ei->status_string,ei->warnings); + } + /* so that we cannot have anymore upcalls for SAL + concerning this call*/ + sal_op_release(call->op); + call->op=NULL; + } + /*it is necessary to reset pointers to other call to prevent circular references that would result in memory never freed.*/ + if (call->referer){ + linphone_call_unref(call->referer); + call->referer=NULL; + } + if (call->transfer_target){ + linphone_call_unref(call->transfer_target); + call->transfer_target=NULL; + } + linphone_call_unref(call); +} + +/* this function is called internally to get rid of a call that was notified to the application, because it reached the end or error state. It performs the following tasks: - remove the call from the internal list of calls - update the call logs accordingly @@ -849,17 +896,9 @@ LinphoneCall * linphone_call_new_incoming(LinphoneCore *lc, LinphoneAddress *fro static void linphone_call_set_terminated(LinphoneCall *call){ LinphoneCore *lc=call->core; - linphone_call_stop_media_streams(call); - ms_media_stream_sessions_uninit(&call->sessions[0]); - ms_media_stream_sessions_uninit(&call->sessions[1]); - linphone_call_delete_upnp_session(call); - linphone_call_delete_ice_session(call); - linphone_core_update_allocated_audio_bandwidth(lc); - linphone_call_stats_uninit(&call->stats[0]); - linphone_call_stats_uninit(&call->stats[1]); + linphone_call_free_media_resources(call); linphone_call_log_completed(call); - if (call == lc->current_call){ ms_message("Resetting the current call"); lc->current_call=NULL; @@ -868,7 +907,6 @@ static void linphone_call_set_terminated(LinphoneCall *call){ if (linphone_core_del_call(lc,call) != 0){ ms_error("Could not remove the call from the list !!!"); } - linphone_core_conference_check_uninit(lc); if (call->ringing_beep){ linphone_core_stop_dtmf(lc); @@ -931,11 +969,7 @@ const char *linphone_call_state_to_string(LinphoneCallState cs){ return "undefined state"; } -void linphone_call_set_state(LinphoneCall *call, LinphoneCallState cstate, const char *message) { - linphone_call_set_state_base(call, cstate, message,FALSE); -} - -void linphone_call_set_state_base(LinphoneCall *call, LinphoneCallState cstate, const char *message,bool_t silently){ +void linphone_call_set_state(LinphoneCall *call, LinphoneCallState cstate, const char *message){ LinphoneCore *lc=call->core; if (call->state!=cstate){ @@ -974,45 +1008,24 @@ void linphone_call_set_state_base(LinphoneCall *call, LinphoneCallState cstate, call->log->connected_date_time=time(NULL); } - if (!silently) - linphone_core_notify_call_state_changed(lc,call,cstate,message); - + linphone_core_notify_call_state_changed(lc,call,cstate,message); linphone_reporting_call_state_updated(call); - + /*cancelling DTMF sequence, if any*/ - if (cstate!=LinphoneCallStreamsRunning&&call->dtmfs_timer!=NULL){ + if (cstate!=LinphoneCallStreamsRunning && call->dtmfs_timer!=NULL){ linphone_call_cancel_dtmfs(call); } - if (cstate==LinphoneCallReleased){ - if (call->op!=NULL) { - /*transfer the last error so that it can be obtained even in Released state*/ - if (call->non_op_error.reason==SalReasonNone){ - const SalErrorInfo *ei=sal_op_get_error_info(call->op); - sal_error_info_set(&call->non_op_error,ei->reason,ei->protocol_code,ei->status_string,ei->warnings); - } - /* so that we cannot have anymore upcalls for SAL - concerning this call*/ - sal_op_release(call->op); - call->op=NULL; - } - /*it is necessary to reset pointers to other call to prevent circular references that would result in memory never freed.*/ - if (call->referer){ - linphone_call_unref(call->referer); - call->referer=NULL; - } - if (call->transfer_target){ - linphone_call_unref(call->transfer_target); - call->transfer_target=NULL; - } - linphone_call_unref(call); + linphone_call_set_released(call); } } } -static void linphone_call_destroy(LinphoneCall *obj) -{ +static void linphone_call_destroy(LinphoneCall *obj){ ms_message("Call [%p] freed.",obj); + if (obj->audiostream || obj->videostream){ + linphone_call_free_media_resources(obj); + } if (obj->op!=NULL) { sal_op_release(obj->op); obj->op=NULL; @@ -1031,9 +1044,11 @@ static void linphone_call_destroy(LinphoneCall *obj) } if (obj->ping_op) { sal_op_release(obj->ping_op); + obj->ping_op=NULL; } if (obj->refer_to){ ms_free(obj->refer_to); + obj->refer_to=NULL; } if (obj->referer){ linphone_call_unref(obj->referer); @@ -1041,20 +1056,30 @@ static void linphone_call_destroy(LinphoneCall *obj) } if (obj->transfer_target){ linphone_call_unref(obj->transfer_target); + obj->transfer_target=NULL; } if (obj->log) { linphone_call_log_unref(obj->log); + obj->log=NULL; } if (obj->auth_token) { ms_free(obj->auth_token); + obj->auth_token=NULL; } if (obj->dtmfs_timer) { linphone_call_cancel_dtmfs(obj); } - linphone_call_params_unref(obj->params); - linphone_call_params_unref(obj->current_params); + if (obj->params){ + linphone_call_params_unref(obj->params); + obj->params=NULL; + } + if (obj->current_params){ + linphone_call_params_unref(obj->current_params); + obj->current_params=NULL; + } if (obj->remote_params != NULL) { linphone_call_params_unref(obj->remote_params); + obj->remote_params=NULL; } sal_error_info_reset(&obj->non_op_error); } @@ -1497,7 +1522,7 @@ int linphone_call_prepare_ice(LinphoneCall *call, bool_t incoming_offer){ if (has_video) _linphone_call_prepare_ice_for_stream(call,1,TRUE); /*start ICE gathering*/ if (incoming_offer) - linphone_core_update_ice_from_remote_media_description(call,remote); /*this may delete the ice session*/ + linphone_call_update_ice_from_remote_media_description(call,remote); /*this may delete the ice session*/ if (call->ice_session && !ice_session_candidates_gathered(call->ice_session)){ if (call->audiostream->ms.state==MSStreamInitialized) audio_stream_prepare_sound(call->audiostream, NULL, NULL); @@ -2839,6 +2864,8 @@ static void handle_ice_events(LinphoneCall *call, OrtpEvent *ev){ break; case LinphoneCallIdle: linphone_call_stop_media_streams_for_ice_gathering(call); + linphone_call_update_local_media_description_from_ice_or_upnp(call); + sal_call_set_local_media_description(call->op,call->localdesc); linphone_core_notify_incoming_call(call->core, call); break; default: diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 9905fdee7..c36c5894d 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1299,6 +1299,7 @@ bool_t linphone_core_rtcp_enabled(const LinphoneCore *lc){ */ void linphone_core_set_download_bandwidth(LinphoneCore *lc, int bw){ lc->net_conf.download_bw=bw; + linphone_core_update_allocated_audio_bandwidth(lc); if (linphone_core_ready(lc)) lp_config_set_int(lc->config,"net","download_bw",bw); } @@ -1315,6 +1316,7 @@ void linphone_core_set_download_bandwidth(LinphoneCore *lc, int bw){ */ void linphone_core_set_upload_bandwidth(LinphoneCore *lc, int bw){ lc->net_conf.upload_bw=bw; + linphone_core_update_allocated_audio_bandwidth(lc); if (linphone_core_ready(lc)) lp_config_set_int(lc->config,"net","upload_bw",bw); } @@ -1821,6 +1823,7 @@ int linphone_core_set_audio_codecs(LinphoneCore *lc, MSList *codecs) if (lc->codecs_conf.audio_codecs!=NULL) ms_list_free(lc->codecs_conf.audio_codecs); lc->codecs_conf.audio_codecs=codecs; _linphone_core_codec_config_write(lc); + linphone_core_update_allocated_audio_bandwidth(lc); return 0; } @@ -3216,22 +3219,9 @@ void linphone_core_notify_incoming_call(LinphoneCore *lc, LinphoneCall *call){ char *barmesg; char *tmp; LinphoneAddress *from_parsed; - SalMediaDescription *md; bool_t propose_early_media=lp_config_get_int(lc->config,"sip","incoming_calls_early_media",FALSE); const char *ringback_tone=linphone_core_get_remote_ringback_tone (lc); - linphone_call_make_local_media_description(lc,call); - sal_call_set_local_media_description(call->op,call->localdesc); - md=sal_call_get_final_media_description(call->op); - if (md){ - if (sal_media_description_empty(md) || linphone_core_incompatible_security(lc,md)){ - sal_call_decline(call->op,SalReasonNotAcceptable,NULL); - linphone_call_set_state_base(call, LinphoneCallError, NULL,TRUE); - linphone_call_unref(call); - return; - } - } - from_parsed=linphone_address_new(sal_op_get_from(call->op)); linphone_address_clean(from_parsed); tmp=linphone_address_as_string(from_parsed); @@ -6395,11 +6385,17 @@ bool_t linphone_core_can_we_add_call(LinphoneCore *lc) return FALSE; } +static void notify_soundcard_usage(LinphoneCore *lc, bool_t used){ + MSSndCard *card=lc->sound_conf.capt_sndcard; + if (card && ms_snd_card_get_capabilities(card) & MS_SND_CARD_CAP_IS_SLOW){ + ms_snd_card_set_usage_hint(card,used); + } +} int linphone_core_add_call( LinphoneCore *lc, LinphoneCall *call) { - if(linphone_core_can_we_add_call(lc)) - { + if (linphone_core_can_we_add_call(lc)){ + if (lc->calls==NULL) notify_soundcard_usage(lc,TRUE); lc->calls = ms_list_append(lc->calls,call); return 0; } @@ -6422,6 +6418,7 @@ int linphone_core_del_call( LinphoneCore *lc, LinphoneCall *call) return -1; } lc->calls = the_calls; + if (lc->calls==NULL) notify_soundcard_usage(lc,FALSE); return 0; } diff --git a/coreapi/misc.c b/coreapi/misc.c index f762bb537..5de319246 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -86,6 +86,7 @@ int linphone_core_enable_payload_type(LinphoneCore *lc, LinphonePayloadType *pt, if (ms_list_find(lc->codecs_conf.audio_codecs,pt) || ms_list_find(lc->codecs_conf.video_codecs,pt)){ payload_type_set_enable(pt,enabled); _linphone_core_codec_config_write(lc); + linphone_core_update_allocated_audio_bandwidth(lc); return 0; } ms_error("Enabling codec not in audio or video list of PayloadType !"); @@ -113,6 +114,7 @@ void linphone_core_set_payload_type_bitrate(LinphoneCore *lc, LinphonePayloadTyp if (pt->type==PAYLOAD_VIDEO || pt->flags & PAYLOAD_TYPE_IS_VBR){ pt->normal_bitrate=bitrate*1000; pt->flags|=PAYLOAD_TYPE_BITRATE_OVERRIDE; + linphone_core_update_allocated_audio_bandwidth(lc); }else{ ms_error("Cannot set an explicit bitrate for codec %s/%i, because it is not VBR.",pt->mime_type,pt->clock_rate); return; @@ -189,7 +191,6 @@ int linphone_core_get_payload_type_bitrate(LinphoneCore *lc, const LinphonePaylo return get_audio_payload_bandwidth(lc,pt,maxbw); }else if (pt->type==PAYLOAD_VIDEO){ int video_bw; - linphone_core_update_allocated_audio_bandwidth(lc); if (maxbw<=0) { video_bw=1500; /*default bitrate for video stream when no bandwidth limit is set, around 1.5 Mbit/s*/ }else{ @@ -700,7 +701,7 @@ void linphone_core_update_ice_state_in_call_stats(LinphoneCall *call) } } -void linphone_core_update_local_media_description_from_ice(SalMediaDescription *desc, IceSession *session) +void _update_local_media_description_from_ice(SalMediaDescription *desc, IceSession *session) { const char *rtp_addr, *rtcp_addr; IceSessionState session_state = ice_session_state(session); @@ -821,7 +822,7 @@ static void clear_ice_check_list(LinphoneCall *call, IceCheckList *removed){ call->videostream->ms.ice_check_list=NULL; } -void linphone_core_update_ice_from_remote_media_description(LinphoneCall *call, const SalMediaDescription *md) +void linphone_call_update_ice_from_remote_media_description(LinphoneCall *call, const SalMediaDescription *md) { bool_t ice_restarted = FALSE; diff --git a/coreapi/private.h b/coreapi/private.h index 314149860..0a6270a24 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -188,8 +188,7 @@ typedef struct _PortConfig{ int rtcp_port; }PortConfig; -struct _LinphoneCall -{ +struct _LinphoneCall{ belle_sip_object_t base; void *user_data; struct _LinphoneCore *core; @@ -377,8 +376,9 @@ void linphone_core_adapt_to_network(LinphoneCore *lc, int ping_time_ms, Linphone int linphone_core_gather_ice_candidates(LinphoneCore *lc, LinphoneCall *call); void linphone_core_update_ice_state_in_call_stats(LinphoneCall *call); void linphone_call_stats_fill(LinphoneCallStats *stats, MediaStream *ms, OrtpEvent *ev); -void linphone_core_update_local_media_description_from_ice(SalMediaDescription *desc, IceSession *session); -void linphone_core_update_ice_from_remote_media_description(LinphoneCall *call, const SalMediaDescription *md); +void _update_local_media_description_from_ice(SalMediaDescription *desc, IceSession *session); +void linphone_call_update_local_media_description_from_ice_or_upnp(LinphoneCall *call); +void linphone_call_update_ice_from_remote_media_description(LinphoneCall *call, const SalMediaDescription *md); bool_t linphone_core_media_description_contains_video_stream(const SalMediaDescription *md); void linphone_core_send_initial_subscribes(LinphoneCore *lc); @@ -413,7 +413,6 @@ void linphone_call_delete_upnp_session(LinphoneCall *call); void linphone_call_stop_media_streams_for_ice_gathering(LinphoneCall *call); void linphone_call_update_crypto_parameters(LinphoneCall *call, SalMediaDescription *old_md, SalMediaDescription *new_md); void linphone_call_update_remote_session_id_and_ver(LinphoneCall *call); -void linphone_call_set_state_base(LinphoneCall *call, LinphoneCallState cstate, const char *message,bool_t silently); int _linphone_core_apply_transports(LinphoneCore *lc); const char * linphone_core_get_identity(LinphoneCore *lc); diff --git a/coreapi/upnp.c b/coreapi/upnp.c index c8082514f..83ab387c4 100644 --- a/coreapi/upnp.c +++ b/coreapi/upnp.c @@ -840,6 +840,8 @@ int linphone_upnp_call_process(LinphoneCall *call) { linphone_core_proceed_with_invite_if_ready(lc, call, NULL); break; case LinphoneCallIdle: + linphone_call_update_local_media_description_from_ice_or_upnp(call); + sal_call_set_local_media_description(call->op,call->localdesc); linphone_core_notify_incoming_call(lc, call); break; default: diff --git a/mediastreamer2 b/mediastreamer2 index e07bc4ba6..71115380b 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit e07bc4ba689e5f5dfc868b69ba4919f3e149b346 +Subproject commit 71115380b55d0a3f5a40405baaed2535b1913dda diff --git a/tester/call_tester.c b/tester/call_tester.c index 94a1a2464..fbc413905 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -704,24 +704,37 @@ static void disable_all_video_codecs_except_one(LinphoneCore *lc, const char *mi #endif static void call_failed_because_of_codecs(void) { - LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); - LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - LinphoneCall* out_call; + int begin,leaked_objects; + + belle_sip_object_enable_leak_detector(TRUE); + begin=belle_sip_object_get_object_count(); + + { + LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + LinphoneCall* out_call; - disable_all_audio_codecs_except_one(marie->lc,"pcmu",-1); - disable_all_audio_codecs_except_one(pauline->lc,"pcma",-1); - out_call = linphone_core_invite(pauline->lc,"marie"); - linphone_call_ref(out_call); - CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallOutgoingInit,1)); + disable_all_audio_codecs_except_one(marie->lc,"pcmu",-1); + disable_all_audio_codecs_except_one(pauline->lc,"pcma",-1); + out_call = linphone_core_invite(pauline->lc,"marie"); + linphone_call_ref(out_call); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallOutgoingInit,1)); - /*flexisip will retain the 488 until the "urgent reply" timeout (I.E 5s) arrives.*/ - CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallError,1,7000)); - CU_ASSERT_EQUAL(linphone_call_get_reason(out_call),LinphoneReasonNotAcceptable); - CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneCallIncomingReceived,0); + /*flexisip will retain the 488 until the "urgent reply" timeout (I.E 5s) arrives.*/ + CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallError,1,7000)); + CU_ASSERT_EQUAL(linphone_call_get_reason(out_call),LinphoneReasonNotAcceptable); + CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneCallIncomingReceived,0); + CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneCallReleased,0); - linphone_call_unref(out_call); - linphone_core_manager_destroy(marie); - linphone_core_manager_destroy(pauline); + linphone_call_unref(out_call); + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); + } + leaked_objects=belle_sip_object_get_object_count()-begin; + CU_ASSERT_TRUE(leaked_objects==0); + if (leaked_objects>0){ + belle_sip_object_dump_active_objects(); + } } static void call_with_dns_time_out(void) { @@ -2042,8 +2055,6 @@ static void call_with_mkv_file_player(void) { char *recordpath; double similar; - ortp_set_log_level_mask(ORTP_ERROR | ORTP_FATAL | ORTP_MESSAGE | ORTP_WARNING); - if (!is_format_supported(marie->lc,"mkv")){ ms_warning("Test skipped, no mkv support."); goto end; From 35189535a7ba0f4bdacd0c3e7b2dc26fa55eb918 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 18 Nov 2014 16:41:24 +0100 Subject: [PATCH 164/249] Convert LinphoneContent from a simple struct to a belle-sip object to ease generation of wrappers. --- build/android/Android.mk | 61 ++++----- build/wp8/LibLinphone.vcxproj | 2 + coreapi/CMakeLists.txt | 2 + coreapi/Makefile.am | 76 ++++++----- coreapi/callbacks.c | 3 +- coreapi/chat.c | 47 ++++--- coreapi/content.c | 205 ++++++++++++++++++++++++++++ coreapi/content.h | 213 ++++++++++++++++++++++++++++++ coreapi/help/filetransfer.c | 21 +-- coreapi/help/notify.c | 4 +- coreapi/info.c | 91 ++----------- coreapi/linphonecore.c | 22 +-- coreapi/linphonecore.h | 30 +---- coreapi/message_storage.c | 27 ++-- coreapi/private.h | 21 ++- coreapi/quality_reporting.c | 18 +-- tester/eventapi_tester.c | 112 ++++++++-------- tester/flexisip_tester.c | 16 ++- tester/message_tester.c | 91 +++++++------ tester/quality_reporting_tester.c | 8 +- 20 files changed, 723 insertions(+), 347 deletions(-) create mode 100644 coreapi/content.c create mode 100644 coreapi/content.h diff --git a/build/android/Android.mk b/build/android/Android.mk index cb4b703f4..adc78454c 100755 --- a/build/android/Android.mk +++ b/build/android/Android.mk @@ -26,50 +26,51 @@ include $(CLEAR_VARS) LOCAL_CPP_EXTENSION := .cc LOCAL_SRC_FILES := \ - linphonecore.c \ - misc.c \ - enum.c \ - presence.c \ - proxy.c \ - friend.c \ - authentication.c \ - lpconfig.c \ - chat.c \ - sipsetup.c \ - siplogin.c \ address.c \ - linphonecore_jni.cc \ + authentication.c \ bellesip_sal/sal_address_impl.c \ bellesip_sal/sal_impl.c \ bellesip_sal/sal_op_call.c \ bellesip_sal/sal_op_call_transfer.c \ + bellesip_sal/sal_op_events.c \ bellesip_sal/sal_op_impl.c \ + bellesip_sal/sal_op_info.c \ bellesip_sal/sal_op_message.c \ bellesip_sal/sal_op_presence.c \ - bellesip_sal/sal_op_registration.c \ bellesip_sal/sal_op_publish.c \ - bellesip_sal/sal_op_info.c \ - bellesip_sal/sal_op_events.c \ + bellesip_sal/sal_op_registration.c \ bellesip_sal/sal_sdp.c \ - sal.c \ - offeranswer.c \ callbacks.c \ - linphonecall.c \ - conference.c \ - ec-calibrator.c \ - linphone_tunnel_config.c \ - message_storage.c \ - info.c \ - event.c \ - xml.c \ - xml2lpc.c \ - lpc2xml.c \ - remote_provisioning.c \ - quality_reporting.c \ call_log.c \ call_params.c \ + chat.c \ + conference.c \ + content.c \ + ec-calibrator.c \ + enum.c \ + event.c \ + friend.c \ + info.c \ + linphonecall.c \ + linphonecore.c \ + linphonecore_jni.cc \ + linphone_tunnel_config.c \ + localplayer.c \ + lpc2xml.c \ + lpconfig.c \ + message_storage.c \ + misc.c \ + offeranswer.c \ player.c \ - localplayer.c + presence.c \ + proxy.c \ + quality_reporting.c \ + remote_provisioning.c \ + sal.c \ + siplogin.c \ + sipsetup.c \ + xml2lpc.c \ + xml.c ifndef LIBLINPHONE_VERSION LIBLINPHONE_VERSION = "Devel" diff --git a/build/wp8/LibLinphone.vcxproj b/build/wp8/LibLinphone.vcxproj index cca41bb87..6a3d8e034 100644 --- a/build/wp8/LibLinphone.vcxproj +++ b/build/wp8/LibLinphone.vcxproj @@ -115,6 +115,7 @@ + @@ -144,6 +145,7 @@
+ diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt index 8ed8185ab..2369501c7 100644 --- a/coreapi/CMakeLists.txt +++ b/coreapi/CMakeLists.txt @@ -46,6 +46,7 @@ set(SOURCE_FILES call_params.c chat.c conference.c + content.c ec-calibrator.c enum.c event.c @@ -152,6 +153,7 @@ install(TARGETS linphone set(HEADER_FILES call_log.h call_params.h + content.h event.h linphonecore.h linphonecore_utils.h diff --git a/coreapi/Makefile.am b/coreapi/Makefile.am index 2bb8498d9..f7d163749 100644 --- a/coreapi/Makefile.am +++ b/coreapi/Makefile.am @@ -24,45 +24,61 @@ CLEANFILES=$(GITVERSION_FILE) ## Process this file with automake to produce Makefile.in linphone_includedir=$(includedir)/linphone -linphone_include_HEADERS=linphonecore.h linphonefriend.h linphonepresence.h linphonecore_utils.h lpconfig.h sipsetup.h event.h xml2lpc.h lpc2xml.h linphone_tunnel.h call_log.h call_params.h +linphone_include_HEADERS=\ + call_log.h \ + call_params.h \ + content.h \ + event.h \ + linphonecore.h \ + linphonecore_utils.h \ + linphonefriend.h \ + linphonepresence.h \ + linphone_tunnel.h \ + lpc2xml.h \ + lpconfig.h \ + sipsetup.h \ + xml2lpc.h lib_LTLIBRARIES=liblinphone.la liblinphone_la_SOURCES=\ - linphonecore.c linphonecore.h private.h\ - offeranswer.c offeranswer.h\ - sal.c \ - callbacks.c \ - misc.c \ address.c \ - enum.c enum.h \ - presence.c \ - proxy.c \ - friend.c \ authentication.c \ - lpconfig.c lpconfig.h \ - chat.c \ - linphonecall.c \ - sipsetup.c sipsetup.h \ - siplogin.c \ - lsd.c linphonecore_utils.h \ - ec-calibrator.c \ - conference.c \ - message_storage.c \ - info.c \ - event.c event.h \ - contactprovider.c contactprovider.h contact_providers_priv.h \ - ldap/ldapprovider.c ldap/ldapprovider.h \ - dict.c \ - xml.c \ - xml2lpc.c \ - lpc2xml.c \ - remote_provisioning.c \ - quality_reporting.c quality_reporting.h\ + callbacks.c \ call_log.c \ call_params.c \ - player.c \ + chat.c \ + conference.c \ + contactprovider.c contactprovider.h contact_providers_priv.h \ + content.c \ + dict.c \ + ec-calibrator.c \ + enum.c enum.h \ + event.c event.h \ + friend.c \ + info.c \ + ldap/ldapprovider.c ldap/ldapprovider.h \ + linphonecall.c \ + linphonecore.c linphonecore.h \ + linphonecore_utils.h \ localplayer.c \ + lpc2xml.c \ + lpconfig.c lpconfig.h \ + lsd.c \ + message_storage.c \ + misc.c \ + offeranswer.c offeranswer.h\ + player.c \ + presence.c \ + private.h \ + proxy.c \ + quality_reporting.c quality_reporting.h\ + remote_provisioning.c \ + sal.c \ + siplogin.c \ + sipsetup.c sipsetup.h \ + xml2lpc.c \ + xml.c \ $(GITVERSION_FILE) if BUILD_UPNP diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index bc58f3c7d..59ce4a9a6 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -1208,14 +1208,13 @@ static void subscribe_response(SalOp *op, SalSubscribeStatus status){ static void notify(SalOp *op, SalSubscribeStatus st, const char *eventname, const SalBody *body){ LinphoneEvent *lev=(LinphoneEvent*)sal_op_get_user_pointer(op); LinphoneCore *lc=(LinphoneCore *)sal_get_user_pointer(sal_op_get_sal(op)); - LinphoneContent content={0}; if (lev==NULL) { /*out of subscribe notify */ lev=linphone_event_new_with_out_of_dialog_op(lc,op,LinphoneSubscriptionOutgoing,eventname); } { - const LinphoneContent *ct=linphone_content_from_sal_body(&content,body); + LinphoneContent *ct=linphone_content_from_sal_body(body); if (ct) linphone_core_notify_notify_received(lc,lev,eventname,ct); } if (st!=SalSubscribeNone){ diff --git a/coreapi/chat.c b/coreapi/chat.c index a6f2a952d..989350544 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -96,7 +96,7 @@ static int linphone_chat_message_file_transfer_on_send_body(belle_sip_user_body_ char *buf = (char *)buffer; /* if we've not reach the end of file yet, ask for more data*/ - if (offsetfile_transfer_information->size){ + if (offsetfile_transfer_information)){ /* get data from call back */ linphone_core_notify_file_transfer_send(lc, chatMsg, chatMsg->file_transfer_information, buf, size); } @@ -130,17 +130,17 @@ static void linphone_chat_message_process_response_from_post_file(void *data, co belle_sip_body_handler_t *first_part_bh; /* temporary storage for the Content-disposition header value */ - first_part_header = belle_sip_strdup_printf("form-data; name=\"File\"; filename=\"%s\"", msg->file_transfer_information->name); + first_part_header = belle_sip_strdup_printf("form-data; name=\"File\"; filename=\"%s\"", linphone_content_get_name(msg->file_transfer_information)); /* create a user body handler to take care of the file and add the content disposition and content-type headers */ if (msg->file_transfer_filepath != NULL) { first_part_bh=(belle_sip_body_handler_t *)belle_sip_file_body_handler_new(msg->file_transfer_filepath,NULL,msg); } else { - first_part_bh=(belle_sip_body_handler_t *)belle_sip_user_body_handler_new(msg->file_transfer_information->size,NULL,NULL,linphone_chat_message_file_transfer_on_send_body,msg); + first_part_bh=(belle_sip_body_handler_t *)belle_sip_user_body_handler_new(linphone_content_get_size(msg->file_transfer_information),NULL,NULL,linphone_chat_message_file_transfer_on_send_body,msg); } belle_sip_body_handler_add_header(first_part_bh, belle_sip_header_create("Content-disposition", first_part_header)); belle_sip_free(first_part_header); - belle_sip_body_handler_add_header(first_part_bh, (belle_sip_header_t *)belle_sip_header_content_type_create(msg->file_transfer_information->type, msg->file_transfer_information->subtype)); + belle_sip_body_handler_add_header(first_part_bh, (belle_sip_header_t *)belle_sip_header_content_type_create(linphone_content_get_type(msg->file_transfer_information), linphone_content_get_subtype(msg->file_transfer_information))); /* insert it in a multipart body handler which will manage the boundaries of multipart message */ bh=belle_sip_multipart_body_handler_new(linphone_chat_message_file_transfer_on_progress, msg, first_part_bh); @@ -531,7 +531,7 @@ void linphone_core_message_received(LinphoneCore *lc, SalOp *op, const SalMessag msg = linphone_chat_room_create_message(cr, NULL); /* create a message with empty body */ msg->content_type = ms_strdup(sal_msg->content_type); /* add the content_type "application/vnd.gsma.rcs-ft-http+xml" */ - msg->file_transfer_information = ms_new0(LinphoneContent,1); + msg->file_transfer_information = linphone_content_new(); /* parse the message body to get all informations from it */ xmlMessageBody = xmlParseDoc((const xmlChar *)sal_msg->text); @@ -547,21 +547,27 @@ void linphone_core_message_received(LinphoneCore *lc, SalOp *op, const SalMessag while (cur!=NULL) { if (!xmlStrcmp(cur->name, (const xmlChar *)"file-size")) { xmlChar *fileSizeString = xmlNodeListGetString(xmlMessageBody, cur->xmlChildrenNode, 1); - msg->file_transfer_information->size = strtol((const char*)fileSizeString, NULL, 10); + linphone_content_set_size(msg->file_transfer_information, strtol((const char*)fileSizeString, NULL, 10)); xmlFree(fileSizeString); } if (!xmlStrcmp(cur->name, (const xmlChar *)"file-name")) { - msg->file_transfer_information->name = (char *)xmlNodeListGetString(xmlMessageBody, cur->xmlChildrenNode, 1); + linphone_content_set_name(msg->file_transfer_information, (const char *)xmlNodeListGetString(xmlMessageBody, cur->xmlChildrenNode, 1)); } if (!xmlStrcmp(cur->name, (const xmlChar *)"content-type")) { xmlChar *contentType = xmlNodeListGetString(xmlMessageBody, cur->xmlChildrenNode, 1); int contentTypeIndex = 0; + char *type; + char *subtype; while (contentType[contentTypeIndex]!='/' && contentType[contentTypeIndex]!='\0') { contentTypeIndex++; } - msg->file_transfer_information->type = ms_strndup((char *)contentType, contentTypeIndex); - msg->file_transfer_information->subtype = ms_strdup(((char *)contentType+contentTypeIndex+1)); + type = ms_strndup((char *)contentType, contentTypeIndex); + subtype = ms_strdup(((char *)contentType+contentTypeIndex+1)); + linphone_content_set_type(msg->file_transfer_information, type); + linphone_content_set_subtype(msg->file_transfer_information, subtype); + ms_free(subtype); + ms_free(type); xmlFree(contentType); } if (!xmlStrcmp(cur->name, (const xmlChar *)"data")) { @@ -1024,28 +1030,27 @@ static void on_recv_body(belle_sip_user_body_handler_t *bh, belle_sip_message_t static LinphoneContent* linphone_chat_create_file_transfer_information_from_headers(const belle_sip_message_t* message ){ - LinphoneContent *content = ms_new0(LinphoneContent,1); + LinphoneContent *content = linphone_content_new(); belle_sip_header_content_length_t* content_length_hdr = BELLE_SIP_HEADER_CONTENT_LENGTH(belle_sip_message_get_header(message, "Content-Length")); belle_sip_header_content_type_t* content_type_hdr = BELLE_SIP_HEADER_CONTENT_TYPE(belle_sip_message_get_header(message, "Content-Type")); const char* type = NULL,*subtype = NULL; - content->name = ms_strdup(""); + linphone_content_set_name(content, ""); if( content_type_hdr ){ type = belle_sip_header_content_type_get_type(content_type_hdr); subtype = belle_sip_header_content_type_get_subtype(content_type_hdr); ms_message("Extracted content type %s / %s from header", type?type:"", subtype?subtype:""); - if( type ) content->type = ms_strdup(type); - if( subtype ) content->type = ms_strdup(subtype); + if( type ) linphone_content_set_type(content, type); + if( subtype ) linphone_content_set_subtype(content, subtype); } if( content_length_hdr ){ - content->size = belle_sip_header_content_length_get_content_length(content_length_hdr); - ms_message("Extracted content length %i from header", (int)content->size); + linphone_content_set_size(content, belle_sip_header_content_length_get_content_length(content_length_hdr)); + ms_message("Extracted content length %i from header", (int)linphone_content_get_size(content)); } - return content; } @@ -1063,7 +1068,7 @@ static void linphone_chat_process_response_headers_from_get_file(void *data, con } if( message->file_transfer_information ){ - body_size = message->file_transfer_information->size; + body_size = linphone_content_get_size(message->file_transfer_information); } if (message->file_transfer_filepath == NULL) { @@ -1318,8 +1323,7 @@ static void _linphone_chat_message_destroy(LinphoneChatMessage* msg) { if (msg->custom_headers) sal_custom_header_free(msg->custom_headers); if (msg->content_type) ms_free(msg->content_type); if (msg->file_transfer_information) { - linphone_content_uninit(msg->file_transfer_information); - ms_free(msg->file_transfer_information); + linphone_content_unref(msg->file_transfer_information); } if (msg->file_transfer_filepath != NULL) { ms_free(msg->file_transfer_filepath); @@ -1385,7 +1389,7 @@ const char * linphone_chat_message_get_file_transfer_filepath(LinphoneChatMessag /** * Create a message attached to a dedicated chat room with a particular content. Use #linphone_chat_room_send_message2 to initiate the transfer * @param cr the chat room. - * @param a #LinphoneContent initial content. #LinphoneCoreVTable.file_transfer_send is invoked later to notify file transfer progress and collect next chunk of the message if #LinphoneContent.data is NULL. + * @param initial_content #LinphoneContent initial content. #LinphoneCoreVTable.file_transfer_send is invoked later to notify file transfer progress and collect next chunk of the message if #LinphoneContent.data is NULL. * @return a new #LinphoneChatMessage */ @@ -1393,8 +1397,7 @@ LinphoneChatMessage* linphone_chat_room_create_file_transfer_message(LinphoneCha LinphoneChatMessage* msg = belle_sip_object_new(LinphoneChatMessage); msg->chat_room=(LinphoneChatRoom*)cr; msg->message = NULL; - msg->file_transfer_information = ms_new0(LinphoneContent,1); - linphone_content_copy(msg->file_transfer_information, initial_content); + msg->file_transfer_information = linphone_content_copy(initial_content); msg->dir=LinphoneChatMessageOutgoing; linphone_chat_message_set_to(msg, linphone_chat_room_get_peer_address(cr)); linphone_chat_message_set_from(msg, linphone_address_new(linphone_core_get_identity(cr->lc))); diff --git a/coreapi/content.c b/coreapi/content.c new file mode 100644 index 000000000..944ebb2e0 --- /dev/null +++ b/coreapi/content.c @@ -0,0 +1,205 @@ +/* +linphone +Copyright (C) 2010-2014 Belledonne Communications SARL + +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 "linphonecore.h" +#include "private.h" + + + +static void linphone_content_destroy(LinphoneContent *content) { + if (content->lcp.type) belle_sip_free(content->lcp.type); + if (content->lcp.subtype) belle_sip_free(content->lcp.subtype); + if (content->lcp.data) belle_sip_free(content->lcp.data); + if (content->lcp.encoding) belle_sip_free(content->lcp.encoding); + if (content->lcp.name) belle_sip_free(content->lcp.name); +} + +static void linphone_content_clone(LinphoneContent *obj, const LinphoneContent *ref) { + void *data; + linphone_content_set_type(obj, linphone_content_get_type(ref)); + linphone_content_set_subtype(obj, linphone_content_get_subtype(ref)); + linphone_content_set_encoding(obj, linphone_content_get_encoding(ref)); + linphone_content_set_name(obj, linphone_content_get_name(ref)); + linphone_content_set_size(obj, linphone_content_get_size(ref)); + data = linphone_content_get_data(ref); + if (data != NULL) { + size_t size = linphone_content_get_size(ref); + void *objdata = belle_sip_malloc(size + 1); + memcpy(objdata, data, size); + ((char *)objdata)[size] = '\0'; + linphone_content_set_data(obj, objdata); + } +} + + +BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(LinphoneContent); + +BELLE_SIP_INSTANCIATE_VPTR(LinphoneContent, belle_sip_object_t, + (belle_sip_object_destroy_t)linphone_content_destroy, + (belle_sip_object_clone_t)linphone_content_clone, + NULL, // marshal + TRUE +); + + +LinphoneContent * linphone_core_create_content(LinphoneCore *lc) { + return linphone_content_new(); +} + +LinphoneContent * linphone_content_ref(LinphoneContent *content) { + belle_sip_object_ref(content); + return content; +} + +void linphone_content_unref(LinphoneContent *content) { + belle_sip_object_unref(content); +} + +void *linphone_content_get_user_data(const LinphoneContent *content) { + return content->user_data; +} + +void linphone_content_set_user_data(LinphoneContent *content, void *ud) { + content->user_data = ud; +} + +const char * linphone_content_get_type(const LinphoneContent *content) { + return content->lcp.type; +} + +void linphone_content_set_type(LinphoneContent *content, const char *type) { + if (content->lcp.type != NULL) { + belle_sip_free(content->lcp.type); + content->lcp.type = NULL; + } + if (type != NULL) { + content->lcp.type = belle_sip_strdup(type); + } +} + +const char * linphone_content_get_subtype(const LinphoneContent *content) { + return content->lcp.subtype; +} + +void linphone_content_set_subtype(LinphoneContent *content, const char *subtype) { + if (content->lcp.subtype != NULL) { + belle_sip_free(content->lcp.subtype); + content->lcp.subtype = NULL; + } + if (subtype != NULL) { + content->lcp.subtype = belle_sip_strdup(subtype); + } +} + +void * linphone_content_get_data(const LinphoneContent *content) { + return content->lcp.data; +} + +void linphone_content_set_data(LinphoneContent *content, void *data) { + content->lcp.data = data; +} + +size_t linphone_content_get_size(const LinphoneContent *content) { + return content->lcp.size; +} + +void linphone_content_set_size(LinphoneContent *content, size_t size) { + content->lcp.size = size; +} + +const char * linphone_content_get_encoding(const LinphoneContent *content) { + return content->lcp.encoding; +} + +void linphone_content_set_encoding(LinphoneContent *content, const char *encoding) { + if (content->lcp.encoding != NULL) { + belle_sip_free(content->lcp.encoding); + content->lcp.encoding = NULL; + } + if (encoding != NULL) { + content->lcp.encoding = belle_sip_strdup(encoding); + } +} + +const char * linphone_content_get_name(const LinphoneContent *content) { + return content->lcp.name; +} + +void linphone_content_set_name(LinphoneContent *content, const char *name) { + if (content->lcp.name != NULL) { + belle_sip_free(content->lcp.name); + content->lcp.name = NULL; + } + if (name != NULL) { + content->lcp.name = belle_sip_strdup(name); + } +} + + + +LinphoneContent * linphone_content_new(void) { + LinphoneContent *content = belle_sip_object_new(LinphoneContent); + belle_sip_object_ref(content); + return content; +} + +LinphoneContent * linphone_content_copy(const LinphoneContent *ref) { + return (LinphoneContent *)belle_sip_object_ref(belle_sip_object_clone(BELLE_SIP_OBJECT(ref))); +} + +LinphoneContent * linphone_content_from_sal_body(const SalBody *ref) { + if (ref && ref->type) { + void *objdata; + LinphoneContent *content = linphone_content_new(); + linphone_content_set_type(content, ref->type); + linphone_content_set_subtype(content, ref->subtype); + linphone_content_set_encoding(content, ref->encoding); + linphone_content_set_size(content, ref->size); + objdata = belle_sip_malloc(ref->size + 1); + memcpy(objdata, ref->data, ref->size); + ((char *)objdata)[ref->size] = '\0'; + linphone_content_set_data(content, objdata); + return content; + } + return NULL; +} + +SalBody *sal_body_from_content(SalBody *body, const LinphoneContent *content) { + if (content && linphone_content_get_type(content)) { + body->type = linphone_content_get_type(content); + body->subtype = linphone_content_get_subtype(content); + body->data = linphone_content_get_data(content); + body->size = linphone_content_get_size(content); + body->encoding = linphone_content_get_encoding(content); + return body; + } + return NULL; +} + + + +LinphoneContent * linphone_content_private_to_linphone_content(const LinphoneContentPrivate *lcp) { + LinphoneContent *content = belle_sip_object_new(LinphoneContent); + memcpy(&content->lcp, lcp, sizeof(LinphoneContentPrivate)); + return content; +} + +LinphoneContentPrivate * linphone_content_to_linphone_content_private(const LinphoneContent *content) { + return (LinphoneContentPrivate *)&content->lcp; +} diff --git a/coreapi/content.h b/coreapi/content.h new file mode 100644 index 000000000..24f137857 --- /dev/null +++ b/coreapi/content.h @@ -0,0 +1,213 @@ +/* +content.h +Copyright (C) 2010-2014 Belledonne Communications SARL + +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 LINPHONE_CONTENT_H_ +#define LINPHONE_CONTENT_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * @addtogroup misc + * @{ + */ + +/** + * The LinphoneContent object holds data that can be embedded in a signaling message. +**/ +struct _LinphoneContent; +/** + * The LinphoneContent object holds data that can be embedded in a signaling message. +**/ +typedef struct _LinphoneContent LinphoneContent; + +/** + * @deprecated Use LinphoneContent objects instead of this structure. + */ +struct _LinphoneContentPrivate{ + char *type; /**type - , content->subtype + , linphone_content_get_type(content) + , linphone_content_get_subtype(content) ,(linphone_chat_message_is_outgoing(message)?"to":"from") , address); free(address); @@ -131,7 +131,7 @@ static void linphone_file_transfer_state_changed(LinphoneChatMessage* msg,Linpho */ static void message_received(LinphoneCore *lc, LinphoneChatRoom *cr, LinphoneChatMessage *msg) { const LinphoneContent *file_transfer_info = linphone_chat_message_get_file_transfer_information(msg); - printf ("Do you really want to download %s (size %ld)?[Y/n]\nOk, let's go\n", file_transfer_info->name, (long int)file_transfer_info->size); + printf ("Do you really want to download %s (size %ld)?[Y/n]\nOk, let's go\n", linphone_content_get_name(file_transfer_info), (long int)linphone_content_get_size(file_transfer_info)); linphone_chat_message_start_file_download(msg, linphone_file_transfer_state_changed, NULL); @@ -145,7 +145,7 @@ int main(int argc, char *argv[]){ int i; const char* big_file_content="big file"; LinphoneChatRoom* chat_room; - LinphoneContent content; + LinphoneContent* content; LinphoneChatMessage* chat_message; /*seting dummy file content to something*/ @@ -189,14 +189,14 @@ int main(int argc, char *argv[]){ /*Next step is to create a chat room*/ chat_room = linphone_core_create_chat_room(lc,dest_friend); - memset(&content,0,sizeof(content)); - content.type="text"; - content.subtype="plain"; - content.size=sizeof(big_file); /*total size to be transfered*/ - content.name = "bigfile.txt"; + content = linphone_core_create_content(lc); + linphone_content_set_type(content,"text"); + linphone_content_set_subtype(content,"plain"); + linphone_content_set_size(content,sizeof(big_file)); /*total size to be transfered*/ + linphone_content_set_name(content,"bigfile.txt"); /*now create a chat message with custom content*/ - chat_message = linphone_chat_room_create_file_transfer_message(chat_room,&content); + chat_message = linphone_chat_room_create_file_transfer_message(chat_room,content); if (chat_message == NULL) { printf("returned message is null\n"); } @@ -212,6 +212,7 @@ int main(int argc, char *argv[]){ printf("Shutting down...\n"); + linphone_content_unref(content); linphone_chat_room_destroy(chat_room); linphone_core_destroy(lc); printf("Exited\n"); diff --git a/coreapi/help/notify.c b/coreapi/help/notify.c index 27077d92f..bdfae0835 100644 --- a/coreapi/help/notify.c +++ b/coreapi/help/notify.c @@ -152,12 +152,12 @@ int main(int argc, char *argv[]){ ms_usleep(50000); ++i; if (data->ev && i%100==0){ - LinphoneContent content; + LinphoneContentPrivate content; content.type="application"; content.subtype="goodxml"; content.data="really cool"; content.size=strlen((const char*)content.data); - linphone_event_notify(data->ev,&content); + linphone_event_notify(data->ev,LINPHONE_CONTENT(&content)); } } diff --git a/coreapi/info.c b/coreapi/info.c index ad8cd1f8e..6b2eb33fa 100644 --- a/coreapi/info.c +++ b/coreapi/info.c @@ -29,98 +29,23 @@ struct _LinphoneInfoMessage{ - LinphoneContent content; + LinphoneContent *content; SalCustomHeader *headers; }; -#define SET_STRING(ptr,field,val) \ - if (ptr->field) { \ - ms_free(ptr->field); \ - ptr->field=NULL; \ - } \ - if (val){ \ - ptr->field=ms_strdup(val); \ - } - -void linphone_content_copy(LinphoneContent *obj, const LinphoneContent *ref){ - SET_STRING(obj,type,ref->type); - SET_STRING(obj,subtype,ref->subtype); - SET_STRING(obj,encoding,ref->encoding); - SET_STRING(obj,name,ref->name); - if (obj->data) { - ms_free(obj->data); - obj->data=NULL; - } - if (ref->data){ - obj->data=ms_malloc(ref->size+1); - memcpy(obj->data, ref->data, ref->size); - ((char*)obj->data)[ref->size]='\0'; - } - obj->size=ref->size; -} - -void linphone_content_uninit(LinphoneContent * obj){ - if (obj->type) ms_free(obj->type); - if (obj->subtype) ms_free(obj->subtype); - if (obj->data) ms_free(obj->data); - if (obj->encoding) ms_free(obj->encoding); - if (obj->name) ms_free(obj->name); -} - -LinphoneContent *linphone_content_copy_from_sal_body(LinphoneContent *obj, const SalBody *ref){ - SET_STRING(obj,type,ref->type); - SET_STRING(obj,subtype,ref->subtype); - SET_STRING(obj,encoding,ref->encoding); - if (obj->data) { - ms_free(obj->data); - obj->data=NULL; - } - if (ref->data){ - obj->data=ms_malloc(ref->size+1); - memcpy(obj->data, ref->data, ref->size); - ((char*)obj->data)[ref->size]='\0'; - } - obj->size=ref->size; - return obj; -} - -const LinphoneContent *linphone_content_from_sal_body(LinphoneContent *obj, const SalBody *ref){ - if (ref && ref->type){ - obj->type=(char*)ref->type; - obj->subtype=(char*)ref->subtype; - obj->data=(void*)ref->data; - obj->encoding=(char*)ref->encoding; - obj->size=ref->size; - return obj; - } - return NULL; -} - -SalBody *sal_body_from_content(SalBody *body, const LinphoneContent *lc){ - if (lc && lc->type){ - body->type=lc->type; - body->subtype=lc->subtype; - body->data=lc->data; - body->size=lc->size; - body->encoding=lc->encoding; - return body; - } - return NULL; -} - /** * Destroy a LinphoneInfoMessage **/ void linphone_info_message_destroy(LinphoneInfoMessage *im){ - linphone_content_uninit(&im->content); - sal_custom_header_free(im->headers); + if (im->content) linphone_content_unref(im->content); + if (im->headers) sal_custom_header_free(im->headers); ms_free(im); } LinphoneInfoMessage *linphone_info_message_copy(const LinphoneInfoMessage *orig){ LinphoneInfoMessage *im=ms_new0(LinphoneInfoMessage,1); - linphone_content_copy(&im->content,&orig->content); + if (orig->content) im->content=linphone_content_copy(orig->content); if (orig->headers) im->headers=sal_custom_header_clone(orig->headers); return im; } @@ -146,7 +71,7 @@ LinphoneInfoMessage *linphone_core_create_info_message(LinphoneCore *lc){ int linphone_call_send_info_message(LinphoneCall *call, const LinphoneInfoMessage *info){ SalBody body; sal_op_set_sent_custom_header(call->op,info->headers); - return sal_send_info(call->op,NULL, NULL, sal_body_from_content(&body,&info->content)); + return sal_send_info(call->op,NULL, NULL, sal_body_from_content(&body,info->content)); } /** @@ -176,14 +101,14 @@ const char *linphone_info_message_get_header(const LinphoneInfoMessage *im, cons * All fields of the LinphoneContent are copied, thus the application can destroy/modify/recycloe the content object freely ater the function returns. **/ void linphone_info_message_set_content(LinphoneInfoMessage *im, const LinphoneContent *content){ - linphone_content_copy(&im->content,content); + im->content=linphone_content_copy(content); } /** * Returns the info message's content as a #LinphoneContent structure. **/ const LinphoneContent * linphone_info_message_get_content(const LinphoneInfoMessage *im){ - return im->content.type ? &im->content : NULL; + return (im->content && linphone_content_get_type(im->content)) ? im->content : NULL; } void linphone_core_notify_info_message(LinphoneCore* lc,SalOp *op, const SalBody *body){ @@ -191,7 +116,7 @@ void linphone_core_notify_info_message(LinphoneCore* lc,SalOp *op, const SalBody if (call){ LinphoneInfoMessage *info=ms_new0(LinphoneInfoMessage,1); info->headers=sal_custom_header_clone(sal_op_get_recv_custom_header(op)); - if (body) linphone_content_copy_from_sal_body(&info->content,body); + if (body) info->content=linphone_content_from_sal_body(body); linphone_core_notify_info_received(lc,call,info); linphone_info_message_destroy(info); } diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index c36c5894d..3ead49966 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -354,7 +354,7 @@ static int log_collection_upload_on_send_body(belle_sip_user_body_handler_t *bh, LinphoneCore *core = (LinphoneCore *)data; /* If we've not reach the end of file yet, fill the buffer with more data */ - if (offset < core->log_collection_upload_information->size) { + if (offset < linphone_content_get_size(core->log_collection_upload_information)) { char *log_filename = ms_strdup_printf("%s/%s_log.%s", liblinphone_log_collection_path ? liblinphone_log_collection_path : LOG_COLLECTION_DEFAULT_PATH, liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX, @@ -410,13 +410,14 @@ static void process_response_from_post_file_log_collection(void *data, const bel linphone_core_notify_log_collection_upload_state_changed(core, LinphoneCoreLogCollectionUploadStateInProgress, NULL); /* Temporary storage for the Content-disposition header value */ - first_part_header = belle_sip_strdup_printf("form-data; name=\"File\"; filename=\"%s\"", core->log_collection_upload_information->name); + first_part_header = belle_sip_strdup_printf("form-data; name=\"File\"; filename=\"%s\"", linphone_content_get_name(core->log_collection_upload_information)); /* Create a user body handler to take care of the file and add the content disposition and content-type headers */ - first_part_bh = belle_sip_user_body_handler_new(core->log_collection_upload_information->size, NULL, NULL, log_collection_upload_on_send_body, core); + first_part_bh = belle_sip_user_body_handler_new(linphone_content_get_size(core->log_collection_upload_information), NULL, NULL, log_collection_upload_on_send_body, core); belle_sip_body_handler_add_header((belle_sip_body_handler_t *)first_part_bh, belle_sip_header_create("Content-disposition", first_part_header)); belle_sip_free(first_part_header); - belle_sip_body_handler_add_header((belle_sip_body_handler_t *)first_part_bh, (belle_sip_header_t *)belle_sip_header_content_type_create(core->log_collection_upload_information->type, core->log_collection_upload_information->subtype)); + belle_sip_body_handler_add_header((belle_sip_body_handler_t *)first_part_bh, + (belle_sip_header_t *)belle_sip_header_content_type_create(linphone_content_get_type(core->log_collection_upload_information), linphone_content_get_subtype(core->log_collection_upload_information))); /* Insert it in a multipart body handler which will manage the boundaries of multipart message */ bh = belle_sip_multipart_body_handler_new(log_collection_upload_on_progress, core, (belle_sip_body_handler_t *)first_part_bh); @@ -553,6 +554,7 @@ void linphone_core_upload_log_collection(LinphoneCore *core) { belle_http_request_listener_t *l; belle_generic_uri_t *uri; belle_http_request_t *req; + char *name; core->log_collection_upload_information = (LinphoneContent *)malloc(sizeof(LinphoneContent)); memset(core->log_collection_upload_information, 0, sizeof(LinphoneContent)); @@ -560,14 +562,15 @@ void linphone_core_upload_log_collection(LinphoneCore *core) { core->log_collection_upload_information->type = "application"; core->log_collection_upload_information->subtype = "gzip"; #else - core->log_collection_upload_information->type = "text"; - core->log_collection_upload_information->subtype = "plain"; + linphone_content_set_type(core->log_collection_upload_information, "text"); + linphone_content_set_subtype(core->log_collection_upload_information,"plain"); #endif - core->log_collection_upload_information->name = ms_strdup_printf("%s_log.%s", + name = ms_strdup_printf("%s_log.%s", liblinphone_log_collection_prefix ? liblinphone_log_collection_prefix : LOG_COLLECTION_DEFAULT_PREFIX, COMPRESSED_LOG_COLLECTION_EXTENSION); - if (prepare_log_collection_file_to_upload(core->log_collection_upload_information->name) < 0) return; - core->log_collection_upload_information->size = get_size_of_file_to_upload(core->log_collection_upload_information->name); + linphone_content_set_name(core->log_collection_upload_information, name); + if (prepare_log_collection_file_to_upload(name) < 0) return; + linphone_content_set_size(core->log_collection_upload_information, get_size_of_file_to_upload(name)); uri = belle_generic_uri_parse(linphone_core_get_log_collection_upload_server_url(core)); req = belle_http_request_create("POST", uri, NULL, NULL, NULL); cbs.process_response = process_response_from_post_file_log_collection; @@ -575,6 +578,7 @@ void linphone_core_upload_log_collection(LinphoneCore *core) { cbs.process_auth_requested = process_auth_requested_upload_log_collection; l = belle_http_request_listener_create_from_callbacks(&cbs, core); belle_http_provider_send_request(core->http_provider, req, l); + ms_free(name); } } diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 33dd95df2..add43e4a0 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -126,26 +126,6 @@ typedef struct SalAddress LinphoneAddress; typedef struct belle_sip_dict LinphoneDictionary; -/** - * The LinphoneContent struct holds data that can be embedded in a signaling message. - * @ingroup misc -**/ -struct _LinphoneContent{ - char *type; /**file_transfer_information) { - linphone_content_uninit(message->file_transfer_information); - ms_free(message->file_transfer_information); + linphone_content_unref(message->file_transfer_information); message->file_transfer_information = NULL; } - message->file_transfer_information = (LinphoneContent *)malloc(sizeof(LinphoneContent)); - memset(message->file_transfer_information, 0, sizeof(*(message->file_transfer_information))); - - message->file_transfer_information->type = argv[1] ? ms_strdup(argv[1]) : NULL; - message->file_transfer_information->subtype = argv[2] ? ms_strdup(argv[2]) : NULL; - message->file_transfer_information->name = argv[3] ? ms_strdup(argv[3]) : NULL; - message->file_transfer_information->encoding = argv[4] ? ms_strdup(argv[4]) : NULL; - message->file_transfer_information->size = (size_t) atoi(argv[5]); + message->file_transfer_information = linphone_content_new(); + if (argv[1]) linphone_content_set_type(message->file_transfer_information, argv[1]); + if (argv[2]) linphone_content_set_subtype(message->file_transfer_information, argv[2]); + if (argv[3]) linphone_content_set_name(message->file_transfer_information, argv[3]); + if (argv[4]) linphone_content_set_encoding(message->file_transfer_information, argv[4]); + linphone_content_set_size(message->file_transfer_information, (size_t)atoi(argv[5])); return 0; } @@ -199,11 +196,11 @@ static int linphone_chat_message_store_content(LinphoneChatMessage *msg) { if (lc->db) { LinphoneContent *content = msg->file_transfer_information; char *buf = sqlite3_mprintf("INSERT INTO content VALUES(NULL,%Q,%Q,%Q,%Q,%i,%Q);", - content->type, - content->subtype, - content->name, - content->encoding, - content->size, + linphone_content_get_type(content), + linphone_content_get_subtype(content), + linphone_content_get_name(content), + linphone_content_get_encoding(content), + linphone_content_get_size(content), NULL ); linphone_sql_request(lc->db, buf); diff --git a/coreapi/private.h b/coreapi/private.h index 0a6270a24..8e1bfaf8a 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -887,10 +887,9 @@ void linphone_configure_op(LinphoneCore *lc, SalOp *op, const LinphoneAddress *d void linphone_call_create_op(LinphoneCall *call); int linphone_call_prepare_ice(LinphoneCall *call, bool_t incoming_offer); void linphone_core_notify_info_message(LinphoneCore* lc,SalOp *op, const SalBody *body); -void linphone_content_uninit(LinphoneContent * obj); -void linphone_content_copy(LinphoneContent *obj, const LinphoneContent *ref); -LinphoneContent *linphone_content_copy_from_sal_body(LinphoneContent *obj, const SalBody *ref); -SalBody *sal_body_from_content(SalBody *body, const LinphoneContent *lc); +LinphoneContent * linphone_content_new(void); +LinphoneContent * linphone_content_copy(const LinphoneContent *ref); +SalBody *sal_body_from_content(SalBody *body, const LinphoneContent *content); SalReason linphone_reason_to_sal(LinphoneReason reason); LinphoneReason linphone_reason_from_sal(SalReason reason); LinphoneEvent *linphone_event_new(LinphoneCore *lc, LinphoneSubscriptionDir dir, const char *name, int expires); @@ -902,9 +901,20 @@ LinphoneEvent *linphone_event_new_with_out_of_dialog_op(LinphoneCore *lc, SalOp void linphone_event_set_state(LinphoneEvent *lev, LinphoneSubscriptionState state); void linphone_event_set_publish_state(LinphoneEvent *lev, LinphonePublishState state); LinphoneSubscriptionState linphone_subscription_state_from_sal(SalSubscribeStatus ss); -const LinphoneContent *linphone_content_from_sal_body(LinphoneContent *obj, const SalBody *ref); +LinphoneContent *linphone_content_from_sal_body(const SalBody *ref); void linphone_core_invalidate_friend_subscriptions(LinphoneCore *lc); + +struct _LinphoneContent { + belle_sip_object_t base; + void *user_data; + struct _LinphoneContentPrivate lcp; +}; + +BELLE_SIP_DECLARE_VPTR(LinphoneContent); + + + /***************************************************************************** * REMOTE PROVISIONING FUNCTIONS * ****************************************************************************/ @@ -986,6 +996,7 @@ BELLE_SIP_TYPE_ID(LinphoneCallLog), BELLE_SIP_TYPE_ID(LinphoneCallParams), BELLE_SIP_TYPE_ID(LinphoneChatMessage), BELLE_SIP_TYPE_ID(LinphoneChatRoom), +BELLE_SIP_TYPE_ID(LinphoneContent), BELLE_SIP_TYPE_ID(LinphoneLDAPContactProvider), BELLE_SIP_TYPE_ID(LinphoneLDAPContactSearch), BELLE_SIP_TYPE_ID(LinphoneProxyConfig) diff --git a/coreapi/quality_reporting.c b/coreapi/quality_reporting.c index 52d88a7a2..1beea886a 100644 --- a/coreapi/quality_reporting.c +++ b/coreapi/quality_reporting.c @@ -257,7 +257,7 @@ static void append_metrics_to_buffer(char ** buffer, size_t * size, size_t * off } static int send_report(LinphoneCall* call, reporting_session_report_t * report, const char * report_event) { - LinphoneContent content = {0}; + LinphoneContent *content = linphone_content_new(); LinphoneAddress *addr; int expires = -1; size_t offset = 0; @@ -294,9 +294,9 @@ static int send_report(LinphoneCall* call, reporting_session_report_t * report, goto end; } - buffer = (char *) ms_malloc(size); - content.type = ms_strdup("application"); - content.subtype = ms_strdup("vq-rtcpxr"); + buffer = (char *) belle_sip_malloc(size); + linphone_content_set_type(content, "application"); + linphone_content_set_subtype(content, "vq-rtcpxr"); append_to_buffer(&buffer, &size, &offset, "%s\r\n", report_event); append_to_buffer(&buffer, &size, &offset, "CallID: %s\r\n", report->info.call_id); @@ -331,17 +331,17 @@ static int send_report(LinphoneCall* call, reporting_session_report_t * report, append_to_buffer(&buffer, &size, &offset, "\r\n"); } - content.data = buffer; - content.size = strlen(buffer); + linphone_content_set_data(content, buffer); + linphone_content_set_size(content, strlen(buffer)); if (call->log->reporting.on_report_sent != NULL){ call->log->reporting.on_report_sent( call, (report==call->log->reporting.reports[0])?LINPHONE_CALL_STATS_AUDIO:LINPHONE_CALL_STATS_VIDEO, - &content); + content); } - if (! linphone_core_publish(call->core, addr, "vq-rtcpxr", expires, &content)){ + if (! linphone_core_publish(call->core, addr, "vq-rtcpxr", expires, content)){ ret=4; } else { reset_avg_metrics(report); @@ -354,7 +354,7 @@ static int send_report(LinphoneCall* call, reporting_session_report_t * report, linphone_address_destroy(addr); - linphone_content_uninit(&content); + linphone_content_unref(content); end: ms_message("QualityReporting[%p]: Send '%s' with status %d", diff --git a/tester/eventapi_tester.c b/tester/eventapi_tester.c index 1d4b07e59..835130f54 100644 --- a/tester/eventapi_tester.c +++ b/tester/eventapi_tester.c @@ -40,7 +40,7 @@ const char *liblinphone_tester_get_notify_content(void){ void linphone_notify_received(LinphoneCore *lc, LinphoneEvent *lev, const char *eventname, const LinphoneContent *content){ LinphoneCoreManager *mgr; CU_ASSERT_PTR_NOT_NULL_FATAL(content); - CU_ASSERT_TRUE(strcmp(notify_content,(const char*)content->data)==0); + CU_ASSERT_TRUE(strcmp(notify_content,(const char*)linphone_content_get_data(content))==0); mgr=get_manager(lc); mgr->stat.number_of_NotifyReceived++; } @@ -48,13 +48,14 @@ void linphone_notify_received(LinphoneCore *lc, LinphoneEvent *lev, const char * void linphone_subscription_state_change(LinphoneCore *lc, LinphoneEvent *lev, LinphoneSubscriptionState state) { stats* counters = get_stats(lc); LinphoneCoreManager *mgr=get_manager(lc); - LinphoneContent content={0}; + LinphoneContent* content; const LinphoneAddress* from_addr = linphone_event_get_from(lev); char* from = linphone_address_as_string(from_addr); - content.type="application"; - content.subtype="somexml2"; - content.data=(void*)notify_content; - content.size=strlen(notify_content); + content = linphone_core_create_content(lc); + linphone_content_set_type(content,"application"); + linphone_content_set_subtype(content,"somexml2"); + linphone_content_set_data(content,belle_sip_strdup(notify_content)); + linphone_content_set_size(content,strlen(notify_content)); ms_message("Subscription state [%s] from [%s]",linphone_subscription_state_to_string(state),from); ms_free(from); @@ -80,7 +81,7 @@ void linphone_subscription_state_change(LinphoneCore *lc, LinphoneEvent *lev, Li counters->number_of_LinphoneSubscriptionActive++; if (linphone_event_get_subscription_dir(lev)==LinphoneSubscriptionIncoming){ mgr->lev=lev; - linphone_event_notify(lev,&content); + linphone_event_notify(lev,content); } break; case LinphoneSubscriptionTerminated: @@ -96,6 +97,7 @@ void linphone_subscription_state_change(LinphoneCore *lc, LinphoneEvent *lev, Li mgr->lev=NULL; break; } + linphone_content_unref(content); } void linphone_publish_state_changed(LinphoneCore *lc, LinphoneEvent *ev, LinphonePublishState state){ @@ -123,23 +125,23 @@ void linphone_publish_state_changed(LinphoneCore *lc, LinphoneEvent *ev, Linphon static void subscribe_test_declined(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - LinphoneContent content={0}; + LinphoneContent* content; LinphoneEvent *lev; const LinphoneErrorInfo *ei; MSList* lcs=ms_list_append(NULL,marie->lc); lcs=ms_list_append(lcs,pauline->lc); + content = linphone_core_create_content(marie->lc); + linphone_content_set_type(content,"application"); + linphone_content_set_subtype(content,"somexml"); + linphone_content_set_data(content,belle_sip_strdup(subscribe_content)); + linphone_content_set_size(content,strlen(subscribe_content)); - content.type="application"; - content.subtype="somexml"; - content.data=(char*)subscribe_content; - content.size=strlen(subscribe_content); - pauline->decline_subscribe=TRUE; - - lev=linphone_core_subscribe(marie->lc,pauline->identity,"dodo",600,&content); + + lev=linphone_core_subscribe(marie->lc,pauline->identity,"dodo",600,content); linphone_event_ref(lev); - + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionOutgoingInit,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionIncomingReceived,1,3000)); CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionError,1,21000));/*yes flexisip may wait 20 secs in case of forking*/ @@ -150,7 +152,8 @@ static void subscribe_test_declined(void) { CU_ASSERT_PTR_NOT_NULL(linphone_error_info_get_phrase(ei)); } CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionTerminated,1,1000)); - + + linphone_content_unref(content); linphone_event_unref(lev); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); @@ -165,23 +168,24 @@ typedef enum RefreshTestType{ static void subscribe_test_with_args(bool_t terminated_by_subscriber, RefreshTestType refresh_type) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - LinphoneContent content={0}; + LinphoneContent* content; LinphoneEvent *lev; int expires= refresh_type!=NoRefresh ? 4 : 600; MSList* lcs=ms_list_append(NULL,marie->lc); - + lcs=ms_list_append(lcs,pauline->lc); if (refresh_type==ManualRefresh){ lp_config_set_int(marie->lc->config,"sip","refresh_generic_subscribe",0); } - content.type="application"; - content.subtype="somexml"; - content.data=(char*)subscribe_content; - content.size=strlen(subscribe_content); - - lev=linphone_core_subscribe(marie->lc,pauline->identity,"dodo",expires,&content); + content = linphone_core_create_content(marie->lc); + linphone_content_set_type(content,"application"); + linphone_content_set_subtype(content,"somexml"); + linphone_content_set_data(content,belle_sip_strdup(subscribe_content)); + linphone_content_set_size(content,strlen(subscribe_content)); + + lev=linphone_core_subscribe(marie->lc,pauline->identity,"dodo",expires,content); CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionOutgoingInit,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionIncomingReceived,1,3000)); @@ -190,7 +194,7 @@ static void subscribe_test_with_args(bool_t terminated_by_subscriber, RefreshTes /*make sure marie receives first notification before terminating*/ CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_NotifyReceived,1,1000)); - + if (refresh_type==AutoRefresh){ wait_for_list(lcs,NULL,0,6000); CU_ASSERT_TRUE(linphone_event_get_subscription_state(pauline->lev)==LinphoneSubscriptionActive); @@ -206,10 +210,11 @@ static void subscribe_test_with_args(bool_t terminated_by_subscriber, RefreshTes CU_ASSERT_PTR_NOT_NULL_FATAL(pauline->lev); linphone_event_terminate(pauline->lev); } - + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionTerminated,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionTerminated,1,1000)); - + + linphone_content_unref(content); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } @@ -217,7 +222,7 @@ static void subscribe_test_with_args(bool_t terminated_by_subscriber, RefreshTes static void subscribe_test_with_args2(bool_t terminated_by_subscriber, RefreshTestType refresh_type) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - LinphoneContent content={0}; + LinphoneContent* content; LinphoneEvent *lev; int expires= refresh_type!=NoRefresh ? 4 : 600; MSList* lcs=ms_list_append(NULL,marie->lc); @@ -228,19 +233,20 @@ static void subscribe_test_with_args2(bool_t terminated_by_subscriber, RefreshTe lp_config_set_int(marie->lc->config,"sip","refresh_generic_subscribe",0); } - content.type="application"; - content.subtype="somexml"; - content.data=(char*)subscribe_content; - content.size=strlen(subscribe_content); - + content = linphone_core_create_content(marie->lc); + linphone_content_set_type(content,"application"); + linphone_content_set_subtype(content,"somexml"); + linphone_content_set_data(content,belle_sip_strdup(subscribe_content)); + linphone_content_set_size(content,strlen(subscribe_content)); + lev=linphone_core_create_subscribe(marie->lc,pauline->identity,"dodo",expires); linphone_event_add_custom_header(lev,"My-Header","pouet"); linphone_event_add_custom_header(lev,"My-Header2","pimpon"); - linphone_event_send_subscribe(lev,&content); - + linphone_event_send_subscribe(lev,content); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionOutgoingInit,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionIncomingReceived,1,3000)); - + /*check good receipt of custom headers*/ CU_ASSERT_STRING_EQUAL(linphone_event_get_custom_header(pauline->lev,"My-Header"),"pouet"); CU_ASSERT_STRING_EQUAL(linphone_event_get_custom_header(pauline->lev,"My-Header2"),"pimpon"); @@ -266,10 +272,11 @@ static void subscribe_test_with_args2(bool_t terminated_by_subscriber, RefreshTe CU_ASSERT_PTR_NOT_NULL_FATAL(pauline->lev); linphone_event_terminate(pauline->lev); } - + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionTerminated,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionTerminated,1,1000)); - + + linphone_content_unref(content); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } @@ -300,30 +307,30 @@ static void subscribe_test_manually_refreshed(void){ static void publish_test_with_args(bool_t refresh, int expires){ LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - LinphoneContent content={0}; + LinphoneContent* content; LinphoneEvent *lev; MSList* lcs=ms_list_append(NULL,marie->lc); lcs=ms_list_append(lcs,pauline->lc); + content = linphone_core_create_content(marie->lc); + linphone_content_set_type(content,"application"); + linphone_content_set_subtype(content,"somexml"); + linphone_content_set_data(content,belle_sip_strdup(subscribe_content)); + linphone_content_set_size(content,strlen(subscribe_content)); - content.type="application"; - content.subtype="somexml"; - content.data=(char*)subscribe_content; - content.size=strlen(subscribe_content); - lp_config_set_int(marie->lc->config,"sip","refresh_generic_publish",refresh); lev=linphone_core_create_publish(marie->lc,pauline->identity,"dodo",expires); linphone_event_add_custom_header(lev,"CustomHeader","someValue"); - linphone_event_send_publish(lev,&content); + linphone_event_send_publish(lev,content); linphone_event_ref(lev); - + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphonePublishProgress,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphonePublishOk,1,3000)); - + if (!refresh){ CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphonePublishExpiring,1,5000)); - linphone_event_update_publish(lev,&content); + linphone_event_update_publish(lev,content); CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphonePublishProgress,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphonePublishOk,1,3000)); }else{ @@ -331,11 +338,12 @@ static void publish_test_with_args(bool_t refresh, int expires){ } linphone_event_terminate(lev); - + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphonePublishCleared,1,3000)); - + linphone_event_unref(lev); - + + linphone_content_unref(content); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index a91811538..f2ec9192e 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -27,7 +27,7 @@ static void subscribe_forking(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_tcp_rc"); LinphoneCoreManager* pauline2 = linphone_core_manager_new( "pauline_tcp_rc"); - LinphoneContent content={0}; + LinphoneContent* content; LinphoneEvent *lev; int expires= 600; MSList* lcs=ms_list_append(NULL,marie->lc); @@ -35,12 +35,13 @@ static void subscribe_forking(void) { lcs=ms_list_append(lcs,pauline->lc); lcs=ms_list_append(lcs,pauline2->lc); - content.type="application"; - content.subtype="somexml"; - content.data=(char*)liblinphone_tester_get_subscribe_content(); - content.size=strlen(liblinphone_tester_get_subscribe_content()); + content = linphone_core_create_content(marie->lc); + linphone_content_set_type(content,"application"); + linphone_content_set_subtype(content,"somexml"); + linphone_content_set_data(content, belle_sip_strdup(liblinphone_tester_get_subscribe_content())); + linphone_content_set_size(content, strlen(liblinphone_tester_get_subscribe_content())); - lev=linphone_core_subscribe(marie->lc,pauline->identity,"dodo",expires,&content); + lev=linphone_core_subscribe(marie->lc,pauline->identity,"dodo",expires,content); CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionOutgoingInit,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionIncomingReceived,1,3000)); @@ -51,7 +52,8 @@ static void subscribe_forking(void) { CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_NotifyReceived,1,1000)); linphone_event_terminate(lev); - + + linphone_content_unref(content); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); linphone_core_manager_destroy(pauline2); diff --git a/tester/message_tester.c b/tester/message_tester.c index d5f084f44..65ad16d9d 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -124,8 +124,8 @@ void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *me int progress = (int)((offset * 100)/total); ms_message(" File transfer [%d%%] %s of type [%s/%s] %s [%s] \n", progress ,(linphone_chat_message_is_outgoing(message)?"sent":"received") - , content->type - , content->subtype + , linphone_content_get_type(content) + , linphone_content_get_subtype(content) ,(linphone_chat_message_is_outgoing(message)?"to":"from") , address); counters->progress_of_LinphoneFileTransfer = progress; @@ -396,7 +396,7 @@ static void file_transfer_message(void) { char* to; LinphoneChatRoom* chat_room; LinphoneChatMessage* message; - LinphoneContent content; + LinphoneContent* content; const char* big_file_content="big file"; /* setting dummy file content to something */ LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -417,12 +417,12 @@ static void file_transfer_message(void) { chat_room = linphone_core_create_chat_room(pauline->lc,to); ms_free(to); /* create a file transfer message */ - memset(&content,0,sizeof(content)); - content.type="text"; - content.subtype="plain"; - content.size=sizeof(big_file); /*total size to be transfered*/ - content.name = "bigfile.txt"; - message = linphone_chat_room_create_file_transfer_message(chat_room, &content); + content = linphone_core_create_content(pauline->lc); + linphone_content_set_type(content,"text"); + linphone_content_set_subtype(content,"plain"); + linphone_content_set_size(content,sizeof(big_file)); /*total size to be transfered*/ + linphone_content_set_name(content,"bigfile.txt"); + message = linphone_chat_room_create_file_transfer_message(chat_room, content); { int dummy=0; wait_for_until(marie->lc,pauline->lc,&dummy,1,100); /*just to have time to purge message stored in the server*/ @@ -440,6 +440,7 @@ static void file_transfer_message(void) { CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneMessageDelivered,1); CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneMessageExtBodyReceived,1); + linphone_content_unref(content); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } @@ -451,7 +452,7 @@ static void small_file_transfer_message(void) { char* to; LinphoneChatRoom* chat_room; LinphoneChatMessage* message; - LinphoneContent content; + LinphoneContent* content; const char* big_file_content="big file"; /* setting dummy file content to something */ LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -472,12 +473,12 @@ static void small_file_transfer_message(void) { chat_room = linphone_core_create_chat_room(pauline->lc,to); ms_free(to); /* create a file transfer message */ - memset(&content,0,sizeof(content)); - content.type="text"; - content.subtype="plain"; - content.size=SMALL_FILE_SIZE; /*total size to be transfered*/ - content.name = "bigfile.txt"; - message = linphone_chat_room_create_file_transfer_message(chat_room, &content); + content = linphone_core_create_content(pauline->lc); + linphone_content_set_type(content,"text"); + linphone_content_set_subtype(content,"plain"); + linphone_content_set_size(content,SMALL_FILE_SIZE); /*total size to be transfered*/ + linphone_content_set_name(content,"bigfile.txt"); + message = linphone_chat_room_create_file_transfer_message(chat_room, content); { int dummy=0; wait_for_until(marie->lc,pauline->lc,&dummy,1,100); /*just to have time to purge message stored in the server*/ @@ -495,6 +496,7 @@ static void small_file_transfer_message(void) { CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneMessageDelivered,1); CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneMessageExtBodyReceived,1); + linphone_content_unref(content); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } @@ -504,7 +506,7 @@ static void file_transfer_message_io_error_upload(void) { char* to; LinphoneChatRoom* chat_room; LinphoneChatMessage* message; - LinphoneContent content; + LinphoneContent* content; const char* big_file_content="big file"; /* setting dummy file content to something */ LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -526,12 +528,12 @@ static void file_transfer_message_io_error_upload(void) { chat_room = linphone_core_create_chat_room(pauline->lc,to); /* create a file transfer message */ - memset(&content,0,sizeof(content)); - content.type="text"; - content.subtype="plain"; - content.size=sizeof(big_file); /*total size to be transfered*/ - content.name = "bigfile.txt"; - message = linphone_chat_room_create_file_transfer_message(chat_room, &content); + content = linphone_core_create_content(pauline->lc); + linphone_content_set_type(content,"text"); + linphone_content_set_subtype(content,"plain"); + linphone_content_set_size(content,sizeof(big_file)); /*total size to be transfered*/ + linphone_content_set_name(content,"bigfile.txt"); + message = linphone_chat_room_create_file_transfer_message(chat_room, content); { int dummy=0; wait_for_until(marie->lc,pauline->lc,&dummy,1,100); /*just to have time to purge message stored in the server*/ @@ -554,6 +556,7 @@ static void file_transfer_message_io_error_upload(void) { linphone_core_refresh_registers(pauline->lc); /*to make sure registration is back in registered and so it can be later unregistered*/ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneRegistrationOk,pauline->stat.number_of_LinphoneRegistrationOk+1)); + linphone_content_unref(content); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } @@ -629,7 +632,7 @@ static void file_transfer_message_upload_cancelled(void) { char* to; LinphoneChatRoom* chat_room; LinphoneChatMessage* message; - LinphoneContent content; + LinphoneContent* content; const char* big_file_content="big file"; /* setting dummy file content to something */ LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -651,12 +654,12 @@ static void file_transfer_message_upload_cancelled(void) { chat_room = linphone_core_create_chat_room(pauline->lc,to); /* create a file transfer message */ - memset(&content,0,sizeof(content)); - content.type="text"; - content.subtype="plain"; - content.size=sizeof(big_file); /*total size to be transfered*/ - content.name = "bigfile.txt"; - message = linphone_chat_room_create_file_transfer_message(chat_room, &content); + content = linphone_core_create_content(pauline->lc); + linphone_content_set_type(content,"text"); + linphone_content_set_subtype(content,"plain"); + linphone_content_set_size(content,sizeof(big_file)); /*total size to be transfered*/ + linphone_content_set_name(content,"bigfile.txt"); + message = linphone_chat_room_create_file_transfer_message(chat_room, content); { int dummy=0; wait_for_until(marie->lc,pauline->lc,&dummy,1,100); /*just to have time to purge message stored in the server*/ @@ -674,6 +677,7 @@ static void file_transfer_message_upload_cancelled(void) { CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneMessageNotDelivered,1); CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneMessageExtBodyReceived,0); + linphone_content_unref(content); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } @@ -829,12 +833,13 @@ static void info_message_with_args(bool_t with_content) { info=linphone_core_create_info_message(marie->lc); linphone_info_message_add_header(info,"Weather","still bad"); if (with_content) { - LinphoneContent ct={0}; - ct.type="application"; - ct.subtype="somexml"; - ct.data=(void*)info_content; - ct.size=strlen(info_content); - linphone_info_message_set_content(info,&ct); + LinphoneContent* ct=linphone_core_create_content(marie->lc); + linphone_content_set_type(ct,"application"); + linphone_content_set_subtype(ct,"somexml"); + linphone_content_set_data(ct,belle_sip_strdup(info_content)); + linphone_content_set_size(ct,strlen(info_content)); + linphone_info_message_set_content(info,ct); + linphone_content_unref(ct); } { int dummy=0; @@ -858,13 +863,13 @@ static void info_message_with_args(bool_t with_content) { if (with_content){ CU_ASSERT_PTR_NOT_NULL(content); if (content) { - CU_ASSERT_PTR_NOT_NULL(content->data); - CU_ASSERT_PTR_NOT_NULL(content->type); - CU_ASSERT_PTR_NOT_NULL(content->subtype); - if (content->type) CU_ASSERT_TRUE(strcmp(content->type,"application")==0); - if (content->subtype) CU_ASSERT_TRUE(strcmp(content->subtype,"somexml")==0); - if (content->data)CU_ASSERT_TRUE(strcmp((const char*)content->data,info_content)==0); - CU_ASSERT_EQUAL(content->size,strlen(info_content)); + CU_ASSERT_PTR_NOT_NULL(linphone_content_get_data(content)); + CU_ASSERT_PTR_NOT_NULL(linphone_content_get_type(content)); + CU_ASSERT_PTR_NOT_NULL(linphone_content_get_subtype(content)); + if (linphone_content_get_type(content)) CU_ASSERT_TRUE(strcmp(linphone_content_get_type(content),"application")==0); + if (linphone_content_get_subtype(content)) CU_ASSERT_TRUE(strcmp(linphone_content_get_subtype(content),"somexml")==0); + if (linphone_content_get_data(content))CU_ASSERT_TRUE(strcmp((const char*)linphone_content_get_data(content),info_content)==0); + CU_ASSERT_EQUAL(linphone_content_get_size(content),strlen(info_content)); } } linphone_core_manager_destroy(marie); diff --git a/tester/quality_reporting_tester.c b/tester/quality_reporting_tester.c index 1190f188f..81bae75cf 100644 --- a/tester/quality_reporting_tester.c +++ b/tester/quality_reporting_tester.c @@ -25,7 +25,7 @@ #define __strstr(x, y) ((x==NULL)?NULL:strstr(x,y)) void on_report_send_mandatory(const LinphoneCall *call, int stream_type, const LinphoneContent *content){ - char * body = (char *)content->data; + char * body = (char *)linphone_content_get_data(content); char * remote_metrics_start = __strstr(body, "RemoteMetrics:"); reporting_session_report_t * report = call->log->reporting.reports[stream_type]; MediaStream * ms; @@ -91,7 +91,7 @@ char * on_report_send_verify_metrics(const reporting_content_metrics_t *metrics, } void on_report_send_with_rtcp_xr_local(const LinphoneCall *call, int stream_type, const LinphoneContent *content){ - char * body = (char*)content->data; + char * body = (char*)linphone_content_get_data(content); char * remote_metrics_start = __strstr(body, "RemoteMetrics:"); reporting_session_report_t * report = call->log->reporting.reports[stream_type]; on_report_send_mandatory(call,stream_type,content); @@ -99,7 +99,7 @@ void on_report_send_with_rtcp_xr_local(const LinphoneCall *call, int stream_type CU_ASSERT_TRUE(!remote_metrics_start || on_report_send_verify_metrics(&report->local_metrics,body) < remote_metrics_start); } void on_report_send_with_rtcp_xr_remote(const LinphoneCall *call, int stream_type, const LinphoneContent *content){ - char * body = (char*)content->data; + char * body = (char*)linphone_content_get_data(content); reporting_session_report_t * report = call->log->reporting.reports[stream_type]; on_report_send_mandatory(call,stream_type,content); @@ -214,7 +214,7 @@ static void quality_reporting_not_sent_if_low_bandwidth() { } void on_report_send_remove_fields(const LinphoneCall *call, int stream_type, const LinphoneContent *content){ - char *body = (char*)content->data; + char *body = (char*)linphone_content_get_data(content); /*corrupt start of the report*/ strncpy(body, "corrupted report is corrupted", strlen("corrupted report is corrupted")); } From 0cae72bf528d5fd9c615efc87ff0f24950dc96e3 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 18 Nov 2014 17:09:33 +0100 Subject: [PATCH 165/249] Update oRTP and ms2 submodules. --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 71115380b..792e12012 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 71115380b55d0a3f5a40405baaed2535b1913dda +Subproject commit 792e12012905ba90d9a3c30dc90f560fc0d38785 diff --git a/oRTP b/oRTP index 15f1e5f89..5333d998c 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 15f1e5f89c7381f580190432f33a7f9e86c32e7f +Subproject commit 5333d998c8eaf3c43e66c4a5335c0606c8dea3df From 9e87f9d21735264129cbde58fd346617880480ba Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 18 Nov 2014 18:13:16 +0100 Subject: [PATCH 166/249] Avoid crash when using linphone/gtk with libnotify < 0.7.0 --- configure.ac | 1 - gtk/main.c | 11 ++++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index e7caf35b9..067a13b62 100644 --- a/configure.ac +++ b/configure.ac @@ -330,7 +330,6 @@ if test "$gtk_ui" = "true" ; then AC_DEFINE([HAVE_NOTIFY1],[1],[NOTIFY1 support]) esac else - NotifyNotification *n; echo "Libnotify support is disabled." fi fi diff --git a/gtk/main.c b/gtk/main.c index 5dd2b046f..ea3078c9a 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -1228,14 +1228,19 @@ static bool_t notify_actions_supported() { } static NotifyNotification* build_notification(const char *title, const char *body) { - const char *icon_path = linphone_gtk_get_ui_config("icon", LINPHONE_ICON); - GdkPixbuf *pbuf = create_pixbuf(icon_path); NotifyNotification *n = notify_notification_new(title, body, NULL #ifdef HAVE_NOTIFY1 ,NULL #endif ); - notify_notification_set_icon_from_pixbuf(n, pbuf); +#ifndef HAVE_NOTIFY1 + { + const char *icon_path = linphone_gtk_get_ui_config("icon", LINPHONE_ICON); + GdkPixbuf *pbuf = create_pixbuf(icon_path); + /*with notify1, this function makes the notification crash the app with obscure dbus glib critical errors*/ + notify_notification_set_icon_from_pixbuf(n, pbuf); + } +#endif return n; } From 1c0a203e847d1c3ddf59559af943354c9a362544 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 18 Nov 2014 18:15:11 +0100 Subject: [PATCH 167/249] update ms2 to repair ios build --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 792e12012..63f72f08a 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 792e12012905ba90d9a3c30dc90f560fc0d38785 +Subproject commit 63f72f08ad91e765aa3d8d299c0c95f699e22f2e From 3a9b9dd29c08147b5c2292c0e988f45840588070 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 19 Nov 2014 10:53:47 +0100 Subject: [PATCH 168/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 63f72f08a..9738d6a3f 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 63f72f08ad91e765aa3d8d299c0c95f699e22f2e +Subproject commit 9738d6a3fbbac929b629b92d039e3c2dabc1e7b1 From 7e32b85fa2a1ffc80433974c4ea66910a53c246e Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 19 Nov 2014 11:59:07 +0100 Subject: [PATCH 169/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 9738d6a3f..90bad6f9e 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 9738d6a3fbbac929b629b92d039e3c2dabc1e7b1 +Subproject commit 90bad6f9e48f7d18cba2d1a50c4e55fbc6b3c686 From 7fcf25f4fc9630ea75a87744103ce7608b5924cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 19 Nov 2014 13:24:57 +0100 Subject: [PATCH 170/249] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 90bad6f9e..a8bf9aeeb 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 90bad6f9e48f7d18cba2d1a50c4e55fbc6b3c686 +Subproject commit a8bf9aeeb50992e5559f28f86397535b59ac8dfd From 9905f675c7c32548c7d0a94548ed9252ed3ab22e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 19 Nov 2014 13:44:39 +0100 Subject: [PATCH 171/249] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index a8bf9aeeb..b727b3031 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit a8bf9aeeb50992e5559f28f86397535b59ac8dfd +Subproject commit b727b303113f9ea752b2e9328a4d1a4f65d72b6c From 227002d1adddb15f027c53d0f8bda44cb9052ae2 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 19 Nov 2014 10:45:09 +0100 Subject: [PATCH 172/249] Add transifex configuration for localization --- .tx/config | 10 + po/cs.po | 1366 +++++--------------------------- po/de.po | 1518 +++++------------------------------- po/es.po | 1455 ++++++++-------------------------- po/fr.po | 495 ++++-------- po/he.po | 754 +++++------------- po/hu.po | 1036 +++++------------------- po/it.po | 1025 ++++++------------------ po/ja.po | 1041 +++++++------------------ po/linphone.pot | 1987 +++++++++++++++++++++++++++++++++++++++++++++++ po/nb_NO.po | 1053 ++++++------------------- po/nl.po | 1328 +++++++------------------------ po/pl.po | 1026 +++++++----------------- po/pt_BR.po | 1080 ++++++++------------------ po/ru.po | 576 ++++---------- po/sr.po | 701 ++++++----------- po/sv.po | 1023 ++++++------------------ po/zh_CN.po | 955 ++++++----------------- po/zh_TW.po | 902 +++++---------------- 19 files changed, 5965 insertions(+), 13366 deletions(-) create mode 100644 .tx/config create mode 100644 po/linphone.pot diff --git a/.tx/config b/.tx/config new file mode 100644 index 000000000..4c2a2acd7 --- /dev/null +++ b/.tx/config @@ -0,0 +1,10 @@ +[main] +host = https://www.transifex.com +minimum_perc = 1 +type = PO + +[linphone-gtk.linphonepot] +file_filter = po/.po +source_file = po/linphone.pot +source_lang = en + diff --git a/po/cs.po b/po/cs.po index 78c993c32..f6056909d 100644 --- a/po/cs.po +++ b/po/cs.po @@ -1,31 +1,22 @@ -# translation of linphone.po to cs_CZ -# This file is distributed under the same license as the linphone package. -# Copyright (C) 2009 Simon Morlat (msgids) -# Klara Cihlarova , 2005. -# Petr Pisar , 2006, 2007, 2008, 2009, 2010, 2011, 2013. -# -# XXX: Don't translate gtk-* messages. They will be replaced from GTK+ -# catalogue. -# -# On hold → odložen -# chat → diskuze -# Pause call → odložit hovor -# Resume call → obnovit hovor -# token → klíč -# Transfer → přepojit -# +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Klara Cihlarova , 2005 +# Petr Pisar , 2006-2011,2013 msgid "" msgstr "" -"Project-Id-Version: linphone-3.5.99.0\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2013-05-01 09:55+0200\n" -"Last-Translator: Petr Pisar \n" -"Language-Team: Czech \n" -"Language: cs\n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:17+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Czech (http://www.transifex.com/projects/p/linphone-gtk/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -85,18 +76,14 @@ msgstr "%s\t%s" msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "" -"%s\tKvalita: %s\n" -"%s\t%s\t" +msgstr "%s\tKvalita: %s\n%s\t%s\t" #: ../gtk/calllogs.c:343 #, c-format msgid "" "%s\t\n" "%s" -msgstr "" -"%s\t\n" -"%s" +msgstr "%s\t\n%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -141,110 +128,92 @@ msgstr "je-li nastaveno, automaticky zvedne příchozí hovor" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" -"Zadejte pracovní adresář (měl by být základní instalační adresář, například " +"Specifiy a working directory (should be the base of the installation, eg: " "c:\\Program Files\\Linphone)" +msgstr "Zadejte pracovní adresář (měl by být základní instalační adresář, například c:\\Program Files\\Linphone)" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Potvrzení" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "Průvodce nastavením účtu" +msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "Hovor s %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 si vás chce přidat do svého adresáře.\n" -"Dovolíte mu, aby viděl váš stav přítomnosti, nebo si ho také chcete přidat " -"do svého adresáře?\n" -"Odpovíte-li ne, tato osobo bude dočasně blokována." +msgstr "%s si vás chce přidat do svého adresáře.\nDovolíte mu, aby viděl váš stav přítomnosti, nebo si ho také chcete přidat do svého adresáře?\nOdpovíte-li ne, tato osobo bude dočasně blokována." -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -"Prosím, zadejte heslo pro uživatele %s\n" -"v doméně %s:" -#: ../gtk/main.c:1376 +#: ../gtk/main.c:1283 msgid "Call error" msgstr "Chyba hovoru" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "Hovor ukončen" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Příchozí hovor" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Odpovědět" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Odmítnout" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 msgid "Call paused" msgstr "Hovor odložen" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 #, c-format msgid "by %s" msgstr "kým: %s" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s navrhuje začít videohovor. Přijímáte?" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "Odkaz na webovou stránku" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Lipnhone – internetový videofon" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (Výchozí)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "Byly jsme přepojeni na %s" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"Na tomto počítači nebyla objevena žádná zvuková karta.\n" -"Nebudete moci vytáčet a přijímat a zvukové hovory." +msgstr "Na tomto počítači nebyla objevena žádná zvuková karta.\nNebudete moci vytáčet a přijímat a zvukové hovory." -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "Volný SIP videofon" @@ -302,9 +271,8 @@ msgid "Status" msgstr "Stav" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Min. rychlost (kb/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -322,93 +290,92 @@ msgstr "Zakázáno" msgid "Account" msgstr "Účet" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "angličtina" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "francouzština" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "švédština" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "italština" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "španělština" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "brazilská portugalština" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "polština" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "němčina" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "ruština" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "japonština" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "dánština" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "maďarština" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "čeština" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "čínština" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "tradiční čínština" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "norština" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "hebrejština" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "srbština" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 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." -# Media encryption type: -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "Žádné" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "ZRTP" @@ -417,9 +384,7 @@ msgstr "ZRTP" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"Na %s je dostupná novější verze.\n" -"Přejete si otevřít prohlížeč, abyste si ji mohli stáhnout?" +msgstr "Na %s je dostupná novější verze.\nPřejete si otevřít prohlížeč, abyste si ji mohli stáhnout?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -457,9 +422,7 @@ msgstr[2] "Nalezeno %i kontaktů" msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"Vítejte!\n" -"Tento průvodce vám pomůže používat sipový účet při vašich hovorech." +msgstr "Vítejte!\nTento průvodce vám pomůže používat sipový účet při vašich hovorech." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -537,10 +500,7 @@ msgstr "" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "" -"Došlo k chybě (účet nebyl ověřen, uživatelské jméno již existuje nebo server " -"není dostupný).\n" -"Prosím, vraťte se a zkoste to znovu." +msgstr "Došlo k chybě (účet nebyl ověřen, uživatelské jméno již existuje nebo server není dostupný).\nProsím, vraťte se a zkoste to znovu." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -548,18 +508,13 @@ msgstr "Děkujeme vám. Váš účet je nyní nastaven a připraven k použití #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." -msgstr "" -"Prosím, ověřte svůj účet tak, že kliknete na odkaz, který jsme vám právě " -"zaslali e-mailem.\n" -"Pak se sem vraťte a stiskněte tlačítko Další." +msgstr "Prosím, ověřte svůj účet tak, že kliknete na odkaz, který jsme vám právě zaslali e-mailem.\nPak se sem vraťte a stiskněte tlačítko Další." #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "Průvodce nastavením účtu" +msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -660,9 +615,7 @@ msgstr "Přímé nebo skrze server" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "" -"příchozí: %f\n" -"odchozí: %f (kb/s)" +msgstr "příchozí: %f\nodchozí: %f (kb/s)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -678,110 +631,108 @@ msgstr "%.3f sekund" msgid "Hang up" msgstr "Zavěsit" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "Volá se…" -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "00:00:00" -#: ../gtk/incall_view.c:515 +#: ../gtk/incall_view.c:525 msgid "Incoming call" msgstr "Příchozí hovor" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "dobrá" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "průměrná" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "slabá" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "velmi slabá" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "příliš špatná" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "nedostupná" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "Zabezpečeno pomocí SRTP" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Zabezpečeno pomocí ZRTP – [ověřovací klíč: %s]" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "Nastavit na neověřeno" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Nastavit na ověřeno" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "Probíhá konference" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In call" msgstr "Probíhá hovor" -#: ../gtk/incall_view.c:738 +#: ../gtk/incall_view.c:758 msgid "Paused call" msgstr "Odložený hovor" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "%02i:%02i:%02i" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Hovor skončil." -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "Probíhá přepojení" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "Přepojení dokončeno." -#: ../gtk/incall_view.c:809 +#: ../gtk/incall_view.c:831 msgid "Transfer failed." msgstr "Přepojení selhalo." -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "Obnovit" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Odložit" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" -msgstr "" -"Nahrává se do\n" -"%s %s" +msgstr "Nahrává se do\n%s %s" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "(Odloženo)" @@ -791,9 +742,9 @@ msgid "Please enter login information for %s" msgstr "Prosím, zadejte své přihlašovací jméno pro %s:" #: ../gtk/config-fetching.c:57 -#, fuzzy, c-format +#, c-format msgid "fetching from %s" -msgstr "Příchozí hovor od %s" +msgstr "" #: ../gtk/config-fetching.c:73 #, c-format @@ -817,32 +768,26 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Vítejte!\n" -"Tento průvodce vám pomůže používat sipový účet při vašich hovorech." #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Zařízení pro nahrávání:" +msgstr "" #: ../gtk/audio_assistant.c:329 -#, fuzzy msgid "Recorded volume" -msgstr "Zdroj nahrávání:" +msgstr "" #: ../gtk/audio_assistant.c:333 msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Zařízení pro přehrávání:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -861,14 +806,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "Průvodce" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "Průvodce účtem" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -947,9 +890,8 @@ msgid "_Options" msgstr "V_olby" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Konfigurace proxy a registrace" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -1056,7 +998,6 @@ msgid "An internet video phone using the standard SIP (rfc3261) protocol." msgstr "Internetový videofon používající standardní protokol SIP (RFC 3261)." #: ../gtk/about.ui.h:5 -#, fuzzy msgid "" "fr: Simon Morlat\n" "en: Simon Morlat and Delphine Perreau\n" @@ -1071,17 +1012,6 @@ msgid "" "hu: anonymous\n" "he: Eli Zaretskii \n" msgstr "" -"fr: Simon Morlat\n" -"en: Simon Morlat a Delphine Perreau\n" -"it: Alberto Zanoni \n" -"de: Jean-Jacques Sarton \n" -"sv: Daniel Nylander \n" -"es: Jesus Benitez \n" -"ja: YAMAGUCHI YOSHIYA \n" -"pt_BR: Rafael Caesar Lenzi \n" -"pl: Robert Nasiadek \n" -"cs: Petr Písař \n" -"hu: anonym\n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1156,9 +1086,8 @@ msgid "Registration duration (sec):" msgstr "Registrační období (s):" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "Směrování (volitelné):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1169,9 +1098,8 @@ msgid "Route (optional):" msgstr "Směrování (volitelné):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Přenos" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1182,9 +1110,8 @@ msgid "Publish presence information" msgstr "Zveřejnit stav přítomnosti" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Povolit" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1274,7 +1201,6 @@ msgstr "Obrazový RTP/UDP:" msgid "Audio RTP/UDP:" msgstr "Zvukový RTP/UDP:" -# Port number #: ../gtk/parameters.ui.h:22 msgid "Fixed" msgstr "Stálý" @@ -1292,14 +1218,12 @@ msgid "DSCP fields" msgstr "Položky DSCP" #: ../gtk/parameters.ui.h:26 -#, fuzzy msgid "SIP/TCP port" -msgstr "SIP port" +msgstr "" #: ../gtk/parameters.ui.h:27 -#, fuzzy msgid "SIP/UDP port" -msgstr "SIP port" +msgstr "" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1310,9 +1234,8 @@ msgid "Direct connection to the Internet" msgstr "Přímé připojení do Internetu" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "Za NAT/firewallem (adresu brány zadejte níže)" +msgstr "" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" @@ -1379,9 +1302,8 @@ msgid "Prefered video resolution:" msgstr "Upřednostňované rozlišení obrazu:" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Vstupní zařízení obrazu:" +msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1475,9 +1397,7 @@ msgstr "Zapnout přizpůsobující se řízení rychlosti" msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "" -"Přizpůsobující se řízení rychlosti je technika dynamického odhadu " -"dostupného pásma během hovoru." +msgstr "Přizpůsobující se řízení rychlosti je technika dynamického odhadu dostupného pásma během hovoru." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1504,23 +1424,20 @@ msgid "User interface" msgstr "Uživatelské rozhraní" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "Adresa serveru:" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Selhání ověření totožnosti" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Proxy účty" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" @@ -1551,9 +1468,8 @@ msgid "Please wait" msgstr "Prosím, čekejte" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "Nastavení DSCP" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1608,14 +1524,12 @@ msgid "Video resolution received" msgstr "" #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "Upřednostňované rozlišení obrazu:" +msgstr "" #: ../gtk/call_statistics.ui.h:11 -#, fuzzy msgid "RTP profile" -msgstr "RTP vlastnosti" +msgstr "" #: ../gtk/call_statistics.ui.h:12 msgid "Call statistics and information" @@ -1702,23 +1616,20 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Nastavení" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" msgstr "" #: ../gtk/ldap.ui.h:7 -#, fuzzy msgid "Not yet available" -msgstr "UPnP není nedostupné" +msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Kodeky" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1729,14 +1640,12 @@ msgid "Authname" msgstr "" #: ../gtk/ldap.ui.h:11 -#, fuzzy msgid "Realm" -msgstr "doména:" +msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Zvuk" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1752,18 +1661,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "SIP adresa" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Hledat někoho" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1778,9 +1685,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Různé" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1804,11 +1710,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1816,81 +1719,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "Připojuje se…" +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "Připraven." -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Potvrzení" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Vyhledává se umístění čísla…" -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "Toto číslo nelze vyhledat." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "Navazuje se spojení" -#: ../coreapi/linphonecore.c:2425 +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" msgstr "Nelze volat" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 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:2745 +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" msgstr "vás volá" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr " a požaduje automatickou zvednutí." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "." -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "Upravují se parametry hovoru…" -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Připojeno." -#: ../coreapi/linphonecore.c:3220 +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" msgstr "Hovor přerušen" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "Hovor nebylo možné odložit" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "Současný hovor se odkládá…" -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "Hledá se adresa pomocí STUN…" -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "Shromažďují se místní kandidáti ICE…" @@ -1939,1047 +1840,148 @@ msgid "Pending" msgstr "Čekám" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Délka" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "Neznámá chyba" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"Adresa SIP proxy, kterou jste zadali, není platná. Musí začínat na „sip:“ a " -"pak musí následovat jméno stroje." +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:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -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" +msgstr "SIP identita, kterou jste zadali, není platná.\nMěla by mít tvar sip:uživatel@proxydoména, například sip:alice@example.net" -#: ../coreapi/proxy.c:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "Nelze se přihlásit jako %s" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "Vyzvání na druhé straně." -#: ../coreapi/callbacks.c:373 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." msgstr "Vyzvání na druhé straně…" -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "Časná média." -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "Hovor s %s je odložen." -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "Hovor přijat kým: %s – odložen." -#: ../coreapi/callbacks.c:459 +#: ../coreapi/callbacks.c:498 msgid "Call resumed." msgstr "Hovor obnoven." -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "Hovor přijat kým: %s." -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "Není slučitelné. Zkontrolujte nastavení kodeků a zabezpečení…" -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "Neslučitelné parametry médií." + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "Byli jsme obnoveni." -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "Byli jsme odloženi protistranou." -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "Hovor byl aktualizován protistranou." -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "Hovor ukončen." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Uživatel je zaneprázdněn." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "Uživatel je dočasně nedostupný." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "Uživatel si nepřeje být rušen." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Volání odmítnuto." -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "Přesměrováno" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." -msgstr "Neslučitelné parametry médií." - -#: ../coreapi/callbacks.c:798 +#: ../coreapi/callbacks.c:835 msgid "Call failed." msgstr "Volání se nezdařilo." -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "Registrace na %s byla úspěšná." -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "Odregistrování z %s hotovo." -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "odpověď nedorazila včas" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrace na %s selhala: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 +#: ../coreapi/linphonecall.c:174 #, c-format msgid "Authentication token is %s" msgstr "Klíč k ověření totožnosti je %s" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, 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 "aborted" -#~ msgstr "přerušen" - -#~ msgid "completed" -#~ msgstr "dokončen" - -#~ msgid "missed" -#~ msgstr "promeškán" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s v %s\n" -#~ "Od: %s\n" -#~ "Pro: %s\n" -#~ "Stav: %s\n" -#~ "Délka: %i min %i s\n" - -#~ msgid "Outgoing call" -#~ msgstr "Odchozí hovor" - -#~ msgid "No response." -#~ msgstr "Žádná odpověď." - -#~ msgid "Protocol error." -#~ msgstr "Chyba protokolu." - -#~ 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 " - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Váš počítač používá zvukový ovladač ALSA. Jde o nejlepší\n" -#~ "volbu. Linphone však potřebuje ke své práci modul emulace\n" -#~ "oss, který chybí. Prosím zadejte jako uživatel root příkaz\n" -#~ "'modprobe snd-pcm-oss', kterým modul zavede." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Váš počítač používá zvukový ovladač ALSA. Jde o nejlepší\n" -#~ "volbu. Linphone však potřebuje ke své práci modul mixer emulace\n" -#~ "oss, který chybí. Prosím zadejte jako uživatel root příkaz\n" -#~ "'modprobe snd-mixer-oss', kterým modul zavede." - -#~ msgid "by %s" -#~ msgstr "kým: %s" - -#~ msgid "Keypad" -#~ msgstr "Klávesnice" - -#~ msgid "Chat with %s" -#~ msgstr "Diskuze s %s" - -#~ msgid "Please choose a username:" -#~ msgstr "Prosím, vyberte si uživatelské jméno:" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "Zjišťuji, zda-li je „%s“ přípustné…" - -#~ msgid "Please wait..." -#~ msgstr "Prosím, čekejte…" - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "Je nám líto, ale toto jméno již existuje. Prosím, zvolte jiné." - -#~ msgid "Ok !" -#~ msgstr "V pořádku!" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "Chyba při komunikaci. Prosím, zkuste to později." - -#~ msgid "Choosing a username" -#~ msgstr "Výběr uživatelského jména" - -#~ msgid "Verifying" -#~ msgstr "Ověřování" - -#~ msgid "Creating your account" -#~ msgstr "Vytváření účtu" - -#~ msgid "Now ready !" -#~ msgstr "Připraveno!" - -#~ msgid "Enable video" -#~ msgstr "Zapnout video" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "" -#~ "Zadejte uživatelské jméno, telefonní číslo nebo plnou sipovou adresu" - -#~ msgid "Lookup:" -#~ msgstr "Hledat:" - -#~ msgid "in" -#~ msgstr "ve" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "Zaregistrovat se do\n" -#~ "virtuální sítě FONICS!" - -#~ msgid "We are being paused..." -#~ msgstr "Jsme odkládáni…" - -#~ msgid "No common codecs" -#~ msgstr "Žádný společný formát" - -#~ 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 "Contact list" -#~ msgstr "Seznam kontaktů" - -#~ 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 "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" - -#~ msgid "ITU-G.711 alaw decoder" -#~ msgstr "Dekodér a-law ITU-G.711" - -#~ msgid "Alsa sound source" -#~ msgstr "Zdroj zvuku ALSA" - -#~ msgid "Alsa sound output" -#~ msgstr "Zvukový výstup ALSA" - -#~ msgid "Sound capture filter for MacOS X Audio Queue Service" -#~ msgstr "Filtr zachytávání zvuku přes MacOS X službu zvukové fronty" - -#~ msgid "Sound playback filter for MacOS X Audio Queue Service" -#~ msgstr "Filtr přehrávání zvuku přes MacOS X službu zvukové fronty" - -#~ msgid "DTMF generator" -#~ msgstr "Generátor DTMF" - -#~ msgid "The GSM full-rate codec" -#~ msgstr "Kodek plnopásmového GSM" - -#~ msgid "The GSM codec" -#~ msgstr "GSM kodek" - -#~ msgid "Sound capture filter for MacOS X Audio Unit" -#~ msgstr "Filtr zachytávání zvuku přes MacOS X ovladač Audio Unit" - -#~ msgid "Sound playback filter for MacOS X Audio Unit" -#~ msgstr "Filtr přehrávání zvuku přes MacOS X ovladač Core Audio" - -#~ msgid "A filter to make conferencing" -#~ msgstr "Filtr pro vytváření konferencí" - -#~ msgid "Raw files and wav reader" -#~ msgstr "Čtení syrových souborů a souborů WAV" - -#~ msgid "Wav file recorder" -#~ msgstr "Nahrávání do souborů WAV" - -#~ msgid "A filter that send several inputs to one output." -#~ msgstr "Filtr, který směšuje několik vstupů do jednoho výstupu." - -#~ msgid "RTP output filter" -#~ msgstr "Filtr RTP výstupu" - -#~ msgid "RTP input filter" -#~ msgstr "Filtr RTP vstupu" - -#~ msgid "The free and wonderful speex codec" -#~ msgstr "Svobodný a úžasný kodek speex" - -#~ msgid "A filter that controls and measure sound volume" -#~ msgstr "Filtr, který měří a řídí hlasitost zvuku" - -#~ msgid "A video4linux compatible source filter to stream pictures." -#~ msgstr "Zdrojový filtr kompatibilní s Video4Linux proudující obrázky." - -#~ msgid "A filter to grab pictures from Video4Linux2-powered cameras" -#~ msgstr "Filtr zachytávající obrázky z Video4Linux2 kamer" - -#~ msgid "A filter that outputs a static image." -#~ msgstr "Filtr, který vydává nehybný obrázek." - -#~ msgid "A pixel format converter" -#~ msgstr "Převodník formátu pixelů" - -#~ msgid "A video size converter" -#~ msgstr "Převaděč velikosti videa" - -#~ msgid "a small video size converter" -#~ msgstr "Převaděč velikosti malých videí" - -#~ msgid "Echo canceller using speex library" -#~ msgstr "Potlačení ozvěny prostřednictvím knihovny speex" - -#~ msgid "A filter that reads from input and copy to its multiple outputs." -#~ msgstr "Filtr, který čte vstup a kopíruje ho více výstupů." - -#~ msgid "The theora video encoder from xiph.org" -#~ msgstr "Kodér videa do theory od xiph.org" - -#~ msgid "The open-source and royalty-free 'theora' video codec from xiph.org" -#~ msgstr "" -#~ "Kodek pro video „theora“ od xiph.org, který má otevřený zdrojový kód a je " -#~ "prostý licenčních poplatků" - -#~ msgid "The theora video decoder from xiph.org" -#~ msgstr "Dekodér theora videa od xiph.org" - -#~ msgid "ITU-G.711 ulaw encoder" -#~ msgstr "Kodér µ-law ITU-G.711" - -#~ msgid "ITU-G.711 ulaw decoder" -#~ msgstr "Dekodér µ-law ITU-G.711" - -#~ msgid "A H.263 decoder using ffmpeg library" -#~ msgstr "Dekodér H.263 používající knihovnu ffmpeg" - -#~ msgid "A MPEG4 decoder using ffmpeg library" -#~ msgstr "Dekodér MPEG4 používající knihovnu ffmpeg" - -#~ msgid "A RTP/JPEG decoder using ffmpeg library" -#~ msgstr "Dekodér RTP/JPEG používající knihovnu ffmpeg" - -#~ msgid "A MJPEG decoder using ffmpeg library" -#~ msgstr "Dekodér MPEG používající knihovnu ffmpeg" - -#~ msgid "A snow decoder using ffmpeg library" -#~ msgstr "Dekodér snow používající knihovnu ffmpeg" - -#~ msgid "A video H.263 encoder using ffmpeg library." -#~ msgstr "Kodér H.263 používající knihovnu ffmpeg." - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library. It is compliant with old " -#~ "RFC2190 spec." -#~ msgstr "" -#~ "Kodér H.263 videa používající knihovnu ffmpeg. Vyhovuje staré specifikaci " -#~ "RFC 2190." - -#~ msgid "A video MPEG4 encoder using ffmpeg library." -#~ msgstr "Kodér MPEG4 videa používající knihovnu ffmpeg." - -#~ msgid "A video snow encoder using ffmpeg library." -#~ msgstr "Kodér snow videa používající knihovnu ffmpeg." - -#~ msgid "A RTP/MJPEG encoder using ffmpeg library." -#~ msgstr "Kodér RTP/MJPEG používající knihovnu ffmpeg." - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library, compliant with old RFC2190 " -#~ "spec." -#~ msgstr "" -#~ "Kodér H.263 videa používající knihovnu ffmpeg, vyhovuje staré specifikaci " -#~ "RFC 2190." - -#~ msgid "" -#~ "The snow codec is royalty-free and is open-source. \n" -#~ "It uses innovative techniques that makes it one of most promising video " -#~ "codec. It is implemented within the ffmpeg project.\n" -#~ "However it is under development, quite unstable and compatibility with " -#~ "other versions cannot be guaranteed." -#~ msgstr "" -#~ "Kodek snow není zatížen poplatky a má otevřený zdrojový kód.\n" -#~ "Využívá průkopnické techniky, které jej činí jedním z nejslibnějších " -#~ "video kodeků. Je implementován v projektu ffmpeg.\n" -#~ "Avšak stále se vyvíjí, je trochu nestabilní a kompatibilita s ostatními " -#~ "verzemi není zaručena." - -#~ msgid "A MJPEG encoder using ffmpeg library." -#~ msgstr "Kodér MJPEG používající knihovnu ffmpeg." - -#~ msgid "A SDL-based video display" -#~ msgstr "Zobrazování videa přes SDL" - -#~ msgid "A video4windows compatible source filter to stream pictures." -#~ msgstr "Zdrojový filtr kompatibilní s video4windows proudující obrázky." - -#~ msgid "A video for windows (vfw.h) based source filter to grab pictures." -#~ msgstr "" -#~ "Zdrojový filtr založený na videu pro windows (vwf.h) pro zachytávání " -#~ "obrázků." - -#~ msgid "" -#~ "A filter that trashes its input (useful for terminating some graphs)." -#~ msgstr "" -#~ "Filtr, který zahazuje svůj vstup (užitečné na zakončení některých grafů)." - -#~ msgid "Parametric sound equalizer." -#~ msgstr "Parametrický ekvalizér zvuku." - -#~ msgid "A webcam grabber based on directshow." -#~ msgstr "Snímač kamer postavený na directshow." - -#~ msgid "A video display based on windows DrawDib api" -#~ msgstr "Zobrazovaní videa přes API Windows DrawDib" - -#~ msgid "A filter that mixes down 16 bit sample audio streams" -#~ msgstr "Filtr, který smísí 16b vzorkované zvukové proudy" - -#~ msgid "A filter that converts from mono to stereo and vice versa." -#~ msgstr "Filtr, který převádí mono na stereo a obráceně." - -#~ msgid "Inter ticker communication filter." -#~ msgstr "Komunikační filtr mezitiku." - -#~ msgid "A display filter sending the buffers to draw to the upper layer" -#~ msgstr "Zobrazovací filtr odesílající buffery na vykreslení do vyšší vrstvy" - -#~ msgid "Sound capture filter for MacOS X Audio Unit Service" -#~ msgstr "Filtr zachytávání zvuku přes MacOS X službu Audio Unit" - -#~ msgid "Sound playback filter for MacOS X Audio Unit Service" -#~ msgstr "Filtr přehrávání zvuku přes MacOS X službu Audio Unit" - -#~ msgid "A video display using X11+Xv" -#~ msgstr "Zobrazovaní videa pomocí X11+Xv" - -#~ msgid "Sound capture filter for Android" -#~ msgstr "Zvukový zachytávací filtr pro Android" - -#~ msgid "Sound playback filter for Android" -#~ msgstr "Zvukový přehrávací filtr pro Android" - -#~ msgid "A filter that captures Android video." -#~ msgstr "Filtr, který zachytává obraz za Androidu." - -#~ msgid "" -#~ "Your machine appears to be connected to an IPv6 network. By default " -#~ "linphone always uses IPv4. Please update your configuration if you want " -#~ "to use IPv6" -#~ msgstr "" -#~ "Zdá se, že váš počítač je připojen do IPv6 sítě. Standardně linphone " -#~ "používá pouze IPv4. Prosím, změňte nastavení programu, pokud chcete " -#~ "používat IPv6." - -#~ msgid "Call answered - connected." -#~ msgstr "Hovoř přijat – spojen." - -#~ msgid "Show debug messages" -#~ msgstr "Zobrazit ladicí zprávy" - -#~ msgid "Start call" -#~ msgstr "Zahájit hovor" - -#~ msgid "_Modes" -#~ msgstr "Reži_my" - -#~ msgid "Created by Simon Morlat\n" -#~ msgstr "Vytvořil Simon Morlat\n" - -#~ msgid "Accept" -#~ msgstr "Přijmout" - -#~ msgid "Incoming call from" -#~ msgstr "Příchozí hovor od" - -#~ msgid "Linphone - Incoming call" -#~ msgstr "Linphone – Příchozí hovor" - -#~ msgid "" -#~ "Audio codecs\n" -#~ "Video codecs" -#~ msgstr "" -#~ "Kodeky zvuku\n" -#~ "Kodeky obrazu" - -#~ msgid "default soundcard\n" -#~ msgstr "implicitní zvuková karta\n" - -#~ msgid "" -#~ "Remote end seems to have disconnected, the call is going to be closed." -#~ msgstr "Vzdálený konec se asi odpojil, hovor bude ukončen." - -#~ msgid "Sorry, having multiple simultaneous calls is not supported yet !" -#~ msgstr "Promiňte, vedení více současných hovorů není podporováno!" - -#~ msgid "Digits" -#~ msgstr "Číslice" - -#~ msgid "Main view" -#~ msgstr "Hlavní zobrazení" - -#~ msgid "No nat/firewall address supplied !" -#~ msgstr "Žádná adresa NATu/firewallu nebyla zadána!" - -#~ msgid "Invalid nat address '%s' : %s" -#~ msgstr "Neplatná adresa NATu '%s': '%s" - -#~ msgid "Could not reach destination." -#~ msgstr "Cíl je nedostupný." - -#~ msgid "Request Cancelled." -#~ msgstr "Dotaz přerušen." - -#~ msgid "Bad request" -#~ msgstr "Chybný dotaz" - -#~ msgid "User cannot be found at given address." -#~ msgstr "Uživatele nelze na dané adrese zastihnout." - -#~ msgid "Remote user cannot support any of proposed codecs." -#~ msgstr "Vzdálený uživatel nemá podporu pro žádný z navržených kodeků." - -#~ msgid "Timeout." -#~ msgstr "Vypršení časového limitu." - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "Vzdálený počítač byl nalezen, ale odmítl připojení." - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you\n" -#~ "to contact him using the following alternate resource:" -#~ msgstr "" -#~ "Uživatel je nedostupný, ale navrhuje tyto alternativní\n" -#~ "setkání:" - -#~ msgid "Gone" -#~ msgstr "Pryč" - -#~ msgid "Waiting for Approval" -#~ msgstr "Čekám na schválení" - -#~ msgid "Be Right Back" -#~ msgstr "Na chvíli pryč" - -#~ msgid "On The Phone" -#~ msgstr "Na příjmu" - -#~ msgid "Out To Lunch" -#~ msgstr "Na obědě" - -#~ msgid "Closed" -#~ msgstr "Zavřeno" - -#~ msgid "Unknown" -#~ msgstr "Stav není znám" - -#~ msgid "Bresilian" -#~ msgstr "brazilská portugalština" - -#~ msgid "_View" -#~ msgstr "_Zobrazit" - -#~ msgid "A video for macosx compatible source filter to stream pictures." -#~ msgstr "Zdrojový filtr kompatibilní s MacOS X videem proudující obrázky." - -#~ msgid "" -#~ "Show All\n" -#~ "Show Online" -#~ msgstr "" -#~ "Zobrazovat vše\n" -#~ "Zobrazovat připojené" - -#~ msgid "Display filters" -#~ msgstr "Filtry pro zobrazení" - -#~ msgid "I'm not behing a firewall" -#~ msgstr "Nejsem za firewallem" - -#~ msgid "I'm behind a firewall, use supplied public IP address" -#~ msgstr "Jsem za firewallem, použij zadanou veřejnou IP adresu" - -#~ msgid "Use the supplied stun server above and do as best as possible" -#~ msgstr "Použij výše zadaný STUN server a snaž se, jak nejlépe umíš" - -#~ msgid "Go" -#~ msgstr "Soubor" - -#~ msgid "Shows calls" -#~ msgstr "Zobrazit volání" - -#~ msgid "Exit" -#~ msgstr "Ukončit" - -#~ msgid "..." -#~ msgstr "…" - -#~ msgid "Proxy to use:" -#~ msgstr "Proxy:" - -#~ msgid "" -#~ "Call or\n" -#~ "answer" -#~ msgstr "" -#~ "Volat nebo\n" -#~ "přijmout" - -#~ msgid "" -#~ "Hangup\n" -#~ "or refuse" -#~ msgstr "" -#~ "Zavěsit nebo\n" -#~ "odmítnout" - -#~ msgid "Or chat !" -#~ msgstr "Nebo poslat zprávu!" - -#~ msgid "Show more..." -#~ msgstr "Zobrazit více…" - -#~ msgid "Playback level:" -#~ msgstr "Úroveň přehrávání:" - -#~ msgid "Recording level:" -#~ msgstr "Úroveň nahrávání:" - -#~ msgid "Ring level:" -#~ msgstr "Úroveň vyzvánění:" - -#~ msgid "Controls" -#~ msgstr "Ovládání" - -#~ msgid "Reachable" -#~ msgstr "Dosažitelný" - -#~ msgid "Busy, I'll be back in " -#~ msgstr "Mám práci, jsem zpět za " - -#~ msgid "The other party will be informed that you'll be back in X minutes" -#~ msgstr "Druhá strana bude informována, že se vrátíte za X minut" - -#~ msgid "mn" -#~ msgstr "min" - -#~ msgid "Moved temporarily" -#~ msgstr "Dočasně mimo" - -#~ msgid "Alternative service" -#~ msgstr "Alternativní služba" - -#~ msgid "URL:" -#~ msgstr "URL:" - -#~ msgid "Presence" -#~ msgstr "Přítomnost" - -#~ msgid "Press digits to send DTMFs." -#~ msgstr "Zadejte čísla pro zaslání DTMF." - -#~ msgid "" -#~ " 3\n" -#~ "def" -#~ msgstr "" -#~ " 3\n" -#~ "def" - -#~ msgid "" -#~ " 2\n" -#~ "abc" -#~ msgstr "" -#~ " 2\n" -#~ "abc" - -#~ msgid "" -#~ " 4\n" -#~ "ghi" -#~ msgstr "" -#~ " 4\n" -#~ "ghi" - -#~ msgid "" -#~ " 5\n" -#~ "jkl" -#~ msgstr "" -#~ " 5\n" -#~ "jkl" - -#~ msgid "" -#~ " 6\n" -#~ "mno" -#~ msgstr "" -#~ " 6\n" -#~ "mno" - -#~ msgid "" -#~ " 7\n" -#~ "pqrs" -#~ msgstr "" -#~ " 7\n" -#~ "pqrs" - -#~ msgid "" -#~ " 8\n" -#~ "tuv" -#~ msgstr "" -#~ " 8\n" -#~ "tuv" - -#~ msgid "" -#~ " 9\n" -#~ "wxyz" -#~ msgstr "" -#~ " 9\n" -#~ "wxyz" - -#~ msgid "DTMF" -#~ msgstr "DTMF" - -#~ msgid "My online friends" -#~ msgstr "Přátelé online" - -#~ msgid "" -#~ "C: 2001\n" -#~ "Made in Old Europe" -#~ msgstr "" -#~ "© 2001\n" -#~ "Vyrobeno ve Staré Dobré Evropě" - -#~ msgid "" -#~ "Linphone is a web-phone.\n" -#~ "It is compatible with SIP and RTP protocols." -#~ msgstr "" -#~ "Linphone je program pro IP telefonii.\n" -#~ "Je kompatibilní s protokoly SIP a RTP." - -#~ msgid "http://www.linphone.org" -#~ msgstr "http://www.linphone.org/" - -#~ msgid "Use IPv6 network (if available)" -#~ msgstr "Použít IPv6 síť (je-li dostupná)" - -#~ msgid "" -#~ "Toggle this if you are on an ipv6 network and you wish linphone to use it." -#~ msgstr "" -#~ "Jestliže jste v síti podporující IPv6 protokol a chcete-li, aby jej " -#~ "linphone používal, zapněte tuto volbu." - -#~ msgid "Global" -#~ msgstr "Obecné" - -#~ msgid "" -#~ "These options is only for users in a private network, behind a gateway. " -#~ "If you are not in this situation, then leave this empty." -#~ msgstr "" -#~ "Tato volba je určena pouze pro uživatele v intranetu za firewallem. Pokud " -#~ "to není váš případ, nevyplňujte." - -#~ msgid "No firewall" -#~ msgstr "Bez firewallu" - -#~ msgid "Use this STUN server to guess firewall address :" -#~ msgstr "Pro odhad veřejné adresy použít tento STUN server:" - -#~ msgid "Specify firewall address manually:" -#~ msgstr "Veřejná adresa firewallu:" - -#~ msgid "NAT traversal options (experimental)" -#~ msgstr "Volby průchodu NATem (experimentální)" - -#~ msgid "Number of buffered miliseconds (jitter compensation):" -#~ msgstr "Velikosti vyrovnávací fronty v milisekundách (potlačení rozptylu):" - -#~ msgid "RTP port used for audio:" -#~ msgstr "RTP port pro zvuk:" - -#~ msgid "Use SIP INFO message instead of RTP rfc2833 for DTMF transmitting" -#~ msgstr "Místo RTP rfc2833 použít pro DTMF přenos SIP INFO zprávu" - -#~ msgid "RTP-RFC2833 is the recommended way." -#~ msgstr "Doporučeno je RTP-RFC2833." - -#~ msgid "Other" -#~ msgstr "Ostatní" - -#~ msgid "micro" -#~ msgstr "mikrofon" - -#~ msgid "Enable echo-canceler (cancels the echo heard by the remote party)" -#~ msgstr "Potlačit ozvěnu (projeví se na druhém konci)" - -#~ msgid "Choose file" -#~ msgstr "Vyberte soubor" - -#~ msgid "Listen" -#~ msgstr "Test" - -#~ msgid "Run sip user agent on port:" -#~ msgstr "Spustit uživatelského agenta SIP na portu:" - -#~ msgid "It is strongly recommended to use port 5060." -#~ msgstr "Je doporučeno používat port 5060." - -#~ msgid "@" -#~ msgstr "@" - -#~ msgid "Identity" -#~ msgstr "Identita" - -#~ msgid "Add proxy/registrar" -#~ msgstr "Přidat proxy/registraci" - -#~ msgid "Clear all stored authentication information (username,password...)" -#~ msgstr "Vyprázdnit všechny ověřovací informace (uživatelské jméno, heslo…)" - -#~ msgid "List of audio codecs, in order of preference:" -#~ msgstr "Seznam audio kodeků podle preference:" - -#~ msgid "" -#~ "Note: Codecs in red are not usable regarding to your connection type to " -#~ "the internet." -#~ msgstr "" -#~ "Poznámka: Kodeky označené červeně nelze u vašeho typu připojení použít." - -#~ msgid "No information availlable" -#~ msgstr "Nejsou dostupné žádné informace" - -#~ msgid "Codec information" -#~ msgstr "Informace o kodeku" - -#~ msgid "Address Book" -#~ msgstr "Adresář" - -#~ msgid "Select" -#~ msgstr "Vybrat" - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you to contact him " -#~ "using the following alternate ressource:" -#~ msgstr "" -#~ "Uživatel je momentálně nedostupný, ale navrhuje tyto alternativní formy " -#~ "kontaktu:" - -#~ msgid "None." -#~ msgstr "Žádné." - -#~ msgid "Send registration:" -#~ msgstr "Odeslat registraci:" - -#~ msgid "Name:" -#~ msgstr "Jméno:" - -#~ msgid "Subscribe policy:" -#~ msgstr "Pravidlo přihlášení:" - -#~ msgid "Send subscription (see person's online status)" -#~ msgstr "Odeslat přihlášení (podle online stavu osoby)" - -#~ msgid "New incoming subscription" -#~ msgstr "Nové příchozí přihlášení" - -#~ msgid "You have received a new subscription..." -#~ msgstr "Obdrželi jste nové přihlášení…" - -#~ msgid "Refuse" -#~ msgstr "Odmítnout" - -#~ msgid "Authentication required for realm" -#~ msgstr "pro doménu je vyžadováno ověření" - -#~ msgid "userid:" -#~ msgstr "ID uživatele:" - -#~ msgid "Text:" -#~ msgstr "Text:" - -#~ msgid "The caller asks for resource reservation. Do you agree ?" -#~ msgstr "Volající žádá o rezervaci zdrojů. Souhlasíte?" - -#~ msgid "" -#~ "The caller doesn't use resource reservation. \t\t\t\t\tDo you wish to " -#~ "continue anyway ?" -#~ msgstr "" -#~ "Volající nepoužívá rezervaci zdrojů. \t\t\t\t\tChcete přesto pokračovat?" - -#~ msgid "linphone - receiving call from %s" -#~ msgstr "linphone – příchozí hovor z %s" - -#~ msgid "" -#~ "You have received a subscription from %s.This means that this person " -#~ "wishes to be notified of your presence information (online, busy, " -#~ "away...).\n" -#~ "Do you agree ?" -#~ msgstr "" -#~ "Obdrželi jste přihlášení od %s. Znamená to, že si tato osoba přeje být " -#~ "informována o vašem stavu přítomnosti (online, zaneprázdněn, pryč…).\n" -#~ "Souhlasíte?" - -#~ msgid "Authentication required for realm %s" -#~ msgstr "Pro doménu %s je vyžadováno ověření" - -#~ msgid "Wait" -#~ msgstr "Zdržet" - -#~ msgid "Deny" -#~ msgstr "Odmítnout" - -#~ msgid "Bad sip address: a sip address looks like sip:user@domain" -#~ msgstr "Špatně zadaná SIP adresa: SIP adresa má tvar sip:uživatel@doména" - -#~ msgid "Stun lookup done..." -#~ msgstr "STUN vyhledávání dokončeno…" - -#~ msgid "enter sip uri here" -#~ msgstr "Sem zadejte SIP URI" - -#~ msgid "User manual" -#~ msgstr "Uživatelská příručka" - -#~ msgid "Ring sound selection" -#~ msgstr "Výběr zvonění" - -#~ msgid "Communication ended." -#~ msgstr "Komunikace ukončena." - -#~ msgid "Firewall 's external ip address (in dot notations):" -#~ msgstr "Vnější IP adresa firewallu (v tečkové notaci):" - -#~ msgid "Index" -#~ msgstr "Rejstřík" - -#~ msgid "28k modem" -#~ msgstr "28k modem" - -#~ msgid "56k modem" -#~ msgstr "56k modem" - -#~ msgid "64k modem (numeris)" -#~ msgstr "64k modem" - -#~ msgid "ADSL or Cable modem" -#~ msgstr "ADSL nebo kabelový modem" - -#~ msgid "Ethernet or equivalent" -#~ msgstr "Ethernet nebo podobný" - -#~ msgid "Connection type:" -#~ msgstr "Typ připojení:" - -#~ msgid "" -#~ "Linphone could not open audio device %s. Check if your sound card is " -#~ "fully configured and working." -#~ msgstr "" -#~ "Linphone nemůže otevřít zvukové zařízení %s. Překontrolujte nastavení a " -#~ "funkčnost zvukové karty." - -#~ msgid "Type here the sip address of the person you want to call." -#~ msgstr "Zde zadejte SIP adresu osoby, které si přejete volat." - -#~ msgid "" -#~ "Release or\n" -#~ "Refuse" -#~ msgstr "" -#~ "Přijmout nebo\n" -#~ "odmítnout" - -#~ msgid "%s. Retry after %i minute(s)." -#~ msgstr "%s. Zkusit znovu po %i min." diff --git a/po/de.po b/po/de.po index 81e18df10..d447b9325 100644 --- a/po/de.po +++ b/po/de.po @@ -1,21 +1,23 @@ -# SIP Telephony Application. -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -# Simon Morlat , 2001. -# Gerhard Stengel , 2011, 2012. +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Gerhard Stengel , 2011-2012 +# Simon Morlat , 2001 msgid "" msgstr "" -"Project-Id-Version: linphone 0.7.1\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2012-11-07 19:27+0100\n" -"Last-Translator: Gerhard Stengel \n" -"Language-Team: German \n" -"Language: de\n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:14+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8-bit\n" -"X-Generator: Lokalize 1.5\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -28,9 +30,9 @@ msgid "Send text to %s" msgstr "Text zu „%s“ schicken" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "Im Gespräch" +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" @@ -68,13 +70,11 @@ msgid "%s\t%s" msgstr "" #: ../gtk/calllogs.c:337 -#, fuzzy, c-format +#, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" msgstr "" -"%s\t%s\tQualität: %s\n" -"%s\t%s %s\t" #: ../gtk/calllogs.c:343 #, c-format @@ -114,9 +114,7 @@ msgstr "Linphone mit ausgeschaltetem Video starten." #: ../gtk/main.c:128 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." +msgstr "Nur im Systemabschnitt der Kontrollleiste starten, aber das Hauptfenster nicht zeigen." #: ../gtk/main.c:135 msgid "address to call right now" @@ -128,110 +126,92 @@ msgstr "Falls aktiviert, werden eingehende Anrufe automatisch beantwortet" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" -"Geben Sie einen Arbeitsordner an (sollte der Installationsordner sein, z. B. " -"C:\\Programme\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +msgstr "Geben Sie einen Arbeitsordner an (sollte der Installationsordner sein, z. B. C:\\Programme\\Linphone)" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Bestätigung" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "Konto-Einrichtungsassistent" +msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "Im Gespräch mit %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 möchte Sie zu seiner Kontaktliste hinzufügen.\n" -"Möchten Sie ihm erlauben, Ihren Anwesenheitsstatus zu sehen, oder ihn zu " -"Ihrer Kontaktliste hinzufügen?\n" -"Wenn Sie mit Nein antworten, wird diese Person vorläufig blockiert." +msgstr "%s möchte Sie zu seiner Kontaktliste hinzufügen.\nMöchten Sie ihm erlauben, Ihren Anwesenheitsstatus zu sehen, oder ihn zu Ihrer Kontaktliste hinzufügen?\nWenn Sie mit Nein antworten, wird diese Person vorläufig blockiert." -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -"Geben Sie bitte Ihr Passwort für den Benutzernamen %s\n" -" auf der Domäne %s ein:" -#: ../gtk/main.c:1376 +#: ../gtk/main.c:1283 msgid "Call error" msgstr "Anruf fehlgeschlagen" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "Anruf beendet" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Eingehender Anruf" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Annehmen" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Abweisen" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 msgid "Call paused" msgstr "Anruf wird gehalten" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 #, c-format msgid "by %s" msgstr "von %s" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s schlägt vor, eine Videoübertragung zu starten. Nehmen Sie an?" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "Website-Verknüpfung" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Linphone - ein Internet-Video-Telefon" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (Vorgabe)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "Vermittlung nach %s" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"Auf diesem Rechner können keine Soundkarten gefunden werden.\n" -"Sie können keine Audio-Anrufe tätigen oder entgegennehmen." +msgstr "Auf diesem Rechner können keine Soundkarten gefunden werden.\nSie können keine Audio-Anrufe tätigen oder entgegennehmen." -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "Ein freies SIP-Video-Telefon" @@ -252,9 +232,8 @@ msgid "Call" msgstr "Anrufen" #: ../gtk/friendlist.c:726 -#, fuzzy msgid "Chat" -msgstr "Chat Raum" +msgstr "" #: ../gtk/friendlist.c:756 #, c-format @@ -272,9 +251,9 @@ msgid "Delete contact '%s'" msgstr "Kontakt „%s“ löschen" #: ../gtk/friendlist.c:978 -#, fuzzy, c-format +#, c-format msgid "Delete chat history of '%s'" -msgstr "Kontakt „%s“ löschen" +msgstr "" #: ../gtk/friendlist.c:1029 #, c-format @@ -290,9 +269,8 @@ msgid "Status" msgstr "Status" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Min. Bitrate (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -310,94 +288,92 @@ msgstr "Gesperrt" msgid "Account" msgstr "Konto" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "Englisch" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "Französisch" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "Schwedisch" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "Italienisch" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "Spanisch" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "Brasilianisches Portugiesisch" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "Polnisch" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "Deutsch" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "Russisch" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "Japanisch" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "Niederländisch" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "Ungarisch" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "Tschechisch" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "Chinesisch" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "Traditionelles Chinesisch" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "Norwegisch" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 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." +msgstr "Linphone muss neu gestartet werden, damit die neue Spracheinstellung wirksam wird." -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "Keinen" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -406,9 +382,7 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"Eine neuere Version ist von %s verfügbar.\n" -"Möchten Sie einen Browser zum Herunterladen öffnen?" +msgstr "Eine neuere Version ist von %s verfügbar.\nMöchten Sie einen Browser zum Herunterladen öffnen?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -445,10 +419,7 @@ msgstr[1] "%i Kontakte gefunden" msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"Willkommen!\n" -"Dieser Assistent wird Ihnen dabei helfen, ein SIP-Konto für Ihre Anrufe zu " -"verwenden." +msgstr "Willkommen!\nDieser Assistent wird Ihnen dabei helfen, ein SIP-Konto für Ihre Anrufe zu verwenden." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -456,8 +427,7 @@ msgstr "Ein Konto bei linphone.org erstellen." #: ../gtk/setupwizard.c:44 msgid "I have already a linphone.org account and I just want to use it" -msgstr "" -"Ich habe bereits ein Konto bei linphone.org und möchte es jetzt benutzen." +msgstr "Ich habe bereits ein Konto bei linphone.org und möchte es jetzt benutzen." #: ../gtk/setupwizard.c:45 msgid "I have already a sip account and I just want to use it" @@ -527,30 +497,21 @@ msgstr "" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "" -"Fehler, Konto kann nicht bestätigt werden. Der Benutzername wird bereits\n" -"verwendet oder der Server ist unerreichbar.\n" -"Bitte gehen Sie zurück und versuchen Sie es noch einmal." +msgstr "Fehler, Konto kann nicht bestätigt werden. Der Benutzername wird bereits\nverwendet oder der Server ist unerreichbar.\nBitte gehen Sie zurück und versuchen Sie es noch einmal." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." -msgstr "" -"Danke. Ihr Konto ist nun fertig eingerichtet und kann verwendet werden." +msgstr "Danke. Ihr Konto ist nun fertig eingerichtet und kann verwendet werden." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." -msgstr "" -"Bitte bestätigen Sie Ihr Konto, indem Sie auf die Verknüpfung klicken, die " -"wir Ihnen soeben per E-Mail geschickt haben.\n" -"Danach gehen Sie hierher zurück und drücken auf „Vor“." +msgstr "Bitte bestätigen Sie Ihr Konto, indem Sie auf die Verknüpfung klicken, die wir Ihnen soeben per E-Mail geschickt haben.\nDanach gehen Sie hierher zurück und drücken auf „Vor“." #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "Konto-Einrichtungsassistent" +msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -623,28 +584,24 @@ msgid "Through a relay server" msgstr "Über einen Relay-Server" #: ../gtk/incall_view.c:239 -#, fuzzy msgid "uPnP not activated" -msgstr "ICE nicht aktiviert" +msgstr "" #: ../gtk/incall_view.c:241 -#, fuzzy msgid "uPnP in progress" -msgstr "ICE läuft" +msgstr "" #: ../gtk/incall_view.c:243 -#, fuzzy msgid "uPnp not available" -msgstr "nicht verfügbar" +msgstr "" #: ../gtk/incall_view.c:245 msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "ICE fehlgeschlagen" +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -655,9 +612,7 @@ msgstr "" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "" -"Herunterladen: %f\n" -"Hochladen: %f (kbit/s)" +msgstr "Herunterladen: %f\nHochladen: %f (kbit/s)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -665,119 +620,118 @@ msgid "%ix%i @ %f fps" msgstr "" #: ../gtk/incall_view.c:304 -#, fuzzy, c-format +#, c-format msgid "%.3f seconds" -msgstr "%i Sekunde" +msgstr "" #: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "Verbindungsaufbau..." -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "" -#: ../gtk/incall_view.c:515 +#: ../gtk/incall_view.c:525 msgid "Incoming call" msgstr "Eingehender Anruf" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "gut" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "durchschnittlich" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "schlecht" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "sehr schlecht" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "zu schlecht" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "nicht verfügbar" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "Gesichert durch SRTP" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Gesichert durch ZRTP - [Auth.-Token: %s]" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "Auf „Ungeprüft“ setzen" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Auf „Geprüft“ setzen" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "In Konferenz" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In call" msgstr "Im Gespräch" -#: ../gtk/incall_view.c:738 +#: ../gtk/incall_view.c:758 msgid "Paused call" msgstr "Gehaltener Anruf" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Anruf beendet." -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "Vermittlung läuft" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "Vermittlung abgeschlossen." -#: ../gtk/incall_view.c:809 +#: ../gtk/incall_view.c:831 msgid "Transfer failed." msgstr "Vermittlung fehlgeschlagen." -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "Fortsetzen" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Halten" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 -#, fuzzy +#: ../gtk/incall_view.c:948 msgid "(Paused)" -msgstr "Halten" +msgstr "" #: ../gtk/loginframe.c:88 #, c-format @@ -785,9 +739,9 @@ msgid "Please enter login information for %s" msgstr "Bitte geben Sie die Anmeldeinformationen für %s ein." #: ../gtk/config-fetching.c:57 -#, fuzzy, c-format +#, c-format msgid "fetching from %s" -msgstr "Eingehendes Gespr�h" +msgstr "" #: ../gtk/config-fetching.c:73 #, c-format @@ -811,33 +765,26 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Willkommen!\n" -"Dieser Assistent wird Ihnen dabei helfen, ein SIP-Konto für Ihre Anrufe zu " -"verwenden." #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Aufnahmegerät:" +msgstr "" #: ../gtk/audio_assistant.c:329 -#, fuzzy msgid "Recorded volume" -msgstr "Aufnahmequelle:" +msgstr "" #: ../gtk/audio_assistant.c:333 msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Wiedergabegerät:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -856,14 +803,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "Konto-Einrichtungsassistent" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "Konto-Einrichtungsassistent" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -886,9 +831,8 @@ msgid "Send" msgstr "Senden" #: ../gtk/main.ui.h:3 -#, fuzzy msgid "End conference" -msgstr "In Konferenz" +msgstr "" #: ../gtk/main.ui.h:7 msgid "Record this call to an audio file" @@ -943,9 +887,8 @@ msgid "_Options" msgstr "_Optionen" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Proxy/Registrator Konfigurationsbox" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -1049,12 +992,9 @@ msgstr "" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "" -"Ein Internet-Video-Telefon, das das Standard-SIP-Protokoll (RFC3261) " -"verwendet." +msgstr "Ein Internet-Video-Telefon, das das Standard-SIP-Protokoll (RFC3261) verwendet." #: ../gtk/about.ui.h:5 -#, fuzzy msgid "" "fr: Simon Morlat\n" "en: Simon Morlat and Delphine Perreau\n" @@ -1069,18 +1009,6 @@ msgid "" "hu: anonymous\n" "he: Eli Zaretskii \n" msgstr "" -"fr: Simon Morlat\n" -"en: Simon Morlat and Delphine Perreau\n" -"it: Alberto Zanoni \n" -"de: Jean-Jacques Sarton \n" -"\t Gerhard Stengel \n" -"sv: Daniel Nylander \n" -"es: Jesus Benitez \n" -"ja: YAMAGUCHI YOSHIYA \n" -"pt_BR: Rafael Caesar Lenzi \n" -"pl: Robert Nasiadek \n" -"cs: Petr Pisar \n" -"hu: anonymous\n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1155,9 +1083,8 @@ msgid "Registration duration (sec):" msgstr "Registrierungsdauer (sec):" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "Route (optional):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1168,9 +1095,8 @@ msgid "Route (optional):" msgstr "Route (optional):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Übertragung" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1181,9 +1107,8 @@ msgid "Publish presence information" msgstr "Anwesenheitsstatus veröffentlichen" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Freigeben" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1278,9 +1203,8 @@ msgid "Fixed" msgstr "Fest" #: ../gtk/parameters.ui.h:23 -#, fuzzy msgid "Media encryption is mandatory" -msgstr "Verschlüsselungstyp der Medien" +msgstr "" #: ../gtk/parameters.ui.h:24 msgid "Tunnel" @@ -1291,14 +1215,12 @@ msgid "DSCP fields" msgstr "DSCP-Felder" #: ../gtk/parameters.ui.h:26 -#, fuzzy msgid "SIP/TCP port" -msgstr "SIP-Port" +msgstr "" #: ../gtk/parameters.ui.h:27 -#, fuzzy msgid "SIP/UDP port" -msgstr "SIP-Port" +msgstr "" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1309,9 +1231,8 @@ msgid "Direct connection to the Internet" msgstr "Direkte Verbindung ins Internet" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "Hinter NAT / Firewall (IP-Gateway darunter angeben)" +msgstr "" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" @@ -1322,9 +1243,8 @@ msgid "Behind NAT / Firewall (use ICE)" msgstr "Hinter NAT / Firewall (ICE verwenden)" #: ../gtk/parameters.ui.h:33 -#, fuzzy msgid "Behind NAT / Firewall (use uPnP)" -msgstr "Hinter NAT / Firewall (ICE verwenden)" +msgstr "" #: ../gtk/parameters.ui.h:34 msgid "Public IP address:" @@ -1379,9 +1299,8 @@ msgid "Prefered video resolution:" msgstr "Bevorzugte Video-Auflösung:" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Video-Aufnahmegerät:" +msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1393,9 +1312,7 @@ msgstr "Multimedia-Einstellungen" #: ../gtk/parameters.ui.h:50 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." +msgstr "In diesem Bereich legen Sie Ihre SIP-Adresse fest, wenn Sie kein SIP-Konto verwenden." #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" @@ -1477,9 +1394,7 @@ msgstr "Adaptive Ratenregelung ein" msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "" -"Adaptive Ratenregelung ist eine Technik zur dynamischen Abschätzung der " -"zur Verfügung stehenden Bandbreite während eines Anrufs." +msgstr "Adaptive Ratenregelung ist eine Technik zur dynamischen Abschätzung der zur Verfügung stehenden Bandbreite während eines Anrufs." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1506,23 +1421,20 @@ msgid "User interface" msgstr "Benutzeroberfläche" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "Server-Adresse:" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Authentifikation fehlgeschlagen" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Proxy-Konten" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" @@ -1553,9 +1465,8 @@ msgid "Please wait" msgstr "Bitte warten" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "DSCP-Einstellungen" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1590,37 +1501,32 @@ msgid "Audio IP bandwidth usage" msgstr "Genutzte IP-Bandbreite Audio" #: ../gtk/call_statistics.ui.h:5 -#, fuzzy msgid "Audio Media connectivity" -msgstr "Medienanbindung" +msgstr "" #: ../gtk/call_statistics.ui.h:6 msgid "Video IP bandwidth usage" msgstr "Genutzte IP-Bandbreite Video" #: ../gtk/call_statistics.ui.h:7 -#, fuzzy msgid "Video Media connectivity" -msgstr "Medienanbindung" +msgstr "" #: ../gtk/call_statistics.ui.h:8 -#, fuzzy msgid "Round trip time" -msgstr "Audio Eigenschaften" +msgstr "" #: ../gtk/call_statistics.ui.h:9 msgid "Video resolution received" msgstr "" #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "Bevorzugte Video-Auflösung:" +msgstr "" #: ../gtk/call_statistics.ui.h:11 -#, fuzzy msgid "RTP profile" -msgstr "RTP-Eingabefilter" +msgstr "" #: ../gtk/call_statistics.ui.h:12 msgid "Call statistics and information" @@ -1707,23 +1613,20 @@ msgid "1" msgstr "" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Einstellungen" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" msgstr "" #: ../gtk/ldap.ui.h:7 -#, fuzzy msgid "Not yet available" -msgstr "nicht verfügbar" +msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Codecs" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1734,14 +1637,12 @@ msgid "Authname" msgstr "" #: ../gtk/ldap.ui.h:11 -#, fuzzy msgid "Realm" -msgstr "Bereich:" +msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Audio" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1757,18 +1658,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "Adresse" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Kontaktsuche" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1783,9 +1682,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Video" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1809,11 +1707,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1821,81 +1716,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "Verbinden..." +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "Bereit" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Bestätigung" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Telefonnummernziel wird gesucht..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "Diese Nummer kann nicht aufgelöst werden." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "Verbindungsaufbau" -#: ../coreapi/linphonecore.c:2425 +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" msgstr "Anruf kann nicht getätigt werden." -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Die maximale Anzahl der gleichzeitigen Anrufe ist erreicht." -#: ../coreapi/linphonecore.c:2745 +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" msgstr "ruft Sie an" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr " und fragt nach automatischer Antwort." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "" -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "Die Anrufparameter werden verändert..." -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Verbunden." -#: ../coreapi/linphonecore.c:3220 +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" msgstr "Anruf abgebrochen" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "Anruf kann nicht gehalten werden" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "Aktueller Anruf wird gehalten..." -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "STUN-Ermittlung läuft..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "Lokale Kandidaten für ICE werden zusammengestellt..." @@ -1944,1138 +1837,147 @@ msgid "Pending" msgstr "Ausstehend" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Dauer" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "Unbekannter Fehler" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"Die von Ihnen eingegebene SIP-Proxy-Adresse ist ungültig, sie muss mit " -"„sip:“ gefolgt vom Hostnamen beginnen." +msgstr "Die von Ihnen eingegebene SIP-Proxy-Adresse ist ungültig, sie muss mit „sip:“ gefolgt vom Hostnamen beginnen." -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"Die von Ihnen eingegebene SIP-Identität ist ungültig.\n" -"Sie sollte wie sip:benutzername@proxydomain aussehen, also z.B. sip:" -"alice@beispiel.net" +msgstr "Die von Ihnen eingegebene SIP-Identität ist ungültig.\nSie sollte wie sip:benutzername@proxydomain aussehen, also z.B. sip:alice@beispiel.net" -#: ../coreapi/proxy.c:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "Anmeldung als %s fehlgeschlagen" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "Klingeln bei der Gegenseite." -#: ../coreapi/callbacks.c:373 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." msgstr "Klingeln bei der Gegenseite..." -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "Anruf mit %s wird gehalten." -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "Der von %s entgegengenommene Anruf wird gehalten." -#: ../coreapi/callbacks.c:459 +#: ../coreapi/callbacks.c:498 msgid "Call resumed." msgstr "Anruf fortgesetzt." -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "Anruf wird von %s entgegengenommen." -#: ../coreapi/callbacks.c:483 -#, fuzzy +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." -msgstr "Inkompatibel, überprüfen Sie die Codecs..." +msgstr "" -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "Inkompatible Medienparameter." + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "Anruf wird fortgesetzt." -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "Anruf wird von der Gegenseite gehalten." -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "Anruf ist von der Gegenseite aktualisiert worden." -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "Anruf beendet." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Teilnehmer ist besetzt." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "Teilnehmer zur Zeit nicht verfügbar." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "Teilnehmer möchte nicht gestört werden." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Anruf abgewiesen" -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "Umgeleitet" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." -msgstr "Inkompatible Medienparameter." - -#: ../coreapi/callbacks.c:798 +#: ../coreapi/callbacks.c:835 msgid "Call failed." msgstr "Anruf fehlgeschlagen." -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "Registrierung auf %s erfolgreich." -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "Abmeldung von %s ist erfolgt." -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "Zeitüberschreitung bei der Antwort" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrierung auf %s fehlgeschlagen: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 +#: ../coreapi/linphonecall.c:174 #, c-format msgid "Authentication token is %s" msgstr "Authentifizierungs-Token ist %s" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, 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 "aborted" -#~ msgstr "abgebrochen" - -#~ msgid "completed" -#~ msgstr "beendet" - -#~ msgid "missed" -#~ msgstr "entgangen" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s am %s\n" -#~ "Von: %s\n" -#~ "An: %s\n" -#~ "Status: %s\n" -#~ "Dauer: %i min %i sec\n" - -#~ msgid "Outgoing call" -#~ msgstr "Abgehender Anruf" - -#~ msgid "No response." -#~ msgstr "Keine Antwort." - -#~ msgid "Protocol error." -#~ msgstr "Protokollfehler" - -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "SIP-Adresse kann nicht eingelesen werden. Eine SIP-Adresse hat folgenden " -#~ "Aufbau " - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Ihre Rechner verwendet anscheinend einen ALSA-Soundtreiber.\n" -#~ "Dies ist die beste Lösung; allerdings ist das von Linphone benötigte " -#~ "Modul\n" -#~ "zur PCM-OSS-Emulation nicht vorhanden. Bitte führen Sie als\n" -#~ "Systemverwalter den Befehl „modprobe snd-pcm-oss“ aus, um es zu laden." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Ihre Rechner verwendet anscheinend einen ALSA-Soundtreiber.\n" -#~ "Dies ist die beste Lösung; allerdings ist das von Linphone benötigte " -#~ "Modul\n" -#~ "zur Mixer-OSS-Emulation nicht vorhanden. Bitte führen Sie als\n" -#~ "Systemverwalter den Befehl „modprobe snd-mixer-oss“ aus, um es zu laden." - -#~ msgid "Keypad" -#~ msgstr "Wähltastatur" - -#~ msgid "Chat with %s" -#~ msgstr "Chat mit %s" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "Teilnehmer, Telefonnummer oder vollständige SIP-Adresse eingeben" - -#~ msgid "Lookup:" -#~ msgstr "Suchen:" - -#~ msgid "in" -#~ msgstr "in" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "Am virtuellen FONICS\n" -#~ "Netzwerk anmelden!" - -#~ msgid "Enable video" -#~ msgstr "Video ein" - -#~ msgid "edit" -#~ msgstr "Bearbeiten" - -#~ msgid "No common codecs" -#~ msgstr "Keine gemeinsamen Codecs" - -#~ msgid "We are being paused..." -#~ msgstr "Anruf wird gehalten..." - -#~ msgid "Please choose a username:" -#~ msgstr "Bitte einen Benutzernamen auswählen:" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "Die Verfügbarkeit von „%s“ wird überprüft..." - -#~ msgid "Please wait..." -#~ msgstr "Bitte warten..." - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "" -#~ "Leider existiert dieser Benutzername bereits. Bitte versuchen sie es mit " -#~ "einem anderen." - -#~ msgid "Ok !" -#~ msgstr "OK!" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "Kommunikationsproblem, bitte versuchen Sie es später noch einmal." - -#~ msgid "Choosing a username" -#~ msgstr "Benutzername wird ausgewählt" - -#~ msgid "Verifying" -#~ msgstr "Überprüfen" - -#~ msgid "Creating your account" -#~ msgstr "Erstellen Ihres Kontos" - -#~ msgid "Now ready !" -#~ msgstr "Fertig!" - -#~ 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 "Contact list" -#~ msgstr "Kontaktliste" - -#~ msgid "Audio & video" -#~ msgstr "Audio & Video" - -#~ msgid "Audio only" -#~ msgstr "Nur Audio" - -#~ msgid "Duration:" -#~ msgstr "Dauer:" - -#~ msgid "_Call history" -#~ msgstr "Anrufchronik" - -#~ msgid "Ports" -#~ msgstr "Ports" - -#~ 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" - -#~ msgid "ITU-G.711 alaw decoder" -#~ msgstr "ITU-G.711 alaw Dekoder" - -#~ msgid "Alsa sound source" -#~ msgstr "ALSA-Sound-Quelle" - -#~ msgid "Alsa sound output" -#~ msgstr "ALSA-Sound-Ausgabe" - -#~ msgid "Sound capture filter for MacOS X Audio Queue Service" -#~ msgstr "Sound-Aufnahmefilter für den Audio-Warteschlangendienst auf MacOS X" - -#~ msgid "Sound playback filter for MacOS X Audio Queue Service" -#~ msgstr "" -#~ "Sound-Wiedergabefilter für den Audio-Warteschlangendienst auf MacOS X" - -#~ msgid "DTMF generator" -#~ msgstr "DTMF-Generator" - -#~ msgid "The GSM full-rate codec" -#~ msgstr "Der Full-Rate-GSM-Codec" - -#~ msgid "The GSM codec" -#~ msgstr "Der GSM-Codec" - -#~ msgid "Sound capture filter for MacOS X Audio Unit" -#~ msgstr "Sound-Aufnahmefilter für den Audio-Warteschlangendienst auf MacOS X" - -#~ msgid "Sound playback filter for MacOS X Audio Unit" -#~ msgstr "" -#~ "Sound-Wiedergabefilter für den Audio-Warteschlangendienst auf MacOS X" - -#~ msgid "A filter to make conferencing" -#~ msgstr "Ein Filter zur Durchführung von Konferenzen" - -#~ msgid "Raw files and wav reader" -#~ msgstr "Lesen von Roh- und WAV-Dateien" - -#~ msgid "Wav file recorder" -#~ msgstr "Aufnahme von WAV-Dateien" - -#~ msgid "A filter that send several inputs to one output." -#~ msgstr "Ein Filter, der mehrere Eingaben an eine Ausgabe sendet." - -#~ msgid "RTP output filter" -#~ msgstr "RTP-Ausgabefilter" - -#~ msgid "The free and wonderful speex codec" -#~ msgstr "Der freie und herrliche Speex-Codec" - -#~ msgid "A filter that controls and measure sound volume" -#~ msgstr "Ein Filter zur Steuerung und Messung der Lautstärke" - -#~ msgid "A video4linux compatible source filter to stream pictures." -#~ msgstr "Ein mit Video4Linux kompatibler Quellfilter, um Bilder zu streamen." - -#~ msgid "A filter to grab pictures from Video4Linux2-powered cameras" -#~ msgstr "" -#~ "Ein Filter zur Aufzeichnung von durch Video4Linux2 unterstützten Kameras." - -#~ msgid "A filter that outputs a static image." -#~ msgstr "Ein Filter zur Ausgabe eines Standbilds" - -#~ msgid "A pixel format converter" -#~ msgstr "Ein Konverter für Pixelformate" - -#~ msgid "A video size converter" -#~ msgstr "Ein Konverter für die Größe von Videos" - -#~ msgid "a small video size converter" -#~ msgstr "Ein Konverter für die Größe von kleinen Videos" - -#~ msgid "Echo canceller using speex library" -#~ msgstr "Echo-Unterdrückung unter Verwendung der Speex-Bibliothek" - -#~ msgid "A filter that reads from input and copy to its multiple outputs." -#~ msgstr "" -#~ "Ein Filter, der aus einer Eingabe liest und auf viele Ausgaben kopiert." - -#~ msgid "The theora video encoder from xiph.org" -#~ msgstr "Der Theora-Video-Encoder von xiph.org" - -#~ msgid "The open-source and royalty-free 'theora' video codec from xiph.org" -#~ msgstr "" -#~ "Der quelloffene und lizenzkostenfreie „Theora“-Video-Codec von xiph.org" - -#~ msgid "The theora video decoder from xiph.org" -#~ msgstr "Der Theora-Video-Dekoder von xiph.org" - -#~ msgid "ITU-G.711 ulaw encoder" -#~ msgstr "ITU-G.711 ulaw Encoder" - -#~ msgid "ITU-G.711 ulaw decoder" -#~ msgstr "ITU-G.711 ulaw Dekoder" - -#~ msgid "A H.263 decoder using ffmpeg library" -#~ msgstr "Ein H263-Dekoder, der die ffmpeg-Bibliothek verwendet" - -#~ msgid "A MPEG4 decoder using ffmpeg library" -#~ msgstr "Ein MPEG4-Dekoder, der die ffmpeg-Bibliothek verwendet" - -#~ msgid "A RTP/JPEG decoder using ffmpeg library" -#~ msgstr "Ein RTP/JPEG-Dekoder, der die ffmpeg-Bibliothek verwendet" - -#~ msgid "A MJPEG decoder using ffmpeg library" -#~ msgstr "Ein MJPEG-Dekoder, der die ffmpeg-Bibliothek verwendet" - -#~ msgid "A snow decoder using ffmpeg library" -#~ msgstr "Ein Snow-Dekoder, der die ffmpeg-Bibliothek verwendet" - -#~ msgid "A video H.263 encoder using ffmpeg library." -#~ msgstr "Ein H263-Video-Dekoder, der die ffmpeg-Bibliothek verwendet" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library. It is compliant with old " -#~ "RFC2190 spec." -#~ msgstr "" -#~ "Ein H263-Video-Dekoder, der die ffmpeg-Bibliothek verwendet. Er erfüllt " -#~ "die alte RFC2190-Spezifikation." - -#~ msgid "A video MPEG4 encoder using ffmpeg library." -#~ msgstr "Ein MPEG4-Video-Encoder, der die ffmpeg-Bibliothek verwendet" - -#~ msgid "A video snow encoder using ffmpeg library." -#~ msgstr "Ein Snow-Video-Encoder, der die ffmpeg-Bibliothek verwendet" - -#~ msgid "A RTP/MJPEG encoder using ffmpeg library." -#~ msgstr "Ein RTP/MJPEG-Encoder, der die ffmpeg-Bibliothek verwendet" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library, compliant with old RFC2190 " -#~ "spec." -#~ msgstr "" -#~ "Ein H263-Video-Encoder, der die ffmpeg-Bibliothek verwendet, der die " -#~ "alter RFC2190-Spezifikation erfüllt." - -#~ msgid "" -#~ "The snow codec is royalty-free and is open-source. \n" -#~ "It uses innovative techniques that makes it one of most promising video " -#~ "codec. It is implemented within the ffmpeg project.\n" -#~ "However it is under development, quite unstable and compatibility with " -#~ "other versions cannot be guaranteed." -#~ msgstr "" -#~ "Der Snow-Codec ist lizenzkostenfrei und quelloffen.\n" -#~ "Er nutzt innovative Techniken, die ihn zu einem der vielversprechendsten " -#~ "Video-Codecs machen. Er ist im Rahmen des ffmpeg-Projekts implementiert.\n" -#~ "Jedoch ist er noch in der Entwicklung, ziemlich instabil und die " -#~ "Kompatibilität mit anderen Versionen ist nicht gewährleistet." - -#~ msgid "A MJPEG encoder using ffmpeg library." -#~ msgstr "Ein MJPEG-Encoder, der die ffmpeg-Bibliothek verwendet" - -#~ msgid "A SDL-based video display" -#~ msgstr "Eine SDL-basierte Video-Anzeige" - -#~ msgid "A video4windows compatible source filter to stream pictures." -#~ msgstr "" -#~ "Ein zu video4windows kompatibler Quellfilter, um Bilder zu streamen." - -#~ msgid "A video for windows (vfw.h) based source filter to grab pictures." -#~ msgstr "" -#~ "Ein auf Video für Windows (vfw.h) basierender Quellfilter, um Bilder " -#~ "aufzuzeichnen." - -#~ msgid "" -#~ "A filter that trashes its input (useful for terminating some graphs)." -#~ msgstr "Ein Filter, der seine Eingabe vernichtet" - -#~ msgid "Parametric sound equalizer." -#~ msgstr "Parametrischer Sound-Equalizer" - -#~ msgid "A webcam grabber based on directshow." -#~ msgstr "Ein auf Directshow basierender Webcam-Grabber" - -#~ msgid "A video display based on windows DrawDib api" -#~ msgstr "Eine Video-Anzeige basierend auf der Windows DrawDib-API" - -#~ msgid "A filter that mixes down 16 bit sample audio streams" -#~ msgstr "Ein Filter, der 16-Bit-Sample Audio-Streams abmischt." - -#~ msgid "A filter that converts from mono to stereo and vice versa." -#~ msgstr "Ein Filter, der von Mono nach Stereo und umgekehrt konvertiert." - -#~ msgid "Inter ticker communication filter." -#~ msgstr "Filter für die Inter-Ticker-Kommunikation" - -#~ msgid "A display filter sending the buffers to draw to the upper layer" -#~ msgstr "" -#~ "Ein Anzeigefilter, der die Puffer sendet, um die oberste Schicht zu " -#~ "zeichnen" - -#~ msgid "Sound capture filter for MacOS X Audio Unit Service" -#~ msgstr "Sound-Aufnahmefilter für den Audio-Unit-Dienst auf MacOS X" - -#~ msgid "Sound playback filter for MacOS X Audio Unit Service" -#~ msgstr "Sound-Wiedergabefilter für den Audio-Unit-Dienst auf MacOS X" - -#~ msgid "A video display using X11+Xv" -#~ msgstr "Eine Video-Anzeige, die X11 und Xv verwendet" - -#~ msgid "Sound capture filter for Android" -#~ msgstr "Sound-Aufnahmefilter für Android" - -#~ msgid "Sound playback filter for Android" -#~ msgstr "Sound-Wiedergabefilter für Android" - -#~ msgid "A filter that captures Android video." -#~ msgstr "Ein Filter, der Android-Video aufzeichnet." - -#~ msgid "" -#~ "Your machine appears to be connected to an IPv6 network. By default " -#~ "linphone always uses IPv4. Please update your configuration if you want " -#~ "to use IPv6" -#~ msgstr "" -#~ "Ihr Rechner scheint an einen IPv6 Netz angeschlossen zu sein. " -#~ "Linphoneverwendet normalerweise IPv4. Bitte Konfiguration anpassen wenn " -#~ "sie IPv6 verwenden wollen" - -#, fuzzy -#~ msgid "_Modes" -#~ msgstr "Codecs" - -#~ msgid "Accept" -#~ msgstr "Annehmen" - -#, fuzzy -#~ msgid "Incoming call from" -#~ msgstr "Eingehendes Gespr�h" - -#, fuzzy -#~ msgid "Linphone - Incoming call" -#~ msgstr "Eingehendes Gespr�h" - -#, fuzzy -#~ msgid "" -#~ "Audio codecs\n" -#~ "Video codecs" -#~ msgstr "Audio und Video Codecs" - -#~ msgid "Sorry, having multiple simultaneous calls is not supported yet !" -#~ msgstr "Mehrfachen gleichzeitigen Anrufen nicht unterstützt !" - -#~ msgid "Could not reach destination." -#~ msgstr "Konnte Ziel nicht erreichen" - -#~ msgid "Request Cancelled." -#~ msgstr "Anruf annulliert." - -#~ msgid "Bad request" -#~ msgstr "Fehlerhafte Anfrage" - -#~ msgid "User cannot be found at given address." -#~ msgstr "Teilnehmer ist unter der angegebene Adresse nicht erreichbar." - -#~ msgid "Remote user cannot support any of proposed codecs." -#~ msgstr "Die Gegenstelle untersttzt die angebotenen Codecs nicht." - -#~ msgid "Timeout." -#~ msgstr "Zeitberschreitung." - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "Die Gegenstelle hat die Verbindung abgewiesen." - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you\n" -#~ "to contact him using the following alternate resource:" -#~ msgstr "" -#~ "Teilnehmer nicht erreichbar. Bitte versuchen Sie es unter nachstehender " -#~ "Ressource:" - -#~ msgid "No nat/firewall address supplied !" -#~ msgstr "Keine Nat/Firewall Adresse vorgegeben !" - -#~ msgid "Invalid nat address '%s' : %s" -#~ msgstr "Ungültige NAT Adresse '%s' : '%s'" - -#~ msgid "Gone" -#~ msgstr "Gegangen" - -#~ msgid "Waiting for Approval" -#~ msgstr "Warte aud Bestätigung" - -#~ msgid "Be Right Back" -#~ msgstr "Bald wieder da" - -#~ msgid "On The Phone" -#~ msgstr "Am Höhrer" - -#~ msgid "Out To Lunch" -#~ msgstr "Beim Essen" - -#, fuzzy -#~ msgid "_View" -#~ msgstr "Video" - -#, fuzzy -#~ msgid "Display filters" -#~ msgstr "Angezeigter Name:" - -#, fuzzy -#~ msgid "_Properties" -#~ msgstr "RTP-Eigenschaften" - -#, fuzzy -#~ msgid "Show logs" -#~ msgstr "Zeigt Gespräche" - -#, fuzzy -#~ msgid "_About" -#~ msgstr "Konto" - -#, fuzzy -#~ msgid "Proxy in use" -#~ msgstr "Benutze Proxy-Server:" - -#~ msgid "Sound" -#~ msgstr "Ton" - -#, fuzzy -#~ msgid "Proxy accounts" -#~ msgstr "Benutze Proxy-Server:" - -#~ msgid "Go" -#~ msgstr "Start" - -#~ msgid "Address book" -#~ msgstr "Adressbuch" - -#~ msgid "Exit" -#~ msgstr "Beenden" - -#~ msgid "Shows the address book" -#~ msgstr "Adressbuch" - -#~ msgid "..." -#~ msgstr "..." - -#~ msgid "" -#~ "Hangup\n" -#~ "or refuse" -#~ msgstr "" -#~ "Auflegen\n" -#~ "oder Abweisen" - -#~ msgid "Or chat !" -#~ msgstr "Oder Chat" - -#~ msgid "Show more..." -#~ msgstr "Mehr anzeigen" - -#~ msgid "Playback level:" -#~ msgstr "Abhörpegel" - -#~ msgid "Recording level:" -#~ msgstr "Aufnamepegel" - -#~ msgid "Ring level:" -#~ msgstr "Klingelpegel" - -#~ msgid "Controls" -#~ msgstr "Kontrolle" - -#~ msgid "Reachable" -#~ msgstr "Erreichbar" - -#~ msgid "Busy, I'll be back in " -#~ msgstr "Beschäftigt, wieder erreichbar in " - -#~ msgid "The other party will be informed that you'll be back in X minutes" -#~ msgstr "" -#~ "Der Teilnehmer wird informiert, dass Sie in X Minuten wieder anwesend " -#~ "sind." - -#~ msgid "mn" -#~ msgstr "mn" - -#~ msgid "Moved temporarily" -#~ msgstr "Unterwegs" - -#~ msgid "Alternative service" -#~ msgstr "Andere Dienste" - -#~ msgid "URL:" -#~ msgstr "URL:" - -#~ msgid "Presence" -#~ msgstr "Anwesenheit" - -#~ msgid "Press digits to send DTMFs." -#~ msgstr "Zifferntasten drücken, um DTMF zu senden" - -#~ msgid "DTMF" -#~ msgstr "DTMF" - -#~ msgid "My online friends" -#~ msgstr "Meine online Freunde" - -#~ msgid "" -#~ "C: 2001\n" -#~ "Made in Old Europe" -#~ msgstr "" -#~ "C: 2001\n" -#~ "In Alt Europa erzeugt" - -#~ msgid "" -#~ "Linphone is a web-phone.\n" -#~ "It is compatible with SIP and RTP protocols." -#~ msgstr "" -#~ "Linphone ist ein web-phone.\n" -#~ "Es ist mit den SIP- und RTP-Protokollen kompatibel." - -#~ msgid "Use IPv6 network (if available)" -#~ msgstr "IPv6 Netzwerk (falls vorhanden) verwenden" - -# msgstr "Teilnehmer zur Zeit nicht ansprechbar." -#~ msgid "" -#~ "Toggle this if you are on an ipv6 network and you wish linphone to use it." -#~ msgstr "" -#~ "Ankreuzen wenn Sie ein ipv6 Netz haben und wenn Sie es wünschen dass " -#~ "linphone es verwendet" - -#~ msgid "" -#~ "These options is only for users in a private network, behind a gateway. " -#~ "If you are not in this situation, then leave this empty." -#~ msgstr "" -#~ "Diese Option gilt nur für Anwender in einem privaten Netzwerk oder wenn " -#~ "der Rechner durch einen Firewall geschützt ist. Andernfalls wird das Feld " -#~ "nicht ausgefüllt" - -#~ msgid "No firewall" -#~ msgstr "Kein Firewall" - -#~ msgid "Use this STUN server to guess firewall address :" -#~ msgstr "Dieses STUN Server verwenden um die Firewalladresse zu Ermitteln" - -#~ msgid "Specify firewall address manually:" -#~ msgstr "Firewall Adresse von Hand angeben" - -#~ msgid "NAT traversal options (experimental)" -#~ msgstr "NAT-Transversaloptionen (experimentell)" - -#~ msgid "Number of buffered miliseconds (jitter compensation):" -#~ msgstr "Anzahl der gepufferten Pakete (Jitterausgleich):" - -#~ msgid "RTP port used for audio:" -#~ msgstr "Sound RTP Port:" - -#~ msgid "Use SIP INFO message instead of RTP rfc2833 for DTMF transmitting" -#~ msgstr "Benutze SIP INFO Nachricht statt RTP rfc2833 für DTMF Übertragung" - -#~ msgid "RTP-RFC2833 is the recommended way." -#~ msgstr "RTP-RFC2833 wird empfohlen" - -#~ msgid "Other" -#~ msgstr "Andere" - -#~ msgid "micro" -#~ msgstr "Mikrofon" - -#~ msgid "Enable echo-canceler (cancels the echo heard by the remote party)" -#~ msgstr "" -#~ "Echounterdrückung einschalten (eliminiert das von Gesprächspartnet " -#~ "gehörter Echo)" - -#~ msgid "Listen" -#~ msgstr "Anhören" - -#~ msgid "Run sip user agent on port:" -#~ msgstr "Sip \"user agent\" an Port:" - -#~ msgid "It is strongly recommended to use port 5060." -#~ msgstr "Wir empfehlen, Port 5060 zu verwenden" - -#~ msgid "@" -#~ msgstr "@" - -#~ msgid "Identity" -#~ msgstr "Identität" - -#~ msgid "Add proxy/registrar" -#~ msgstr "Proxy/Registrator hinzufügen" - -#~ msgid "Remote services" -#~ msgstr "Dienste auf entferntem Server" - -#~ msgid "Clear all stored authentication information (username,password...)" -#~ msgstr "" -#~ "Alle gespeicherten Authentifikationsinformationen löschen (Benutzername, " -#~ "Passwort,...)" - -#~ msgid "List of audio codecs, in order of preference:" -#~ msgstr "Liste von Audio-CoDecs in der Reihenfolge ihrer Präferenz" - -#~ msgid "" -#~ "Note: Codecs in red are not usable regarding to your connection type to " -#~ "the internet." -#~ msgstr "" -#~ "Notiz: Rot markierten Codecs können bei Ihrer Internetverbindungsart " -#~ "nicht verwendet werden." - -#~ msgid "No information availlable" -#~ msgstr "Informationen nicht verfügbar" - -#~ msgid "Codec information" -#~ msgstr "Codec Information" - -#~ msgid "Address Book" -#~ msgstr "Adressbuch" - -#~ msgid "Select" -#~ msgstr "Auswählen" - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you to contact him " -#~ "using the following alternate ressource:" -#~ msgstr "" -#~ "Teilnehmer nicht erreichbar. Bitte stattdessen nachstehende Ressource " -#~ "verwenden:" - -#~ msgid "None." -#~ msgstr "Nichts." - -#~ msgid "Send registration:" -#~ msgstr "Sende Registrierung:" - -#~ msgid "Name:" -#~ msgstr "Name:" - -#~ msgid "Subscribe policy:" -#~ msgstr "Subskription Police" - -#~ msgid "Send subscription (see person's online status)" -#~ msgstr "Sende Subskription (zeige Onlinestatus der Person an)" - -#~ msgid "New incoming subscription" -#~ msgstr "Neu ankommende Subskription" - -#~ msgid "You have received a new subscription..." -#~ msgstr "Sie haben eine neue Subskription empfangen" - -#~ msgid "Refuse" -#~ msgstr "Ablehnen" - -#~ msgid "Authentication required for realm" -#~ msgstr "Authentifikation erforderlich für Bereich" - -#~ msgid "userid:" -#~ msgstr "Benutzer ID:" - -#~ msgid "Text:" -#~ msgstr "Text" - -#~ msgid "The caller asks for resource reservation. Do you agree ?" -#~ msgstr "Der Anrufer erbittet Resourcenreservierung. Sind Sie einverstanden?" - -#~ msgid "" -#~ "The caller doesn't use resource reservation. \t\t\t\t\tDo you wish to " -#~ "continue anyway ?" -#~ msgstr "" -#~ "Der Anrufer benutzt keine Resourcenreservierung. \t\t\t\t\tWollen Sie " -#~ "dennoch fortfahren?" - -#~ msgid "linphone - receiving call from %s" -#~ msgstr "Linphone- empfängt ein Anruf von %s" - -#~ msgid "" -#~ "You have received a subscription from %s.This means that this person " -#~ "wishes to be notified of your presence information (online, busy, " -#~ "away...).\n" -#~ "Do you agree ?" -#~ msgstr "" -#~ "Sie haben eine Subskription von %s empfangen. Das heißt, dass diese " -#~ "Person ber Ihre Anwesenheitsinformation benachrichtigt werden will " -#~ "(erreichbar, beschäftig, abwesend...).\n" -#~ "Sind Sie einverstanden ?" - -#~ msgid "Authentication required for realm %s" -#~ msgstr "Authentifikation erforderlich für Bereich %s" - -#~ msgid "Wait" -#~ msgstr "Warten" - -#~ msgid "Deny" -#~ msgstr "Abweisen" - -#~ msgid "Bad sip address: a sip address looks like sip:user@domain" -#~ msgstr "" -#~ "Fehlerhafte Sip-Adresse. Eine Sip-Adresse hat folgenden Aufbau " - -#~ msgid "Stun lookup done..." -#~ msgstr "Stun Ermittlung beendet..." - -#~ msgid "enter sip uri here" -#~ msgstr "Sip URI eingeben" - -#~ msgid "User manual" -#~ msgstr "Anwender-Handbuch" - -#~ msgid "Ring sound selection" -#~ msgstr "Klingelton ausw�len" - -#~ msgid "Communication ended." -#~ msgstr "Kommunikation beendet." - -#, fuzzy -#~ msgid "Firewall 's external ip address (in dot notations):" -#~ msgstr "IP-Adresse des Firewall (in Punktnotation)" - -#~ msgid "28k modem" -#~ msgstr "28K Modem" - -#~ msgid "56k modem" -#~ msgstr "56K Modem" - -#~ msgid "64k modem (numeris)" -#~ msgstr "64K Modem (ISDN)" - -#~ msgid "ADSL or Cable modem" -#~ msgstr "ADSL oder Kabel-Modem" - -#~ msgid "Ethernet or equivalent" -#~ msgstr "Ethernet oder äquivalent" - -#~ msgid "Connection type:" -#~ msgstr "Verbindungstyp:" - -#, fuzzy -#~ msgid "" -#~ "Linphone could not open audio device %s. Check if your sound card is " -#~ "fully configured and working." -#~ msgstr "" -#~ "Linphone kann das Soundgerät nicht öffnen. Prfen Sie nach, ob die " -#~ "Soundkarte vollst�dig konfiguriert und funktionsfähig ist." - -#~ msgid "Type here the sip address of the person you want to call." -#~ msgstr "" -#~ "Geben Sie die Sip-Adresse des Anwenders, den Sie anrufen möchten, hier " -#~ "ein." - -#~ msgid "" -#~ "Release or\n" -#~ "Refuse" -#~ msgstr "" -#~ "Auflegen oder\n" -#~ "Abweisen" - -#~ msgid "%s. Retry after %i minute(s)." -#~ msgstr "%s. In %i Minuten wieder versuchen." - -#~ msgid "Timeout..." -#~ msgstr "Zeitüberschreitung..." - -#~ 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." - -#~ msgid "Address of record:" -#~ msgstr "Adresse des Eintrags:" - -#~ msgid "" -#~ "The password used for registration. On some servers it is not necessary" -#~ msgstr "" -#~ "Passwort für die Registrierung. Bei manchen Servern nicht erforderlich." - -#~ msgid "Use this registrar server as outbound proxy." -#~ msgstr "Verwenden Sie diesen Registrarserver als externen proxy." - -#~ msgid "sip address:" -#~ msgstr "SIP-Adresse:" - -#~ msgid "Modify" -#~ msgstr "Ändern" - -#~ msgid "" -#~ "You are currently using the i810_audio driver.\n" -#~ "This driver is buggy and so does not work with Linphone.\n" -#~ "We suggest that you replace it by its equivalent ALSA driver,\n" -#~ "either with packages from your distribution, or by downloading\n" -#~ "ALSA drivers at http://www.alsa-project.org." -#~ msgstr "" -#~ "Sie verwenden zur Zeit den i810_audio Treiber.\n" -#~ "Diese Treiber ist fehlerhaft und funktioniert nicht mit Linphone\n" -#~ "Wir empfehlen, den Treiber entweder durch das ALSA-Treiber-Paket von " -#~ "ihrer Distribution\n" -#~ "zu ersetzen oder die gewnschten ALSA-Treiber von http://www.alsa-project." -#~ "org\n" -#~ "zu beziehen und zu installieren" - -#~ msgid "Unregistration successfull." -#~ msgstr "Abmeldung erfolgreich." - -#~ msgid "Select network interface to use:" -#~ msgstr "Netzwerkschnittstelle wählen:" - -#~ msgid "Network interface properties" -#~ msgstr "Eigenschaften der Netzwerkschnittstelle" - -#~ msgid "RTP" -#~ msgstr "RTP" - -#~ msgid "C: 2001" -#~ msgstr "April 2001" - -#~ msgid "Threads not supported by glib. Upgrade your glib.\n" -#~ msgstr "" -#~ "Threads werden von glib nicht unterstützt. Bitte aktualisieren Sie Ihre " -#~ "glib.\n" - -#~ msgid "Run linphone as a gnome-applet." -#~ msgstr "Linphone als gnome-Applet ausfhren." - -#~ msgid "Run linphone as a daemon (for use without gnome)." -#~ msgstr "Linphone als daemon ausführen (Verwendung ohne Gnome)." - -#~ msgid "" -#~ "Cannot find network previously used interface %s.\n" -#~ "If your computer is temporary connected to the internet, please connect " -#~ "and then run linphone.\n" -#~ "If you want to change your default network interface, go to the " -#~ "parameters 'box." -#~ msgstr "" -#~ "Linphone konnte die zuvor verwendete Netzwerkschnittstelle %s nicht " -#~ "finden.\n" -#~ "Wenn linphone nur temporär am Internet angeschlossen ist, stellen Sie " -#~ "eine Verbindung her und rufen Sie linphone erneut auf.\n" -#~ "Wenn Sie die vorgegebene Netzwerkschnittstelle ändern wollen, wählen Sie " -#~ "bitte \"Einstellungen\"." - -#~ msgid "" -#~ "Linphone cannot open the audio device.\n" -#~ "It may be caused by other programs using it.\n" -#~ "Do you want linphone to kill these programs (esd or artsd) ?" -#~ msgstr "" -#~ "Linphone kann die Soundschnittstelle nicht öffnen.\n" -#~ "Dies kann durch andere Applikationen verursacht sein.\n" -#~ "Möchten sie diese Programme (esd oder artsd) beenden?" - -#~ msgid "Use it as a:" -#~ msgstr "Verwenden als:" - -#~ msgid "Outbound proxy" -#~ msgstr "Ausgehender Proxy-Server" - -#~ msgid "" -#~ "Toggle this button if the registrar must be used to proxy calls through a " -#~ "firewall." -#~ msgstr "" -#~ "Verwenden Sie diesen Knopf, falls der Registrar zum Tunneln durch einen " -#~ "Firewall verwendet werden muß" - -#~ msgid "kbit/s" -#~ msgstr "Kbits/s" - -#~ msgid "OSS" -#~ msgstr "OSS" - -#~ msgid "ALSA" -#~ msgstr "ALSA" - -#~ msgid "Automatically kill applications using soundcard when needed" -#~ msgstr "Applikationen die die Soundkarte verwenden, automatisch beenden." - -#~ msgid "" -#~ "Your computer is connected to several networks. Check in the global " -#~ "parameters if Linphone uses the one that you want." -#~ msgstr "" -#~ "Ihr Rechner ist an mehere Netze angeschlossen. Stellen Sie sicher, daß in " -#~ "den Globalen Parametern die richtige Schnittstelle selektiert ist." - -#~ msgid "" -#~ "Linphone failed to open the sound device. See the README file included in " -#~ "the distribution for details." -#~ msgstr "" -#~ "Linphone konnte die Soundschnittstelle nicht öffnen. Weitere " -#~ "Informationen finden Sie in der README-Datei (enthalten in der " -#~ "Distribution)." - -#~ msgid "Interface not found." -#~ msgstr "Schnittstelle nicht gefunden." - -#~ msgid "Warning" -#~ msgstr "Warnung" - -#~ msgid "" -#~ "Linphone cannot open the sound device. It may be caused by other programs " -#~ "using it. Do you want linphone to kill these programs (esd or artsd) ?" -#~ msgstr "" -#~ "Linphone kann die Soundschnittstelle nicht öffnen. Dies kann durch andere " -#~ "Applikationen verursacht sein. Möchten sie diese Programme (esd oder " -#~ "artsd) beenden?" - -#~ msgid "Linphone shutdowns..." -#~ msgstr "Linphone Ende..." - -#~ msgid "" -#~ "Please, wait a few seconds untils linphone unregisters your sip addess " -#~ "from registrar server..." -#~ msgstr "Bitte einige Sekunden warten, bis Sip-Adresse ausgetragen ist." - -#~ msgid "Bad formuled sip address." -#~ msgstr "SIP-Adresse fehlerhaft." - -#~ msgid "Couldn't create pixmap from file: %s" -#~ msgstr "Konnte Pixmap nicht aus Datei %s erzeugen." - -#~ msgid "" -#~ "Linphone did not detect any valid network interface. If you use a " -#~ "temporary internet connection, please connect and then run linphone again." -#~ msgstr "" -#~ "Linphone konnte keine Netzwerkschnittstelle finden. Wenn Sie nur eine " -#~ "temporäre Internetverbindung haben, bitte erneut eine Internetverbindung " -#~ "herstellen und linphone nochmals starten." - -#~ msgid "List of network interfaces on your system." -#~ msgstr "Vorhandene Netzwerkschnittstellen ihres Systems" diff --git a/po/es.po b/po/es.po index f58dac100..366c345de 100644 --- a/po/es.po +++ b/po/es.po @@ -1,19 +1,21 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# FIRST AUTHOR , YEAR. -# +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: Linphone 0.9.1\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2012-12-06 15:54+0100\n" -"Last-Translator: BERAUDO Guillaume \n" -"Language-Team: es \n" -"Language: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:17+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/linphone-gtk/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -26,28 +28,25 @@ msgid "Send text to %s" msgstr "Enviar mensaje a %s" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "En llamada " +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "n/a" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "abortada" +msgstr "" #: ../gtk/calllogs.c:320 -#, fuzzy msgid "Missed" -msgstr "perdida" +msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "Rechazar" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format @@ -64,29 +63,23 @@ msgstr[0] "%i segundo" msgstr[1] "%i segundos" #: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, fuzzy, c-format +#, c-format msgid "%s\t%s" msgstr "" -"%s\t%s\tCalidad: %s\n" -"%s\t%s %s\t" #: ../gtk/calllogs.c:337 -#, fuzzy, c-format +#, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" msgstr "" -"%s\t%s\tCalidad: %s\n" -"%s\t%s %s\t" #: ../gtk/calllogs.c:343 -#, fuzzy, c-format +#, c-format msgid "" "%s\t\n" "%s" msgstr "" -"%s\t%s\tCalidad: %s\n" -"%s\t%s %s\t" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -107,8 +100,7 @@ msgstr "¡Contacto SIP no válido!" #: ../gtk/main.c:107 msgid "log to stdout some debug information while running." -msgstr "" -"registra a stdout cierta información de depuración durante la ejecución." +msgstr "registra a stdout cierta información de depuración durante la ejecución." #: ../gtk/main.c:114 msgid "path to a file to write logs into." @@ -132,135 +124,110 @@ msgstr "si está activo, responder a llamadas entrantes automáticamente" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" -"Especifique un directorio de trabajo (debería ser la raíz de la instalación, " -"ej: c:\\Archivos de Programa\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +msgstr "Especifique un directorio de trabajo (debería ser la raíz de la instalación, ej: c:\\Archivos de Programa\\Linphone)" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Confirmación" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "Asistente de configuración de cuenta" +msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "Llamar con %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 desea añadirle a su lista de contactos.\n" -"¿Desea permitirle ver su estado de presencia o añadirle a su lista de " -"contactos?\n" -"Si responde no, esta persona será bloqueada temporalmente." +msgstr "%s desea añadirle a su lista de contactos.\n¿Desea permitirle ver su estado de presencia o añadirle a su lista de contactos?\nSi responde no, esta persona será bloqueada temporalmente." -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -"Por favor, introduzca la contraseña para el usuario %s\n" -" en el dominio %s:" -#: ../gtk/main.c:1376 -#, fuzzy +#: ../gtk/main.c:1283 msgid "Call error" -msgstr "Error en la llamada." +msgstr "" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 -#, fuzzy +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" -msgstr "Llamada terminada" +msgstr "" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Llamada entrante" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Contestar" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 -#, fuzzy +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" -msgstr "Rechazar" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy +#: ../gtk/main.c:1299 msgid "Call paused" -msgstr "Llamada en pausa" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "Puertos" +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "Enlace a la Web" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Linphone - un video-teléfono a través de Internet" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (Opción predeterminada)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "Somos transferidos a %s" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"No se ha encontrado una tarjeta de sonido en este equipo.\n" -"No será posible realizar o recibir llamadas de audio." +msgstr "No se ha encontrado una tarjeta de sonido en este equipo.\nNo será posible realizar o recibir llamadas de audio." -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "Un video-teléfono SIP gratuito" #: ../gtk/friendlist.c:505 -#, fuzzy msgid "Add to addressbook" -msgstr "Añadir a la agenda" +msgstr "" #: ../gtk/friendlist.c:691 -#, fuzzy msgid "Presence status" -msgstr "Estado de Presencia" +msgstr "" #: ../gtk/friendlist.c:709 ../gtk/propertybox.c:552 ../gtk/contact.ui.h:1 msgid "Name" msgstr "Nombre" #: ../gtk/friendlist.c:721 -#, fuzzy msgid "Call" -msgstr "Llamada" +msgstr "" #: ../gtk/friendlist.c:726 msgid "Chat" @@ -272,9 +239,9 @@ msgid "Search in %s directory" msgstr "Buscar en el directorio %s" #: ../gtk/friendlist.c:976 -#, fuzzy, c-format +#, c-format msgid "Edit contact '%s'" -msgstr "Editar contacto '%s'" +msgstr "" #: ../gtk/friendlist.c:977 #, c-format @@ -282,9 +249,9 @@ msgid "Delete contact '%s'" msgstr "Eliminar contacto '%s'" #: ../gtk/friendlist.c:978 -#, fuzzy, c-format +#, c-format msgid "Delete chat history of '%s'" -msgstr "Eliminar contacto '%s'" +msgstr "" #: ../gtk/friendlist.c:1029 #, c-format @@ -300,9 +267,8 @@ msgid "Status" msgstr "Estado" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Bitrate mínimo (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -320,109 +286,105 @@ msgstr "Desactivado" msgid "Account" msgstr "Cuenta" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "Inglés" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "Francés" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "Sueco" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "Italiano" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "Español" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "Portugués de Brasil" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "Polaco" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "Alemán" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "Ruso" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "Japonés" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "Holandés" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "Húngaro" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "Checo" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "Chino" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "Chino Tradicional" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "Noruego" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "Deberá reiniciar linphone para aplicar la nueva selección de lenguaje" -#: ../gtk/propertybox.c:1225 -#, fuzzy +#: ../gtk/propertybox.c:1234 msgid "None" -msgstr "Ninguno." +msgstr "" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "ZRTP" #: ../gtk/update.c:80 -#, fuzzy, c-format +#, c-format msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" msgstr "" -"Una nueva versión está disponible en %s.\n" -"¿Desea abrir el navegador para descargarla?" #: ../gtk/update.c:91 -#, fuzzy msgid "You are running the lastest version." -msgstr "La versión instalada es la última." +msgstr "" #: ../gtk/buddylookup.c:85 msgid "Firstname, Lastname" @@ -433,14 +395,12 @@ msgid "Error communicating with server." msgstr "Error al comunicar con el servidor." #: ../gtk/buddylookup.c:164 -#, fuzzy msgid "Connecting..." -msgstr "Conectando..." +msgstr "" #: ../gtk/buddylookup.c:168 -#, fuzzy msgid "Connected" -msgstr "Conectado" +msgstr "" #: ../gtk/buddylookup.c:172 msgid "Receiving data..." @@ -457,24 +417,19 @@ msgstr[1] "Se encontraron %i contactos" msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"¡Bienvenido/a !\n" -"Este asistente le ayudará a utilizar una cuenta SIP para sus llamadas." +msgstr "¡Bienvenido/a !\nEste asistente le ayudará a utilizar una cuenta SIP para sus llamadas." #: ../gtk/setupwizard.c:43 -#, fuzzy msgid "Create an account on linphone.org" -msgstr "Crear una cuenta eligiendo un nombre de usuario" +msgstr "" #: ../gtk/setupwizard.c:44 -#, fuzzy msgid "I have already a linphone.org account and I just want to use it" -msgstr "Ya tengo una cuenta y quiero utilizarla" +msgstr "" #: ../gtk/setupwizard.c:45 -#, fuzzy msgid "I have already a sip account and I just want to use it" -msgstr "Ya tengo una cuenta y quiero utilizarla" +msgstr "" #: ../gtk/setupwizard.c:46 msgid "I want to specify a remote configuration URI" @@ -485,28 +440,24 @@ msgid "Enter your linphone.org username" msgstr "" #: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 -#, fuzzy msgid "Username:" -msgstr "Nombre de usuario:" +msgstr "" #: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 -#, fuzzy msgid "Password:" -msgstr "Contraseña:" +msgstr "" #: ../gtk/setupwizard.c:124 msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "Nombre de usuario" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "Contraseña:" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -521,14 +472,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "Nombre de usuario:" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "Contraseña:" +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -554,15 +503,13 @@ msgstr "Gracias. Su cuenta está configurada y lista para su utilización." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "Asistente de configuración de cuenta" +msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -573,9 +520,8 @@ msgid "Account setup assistant" msgstr "Asistente de configuración de cuenta" #: ../gtk/setupwizard.c:629 -#, fuzzy msgid "Configure your account (step 1/1)" -msgstr "Configurar una cuenta SIP" +msgstr "" #: ../gtk/setupwizard.c:634 msgid "Enter your sip username (step 1/1)" @@ -598,9 +544,9 @@ msgid "Terminating" msgstr "" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, fuzzy, c-format +#, c-format msgid "Call #%i" -msgstr "Llamar a #%i" +msgstr "" #: ../gtk/incall_view.c:155 #, c-format @@ -608,18 +554,16 @@ msgid "Transfer to call #%i with %s" msgstr "Transferir a llamada #%i con %s" #: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 -#, fuzzy msgid "Not used" -msgstr "No encontrado" +msgstr "" #: ../gtk/incall_view.c:221 msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "La llamada ha fallado." +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -630,9 +574,8 @@ msgid "Going through one or more NATs" msgstr "" #: ../gtk/incall_view.c:229 -#, fuzzy msgid "Direct" -msgstr "Redigirida" +msgstr "" #: ../gtk/incall_view.c:231 msgid "Through a relay server" @@ -643,23 +586,20 @@ msgid "uPnP not activated" msgstr "" #: ../gtk/incall_view.c:241 -#, fuzzy msgid "uPnP in progress" -msgstr "Búsqueda STUN en proceso…" +msgstr "" #: ../gtk/incall_view.c:243 -#, fuzzy msgid "uPnp not available" -msgstr "no disponible" +msgstr "" #: ../gtk/incall_view.c:245 msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "La llamada ha fallado." +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -678,126 +618,118 @@ msgid "%ix%i @ %f fps" msgstr "" #: ../gtk/incall_view.c:304 -#, fuzzy, c-format +#, c-format msgid "%.3f seconds" -msgstr "%i segundo" +msgstr "" #: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 -#, fuzzy +#: ../gtk/incall_view.c:511 msgid "Calling..." -msgstr " Llamando..." +msgstr "" -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "00::00::00" -#: ../gtk/incall_view.c:515 -#, fuzzy +#: ../gtk/incall_view.c:525 msgid "Incoming call" -msgstr "Llamada entrante" +msgstr "" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "buena" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "media" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "mala" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "muy mala" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "demasiado mala" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "no disponible" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "Cifrada con SRTP" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Cifrada con ZRTP - [token de autenticación: %s]" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "Set sin verificar" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Set verificado" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "En conferencia" -#: ../gtk/incall_view.c:702 -#, fuzzy +#: ../gtk/incall_view.c:722 msgid "In call" -msgstr "En llamada " +msgstr "" -#: ../gtk/incall_view.c:738 -#, fuzzy +#: ../gtk/incall_view.c:758 msgid "Paused call" -msgstr "Llamada en pausa" +msgstr "" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "%02i::%02i::%02i" -#: ../gtk/incall_view.c:772 -#, fuzzy +#: ../gtk/incall_view.c:794 msgid "Call ended." -msgstr "Llamada finalizada." +msgstr "" -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 -#, fuzzy +#: ../gtk/incall_view.c:828 msgid "Transfer done." -msgstr "Transferir" +msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "Transferir" +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "Reanudar" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Pausar" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 -#, fuzzy +#: ../gtk/incall_view.c:948 msgid "(Paused)" -msgstr "Pausar" +msgstr "" #: ../gtk/loginframe.c:88 #, c-format @@ -831,32 +763,26 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"¡Bienvenido/a !\n" -"Este asistente le ayudará a utilizar una cuenta SIP para sus llamadas." #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Dispositivo de captura:" +msgstr "" #: ../gtk/audio_assistant.c:329 -#, fuzzy msgid "Recorded volume" -msgstr "Fuente de grabación:" +msgstr "" #: ../gtk/audio_assistant.c:333 msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Dispositivo de reproducción:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -875,14 +801,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "Asistente de configuración de cuenta" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "Asistente de configuración de cuenta" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -897,19 +821,16 @@ msgid "Record and Play" msgstr "" #: ../gtk/main.ui.h:1 -#, fuzzy msgid "Callee name" -msgstr "Nombre del destinatario" +msgstr "" #: ../gtk/main.ui.h:2 -#, fuzzy msgid "Send" -msgstr "Enviar" +msgstr "" #: ../gtk/main.ui.h:3 -#, fuzzy msgid "End conference" -msgstr "En conferencia" +msgstr "" #: ../gtk/main.ui.h:7 msgid "Record this call to an audio file" @@ -928,14 +849,12 @@ msgid "Transfer" msgstr "Transferir" #: ../gtk/main.ui.h:14 -#, fuzzy msgid "In call" -msgstr "En llamada " +msgstr "" #: ../gtk/main.ui.h:15 -#, fuzzy msgid "Duration" -msgstr "Duración" +msgstr "" #: ../gtk/main.ui.h:16 msgid "Call quality rating" @@ -946,9 +865,8 @@ msgid "All users" msgstr "Todos los usuarios" #: ../gtk/main.ui.h:18 -#, fuzzy msgid "Online users" -msgstr "Usuarios conectados" +msgstr "" #: ../gtk/main.ui.h:19 msgid "ADSL" @@ -959,36 +877,32 @@ msgid "Fiber Channel" msgstr "Canal de Fibra" #: ../gtk/main.ui.h:21 -#, fuzzy msgid "Default" -msgstr "Predeterminado" +msgstr "" #: ../gtk/main.ui.h:22 msgid "_Options" msgstr "_Opciones" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Confirmación" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" msgstr "" #: ../gtk/main.ui.h:25 -#, fuzzy msgid "Enable self-view" -msgstr "Activar vista propia" +msgstr "" #: ../gtk/main.ui.h:26 msgid "_Help" msgstr "_Ayuda" #: ../gtk/main.ui.h:27 -#, fuzzy msgid "Show debug window" -msgstr "Mostrar ventana de depuración" +msgstr "" #: ../gtk/main.ui.h:28 msgid "_Homepage" @@ -999,57 +913,48 @@ msgid "Check _Updates" msgstr "Buscar_Actualizaciones" #: ../gtk/main.ui.h:30 -#, fuzzy msgid "Account assistant" -msgstr "Asistente de configuración de cuenta" +msgstr "" #: ../gtk/main.ui.h:32 -#, fuzzy msgid "SIP address or phone number:" -msgstr "Dirección SIP o número de teléfono" +msgstr "" #: ../gtk/main.ui.h:33 msgid "Initiate a new call" msgstr "Iniciar nueva llamada" #: ../gtk/main.ui.h:34 -#, fuzzy msgid "Contacts" -msgstr "Contactos" +msgstr "" #: ../gtk/main.ui.h:35 msgid "Search" msgstr "Buscar" #: ../gtk/main.ui.h:36 -#, fuzzy msgid "Add contacts from directory" -msgstr "Añadir contactos desde un directorio" +msgstr "" #: ../gtk/main.ui.h:37 -#, fuzzy msgid "Add contact" -msgstr "Añadir contacto" +msgstr "" #: ../gtk/main.ui.h:38 -#, fuzzy msgid "Recent calls" -msgstr "Llamadas recientes " +msgstr "" #: ../gtk/main.ui.h:39 -#, fuzzy msgid "My current identity:" -msgstr "Mi identidad actual:" +msgstr "" #: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 -#, fuzzy msgid "Username" -msgstr "Nombre de usuario" +msgstr "" #: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 -#, fuzzy msgid "Password" -msgstr "Contraseña:" +msgstr "" #: ../gtk/main.ui.h:42 msgid "Internet connection:" @@ -1064,37 +969,30 @@ msgid "UserID" msgstr "UserID" #: ../gtk/main.ui.h:45 -#, fuzzy msgid "Login information" -msgstr "Datos de inicio de sesión" +msgstr "" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome !" -msgstr "¡Bienvenido/a!" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About linphone" -msgstr "Acerca de linphone" +msgstr "" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications,2010\n" -msgstr "(C) Belledonne Communications, 2010\n" +msgstr "" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "" -"Un vídeo-teléfono a través de Internet que usa el protocolo estándar SIP " -"(rfc3261)" +msgstr "Un vídeo-teléfono a través de Internet que usa el protocolo estándar SIP (rfc3261)" #: ../gtk/about.ui.h:5 -#, fuzzy msgid "" "fr: Simon Morlat\n" "en: Simon Morlat and Delphine Perreau\n" @@ -1109,22 +1007,10 @@ msgid "" "hu: anonymous\n" "he: Eli Zaretskii \n" msgstr "" -"fr: Simon Morlat\n" -"en: Simon Morlat and Delphine Perreau\n" -"it: Alberto Zanoni \n" -"de: Jean-Jacques Sarton \n" -"sv: Daniel Nylander \n" -"es: Jesus Benitez \n" -"ja: YAMAGUCHI YOSHIYA \n" -"pt_BR: Rafael Caesar Lenzi \n" -"pl: Robert Nasiadek \n" -"cs: Petr Pisar \n" -"hu: anonymous\n" #: ../gtk/contact.ui.h:2 -#, fuzzy msgid "SIP Address" -msgstr "Dirección SIP" +msgstr "" #: ../gtk/contact.ui.h:3 msgid "Show this contact presence status" @@ -1135,23 +1021,20 @@ msgid "Allow this contact to see my presence status" msgstr "Permitir que este contacto vea mi estado de presencia" #: ../gtk/contact.ui.h:5 -#, fuzzy msgid "Contact information" -msgstr "Información de contacto" +msgstr "" #: ../gtk/log.ui.h:1 -#, fuzzy msgid "Linphone debug window" -msgstr "Ventana de depuración de linphone" +msgstr "" #: ../gtk/log.ui.h:2 msgid "Scroll to end" msgstr "" #: ../gtk/password.ui.h:1 -#, fuzzy msgid "Linphone - Authentication required" -msgstr "Linphone - Autenticación necesaria" +msgstr "" #: ../gtk/password.ui.h:2 msgid "Please enter the domain password" @@ -1174,9 +1057,8 @@ msgid "Linphone - Configure a SIP account" msgstr "Linphone - Configurar una cuenta SIP" #: ../gtk/sip_account.ui.h:2 -#, fuzzy msgid "Your SIP identity:" -msgstr "Su identidad SIP" +msgstr "" #: ../gtk/sip_account.ui.h:3 msgid "Looks like sip:@" @@ -1187,23 +1069,20 @@ msgid "sip:" msgstr "sip:" #: ../gtk/sip_account.ui.h:5 -#, fuzzy msgid "SIP Proxy address:" -msgstr "Dirección del SIP Proxy" +msgstr "" #: ../gtk/sip_account.ui.h:6 msgid "Looks like sip:" msgstr "Del tipo sip:" #: ../gtk/sip_account.ui.h:7 -#, fuzzy msgid "Registration duration (sec):" -msgstr "Duración del registro (seg):" +msgstr "" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "Ruta (opcional):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1214,23 +1093,20 @@ msgid "Route (optional):" msgstr "Ruta (opcional):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Transporte " +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" msgstr "Registrarse" #: ../gtk/sip_account.ui.h:13 -#, fuzzy msgid "Publish presence information" -msgstr "Publicar información de presencia" +msgstr "" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Activar" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1265,14 +1141,12 @@ msgid "CIF" msgstr "CIF" #: ../gtk/parameters.ui.h:8 -#, fuzzy msgid "Audio codecs" -msgstr "Códecs de Audio" +msgstr "" #: ../gtk/parameters.ui.h:9 -#, fuzzy msgid "Video codecs" -msgstr "Códecs de Vídeo" +msgstr "" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" @@ -1307,9 +1181,8 @@ msgid "Use IPv6 instead of IPv4" msgstr "Utilizar IPv6 en lugar de IPv4" #: ../gtk/parameters.ui.h:18 -#, fuzzy msgid "Transport" -msgstr "Transporte " +msgstr "" #: ../gtk/parameters.ui.h:19 msgid "Media encryption type" @@ -1328,9 +1201,8 @@ msgid "Fixed" msgstr "" #: ../gtk/parameters.ui.h:23 -#, fuzzy msgid "Media encryption is mandatory" -msgstr "Tipo de cifrado de medios" +msgstr "" #: ../gtk/parameters.ui.h:24 msgid "Tunnel" @@ -1341,14 +1213,12 @@ msgid "DSCP fields" msgstr "" #: ../gtk/parameters.ui.h:26 -#, fuzzy msgid "SIP/TCP port" -msgstr "Puerto SIP" +msgstr "" #: ../gtk/parameters.ui.h:27 -#, fuzzy msgid "SIP/UDP port" -msgstr "Puerto SIP" +msgstr "" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1359,95 +1229,80 @@ msgid "Direct connection to the Internet" msgstr "Conexión directa a Internet" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "Tras un NAT/Firewall (especificar la IP de la puerta de enlace debajo)" +msgstr "" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" msgstr "Tras un NAT/Firewall (utilizar STUN para resolver)" #: ../gtk/parameters.ui.h:32 -#, fuzzy msgid "Behind NAT / Firewall (use ICE)" -msgstr "Tras un NAT/Firewall (utilizar STUN para resolver)" +msgstr "" #: ../gtk/parameters.ui.h:33 -#, fuzzy msgid "Behind NAT / Firewall (use uPnP)" -msgstr "Tras un NAT/Firewall (utilizar STUN para resolver)" +msgstr "" #: ../gtk/parameters.ui.h:34 -#, fuzzy msgid "Public IP address:" -msgstr "Dirección IP pública:" +msgstr "" #: ../gtk/parameters.ui.h:35 -#, fuzzy msgid "Stun server:" -msgstr "Servidor STUN" +msgstr "" #: ../gtk/parameters.ui.h:36 -#, fuzzy msgid "NAT and Firewall" -msgstr "NAT y Firewall" +msgstr "" #: ../gtk/parameters.ui.h:37 -#, fuzzy msgid "Network settings" -msgstr "Configuración de red" +msgstr "" #: ../gtk/parameters.ui.h:38 -#, fuzzy msgid "Ring sound:" -msgstr "Tono de llamada:" +msgstr "" #: ../gtk/parameters.ui.h:39 msgid "ALSA special device (optional):" msgstr "Dispositivo especial ALSA (opcional):" #: ../gtk/parameters.ui.h:40 -#, fuzzy msgid "Capture device:" -msgstr "Dispositivo de captura:" +msgstr "" #: ../gtk/parameters.ui.h:41 -#, fuzzy msgid "Ring device:" -msgstr "Dispositivo de sonido:" +msgstr "" #: ../gtk/parameters.ui.h:42 -#, fuzzy msgid "Playback device:" -msgstr "Dispositivo de reproducción:" +msgstr "" #: ../gtk/parameters.ui.h:43 msgid "Enable echo cancellation" msgstr "Activar cancelación de eco" #: ../gtk/parameters.ui.h:44 -#, fuzzy msgid "Audio" -msgstr "Audio" +msgstr "" #: ../gtk/parameters.ui.h:45 -#, fuzzy msgid "Video input device:" -msgstr "Dispositivo de entrada de vídeo:" +msgstr "" #: ../gtk/parameters.ui.h:46 msgid "Prefered video resolution:" msgstr "Resolución de vídeo preferida:" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Dispositivo de entrada de vídeo:" +msgstr "" #: ../gtk/parameters.ui.h:48 -#, fuzzy msgid "Video" -msgstr "Vídeo " +msgstr "" #: ../gtk/parameters.ui.h:49 msgid "Multimedia settings" @@ -1462,19 +1317,16 @@ msgid "Your display name (eg: John Doe):" msgstr "Su nombre a mostrar (x ej: Pepito Pérez):" #: ../gtk/parameters.ui.h:52 -#, fuzzy msgid "Your username:" -msgstr "Su nombre de usuario:" +msgstr "" #: ../gtk/parameters.ui.h:53 -#, fuzzy msgid "Your resulting SIP address:" -msgstr "Su dirección SIP resultante:" +msgstr "" #: ../gtk/parameters.ui.h:54 -#, fuzzy msgid "Default identity" -msgstr "Identidad predeterminada" +msgstr "" #: ../gtk/parameters.ui.h:55 msgid "Wizard" @@ -1493,18 +1345,16 @@ msgid "Remove" msgstr "Eliminar" #: ../gtk/parameters.ui.h:59 -#, fuzzy msgid "Proxy accounts" -msgstr "Cuentas Proxy" +msgstr "" #: ../gtk/parameters.ui.h:60 msgid "Erase all passwords" msgstr "Borrar todas las contraseñas" #: ../gtk/parameters.ui.h:61 -#, fuzzy msgid "Privacy" -msgstr "Privacidad" +msgstr "" #: ../gtk/parameters.ui.h:62 msgid "Manage SIP Accounts" @@ -1519,9 +1369,8 @@ msgid "Disable" msgstr "Desactivar" #: ../gtk/parameters.ui.h:65 -#, fuzzy msgid "Codecs" -msgstr "Códecs" +msgstr "" #: ../gtk/parameters.ui.h:66 msgid "0 stands for \"unlimited\"" @@ -1543,107 +1392,91 @@ msgstr "Activar control de frecuencia adaptativo" msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "" -"Control de frecuencia adaptativo es una técnica que estima dinámicamente " -"el ancho de banda disponible durante la llamada." +msgstr "Control de frecuencia adaptativo es una técnica que estima dinámicamente el ancho de banda disponible durante la llamada." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" msgstr "Control de ancho de banda" #: ../gtk/parameters.ui.h:72 -#, fuzzy msgid "Codecs" -msgstr "Códecs" +msgstr "" #: ../gtk/parameters.ui.h:73 -#, fuzzy msgid "Language" -msgstr "Idioma" +msgstr "" #: ../gtk/parameters.ui.h:74 msgid "Show advanced settings" msgstr "Mostrar opciones avanzadas" #: ../gtk/parameters.ui.h:75 -#, fuzzy msgid "Level" -msgstr "Nivel" +msgstr "" #: ../gtk/parameters.ui.h:76 -#, fuzzy msgid "User interface" -msgstr "Interfaz de Usuario" +msgstr "" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "Dirección del Servidor:" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Error de autenticación" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "etiqueta" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Cuentas Proxy" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" msgstr "" #: ../gtk/parameters.ui.h:83 -#, fuzzy msgid "Done" -msgstr "Hecho" +msgstr "" #: ../gtk/buddylookup.ui.h:1 -#, fuzzy msgid "Search contacts in directory" -msgstr "Buscar contactos en directorio" +msgstr "" #: ../gtk/buddylookup.ui.h:2 msgid "Add to my list" msgstr "Añadir a mi lista" #: ../gtk/buddylookup.ui.h:3 -#, fuzzy msgid "Search somebody" -msgstr "Buscar a alguien" +msgstr "" #: ../gtk/waiting.ui.h:1 -#, fuzzy msgid "Linphone" -msgstr "Linphone" +msgstr "" #: ../gtk/waiting.ui.h:2 msgid "Please wait" msgstr "Espere por favor" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "Configuración" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" msgstr "SIP" #: ../gtk/dscp_settings.ui.h:3 -#, fuzzy msgid "Audio RTP stream" -msgstr "Audio RTP/UDP:" +msgstr "" #: ../gtk/dscp_settings.ui.h:4 -#, fuzzy msgid "Video RTP stream" -msgstr "Vídeo RTP/UDP" +msgstr "" #: ../gtk/dscp_settings.ui.h:5 msgid "Set DSCP values (in hexadecimal)" @@ -1654,14 +1487,12 @@ msgid "Call statistics" msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" -msgstr "Códecs de Audio" +msgstr "" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" -msgstr "Códecs de Vídeo" +msgstr "" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1680,32 +1511,28 @@ msgid "Video Media connectivity" msgstr "" #: ../gtk/call_statistics.ui.h:8 -#, fuzzy msgid "Round trip time" -msgstr "Propiedades de sonido" +msgstr "" #: ../gtk/call_statistics.ui.h:9 msgid "Video resolution received" msgstr "" #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "Resolución de vídeo preferida:" +msgstr "" #: ../gtk/call_statistics.ui.h:11 msgid "RTP profile" msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "Información de contacto" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 -#, fuzzy msgid "Configure VoIP tunnel" -msgstr "Configurar una cuenta SIP" +msgstr "" #: ../gtk/tunnel_config.ui.h:2 msgid "Host" @@ -1784,23 +1611,20 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Configuración" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" msgstr "" #: ../gtk/ldap.ui.h:7 -#, fuzzy msgid "Not yet available" -msgstr "no disponible" +msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Códecs" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1815,9 +1639,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Audio" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1833,18 +1656,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "Dirección SIP" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Buscar a alguien" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1859,9 +1680,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Vídeo " +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1885,11 +1705,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1897,93 +1714,85 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "Conectando..." +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 -#, fuzzy +#: ../coreapi/linphonecore.c:1511 msgid "Ready" -msgstr "Preparado" +msgstr "" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Confirmación" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Buscando el número de teléfono del destinatario…" -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "No se ha podido resolver este número." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 -#, fuzzy +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" -msgstr "Contactando" +msgstr "" -#: ../coreapi/linphonecore.c:2425 -#, fuzzy +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" -msgstr "No se pudo llamar" +msgstr "" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Disculpe, se ha alcanzado el máximo número de llamadas simultáneas" -#: ../coreapi/linphonecore.c:2745 -#, fuzzy +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" -msgstr "le está llamando" +msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "y ha solicitado auto respuesta." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "." -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "Modificando parámetros de llamada…" -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Conectado." -#: ../coreapi/linphonecore.c:3220 -#, fuzzy +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" -msgstr "Llamada abortada" +msgstr "" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "No se pudo pausar la llamada" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "Pausando la llamada actual..." -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "Búsqueda STUN en proceso…" -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" #: ../coreapi/friend.c:33 -#, fuzzy msgid "Online" -msgstr "Conectado" +msgstr "" #: ../coreapi/friend.c:36 msgid "Busy" @@ -1998,9 +1807,8 @@ msgid "Away" msgstr "Ausente" #: ../coreapi/friend.c:45 -#, fuzzy msgid "On the phone" -msgstr "Al teléfono" +msgstr "" #: ../coreapi/friend.c:48 msgid "Out to lunch" @@ -2011,776 +1819,163 @@ msgid "Do not disturb" msgstr "No molestar" #: ../coreapi/friend.c:54 -#, fuzzy msgid "Moved" -msgstr "Fuera" +msgstr "" #: ../coreapi/friend.c:57 msgid "Using another messaging service" msgstr "Utilizando otro servicio de mensajería" #: ../coreapi/friend.c:60 -#, fuzzy msgid "Offline" -msgstr "Desconectado" +msgstr "" #: ../coreapi/friend.c:63 msgid "Pending" msgstr "Pendiente" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Duración" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "Bug-desconocido" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"La dirección del Proxy SIP que ha introducido no es válida, debe empezar con " -"\"sip:\" seguido del hostname." +msgstr "La dirección del Proxy SIP que ha introducido no es válida, debe empezar con \"sip:\" seguido del hostname." -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"La identidad SIP que ha introducido no es válida.\n" -"Debe ser del tipo sip:username@proxydomain, como por ejemplo sip:" -"alice@example.net" +msgstr "La identidad SIP que ha introducido no es válida.\nDebe ser del tipo sip:username@proxydomain, como por ejemplo sip:alice@example.net" -#: ../coreapi/proxy.c:1369 -#, fuzzy, c-format +#: ../coreapi/proxy.c:1377 +#, c-format msgid "Could not login as %s" -msgstr "No se pudo iniciar sesión como %s" +msgstr "" -#: ../coreapi/callbacks.c:355 -#, fuzzy +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." -msgstr "El destinatario está sonando..." +msgstr "" -#: ../coreapi/callbacks.c:373 -#, fuzzy +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." -msgstr "El destinatario está sonando..." +msgstr "" -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "Medios iniciales." -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "La llamada con %s está puesta en pausa." -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "Llamada respondida por %s - en espera." -#: ../coreapi/callbacks.c:459 -#, fuzzy +#: ../coreapi/callbacks.c:498 msgid "Call resumed." -msgstr "Llamada reanudada." +msgstr "" -#: ../coreapi/callbacks.c:464 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:502 +#, c-format msgid "Call answered by %s." -msgstr "Llamada respondida por %s." +msgstr "" -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 -#, fuzzy -msgid "We have been resumed." -msgstr "Nos han reanudado..." +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" -#: ../coreapi/callbacks.c:521 +#: ../coreapi/callbacks.c:560 +msgid "We have been resumed." +msgstr "" + +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 -#, fuzzy +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." -msgstr "La llamada ha sido actualizada por el destinatario..." +msgstr "" -#: ../coreapi/callbacks.c:658 -#, fuzzy +#: ../coreapi/callbacks.c:705 msgid "Call terminated." -msgstr "Llamada finalizada." +msgstr "" -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "El usuario está ocupado." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "El usuario no está disponible temporalmente." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "El usuario no quiere que le molesten." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Llamada rechazada." -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "Redigirida" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." +#: ../coreapi/callbacks.c:835 +msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:798 -#, fuzzy -msgid "Call failed." -msgstr "La llamada ha fallado." - -#: ../coreapi/callbacks.c:878 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:913 +#, c-format msgid "Registration on %s successful." -msgstr "Se ha registrado con éxito en %s." +msgstr "" -#: ../coreapi/callbacks.c:879 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:914 +#, c-format msgid "Unregistration on %s done." -msgstr "Cancelación de registro en %s completada." +msgstr "" -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "timeout sin respuesta" -#: ../coreapi/callbacks.c:900 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:935 +#, c-format msgid "Registration on %s failed: %s" -msgstr "El registro en %s ha fallado." +msgstr "" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:174 +#, c-format msgid "Authentication token is %s" -msgstr "El tóken de autenticación es%s" +msgstr "" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "Tiene %i llamada perdida." msgstr[1] "Tiene %i llamadas perdidas." - -#~ msgid "aborted" -#~ msgstr "abortada" - -#~ msgid "completed" -#~ msgstr "completada" - -#~ msgid "missed" -#~ msgstr "perdida" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s en %s\n" -#~ "De: %s\n" -#~ "Para: %s\n" -#~ "Estado: %s\n" -#~ "Duración: %i min %i seg\n" - -#~ msgid "Outgoing call" -#~ msgstr "Llamada saliente" - -#~ msgid "No response." -#~ msgstr "No hay respuesta." - -#~ msgid "Protocol error." -#~ msgstr "Error de protocolo." - -#, fuzzy -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "Dirección SIP mal escrita. Una dirección SIP es del tipo " - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Tu ordenador parece estar usando los controladores de sonido de ALSA.\n" -#~ "Ésta es la mejor elección. Sin embargo, el módulo de emulación pcm de " -#~ "OSS\n" -#~ "no se encuentra y linphone lo necesita. Por favor ejecute\n" -#~ "'modprobe snd-pcm-oss' como root para cargarlo." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Tu ordenador parece estar usando los controladores de sonido de ALSA.\n" -#~ "Ésta es la mejor elección. Sin embargo, el módulo de emulación mixer de " -#~ "OSS\n" -#~ "no se encuentra y linphone lo necesita. Por favor ejecute\n" -#~ " 'modprobe snd-mixer-oss' como root para cargarlo." - -#~ msgid "Chat with %s" -#~ msgstr "Conversación con %s" - -#~ msgid "by %s" -#~ msgstr "por %s" - -#~ msgid "Please choose a username:" -#~ msgstr "Por favor, elija un nombre de usuario" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "Comprobando si '%s' está disponible..." - -#~ msgid "Please wait..." -#~ msgstr "Espere por favor..." - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "" -#~ "El nombre de usuario elegido ya existe. Por favor, intente con uno nuevo." - -#~ msgid "Ok !" -#~ msgstr "¡Ok!" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "" -#~ "Error en la comunicación, por favor inténtelo de nuevo más adelante." - -#~ msgid "Choosing a username" -#~ msgstr "Eligiendo un nombre de usuario" - -#~ msgid "Verifying" -#~ msgstr "Verificando" - -#~ msgid "Creating your account" -#~ msgstr "Creando su cuenta" - -#~ msgid "Now ready !" -#~ msgstr "¡Ya está listo!" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "Activar vídeo" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "Introducir nombre de usuario, teléfono o dirección SIP" - -#~ msgid "Keypad" -#~ msgstr "Teclado Numérico" - -#~ msgid "Lookup:" -#~ msgstr "Búsqueda:" - -#~ msgid "in" -#~ msgstr "en" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "¡Registrar en la red\n" -#~ "virtual FONICS!" - -#~ msgid "We are being paused..." -#~ msgstr "Nos están poniendo en pausa..." - -#~ msgid "No common codecs" -#~ msgstr "No hay códecs comunes" - -#, fuzzy -#~ msgid "Contact list" -#~ msgstr "Lista de contactos " - -#, fuzzy -#~ msgid "Audio & video" -#~ msgstr "Audio & Vídeo" - -#, fuzzy -#~ msgid "Audio only" -#~ msgstr "Sólo audio" - -#, fuzzy -#~ msgid "Duration:" -#~ msgstr "Duración:" - -#, fuzzy -#~ msgid "_Linphone" -#~ msgstr "_Linphone" - -#, fuzzy -#~ msgid "gtk-cancel" -#~ msgstr "gtk-cancelar" - -#, fuzzy -#~ msgid "gtk-ok" -#~ msgstr "gtk-ok" - -#, fuzzy -#~ msgid "gtk-close" -#~ msgstr "gtk-cerrar." - -#, fuzzy -#~ msgid "_Modes" -#~ msgstr "_Modos" - -#, fuzzy -#~ msgid "" -#~ "Audio codecs\n" -#~ "Video codecs" -#~ msgstr "" -#~ "Códecs de audio\n" -#~ "Códecs de vídeo" - -#, fuzzy -#~ msgid "Request Cancelled." -#~ msgstr "Petición cancelada." - -#~ msgid "User cannot be found at given address." -#~ msgstr "No se encontró ningún usuario en la dirección indicada." - -#~ msgid "Remote user cannot support any of proposed codecs." -#~ msgstr "El usuario remoto no soporta ninguno de los códecs propuestos." - -#~ msgid "Timeout." -#~ msgstr "Tiempo agotado." - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "Se encontró el host remoto pero rechazó la conexión." - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you\n" -#~ "to contact him using the following alternate resource:" -#~ msgstr "" -#~ "El usuario no está disponible en este momento pero le invita\n" -#~ "a contactarle usando el siguiente recurso alternativo:" - -#, fuzzy -#~ msgid "Gone" -#~ msgstr "Ausente" - -#, fuzzy -#~ msgid "Display filters" -#~ msgstr "Filtros a mostrar" - -#, fuzzy -#~ msgid "_Properties" -#~ msgstr "_Propiedades" - -#, fuzzy -#~ msgid "Proxy in use" -#~ msgstr "Proxy en uso" - -#~ msgid "Sound" -#~ msgstr "Sonido" - -#, fuzzy -#~ msgid "Proxy accounts" -#~ msgstr "Cuentas Proxy" - -#~ msgid "Address book" -#~ msgstr "Agenda" - -#, fuzzy -#~ msgid "Shows the address book" -#~ msgstr "Muestra la agenda" - -#~ msgid "Show more..." -#~ msgstr "Mostrar más..." - -#~ msgid "Playback level:" -#~ msgstr "Nivel de reproducción:" - -#~ msgid "Recording level:" -#~ msgstr "Nivel de Grabación:" - -#, fuzzy -#~ msgid "Ring level:" -#~ msgstr "Nivel de tono de llamada:" - -#~ msgid "Reachable" -#~ msgstr "Disponible" - -#~ msgid "Busy, I'll be back in " -#~ msgstr "Ocupado, estaré de vuelta en " - -#~ msgid "The other party will be informed that you'll be back in X minutes" -#~ msgstr "" -#~ "Se le comunicará a la otra persona que estará de vuelta en X minutos" - -#~ msgid "mn" -#~ msgstr "min" - -#~ msgid "Moved temporarily" -#~ msgstr "Vengo enseguida" - -#~ msgid "Alternative service" -#~ msgstr "Servicio alternativo" - -#~ msgid "URL:" -#~ msgstr "URL:" - -#~ msgid "Presence" -#~ msgstr "Presencia" - -#~ msgid "Press digits to send DTMFs." -#~ msgstr "Pulsa los dígitos para mandar DTMFs." - -#~ msgid "DTMF" -#~ msgstr "DTMF" - -#~ msgid "" -#~ "Linphone is a web-phone.\n" -#~ "It is compatible with SIP and RTP protocols." -#~ msgstr "" -#~ "Linphone es un teléfono web.\n" -#~ "Es compatible con los protocolos SIP y RTP." - -#, fuzzy -#~ msgid "Use IPv6 network (if available)" -#~ msgstr "Utilizar red IPv6 (si está disponible)" - -#, fuzzy -#~ msgid "" -#~ "These options is only for users in a private network, behind a gateway. " -#~ "If you are not in this situation, then leave this empty." -#~ msgstr "" -#~ "Esta opción es sólo para usuarios de una red privada, tras una puerta de " -#~ "enlace.Si no es su caso, deje esto vacío." - -#, fuzzy -#~ msgid "NAT traversal options (experimental)" -#~ msgstr "Opciones para NAT transversal (experimental)" - -#, fuzzy -#~ msgid "Number of buffered miliseconds (jitter compensation):" -#~ msgstr "Número de milisegundos en el buffer (compensación jitter):" - -#~ msgid "RTP port used for audio:" -#~ msgstr "Puerto RTP usado para audio:" - -#~ msgid "micro" -#~ msgstr "micrófono" - -#~ msgid "Run sip user agent on port:" -#~ msgstr "Ejecutar el agente de usuario SIP en el puerto:" - -#~ msgid "It is strongly recommended to use port 5060." -#~ msgstr "Se recomienda encarecidamente usar el puerto 5060." - -#~ msgid "@" -#~ msgstr "@" - -#~ msgid "Identity" -#~ msgstr "Identidad" - -#, fuzzy -#~ msgid "Add proxy/registrar" -#~ msgstr "Añadir proxy/registrador" - -#~ msgid "Remote services" -#~ msgstr "Servicios remotos" - -#~ msgid "List of audio codecs, in order of preference:" -#~ msgstr "Lista de códecs de audio, en orden de preferencia:" - -#~ msgid "" -#~ "Note: Codecs in red are not usable according to your connection type to " -#~ "the internet." -#~ msgstr "" -#~ "Nota: Los códecs en ROJO no son adecuados para su conexión a Internet." - -#, fuzzy -#~ msgid "No information available" -#~ msgstr "Información no disponible" - -#, fuzzy -#~ msgid "Codec information" -#~ msgstr "Información de códec" - -#~ msgid "Address Book" -#~ msgstr "Agenda" - -#~ msgid "Select" -#~ msgstr "Seleccionar" - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you to contact him " -#~ "using the following alternate resource:" -#~ msgstr "" -#~ "El usuario no está disponible en este momento pero le invita a " -#~ "contactarle usando el siguiente recurso alternativo:" - -#~ msgid "None." -#~ msgstr "Ninguno." - -#, fuzzy -#~ msgid "Name:" -#~ msgstr "Nombre:" - -#, fuzzy -#~ msgid "Bad sip address: a sip address looks like sip:user@domain" -#~ msgstr "" -#~ "Dirección SIP mal escrita. Una dirección SIP es del tipo " - -#~ msgid "Communication ended." -#~ msgstr "Comunicación finalizada." - -#, fuzzy -#~ msgid "Firewall 's external ip address (in dot notations):" -#~ msgstr "Dirección IP del cortafuegos (en notación con puntos):" - -#~ msgid "Index" -#~ msgstr "Índice" - -#~ msgid "28k modem" -#~ msgstr "módem 28k" - -#~ msgid "56k modem" -#~ msgstr "módem 56k" - -#~ msgid "64k modem (numeris)" -#~ msgstr "módem 64k (numeris)" - -#~ msgid "ADSL or Cable modem" -#~ msgstr "ADSL o Cable" - -#~ msgid "Ethernet or equivalent" -#~ msgstr "Ethernet o equivalente" - -#~ msgid "Connection type:" -#~ msgstr "Tipo de conexión:" - -#, fuzzy -#~ msgid "" -#~ "Linphone could not open audio device %s. Check if your sound card is " -#~ "fully configured and working." -#~ msgstr "" -#~ "Linphone no pudo abrir el dispositivo de audio %s. Compruebe que su " -#~ "tarjeta de sonido está completamente configurada y operativa." - -#~ msgid "Type here the sip address of the person you want to call." -#~ msgstr "Escriba aquí la dirección SIP del destinatario." - -#~ msgid "" -#~ "Release or\n" -#~ "Refuse" -#~ msgstr "" -#~ "Descolgar o\n" -#~ "Rechazar" - -#~ msgid "%s. Retry after %i minute(s)." -#~ msgstr "%s. Reintentar tras %i minutos." - -#, fuzzy -#~ msgid "Timeout..." -#~ msgstr "Tiempo agotado..." - -#~ msgid "Toggle this if you want to be registered on a remote server." -#~ msgstr "Marque esta opción si desea registrarse en un servidor remoto." - -#~ msgid "Address of record:" -#~ msgstr "Dirección de registro:" - -#~ msgid "" -#~ "The password used for registration. On some servers it is not necessary" -#~ msgstr "" -#~ "La contraseña usada para registrarse. En algunos servidores no es " -#~ "necesaria" - -#~ msgid "Use this registrar server as outbound proxy." -#~ msgstr "Usar este servidor de registro como proxy de salida." - -#~ msgid "sip address:" -#~ msgstr "Dirección SIP:" - -#~ msgid "Modify" -#~ msgstr "Modificar" - -#~ msgid "" -#~ "You are currently using the i810_audio driver.\n" -#~ "This driver is buggy and so does not work with Linphone.\n" -#~ "We suggest that you replace it by its equivalent ALSA driver,\n" -#~ "either with packages from your distribution, or by downloading\n" -#~ "ALSA drivers at http://www.alsa-project.org." -#~ msgstr "" -#~ "Está usando actualmente el controlador i810_audio.\n" -#~ "Este controlador tiene errores y por tanto no funciona con Linphone.\n" -#~ "Le recomendamos que lo sustituya por el controlador equivalente de ALSA,\n" -#~ "ya sea mediante paquetes de su distribución, o descargando\n" -#~ "controladores ALSA de http://www.alsa-project.org." - -#~ msgid "Unregistration successful." -#~ msgstr "Cancelación del registro completada." - -#~ msgid "C: 2001" -#~ msgstr "Abril 2001" - -#~ msgid "Select network interface to use:" -#~ msgstr "Seleccione la interfaz de red para usar:" - -#~ msgid "Network interface properties" -#~ msgstr "Propiedades de Interfaz de Red:" - -#~ msgid "RTP" -#~ msgstr "RTP" - -#~ msgid "Threads not supported by glib. Upgrade your glib.\n" -#~ msgstr "Threads no soportados por glib. Actualize su glib.\n" - -#~ msgid "Run linphone as a gnome-applet." -#~ msgstr "Ejecutar linphone como un gnome-applet." - -#~ msgid "Run linphone as a daemon (for use without gnome)." -#~ msgstr "Ejecutar linphone como demonio (para uso sin gnome)." - -#~ msgid "" -#~ "Cannot find network previously used interface %s.\n" -#~ "If your computer is temporary connected to the internet, please connect " -#~ "and then run linphone.\n" -#~ "If you want to change your default network interface, go to the " -#~ "parameters 'box." -#~ msgstr "" -#~ "No se puede encontrar la interfaz de red usada previamente %s.\n" -#~ "Si su ordenador está conectado temporalmente a Internet, por favor " -#~ "conéctese y entonces ejecute linphone.\n" -#~ "Si quiere cambiar su interfaz de red predeterminada, vaya a la casilla " -#~ "Parámetros." - -#, fuzzy -#~ msgid "" -#~ "Linphone cannot open the audio device.\n" -#~ "It may be caused by other programs using it.\n" -#~ "Do you want linphone to kill these programs (esd or artsd) ?" -#~ msgstr "" -#~ "Linphone no puede abrir el dispositivo de audio.\n" -#~ "Puede deberse a que otros programas lo estén usando.\n" -#~ "¿Quiere que Linphone cierre esos programas (esd o artsd)?" - -#~ msgid "Use it as a:" -#~ msgstr "Usarlo como un:" - -#~ msgid "Outbound proxy" -#~ msgstr "Proxy de salida" - -#~ msgid "" -#~ "Togle this button if the registrar must be used to proxy calls through a " -#~ "firewall." -#~ msgstr "" -#~ "Marcar esta opción si el servidor de registro debe usarse en llamadas a " -#~ "proxy a través de un firewall." - -#~ msgid "OSS" -#~ msgstr "OSS" - -#~ msgid "ALSA" -#~ msgstr "ALSA" - -#~ msgid "Automatically kill applications using soundcard when needed" -#~ msgstr "" -#~ "Cerrar automáticamente aplicaciones que usen la tarjeta de sonido cuando " -#~ "se necesite." - -#~ msgid "" -#~ "Your computer is connected to several networks. Check in the global " -#~ "parameters if Linphone uses the one that you want." -#~ msgstr "" -#~ "Su equipo está conectado a varias redes. Revise en los parámetros " -#~ "globales si Linphone usa la que necesita." - -#~ msgid "" -#~ "Linphone failed to open the sound device. See the README file included in " -#~ "the distribution for details." -#~ msgstr "" -#~ "Linphone no pudo abrir el dispositivo de sonido. Vea el archivo README " -#~ "incluido en la distribución para más detalles." - -#~ msgid "Interface not found." -#~ msgstr "Interfaz no encontrada." - -#~ msgid "Warning" -#~ msgstr "Advertencia" - -#~ msgid "" -#~ "Linphone cannot open the sound device. It may be caused by other programs " -#~ "using it. Do you want linphone to kill these programs (esd or artsd) ?" -#~ msgstr "" -#~ "Linphone no puede abrir el dispositivo de sonido. Puede deberse a que " -#~ "otros programas lo estén usando. ¿Quiere que Linphone cierre esos " -#~ "programas (esd o artsd)?" - -#~ msgid "Linphone shutdowns..." -#~ msgstr "Linphone se está cerrando…" - -#~ msgid "" -#~ "Please, wait a few seconds until linphone unregisters your sip addess " -#~ "from registrar server..." -#~ msgstr "" -#~ "Por favor, espere unos segundos hasta que Linphone cancele el registro de " -#~ "su dirección SIP en el servidor de registros..." - -#~ msgid "Bad formulated sip address." -#~ msgstr "Dirección SIP mal escrita." - -#~ msgid "Couldn't create pixmap from file: %s" -#~ msgstr "No se pudo crear pixmap desde el archivo: %s" - -#~ msgid "" -#~ "Linphone did not detect any valid network interface. If you use a " -#~ "temporary internet connection, please connect and then run linphone again." -#~ msgstr "" -#~ "Linphone no detectó ninguna interfaz de red válida. Si usa una conexión " -#~ "temporal a Internet, por favor conéctese y vuelva a ejecutar Linphone." - -#~ msgid "List of network interfaces on your system." -#~ msgstr "Lista de interfaces de red en su sistema." - -#~ msgid "" -#~ "RTP est le mode de transport de la voix. Modifier ces paramËtres pour " -#~ "tenter d'amÈliorer la qualitÈ de la communication si celle-ci est " -#~ "dÈgradÈe." -#~ msgstr "" -#~ "RTP es el modelo de transporte de la voz. Modifique estos parámetros para " -#~ "intentar mejorar la calidad de la comunicación en caso de que sea mala." - -#~ msgid "Use rtp port:" -#~ msgstr "Usar puerto RTP:" - -#~ msgid "" -#~ "Les codecs ou vocodeurs sont les algorithmes utilisÈs pour compresser la " -#~ "voix." -#~ msgstr "" -#~ "Los códecs o codificadores/decodificadores son los algoritmos usados para " -#~ "comprimir la voz." - -#~ msgid "" -#~ "Vous pouvez ajuster avec cet onglet des paramËtre liÈs ‡ votre carte son." -#~ msgstr "Puede modificar estos parámetros a su gusto." diff --git a/po/fr.po b/po/fr.po index a7aac8717..173b4b260 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,19 +1,23 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) 2001 Free Software Foundation, Inc. -# Simon Morlat , 2001. -# +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Cqnqrd , 2014 +# Simon Morlat , 2001 msgid "" msgstr "" -"Project-Id-Version: Linphone 0.9.1\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2013-04-09 13:57+0100\n" -"Last-Translator: Simon Morlat \n" -"Language-Team: french \n" -"Language: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 18:33+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: French (http://www.transifex.com/projects/p/linphone-gtk/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -70,9 +74,7 @@ msgstr "" msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "" -"%s\tQualité: %s\n" -"%s\t%s\t" +msgstr "%s\tQualité: %s\n%s\t%s\t" #: ../gtk/calllogs.c:343 #, c-format @@ -124,11 +126,9 @@ msgstr "si positionné, répond automatiquement aux appels entrants" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" -"Spécifie un répertoire de travail (qui devrait être le répertoire " -"d'installation, par exemple c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +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:156 msgid "Configuration file" @@ -138,95 +138,80 @@ msgstr "Ficher de configuration" msgid "Run the audio assistant" msgstr "Démarre l'assistant audio" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "Appel avec %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 souhaite vous ajouter à sa liste de contact.\n" -"Souhaitez vous l'autoriser à voir votre information de présence et l'ajouter " -"à votre liste également ?\n" -"Si vous répondez non, cette personne sera mise temporairement sur liste " -"noire." +msgstr "%s souhaite vous ajouter à sa liste de contact.\nSouhaitez vous l'autoriser à voir votre information de présence et l'ajouter à votre liste également ?\nSi vous répondez non, cette personne sera mise temporairement sur liste noire." -#: ../gtk/main.c:1260 +#: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "" -"Entrez le mot de passe pour %s\n" -" sur le domaine %s:" +msgstr "Entrez le mot de passe pour %s\n sur le domaine %s:" -#: ../gtk/main.c:1376 +#: ../gtk/main.c:1283 msgid "Call error" msgstr "Erreur lors de l'appel" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "Appel terminé." -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Appel entrant" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Répondre" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Refuser" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 msgid "Call paused" msgstr "Appel en pause" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 #, c-format msgid "by %s" msgstr "b>par %s" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s propose de démarrer la vidéo. Acceptez-vous ?" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "Lien site web" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Linphone - un téléphone video pour l'internet" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (par défaut)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "Transfert vers %s" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"Aucune carte son n'a été détectée sur cet ordinateur.\n" -"Vous ne pourrez pas effectuer d'appels audio." +msgstr "Aucune carte son n'a été détectée sur cet ordinateur.\nVous ne pourrez pas effectuer d'appels audio." -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "Un visiophone libre" @@ -303,106 +288,101 @@ msgstr "Désactivé" msgid "Account" msgstr "Compte" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "Anglais" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "Français" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "Suédois" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "Italien" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "Espagnol" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "Portugais brésilien" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "Polonais" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "Allemand" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "Russe" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "日本語" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "Néérlandais" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "Hongrois" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "Tchèque" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "简体中文" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "Chinois traditionnel" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "Norvégien" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "Hébreu" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "Serbe" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 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." +msgstr "La nouvelle selection de langue prendra effet au prochain démarrage de linphone." -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "Aucun" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" -msgstr "" +msgstr "SRTP" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" -msgstr "" +msgstr "ZRTP" #: ../gtk/update.c:80 #, c-format msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"Une version plus récente est disponible sur %s.\n" -"Voulez vous ouvrir le navigateur afin de pouvoir télécharger la dernière " -"version ?" +msgstr "Une version plus récente est disponible sur %s.\nVoulez vous ouvrir le navigateur afin de pouvoir télécharger la dernière version ?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -439,9 +419,7 @@ msgstr[1] "%i contacts trouvés." msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"Bienvenue!\n" -"Cet assistant va vous aider à utiliser un compte SIP pour vos appels." +msgstr "Bienvenue!\nCet assistant va vous aider à utiliser un compte SIP pour vos appels." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -489,7 +467,7 @@ msgstr "Domaine*" #: ../gtk/setupwizard.c:145 msgid "Proxy" -msgstr "" +msgstr "Proxy" #: ../gtk/setupwizard.c:317 msgid "(*) Required fields" @@ -519,10 +497,7 @@ msgstr "" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "" -"Erreur, le compte n'est pas validé, l'identifiant est déjà utilisé ou le " -"serveur n'est pas accessible.\n" -"Merci d'essayer à nouveau." +msgstr "Erreur, le compte n'est pas validé, l'identifiant est déjà utilisé ou le serveur n'est pas accessible.\nMerci d'essayer à nouveau." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -530,13 +505,9 @@ msgstr "Merci. Votre compte est maintenant configuré et prêt à être utilisé #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." -msgstr "" -"Merci de valider votre compte en cliquant sur le lien que nous avons envoyé " -"par email.\n" -"Puis appuyez sur suivant." +msgstr "Merci de valider votre compte en cliquant sur le lien que nous avons envoyé par email.\nPuis appuyez sur suivant." #: ../gtk/setupwizard.c:600 msgid "SIP account configuration assistant" @@ -657,108 +628,108 @@ msgstr "" msgid "Hang up" msgstr "Raccrocher" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "Tentative d'appel..." -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" -msgstr "" +msgstr "00::00::00" -#: ../gtk/incall_view.c:515 +#: ../gtk/incall_view.c:525 msgid "Incoming call" msgstr "Appel entrant" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "bon" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "moyen" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "faible" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "très faible" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "nulle" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "indisponible" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "Sécurisé par SRTP" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Sécurisé par ZRTP- [jeton: %s]" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "Marquer comme non vérifié" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Marquer comme vérifié" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "En conférence" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In call" msgstr "Appel en cours" -#: ../gtk/incall_view.c:738 +#: ../gtk/incall_view.c:758 msgid "Paused call" msgstr "Appel en attente" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" -msgstr "" +msgstr "%02i::%02i::%02i" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Appel terminé." -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "Transfert en cours" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "Transfert terminé" -#: ../gtk/incall_view.c:809 +#: ../gtk/incall_view.c:831 msgid "Transfer failed." msgstr "Transfert échoué" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "Reprendre" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Pause" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "(en attente)" @@ -797,10 +768,7 @@ msgstr "" msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" -msgstr "" -"Bienvenue!\n" -"Cet assistant va vous aider à régler les paramètres audio de votre " -"ordinateur pour une utilisation optimale avec Linphone." +msgstr "Bienvenue!\nCet assistant va vous aider à régler les paramètres audio de votre ordinateur pour une utilisation optimale avec Linphone." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -1235,9 +1203,8 @@ msgid "Fixed" msgstr "Fixe" #: ../gtk/parameters.ui.h:23 -#, fuzzy msgid "Media encryption is mandatory" -msgstr "Type d'encryption media" +msgstr "" #: ../gtk/parameters.ui.h:24 msgid "Tunnel" @@ -1345,9 +1312,7 @@ msgstr "Paramètres multimedia" #: ../gtk/parameters.ui.h:50 msgid "This section defines your SIP address when not using a SIP account" -msgstr "" -"Cette rubrique permet de définir son adresse SIP lorsqu'on ne possède pas de " -"compte SIP" +msgstr "Cette rubrique permet de définir son adresse SIP lorsqu'on ne possède pas de compte SIP" #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" @@ -1429,10 +1394,7 @@ msgstr "Activer le control de débit adaptatif." msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "" -"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." +msgstr "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." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1745,17 +1707,9 @@ msgstr "Spécifier une URI de configuration" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " -msgstr "" -"Cette boite de dialogue vous permet de spécifier une addresse http ou https " -"où la configuration doit être téléchargée au démarrage.\n" -"Veuillez entrer l'URI http(s) ci dessous. Après avoir validé, Linphone va " -"redémarrer automatiquement pour charger et prendre en compte la nouvelle " -"configuration." +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " +msgstr "Cette boite de dialogue vous permet de spécifier une addresse http ou https où la configuration doit être téléchargée au démarrage.\nVeuillez entrer l'URI http(s) ci dessous. Après avoir validé, Linphone va redémarrer automatiquement pour charger et prendre en compte la nouvelle configuration." #: ../gtk/config-uri.ui.h:4 msgid "https://" @@ -1767,76 +1721,74 @@ msgstr "Configuration en cours" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." -msgstr "" -"Veuillez patenter un instant pendant le chargement de la configuration " -"distante..." +msgstr "Veuillez patenter un instant pendant le chargement de la configuration distante..." -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "Prêt." -#: ../coreapi/linphonecore.c:1967 +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" msgstr "Configuration en cours" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Recherche de la destination du numéro de téléphone..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "La destination n'a pu être trouvée." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "Appel de" -#: ../coreapi/linphonecore.c:2425 +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" msgstr "Echec de l'appel" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Désolé, le nombre maximum d'appels simultanés est atteint." -#: ../coreapi/linphonecore.c:2745 +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" msgstr "vous appelle" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "et sollicite un décrochage automatique." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "" -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "Modifications des paramètres d'appels..." -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "En ligne." -#: ../coreapi/linphonecore.c:3220 +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" msgstr "Appel abandonné" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "La mise en attente a échoué" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "Mise en attente de l'appel..." -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "Découverte STUN en cours" -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1892,271 +1844,140 @@ msgstr "En congé" msgid "Unknown-bug" msgstr "Bug inconnu" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"L'adresse SIP du proxy est invalide. Elle doit commencer par \"sip:\" suivie " -"par un nom de domaine." +msgstr "L'adresse SIP du proxy est invalide. Elle doit commencer par \"sip:\" suivie par un nom de domaine." -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"L'identité SIP que vous avez fourni est invalide.\n" -"Elle doit être de la forme sip:username@domain, comme par example sip:" -"alice@example.net" +msgstr "L'identité SIP que vous avez fourni est invalide.\nElle doit être de la forme sip:username@domain, comme par example sip:alice@example.net" -#: ../coreapi/proxy.c:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "Echec de la connexion en tant que %s" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "Sonnerie distante." -#: ../coreapi/callbacks.c:373 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." msgstr "Sonnerie distante..." -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "Prise d'appel anticipée." -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "%s est maintenant en attente." -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "Appel répondu par %s - en attente" -#: ../coreapi/callbacks.c:459 +#: ../coreapi/callbacks.c:498 msgid "Call resumed." msgstr "Appel repris." -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "Appel répondu par %s." -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "Paramètres media incompatibles." + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "Appel repris." -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "L'appel a été mis en attente." -#: ../coreapi/callbacks.c:556 -#, fuzzy +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." -msgstr "Mise à jour de l'appel par le correspondant." +msgstr "" -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "Appel terminé." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Occupé..." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "L'usager est temporairement indisponible." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "L'usager ne souhaite pas être dérangé" -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Appel décliné." -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "Redirection" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." -msgstr "Paramètres media incompatibles." - -#: ../coreapi/callbacks.c:798 +#: ../coreapi/callbacks.c:835 msgid "Call failed." msgstr "L'appel a échoué." -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "Enregistrement sur %s effectué." -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "Désenregistrement sur %s effectué." -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "Pas de réponse" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "Echec de l'enregistrement sur %s: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 +#: ../coreapi/linphonecall.c:174 #, c-format msgid "Authentication token is %s" msgstr "Le jeton d'authentification est %s" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, 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 "aborted" -#~ msgstr "abandonné" - -#~ msgid "completed" -#~ msgstr "terminé" - -#~ msgid "missed" -#~ msgstr "manqué" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s le %s\n" -#~ "De: %s\n" -#~ "A destination de: %s\n" -#~ "Etat: %s\n" -#~ "Durée: %i mn %i sec\n" - -#~ msgid "Outgoing call" -#~ msgstr "Appel sortant" - -#~ msgid "No response." -#~ msgstr "Pas de réponse." - -#~ msgid "Protocol error." -#~ msgstr "Erreur de protocole" - -#~ 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 à " - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Votre ordinateur semble utiliser les pilotes sons ALSA.\n" -#~ "C'est en g��al le meilleur choix, cependant un module\n" -#~ "d'emulation oss est manquant et linphone en a besoin.\n" -#~ "Veuillez s'il vous plait executer la commande\n" -#~ "'modprobe snd-pcm-oss' en tant que root afin de le charger." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Votre ordinateur semble utiliser les pilotes sons ALSA. C'est en g��al " -#~ "le\n" -#~ "meilleur choix, cependant un module d'emulation est manquant et linphone " -#~ "en\n" -#~ "a besoin. Veuillez s'il vous plait executer la commande\n" -#~ "'modprobe snd-mixer-oss' en tant que root afin de le charger." - -#~ msgid "Keypad" -#~ msgstr "Clavier" - -#~ msgid "Chat with %s" -#~ msgstr "Chat avec %s" - -#~ msgid "Choosing a username" -#~ msgstr "Choix du nom d'utilisateur" - -#~ msgid "Enable video" -#~ msgstr "Activer la video" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "" -#~ "Entrez un nom d'utilisateur, un numéro de téléphone, ou une adresse SIP" - -#~ msgid "Lookup:" -#~ msgstr "Rechercher:" - -#~ msgid "in" -#~ msgstr "dans" - -#~ msgid "We are being paused..." -#~ msgstr "Mise en attente..." - -#~ msgid "No common codecs" -#~ msgstr "Pas de codecs commun" - -#~ msgid "" -#~ "Pause all calls\n" -#~ "and answer" -#~ msgstr "" -#~ "Pauser les appels en cours\n" -#~ "et répondre" - -#~ msgid "Contact list" -#~ msgstr "Liste de contacts" - -#~ 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 "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." diff --git a/po/he.po b/po/he.po index f6dd58f14..a574873b0 100644 --- a/po/he.po +++ b/po/he.po @@ -1,25 +1,24 @@ -# Hebrew translations for linphone -# Copyright (C) Belledonne Communications,2010 -# This file is distributed under the same license as the linphone package. -# Eli Zaretskii , 2012. -# Isratine Citizen , 2012, 2013. -# +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Eli Zaretskii , 2012 +# GenghisKhan , 2012-2013 msgid "" msgstr "" -"Project-Id-Version: Linphone 3.5.99.0\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2013-04-24 21:31+0200\n" -"Last-Translator: Isratine Citizen \n" -"Language-Team: Rahut Project \n" -"Language: he\n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:08+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Hebrew (http://www.transifex.com/projects/p/linphone-gtk/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" -# צור קשר עם #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format msgid "Call %s" @@ -75,9 +74,7 @@ msgstr "" msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "" -"%s\tאיכות: %s\n" -"%s\t%s\t" +msgstr "%s\tאיכות: %s\n%s\t%s\t" #: ../gtk/calllogs.c:343 #, c-format @@ -99,165 +96,122 @@ msgstr "אני" msgid "Couldn't find pixmap file: %s" msgstr "לא ניתן למצוא קובץ ‫pixmap: ‫%s" -# איש־קשר #: ../gtk/chat.c:364 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "כתובת sip לא תקפה !" -# cli #: ../gtk/main.c:107 -#, fuzzy msgid "log to stdout some debug information while running." -msgstr "רשום אל stdout מידע ניפוי שגיאות מסוים בזמן ביצוע." - -# cli -#: ../gtk/main.c:114 -#, fuzzy -msgid "path to a file to write logs into." -msgstr "נתיב אל קובץ שברצונך לרשום אליו את הרשומות." - -# cli -#: ../gtk/main.c:121 -#, fuzzy -msgid "Start linphone with video disabled." -msgstr "התחל את לינפון עם וידאו מנוטרל." - -# cli -#: ../gtk/main.c:128 -#, fuzzy -msgid "Start only in the system tray, do not show the main interface." -msgstr "התחל במגש המערכת בלבד, אל תציג את הממשק הראשי." - -# cli -#: ../gtk/main.c:135 -#, fuzzy -msgid "address to call right now" -msgstr "כתובת להתקשרות ברגע זה" - -# cli -#: ../gtk/main.c:142 -#, fuzzy -msgid "if set automatically answer incoming calls" -msgstr "באם אפשרות זו נקבעת ענה אוטומטית לקריאות נכנסות" - -# cli -#: ../gtk/main.c:149 -#, fuzzy -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:114 +msgid "path to a file to write logs into." +msgstr "" + +#: ../gtk/main.c:121 +msgid "Start linphone with video disabled." +msgstr "" + +#: ../gtk/main.c:128 +msgid "Start only in the system tray, do not show the main interface." +msgstr "" + +#: ../gtk/main.c:135 +msgid "address to call right now" +msgstr "" + +#: ../gtk/main.c:142 +msgid "if set automatically answer incoming calls" +msgstr "" + +#: ../gtk/main.c:149 +msgid "" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +msgstr "" + #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "אימות" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "אשף הגדרת חשבון" +msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "התקשרות באמצעות %s" - -# הקשר שלהם -# אם התשובה -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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" -"היה ותשובתך תהיה לא, אדם זה יהיה מסומן באופן זמני ברשימה השחורה." +msgstr "‫%s מעוניין להוסיפך אל רשימת אנשי הקשר שלו.\nהאם ברצונך להרשות להם לראות את מצב נוכחותך או להוסיפם אל רשימת אנשי הקשר שלך ?\nהיה ותשובתך תהיה לא, אדם זה יהיה מסומן באופן זמני ברשימה השחורה." -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -"נא להזין את סיסמתך עבור שם משתמש %s\n" -" בתחום %s:" -# שיחה -#: ../gtk/main.c:1376 +#: ../gtk/main.c:1283 msgid "Call error" msgstr "שגיאת קריאה" -# Conversation ended -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "שיחה הסתיימה" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "קריאה נכנסת" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "לענות" -# דחיה -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "לדחות" -# Conversation paused -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 msgid "Call paused" msgstr "שיחה הושהתה" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 #, c-format msgid "by %s" msgstr "על ידי %s" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "‏%s רוצה להתחיל וידאו. האם אתה מסכים ?" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "קישור אתר רשת" -# ‫Linphone - וידאופון במרשתת -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "‫Linphone - וידאופון אינטרנטי" -# משתמטת -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "‫%s (ברירת מחדל)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "אנחנו מועברים אל %s" -# קריאות שמע -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"לא אותרו כרטיסי קול במחשב זה.\n" -"לא תהיה ביכולתך לשלוח או לקבל שיחות אודיו." +msgstr "לא אותרו כרטיסי קול במחשב זה.\nלא תהיה ביכולתך לשלוח או לקבל שיחות אודיו." -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "וידאופון SIP חופשי" @@ -281,7 +235,6 @@ msgstr "קריאה" msgid "Chat" msgstr "שיחה" -# a name or a number #: ../gtk/friendlist.c:756 #, c-format msgid "Search in %s directory" @@ -307,7 +260,6 @@ msgstr "מחק היסטוריית שיחה של '%s'" msgid "Add new contact from %s directory" msgstr "הוסף איש קשר חדש מן מדור %s" -# קצב תדר תדירות מהירות #: ../gtk/propertybox.c:558 msgid "Rate (Hz)" msgstr "שיעור (הרץ)" @@ -316,22 +268,18 @@ msgstr "שיעור (הרץ)" msgid "Status" msgstr "מצב" -# שיעור סיביות מינימלי #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "קצב נתונים מינימלי (קי״ב/שנ׳)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" msgstr "פרמטרים" -# מאופשר #: ../gtk/propertybox.c:620 ../gtk/propertybox.c:763 msgid "Enabled" msgstr "מופעל" -# מנוטרל #: ../gtk/propertybox.c:622 ../gtk/propertybox.c:763 msgid "Disabled" msgstr "לא מופעל" @@ -340,95 +288,92 @@ msgstr "לא מופעל" msgid "Account" msgstr "חשבון" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "English" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "Français" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "Svenska" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "Italiano" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "Español" -# português do Brasil -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "português brasileiro" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "Polski" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "Deutsch" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "Русский" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "日本語" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "Nederlands" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "Magyar" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "Česky" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "中文" -# 繁体字 -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "繁體字" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "norsk" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "עברית" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "српски srpski" -# selected הנבחרת -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "עליך לאתחל את לינפון כדי שהשפה החדשה תיכנס לתוקף." -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "ללא" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -437,11 +382,8 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"גרסא מאוחרת יותר זמינה מן %s.\n" -"האם ברצונך לפתוח דפדפן בכדי להורידה ?" +msgstr "גרסא מאוחרת יותר זמינה מן %s.\nהאם ברצונך לפתוח דפדפן בכדי להורידה ?" -# בידך #: ../gtk/update.c:91 msgid "You are running the lastest version." msgstr "ברשותך הגרסא האחרונה של לינפון." @@ -477,9 +419,7 @@ msgstr[1] "נמצאו %i אנשי קשר" msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"ברוך בואך !\n" -"אשף זה יסייע לך לעשות שימוש בחשבון SIP עבור שיחותייך." +msgstr "ברוך בואך !\nאשף זה יסייע לך לעשות שימוש בחשבון SIP עבור שיחותייך." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -489,7 +429,6 @@ msgstr "צור חשבון אצל linphone.org" msgid "I have already a linphone.org account and I just want to use it" msgstr "כבר קיים חשבון linphone.org ברשותי וברצוני לעשות בו שימוש" -# כבר קיים ברשותי חשבון sip #: ../gtk/setupwizard.c:45 msgid "I have already a sip account and I just want to use it" msgstr "כבר קיים חשבון sip ברשותי וברצוני לעשות בו שימוש" @@ -530,7 +469,6 @@ msgstr "מתחם*" msgid "Proxy" msgstr "פרוקסי" -# נדרשים #: ../gtk/setupwizard.c:317 msgid "(*) Required fields" msgstr "(*) שדות חובה" @@ -555,37 +493,26 @@ msgstr "אימות סיסמתך: (*)" msgid "Keep me informed with linphone updates" msgstr "" -# אינו בר־השגה -# לשוב אחורה #: ../gtk/setupwizard.c:394 msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "" -"שגיאה, חשבון לא אומת, שם משתמש כבר בשימוש או שרת לא ניתן להשגה.\n" -"נא לחזור ולנסות שוב." +msgstr "שגיאה, חשבון לא אומת, שם משתמש כבר בשימוש או שרת לא ניתן להשגה.\nנא לחזור ולנסות שוב." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." msgstr "תודה לך. חשבונך מוגדר ומוכן לשימוש כעת." -# לאחר מכן #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." -msgstr "" -"נא לאמת את חשבונך באמצעות הקלקה על הקישור ששלחנו לך עתה באמצעות דוא״ל.\n" -"אחרי כן נא לחזור לכאן וללחוץ על הלחצן 'קדימה'." +msgstr "נא לאמת את חשבונך באמצעות הקלקה על הקישור ששלחנו לך עתה באמצעות דוא״ל.\nאחרי כן נא לחזור לכאן וללחוץ על הלחצן 'קדימה'." #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "אשף הגדרת חשבון" +msgstr "" -# Wizard אשף -# סייע #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" msgstr "ברוך בואך אל אשף הגדרת החשבון" @@ -594,7 +521,6 @@ msgstr "ברוך בואך אל אשף הגדרת החשבון" msgid "Account setup assistant" msgstr "אשף הגדרת חשבון" -# שלב #: ../gtk/setupwizard.c:629 msgid "Configure your account (step 1/1)" msgstr "הגדרת חשבונך (צעד 1/1)" @@ -607,7 +533,6 @@ msgstr "הזנת שם משתמש sip (צעד 1/1)" msgid "Enter account information (step 1/2)" msgstr "הזנת מידע חשבון (צעד 1/2)" -# תקפות #: ../gtk/setupwizard.c:647 msgid "Validation (step 2/2)" msgstr "אימות (צעד 2/2)" @@ -687,9 +612,7 @@ msgstr "ישיר או דרך שרת" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "" -"הורדה: %f\n" -"העלאה: %f (קי״ב/שנ׳)" +msgstr "הורדה: %f\nהעלאה: %f (קי״ב/שנ׳)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -705,117 +628,108 @@ msgstr "%.3f שניות" msgid "Hang up" msgstr "נתק" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "מתקשר כעת..." -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "‭00::00::00" -#: ../gtk/incall_view.c:515 +#: ../gtk/incall_view.c:525 msgid "Incoming call" msgstr "קריאה נכנסת" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "טובה" -# רגילה -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "ממוצעת" -# weak חלשה חלושה רפויה רופפת -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "דלה" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "דלה מאוד" -# רעה -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "גרועה מדי" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "לא זמינה" -# באמצעות -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "מאובטחת על ידי SRTP" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "מאובטחת על ידי ZRTP - [אות אימות: %s]" -# set or unset verification state of ZRTP SAS. -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "הגדר כלא מאומתת" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "הגדר כמאומתת" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "בשיחת ועידה" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In call" msgstr "בשיחה כעת" -#: ../gtk/incall_view.c:738 +#: ../gtk/incall_view.c:758 msgid "Paused call" msgstr "שיחה מושהית" -# שעות %02i דקות %02i שניות %02i -# Force LTR time format (hours::minutes::seconds) with LRO chatacter (U+202D) -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "‭%02i::%02i::%02i" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "שיחה הסתיימה." -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "העברה מצויה כעת בעיצומה" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "העברה הסתיימה." -#: ../gtk/incall_view.c:809 +#: ../gtk/incall_view.c:831 msgid "Transfer failed." msgstr "העברה נכשלה." -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "חזור" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "השהה" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" -msgstr "" -"מקליט אל תוך\n" -"%s %s" +msgstr "מקליט אל תוך\n%s %s" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "(מושהה)" @@ -851,18 +765,14 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"ברוך בואך !\n" -"אשף זה יסייע לך לעשות שימוש בחשבון SIP עבור שיחותייך." #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "התקן לכידה:" +msgstr "" #: ../gtk/audio_assistant.c:329 msgid "Recorded volume" @@ -873,9 +783,8 @@ msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "התקן פס קול:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -894,14 +803,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "אשף חשבון" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "אשף חשבון" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -915,13 +822,10 @@ msgstr "" msgid "Record and Play" msgstr "" -# מתקשר Caller -# זה ש: נתקשר או מתוקשר או הותקשר? #: ../gtk/main.ui.h:1 msgid "Callee name" msgstr "שם מקבל" -# שגר #: ../gtk/main.ui.h:2 msgid "Send" msgstr "שלח" @@ -974,7 +878,6 @@ msgstr "‫ADSL" msgid "Fiber Channel" msgstr "ערוץ סיב" -# משתמט #: ../gtk/main.ui.h:21 msgid "Default" msgstr "ברירת מחדל" @@ -983,11 +886,9 @@ msgstr "ברירת מחדל" msgid "_Options" msgstr "_אפשרויות" -# וידוא #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "אימות" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -1041,12 +942,10 @@ msgstr "הוסף אנשי קשר מן מדור" msgid "Add contact" msgstr "הוסף איש קשר" -# קריאות אחרונות #: ../gtk/main.ui.h:38 msgid "Recent calls" msgstr "שיחות אחרונות" -# הזהות הנוכחית שלי #: ../gtk/main.ui.h:39 msgid "My current identity:" msgstr "זהותי הנוכחית:" @@ -1059,7 +958,6 @@ msgstr "שם משתמש" msgid "Password" msgstr "סיסמה" -# מרשתת #: ../gtk/main.ui.h:42 msgid "Internet connection:" msgstr "חיבור אינטרנט:" @@ -1088,8 +986,6 @@ msgstr "מחק" msgid "About linphone" msgstr "אודות לינפון" -# Should be updated to 2012 2013 -# כל הזכויות שמורות (C) ‫Belledonne Communications, ‫2010\n #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications,2010\n" msgstr "‫(C) ‫Belledonne Communications,‫2010\n" @@ -1142,12 +1038,10 @@ msgstr "גלול אוטומטית לסוף" msgid "Linphone - Authentication required" msgstr "‫Linphone - נדרש אימות" -# תחום #: ../gtk/password.ui.h:2 msgid "Please enter the domain password" msgstr "נא להזין את סיסמת המתחם" -# קריאות #: ../gtk/call_logs.ui.h:1 msgid "Call history" msgstr "היסטוריית שיחות" @@ -1156,7 +1050,6 @@ msgstr "היסטוריית שיחות" msgid "Clear all" msgstr "טיהור מוחלט" -# קריאה חוזרת #: ../gtk/call_logs.ui.h:3 msgid "Call back" msgstr "חיוג חוזר" @@ -1190,9 +1083,8 @@ msgid "Registration duration (sec):" msgstr "משך רישום (בשניות):" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "ניתוב (רשות):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1202,11 +1094,9 @@ msgstr "" msgid "Route (optional):" msgstr "ניתוב (רשות):" -# מוביל #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "טרנספורט" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1217,9 +1107,8 @@ msgid "Publish presence information" msgstr "פרסם מידע נוכחות" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "אפשר" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1281,7 +1170,6 @@ msgstr "‏SIP ‏(TLS)" msgid "Settings" msgstr "הגדרות" -# שידור #: ../gtk/parameters.ui.h:15 msgid "Set Maximum Transmission Unit:" msgstr "הגדר יחידת תמסורת מרבית:" @@ -1294,7 +1182,6 @@ msgstr "שלח טזמ״תים (DTMFs) כמידע SIP" msgid "Use IPv6 instead of IPv4" msgstr "השתמש בפרוטוקול IPv6 במקום בפרוטוקול IPv4" -# מוביל #: ../gtk/parameters.ui.h:18 msgid "Transport" msgstr "טרנספורט" @@ -1344,25 +1231,17 @@ msgid "Direct connection to the Internet" msgstr "חיבור ישיר אל האינטרנט" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "מאחורי NAT / חומת אש (ציון כתובת שער (Gateway IP) למטה)" +msgstr "" -# ניצול STUN -# שימוש ב־STUN -# utilize #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" msgstr "מאחורי NAT / חומת אש (בעזרת STUN לפתירה)" -# שימוש ב־STUN -# utilize #: ../gtk/parameters.ui.h:32 msgid "Behind NAT / Firewall (use ICE)" msgstr "מאחורי NAT / חומת אש (בעזרת ICE)" -# שימוש ב־STUN -# utilize #: ../gtk/parameters.ui.h:33 msgid "Behind NAT / Firewall (use uPnP)" msgstr "מאחורי NAT / חומת אש (בעזרת uPnP)" @@ -1415,15 +1294,13 @@ msgstr "אודיו" msgid "Video input device:" msgstr "התקן קלט וידאו:" -# רצויה #: ../gtk/parameters.ui.h:46 msgid "Prefered video resolution:" msgstr "רזולוציית וידאו מועדפת:" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "התקן קלט וידאו:" +msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1469,7 +1346,6 @@ msgstr "ערוך" msgid "Remove" msgstr "הסר" -# חשבונות מתווכים #: ../gtk/parameters.ui.h:59 msgid "Proxy accounts" msgstr "חשבונות Proxy" @@ -1498,18 +1374,14 @@ msgstr "נטרל" msgid "Codecs" msgstr "קודקים" -# ללא הגבלה #: ../gtk/parameters.ui.h:66 msgid "0 stands for \"unlimited\"" msgstr "0 מסמל \"בלי הגבלה\"" -# does KiB mean kibibyte? #: ../gtk/parameters.ui.h:67 msgid "Upload speed limit in Kbit/sec:" msgstr "מגבלת מהירות העלאה בקי״ב/שנ׳:" -# האם KiB זה kibibyte? -# קי״ב (1024) אל מול ק״ב (1000) #: ../gtk/parameters.ui.h:68 msgid "Download speed limit in Kbit/sec:" msgstr "מגבלת מהירות הורדה בקי״ב/שנ׳:" @@ -1518,17 +1390,12 @@ msgstr "מגבלת מהירות הורדה בקי״ב/שנ׳:" msgid "Enable adaptive rate control" msgstr "אפשר בקרת קצב מסתגלת" -# שיטה ניחוש #: ../gtk/parameters.ui.h:70 msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "" -"בקרת קצב מסתגלת הינה טכניקה להשערה דינמית של רוחב הפס הזמין במהלך שיחה." +msgstr "בקרת קצב מסתגלת הינה טכניקה להשערה דינמית של רוחב הפס הזמין במהלך שיחה." -# פס רוחב -# טווח תדרים #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" msgstr "בקרת רוחב פס" @@ -1554,24 +1421,20 @@ msgid "User interface" msgstr "ממשק משתמש" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "כתובת SIP Proxy:" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "כשל באימות" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "תוויות" -# חשבונות מתווכים #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "חשבונות Proxy" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" @@ -1589,7 +1452,6 @@ msgstr "חיפוש אנשי קשר בתוך מדור" msgid "Add to my list" msgstr "הוסף אל הרשימה שלי" -# חיפוש מאן דהו #: ../gtk/buddylookup.ui.h:3 msgid "Search somebody" msgstr "חיפוש אחר מישהו" @@ -1603,9 +1465,8 @@ msgid "Please wait" msgstr "נא להמתין" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "הגדרות Dscp" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1659,11 +1520,9 @@ msgstr "זמן הלוך ושוב" msgid "Video resolution received" msgstr "" -# רצויה #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "רזולוציית וידאו מועדפת:" +msgstr "" #: ../gtk/call_statistics.ui.h:11 msgid "RTP profile" @@ -1754,23 +1613,20 @@ msgid "1" msgstr "" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "הגדרות" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" msgstr "" #: ../gtk/ldap.ui.h:7 -#, fuzzy msgid "Not yet available" -msgstr "‏uPnp לא זמינה" +msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "קודקים" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1785,9 +1641,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "אודיו" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1803,19 +1658,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "כתובת SIP או מספר טלפון" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" -# חיפוש מאן דהו #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "חיפוש אחר מישהו" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1830,9 +1682,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "וידאו" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1856,11 +1707,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1868,85 +1716,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "מתחבר כעת..." +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "מוכן" -# וידוא -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "אימות" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "מחפש כעת עבור יעד מספר טלפון..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "לא ניתן לפתור את מספר זה." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "מתקשר כעת" -#: ../coreapi/linphonecore.c:2425 +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" msgstr "לא ניתן להתקשר" -# מספר השיחות המקבילות המרבי -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "הגענו אל המספר המרבי של שיחות מקבילות, עמך הסליחה" -#: ../coreapi/linphonecore.c:2745 +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" msgstr "מתקשר/ת אליך" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr " ומבקש/ת מענה אוטומטי." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "" -# פרמטרי קריאה -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "מתאים כעת פרמטרים של שיחה..." -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "מקושר." -#: ../coreapi/linphonecore.c:3220 +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" msgstr "קריאה בוטלה" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "לא ניתן להשהות את השיחה" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "משהה כעת שיחה נוכחית..." -# במהלך (או) באמצע חיפוש... -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "בדיקת STUN מצויה כעת בעיצומה..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "צבירת מועמדים מקומיים של ICE מצויה כעת בעיצומה..." @@ -1958,7 +1800,6 @@ msgstr "מקוון" msgid "Busy" msgstr "עסוק" -# מיד אשוב #: ../coreapi/friend.c:39 msgid "Be right back" msgstr "כבר אשוב" @@ -1979,14 +1820,10 @@ msgstr "בארוחת צהריים" msgid "Do not disturb" msgstr "נא לא להפריע" -# Is it: change residence? -# What is the difference with Away? -# fr Parti #: ../coreapi/friend.c:54 msgid "Moved" msgstr "עברתי דירה" -# additional נוסף #: ../coreapi/friend.c:57 msgid "Using another messaging service" msgstr "אני עושה כעת שימוש בשירות מסרים אחר" @@ -2000,338 +1837,147 @@ msgid "Pending" msgstr "בהמתנה" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "משך זמן" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "תקלה לא מוכרת" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"כתובת sip proxy שהזנת הינה שגויה, זו צריכה להתחיל עם‭\"sip:\" ‬ לאחר שם מארח." +msgstr "כתובת sip proxy שהזנת הינה שגויה, זו צריכה להתחיל עם‭\"sip:\" ‬ לאחר שם מארח." -# כמו למשל -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"זהות sip שהוזנה הינה שגויה.\n" -"זו צריכה להיראות כמו sip:username@proxydomain, למשל sip:alice@example.net" +msgstr "זהות sip שהוזנה הינה שגויה.\nזו צריכה להיראות כמו sip:username@proxydomain, למשל sip:alice@example.net" -# בשם כ־ -#: ../coreapi/proxy.c:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "לא ניתן להתחבר בזהות %s" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "צלצול מרוחק." -#: ../coreapi/callbacks.c:373 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." msgstr "צלצול מרוחק..." -# A SIP state -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "מדיה מוקדמת." -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "שיחה עם %s מושהית." -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "קריאה נענתה על ידי %s - בהמתנה." -# renewed -#: ../coreapi/callbacks.c:459 +#: ../coreapi/callbacks.c:498 msgid "Call resumed." msgstr "קריאה חודשה." -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "קריאה נענתה על ידי %s." -# לא תואם -# אי תאימות -# אי התאמה -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "חוסר תאימות, בדוק קודקים או הגדרות אבטחה..." -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "פרמטריי מדיה חסרי תואמים." + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "חזרנו." -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "אנו מושהים על ידי צד אחר." -# באופן מרוחק -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "שיחה עודכנה מרחוק." -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "קריאה הסתיימה." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "משתמש עסוק כעת." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "משתמש לא זמין זמנית." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "משתמש לא מעוניין שיפריעו לו." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "קריאה סורבה." -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "מכוון מחדש" -# לא תואם -# אי תאימות -# אי התאמה -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." -msgstr "פרמטריי מדיה חסרי תואמים." - -#: ../coreapi/callbacks.c:798 +#: ../coreapi/callbacks.c:835 msgid "Call failed." msgstr "קריאה נכשלה." -# הרשמה אצל %s הושלמה בהצלחה. -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "רישום אצל %s הושלם בהצלחה." -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "אי רישום אצל %s סוים." -# Pas de réponse -# no response in defined time -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "אין היענות תוך זמן מוגדר" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "רישום אצל %s נכשל: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 +#: ../coreapi/linphonecall.c:174 #, c-format msgid "Authentication token is %s" msgstr "אות האימות הינה %s" -# האם כדאי לחקות את הטלפונים הניידים? שיחות של נענו -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "החמצת שיחה %i." msgstr[1] "החמצת %i שיחות." - -#~ msgid "aborted" -#~ msgstr "ננטשה" - -#~ msgid "completed" -#~ msgstr "הסתיימה" - -#~ msgid "missed" -#~ msgstr "הוחמצה" - -# needs to be tested -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s אצל %s\n" -#~ "מאת: %s\n" -#~ "אל: %s\n" -#~ "מצב: %s\n" -#~ "משך: %i mn %i sec\n" - -#~ msgid "Outgoing call" -#~ msgstr "קריאה יוצאת" - -#~ msgid "No response." -#~ msgstr "אין תגובה." - -#~ msgid "Protocol error." -#~ msgstr "שגיאת פרוטוקול." - -# לרוב -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "לא ניתן היה לפענח את הכתובת שניתנה. כתובת sip בדרך כלל נראית כך: sip:" -#~ "user@domain" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "נראה שמחשבך עושה שימוש במנהל התקן הקול ALSA.\n" -#~ "זוהי הבחירה הטובה ביותר. אולם מודול ההדמיה (emulation module) של pcm oss\n" -#~ "נעדר ולינפון זקוק לו. נא להריץ את הפקודה\n" -#~ "‫'modprobe snd-pcm-oss' כמשתמש שורש (משתמש על) כדי להטעינו." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "נראה שמחשבך עושה שימוש במנהל התקן הקול ALSA.\n" -#~ "זוהי הבחירה הטובה ביותר. אולם מודול ההדמיה (emulation module) של mixer " -#~ "oss\n" -#~ "נעדר ולינפון זקוק לו. נא להריץ את הפקודה\n" -#~ "‫'modprobe snd-mixer-oss' כמשתמש שורש (משתמש על) כדי להטעינו." - -#~ msgid "by %s" -#~ msgstr "מאת %s" - -#~ msgid "Keypad" -#~ msgstr "לוח מקשים" - -# שוחחו -#~ msgid "Chat with %s" -#~ msgstr "שיחה עם %s" - -#~ msgid "Enable video" -#~ msgstr "הפעל וידאו" - -# הזנת -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "נא להזין שם משתמש, מספר טלפון, או כתובת sip מלאה" - -# עיון -#~ msgid "Lookup:" -#~ msgstr "חיפוש:" - -# במסגרת -#~ msgid "in" -#~ msgstr "בקרב" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "רישום אל FONICS\n" -#~ "רשת עבודה וירטואלית !" - -#~ msgid "edit" -#~ msgstr "עריכה" - -#~ msgid "We are being paused..." -#~ msgstr "אנחנו כעת מושהים..." - -#~ msgid "No common codecs" -#~ msgstr "אין קודקים משותפים" - -#~ msgid "Please choose a username:" -#~ msgstr "נא לבחור שם משתמש:" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "בודק כעת אם '%s' זמין..." - -#~ msgid "Please wait..." -#~ msgstr "נא להמתין..." - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "צר לי, שם משתמש זה כבר קיים. נא לנסות אחד חדש." - -#, fuzzy -#~ msgid "Ok !" -#~ msgstr "חיובי !" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "בעיית תקשורת, נא לנסות שוב מאוחר יותר." - -#~ msgid "Choosing a username" -#~ msgstr "בחירת שם משתמש" - -# וידוא -#, fuzzy -#~ msgid "Verifying" -#~ msgstr "מאמת כעת" - -#~ msgid "Creating your account" -#~ msgstr "חשבונך נוצר כעת" - -#~ msgid "Now ready !" -#~ msgstr "מוכן כעת !" - -#~ msgid "" -#~ "Pause all calls\n" -#~ "and answer" -#~ msgstr "" -#~ "Pauser les appels en cours\n" -#~ "et répondre" - -#~ msgid "Contact list" -#~ msgstr "Liste de contacts" - -#~ 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 "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." diff --git a/po/hu.po b/po/hu.po index 86c3032b5..792868436 100644 --- a/po/hu.po +++ b/po/hu.po @@ -1,21 +1,21 @@ -# Hungarian translation for Linphone. -# Copyright 2013. -# This file is distributed under the same license as the linphone package. -# +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: Linphone\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2013-03-26 19:00+0100\n" -"Last-Translator: Viktor \n" -"Language-Team: \n" -"Language: Hungarian\n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:16+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Hungarian (http://www.transifex.com/projects/p/linphone-gtk/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" -"Plural-Forms: nplurals=1; plural=1 == 1 ? 0 : 1;\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -28,9 +28,9 @@ msgid "Send text to %s" msgstr "Szöveg küldése a következőnek: %s" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "vonalban" +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" @@ -52,38 +52,34 @@ msgstr "Elutasítva" #, c-format msgid "%i minute" msgid_plural "%i minutes" -msgstr[0] "%i perc" +msgstr[0] "" +msgstr[1] "" #: ../gtk/calllogs.c:332 #, c-format msgid "%i second" msgid_plural "%i seconds" -msgstr[0] "%i másodperc" +msgstr[0] "" +msgstr[1] "" #: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, fuzzy, c-format +#, c-format msgid "%s\t%s" msgstr "" -"%s\t%s\t\n" -"%s\t%s" #: ../gtk/calllogs.c:337 -#, fuzzy, c-format +#, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" msgstr "" -"%s\t%s\tMinőség: %s\n" -"%s\t%s %s\t" #: ../gtk/calllogs.c:343 -#, fuzzy, c-format +#, c-format msgid "" "%s\t\n" "%s" msgstr "" -"%s\t%s\t\n" -"%s\t%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -128,110 +124,92 @@ msgstr "Bekapcsolva automatikusan válaszol a bejövő hívásokra" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" -"Adjon meg egy munkakönyvtárat (ennek az installációs könyvtárnak kéne " -"lennie, pl. C:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +msgstr "Adjon meg egy munkakönyvtárat (ennek az installációs könyvtárnak kéne lennie, pl. C:\\Program Files\\Linphone)" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Információk" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "Fiók beállítása varázsló" +msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "Hívás %s -el" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 szeretné Önt hozzáadni partnerlistájához.\n" -"Szeretné megengedni neki, hogy lássa az Ön jelenlétét, illetve hozzá " -"szeretné adni a partnerlistához?\n" -"Ha nemmel válaszol, ez a személy átmenetileg tiltólistára kerül." +msgstr "%s szeretné Önt hozzáadni partnerlistájához.\nSzeretné megengedni neki, hogy lássa az Ön jelenlétét, illetve hozzá szeretné adni a partnerlistához?\nHa nemmel válaszol, ez a személy átmenetileg tiltólistára kerül." -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -"Kérem, adja meg jelszavát a következő felhasználónévhez: %s\n" -"tartomány %s:" -#: ../gtk/main.c:1376 +#: ../gtk/main.c:1283 msgid "Call error" msgstr "Hiba a hívás közben" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "Hívás vége" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Beérkező hívás" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Hívás fogadása" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Elutasítás" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 msgid "Call paused" msgstr "Hívás várakoztatva" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 #, c-format msgid "by %s" msgstr "a következő által: %s" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s szerené elidítani a videót. Elfogadja?" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "Internetes oldal" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Linphone - internetes videó telefon" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (Alapértelmezett)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "Át vagyunk irányítva ide: %s" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"Hangkártya nincs érzékelve ezen a számítógépen.\n" -"Nem fog tudni hang hívásokat küldeni vagy fogadni." +msgstr "Hangkártya nincs érzékelve ezen a számítógépen.\nNem fog tudni hang hívásokat küldeni vagy fogadni." -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "Egy ingyenes SIP video-telefon" @@ -271,9 +249,9 @@ msgid "Delete contact '%s'" msgstr "'%s' partner törlése" #: ../gtk/friendlist.c:978 -#, fuzzy, c-format +#, c-format msgid "Delete chat history of '%s'" -msgstr "'%s' partner törlése" +msgstr "" #: ../gtk/friendlist.c:1029 #, c-format @@ -289,9 +267,8 @@ msgid "Status" msgstr "Állapot" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Min bitrate (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -309,94 +286,92 @@ msgstr "Tiltva" msgid "Account" msgstr "Hozzáférés" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "angol" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "francia" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "svéd" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "olasz" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "spanyol" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "brazil-portugál" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "lengyel" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "német" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "orosz" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "japán" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "holland" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "magyar" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "cseh" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "egyszerúsített kínai" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "tradícionális kínai" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "norvég" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "héber" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." -msgstr "" -"Újra kell indítania a linphone-t, hogy az új nyelv kiválasztása érvényre " -"jusson. " +msgstr "Újra kell indítania a linphone-t, hogy az új nyelv kiválasztása érvényre jusson. " -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "Nincs" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "ZRTP" @@ -405,9 +380,7 @@ msgstr "ZRTP" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"Elérhető egy újabb verzió a következőn: %s.\n" -"Szeretné, hogy a letöltéshez egy új böngésző ablak nyíljon?" +msgstr "Elérhető egy újabb verzió a következőn: %s.\nSzeretné, hogy a letöltéshez egy új böngésző ablak nyíljon?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -437,15 +410,14 @@ msgstr "Adatok fogadása..." #, c-format msgid "Found %i contact" msgid_plural "Found %i contacts" -msgstr[0] "Találat: %i partner" +msgstr[0] "" +msgstr[1] "" #: ../gtk/setupwizard.c:34 msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"Üdvözöljük !\n" -"Ez a varázsló segít Önnek, hogy sip fiókot használjon hívásaihoz." +msgstr "Üdvözöljük !\nEz a varázsló segít Önnek, hogy sip fiókot használjon hívásaihoz." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -523,10 +495,7 @@ msgstr "" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "" -"Hiba, a fiók nincs érvényesítve. Valaki már használja ezt a felhasználónevet " -"vagy a kiszolgáló nem elérhető.\n" -"Kérjük, lépjen vissza és próbálja újra." +msgstr "Hiba, a fiók nincs érvényesítve. Valaki már használja ezt a felhasználónevet vagy a kiszolgáló nem elérhető.\nKérjük, lépjen vissza és próbálja újra." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -534,18 +503,13 @@ msgstr "Köszönjük! Az Ön fiókját beállítottuk és használatra kész." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." -msgstr "" -"Kérjük, érvényesítse fiókját az általunk elektronikus levélben küldött " -"hivatkozásra kattintva.\n" -"Azután térjen vissza ide és kattintson a Következő gombra." +msgstr "Kérjük, érvényesítse fiókját az általunk elektronikus levélben küldött hivatkozásra kattintva.\nAzután térjen vissza ide és kattintson a Következő gombra." #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "Fiók beállítása varázsló" +msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -646,9 +610,7 @@ msgstr "közvetlen vagy kiszolgálón keresztül" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "" -"letöltés: %f\n" -"feltöltés: %f (kbit/mp)" +msgstr "letöltés: %f\nfeltöltés: %f (kbit/mp)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -664,110 +626,108 @@ msgstr "%.3f másodperc" msgid "Hang up" msgstr "Befejezés" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "Hívás folyamatban..." -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "00::00::00" -#: ../gtk/incall_view.c:515 +#: ../gtk/incall_view.c:525 msgid "Incoming call" msgstr "Beérkező hívás" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "jó" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "közepes" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "gyenge" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "nagyon gyenge" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "rossz" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "nem elérhető" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "SRTP-vel titkosítva" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "ZRTP-vel titkosítva - [hitelesítési jel: %s]" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "Beállítás ellenőrizetlenként" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Beállítás ellenőrzöttként" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "Konferencián" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In call" msgstr "vonalban" -#: ../gtk/incall_view.c:738 +#: ../gtk/incall_view.c:758 msgid "Paused call" msgstr "Várakoztatott hívás" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "%02i::%02i::%02i" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Hívás vége." -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "Átvitel folyamatban" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "Átvitel befejezve." -#: ../gtk/incall_view.c:809 +#: ../gtk/incall_view.c:831 msgid "Transfer failed." msgstr "Az átvitel sikertelen." -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "Visszatérés" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Várakoztatás" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" -msgstr "" -"Felvétel a következőbe\n" -"%s %s" +msgstr "Felvétel a következőbe\n%s %s" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "(Várakoztatva)" @@ -777,9 +737,9 @@ msgid "Please enter login information for %s" msgstr "Kérem, adja meg a bejelentkezési információt %s -hoz" #: ../gtk/config-fetching.c:57 -#, fuzzy, c-format +#, c-format msgid "fetching from %s" -msgstr "Beérkező hívás" +msgstr "" #: ../gtk/config-fetching.c:73 #, c-format @@ -803,32 +763,26 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Üdvözöljük !\n" -"Ez a varázsló segít Önnek, hogy sip fiókot használjon hívásaihoz." #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Felvevő hang eszköz:" +msgstr "" #: ../gtk/audio_assistant.c:329 -#, fuzzy msgid "Recorded volume" -msgstr "Felvételi forrás:" +msgstr "" #: ../gtk/audio_assistant.c:333 msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Lejátszó hang eszköz:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -847,14 +801,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "Fiók varázsló" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "Fiók varázsló" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -933,9 +885,8 @@ msgid "_Options" msgstr "_Beállítások" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Proxy/Regisztráció konfigurációs doboz" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -1039,12 +990,9 @@ msgstr "(C) Belledonne Communications,2010\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "" -"Internetes videó telefon, mely a szabványos SIP (rfc3261) protokolt " -"használja." +msgstr "Internetes videó telefon, mely a szabványos SIP (rfc3261) protokolt használja." #: ../gtk/about.ui.h:5 -#, fuzzy msgid "" "fr: Simon Morlat\n" "en: Simon Morlat and Delphine Perreau\n" @@ -1059,17 +1007,6 @@ msgid "" "hu: anonymous\n" "he: Eli Zaretskii \n" msgstr "" -"francia: Simon Morlat\n" -"angol: Simon Morlat és Delphine Perreau\n" -"olasz: Alberto Zanoni \n" -"német: Jean-Jacques Sarton \n" -"svéd: Daniel Nylander \n" -"spanyol: Jesus Benitez \n" -"japán: YAMAGUCHI YOSHIYA \n" -"brazil-portugál: Rafael Caesar Lenzi \n" -"lengyel: Robert Nasiadek \n" -"cseh: Petr Pisar \n" -"magyar: anonymous és Barczi Viktor \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1144,9 +1081,8 @@ msgid "Registration duration (sec):" msgstr "Regisztrálási Időköz (mp):" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "Út (nem kötelező):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1157,9 +1093,8 @@ msgid "Route (optional):" msgstr "Út (nem kötelező):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Átvitel" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1170,9 +1105,8 @@ msgid "Publish presence information" msgstr "Jelenléti információ közlése" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Engedélyezés" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1279,14 +1213,12 @@ msgid "DSCP fields" msgstr "DSCP mezők" #: ../gtk/parameters.ui.h:26 -#, fuzzy msgid "SIP/TCP port" -msgstr "SIP port" +msgstr "" #: ../gtk/parameters.ui.h:27 -#, fuzzy msgid "SIP/UDP port" -msgstr "SIP port" +msgstr "" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1297,9 +1229,8 @@ msgid "Direct connection to the Internet" msgstr "Közvetlen Internet kapcsolat" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "NAT / tűzfal mögött (adja meg az átjáró IP címét)" +msgstr "" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" @@ -1366,9 +1297,8 @@ msgid "Prefered video resolution:" msgstr "Kívánt videó felbontás:" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Videó bemeneti eszköz:" +msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1462,9 +1392,7 @@ msgstr "Alkalmazkodó mérték-szabályozás engedélyezése" msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "" -"Az alkalmazkodó mérték-szabályozás egy módszer, mely erőteljesen próbálja " -"megállapítani a rendelkezésre álló sávszélességet hívás alatt." +msgstr "Az alkalmazkodó mérték-szabályozás egy módszer, mely erőteljesen próbálja megállapítani a rendelkezésre álló sávszélességet hívás alatt." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1491,23 +1419,20 @@ msgid "User interface" msgstr "Felhasználói környezet" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "Sip cím:" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Hitelesítési információ" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "címke" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Proxy fiókok" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" @@ -1538,9 +1463,8 @@ msgid "Please wait" msgstr "Kérem várjon" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "DSCP beállítások" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1595,9 +1519,8 @@ msgid "Video resolution received" msgstr "" #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "Kívánt videó felbontás:" +msgstr "" #: ../gtk/call_statistics.ui.h:11 msgid "RTP profile" @@ -1688,23 +1611,20 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Beállítások" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" msgstr "" #: ../gtk/ldap.ui.h:7 -#, fuzzy msgid "Not yet available" -msgstr "uPnP nem elérhető" +msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Kódekek" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1715,14 +1635,12 @@ msgid "Authname" msgstr "" #: ../gtk/ldap.ui.h:11 -#, fuzzy msgid "Realm" -msgstr "tartomány:" +msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Audió" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1738,18 +1656,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "Sip cím:" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Keres valakit" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1764,9 +1680,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Videó" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1790,11 +1705,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1802,81 +1714,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "Kapcsolódás..." +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "Kész" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Információk" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Telefonszám-cél keresése..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "Nem sikkerült értelmezni a számot." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "Kapcsolódás" -#: ../coreapi/linphonecore.c:2425 +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" msgstr "Nem sikerült hívni" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Elnézést, elértük a egyidejű hívások maximális számát" -#: ../coreapi/linphonecore.c:2745 +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" msgstr "kapcsolatba lépett veled." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "és automatikus választ kért." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "." -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "A hívási jellemzők módosítása..." -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Kapcsolódva." -#: ../coreapi/linphonecore.c:3220 +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" msgstr "Hívás megszakítva" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "Nem sikerült várakoztatni a hívást" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "Jelenlegi hívás várakoztatásának aktiválása..." -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "Stun keresés folyamatban..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "ICE helyi jelentkezők begyűjtése folyamatban..." @@ -1925,695 +1835,147 @@ msgid "Pending" msgstr "Függőben" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Időtartam" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "Ismeretlen programhiba" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"Az Ön által megadott SIP proxy cím érvénytelen. \"sip:\"-tal kell kezdődnie, " -"ezt egy hosztnév követi." +msgstr "Az Ön által megadott SIP proxy cím érvénytelen. \"sip:\"-tal kell kezdődnie, ezt egy hosztnév követi." -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"Az Ön által megadott SIP identitás érvénytelen.\n" -"Így kéne kinéznie: sip:felhasznalonev@proxytartomany, például sip:" -"aladar@pelda.hu" +msgstr "Az Ön által megadott SIP identitás érvénytelen.\nÍgy kéne kinéznie: sip:felhasznalonev@proxytartomany, például sip:aladar@pelda.hu" -#: ../coreapi/proxy.c:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "Nem sikerült belépni ezzel: %s" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "Távoli csengés." -#: ../coreapi/callbacks.c:373 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." msgstr "Távoli csengés..." -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "Korai médiák." -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "A hívás a következővel: %s várakoztatva" -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "%s fogadta a hívást - várakoztatva." -#: ../coreapi/callbacks.c:459 +#: ../coreapi/callbacks.c:498 msgid "Call resumed." msgstr "Hívás visszatért" -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "%s válaszolt a hívásra." -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." -msgstr "" -"Nem kompatibilis, ellenőrizze a kódek- vagy a biztonsági beállításokat..." +msgstr "Nem kompatibilis, ellenőrizze a kódek- vagy a biztonsági beállításokat..." -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "Nem kompatibilis médiajellemzők." + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "Visszatértünk." -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "Megállítva a másik fél által." -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "A hívás távolról frissítve." -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "A hívás befejezve." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "A felhasználó foglalt." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "A felhasználó ideiglenesen nem elérhető" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "A felhasználó nem akarja, hogy zavarják." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Hívás elutasítva" -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "Átirányítva" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." -msgstr "Nem kompatibilis médiajellemzők." - -#: ../coreapi/callbacks.c:798 +#: ../coreapi/callbacks.c:835 msgid "Call failed." msgstr "Nem sikerült a hívás." -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "A regisztáció a %s -n sikerült." -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "A kiregisztrálás kész a következőn: %s ." -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "időtúllépés után nincs válasz" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "A regisztáció a %s -n nem sikerült: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 +#: ../coreapi/linphonecall.c:174 #, c-format msgid "Authentication token is %s" msgstr "Hitelesítési jel: %s" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." -msgstr[0] "Van %i nem fogadott hivás." - -#~ msgid "aborted" -#~ msgstr "megszakítva" - -#~ msgid "completed" -#~ msgstr "befejezve" - -#~ msgid "missed" -#~ msgstr "elhibázva" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s nél %s\n" -#~ "Tól: %s\n" -#~ "Ig: %s\n" -#~ "Állapot: %s\n" -#~ "Időtartam: %i perc %i másodperc\n" - -#~ msgid "Outgoing call" -#~ msgstr "Kimenő hívás" - -#~ msgid "No response." -#~ msgstr "Nincs válasz." - -#~ msgid "Protocol error." -#~ msgstr "Protokol hiba." - -#~ 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" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "A számítógéped úgy tűnik, hogy ALSA hangot használ.\n" -#~ "Ez a legjobb választás. Mindazonáltal a pcm* OSS emuláció modulra\n" -#~ " a linphone-nak szüksége van és ez hiányzik. Kérem futassa le a\n" -#~ "'modprobe snd-pcm-oss' parancsot rendszergazdaként." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "A számítógéped úgy tűnik, hogy ALSA hangot használ.\n" -#~ "Ez a legjobb választás. Mindazonáltal a mixer OSS emuláció modulra\n" -#~ " a linphone-nak szüksége van és ez hiányzik. Kérem futassa le a\n" -#~ "'modprobe snd-pcm-oss' parancsot rendszergazdaként." - -#~ msgid "Chat with %s" -#~ msgstr "Chat-elés %s -el" - -#, fuzzy -#~ msgid "Choosing a username" -#~ msgstr "felhasználónév:" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "Engedélyezve" - -#, fuzzy -#~ msgid "Unmute" -#~ msgstr "Korlátlan" - -#, fuzzy -#~ msgid "Contact list" -#~ 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." - -#~ msgid "" -#~ "Your machine appears to be connected to an IPv6 network. By default " -#~ "linphone always uses IPv4. Please update your configuration if you want " -#~ "to use IPv6" -#~ msgstr "" -#~ "A géped úgy tűnik, hogy csatlakozik egy IPv6 hálózathoz. Alapból a " -#~ "linphone mindig az IPv4-et használja. Frissítsd a konfigurációdat, ha " -#~ "használni akarod az IPv6-ot" - -#, fuzzy -#~ msgid "_Modes" -#~ msgstr "Kodekek" - -#~ msgid "Accept" -#~ msgstr "Elfogad" - -#, fuzzy -#~ msgid "Incoming call from" -#~ msgstr "Beérkező hívás" - -#, fuzzy -#~ msgid "Linphone - Incoming call" -#~ msgstr "Beérkező hívás" - -#, fuzzy -#~ msgid "" -#~ "Audio codecs\n" -#~ "Video codecs" -#~ msgstr "Audio és video kodekek" - -#~ msgid "Sorry, having multiple simultaneous calls is not supported yet !" -#~ msgstr "Bocsánat, a többszörös egyidejű hívások még nem támogatottak!" - -#~ msgid "Could not reach destination." -#~ msgstr "A cél elérhetetlen." - -#~ msgid "Request Cancelled." -#~ msgstr "Kérelem elutasítva." - -#~ msgid "Bad request" -#~ msgstr "Rossz kérés" - -#~ msgid "User cannot be found at given address." -#~ msgstr "Nem telálható felhasználó at adott címen." - -#~ msgid "Remote user cannot support any of proposed codecs." -#~ msgstr "" -#~ "A távoli felhasználó nem rendelkezik a javasolt kódoló-dekódolókkal " -#~ "(codecs)" - -#~ msgid "Timeout." -#~ msgstr "Időtúllépés." - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "A távoli gép elérhető, de a kapcsolatot visszautasította." - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you\n" -#~ "to contact him using the following alternate resource:" -#~ msgstr "" -#~ "A felhasználó nem elérhető pillanatnyilag de meghívja Önt\n" -#~ "thogy lépjen kapcsolatba vele miközben használja a következő alternatív " -#~ "erőforrást:" - -#~ msgid "No nat/firewall address supplied !" -#~ msgstr "Nincs nat/tűzfal cím megadva!" - -#~ msgid "Invalid nat address '%s' : %s" -#~ msgstr "Hibás nat cím '%s' : %s" - -#~ msgid "Gone" -#~ msgstr "Elveszítve" - -#~ msgid "Waiting for Approval" -#~ msgstr "Jóváhagyásra vár" - -#~ msgid "Be Right Back" -#~ msgstr "Legyen igazad" - -#~ msgid "On The Phone" -#~ msgstr "Telefonál" - -#~ msgid "Out To Lunch" -#~ msgstr "Ebédelni ment" - -#~ msgid "Closed" -#~ msgstr "Lezárva" - -#, fuzzy -#~ msgid "_View" -#~ msgstr "Video" - -#, fuzzy -#~ msgid "_Properties" -#~ msgstr "RTP beállítások" - -#, fuzzy -#~ msgid "Show logs" -#~ msgstr "Mutasd a hívásokat" - -#, fuzzy -#~ msgid "_About" -#~ msgstr "Hozzáférés" - -#, fuzzy -#~ msgid "Proxy in use" -#~ msgstr "Használt SIP Proxy:" - -#~ msgid "Sound" -#~ msgstr "Hang" - -#, fuzzy -#~ msgid "Proxy accounts" -#~ msgstr "Használt SIP Proxy:" - -#~ msgid "Go" -#~ msgstr "Ugrás" - -#~ msgid "Exit" -#~ msgstr "Kilépés" - -#~ msgid "Shows the address book" -#~ msgstr "Mutasd a címjegyzéket" - -#~ msgid "..." -#~ msgstr "..." - -#~ msgid "" -#~ "Hangup\n" -#~ "or refuse" -#~ msgstr "" -#~ "Lerak vagy\n" -#~ "Nem válaszol" - -#~ msgid "Or chat !" -#~ msgstr "Vagy chat-elj!" - -#~ msgid "Show more..." -#~ msgstr "További beállítások..." - -#~ msgid "Playback level:" -#~ msgstr "Lejátszási hangerő:" - -#~ msgid "Recording level:" -#~ msgstr "Felvételi hangerő:" - -#~ msgid "Ring level:" -#~ msgstr "Csengetési hangerő:" - -#~ msgid "Controls" -#~ msgstr "Vezérlés" - -#~ msgid "Reachable" -#~ msgstr "Elérhető" - -#~ msgid "Busy, I'll be back in " -#~ msgstr "Foglalt vagyok, jövök vissza" - -#~ msgid "The other party will be informed that you'll be back in X minutes" -#~ msgstr "A másik fél tájékoztatva lesz, hogy X perc alatt vissza fogsz jönni" - -#~ msgid "mn" -#~ msgstr "perc" - -#~ msgid "Moved temporarily" -#~ msgstr "Ideiglenesen nem elérhető" - -#~ msgid "Alternative service" -#~ msgstr "Átirányítás" - -#~ msgid "URL:" -#~ msgstr "URL:" - -#~ msgid "Presence" -#~ msgstr "Elérhető" - -#~ msgid "Press digits to send DTMFs." -#~ msgstr "Nyomja le a számokat a DTMF küldéshez" - -#~ msgid "" -#~ " 3\n" -#~ "def" -#~ msgstr "" -#~ " 3\n" -#~ "def" - -#~ msgid "" -#~ " 2\n" -#~ "abc" -#~ msgstr "" -#~ " 2\n" -#~ "abc" - -#~ msgid "" -#~ " 4\n" -#~ "ghi" -#~ msgstr "" -#~ " 4\n" -#~ "ghi" - -#~ msgid "" -#~ " 5\n" -#~ "jkl" -#~ msgstr "" -#~ " 5\n" -#~ "jkl" - -#~ msgid "" -#~ " 6\n" -#~ "mno" -#~ msgstr "" -#~ " 6\n" -#~ "mno" - -#~ msgid "" -#~ " 7\n" -#~ "pqrs" -#~ msgstr "" -#~ " 7\n" -#~ "pqrs" - -#~ msgid "" -#~ " 8\n" -#~ "tuv" -#~ msgstr "" -#~ " 8\n" -#~ "tuv" - -#~ msgid "" -#~ " 9\n" -#~ "wxyz" -#~ msgstr "" -#~ " 9\n" -#~ "wxyz" - -#~ msgid "DTMF" -#~ msgstr "DTMF" - -#~ msgid "My online friends" -#~ msgstr "Elérhető partnerek" - -#~ msgid "" -#~ "C: 2001\n" -#~ "Made in Old Europe" -#~ msgstr "" -#~ "C: 2001\n" -#~ "Made in Old Europe" - -#~ msgid "" -#~ "Linphone is a web-phone.\n" -#~ "It is compatible with SIP and RTP protocols." -#~ msgstr "" -#~ "A Linphone egy web-telefon.\n" -#~ "SIP és RTP kompatíbilis." - -#~ msgid "http://www.linphone.org" -#~ msgstr "http://www.linphone.org" - -#~ msgid "Use IPv6 network (if available)" -#~ msgstr "IPv6 hálózat használata (ha elérhető)" - -#~ msgid "" -#~ "Toggle this if you are on an ipv6 network and you wish linphone to use it." -#~ msgstr "Ha egy IPv6 hálózat elérhető, akkor a linphone használja azt." - -#~ msgid "Global" -#~ msgstr "Általános" - -#~ msgid "" -#~ "These options is only for users in a private network, behind a gateway. " -#~ "If you are not in this situation, then leave this empty." -#~ msgstr "" -#~ "Ez az opció azoknak a felhasználóknak kell, akik egy privát hálózaton " -#~ "tűzfal mögül interneteznek. Egyébként üresen kell hagyni." - -#~ msgid "No firewall" -#~ msgstr "Nincs tűzfal" - -#~ msgid "Use this STUN server to guess firewall address :" -#~ msgstr "STUN szerver használata a tűzfal címének meghatározásához." - -#~ msgid "Specify firewall address manually:" -#~ msgstr "Tűzfal külső címe:" - -#~ msgid "NAT traversal options (experimental)" -#~ msgstr "NAT beállítások áttekintése (kísérleti)" - -#~ msgid "Number of buffered miliseconds (jitter compensation):" -#~ msgstr "A pufferelt milisecondok száma (jitter compensation):" - -#~ msgid "RTP port used for audio:" -#~ msgstr "RTP port, audió használatra:" - -#~ msgid "Use SIP INFO message instead of RTP rfc2833 for DTMF transmitting" -#~ msgstr "Használj SIP INFO üzenetet RTP rfc2833 helyett a DTMF átvitelnél" - -#~ msgid "RTP-RFC2833 is the recommended way." -#~ msgstr "RTP-RFC2833 az ajánlott." - -#~ msgid "Other" -#~ msgstr "Egyéb" - -#~ msgid "micro" -#~ msgstr "mikrofon" - -#~ msgid "Enable echo-canceler (cancels the echo heard by the remote party)" -#~ msgstr "" -#~ "Visszhang törlés engedélyezése (törli a visszhangot, amit hall a távoli " -#~ "partner" - -#~ msgid "Choose file" -#~ msgstr "Fájl kiválasztás" - -#~ msgid "Listen" -#~ msgstr "Hallgatás" - -#~ msgid "Run sip user agent on port:" -#~ msgstr "SIP felhasználó ügynök által használt port:" - -#~ msgid "It is strongly recommended to use port 5060." -#~ msgstr "Erősen ajánlott az 5060-as port használata." - -#~ msgid "@" -#~ msgstr "@" - -#~ msgid "Identity" -#~ msgstr "Azonosító" - -#~ msgid "Add proxy/registrar" -#~ msgstr "Proxy vagy regisztráció hozzáadás" - -#~ msgid "Clear all stored authentication information (username,password...)" -#~ msgstr "" -#~ "Az összes tárolt hitelesítési információ törlése (felhasználónév, " -#~ "jelszó...)" - -#~ msgid "List of audio codecs, in order of preference:" -#~ msgstr "Az audió kódoló-dekódolók listája, a preferencia rendjében:" - -#~ msgid "" -#~ "Note: Codecs in red are not usable regarding to your connection type to " -#~ "the internet." -#~ msgstr "" -#~ "Figyelem: A pirosban lévő kodekek nem használhatók a jelenlegi " -#~ "internetkapcsolattal." - -#~ msgid "Codec information" -#~ msgstr "Kodekinformáció" - -#~ msgid "Address Book" -#~ msgstr "Címjegyzék" - -#~ msgid "Select" -#~ msgstr "Kiválasztás" - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you to contact him " -#~ "using the following alternate ressource:" -#~ msgstr "" -#~ "A felhasználó jelenleg nem elérhető, de kéri, hogy lépj vele kapcsolatba " -#~ "itt:" - -#~ msgid "None." -#~ msgstr "Nincs." - -#~ msgid "Send registration:" -#~ msgstr "Regisztárció küldés:" - -#~ msgid "Name:" -#~ msgstr "Név:" - -#~ msgid "Subscribe policy:" -#~ msgstr "Láthatósági szabály:" - -#~ msgid "Send subscription (see person's online status)" -#~ msgstr "Láthatóság küldése (látszik a személy elérhetőségi státusza)" - -#~ msgid "New incoming subscription" -#~ msgstr "Új beérkező előfizetés" - -#~ msgid "You have received a new subscription..." -#~ msgstr "Megkaptál egy új előfizetést." - -#~ msgid "Refuse" -#~ msgstr "Hulladék" - -#~ msgid "Authentication required for realm" -#~ msgstr "Hitelesítési kérelem a tartománynak" - -#~ msgid "userid:" -#~ msgstr "felhasználói azonosító:" - -#~ msgid "Text:" -#~ msgstr "Szöveg:" - -#~ msgid "The caller asks for resource reservation. Do you agree ?" -#~ msgstr "A hívó forrásfoglalást kér. Egyetértesz?" - -#~ msgid "" -#~ "The caller doesn't use resource reservation. \t\t\t\t\tDo you wish to " -#~ "continue anyway ?" -#~ msgstr "" -#~ "A hívó nem használ forrásfoglalást. \t\t\t\t\tÍgy is szeretnéd folytatni?" - -#~ msgid "linphone - receiving call from %s" -#~ msgstr "linphone - hívást fogad innen %s" - -#~ msgid "" -#~ "You have received a subscription from %s.This means that this person " -#~ "wishes to be notified of your presence information (online, busy, " -#~ "away...).\n" -#~ "Do you agree ?" -#~ msgstr "" -#~ "Kaptál egy előfizetést tőle %s. Ez azt jelenti, hogy ez a személy " -#~ "szeretné, hogy értesítsék a jelenlétinformációd (online, elfoglalt, " -#~ "away...).\n" -#~ "Egyetértesz?" - -#~ msgid "Authentication required for realm %s" -#~ msgstr "Hitelesítési kérelem ebből a tartományból %s" - -#~ msgid "Wait" -#~ msgstr "Várakozás" - -#~ msgid "Deny" -#~ msgstr "Tiltás" - -#~ msgid "Bad sip address: a sip address looks like sip:user@domain" -#~ msgstr "Rossz sip cím: egy sip cím általában így néz ki: user@domain" - -#~ msgid "Stun lookup done..." -#~ msgstr "Stun keresés kész..." +msgstr[0] "" +msgstr[1] "" diff --git a/po/it.po b/po/it.po index 980db056b..d9d6c0e41 100644 --- a/po/it.po +++ b/po/it.po @@ -1,19 +1,21 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# FIRST AUTHOR , YEAR. -# +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: Linphone 3.2.0\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2002-10-15 HO:MI+ZONE\n" -"Last-Translator: Matteo Piazza \n" -"Language-Team: it \n" -"Language: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:16+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Italian (http://www.transifex.com/projects/p/linphone-gtk/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -26,28 +28,25 @@ msgid "Send text to %s" msgstr "Invia testo a %s" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "In chiamata con" +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "annullato" +msgstr "" #: ../gtk/calllogs.c:320 -#, fuzzy msgid "Missed" -msgstr "mancante" +msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "Rifiuta" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format @@ -87,11 +86,8 @@ msgid "Conference" msgstr "" #: ../gtk/conference.c:46 -#, fuzzy msgid "Me" msgstr "" -"Chiudi\n" -"microfono" #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102 #, c-format @@ -128,105 +124,92 @@ msgstr "" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" msgstr "" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Informazioni" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "Configuratore di account" +msgstr "" -#: ../gtk/main.c:590 -#, fuzzy, c-format -msgid "Call with %s" -msgstr "Chat con %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 voui aggiungere il tuo contatto alla sua listaVoui permettere che lui " -"veda il tuo stato o aggiungerlo alla tua lista dei contatti Se rispondi no " -"questo utente sarà momentaneamente bloccato." +msgstr "%s voui aggiungere il tuo contatto alla sua listaVoui permettere che lui veda il tuo stato o aggiungerlo alla tua lista dei contatti Se rispondi no questo utente sarà momentaneamente bloccato." -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "Prego inserire la password per username %s e dominio %s" +msgstr "" -#: ../gtk/main.c:1376 -#, fuzzy +#: ../gtk/main.c:1283 msgid "Call error" -msgstr "Cronologia" +msgstr "" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "Chiamata terminata" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Chimata in entrata" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Rifiuta" -#: ../gtk/main.c:1392 -#, fuzzy +#: ../gtk/main.c:1299 msgid "Call paused" -msgstr "annullato" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "Porte" +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (Default)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 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:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "" @@ -243,9 +226,8 @@ msgid "Name" msgstr "Nome" #: ../gtk/friendlist.c:721 -#, fuzzy msgid "Call" -msgstr "Chiamata %s" +msgstr "" #: ../gtk/friendlist.c:726 msgid "Chat" @@ -267,9 +249,9 @@ msgid "Delete contact '%s'" msgstr "Elimina contatto %s" #: ../gtk/friendlist.c:978 -#, fuzzy, c-format +#, c-format msgid "Delete chat history of '%s'" -msgstr "Elimina contatto %s" +msgstr "" #: ../gtk/friendlist.c:1029 #, c-format @@ -285,9 +267,8 @@ msgid "Status" msgstr "Stato" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Bitrate Min (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -305,92 +286,92 @@ msgstr "Disattivato" msgid "Account" msgstr "Account" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "Inglese" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "Francese" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "Svedese" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "Italiano" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "Spagnolo" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "Polacco" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "Tedesco" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "Russo" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "Giapponese" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "Olandese" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "Ungherese" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "Ceco" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 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:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -399,9 +380,7 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"Una versione più recente è disponibile da %s.\n" -"Vuoi aprire un browser per eseguire il download ?" +msgstr "Una versione più recente è disponibile da %s.\nVuoi aprire un browser per eseguire il download ?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -438,24 +417,19 @@ msgstr[1] "Trovato %i contatti" msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"Benvenuti !\n" -"La procedura vi aiutera a configurare un account SIP." +msgstr "Benvenuti !\nLa procedura vi aiutera a configurare un account SIP." #: ../gtk/setupwizard.c:43 -#, fuzzy msgid "Create an account on linphone.org" -msgstr "Creare un account scegliendo l'username" +msgstr "" #: ../gtk/setupwizard.c:44 -#, fuzzy msgid "I have already a linphone.org account and I just want to use it" -msgstr "Ho gia un account e voglio usarlo" +msgstr "" #: ../gtk/setupwizard.c:45 -#, fuzzy msgid "I have already a sip account and I just want to use it" -msgstr "Ho gia un account e voglio usarlo" +msgstr "" #: ../gtk/setupwizard.c:46 msgid "I want to specify a remote configuration URI" @@ -478,14 +452,12 @@ msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "Username" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "Password" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -500,14 +472,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "Manuale utente" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "Password:" +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -533,15 +503,13 @@ msgstr "Grazie. Il tuo account è configurato e pronto all'uso" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "Configuratore di account" +msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -552,9 +520,8 @@ msgid "Account setup assistant" msgstr "Configuratore di account" #: ../gtk/setupwizard.c:629 -#, fuzzy msgid "Configure your account (step 1/1)" -msgstr "Configurazione SIP account" +msgstr "" #: ../gtk/setupwizard.c:634 msgid "Enter your sip username (step 1/1)" @@ -573,14 +540,13 @@ msgid "Error" msgstr "" #: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 -#, fuzzy msgid "Terminating" -msgstr "Termina chiamata" +msgstr "" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, fuzzy, c-format +#, c-format msgid "Call #%i" -msgstr "Chiamata %s" +msgstr "" #: ../gtk/incall_view.c:155 #, c-format @@ -596,9 +562,8 @@ msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "Filtro ICE" +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -609,9 +574,8 @@ msgid "Going through one or more NATs" msgstr "" #: ../gtk/incall_view.c:229 -#, fuzzy msgid "Direct" -msgstr "Rediretto verso %s..." +msgstr "" #: ../gtk/incall_view.c:231 msgid "Through a relay server" @@ -622,9 +586,8 @@ msgid "uPnP not activated" msgstr "" #: ../gtk/incall_view.c:241 -#, fuzzy msgid "uPnP in progress" -msgstr "Ricerca Stun in progresso ..." +msgstr "" #: ../gtk/incall_view.c:243 msgid "uPnp not available" @@ -635,9 +598,8 @@ msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "Filtro ICE" +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -664,113 +626,108 @@ msgstr "" msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 -#, fuzzy +#: ../gtk/incall_view.c:511 msgid "Calling..." -msgstr "Linguaggio" +msgstr "" -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "" -#: ../gtk/incall_view.c:515 -#, fuzzy +#: ../gtk/incall_view.c:525 msgid "Incoming call" -msgstr "Chimata in entrata" +msgstr "" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:702 -#, fuzzy +#: ../gtk/incall_view.c:722 msgid "In call" -msgstr "In chiamata con" +msgstr "" -#: ../gtk/incall_view.c:738 -#, fuzzy +#: ../gtk/incall_view.c:758 msgid "Paused call" -msgstr "Termina chiamata" +msgstr "" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Chiamata terminata." -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "Chiamata rifiutata" +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "" @@ -780,9 +737,9 @@ msgid "Please enter login information for %s" msgstr "Prego inserire le proprie credenziali di accesso per %s" #: ../gtk/config-fetching.c:57 -#, fuzzy, c-format +#, c-format msgid "fetching from %s" -msgstr "Chiamata proveniente da %s" +msgstr "" #: ../gtk/config-fetching.c:73 #, c-format @@ -806,18 +763,14 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Benvenuti !\n" -"La procedura vi aiutera a configurare un account SIP." #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Dispositivo microfono:" +msgstr "" #: ../gtk/audio_assistant.c:329 msgid "Recorded volume" @@ -828,9 +781,8 @@ msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Dispositivo uscita audio:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -849,14 +801,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "Configuratore" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "Configuratore di account" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -871,9 +821,8 @@ msgid "Record and Play" msgstr "" #: ../gtk/main.ui.h:1 -#, fuzzy msgid "Callee name" -msgstr "Chiamata terminata." +msgstr "" #: ../gtk/main.ui.h:2 msgid "Send" @@ -916,22 +865,16 @@ msgid "All users" msgstr "" #: ../gtk/main.ui.h:18 -#, fuzzy msgid "Online users" msgstr "" -"Tutti gli utenti\n" -"Utenti Online" #: ../gtk/main.ui.h:19 msgid "ADSL" msgstr "" #: ../gtk/main.ui.h:20 -#, fuzzy msgid "Fiber Channel" msgstr "" -"ADSL\n" -"Fibra Ottica" #: ../gtk/main.ui.h:21 msgid "Default" @@ -942,9 +885,8 @@ msgid "_Options" msgstr "" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Informazioni" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -959,9 +901,8 @@ msgid "_Help" msgstr "" #: ../gtk/main.ui.h:27 -#, fuzzy msgid "Show debug window" -msgstr "Linphone debug window" +msgstr "" #: ../gtk/main.ui.h:28 msgid "_Homepage" @@ -972,9 +913,8 @@ msgid "Check _Updates" msgstr "" #: ../gtk/main.ui.h:30 -#, fuzzy msgid "Account assistant" -msgstr "Configuratore di account" +msgstr "" #: ../gtk/main.ui.h:32 msgid "SIP address or phone number:" @@ -985,28 +925,24 @@ msgid "Initiate a new call" msgstr "" #: ../gtk/main.ui.h:34 -#, fuzzy msgid "Contacts" -msgstr "In connessione" +msgstr "" #: ../gtk/main.ui.h:35 msgid "Search" msgstr "" #: ../gtk/main.ui.h:36 -#, fuzzy msgid "Add contacts from directory" -msgstr "Aggiungi nuovo contatto dalla directory %s" +msgstr "" #: ../gtk/main.ui.h:37 -#, fuzzy msgid "Add contact" -msgstr "Trovato %i contatto" +msgstr "" #: ../gtk/main.ui.h:38 -#, fuzzy msgid "Recent calls" -msgstr "In chiamata" +msgstr "" #: ../gtk/main.ui.h:39 msgid "My current identity:" @@ -1053,9 +989,8 @@ msgid "(C) Belledonne Communications,2010\n" msgstr "" #: ../gtk/about.ui.h:4 -#, fuzzy msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "Un internet video telefono basato sullo standard SIP (rfc3261)" +msgstr "" #: ../gtk/about.ui.h:5 msgid "" @@ -1098,9 +1033,8 @@ msgid "Scroll to end" msgstr "" #: ../gtk/password.ui.h:1 -#, fuzzy msgid "Linphone - Authentication required" -msgstr "Linphone - Autenticazione richiesta" +msgstr "" #: ../gtk/password.ui.h:2 msgid "Please enter the domain password" @@ -1115,9 +1049,8 @@ msgid "Clear all" msgstr "" #: ../gtk/call_logs.ui.h:3 -#, fuzzy msgid "Call back" -msgstr "Chiamata %s" +msgstr "" #: ../gtk/sip_account.ui.h:1 msgid "Linphone - Configure a SIP account" @@ -1148,9 +1081,8 @@ msgid "Registration duration (sec):" msgstr "Durata registrazione (sec)" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "Rotta (opzionale)" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1161,9 +1093,8 @@ msgid "Route (optional):" msgstr "Rotta (opzionale)" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Transporto" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1174,9 +1105,8 @@ msgid "Publish presence information" msgstr "Pubblica stato della presenza" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Attivato" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1199,9 +1129,8 @@ msgid "default soundcard" msgstr "default scheda audio" #: ../gtk/parameters.ui.h:5 -#, fuzzy msgid "a sound card" -msgstr "una scheda audio\n" +msgstr "" #: ../gtk/parameters.ui.h:6 msgid "default camera" @@ -1212,37 +1141,28 @@ msgid "CIF" msgstr "CIF" #: ../gtk/parameters.ui.h:8 -#, fuzzy msgid "Audio codecs" msgstr "" -"Audio codecs\n" -"Video codecs" #: ../gtk/parameters.ui.h:9 -#, fuzzy msgid "Video codecs" msgstr "" -"Audio codecs\n" -"Video codecs" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" msgstr "C" #: ../gtk/parameters.ui.h:11 -#, fuzzy msgid "SIP (UDP)" -msgstr "SIP (UDP)" +msgstr "" #: ../gtk/parameters.ui.h:12 -#, fuzzy msgid "SIP (TCP)" -msgstr "SIP (UDP)" +msgstr "" #: ../gtk/parameters.ui.h:13 -#, fuzzy msgid "SIP (TLS)" -msgstr "SIP (UDP)" +msgstr "" #: ../gtk/parameters.ui.h:14 msgid "Settings" @@ -1309,23 +1229,20 @@ msgid "Direct connection to the Internet" msgstr "Connessione diretta a internet" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "Dietro NAT / Firewall (IP del gateway)" +msgstr "" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" msgstr "Dietro NAT / Firewall (utilizza STUN)" #: ../gtk/parameters.ui.h:32 -#, fuzzy msgid "Behind NAT / Firewall (use ICE)" -msgstr "Dietro NAT / Firewall (utilizza STUN)" +msgstr "" #: ../gtk/parameters.ui.h:33 -#, fuzzy msgid "Behind NAT / Firewall (use uPnP)" -msgstr "Dietro NAT / Firewall (utilizza STUN)" +msgstr "" #: ../gtk/parameters.ui.h:34 msgid "Public IP address:" @@ -1380,9 +1297,8 @@ msgid "Prefered video resolution:" msgstr "Risoluzione video preferita" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Dispositivo Video:" +msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1394,8 +1310,7 @@ msgstr "Impostazioni multimediali" #: ../gtk/parameters.ui.h:50 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" +msgstr "questa sezione definisce il tuo indirizzo SIP se non hai account attivi" #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" @@ -1496,32 +1411,28 @@ msgid "Show advanced settings" msgstr "" #: ../gtk/parameters.ui.h:75 -#, fuzzy msgid "Level" -msgstr "Linguaggio" +msgstr "" #: ../gtk/parameters.ui.h:76 msgid "User interface" msgstr "Interfaccia utente" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "Indirizzi SIP" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Linphone - Autenticazione richiesta" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "etichetta" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Account proxy" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" @@ -1552,46 +1463,36 @@ msgid "Please wait" msgstr "Prego attendere" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "Preferenze" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" msgstr "" #: ../gtk/dscp_settings.ui.h:3 -#, fuzzy msgid "Audio RTP stream" -msgstr "campionatore di frequenza" +msgstr "" #: ../gtk/dscp_settings.ui.h:4 -#, fuzzy msgid "Video RTP stream" -msgstr "Video RTP/UDP" +msgstr "" #: ../gtk/dscp_settings.ui.h:5 msgid "Set DSCP values (in hexadecimal)" msgstr "" #: ../gtk/call_statistics.ui.h:1 -#, fuzzy msgid "Call statistics" -msgstr "Chiamata %s" +msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" msgstr "" -"Audio codecs\n" -"Video codecs" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" msgstr "" -"Audio codecs\n" -"Video codecs" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1618,24 +1519,20 @@ msgid "Video resolution received" msgstr "" #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "Risoluzione video preferita" +msgstr "" #: ../gtk/call_statistics.ui.h:11 -#, fuzzy msgid "RTP profile" -msgstr "RTP imput filter" +msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "Contact informazioni" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 -#, fuzzy msgid "Configure VoIP tunnel" -msgstr "Configurazione SIP account" +msgstr "" #: ../gtk/tunnel_config.ui.h:2 msgid "Host" @@ -1714,9 +1611,8 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Preferenze" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" @@ -1727,9 +1623,8 @@ msgid "Not yet available" msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Codecs" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1744,9 +1639,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Audio" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1762,18 +1656,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "Indirizzi SIP" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Cerca" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1788,9 +1680,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Video" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1814,11 +1705,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1826,86 +1714,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "In connessione..." +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "Pronto" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Informazioni" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Ricerca numero destinazione..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "Impossibile risolvere il numero." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "In connessione" -#: ../coreapi/linphonecore.c:2425 -#, fuzzy +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" -msgstr "chiamata fallita" +msgstr "" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:2745 -#, fuzzy +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" -msgstr "ti sta conttatando." +msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "" -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Connessione" -#: ../coreapi/linphonecore.c:3220 -#, fuzzy +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" -msgstr "annullato" +msgstr "" -#: ../coreapi/linphonecore.c:3412 -#, fuzzy +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" -msgstr "chiamata fallita" +msgstr "" -#: ../coreapi/linphonecore.c:3417 -#, fuzzy +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." -msgstr "Mostra chiamata corrente" +msgstr "" -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "Ricerca Stun in progresso ..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1954,579 +1835,147 @@ msgid "Pending" msgstr "Pendente" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Durata" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "Bug-sconosciuto" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"L'indirizzo sip proxy utilizzato è invalido, deve iniziare con \"sip:\" " -"seguito dall' hostaname." +msgstr "L'indirizzo sip proxy utilizzato è invalido, deve iniziare con \"sip:\" seguito dall' hostaname." -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"L'identità sip utilizza è invalida.\n" -"Dovrebbre essere sip:username@proxydomain, esempio: sip:alice@example.net" +msgstr "L'identità sip utilizza è invalida.\nDovrebbre essere sip:username@proxydomain, esempio: sip:alice@example.net" -#: ../coreapi/proxy.c:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "impossibile login come %s" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:373 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:435 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:475 +#, c-format msgid "Call with %s is paused." -msgstr "Chat con %s" +msgstr "" -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:459 -#, fuzzy +#: ../coreapi/callbacks.c:498 msgid "Call resumed." -msgstr "Chiamata terminata" +msgstr "" -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "" -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "Chiamata terminata." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Utente occupato" -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "Utente non disponibile" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "L'utente non vuole essere disturbato" -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Chiamata rifiutata" -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 -#, fuzzy +#: ../coreapi/callbacks.c:780 msgid "Redirected" -msgstr "Rediretto verso %s..." - -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:798 -#, fuzzy +#: ../coreapi/callbacks.c:835 msgid "Call failed." -msgstr "Chiamata rifiutata" +msgstr "" -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "Registrazione su %s attiva" -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "Unregistrazione su %s" -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "timeout no risposta" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrazione su %s fallita: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:174 +#, c-format msgid "Authentication token is %s" -msgstr "Linphone - Autenticazione richiesta" +msgstr "" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "" msgstr[1] "" - -#~ msgid "aborted" -#~ msgstr "annullato" - -#~ msgid "completed" -#~ msgstr "comletato" - -#~ msgid "missed" -#~ msgstr "mancante" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s at %s\n" -#~ "Da: %s\n" -#~ "Verso: %s\n" -#~ "Stato: %s\n" -#~ "Durata: %i mn %i sec\n" - -#~ msgid "Outgoing call" -#~ msgstr "Chiamata in uscita" - -#, fuzzy -#~ msgid "No response." -#~ msgstr "timeout no risposta" - -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "Errore nel formato del contatto sip. Usualmente un indirizzo appare sip:" -#~ "user@domain" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Il tuo computer appare utlizzare il driver ALSA.\n" -#~ "Questa è la scelta migliore. Tuttavia il modulo di emulazione pcm oss\n" -#~ "è assente e linphone lo richede. Prego eseguire\n" -#~ "'modprobe snd-pcm-oss' da utente root per caricarlo." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Il tuo computer appare utlizzare il driver ALSA.\n" -#~ "Questa è la scelta migliore. Tuttavia il modulo di emulazione mixer oss\n" -#~ "è assente e linphone lo richede. Prego eseguire\n" -#~ "'modprobe snd-mixer-oss' da utente root per caricarlo." - -#~ msgid "Chat with %s" -#~ msgstr "Chat con %s" - -#~ msgid "Please choose a username:" -#~ msgstr "Prego scegliere un username" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "Controllo se '%s' è disponibile..." - -#~ msgid "Please wait..." -#~ msgstr "Prego attendere ..." - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "Spiacenti, questo usernsame è gia utilizzato. Prego riprovare" - -#~ msgid "Ok !" -#~ msgstr "Ok !" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "Errore di comunicazione, prego riprovare." - -#~ msgid "Choosing a username" -#~ msgstr "Scegli un username" - -#~ msgid "Verifying" -#~ msgstr "Verifica" - -#~ msgid "Creating your account" -#~ msgstr "Creazione account" - -#~ msgid "Now ready !" -#~ msgstr "Pronto !" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "Attivato" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "Inserisci username, numero o indirizzo sip" - -#~ msgid "in" -#~ msgstr "in" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "Registrati a FONICS\n" -#~ "virtual network !" - -#~ msgid "Unmute" -#~ msgstr "" -#~ "Attiva\n" -#~ "microfono" - -#~ msgid "Contact list" -#~ msgstr "Lista contatti" - -#, 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 "ITU-G.711 alaw encoder" -#~ msgstr "ITU-G.711 alaw encoder" - -#~ msgid "ITU-G.711 alaw decoder" -#~ msgstr "ITU-G.711 alaw decoder" - -#~ msgid "Alsa sound source" -#~ msgstr "Alsa sound sorgente" - -#~ msgid "Alsa sound output" -#~ msgstr "Alsa sound riproduzione" - -#~ msgid "Sound capture filter for MacOS X Audio Queue Service" -#~ msgstr "Sound capture filter for MacOS X Audio Queue Service" - -#~ msgid "Sound playback filter for MacOS X Audio Queue Service" -#~ msgstr "Sound playback filter for MacOS X Audio Queue Service" - -#~ msgid "DTMF generator" -#~ msgstr "Generatore DTMF" - -#~ msgid "The GSM full-rate codec" -#~ msgstr "GSM full-rate codec" - -#~ msgid "The GSM codec" -#~ msgstr "GSM codec" - -#, fuzzy -#~ msgid "Sound capture filter for MacOS X Audio Unit" -#~ msgstr "Sound capture filter for MacOS X Audio Queue Service" - -#, fuzzy -#~ msgid "Sound playback filter for MacOS X Audio Unit" -#~ msgstr "Sound playback filter for MacOS X Audio Queue Service" - -#~ msgid "A filter to make conferencing" -#~ msgstr "Un filtro per fare conferenze" - -#~ msgid "Raw files and wav reader" -#~ msgstr "Raw files and wav reader" - -#~ msgid "Wav file recorder" -#~ msgstr "Registratore Wav file" - -#~ msgid "A filter that send several inputs to one output." -#~ msgstr "Un filtro che invia alcuni inputs in un unico output" - -#~ msgid "RTP output filter" -#~ msgstr "RTP output filter" - -#~ msgid "The free and wonderful speex codec" -#~ msgstr "The free and wonderful speex codec" - -#~ msgid "A filter that controls and measure sound volume" -#~ msgstr "Un filtro che controlla e misura il volume" - -#~ msgid "A video4linux compatible source filter to stream pictures." -#~ msgstr "Un video4linux filtro per inviare immagini" - -#~ msgid "A filter to grab pictures from Video4Linux2-powered cameras" -#~ msgstr "un filtro per catturare immagini da video4linux2 videocamere" - -#~ msgid "A filter that outputs a static image." -#~ msgstr "Un filtro che invia una immagine statica" - -#~ msgid "A pixel format converter" -#~ msgstr "Un convertitore di formati pixel" - -#~ msgid "A video size converter" -#~ msgstr "Un convertitore dimesione video " - -#~ msgid "a small video size converter" -#~ msgstr "un piccolo convertitore dimesione video" - -#, fuzzy -#~ msgid "Echo canceller using speex library" -#~ msgstr "Cancellazione eco utilizzando la libreria speex" - -#~ msgid "A filter that reads from input and copy to its multiple outputs." -#~ msgstr "Un filtro che legge gli inout e copia su multipli output." - -#~ msgid "The theora video encoder from xiph.org" -#~ msgstr "Theora video encoder da xiph.org" - -#~ msgid "The open-source and royalty-free 'theora' video codec from xiph.org" -#~ msgstr "Open-source and royalty-free 'theora' video codec da xiph.org" - -#~ msgid "The theora video decoder from xiph.org" -#~ msgstr "Theora video decoder from xiph.org" - -#~ msgid "ITU-G.711 ulaw encoder" -#~ msgstr "ITU-G.711 ulaw encoder" - -#~ msgid "ITU-G.711 ulaw decoder" -#~ msgstr "ITU-G.711 ulaw decoder" - -#~ msgid "A H.263 decoder using ffmpeg library" -#~ msgstr "Un H.263 decoder che utilizza le librerie ffmpeg" - -#~ msgid "A MPEG4 decoder using ffmpeg library" -#~ msgstr "Un MPEG4 decoder che utilizza le librerie ffmpeg" - -#~ msgid "A RTP/JPEG decoder using ffmpeg library" -#~ msgstr "Un RTP/JPEG decoder che utilizza le librerie ffmpeg" - -#~ msgid "A MJPEG decoder using ffmpeg library" -#~ msgstr "Un MJPEG decoder che utilizza le librerie ffmpeg" - -#~ msgid "A snow decoder using ffmpeg library" -#~ msgstr "Un snow decoder che utilizza le librerie ffmpeg" - -#~ msgid "A video H.263 encoder using ffmpeg library." -#~ msgstr "Un H.263 encoder che utilizza le librerie ffmpeg" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library. It is compliant with old " -#~ "RFC2190 spec." -#~ msgstr "" -#~ "Un H.263 encoder che utilizza le librerie ffmpeg. Compliante con RFC2190 " -#~ "spec." - -#~ msgid "A video MPEG4 encoder using ffmpeg library." -#~ msgstr "Un MPEG4 encoder che utilizza le librerie ffmpeg" - -#~ msgid "A video snow encoder using ffmpeg library." -#~ msgstr "Un snow encoder che utilizza le librerie ffmpeg" - -#~ msgid "A RTP/MJPEG encoder using ffmpeg library." -#~ msgstr "Un RTP/JPEG decoder che utilizza le librerie ffmpeg" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library, compliant with old RFC2190 " -#~ "spec." -#~ msgstr "" -#~ "Un H.263 encoder che utilizza le librerie ffmpeg. Compliante con RFC2190 " -#~ "spec." - -#~ msgid "A MJPEG encoder using ffmpeg library." -#~ msgstr "Un MJPEG encoder che utilizza le librerie ffmpeg" - -#, fuzzy -#~ msgid "A SDL-based video display" -#~ msgstr "Un generico video display" - -#~ msgid "A video4windows compatible source filter to stream pictures." -#~ msgstr "Un filtro video4windows per lo streaming delle immagini." - -#~ msgid "A video for windows (vfw.h) based source filter to grab pictures." -#~ msgstr "Un filtro (vfw.h) per catturare immagini." - -#~ msgid "Parametric sound equalizer." -#~ msgstr "Equalizzatore di suono." - -#~ msgid "A webcam grabber based on directshow." -#~ msgstr "Un webcam grabber basato su directshow." - -#, fuzzy -#~ msgid "A filter that converts from mono to stereo and vice versa." -#~ msgstr "Un filtro che controlla e misura il volume" - -#, fuzzy -#~ msgid "Inter ticker communication filter." -#~ msgstr "Errore di comunicazione" - -#, fuzzy -#~ msgid "Sound capture filter for MacOS X Audio Unit Service" -#~ msgstr "Sound capture filter for MacOS X Audio Queue Service" - -#, fuzzy -#~ msgid "Sound playback filter for MacOS X Audio Unit Service" -#~ msgstr "Sound playback filter for MacOS X Audio Queue Service" - -#, fuzzy -#~ msgid "Sound capture filter for Android" -#~ msgstr "Filtro per la cattura audio per i driver OSS" - -#, fuzzy -#~ msgid "Sound playback filter for Android" -#~ msgstr "Filtro per la riproduzione audio per i driver OSS" - -#, fuzzy -#~ msgid "A filter that captures Android video." -#~ msgstr "Un filtro che controlla e misura il volume" - -#~ msgid "" -#~ "Your machine appears to be connected to an IPv6 network. By default " -#~ "linphone always uses IPv4. Please update your configuration if you want " -#~ "to use IPv6" -#~ msgstr "" -#~ "La tua macchina sembra connessa ad una rete IPv6. Di default linphone " -#~ "utilizza IPv4. Prego aggiorna la tua configurazione se vuoi usare IPv6" - -#~ msgid "Sound capture filter for MacOS X Core Audio drivers" -#~ msgstr "Sound capture filter for MacOS X Core Audio drivers" - -#~ msgid "Sound playback filter for MacOS X Core Audio drivers" -#~ msgstr "Sound playback filter for MacOS X Core Audio drivers" - -#~ msgid "Start call" -#~ msgstr "Inizia chiamata" - -#~ msgid "_Modes" -#~ msgstr "_Modi" - -#~ msgid "Created by Simon Morlat\n" -#~ msgstr "Creato da Simon Morlat\n" - -#~ msgid "Accept" -#~ msgstr "Accetta" - -#~ msgid "Incoming call from" -#~ msgstr "Chiama in entrata da" - -#~ msgid "Linphone - Incoming call" -#~ msgstr "Linphone - Chiamata in entrata" - -#~ msgid "default soundcard\n" -#~ msgstr "default scheda audio\n" - -#~ msgid "" -#~ "Remote end seems to have disconnected, the call is going to be closed." -#~ msgstr "L'utente remoto sembra disconesso, la chiamata verrà terminata" - -#~ msgid "Sorry, having multiple simultaneous calls is not supported yet !" -#~ msgstr "Spiacenti, le chiamate multiple non sono supportate" - -#~ msgid "Could not reach destination." -#~ msgstr "Non posso raggiungere la destinazione" - -#~ msgid "Request Cancelled." -#~ msgstr "Richiesta cancellata" - -#~ msgid "Bad request" -#~ msgstr "Richiesta errata" - -#~ msgid "User cannot be found at given address." -#~ msgstr "L'utente non trovato." - -#~ msgid "Remote user cannot support any of proposed codecs." -#~ msgstr "L'utente remoto non supporta alcun code proposto." - -#~ msgid "Timeout." -#~ msgstr "Timeout." - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "Utente remoto trovato ma ha rifiutato la connessione." - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you\n" -#~ "to contact him using the following alternate resource:" -#~ msgstr "" -#~ "L'utente non è raggiungibile ma ti ha invitato\n" -#~ "per contattarlo usare l'indirizzo alternativo:" - -#~ msgid "Digits" -#~ msgstr "Caratteri" - -#~ msgid "Main view" -#~ msgstr "Vista principale" - -#~ msgid "No nat/firewall address supplied !" -#~ msgstr "Non è stato fornito un indirizzo nat/firewall!" - -#~ msgid "Invalid nat address '%s' : %s" -#~ msgstr "Indirizzo NAT invalido '%s' : %s" - -#~ msgid "Gone" -#~ msgstr "Uscita" - -#~ msgid "Waiting for Approval" -#~ msgstr "In attesa di approvazione" - -#~ msgid "Be Right Back" -#~ msgstr "Torno subito" - -#~ msgid "On The Phone" -#~ msgstr "Al telefono" - -#~ msgid "Out To Lunch" -#~ msgstr "Fuori per pranzo" - -#~ msgid "Closed" -#~ msgstr "Chiuso" - -#~ msgid "Unknown" -#~ msgstr "Sconosciuto" - -#~ msgid "Bresilian" -#~ msgstr "Brasiliano" diff --git a/po/ja.po b/po/ja.po index 6a5e37625..87ead9898 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1,21 +1,21 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# 山口善也 , 2002. -# -#, fuzzy +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: linphone 0.10\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2003-01-21 00:05+9000\n" -"Last-Translator: YAMAGUCHI YOSHIYA \n" -"Language-Team: \n" -"Language: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:08+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -28,41 +28,37 @@ msgid "Send text to %s" msgstr "" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "接続中" +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "通話はキャンセルされました。" +msgstr "" #: ../gtk/calllogs.c:320 msgid "Missed" msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "ライン入力" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "" -msgstr[1] "" #: ../gtk/calllogs.c:332 #, c-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "" -msgstr[1] "" #: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 #, c-format @@ -126,124 +122,110 @@ msgstr "" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" msgstr "" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "情報" +msgstr "" #: ../gtk/main.c:163 msgid "Run the audio assistant" msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 "" -#: ../gtk/main.c:1260 +#: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1376 -#, fuzzy +#: ../gtk/main.c:1283 msgid "Call error" -msgstr "通話はキャンセルされました。" +msgstr "" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 -#, fuzzy +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" -msgstr "通話は拒否されました。" +msgstr "" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 -#, fuzzy +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" -msgstr "ライン入力" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy +#: ../gtk/main.c:1299 msgid "Call paused" -msgstr "通話はキャンセルされました。" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "接続中" +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 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:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "" #: ../gtk/friendlist.c:505 -#, fuzzy msgid "Add to addressbook" -msgstr "電話帳" +msgstr "" #: ../gtk/friendlist.c:691 -#, fuzzy msgid "Presence status" -msgstr "状態" +msgstr "" #: ../gtk/friendlist.c:709 ../gtk/propertybox.c:552 ../gtk/contact.ui.h:1 msgid "Name" msgstr "名前" #: ../gtk/friendlist.c:721 -#, fuzzy msgid "Call" -msgstr "通話はキャンセルされました。" +msgstr "" #: ../gtk/friendlist.c:726 msgid "Chat" @@ -255,9 +237,9 @@ msgid "Search in %s directory" msgstr "" #: ../gtk/friendlist.c:976 -#, fuzzy, c-format +#, c-format msgid "Edit contact '%s'" -msgstr "(接続するための情報がありません!)" +msgstr "" #: ../gtk/friendlist.c:977 #, c-format @@ -283,9 +265,8 @@ msgid "Status" msgstr "状態" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "最低限のビットレート (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -303,93 +284,92 @@ msgstr "使用しない" msgid "Account" msgstr "" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "Français" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "日本語" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "Magyar" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "čeština" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "简体中文" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "" -#: ../gtk/propertybox.c:1225 -#, fuzzy +#: ../gtk/propertybox.c:1234 msgid "None" -msgstr "ありません。" +msgstr "" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -413,14 +393,12 @@ msgid "Error communicating with server." msgstr "" #: ../gtk/buddylookup.c:164 -#, fuzzy msgid "Connecting..." -msgstr "コネクション" +msgstr "" #: ../gtk/buddylookup.c:168 -#, fuzzy msgid "Connected" -msgstr "接続しました。" +msgstr "" #: ../gtk/buddylookup.c:172 msgid "Receiving data..." @@ -431,7 +409,6 @@ msgstr "" msgid "Found %i contact" msgid_plural "Found %i contacts" msgstr[0] "" -msgstr[1] "" #: ../gtk/setupwizard.c:34 msgid "" @@ -460,28 +437,24 @@ msgid "Enter your linphone.org username" msgstr "" #: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 -#, fuzzy msgid "Username:" -msgstr "ユーザーマニュアル" +msgstr "" #: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 -#, fuzzy msgid "Password:" -msgstr "パスワード" +msgstr "" #: ../gtk/setupwizard.c:124 msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "ユーザーマニュアル" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "パスワード" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -496,14 +469,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "ユーザーマニュアル" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "パスワード" +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -529,8 +500,7 @@ msgstr "" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" @@ -571,9 +541,9 @@ msgid "Terminating" msgstr "" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, fuzzy, c-format +#, c-format msgid "Call #%i" -msgstr "通話はキャンセルされました。" +msgstr "" #: ../gtk/incall_view.c:155 #, c-format @@ -589,9 +559,8 @@ msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "通話はキャンセルされました。" +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -618,18 +587,16 @@ msgid "uPnP in progress" msgstr "" #: ../gtk/incall_view.c:243 -#, fuzzy msgid "uPnp not available" -msgstr "特に情報はありません" +msgstr "" #: ../gtk/incall_view.c:245 msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "通話はキャンセルされました。" +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -656,114 +623,108 @@ msgstr "" msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 -#, fuzzy +#: ../gtk/incall_view.c:511 msgid "Calling..." -msgstr "接続中" +msgstr "" -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "" -#: ../gtk/incall_view.c:515 -#, fuzzy +#: ../gtk/incall_view.c:525 msgid "Incoming call" -msgstr "接続中" +msgstr "" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:702 -#, fuzzy +#: ../gtk/incall_view.c:722 msgid "In call" -msgstr "接続中" +msgstr "" -#: ../gtk/incall_view.c:738 -#, fuzzy +#: ../gtk/incall_view.c:758 msgid "Paused call" -msgstr "接続中" +msgstr "" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "" -#: ../gtk/incall_view.c:772 -#, fuzzy +#: ../gtk/incall_view.c:794 msgid "Call ended." -msgstr "通話は拒否されました。" +msgstr "" -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "通話はキャンセルされました。" +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "" @@ -805,23 +766,20 @@ msgid "" msgstr "" #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "使用するサウンドデバイス" +msgstr "" #: ../gtk/audio_assistant.c:329 -#, fuzzy msgid "Recorded volume" -msgstr "録音する音源" +msgstr "" #: ../gtk/audio_assistant.c:333 msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "使用するサウンドデバイス" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -860,14 +818,12 @@ msgid "Record and Play" msgstr "" #: ../gtk/main.ui.h:1 -#, fuzzy msgid "Callee name" -msgstr "通話は拒否されました。" +msgstr "" #: ../gtk/main.ui.h:2 -#, fuzzy msgid "Send" -msgstr "サウンド" +msgstr "" #: ../gtk/main.ui.h:3 msgid "End conference" @@ -890,14 +846,12 @@ msgid "Transfer" msgstr "" #: ../gtk/main.ui.h:14 -#, fuzzy msgid "In call" -msgstr "接続中" +msgstr "" #: ../gtk/main.ui.h:15 -#, fuzzy msgid "Duration" -msgstr "情報" +msgstr "" #: ../gtk/main.ui.h:16 msgid "Call quality rating" @@ -908,9 +862,8 @@ msgid "All users" msgstr "" #: ../gtk/main.ui.h:18 -#, fuzzy msgid "Online users" -msgstr "ライン入力" +msgstr "" #: ../gtk/main.ui.h:19 msgid "ADSL" @@ -921,27 +874,24 @@ msgid "Fiber Channel" msgstr "" #: ../gtk/main.ui.h:21 -#, fuzzy msgid "Default" -msgstr "個人情報" +msgstr "" #: ../gtk/main.ui.h:22 msgid "_Options" msgstr "" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "情報" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" msgstr "" #: ../gtk/main.ui.h:25 -#, fuzzy msgid "Enable self-view" -msgstr "使用する" +msgstr "" #: ../gtk/main.ui.h:26 msgid "_Help" @@ -964,52 +914,44 @@ msgid "Account assistant" msgstr "" #: ../gtk/main.ui.h:32 -#, fuzzy msgid "SIP address or phone number:" -msgstr "レジストラサーバーのSIPアドレス" +msgstr "" #: ../gtk/main.ui.h:33 msgid "Initiate a new call" msgstr "" #: ../gtk/main.ui.h:34 -#, fuzzy msgid "Contacts" -msgstr "接続中" +msgstr "" #: ../gtk/main.ui.h:35 msgid "Search" msgstr "" #: ../gtk/main.ui.h:36 -#, fuzzy msgid "Add contacts from directory" -msgstr "コーデックの情報" +msgstr "" #: ../gtk/main.ui.h:37 -#, fuzzy msgid "Add contact" -msgstr "(接続するための情報がありません!)" +msgstr "" #: ../gtk/main.ui.h:38 -#, fuzzy msgid "Recent calls" -msgstr "接続中" +msgstr "" #: ../gtk/main.ui.h:39 -#, fuzzy msgid "My current identity:" -msgstr "個人情報" +msgstr "" #: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 -#, fuzzy msgid "Username" -msgstr "ユーザーマニュアル" +msgstr "" #: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 -#, fuzzy msgid "Password" -msgstr "パスワード" +msgstr "" #: ../gtk/main.ui.h:42 msgid "Internet connection:" @@ -1024,23 +966,20 @@ msgid "UserID" msgstr "" #: ../gtk/main.ui.h:45 -#, fuzzy msgid "Login information" -msgstr "コーデックの情報" +msgstr "" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome !" -msgstr "接続中" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About linphone" -msgstr "Linphone" +msgstr "" #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications,2010\n" @@ -1067,9 +1006,8 @@ msgid "" msgstr "" #: ../gtk/contact.ui.h:2 -#, fuzzy msgid "SIP Address" -msgstr "アドレス" +msgstr "" #: ../gtk/contact.ui.h:3 msgid "Show this contact presence status" @@ -1080,9 +1018,8 @@ msgid "Allow this contact to see my presence status" msgstr "" #: ../gtk/contact.ui.h:5 -#, fuzzy msgid "Contact information" -msgstr "コーデックの情報" +msgstr "" #: ../gtk/log.ui.h:1 msgid "Linphone debug window" @@ -1093,9 +1030,8 @@ msgid "Scroll to end" msgstr "" #: ../gtk/password.ui.h:1 -#, fuzzy msgid "Linphone - Authentication required" -msgstr "コーデックの情報" +msgstr "" #: ../gtk/password.ui.h:2 msgid "Please enter the domain password" @@ -1118,9 +1054,8 @@ msgid "Linphone - Configure a SIP account" msgstr "" #: ../gtk/sip_account.ui.h:2 -#, fuzzy msgid "Your SIP identity:" -msgstr "個人情報" +msgstr "" #: ../gtk/sip_account.ui.h:3 msgid "Looks like sip:@" @@ -1131,18 +1066,16 @@ msgid "sip:" msgstr "sip:" #: ../gtk/sip_account.ui.h:5 -#, fuzzy msgid "SIP Proxy address:" -msgstr "Sipアドレス:" +msgstr "" #: ../gtk/sip_account.ui.h:6 msgid "Looks like sip:" msgstr "" #: ../gtk/sip_account.ui.h:7 -#, fuzzy msgid "Registration duration (sec):" -msgstr "登録しました。" +msgstr "" #: ../gtk/sip_account.ui.h:8 msgid "Contact params (optional):" @@ -1157,23 +1090,20 @@ msgid "Route (optional):" msgstr "" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "接続中" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" msgstr "" #: ../gtk/sip_account.ui.h:13 -#, fuzzy msgid "Publish presence information" -msgstr "コーデックの情報" +msgstr "" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "使用する" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1208,14 +1138,12 @@ msgid "CIF" msgstr "" #: ../gtk/parameters.ui.h:8 -#, fuzzy msgid "Audio codecs" -msgstr "オーディオコーデックのプロパティー" +msgstr "" #: ../gtk/parameters.ui.h:9 -#, fuzzy msgid "Video codecs" -msgstr "オーディオコーデックのプロパティー" +msgstr "" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" @@ -1250,9 +1178,8 @@ msgid "Use IPv6 instead of IPv4" msgstr "" #: ../gtk/parameters.ui.h:18 -#, fuzzy msgid "Transport" -msgstr "接続中" +msgstr "" #: ../gtk/parameters.ui.h:19 msgid "Media encryption type" @@ -1283,14 +1210,12 @@ msgid "DSCP fields" msgstr "" #: ../gtk/parameters.ui.h:26 -#, fuzzy msgid "SIP/TCP port" -msgstr "SIPのポート" +msgstr "" #: ../gtk/parameters.ui.h:27 -#, fuzzy msgid "SIP/UDP port" -msgstr "SIPのポート" +msgstr "" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1317,76 +1242,64 @@ msgid "Behind NAT / Firewall (use uPnP)" msgstr "" #: ../gtk/parameters.ui.h:34 -#, fuzzy msgid "Public IP address:" -msgstr "Sipアドレス:" +msgstr "" #: ../gtk/parameters.ui.h:35 -#, fuzzy msgid "Stun server:" -msgstr "使用するサウンドデバイス" +msgstr "" #: ../gtk/parameters.ui.h:36 -#, fuzzy msgid "NAT and Firewall" -msgstr "接続中" +msgstr "" #: ../gtk/parameters.ui.h:37 -#, fuzzy msgid "Network settings" -msgstr "ネットワーク" +msgstr "" #: ../gtk/parameters.ui.h:38 -#, fuzzy msgid "Ring sound:" -msgstr "録音する音源" +msgstr "" #: ../gtk/parameters.ui.h:39 msgid "ALSA special device (optional):" msgstr "" #: ../gtk/parameters.ui.h:40 -#, fuzzy msgid "Capture device:" -msgstr "使用するサウンドデバイス" +msgstr "" #: ../gtk/parameters.ui.h:41 -#, fuzzy msgid "Ring device:" -msgstr "使用するサウンドデバイス" +msgstr "" #: ../gtk/parameters.ui.h:42 -#, fuzzy msgid "Playback device:" -msgstr "使用するサウンドデバイス" +msgstr "" #: ../gtk/parameters.ui.h:43 msgid "Enable echo cancellation" msgstr "" #: ../gtk/parameters.ui.h:44 -#, fuzzy msgid "Audio" -msgstr "接続中" +msgstr "" #: ../gtk/parameters.ui.h:45 -#, fuzzy msgid "Video input device:" -msgstr "使用するサウンドデバイス" +msgstr "" #: ../gtk/parameters.ui.h:46 msgid "Prefered video resolution:" msgstr "" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "使用するサウンドデバイス" +msgstr "" #: ../gtk/parameters.ui.h:48 -#, fuzzy msgid "Video" -msgstr "接続中" +msgstr "" #: ../gtk/parameters.ui.h:49 msgid "Multimedia settings" @@ -1401,19 +1314,16 @@ msgid "Your display name (eg: John Doe):" msgstr "" #: ../gtk/parameters.ui.h:52 -#, fuzzy msgid "Your username:" -msgstr "ユーザーマニュアル" +msgstr "" #: ../gtk/parameters.ui.h:53 -#, fuzzy msgid "Your resulting SIP address:" -msgstr "あなたのSIPアドレス" +msgstr "" #: ../gtk/parameters.ui.h:54 -#, fuzzy msgid "Default identity" -msgstr "個人情報" +msgstr "" #: ../gtk/parameters.ui.h:55 msgid "Wizard" @@ -1432,18 +1342,16 @@ msgid "Remove" msgstr "削除する" #: ../gtk/parameters.ui.h:59 -#, fuzzy msgid "Proxy accounts" -msgstr "接続中" +msgstr "" #: ../gtk/parameters.ui.h:60 msgid "Erase all passwords" msgstr "" #: ../gtk/parameters.ui.h:61 -#, fuzzy msgid "Privacy" -msgstr "接続中" +msgstr "" #: ../gtk/parameters.ui.h:62 msgid "Manage SIP Accounts" @@ -1458,9 +1366,8 @@ msgid "Disable" msgstr "使用しない" #: ../gtk/parameters.ui.h:65 -#, fuzzy msgid "Codecs" -msgstr "接続中" +msgstr "" #: ../gtk/parameters.ui.h:66 msgid "0 stands for \"unlimited\"" @@ -1489,84 +1396,72 @@ msgid "Bandwidth control" msgstr "" #: ../gtk/parameters.ui.h:72 -#, fuzzy msgid "Codecs" -msgstr "コーデック" +msgstr "" #: ../gtk/parameters.ui.h:73 -#, fuzzy msgid "Language" -msgstr "接続中" +msgstr "" #: ../gtk/parameters.ui.h:74 msgid "Show advanced settings" msgstr "" #: ../gtk/parameters.ui.h:75 -#, fuzzy msgid "Level" -msgstr "接続中" +msgstr "" #: ../gtk/parameters.ui.h:76 -#, fuzzy msgid "User interface" -msgstr "ユーザーマニュアル" +msgstr "" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "サーバーのアドレス" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "コーデックの情報" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "接続中" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" msgstr "" #: ../gtk/parameters.ui.h:83 -#, fuzzy msgid "Done" -msgstr "ありません。" +msgstr "" #: ../gtk/buddylookup.ui.h:1 -#, fuzzy msgid "Search contacts in directory" -msgstr "コーデックの情報" +msgstr "" #: ../gtk/buddylookup.ui.h:2 msgid "Add to my list" msgstr "" #: ../gtk/buddylookup.ui.h:3 -#, fuzzy msgid "Search somebody" -msgstr "接続中" +msgstr "" #: ../gtk/waiting.ui.h:1 -#, fuzzy msgid "Linphone" -msgstr "Linphone" +msgstr "" #: ../gtk/waiting.ui.h:2 msgid "Please wait" msgstr "" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "ネットワーク" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1589,14 +1484,12 @@ msgid "Call statistics" msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" -msgstr "オーディオコーデックのプロパティー" +msgstr "" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" -msgstr "オーディオコーデックのプロパティー" +msgstr "" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1615,9 +1508,8 @@ msgid "Video Media connectivity" msgstr "" #: ../gtk/call_statistics.ui.h:8 -#, fuzzy msgid "Round trip time" -msgstr "サウンドのプロパティー" +msgstr "" #: ../gtk/call_statistics.ui.h:9 msgid "Video resolution received" @@ -1632,9 +1524,8 @@ msgid "RTP profile" msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "コーデックの情報" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 msgid "Configure VoIP tunnel" @@ -1717,23 +1608,20 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "ネットワーク" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" msgstr "" #: ../gtk/ldap.ui.h:7 -#, fuzzy msgid "Not yet available" -msgstr "特に情報はありません" +msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "接続中" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1748,9 +1636,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "接続中" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1766,18 +1653,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "アドレス" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "接続中" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1792,9 +1677,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "接続中" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1818,11 +1702,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1830,93 +1711,85 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "コネクション" +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 -#, fuzzy +#: ../coreapi/linphonecore.c:1511 msgid "Ready" -msgstr "準備完了。" +msgstr "" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "情報" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "" -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "" #. must be known at that time -#: ../coreapi/linphonecore.c:2418 -#, fuzzy +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" -msgstr "接続中" +msgstr "" -#: ../coreapi/linphonecore.c:2425 -#, fuzzy +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" -msgstr "pixmapファイルが見つかりません %s" +msgstr "" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:2745 -#, fuzzy +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" -msgstr "から電話です。" +msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "" -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "接続しました。" -#: ../coreapi/linphonecore.c:3220 -#, fuzzy +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" -msgstr "通話はキャンセルされました。" +msgstr "" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "" -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" #: ../coreapi/friend.c:33 -#, fuzzy msgid "Online" -msgstr "ライン入力" +msgstr "" #: ../coreapi/friend.c:36 msgid "Busy" @@ -1931,9 +1804,8 @@ msgid "Away" msgstr "退席中" #: ../coreapi/friend.c:45 -#, fuzzy msgid "On the phone" -msgstr "Linphone" +msgstr "" #: ../coreapi/friend.c:48 msgid "Out to lunch" @@ -1944,525 +1816,162 @@ msgid "Do not disturb" msgstr "手が離せません" #: ../coreapi/friend.c:54 -#, fuzzy msgid "Moved" -msgstr "コーデック" +msgstr "" #: ../coreapi/friend.c:57 msgid "Using another messaging service" msgstr "" #: ../coreapi/friend.c:60 -#, fuzzy msgid "Offline" -msgstr "ライン入力" +msgstr "" #: ../coreapi/friend.c:63 msgid "Pending" msgstr "" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "情報" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 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:1369 -#, fuzzy, c-format +#: ../coreapi/proxy.c:1377 +#, c-format msgid "Could not login as %s" -msgstr "pixmapファイルが見つかりません %s" +msgstr "" -#: ../coreapi/callbacks.c:355 -#, fuzzy +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." -msgstr "登録中……" +msgstr "" -#: ../coreapi/callbacks.c:373 -#, fuzzy +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." -msgstr "登録中……" +msgstr "" -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:459 -#, fuzzy +#: ../coreapi/callbacks.c:498 msgid "Call resumed." -msgstr "通話は拒否されました。" +msgstr "" -#: ../coreapi/callbacks.c:464 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:502 +#, c-format msgid "Call answered by %s." msgstr "" -"電話をかける\n" -"電話に出る" -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "" -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:658 -#, fuzzy +#: ../coreapi/callbacks.c:705 msgid "Call terminated." -msgstr "通話は拒否されました。" +msgstr "" -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "ユーザーはビジーです" -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "ユーザーは、今出られません。" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "ユーザーは手が離せないようです。" -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "通話は拒否されました。" -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." +#: ../coreapi/callbacks.c:835 +msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:798 -#, fuzzy -msgid "Call failed." -msgstr "通話はキャンセルされました。" - -#: ../coreapi/callbacks.c:878 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:913 +#, c-format msgid "Registration on %s successful." -msgstr "登録しました。" +msgstr "" -#: ../coreapi/callbacks.c:879 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:914 +#, c-format msgid "Unregistration on %s done." -msgstr "登録しました。" +msgstr "" -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:900 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:935 +#, c-format msgid "Registration on %s failed: %s" -msgstr "登録しました。" +msgstr "" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:174 +#, c-format msgid "Authentication token is %s" -msgstr "コーデックの情報" +msgstr "" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "" -msgstr[1] "" - -#, fuzzy -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "SIPアドレスの形式エラーです。SIPアドレスは、のよ" -#~ "うな形式です。" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "このコンピューターはALSAサウンドドライバーを使用しているようです。\n" -#~ "それは最良の選択です。しかし、Linphoneが必要とする\n" -#~ "pcm ossエミュレーションモジュールが見つかりません。\n" -#~ "ロードするために、ルート権限で'modprobe snd-pcm-oss'を実行してください。" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "このコンピューターはALSAサウンドドライバーを使用しているようです。\n" -#~ "それは最良の選択です。しかし、Linphoneが必要とする\n" -#~ "mixer ossエミュレーションモジュールが見つかりません。\n" -#~ "ロードするために、ルート権限で'modprobe snd-mixer-oss'を実行してください。" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "使用する" - -#, fuzzy -#~ msgid "Contact list" -#~ 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 "_Modes" -#~ msgstr "コーデック" - -#, fuzzy -#~ msgid "" -#~ "Audio codecs\n" -#~ "Video codecs" -#~ msgstr "オーディオコーデックのプロパティー" - -#, fuzzy -#~ msgid "Request Cancelled." -#~ msgstr "通話はキャンセルされました。" - -#~ msgid "User cannot be found at given address." -#~ msgstr "ユーザーが見つかりません。" - -#~ msgid "Remote user cannot support any of proposed codecs." -#~ msgstr "相手側では、提案したコーデックを一つもサポートしていません。" - -#~ msgid "Timeout." -#~ msgstr "時間切れです。" - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "リモートホストが見つかりましたが、接続を拒否されました。" - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you\n" -#~ "to contact him using the following alternate resource:" -#~ msgstr "" -#~ "ユーザーに接続することができませんが、ユーザーは代わりの手段に招待していま" -#~ "す。\n" -#~ "他の手段で連絡をとってください。" - -#, fuzzy -#~ msgid "Gone" -#~ msgstr "ありません。" - -#, fuzzy -#~ msgid "Display filters" -#~ msgstr "表示される名前" - -#, fuzzy -#~ msgid "_Properties" -#~ msgstr "RTPのプロパティー" - -#~ msgid "Sound" -#~ msgstr "サウンド" - -#~ msgid "Address book" -#~ msgstr "電話帳" - -#, fuzzy -#~ msgid "Shows the address book" -#~ msgstr "電話帳" - -#~ msgid "Show more..." -#~ msgstr "詳細" - -#~ msgid "Playback level:" -#~ msgstr "受話音量" - -#~ msgid "Recording level:" -#~ msgstr "送話音量" - -#, fuzzy -#~ msgid "Ring level:" -#~ msgstr "送話音量" - -#~ msgid "Reachable" -#~ msgstr "在席中" - -#~ msgid "Busy, I'll be back in " -#~ msgstr "今席をはずしています。" - -#~ msgid "The other party will be informed that you'll be back in X minutes" -#~ msgstr "発信者は、あなたがX分後に戻ってくることが分かります。" - -#~ msgid "mn" -#~ msgstr "分" - -#~ msgid "Moved temporarily" -#~ msgstr "すぐ戻ります" - -#~ msgid "Alternative service" -#~ msgstr "他の連絡手段を使って下さい" - -#~ msgid "URL:" -#~ msgstr "URL:" - -#~ msgid "Presence" -#~ msgstr "状態" - -#~ msgid "Press digits to send DTMFs." -#~ msgstr "DTMFを送信するための数字を押して下さい。" - -#~ msgid "DTMF" -#~ msgstr "DTMF" - -#~ msgid "" -#~ "Linphone is a web-phone.\n" -#~ "It is compatible with SIP and RTP protocols." -#~ msgstr "" -#~ "Linphoneはインターネット電話です。\n" -#~ "SIP・RTPプロトコルと互換性があります。" - -#, fuzzy -#~ msgid "Use IPv6 network (if available)" -#~ msgstr "ユーザーは、今出られません。" - -#, fuzzy -#~ msgid "Number of buffered miliseconds (jitter compensation):" -#~ msgstr "" -#~ "バッファするミリ秒\n" -#~ "(音声が途切れるときは大きくします)" - -#~ msgid "RTP port used for audio:" -#~ msgstr "オーディオに使用するRTPポート番号" - -#~ msgid "micro" -#~ msgstr "マイク入力" - -#~ msgid "Run sip user agent on port:" -#~ msgstr "SIPユーザーエージェントが起動するポート" - -#~ msgid "It is strongly recommended to use port 5060." -#~ msgstr "5060番ポートを使うことを強く推奨します。" - -#~ msgid "@" -#~ msgstr "@" - -#~ msgid "Identity" -#~ msgstr "個人情報" - -#, fuzzy -#~ msgid "Add proxy/registrar" -#~ msgstr "SIPレジストラを使う" - -#~ msgid "Remote services" -#~ msgstr "リモートのサービス" - -#~ msgid "List of audio codecs, in order of preference:" -#~ msgstr "コーデックのリストです。使いたい順に並べてください。" - -#~ msgid "" -#~ "Note: Codecs in red are not usable regarding to your connection type to " -#~ "the internet." -#~ msgstr "" -#~ "注意:赤い色のコーデックは、現在のネットワーク接続方法では使えません。" - -#~ msgid "Codec information" -#~ msgstr "コーデックの情報" - -#~ msgid "Address Book" -#~ msgstr "電話帳" - -#~ msgid "Select" -#~ msgstr "選択する" - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you to contact him " -#~ "using the following alternate ressource:" -#~ msgstr "" -#~ "ユーザーに接続することができませんが、ユーザーは代わりの手段に招待していま" -#~ "す。他の手段で連絡をとってください。" - -#~ msgid "None." -#~ msgstr "ありません。" - -#, fuzzy -#~ msgid "Name:" -#~ msgstr "名前" - -#, fuzzy -#~ msgid "Bad sip address: a sip address looks like sip:user@domain" -#~ msgstr "" -#~ "SIPアドレスの形式エラーです。SIPアドレスは、のよ" -#~ "うな形式です。" - -#~ msgid "Communication ended." -#~ msgstr "会話は終了しました。" - -#~ msgid "28k modem" -#~ msgstr "28kのモデム" - -#~ msgid "56k modem" -#~ msgstr "56kのモデム" - -#~ msgid "64k modem (numeris)" -#~ msgstr "64Kのモデム(ISDN)" - -#~ msgid "ADSL or Cable modem" -#~ msgstr "ADSL・CATVモデム" - -#~ msgid "Ethernet or equivalent" -#~ msgstr "イーサネットなど" - -#~ msgid "Connection type:" -#~ msgstr "接続のタイプ" - -#, fuzzy -#~ msgid "" -#~ "Linphone could not open audio device %s. Check if your sound card is " -#~ "fully configured and working." -#~ msgstr "" -#~ "Linphoneはオーディオデバイスをオープンできませんでした。サウンドカードの設" -#~ "定が完全で、正しく動いているかどうか確認して下さい。" - -#~ msgid "Type here the sip address of the person you want to call." -#~ msgstr "電話をかけたい相手のSIPアドレスを入力して下さい。" - -#~ msgid "" -#~ "Release or\n" -#~ "Refuse" -#~ msgstr "" -#~ "電話を切る\n" -#~ "会話を拒否" - -#~ msgid "%s. Retry after %i minute(s)." -#~ msgstr "%s。%i 分後にかけ直して下さい。" - -#, fuzzy -#~ msgid "Timeout..." -#~ msgstr "時間切れです。" - -#~ msgid "Toggle this if you want to be registered on a remote server." -#~ msgstr "リモートサーバーに登録するときは、チェックして下さい。" - -#~ msgid "Address of record:" -#~ msgstr "登録するアドレス" - -#~ msgid "" -#~ "The password used for registration. On some servers it is not necessary" -#~ msgstr "登録にパスワードを用います。必須でないサーバーもあります。" - -#~ msgid "Use this registrar server as outbound proxy." -#~ msgstr "レジストラサーバーをアウトバウンドプロクシとして使用します。" - -#~ msgid "sip address:" -#~ msgstr "SIPアドレス" - -#~ msgid "Modify" -#~ msgstr "修正" - -#, fuzzy -#~ msgid "" -#~ "You are currently using the i810_audio driver.\n" -#~ "This driver is buggy and so does not work with Linphone.\n" -#~ "We suggest that you replace it by its equivalent ALSA driver,\n" -#~ "either with packages from your distribution, or by downloading\n" -#~ "ALSA drivers at http://www.alsa-project.org." -#~ msgstr "" -#~ "現在、i810オーディオドライバーを使っています。\n" -#~ "このドライバーにはバグがあり、Linphoneではうまく動作しません。\n" -#~ "ALSAドライバーに相当する\n" -#~ "あなたのディストリビュージョンのパッケージか、\n" -#~ "ALSAドライバー(http://www.alsa-project.org)への交換を推奨します。" - -#~ msgid "Unregistration successfull." -#~ msgstr "登録を解除しました。" - -#~ msgid "Select network interface to use:" -#~ msgstr "使用するネットワークインターフェースを選んで下さい" - -#~ msgid "Network interface properties" -#~ msgstr "ネットワークインターフェースのプロパティー" - -#~ msgid "RTP" -#~ msgstr "RTP" - -#~ msgid "C: 2001" -#~ msgstr "C: 2001" - -#~ msgid "/dev/dsp" -#~ msgstr "/dev/dsp" - -#~ msgid "/dev/dsp1" -#~ msgstr "/dev/dsp1" - -#~ msgid "/dev/dsp2" -#~ msgstr "/dev/dsp2" - -#~ msgid "/dev/dsp3" -#~ msgstr "/dev/dsp3" - -#~ msgid "Set the selected address in linphone'main window." -#~ msgstr "選択したアドレスがLinphoneのメインウインドウに現れます。" diff --git a/po/linphone.pot b/po/linphone.pot new file mode 100644 index 000000000..e4e16d2c5 --- /dev/null +++ b/po/linphone.pot @@ -0,0 +1,1987 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 +#, c-format +msgid "Call %s" +msgstr "" + +#: ../gtk/calllogs.c:149 ../gtk/friendlist.c:975 +#, c-format +msgid "Send text to %s" +msgstr "" + +#: ../gtk/calllogs.c:232 +#, c-format +msgid "Recent calls (%i)" +msgstr "" + +#: ../gtk/calllogs.c:314 +msgid "n/a" +msgstr "" + +#: ../gtk/calllogs.c:317 +msgid "Aborted" +msgstr "" + +#: ../gtk/calllogs.c:320 +msgid "Missed" +msgstr "" + +#: ../gtk/calllogs.c:323 +msgid "Declined" +msgstr "" + +#: ../gtk/calllogs.c:329 +#, c-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "" +msgstr[1] "" + +#: ../gtk/calllogs.c:332 +#, c-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" + +#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 +#, c-format +msgid "%s\t%s" +msgstr "" + +#: ../gtk/calllogs.c:337 +#, c-format +msgid "" +"%s\tQuality: %s\n" +"%s\t%s\t" +msgstr "" + +#: ../gtk/calllogs.c:343 +#, c-format +msgid "" +"%s\t\n" +"%s" +msgstr "" + +#: ../gtk/conference.c:38 ../gtk/main.ui.h:13 +msgid "Conference" +msgstr "" + +#: ../gtk/conference.c:46 +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 "" + +#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +msgid "Invalid sip contact !" +msgstr "" + +#: ../gtk/main.c:107 +msgid "log to stdout some debug information while running." +msgstr "" + +#: ../gtk/main.c:114 +msgid "path to a file to write logs into." +msgstr "" + +#: ../gtk/main.c:121 +msgid "Start linphone with video disabled." +msgstr "" + +#: ../gtk/main.c:128 +msgid "Start only in the system tray, do not show the main interface." +msgstr "" + +#: ../gtk/main.c:135 +msgid "address to call right now" +msgstr "" + +#: ../gtk/main.c:142 +msgid "if set automatically answer incoming calls" +msgstr "" + +#: ../gtk/main.c:149 +msgid "" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" + +#: ../gtk/main.c:156 +msgid "Configuration file" +msgstr "" + +#: ../gtk/main.c:163 +msgid "Run the audio assistant" +msgstr "" + +#: ../gtk/main.c:1085 +#, 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" +"If you answer no, this person will be temporarily blacklisted." +msgstr "" + +#: ../gtk/main.c:1162 +#, c-format +msgid "" +"Please enter your password for username %s\n" +" at realm %s:" +msgstr "" + +#: ../gtk/main.c:1283 +msgid "Call error" +msgstr "" + +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +msgid "Call ended" +msgstr "" + +#: ../gtk/main.c:1289 +msgid "Incoming call" +msgstr "" + +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +msgid "Answer" +msgstr "" + +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 +msgid "Decline" +msgstr "" + +#: ../gtk/main.c:1299 +msgid "Call paused" +msgstr "" + +#: ../gtk/main.c:1299 +#, c-format +msgid "by %s" +msgstr "" + +#: ../gtk/main.c:1366 +#, c-format +msgid "%s proposed to start video. Do you accept ?" +msgstr "" + +#: ../gtk/main.c:1528 +msgid "Website link" +msgstr "" + +#: ../gtk/main.c:1577 +msgid "Linphone - a video internet phone" +msgstr "" + +#: ../gtk/main.c:1669 +#, c-format +msgid "%s (Default)" +msgstr "" + +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#, c-format +msgid "We are transferred to %s" +msgstr "" + +#: ../gtk/main.c:2016 +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:2157 +msgid "A free SIP video-phone" +msgstr "" + +#: ../gtk/friendlist.c:505 +msgid "Add to addressbook" +msgstr "" + +#: ../gtk/friendlist.c:691 +msgid "Presence status" +msgstr "" + +#: ../gtk/friendlist.c:709 ../gtk/propertybox.c:552 ../gtk/contact.ui.h:1 +msgid "Name" +msgstr "" + +#: ../gtk/friendlist.c:721 +msgid "Call" +msgstr "" + +#: ../gtk/friendlist.c:726 +msgid "Chat" +msgstr "" + +#: ../gtk/friendlist.c:756 +#, c-format +msgid "Search in %s directory" +msgstr "" + +#: ../gtk/friendlist.c:976 +#, c-format +msgid "Edit contact '%s'" +msgstr "" + +#: ../gtk/friendlist.c:977 +#, c-format +msgid "Delete contact '%s'" +msgstr "" + +#: ../gtk/friendlist.c:978 +#, c-format +msgid "Delete chat history of '%s'" +msgstr "" + +#: ../gtk/friendlist.c:1029 +#, c-format +msgid "Add new contact from %s directory" +msgstr "" + +#: ../gtk/propertybox.c:558 +msgid "Rate (Hz)" +msgstr "" + +#: ../gtk/propertybox.c:564 +msgid "Status" +msgstr "" + +#: ../gtk/propertybox.c:570 +msgid "IP Bitrate (kbit/s)" +msgstr "" + +#: ../gtk/propertybox.c:577 +msgid "Parameters" +msgstr "" + +#: ../gtk/propertybox.c:620 ../gtk/propertybox.c:763 +msgid "Enabled" +msgstr "" + +#: ../gtk/propertybox.c:622 ../gtk/propertybox.c:763 +msgid "Disabled" +msgstr "" + +#: ../gtk/propertybox.c:809 +msgid "Account" +msgstr "" + +#: ../gtk/propertybox.c:1072 +msgid "English" +msgstr "" + +#: ../gtk/propertybox.c:1073 +msgid "French" +msgstr "" + +#: ../gtk/propertybox.c:1074 +msgid "Swedish" +msgstr "" + +#: ../gtk/propertybox.c:1075 +msgid "Italian" +msgstr "" + +#: ../gtk/propertybox.c:1076 +msgid "Spanish" +msgstr "" + +#: ../gtk/propertybox.c:1077 +msgid "Brazilian Portugese" +msgstr "" + +#: ../gtk/propertybox.c:1078 +msgid "Polish" +msgstr "" + +#: ../gtk/propertybox.c:1079 +msgid "German" +msgstr "" + +#: ../gtk/propertybox.c:1080 +msgid "Russian" +msgstr "" + +#: ../gtk/propertybox.c:1081 +msgid "Japanese" +msgstr "" + +#: ../gtk/propertybox.c:1082 +msgid "Dutch" +msgstr "" + +#: ../gtk/propertybox.c:1083 +msgid "Hungarian" +msgstr "" + +#: ../gtk/propertybox.c:1084 +msgid "Czech" +msgstr "" + +#: ../gtk/propertybox.c:1085 +msgid "Chinese" +msgstr "" + +#: ../gtk/propertybox.c:1086 +msgid "Traditional Chinese" +msgstr "" + +#: ../gtk/propertybox.c:1087 +msgid "Norwegian" +msgstr "" + +#: ../gtk/propertybox.c:1088 +msgid "Hebrew" +msgstr "" + +#: ../gtk/propertybox.c:1089 +msgid "Serbian" +msgstr "" + +#: ../gtk/propertybox.c:1156 +msgid "" +"You need to restart linphone for the new language selection to take effect." +msgstr "" + +#: ../gtk/propertybox.c:1234 +msgid "None" +msgstr "" + +#: ../gtk/propertybox.c:1238 +msgid "SRTP" +msgstr "" + +#: ../gtk/propertybox.c:1244 +msgid "ZRTP" +msgstr "" + +#: ../gtk/update.c:80 +#, c-format +msgid "" +"A more recent version is availalble from %s.\n" +"Would you like to open a browser to download it ?" +msgstr "" + +#: ../gtk/update.c:91 +msgid "You are running the lastest version." +msgstr "" + +#: ../gtk/buddylookup.c:85 +msgid "Firstname, Lastname" +msgstr "" + +#: ../gtk/buddylookup.c:160 +msgid "Error communicating with server." +msgstr "" + +#: ../gtk/buddylookup.c:164 +msgid "Connecting..." +msgstr "" + +#: ../gtk/buddylookup.c:168 +msgid "Connected" +msgstr "" + +#: ../gtk/buddylookup.c:172 +msgid "Receiving data..." +msgstr "" + +#: ../gtk/buddylookup.c:180 +#, c-format +msgid "Found %i contact" +msgid_plural "Found %i contacts" +msgstr[0] "" +msgstr[1] "" + +#: ../gtk/setupwizard.c:34 +msgid "" +"Welcome !\n" +"This assistant will help you to use a SIP account for your calls." +msgstr "" + +#: ../gtk/setupwizard.c:43 +msgid "Create an account on linphone.org" +msgstr "" + +#: ../gtk/setupwizard.c:44 +msgid "I have already a linphone.org account and I just want to use it" +msgstr "" + +#: ../gtk/setupwizard.c:45 +msgid "I have already a sip account and I just want to use it" +msgstr "" + +#: ../gtk/setupwizard.c:46 +msgid "I want to specify a remote configuration URI" +msgstr "" + +#: ../gtk/setupwizard.c:89 +msgid "Enter your linphone.org username" +msgstr "" + +#: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 +msgid "Username:" +msgstr "" + +#: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 +msgid "Password:" +msgstr "" + +#: ../gtk/setupwizard.c:124 +msgid "Enter your account informations" +msgstr "" + +#: ../gtk/setupwizard.c:140 +msgid "Username*" +msgstr "" + +#: ../gtk/setupwizard.c:141 +msgid "Password*" +msgstr "" + +#: ../gtk/setupwizard.c:144 +msgid "Domain*" +msgstr "" + +#: ../gtk/setupwizard.c:145 +msgid "Proxy" +msgstr "" + +#: ../gtk/setupwizard.c:317 +msgid "(*) Required fields" +msgstr "" + +#: ../gtk/setupwizard.c:318 +msgid "Username: (*)" +msgstr "" + +#: ../gtk/setupwizard.c:320 +msgid "Password: (*)" +msgstr "" + +#: ../gtk/setupwizard.c:322 +msgid "Email: (*)" +msgstr "" + +#: ../gtk/setupwizard.c:324 +msgid "Confirm your password: (*)" +msgstr "" + +#: ../gtk/setupwizard.c:338 +msgid "Keep me informed with linphone updates" +msgstr "" + +#: ../gtk/setupwizard.c:394 +msgid "" +"Error, account not validated, username already used or server unreachable.\n" +"Please go back and try again." +msgstr "" + +#: ../gtk/setupwizard.c:405 +msgid "Thank you. Your account is now configured and ready for use." +msgstr "" + +#: ../gtk/setupwizard.c:413 +msgid "" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" +"Then come back here and press Next button." +msgstr "" + +#: ../gtk/setupwizard.c:600 +msgid "SIP account configuration assistant" +msgstr "" + +#: ../gtk/setupwizard.c:618 +msgid "Welcome to the account setup assistant" +msgstr "" + +#: ../gtk/setupwizard.c:623 +msgid "Account setup assistant" +msgstr "" + +#: ../gtk/setupwizard.c:629 +msgid "Configure your account (step 1/1)" +msgstr "" + +#: ../gtk/setupwizard.c:634 +msgid "Enter your sip username (step 1/1)" +msgstr "" + +#: ../gtk/setupwizard.c:638 +msgid "Enter account information (step 1/2)" +msgstr "" + +#: ../gtk/setupwizard.c:647 +msgid "Validation (step 2/2)" +msgstr "" + +#: ../gtk/setupwizard.c:652 +msgid "Error" +msgstr "" + +#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +msgid "Terminating" +msgstr "" + +#: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 +#, c-format +msgid "Call #%i" +msgstr "" + +#: ../gtk/incall_view.c:155 +#, c-format +msgid "Transfer to call #%i with %s" +msgstr "" + +#: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 +msgid "Not used" +msgstr "" + +#: ../gtk/incall_view.c:221 +msgid "ICE not activated" +msgstr "" + +#: ../gtk/incall_view.c:223 +msgid "ICE failed" +msgstr "" + +#: ../gtk/incall_view.c:225 +msgid "ICE in progress" +msgstr "" + +#: ../gtk/incall_view.c:227 +msgid "Going through one or more NATs" +msgstr "" + +#: ../gtk/incall_view.c:229 +msgid "Direct" +msgstr "" + +#: ../gtk/incall_view.c:231 +msgid "Through a relay server" +msgstr "" + +#: ../gtk/incall_view.c:239 +msgid "uPnP not activated" +msgstr "" + +#: ../gtk/incall_view.c:241 +msgid "uPnP in progress" +msgstr "" + +#: ../gtk/incall_view.c:243 +msgid "uPnp not available" +msgstr "" + +#: ../gtk/incall_view.c:245 +msgid "uPnP is running" +msgstr "" + +#: ../gtk/incall_view.c:247 +msgid "uPnP failed" +msgstr "" + +#: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 +msgid "Direct or through server" +msgstr "" + +#: ../gtk/incall_view.c:267 ../gtk/incall_view.c:279 +#, c-format +msgid "" +"download: %f\n" +"upload: %f (kbit/s)" +msgstr "" + +#: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 +#, c-format +msgid "%ix%i @ %f fps" +msgstr "" + +#: ../gtk/incall_view.c:304 +#, c-format +msgid "%.3f seconds" +msgstr "" + +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +msgid "Hang up" +msgstr "" + +#: ../gtk/incall_view.c:511 +msgid "Calling..." +msgstr "" + +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +msgid "00::00::00" +msgstr "" + +#: ../gtk/incall_view.c:525 +msgid "Incoming call" +msgstr "" + +#: ../gtk/incall_view.c:562 +msgid "good" +msgstr "" + +#: ../gtk/incall_view.c:564 +msgid "average" +msgstr "" + +#: ../gtk/incall_view.c:566 +msgid "poor" +msgstr "" + +#: ../gtk/incall_view.c:568 +msgid "very poor" +msgstr "" + +#: ../gtk/incall_view.c:570 +msgid "too bad" +msgstr "" + +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 +msgid "unavailable" +msgstr "" + +#: ../gtk/incall_view.c:679 +msgid "Secured by SRTP" +msgstr "" + +#: ../gtk/incall_view.c:685 +#, c-format +msgid "Secured by ZRTP - [auth token: %s]" +msgstr "" + +#: ../gtk/incall_view.c:691 +msgid "Set unverified" +msgstr "" + +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +msgid "Set verified" +msgstr "" + +#: ../gtk/incall_view.c:722 +msgid "In conference" +msgstr "" + +#: ../gtk/incall_view.c:722 +msgid "In call" +msgstr "" + +#: ../gtk/incall_view.c:758 +msgid "Paused call" +msgstr "" + +#: ../gtk/incall_view.c:771 +#, c-format +msgid "%02i::%02i::%02i" +msgstr "" + +#: ../gtk/incall_view.c:794 +msgid "Call ended." +msgstr "" + +#: ../gtk/incall_view.c:825 +msgid "Transfer in progress" +msgstr "" + +#: ../gtk/incall_view.c:828 +msgid "Transfer done." +msgstr "" + +#: ../gtk/incall_view.c:831 +msgid "Transfer failed." +msgstr "" + +#: ../gtk/incall_view.c:875 +msgid "Resume" +msgstr "" + +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +msgid "Pause" +msgstr "" + +#: ../gtk/incall_view.c:948 +#, c-format +msgid "" +"Recording into\n" +"%s %s" +msgstr "" + +#: ../gtk/incall_view.c:948 +msgid "(Paused)" +msgstr "" + +#: ../gtk/loginframe.c:88 +#, c-format +msgid "Please enter login information for %s" +msgstr "" + +#: ../gtk/config-fetching.c:57 +#, c-format +msgid "fetching from %s" +msgstr "" + +#: ../gtk/config-fetching.c:73 +#, c-format +msgid "Downloading of remote configuration from %s failed." +msgstr "" + +#: ../gtk/audio_assistant.c:98 +msgid "No voice detected" +msgstr "" + +#: ../gtk/audio_assistant.c:99 +msgid "Too low" +msgstr "" + +#: ../gtk/audio_assistant.c:100 +msgid "Good" +msgstr "" + +#: ../gtk/audio_assistant.c:101 +msgid "Too loud" +msgstr "" + +#: ../gtk/audio_assistant.c:318 +msgid "" +"Welcome !\n" +"This assistant will help you to configure audio settings for Linphone" +msgstr "" + +#: ../gtk/audio_assistant.c:328 +msgid "Capture device" +msgstr "" + +#: ../gtk/audio_assistant.c:329 +msgid "Recorded volume" +msgstr "" + +#: ../gtk/audio_assistant.c:333 +msgid "No voice" +msgstr "" + +#: ../gtk/audio_assistant.c:369 +msgid "Playback device" +msgstr "" + +#: ../gtk/audio_assistant.c:370 +msgid "Play three beeps" +msgstr "" + +#: ../gtk/audio_assistant.c:403 +msgid "Press the record button and say some words" +msgstr "" + +#: ../gtk/audio_assistant.c:404 +msgid "Listen to your record voice" +msgstr "" + +#: ../gtk/audio_assistant.c:433 +msgid "Let's start Linphone now" +msgstr "" + +#: ../gtk/audio_assistant.c:496 +msgid "Audio Assistant" +msgstr "" + +#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +msgid "Audio assistant" +msgstr "" + +#: ../gtk/audio_assistant.c:511 +msgid "Mic Gain calibration" +msgstr "" + +#: ../gtk/audio_assistant.c:517 +msgid "Speaker volume calibration" +msgstr "" + +#: ../gtk/audio_assistant.c:522 +msgid "Record and Play" +msgstr "" + +#: ../gtk/main.ui.h:1 +msgid "Callee name" +msgstr "" + +#: ../gtk/main.ui.h:2 +msgid "Send" +msgstr "" + +#: ../gtk/main.ui.h:3 +msgid "End conference" +msgstr "" + +#: ../gtk/main.ui.h:7 +msgid "Record this call to an audio file" +msgstr "" + +#: ../gtk/main.ui.h:8 +msgid "Video" +msgstr "" + +#: ../gtk/main.ui.h:10 +msgid "Mute" +msgstr "" + +#: ../gtk/main.ui.h:11 +msgid "Transfer" +msgstr "" + +#: ../gtk/main.ui.h:14 +msgid "In call" +msgstr "" + +#: ../gtk/main.ui.h:15 +msgid "Duration" +msgstr "" + +#: ../gtk/main.ui.h:16 +msgid "Call quality rating" +msgstr "" + +#: ../gtk/main.ui.h:17 +msgid "All users" +msgstr "" + +#: ../gtk/main.ui.h:18 +msgid "Online users" +msgstr "" + +#: ../gtk/main.ui.h:19 +msgid "ADSL" +msgstr "" + +#: ../gtk/main.ui.h:20 +msgid "Fiber Channel" +msgstr "" + +#: ../gtk/main.ui.h:21 +msgid "Default" +msgstr "" + +#: ../gtk/main.ui.h:22 +msgid "_Options" +msgstr "" + +#: ../gtk/main.ui.h:23 +msgid "Set configuration URI" +msgstr "" + +#: ../gtk/main.ui.h:24 +msgid "Always start video" +msgstr "" + +#: ../gtk/main.ui.h:25 +msgid "Enable self-view" +msgstr "" + +#: ../gtk/main.ui.h:26 +msgid "_Help" +msgstr "" + +#: ../gtk/main.ui.h:27 +msgid "Show debug window" +msgstr "" + +#: ../gtk/main.ui.h:28 +msgid "_Homepage" +msgstr "" + +#: ../gtk/main.ui.h:29 +msgid "Check _Updates" +msgstr "" + +#: ../gtk/main.ui.h:30 +msgid "Account assistant" +msgstr "" + +#: ../gtk/main.ui.h:32 +msgid "SIP address or phone number:" +msgstr "" + +#: ../gtk/main.ui.h:33 +msgid "Initiate a new call" +msgstr "" + +#: ../gtk/main.ui.h:34 +msgid "Contacts" +msgstr "" + +#: ../gtk/main.ui.h:35 +msgid "Search" +msgstr "" + +#: ../gtk/main.ui.h:36 +msgid "Add contacts from directory" +msgstr "" + +#: ../gtk/main.ui.h:37 +msgid "Add contact" +msgstr "" + +#: ../gtk/main.ui.h:38 +msgid "Recent calls" +msgstr "" + +#: ../gtk/main.ui.h:39 +msgid "My current identity:" +msgstr "" + +#: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 +msgid "Username" +msgstr "" + +#: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 +msgid "Password" +msgstr "" + +#: ../gtk/main.ui.h:42 +msgid "Internet connection:" +msgstr "" + +#: ../gtk/main.ui.h:43 +msgid "Automatically log me in" +msgstr "" + +#: ../gtk/main.ui.h:44 ../gtk/password.ui.h:3 +msgid "UserID" +msgstr "" + +#: ../gtk/main.ui.h:45 +msgid "Login information" +msgstr "" + +#: ../gtk/main.ui.h:46 +msgid "Welcome !" +msgstr "" + +#: ../gtk/main.ui.h:47 +msgid "Delete" +msgstr "" + +#: ../gtk/about.ui.h:1 +msgid "About linphone" +msgstr "" + +#: ../gtk/about.ui.h:2 +msgid "(C) Belledonne Communications,2010\n" +msgstr "" + +#: ../gtk/about.ui.h:4 +msgid "An internet video phone using the standard SIP (rfc3261) protocol." +msgstr "" + +#: ../gtk/about.ui.h:5 +msgid "" +"fr: Simon Morlat\n" +"en: Simon Morlat and Delphine Perreau\n" +"it: Alberto Zanoni \n" +"de: Jean-Jacques Sarton \n" +"sv: Daniel Nylander \n" +"es: Jesus Benitez \n" +"ja: YAMAGUCHI YOSHIYA \n" +"pt_BR: Rafael Caesar Lenzi \n" +"pl: Robert Nasiadek \n" +"cs: Petr Pisar \n" +"hu: anonymous\n" +"he: Eli Zaretskii \n" +msgstr "" + +#: ../gtk/contact.ui.h:2 +msgid "SIP Address" +msgstr "" + +#: ../gtk/contact.ui.h:3 +msgid "Show this contact presence status" +msgstr "" + +#: ../gtk/contact.ui.h:4 +msgid "Allow this contact to see my presence status" +msgstr "" + +#: ../gtk/contact.ui.h:5 +msgid "Contact information" +msgstr "" + +#: ../gtk/log.ui.h:1 +msgid "Linphone debug window" +msgstr "" + +#: ../gtk/log.ui.h:2 +msgid "Scroll to end" +msgstr "" + +#: ../gtk/password.ui.h:1 +msgid "Linphone - Authentication required" +msgstr "" + +#: ../gtk/password.ui.h:2 +msgid "Please enter the domain password" +msgstr "" + +#: ../gtk/call_logs.ui.h:1 +msgid "Call history" +msgstr "" + +#: ../gtk/call_logs.ui.h:2 +msgid "Clear all" +msgstr "" + +#: ../gtk/call_logs.ui.h:3 +msgid "Call back" +msgstr "" + +#: ../gtk/sip_account.ui.h:1 +msgid "Linphone - Configure a SIP account" +msgstr "" + +#: ../gtk/sip_account.ui.h:2 +msgid "Your SIP identity:" +msgstr "" + +#: ../gtk/sip_account.ui.h:3 +msgid "Looks like sip:@" +msgstr "" + +#: ../gtk/sip_account.ui.h:4 +msgid "sip:" +msgstr "" + +#: ../gtk/sip_account.ui.h:5 +msgid "SIP Proxy address:" +msgstr "" + +#: ../gtk/sip_account.ui.h:6 +msgid "Looks like sip:" +msgstr "" + +#: ../gtk/sip_account.ui.h:7 +msgid "Registration duration (sec):" +msgstr "" + +#: ../gtk/sip_account.ui.h:8 +msgid "Contact params (optional):" +msgstr "" + +#: ../gtk/sip_account.ui.h:9 +msgid "AVPF regular RTCP interval (sec):" +msgstr "" + +#: ../gtk/sip_account.ui.h:10 +msgid "Route (optional):" +msgstr "" + +#: ../gtk/sip_account.ui.h:11 +msgid "Transport" +msgstr "" + +#: ../gtk/sip_account.ui.h:12 +msgid "Register" +msgstr "" + +#: ../gtk/sip_account.ui.h:13 +msgid "Publish presence information" +msgstr "" + +#: ../gtk/sip_account.ui.h:14 +msgid "Enable AVPF" +msgstr "" + +#: ../gtk/sip_account.ui.h:15 +msgid "Configure a SIP account" +msgstr "" + +#: ../gtk/parameters.ui.h:1 +msgid "anonymous" +msgstr "" + +#: ../gtk/parameters.ui.h:2 +msgid "GSSAPI" +msgstr "" + +#: ../gtk/parameters.ui.h:3 +msgid "SASL" +msgstr "" + +#: ../gtk/parameters.ui.h:4 +msgid "default soundcard" +msgstr "" + +#: ../gtk/parameters.ui.h:5 +msgid "a sound card" +msgstr "" + +#: ../gtk/parameters.ui.h:6 +msgid "default camera" +msgstr "" + +#: ../gtk/parameters.ui.h:7 +msgid "CIF" +msgstr "" + +#: ../gtk/parameters.ui.h:8 +msgid "Audio codecs" +msgstr "" + +#: ../gtk/parameters.ui.h:9 +msgid "Video codecs" +msgstr "" + +#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +msgid "C" +msgstr "" + +#: ../gtk/parameters.ui.h:11 +msgid "SIP (UDP)" +msgstr "" + +#: ../gtk/parameters.ui.h:12 +msgid "SIP (TCP)" +msgstr "" + +#: ../gtk/parameters.ui.h:13 +msgid "SIP (TLS)" +msgstr "" + +#: ../gtk/parameters.ui.h:14 +msgid "Settings" +msgstr "" + +#: ../gtk/parameters.ui.h:15 +msgid "Set Maximum Transmission Unit:" +msgstr "" + +#: ../gtk/parameters.ui.h:16 +msgid "Send DTMFs as SIP info" +msgstr "" + +#: ../gtk/parameters.ui.h:17 +msgid "Use IPv6 instead of IPv4" +msgstr "" + +#: ../gtk/parameters.ui.h:18 +msgid "Transport" +msgstr "" + +#: ../gtk/parameters.ui.h:19 +msgid "Media encryption type" +msgstr "" + +#: ../gtk/parameters.ui.h:20 +msgid "Video RTP/UDP:" +msgstr "" + +#: ../gtk/parameters.ui.h:21 +msgid "Audio RTP/UDP:" +msgstr "" + +#: ../gtk/parameters.ui.h:22 +msgid "Fixed" +msgstr "" + +#: ../gtk/parameters.ui.h:23 +msgid "Media encryption is mandatory" +msgstr "" + +#: ../gtk/parameters.ui.h:24 +msgid "Tunnel" +msgstr "" + +#: ../gtk/parameters.ui.h:25 +msgid "DSCP fields" +msgstr "" + +#: ../gtk/parameters.ui.h:26 +msgid "SIP/TCP port" +msgstr "" + +#: ../gtk/parameters.ui.h:27 +msgid "SIP/UDP port" +msgstr "" + +#: ../gtk/parameters.ui.h:28 +msgid "Network protocol and ports" +msgstr "" + +#: ../gtk/parameters.ui.h:29 +msgid "Direct connection to the Internet" +msgstr "" + +#: ../gtk/parameters.ui.h:30 +msgid "Behind NAT / Firewall (specify gateway IP )" +msgstr "" + +#: ../gtk/parameters.ui.h:31 +msgid "Behind NAT / Firewall (use STUN to resolve)" +msgstr "" + +#: ../gtk/parameters.ui.h:32 +msgid "Behind NAT / Firewall (use ICE)" +msgstr "" + +#: ../gtk/parameters.ui.h:33 +msgid "Behind NAT / Firewall (use uPnP)" +msgstr "" + +#: ../gtk/parameters.ui.h:34 +msgid "Public IP address:" +msgstr "" + +#: ../gtk/parameters.ui.h:35 +msgid "Stun server:" +msgstr "" + +#: ../gtk/parameters.ui.h:36 +msgid "NAT and Firewall" +msgstr "" + +#: ../gtk/parameters.ui.h:37 +msgid "Network settings" +msgstr "" + +#: ../gtk/parameters.ui.h:38 +msgid "Ring sound:" +msgstr "" + +#: ../gtk/parameters.ui.h:39 +msgid "ALSA special device (optional):" +msgstr "" + +#: ../gtk/parameters.ui.h:40 +msgid "Capture device:" +msgstr "" + +#: ../gtk/parameters.ui.h:41 +msgid "Ring device:" +msgstr "" + +#: ../gtk/parameters.ui.h:42 +msgid "Playback device:" +msgstr "" + +#: ../gtk/parameters.ui.h:43 +msgid "Enable echo cancellation" +msgstr "" + +#: ../gtk/parameters.ui.h:44 +msgid "Audio" +msgstr "" + +#: ../gtk/parameters.ui.h:45 +msgid "Video input device:" +msgstr "" + +#: ../gtk/parameters.ui.h:46 +msgid "Prefered video resolution:" +msgstr "" + +#: ../gtk/parameters.ui.h:47 +msgid "Video output method:" +msgstr "" + +#: ../gtk/parameters.ui.h:48 +msgid "Video" +msgstr "" + +#: ../gtk/parameters.ui.h:49 +msgid "Multimedia settings" +msgstr "" + +#: ../gtk/parameters.ui.h:50 +msgid "This section defines your SIP address when not using a SIP account" +msgstr "" + +#: ../gtk/parameters.ui.h:51 +msgid "Your display name (eg: John Doe):" +msgstr "" + +#: ../gtk/parameters.ui.h:52 +msgid "Your username:" +msgstr "" + +#: ../gtk/parameters.ui.h:53 +msgid "Your resulting SIP address:" +msgstr "" + +#: ../gtk/parameters.ui.h:54 +msgid "Default identity" +msgstr "" + +#: ../gtk/parameters.ui.h:55 +msgid "Wizard" +msgstr "" + +#: ../gtk/parameters.ui.h:56 +msgid "Add" +msgstr "" + +#: ../gtk/parameters.ui.h:57 +msgid "Edit" +msgstr "" + +#: ../gtk/parameters.ui.h:58 +msgid "Remove" +msgstr "" + +#: ../gtk/parameters.ui.h:59 +msgid "Proxy accounts" +msgstr "" + +#: ../gtk/parameters.ui.h:60 +msgid "Erase all passwords" +msgstr "" + +#: ../gtk/parameters.ui.h:61 +msgid "Privacy" +msgstr "" + +#: ../gtk/parameters.ui.h:62 +msgid "Manage SIP Accounts" +msgstr "" + +#: ../gtk/parameters.ui.h:63 ../gtk/tunnel_config.ui.h:4 +msgid "Enable" +msgstr "" + +#: ../gtk/parameters.ui.h:64 ../gtk/tunnel_config.ui.h:5 +msgid "Disable" +msgstr "" + +#: ../gtk/parameters.ui.h:65 +msgid "Codecs" +msgstr "" + +#: ../gtk/parameters.ui.h:66 +msgid "0 stands for \"unlimited\"" +msgstr "" + +#: ../gtk/parameters.ui.h:67 +msgid "Upload speed limit in Kbit/sec:" +msgstr "" + +#: ../gtk/parameters.ui.h:68 +msgid "Download speed limit in Kbit/sec:" +msgstr "" + +#: ../gtk/parameters.ui.h:69 +msgid "Enable adaptive rate control" +msgstr "" + +#: ../gtk/parameters.ui.h:70 +msgid "" +"Adaptive rate control is a technique to dynamically guess the available " +"bandwidth during a call." +msgstr "" + +#: ../gtk/parameters.ui.h:71 +msgid "Bandwidth control" +msgstr "" + +#: ../gtk/parameters.ui.h:72 +msgid "Codecs" +msgstr "" + +#: ../gtk/parameters.ui.h:73 +msgid "Language" +msgstr "" + +#: ../gtk/parameters.ui.h:74 +msgid "Show advanced settings" +msgstr "" + +#: ../gtk/parameters.ui.h:75 +msgid "Level" +msgstr "" + +#: ../gtk/parameters.ui.h:76 +msgid "User interface" +msgstr "" + +#: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 +msgid "Server address:" +msgstr "" + +#: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 +msgid "Authentication method:" +msgstr "" + +#: ../gtk/parameters.ui.h:80 +msgid "label" +msgstr "" + +#: ../gtk/parameters.ui.h:81 +msgid "LDAP Account setup" +msgstr "" + +#: ../gtk/parameters.ui.h:82 +msgid "LDAP" +msgstr "" + +#: ../gtk/parameters.ui.h:83 +msgid "Done" +msgstr "" + +#: ../gtk/buddylookup.ui.h:1 +msgid "Search contacts in directory" +msgstr "" + +#: ../gtk/buddylookup.ui.h:2 +msgid "Add to my list" +msgstr "" + +#: ../gtk/buddylookup.ui.h:3 +msgid "Search somebody" +msgstr "" + +#: ../gtk/waiting.ui.h:1 +msgid "Linphone" +msgstr "" + +#: ../gtk/waiting.ui.h:2 +msgid "Please wait" +msgstr "" + +#: ../gtk/dscp_settings.ui.h:1 +msgid "DSCP settings" +msgstr "" + +#: ../gtk/dscp_settings.ui.h:2 +msgid "SIP" +msgstr "" + +#: ../gtk/dscp_settings.ui.h:3 +msgid "Audio RTP stream" +msgstr "" + +#: ../gtk/dscp_settings.ui.h:4 +msgid "Video RTP stream" +msgstr "" + +#: ../gtk/dscp_settings.ui.h:5 +msgid "Set DSCP values (in hexadecimal)" +msgstr "" + +#: ../gtk/call_statistics.ui.h:1 +msgid "Call statistics" +msgstr "" + +#: ../gtk/call_statistics.ui.h:2 +msgid "Audio codec" +msgstr "" + +#: ../gtk/call_statistics.ui.h:3 +msgid "Video codec" +msgstr "" + +#: ../gtk/call_statistics.ui.h:4 +msgid "Audio IP bandwidth usage" +msgstr "" + +#: ../gtk/call_statistics.ui.h:5 +msgid "Audio Media connectivity" +msgstr "" + +#: ../gtk/call_statistics.ui.h:6 +msgid "Video IP bandwidth usage" +msgstr "" + +#: ../gtk/call_statistics.ui.h:7 +msgid "Video Media connectivity" +msgstr "" + +#: ../gtk/call_statistics.ui.h:8 +msgid "Round trip time" +msgstr "" + +#: ../gtk/call_statistics.ui.h:9 +msgid "Video resolution received" +msgstr "" + +#: ../gtk/call_statistics.ui.h:10 +msgid "Video resolution sent" +msgstr "" + +#: ../gtk/call_statistics.ui.h:11 +msgid "RTP profile" +msgstr "" + +#: ../gtk/call_statistics.ui.h:12 +msgid "Call statistics and information" +msgstr "" + +#: ../gtk/tunnel_config.ui.h:1 +msgid "Configure VoIP tunnel" +msgstr "" + +#: ../gtk/tunnel_config.ui.h:2 +msgid "Host" +msgstr "" + +#: ../gtk/tunnel_config.ui.h:3 +msgid "Port" +msgstr "" + +#: ../gtk/tunnel_config.ui.h:6 +msgid "Configure tunnel" +msgstr "" + +#: ../gtk/tunnel_config.ui.h:9 +msgid "Configure http proxy (optional)" +msgstr "" + +#: ../gtk/keypad.ui.h:1 +msgid "D" +msgstr "" + +#: ../gtk/keypad.ui.h:2 +msgid "#" +msgstr "" + +#: ../gtk/keypad.ui.h:3 +msgid "0" +msgstr "" + +#: ../gtk/keypad.ui.h:4 +msgid "*" +msgstr "" + +#: ../gtk/keypad.ui.h:6 +msgid "9" +msgstr "" + +#: ../gtk/keypad.ui.h:7 +msgid "8" +msgstr "" + +#: ../gtk/keypad.ui.h:8 +msgid "7" +msgstr "" + +#: ../gtk/keypad.ui.h:9 +msgid "B" +msgstr "" + +#: ../gtk/keypad.ui.h:10 +msgid "6" +msgstr "" + +#: ../gtk/keypad.ui.h:11 +msgid "5" +msgstr "" + +#: ../gtk/keypad.ui.h:12 +msgid "4" +msgstr "" + +#: ../gtk/keypad.ui.h:13 +msgid "A" +msgstr "" + +#: ../gtk/keypad.ui.h:14 +msgid "3" +msgstr "" + +#: ../gtk/keypad.ui.h:15 +msgid "2" +msgstr "" + +#: ../gtk/keypad.ui.h:16 +msgid "1" +msgstr "" + +#: ../gtk/ldap.ui.h:1 +msgid "LDAP Settings" +msgstr "" + +#: ../gtk/ldap.ui.h:6 +msgid "Use TLS Connection" +msgstr "" + +#: ../gtk/ldap.ui.h:7 +msgid "Not yet available" +msgstr "" + +#: ../gtk/ldap.ui.h:8 +msgid "Connection" +msgstr "" + +#: ../gtk/ldap.ui.h:9 +msgid "Bind DN" +msgstr "" + +#: ../gtk/ldap.ui.h:10 +msgid "Authname" +msgstr "" + +#: ../gtk/ldap.ui.h:11 +msgid "Realm" +msgstr "" + +#: ../gtk/ldap.ui.h:12 +msgid "SASL" +msgstr "" + +#: ../gtk/ldap.ui.h:13 +msgid "Base object:" +msgstr "" + +#: ../gtk/ldap.ui.h:15 +#, no-c-format +msgid "Filter (%s for name):" +msgstr "" + +#: ../gtk/ldap.ui.h:16 +msgid "Name Attribute:" +msgstr "" + +#: ../gtk/ldap.ui.h:17 +msgid "SIP address attribute:" +msgstr "" + +#: ../gtk/ldap.ui.h:18 +msgid "Attributes to query:" +msgstr "" + +#: ../gtk/ldap.ui.h:19 +msgid "Search" +msgstr "" + +#: ../gtk/ldap.ui.h:20 +msgid "Timeout for search:" +msgstr "" + +#: ../gtk/ldap.ui.h:21 +msgid "Max results:" +msgstr "" + +#: ../gtk/ldap.ui.h:22 +msgid "Follow Aliases" +msgstr "" + +#: ../gtk/ldap.ui.h:23 +msgid "Miscellaneous" +msgstr "" + +#: ../gtk/ldap.ui.h:24 +msgid "ANONYMOUS" +msgstr "" + +#: ../gtk/ldap.ui.h:25 +msgid "SIMPLE" +msgstr "" + +#: ../gtk/ldap.ui.h:26 +msgid "DIGEST-MD5" +msgstr "" + +#: ../gtk/ldap.ui.h:27 +msgid "NTLM" +msgstr "" + +#: ../gtk/config-uri.ui.h:1 +msgid "Specifying a remote configuration URI" +msgstr "" + +#: ../gtk/config-uri.ui.h:2 +msgid "" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " +msgstr "" + +#: ../gtk/config-uri.ui.h:4 +msgid "https://" +msgstr "" + +#: ../gtk/provisioning-fetch.ui.h:1 +msgid "Configuring..." +msgstr "" + +#: ../gtk/provisioning-fetch.ui.h:2 +msgid "Please wait while fetching configuration from server..." +msgstr "" + +#: ../coreapi/linphonecore.c:1511 +msgid "Ready" +msgstr "" + +#: ../coreapi/linphonecore.c:2470 +msgid "Configuring" +msgstr "" + +#: ../coreapi/linphonecore.c:2635 +msgid "Looking for telephone number destination..." +msgstr "" + +#: ../coreapi/linphonecore.c:2637 +msgid "Could not resolve this number." +msgstr "" + +#. must be known at that time +#: ../coreapi/linphonecore.c:2919 +msgid "Contacting" +msgstr "" + +#: ../coreapi/linphonecore.c:2924 +msgid "Could not call" +msgstr "" + +#: ../coreapi/linphonecore.c:3074 +msgid "Sorry, we have reached the maximum number of simultaneous calls" +msgstr "" + +#: ../coreapi/linphonecore.c:3233 +msgid "is contacting you" +msgstr "" + +#: ../coreapi/linphonecore.c:3234 +msgid " and asked autoanswer." +msgstr "" + +#: ../coreapi/linphonecore.c:3234 +msgid "." +msgstr "" + +#: ../coreapi/linphonecore.c:3352 +msgid "Modifying call parameters..." +msgstr "" + +#: ../coreapi/linphonecore.c:3700 +msgid "Connected." +msgstr "" + +#: ../coreapi/linphonecore.c:3725 +msgid "Call aborted" +msgstr "" + +#: ../coreapi/linphonecore.c:3915 +msgid "Could not pause the call" +msgstr "" + +#: ../coreapi/linphonecore.c:3919 +msgid "Pausing the current call..." +msgstr "" + +#: ../coreapi/misc.c:438 +msgid "Stun lookup in progress..." +msgstr "" + +#: ../coreapi/misc.c:619 +msgid "ICE local candidates gathering in progress..." +msgstr "" + +#: ../coreapi/friend.c:33 +msgid "Online" +msgstr "" + +#: ../coreapi/friend.c:36 +msgid "Busy" +msgstr "" + +#: ../coreapi/friend.c:39 +msgid "Be right back" +msgstr "" + +#: ../coreapi/friend.c:42 +msgid "Away" +msgstr "" + +#: ../coreapi/friend.c:45 +msgid "On the phone" +msgstr "" + +#: ../coreapi/friend.c:48 +msgid "Out to lunch" +msgstr "" + +#: ../coreapi/friend.c:51 +msgid "Do not disturb" +msgstr "" + +#: ../coreapi/friend.c:54 +msgid "Moved" +msgstr "" + +#: ../coreapi/friend.c:57 +msgid "Using another messaging service" +msgstr "" + +#: ../coreapi/friend.c:60 +msgid "Offline" +msgstr "" + +#: ../coreapi/friend.c:63 +msgid "Pending" +msgstr "" + +#: ../coreapi/friend.c:66 +msgid "Vacation" +msgstr "" + +#: ../coreapi/friend.c:68 +msgid "Unknown-bug" +msgstr "" + +#: ../coreapi/proxy.c:319 +msgid "" +"The sip proxy address you entered is invalid, it must start with \"sip:\" " +"followed by a hostname." +msgstr "" + +#: ../coreapi/proxy.c:325 +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:1377 +#, c-format +msgid "Could not login as %s" +msgstr "" + +#: ../coreapi/callbacks.c:383 +msgid "Remote ringing." +msgstr "" + +#: ../coreapi/callbacks.c:404 +msgid "Remote ringing..." +msgstr "" + +#: ../coreapi/callbacks.c:414 +msgid "Early media." +msgstr "" + +#: ../coreapi/callbacks.c:475 +#, c-format +msgid "Call with %s is paused." +msgstr "" + +#: ../coreapi/callbacks.c:488 +#, c-format +msgid "Call answered by %s - on hold." +msgstr "" + +#: ../coreapi/callbacks.c:498 +msgid "Call resumed." +msgstr "" + +#: ../coreapi/callbacks.c:502 +#, c-format +msgid "Call answered by %s." +msgstr "" + +#: ../coreapi/callbacks.c:525 +msgid "Incompatible, check codecs or security settings..." +msgstr "" + +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" + +#: ../coreapi/callbacks.c:560 +msgid "We have been resumed." +msgstr "" + +#. we are being paused +#: ../coreapi/callbacks.c:568 +msgid "We are paused by other party." +msgstr "" + +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 +msgid "Call is updated by remote." +msgstr "" + +#: ../coreapi/callbacks.c:705 +msgid "Call terminated." +msgstr "" + +#: ../coreapi/callbacks.c:733 +msgid "User is busy." +msgstr "" + +#: ../coreapi/callbacks.c:734 +msgid "User is temporarily unavailable." +msgstr "" + +#. char *retrymsg=_("%s. Retry after %i minute(s)."); +#: ../coreapi/callbacks.c:736 +msgid "User does not want to be disturbed." +msgstr "" + +#: ../coreapi/callbacks.c:737 +msgid "Call declined." +msgstr "" + +#: ../coreapi/callbacks.c:752 +msgid "Request timeout." +msgstr "" + +#: ../coreapi/callbacks.c:780 +msgid "Redirected" +msgstr "" + +#: ../coreapi/callbacks.c:835 +msgid "Call failed." +msgstr "" + +#: ../coreapi/callbacks.c:913 +#, c-format +msgid "Registration on %s successful." +msgstr "" + +#: ../coreapi/callbacks.c:914 +#, c-format +msgid "Unregistration on %s done." +msgstr "" + +#: ../coreapi/callbacks.c:932 +msgid "no response timeout" +msgstr "" + +#: ../coreapi/callbacks.c:935 +#, c-format +msgid "Registration on %s failed: %s" +msgstr "" + +#: ../coreapi/callbacks.c:942 +msgid "Service unavailable, retrying" +msgstr "" + +#: ../coreapi/linphonecall.c:174 +#, c-format +msgid "Authentication token is %s" +msgstr "" + +#: ../coreapi/linphonecall.c:3020 +#, c-format +msgid "You have missed %i call." +msgid_plural "You have missed %i calls." +msgstr[0] "" +msgstr[1] "" diff --git a/po/nb_NO.po b/po/nb_NO.po index 6170997da..ed39ef92c 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -1,21 +1,22 @@ -# Copyright (C) 2011 Free Software Foundation, Inc. -# This file is distributed under the same license as the PACKAGE package. -# -# Øyvind Sæther , 2011. +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Øyvind Sæther , 2011 msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2011-04-05 01:56+0200\n" -"Last-Translator: Øyvind Sæther \n" -"Language-Team: Norwegian Bokmål \n" -"Language: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:17+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/linphone-gtk/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.2\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" +"Language: nb_NO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -28,28 +29,25 @@ msgid "Send text to %s" msgstr "Send tekst til %s" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "I samtale med" +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "avbrutt" +msgstr "" #: ../gtk/calllogs.c:320 -#, fuzzy msgid "Missed" -msgstr "ubesvart" +msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "Avvis" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format @@ -89,9 +87,8 @@ msgid "Conference" msgstr "" #: ../gtk/conference.c:46 -#, fuzzy msgid "Me" -msgstr "Skru mikrofonen av" +msgstr "" #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102 #, c-format @@ -128,112 +125,92 @@ msgstr "besvarer innkommende samtaler automatisk om valgt" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" -"Spesifiser arbeidsmappe (bør være base for installasjonen, f.eks: c:" -"\\Programfiler\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +msgstr "Spesifiser arbeidsmappe (bør være base for installasjonen, f.eks: c:\\Programfiler\\Linphone)" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Bekreftelse" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "Brukerkontoveiviser" +msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "Ring med %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 vil legge deg til i hans/hennes kontaktliste.\n" -"Vil du tillate vedkommende å se din tilstedestatus eller legge vedkommende i " -"din kontaktliste?\n" -"Hvis du svarer nei vil personen bli svartelyst midlertidig." +msgstr "%s vil legge deg til i hans/hennes kontaktliste.\nVil du tillate vedkommende å se din tilstedestatus eller legge vedkommende i din kontaktliste?\nHvis du svarer nei vil personen bli svartelyst midlertidig." -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -"Skriv inn ditt passord for brukernavn %s\n" -" på domene %s:i>:" -#: ../gtk/main.c:1376 -#, fuzzy +#: ../gtk/main.c:1283 msgid "Call error" -msgstr "Samtalehistorikk" +msgstr "" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "Samtale avsluttet" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Innkommende samtale" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Svarer" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Avvis" -#: ../gtk/main.c:1392 -#, fuzzy +#: ../gtk/main.c:1299 msgid "Call paused" -msgstr "Samtale avbrutt" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "Porter" +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "Peker til nettsted" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Linphone - en video Internet telefon" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (Standard)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "Vi er overført til %s" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"Klarte ikke å finne noe lydkort på denne datamaskinen.\n" -"Du vil ikke kunne sende eller motta lydsamtaler." +msgstr "Klarte ikke å finne noe lydkort på denne datamaskinen.\nDu vil ikke kunne sende eller motta lydsamtaler." -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "En gratis SIP video-telefon" @@ -250,9 +227,8 @@ msgid "Name" msgstr "Navn" #: ../gtk/friendlist.c:721 -#, fuzzy msgid "Call" -msgstr "Ring %s" +msgstr "" #: ../gtk/friendlist.c:726 msgid "Chat" @@ -274,9 +250,9 @@ msgid "Delete contact '%s'" msgstr "Slett kontakt '%s'" #: ../gtk/friendlist.c:978 -#, fuzzy, c-format +#, c-format msgid "Delete chat history of '%s'" -msgstr "Slett kontakt '%s'" +msgstr "" #: ../gtk/friendlist.c:1029 #, c-format @@ -292,9 +268,8 @@ msgid "Status" msgstr "Status" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Min. datahastighet (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -312,92 +287,92 @@ msgstr "Av" msgid "Account" msgstr "Konto" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "Engelsk" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "Fransk" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "Svensk" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "Italisensk" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "Spansk" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "Portugisisk" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "Polsk" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "Tysk" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "Russisk" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "Japansk" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "Nederlandsk" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "Ungarsk" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "Tjekkisk" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "Kinesisk" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 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:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -406,9 +381,7 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"En nyere utgave er tilgjengelig fra %s.\n" -"Vil du åpne en nettleser og laste den ned ?" +msgstr "En nyere utgave er tilgjengelig fra %s.\nVil du åpne en nettleser og laste den ned ?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -445,24 +418,19 @@ msgstr[1] "Hittat kontakt %i" msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"Velkommen\n" -"Denne veiviseren vil hjelpe deg sette opp en SIP-konto for dine samtaler." +msgstr "Velkommen\nDenne veiviseren vil hjelpe deg sette opp en SIP-konto for dine samtaler." #: ../gtk/setupwizard.c:43 -#, fuzzy msgid "Create an account on linphone.org" -msgstr "Lag en konto ved å velge ett brukernavn" +msgstr "" #: ../gtk/setupwizard.c:44 -#, fuzzy msgid "I have already a linphone.org account and I just want to use it" -msgstr "Jeg har allerede en brukerkonto og vil bruke den." +msgstr "" #: ../gtk/setupwizard.c:45 -#, fuzzy msgid "I have already a sip account and I just want to use it" -msgstr "Jeg har allerede en brukerkonto og vil bruke den." +msgstr "" #: ../gtk/setupwizard.c:46 msgid "I want to specify a remote configuration URI" @@ -485,14 +453,12 @@ msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "Brukernavn" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "Passord" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -507,14 +473,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "Brukernavn:" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "Passord:" +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -540,15 +504,13 @@ msgstr "Takk. Ditt konto er nå satt opp og klart til bruk." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "Brukerkontoveiviser" +msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -559,9 +521,8 @@ msgid "Account setup assistant" msgstr "Brukerkontoveiviser" #: ../gtk/setupwizard.c:629 -#, fuzzy msgid "Configure your account (step 1/1)" -msgstr "Konfigurer en SIP konto" +msgstr "" #: ../gtk/setupwizard.c:634 msgid "Enter your sip username (step 1/1)" @@ -580,14 +541,13 @@ msgid "Error" msgstr "" #: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 -#, fuzzy msgid "Terminating" -msgstr "Lägg på" +msgstr "" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, fuzzy, c-format +#, c-format msgid "Call #%i" -msgstr "Ring %s" +msgstr "" #: ../gtk/incall_view.c:155 #, c-format @@ -595,18 +555,16 @@ msgid "Transfer to call #%i with %s" msgstr "" #: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 -#, fuzzy msgid "Not used" -msgstr "Ikke funnet" +msgstr "" #: ../gtk/incall_view.c:221 msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "ICE filter" +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -617,9 +575,8 @@ msgid "Going through one or more NATs" msgstr "" #: ../gtk/incall_view.c:229 -#, fuzzy msgid "Direct" -msgstr "Omdirigert" +msgstr "" #: ../gtk/incall_view.c:231 msgid "Through a relay server" @@ -630,9 +587,8 @@ msgid "uPnP not activated" msgstr "" #: ../gtk/incall_view.c:241 -#, fuzzy msgid "uPnP in progress" -msgstr "STUN oppslag pågår..." +msgstr "" #: ../gtk/incall_view.c:243 msgid "uPnp not available" @@ -643,9 +599,8 @@ msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "ICE filter" +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -672,113 +627,110 @@ msgstr "" msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "Ringer..." -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "00:00:00" -#: ../gtk/incall_view.c:515 +#: ../gtk/incall_view.c:525 msgid "Incoming call" msgstr "Innkommende samtale" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In call" msgstr "I samtale med" -#: ../gtk/incall_view.c:738 +#: ../gtk/incall_view.c:758 msgid "Paused call" msgstr "Pauset samtale" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "%02i:%02i:%02i" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Samtale avsluttet." -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 -#, fuzzy +#: ../gtk/incall_view.c:828 msgid "Transfer done." -msgstr "Overfører" +msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "Overfører" +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "Fortsett" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Pause" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 -#, fuzzy +#: ../gtk/incall_view.c:948 msgid "(Paused)" -msgstr "Pause" +msgstr "" #: ../gtk/loginframe.c:88 #, c-format @@ -786,9 +738,9 @@ msgid "Please enter login information for %s" msgstr "Skriv inn påloggingsinformasjon for %s:" #: ../gtk/config-fetching.c:57 -#, fuzzy, c-format +#, c-format msgid "fetching from %s" -msgstr "Inkommande samtal från %s" +msgstr "" #: ../gtk/config-fetching.c:73 #, c-format @@ -812,18 +764,14 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Velkommen\n" -"Denne veiviseren vil hjelpe deg sette opp en SIP-konto for dine samtaler." #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Mikrofonenhet:" +msgstr "" #: ../gtk/audio_assistant.c:329 msgid "Recorded volume" @@ -834,9 +782,8 @@ msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Avspillingsenhet:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -855,14 +802,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "Assistent" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "Brukerkontoveiviser" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -877,9 +822,8 @@ msgid "Record and Play" msgstr "" #: ../gtk/main.ui.h:1 -#, fuzzy msgid "Callee name" -msgstr "Samtale avsluttet." +msgstr "" #: ../gtk/main.ui.h:2 msgid "Send" @@ -942,9 +886,8 @@ msgid "_Options" msgstr "_Alternativer" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Bekreftelse" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -971,9 +914,8 @@ msgid "Check _Updates" msgstr "Sjekk _Oppdateringer" #: ../gtk/main.ui.h:30 -#, fuzzy msgid "Account assistant" -msgstr "Brukerkontoveiviser" +msgstr "" #: ../gtk/main.ui.h:32 msgid "SIP address or phone number:" @@ -1000,9 +942,8 @@ msgid "Add contact" msgstr "Legg til kontakt" #: ../gtk/main.ui.h:38 -#, fuzzy msgid "Recent calls" -msgstr "I samtale" +msgstr "" #: ../gtk/main.ui.h:39 msgid "My current identity:" @@ -1050,12 +991,9 @@ msgstr "(C) Belledonne Communications,2011\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "" -"En Internet Videotelefon som bruker den standardiserte SIP-protokollen " -"(rfc3261)." +msgstr "En Internet Videotelefon som bruker den standardiserte SIP-protokollen (rfc3261)." #: ../gtk/about.ui.h:5 -#, fuzzy msgid "" "fr: Simon Morlat\n" "en: Simon Morlat and Delphine Perreau\n" @@ -1070,17 +1008,6 @@ msgid "" "hu: anonymous\n" "he: Eli Zaretskii \n" msgstr "" -"fr: Simon Morlat\n" -"en: Simon Morlat og Delphine Perreau\n" -"it: Alberto Zanoni \n" -"de: Jean-Jacques Sarton \n" -"sv: Daniel Nylander \n" -"es: Jesus Benitez \n" -"ja: YAMAGUCHI YOSHIYA \n" -"pt_BR: Rafael Caesar Lenzi \n" -"pl: Robert Nasiadek \n" -"cs: Petr Pisar \n" -"hu: anonym\n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1155,9 +1082,8 @@ msgid "Registration duration (sec):" msgstr "Registreringsfrekvens (sek.):" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "Route (valgfritt):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1168,9 +1094,8 @@ msgid "Route (optional):" msgstr "Route (valgfritt):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Transport" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1181,9 +1106,8 @@ msgid "Publish presence information" msgstr "Publiser tilstedestatus" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Aktiver" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1230,19 +1154,16 @@ msgid "C" msgstr "C" #: ../gtk/parameters.ui.h:11 -#, fuzzy msgid "SIP (UDP)" -msgstr "SIP (UDP):" +msgstr "" #: ../gtk/parameters.ui.h:12 -#, fuzzy msgid "SIP (TCP)" -msgstr "SIP (TCP):" +msgstr "" #: ../gtk/parameters.ui.h:13 -#, fuzzy msgid "SIP (TLS)" -msgstr "SIP (TCP):" +msgstr "" #: ../gtk/parameters.ui.h:14 msgid "Settings" @@ -1309,23 +1230,20 @@ msgid "Direct connection to the Internet" msgstr "Tilkoblet Internett direkte" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "Bak NAT / Brannmur (spesifiser gateway IP under)" +msgstr "" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" msgstr "Bak NAT / Brannmur (bruk STUN for å avgjøre)" #: ../gtk/parameters.ui.h:32 -#, fuzzy msgid "Behind NAT / Firewall (use ICE)" -msgstr "Bak NAT / Brannmur (bruk STUN for å avgjøre)" +msgstr "" #: ../gtk/parameters.ui.h:33 -#, fuzzy msgid "Behind NAT / Firewall (use uPnP)" -msgstr "Bak NAT / Brannmur (bruk STUN for å avgjøre)" +msgstr "" #: ../gtk/parameters.ui.h:34 msgid "Public IP address:" @@ -1380,9 +1298,8 @@ msgid "Prefered video resolution:" msgstr "Foretrukke video-oppløsning:" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Videoenhet:" +msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1503,23 +1420,20 @@ msgid "User interface" msgstr "Brukergrensesnitt" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "SIP Adress" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Autorisering kreves" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "etikett" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Proxy kontoer" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" @@ -1550,42 +1464,36 @@ msgid "Please wait" msgstr "Vennligst vent" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "Innstillinger" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" msgstr "" #: ../gtk/dscp_settings.ui.h:3 -#, fuzzy msgid "Audio RTP stream" -msgstr "Lydomformer" +msgstr "" #: ../gtk/dscp_settings.ui.h:4 -#, fuzzy msgid "Video RTP stream" -msgstr "Video RTP/UDP:" +msgstr "" #: ../gtk/dscp_settings.ui.h:5 msgid "Set DSCP values (in hexadecimal)" msgstr "" #: ../gtk/call_statistics.ui.h:1 -#, fuzzy msgid "Call statistics" -msgstr "Ringer %s" +msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" -msgstr "Lyd kodek" +msgstr "" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" -msgstr "Video kodek" +msgstr "" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1612,24 +1520,20 @@ msgid "Video resolution received" msgstr "" #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "Foretrukke video-oppløsning:" +msgstr "" #: ../gtk/call_statistics.ui.h:11 -#, fuzzy msgid "RTP profile" -msgstr "RTP inn-filter" +msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "Kontaktinformasjon" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 -#, fuzzy msgid "Configure VoIP tunnel" -msgstr "Konfigurer en SIP konto" +msgstr "" #: ../gtk/tunnel_config.ui.h:2 msgid "Host" @@ -1708,9 +1612,8 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Innstillinger" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" @@ -1721,9 +1624,8 @@ msgid "Not yet available" msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Kodeker" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1738,9 +1640,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Lyd" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1756,18 +1657,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "SIP Adress" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Søk noen" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1782,9 +1681,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Video" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1808,11 +1706,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1820,81 +1715,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "Tilknytter..." +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "Klar" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Bekreftelse" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Ser etter telefonnummer for destinasjonen..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "Kan ikke tilkoble dette nummeret." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "Tilknytter" -#: ../coreapi/linphonecore.c:2425 +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" msgstr "Kunne ikke ringe" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Beklager, du har nådd maksimalt antall samtidige samtaler" -#: ../coreapi/linphonecore.c:2745 +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" msgstr "Kontakter deg." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr " og ba om autosvar." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "." -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "Endrer ringeparametre..." -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Tilkoblet" -#: ../coreapi/linphonecore.c:3220 +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" msgstr "Samtale avbrutt" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "Kunne ikke pause samtalen" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "Pauser nåværende samtale" -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "STUN oppslag pågår..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1943,641 +1836,147 @@ msgid "Pending" msgstr "Pågående" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Varighet" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "Ukjent feil" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"SIP proxy adressen du har angitt er ugyldig, den må begynne med \"sip:\" " -"etterfult av vertsnavn." +msgstr "SIP proxy adressen du har angitt er ugyldig, den må begynne med \"sip:\" etterfult av vertsnavn." -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"SIP adressen du har angitt er feil. Adressen bør se ut som sip: " -"brukernavn@domenenavn, f.eks sip:ola@eksempel.no" +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:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "Ikke ikke logge inn som %s" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "Ringer hos motparten." -#: ../coreapi/callbacks.c:373 -#, fuzzy +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." -msgstr "Ringer hos motparten." +msgstr "" -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "Tidlig media" -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "Samtalen med %s er pauset." -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "Samtale besvart av %s - på vent." -#: ../coreapi/callbacks.c:459 +#: ../coreapi/callbacks.c:498 msgid "Call resumed." msgstr "Samtale gjenopptatt." -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "Samtale besvart av %s." -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 -#, fuzzy -msgid "We have been resumed." -msgstr "Vi har blitt gjenopptatt..." +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" -#: ../coreapi/callbacks.c:521 +#: ../coreapi/callbacks.c:560 +msgid "We have been resumed." +msgstr "" + +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "Samtale avsluttet." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Brukeren er opptatt." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "Brukeren er midlertidig ikke tilgjengelig." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "Brukeren vil ikke bli forstyrret." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Samtale avvist." -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "Omdirigert" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." -msgstr "" - -#: ../coreapi/callbacks.c:798 +#: ../coreapi/callbacks.c:835 msgid "Call failed." msgstr "Samtale feilet." -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "Registrering hos %s lykkes." -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "Avregistrering hos %s lykkes." -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "ingen svar innen angitt tid" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrering hos %s mislykkes: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:174 +#, c-format msgid "Authentication token is %s" -msgstr "Autorisering kreves" +msgstr "" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, 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 "aborted" -#~ msgstr "avbrutt" - -#~ msgid "completed" -#~ msgstr "Fullført" - -#~ msgid "missed" -#~ msgstr "ubesvart" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s på %s\n" -#~ "Fra: %s\n" -#~ "Til: %s\n" -#~ "Status: %s\n" -#~ "Lengde: %i min %i sek\n" - -#~ msgid "Outgoing call" -#~ msgstr "Utgående samtale" - -#~ msgid "No response." -#~ msgstr "Ikke noe svar." - -#~ msgid "Protocol error." -#~ msgstr "Protokollfeil." - -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "Klarer ikke å tolke angitt SIP-adresse. En SIP-adresse er vanligvis ut " -#~ "som sip: brukernavn@domenenavn" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Din datamaskin ser ut til å bruke ALSA drivere for lyd.\n" -#~ "Dette er det beste alternativet. Det ser ut til at pcm oss " -#~ "emulasjonsmodulen\n" -#~ "mangler og linphone trenger den. Vennligst kjør\n" -#~ "'modprobe snd-pcm-oss' som root for å laste den." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Din datamaskin ser ut til å bruke ALSA drivere for lyd.\n" -#~ "Dette er det beste alternativet. Det ser ut til at mixermodulen for oss " -#~ "emulering\n" -#~ "mangler og linphone trenger den. Vennligst kjør\n" -#~ "'modprobe snd-mixer-oss' som root for å laste den." - -#~ msgid "Keypad" -#~ msgstr "Tastatur" - -#~ msgid "Chat with %s" -#~ msgstr "Chat med %s" - -#~ msgid "Please choose a username:" -#~ msgstr "Velg ett brukernavn:" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "Sjekker om %s' er tilgjengelig..." - -#~ msgid "Please wait..." -#~ msgstr "Vennligst vent..." - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "Beklager, brukernavnet er allerede tatt. Forsøk ett annet." - -#~ msgid "Ok !" -#~ msgstr "Ok !" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "Kommunikasjonsproblem, forsøk igjen senere." - -#~ msgid "Choosing a username" -#~ msgstr "Velg ett brukernavn" - -#~ msgid "Verifying" -#~ msgstr "Verifiserer" - -#~ msgid "Creating your account" -#~ msgstr "Lager brukerkontoen din" - -#~ msgid "Now ready !" -#~ msgstr "Klar nå!" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "På" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "Skriv inn brukernavn, telefonnummer eller full SIP-addresse" - -#~ msgid "Lookup:" -#~ msgstr "Slå opp:" - -#~ msgid "in" -#~ msgstr "i" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "Registrer hos FONICS\n" -#~ "virtuelle nettverk !" - -#~ msgid "We are being paused..." -#~ msgstr "Vi er satt på vent..." - -#~ msgid "No common codecs" -#~ msgstr "Ingen felles kodek" - -#~ 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 "Contact list" -#~ msgstr "Kontaktliste" - -#~ 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 "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" - -#~ msgid "ITU-G.711 alaw decoder" -#~ msgstr "ITU-G.711 alaw dekoder" - -#~ msgid "Alsa sound source" -#~ msgstr "Alasa lydkilde" - -#~ msgid "Alsa sound output" -#~ msgstr "alsa lydutgang" - -#~ msgid "Sound capture filter for MacOS X Audio Queue Service" -#~ msgstr "Lydfangefilter for MacOS X Audio Queue Service" - -#~ msgid "Sound playback filter for MacOS X Audio Queue Service" -#~ msgstr "Lydavspillingsfilter for MacOS X Audio Queue Service" - -#~ msgid "DTMF generator" -#~ msgstr "DTMF generator" - -#~ msgid "The GSM full-rate codec" -#~ msgstr "Høyhastighets GSM kodek" - -#~ msgid "The GSM codec" -#~ msgstr "GSM kodek" - -#, fuzzy -#~ msgid "Sound capture filter for MacOS X Audio Unit" -#~ msgstr "Lydfangefilter for MacOS X Core Audio drivere" - -#, fuzzy -#~ msgid "Sound playback filter for MacOS X Audio Unit" -#~ msgstr "Lydavspillingsfilter for MacOS X Core Audio drivere" - -#~ msgid "A filter to make conferencing" -#~ msgstr "Ett filter for telekonferanser" - -#~ msgid "Raw files and wav reader" -#~ msgstr "Få filer og wav leser" - -#~ msgid "Wav file recorder" -#~ msgstr "WAV filopptaker" - -#~ msgid "A filter that send several inputs to one output." -#~ msgstr "Ett filer for å sende flere inn-kilder til en utgang" - -#~ msgid "RTP output filter" -#~ msgstr "RTP ut-filter" - -#~ msgid "The free and wonderful speex codec" -#~ msgstr "En fri og fantatisk speex kodek" - -#~ msgid "A filter that controls and measure sound volume" -#~ msgstr "Ett filer som kontrollerer og måler lydvolumet" - -#~ msgid "A video4linux compatible source filter to stream pictures." -#~ msgstr "Ett video4linux kompatiblet kildefilter for bildestrømmer." - -#~ msgid "A filter to grab pictures from Video4Linux2-powered cameras" -#~ msgstr "Ett filter for å fange bilder fra Video4Linux2-støttede kameraer" - -#~ msgid "A filter that outputs a static image." -#~ msgstr "En filter som sender ett statisk bilde." - -#~ msgid "A pixel format converter" -#~ msgstr "En pixel format omformer" - -#~ msgid "A video size converter" -#~ msgstr "En videostørrelsesomformer" - -#~ msgid "a small video size converter" -#~ msgstr "En liten video størrelsesomformer" - -#~ msgid "Echo canceller using speex library" -#~ msgstr "Ekko fjerning ved hjelp av speex" - -#~ msgid "A filter that reads from input and copy to its multiple outputs." -#~ msgstr "Ett filter som leser innkoder og kopierer det til flere utganger" - -#~ msgid "The theora video encoder from xiph.org" -#~ msgstr "En Theora videokoder fra xpih.org" - -#~ msgid "The open-source and royalty-free 'theora' video codec from xiph.org" -#~ msgstr "" -#~ "Et åpen kildekode og betalingsfritt 'theora' video kodek fra xpih.org" - -#~ msgid "The theora video decoder from xiph.org" -#~ msgstr "Theora video dekoder fra xiph.org" - -#~ msgid "ITU-G.711 ulaw encoder" -#~ msgstr "ITU-G.711 ulaw enkoder" - -#~ msgid "ITU-G.711 ulaw decoder" -#~ msgstr "ITU-G.711 ulaw dekoder" - -#~ msgid "A H.263 decoder using ffmpeg library" -#~ msgstr "En H.263 dekoder som bruker ffmpeg biblioteket" - -#~ msgid "A MPEG4 decoder using ffmpeg library" -#~ msgstr "En MPEG4 dekoder som bruker ffmpeg biblioteket" - -#~ msgid "A RTP/JPEG decoder using ffmpeg library" -#~ msgstr "En RTP/JPEG dekoder som bruker ffmpeg biblioteket" - -#~ msgid "A MJPEG decoder using ffmpeg library" -#~ msgstr "En MJPEG dekoder som bruker ffmpeg biblioteket" - -#~ msgid "A snow decoder using ffmpeg library" -#~ msgstr "En snow dekoder som bruker ffmpeg biblioteket" - -#~ msgid "A video H.263 encoder using ffmpeg library." -#~ msgstr "En H.263 videodekoder som bruker ffmpeg biblioteket" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library. It is compliant with old " -#~ "RFC2190 spec." -#~ msgstr "" -#~ "En H.263 enkoder som bruker ffmpeg biblioteket. Den følger den eldre " -#~ "RFC2190 spesifikasjonen." - -#~ msgid "A video MPEG4 encoder using ffmpeg library." -#~ msgstr "En video MPEG4 enkoder som bruker ffmpeg biblioteket." - -#~ msgid "A video snow encoder using ffmpeg library." -#~ msgstr "En show video enkoder som bruker ffmpeg biblioteket." - -#~ msgid "A RTP/MJPEG encoder using ffmpeg library." -#~ msgstr "En RTP/MJPEG enkoder som bruker ffmpeg biblioteket" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library, compliant with old RFC2190 " -#~ "spec." -#~ msgstr "" -#~ "En h.264 video enkoder som bruker ffmpeg biblioteket, kompatibelt med den " -#~ "eldre RFC2190 spesifikasjonen." - -#~ msgid "" -#~ "The snow codec is royalty-free and is open-source. \n" -#~ "It uses innovative techniques that makes it one of most promising video " -#~ "codec. It is implemented within the ffmpeg project.\n" -#~ "However it is under development, quite unstable and compatibility with " -#~ "other versions cannot be guaranteed." -#~ msgstr "" -#~ "Snow video-kodeksen har åpen kildekode og er vedelagsfri.\n" -#~ "Den bruker moderne teknikker som gjør den til en god video kodek. Den er " -#~ "implementert innen ffmpeg prosjektet.\n" -#~ "Den er under stadig utvikling, er ganske ustabil og kompatiblitet med " -#~ "andre utgaver kan ikke garanteres." - -#~ msgid "A MJPEG encoder using ffmpeg library." -#~ msgstr "En MJPEG enkoder som bruker ffmpeg biblioteket." - -#~ msgid "A SDL-based video display" -#~ msgstr "Ett SDL-basert video-bibliotek" - -#~ msgid "A video4windows compatible source filter to stream pictures." -#~ msgstr "Ett video4windows-kompatibelt kildefiler for bildestrømmer." - -#~ msgid "A video for windows (vfw.h) based source filter to grab pictures." -#~ msgstr "" -#~ "Ett video for vinduer (vfw.h) baserte kildefilter for å fange bilder" - -#~ msgid "" -#~ "A filter that trashes its input (useful for terminating some graphs)." -#~ msgstr "" -#~ "Ett filter som ødelegger input (nyttig for å terminere noen grafer)." - -#~ msgid "Parametric sound equalizer." -#~ msgstr "Parameterisk lyd-mixer" - -#~ msgid "A webcam grabber based on directshow." -#~ msgstr "En webcam-fanger basert på directshow." - -#~ msgid "A video display based on windows DrawDib api" -#~ msgstr "Videovisning basert på windows DrawDib api" - -#~ msgid "A filter that mixes down 16 bit sample audio streams" -#~ msgstr "Ett filter som mixer ned til 16 bits lydstrømmer" - -#~ msgid "A filter that converts from mono to stereo and vice versa." -#~ msgstr "Ett filter som konverterer fra mono til stereo og motsatt." - -#~ msgid "Inter ticker communication filter." -#~ msgstr "Inter ticker kommunikasjonsfilter." - -#~ msgid "A display filter sending the buffers to draw to the upper layer" -#~ msgstr "" -#~ "Et visningsfilter for å sende buffere for å tegne det oppdaterte nivået" - -#~ msgid "Sound capture filter for MacOS X Audio Unit Service" -#~ msgstr "Lydfangefilter for MacOS X Audio Unit Service" - -#~ msgid "Sound playback filter for MacOS X Audio Unit Service" -#~ msgstr "Lydavspillingsfilter for MacOS X Audio Unit Service" - -#~ msgid "A video display using X11+Xv" -#~ msgstr "En videovisning som bruker X11-Xv" - -#~ msgid "Sound capture filter for Android" -#~ msgstr "Lydfangefilter for Android" - -#~ msgid "Sound playback filter for Android" -#~ msgstr "Lydavspillingsfilter for Android" - -#~ msgid "A filter that captures Android video." -#~ msgstr "Ett filter som fanger Android video." - -#~ msgid "" -#~ "Your machine appears to be connected to an IPv6 network. By default " -#~ "linphone always uses IPv4. Please update your configuration if you want " -#~ "to use IPv6" -#~ msgstr "" -#~ "Din dator er tilkoblet ett IPv6 nettverk. Linphone bruker IPv6 som " -#~ "standard. Oppdater oppsettet om du vil bruke IPv6. " - -#~ msgid "Show debug messages" -#~ msgstr "Visa debugfönstret" - -#~ msgid "Start call" -#~ msgstr "Ring" - -#~ msgid "_Modes" -#~ msgstr "_Media" - -#~ msgid "Created by Simon Morlat\n" -#~ msgstr "Skapad av Simon Morlat\n" - -#~ msgid "Accept" -#~ msgstr "Godkänn" - -#~ msgid "Incoming call from" -#~ msgstr "Inkommande samtal från" - -#~ msgid "Linphone - Incoming call" -#~ msgstr "Linphone - Inkommande samtal" - -#~ msgid "default soundcard\n" -#~ msgstr "default ljudkort\n" - -#~ msgid "" -#~ "Remote end seems to have disconnected, the call is going to be closed." -#~ msgstr "" -#~ "Motparten verkar ha avbrutit samtalet, samtalet kommer att avslutas." - -#~ msgid "Sorry, having multiple simultaneous calls is not supported yet !" -#~ msgstr "Förlåt, men linphone stödjer inte flera samtliga samtal än!" - -#~ msgid "Could not reach destination." -#~ msgstr "Kunde inte nå motparten." - -#~ msgid "Request Cancelled." -#~ msgstr "Förfrågan avbruten." - -#~ msgid "Bad request" -#~ msgstr "Fel förfråga." - -#~ msgid "User cannot be found at given address." -#~ msgstr "Användaren kan inte hittas vid den angivna adressen." - -#~ msgid "Remote user cannot support any of proposed codecs." -#~ msgstr "Motparten stödjer ingen av de föreslagna codecs." - -#~ msgid "Timeout." -#~ msgstr "time out." - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "Motparten hittades men ville inte ta emot samtalet." - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you\n" -#~ "to contact him using the following alternate resource:" -#~ msgstr "" -#~ "Användaren kan inte nås för tillfället men han/hon ber digatt kontakta " -#~ "honom/henna vid följande resurs:" - -#~ msgid "Digits" -#~ msgstr "Tangenter" - -#~ msgid "Main view" -#~ msgstr "Huvud vy" - -#~ msgid "No nat/firewall address supplied !" -#~ msgstr "Ingen NAT / brandväggs adress angiven!" - -#~ msgid "Invalid nat address '%s' : %s" -#~ msgstr "Fel NAT adress '%s': %s" - -#~ msgid "Gone" -#~ msgstr "Har gått" - -#~ msgid "Waiting for Approval" -#~ msgstr "Väntar för godkännandet" - -#~ msgid "Be Right Back" -#~ msgstr "Kommer strax tillbaka" - -#~ msgid "On The Phone" -#~ msgstr "På telefon" - -#~ msgid "Out To Lunch" -#~ msgstr "Lunchar" - -#~ msgid "Closed" -#~ msgstr "Stängt" - -#~ msgid "Unknown" -#~ msgstr "Okänd" - -#~ msgid "Bresilian" -#~ msgstr "Brasiliansk" - -#~ msgid "_View" -#~ msgstr "_Vy" diff --git a/po/nl.po b/po/nl.po index b650efb95..b64a2cc2d 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,28 +1,26 @@ -# translation of nl.po to Nederlands -# Dutch translation of linphone. -# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the linphone package. -# Taco Witte , 2005. -# Hendrik-Jan Heins , 2005. -# Hendrik-Jan Heins , 2007. -# +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: nl\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2007-09-05 10:40+0200\n" -"Last-Translator: Hendrik-Jan Heins \n" -"Language-Team: Nederlands \n" -"Language: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:08+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Dutch (http://www.transifex.com/projects/p/linphone-gtk/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 -#, fuzzy, c-format +#, c-format msgid "Call %s" -msgstr "Oproepgeschiedenis" +msgstr "" #: ../gtk/calllogs.c:149 ../gtk/friendlist.c:975 #, c-format @@ -30,28 +28,25 @@ msgid "Send text to %s" msgstr "" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "Contactlijst" +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "afgebroken" +msgstr "" #: ../gtk/calllogs.c:320 -#, fuzzy msgid "Missed" -msgstr "gemist" +msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "lijn" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format @@ -129,109 +124,98 @@ msgstr "" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" msgstr "" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Informatie" +msgstr "" #: ../gtk/main.c:163 msgid "Run the audio assistant" msgstr "" -#: ../gtk/main.c:590 -#, fuzzy, c-format -msgid "Call with %s" -msgstr "Chat met %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 "" -#: ../gtk/main.c:1260 +#: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1376 -#, fuzzy +#: ../gtk/main.c:1283 msgid "Call error" -msgstr "Linphone - Oproepgeschiedenis" +msgstr "" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "Oproep beeindigd" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Inkomende oproep" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 -#, fuzzy +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" -msgstr "lijn" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy +#: ../gtk/main.c:1299 msgid "Call paused" -msgstr "afgebroken" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "Contactlijst" +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 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:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "Een Vrije SIP video-telefoon" #: ../gtk/friendlist.c:505 -#, fuzzy msgid "Add to addressbook" -msgstr "Adresboek" +msgstr "" #: ../gtk/friendlist.c:691 msgid "Presence status" @@ -242,14 +226,12 @@ msgid "Name" msgstr "Naam" #: ../gtk/friendlist.c:721 -#, fuzzy msgid "Call" -msgstr "Oproepgeschiedenis" +msgstr "" #: ../gtk/friendlist.c:726 -#, fuzzy msgid "Chat" -msgstr "Chat box" +msgstr "" #: ../gtk/friendlist.c:756 #, c-format @@ -257,9 +239,9 @@ msgid "Search in %s directory" msgstr "" #: ../gtk/friendlist.c:976 -#, fuzzy, c-format +#, c-format msgid "Edit contact '%s'" -msgstr "Bewerk contactgegevens" +msgstr "" #: ../gtk/friendlist.c:977 #, c-format @@ -285,9 +267,8 @@ msgid "Status" msgstr "Status" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Minimale bitrate (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -305,92 +286,92 @@ msgstr "Uit" msgid "Account" msgstr "Account" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "" -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "Geen" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -414,14 +395,12 @@ msgid "Error communicating with server." msgstr "" #: ../gtk/buddylookup.c:164 -#, fuzzy msgid "Connecting..." -msgstr "Verbinden" +msgstr "" #: ../gtk/buddylookup.c:168 -#, fuzzy msgid "Connected" -msgstr "Verbonden." +msgstr "" #: ../gtk/buddylookup.c:172 msgid "Receiving data..." @@ -461,28 +440,24 @@ msgid "Enter your linphone.org username" msgstr "" #: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 -#, fuzzy msgid "Username:" -msgstr "gebruikersnaam:" +msgstr "" #: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 -#, fuzzy msgid "Password:" -msgstr "wachtwoord:" +msgstr "" #: ../gtk/setupwizard.c:124 msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "gebruikersnaam:" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "wachtwoord:" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -497,14 +472,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "gebruikersnaam:" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "wachtwoord:" +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -530,8 +503,7 @@ msgstr "" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" @@ -572,9 +544,9 @@ msgid "Terminating" msgstr "" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, fuzzy, c-format +#, c-format msgid "Call #%i" -msgstr "Oproepgeschiedenis" +msgstr "" #: ../gtk/incall_view.c:155 #, c-format @@ -590,9 +562,8 @@ msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "Oproep geannuleerd." +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -603,9 +574,8 @@ msgid "Going through one or more NATs" msgstr "" #: ../gtk/incall_view.c:229 -#, fuzzy msgid "Direct" -msgstr "Doorgeschakeld naar %s..." +msgstr "" #: ../gtk/incall_view.c:231 msgid "Through a relay server" @@ -616,23 +586,20 @@ msgid "uPnP not activated" msgstr "" #: ../gtk/incall_view.c:241 -#, fuzzy msgid "uPnP in progress" -msgstr "STUN adres wordt opgezocht..." +msgstr "" #: ../gtk/incall_view.c:243 -#, fuzzy msgid "uPnp not available" -msgstr "Geen informatie beschikbaar" +msgstr "" #: ../gtk/incall_view.c:245 msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "Oproep geannuleerd." +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -659,114 +626,108 @@ msgstr "" msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 -#, fuzzy +#: ../gtk/incall_view.c:511 msgid "Calling..." -msgstr "Contactlijst" +msgstr "" -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "" -#: ../gtk/incall_view.c:515 -#, fuzzy +#: ../gtk/incall_view.c:525 msgid "Incoming call" -msgstr "Inkomende oproep" +msgstr "" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:702 -#, fuzzy +#: ../gtk/incall_view.c:722 msgid "In call" -msgstr "Contactlijst" +msgstr "" -#: ../gtk/incall_view.c:738 -#, fuzzy +#: ../gtk/incall_view.c:758 msgid "Paused call" -msgstr "Contactlijst" +msgstr "" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "" -#: ../gtk/incall_view.c:772 -#, fuzzy +#: ../gtk/incall_view.c:794 msgid "Call ended." -msgstr "Oproep beeindigd" +msgstr "" -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "Oproep geannuleerd." +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "" @@ -776,9 +737,9 @@ msgid "Please enter login information for %s" msgstr "" #: ../gtk/config-fetching.c:57 -#, fuzzy, c-format +#, c-format msgid "fetching from %s" -msgstr "Inkomende oproep" +msgstr "" #: ../gtk/config-fetching.c:73 #, c-format @@ -808,23 +769,20 @@ msgid "" msgstr "" #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Geluidsapparaat gebruiken:" +msgstr "" #: ../gtk/audio_assistant.c:329 -#, fuzzy msgid "Recorded volume" -msgstr "Bron voor opname:" +msgstr "" #: ../gtk/audio_assistant.c:333 msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Geluidsapparaat gebruiken:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -863,14 +821,12 @@ msgid "Record and Play" msgstr "" #: ../gtk/main.ui.h:1 -#, fuzzy msgid "Callee name" -msgstr "Oproep beeindigd" +msgstr "" #: ../gtk/main.ui.h:2 -#, fuzzy msgid "Send" -msgstr "Geluid" +msgstr "" #: ../gtk/main.ui.h:3 msgid "End conference" @@ -893,14 +849,12 @@ msgid "Transfer" msgstr "" #: ../gtk/main.ui.h:14 -#, fuzzy msgid "In call" -msgstr "Inkomende oproep" +msgstr "" #: ../gtk/main.ui.h:15 -#, fuzzy msgid "Duration" -msgstr "Informatie" +msgstr "" #: ../gtk/main.ui.h:16 msgid "Call quality rating" @@ -911,9 +865,8 @@ msgid "All users" msgstr "" #: ../gtk/main.ui.h:18 -#, fuzzy msgid "Online users" -msgstr "Aanwezig" +msgstr "" #: ../gtk/main.ui.h:19 msgid "ADSL" @@ -924,32 +877,28 @@ msgid "Fiber Channel" msgstr "" #: ../gtk/main.ui.h:21 -#, fuzzy msgid "Default" -msgstr "SIP-identiteit:" +msgstr "" #: ../gtk/main.ui.h:22 msgid "_Options" msgstr "" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Proxy/registratieserver registratieveld" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" msgstr "" #: ../gtk/main.ui.h:25 -#, fuzzy msgid "Enable self-view" -msgstr "Video aan" +msgstr "" #: ../gtk/main.ui.h:26 -#, fuzzy msgid "_Help" -msgstr "Help" +msgstr "" #: ../gtk/main.ui.h:27 msgid "Show debug window" @@ -968,84 +917,72 @@ msgid "Account assistant" msgstr "" #: ../gtk/main.ui.h:32 -#, fuzzy msgid "SIP address or phone number:" -msgstr "Geef het SIP adres of telefoonnummer in" +msgstr "" #: ../gtk/main.ui.h:33 msgid "Initiate a new call" msgstr "" #: ../gtk/main.ui.h:34 -#, fuzzy msgid "Contacts" -msgstr "Verbinden" +msgstr "" #: ../gtk/main.ui.h:35 msgid "Search" msgstr "" #: ../gtk/main.ui.h:36 -#, fuzzy msgid "Add contacts from directory" -msgstr "Contact informatie" +msgstr "" #: ../gtk/main.ui.h:37 -#, fuzzy msgid "Add contact" -msgstr "Bewerk contactgegevens" +msgstr "" #: ../gtk/main.ui.h:38 -#, fuzzy msgid "Recent calls" -msgstr "Inkomende oproep" +msgstr "" #: ../gtk/main.ui.h:39 -#, fuzzy msgid "My current identity:" -msgstr "SIP-identiteit:" +msgstr "" #: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 -#, fuzzy msgid "Username" -msgstr "gebruikersnaam:" +msgstr "" #: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 -#, fuzzy msgid "Password" -msgstr "wachtwoord:" +msgstr "" #: ../gtk/main.ui.h:42 msgid "Internet connection:" msgstr "" #: ../gtk/main.ui.h:43 -#, fuzzy msgid "Automatically log me in" -msgstr "Automatisch een geldige hostnaam raden" +msgstr "" #: ../gtk/main.ui.h:44 ../gtk/password.ui.h:3 msgid "UserID" msgstr "" #: ../gtk/main.ui.h:45 -#, fuzzy msgid "Login information" -msgstr "Contact informatie" +msgstr "" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome !" -msgstr "Contactlijst" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About linphone" -msgstr "linphone" +msgstr "" #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications,2010\n" @@ -1072,9 +1009,8 @@ msgid "" msgstr "" #: ../gtk/contact.ui.h:2 -#, fuzzy msgid "SIP Address" -msgstr "Adres" +msgstr "" #: ../gtk/contact.ui.h:3 msgid "Show this contact presence status" @@ -1085,9 +1021,8 @@ msgid "Allow this contact to see my presence status" msgstr "" #: ../gtk/contact.ui.h:5 -#, fuzzy msgid "Contact information" -msgstr "Contact informatie" +msgstr "" #: ../gtk/log.ui.h:1 msgid "Linphone debug window" @@ -1098,36 +1033,32 @@ msgid "Scroll to end" msgstr "" #: ../gtk/password.ui.h:1 -#, fuzzy msgid "Linphone - Authentication required" -msgstr "Authorisatie gevraagd" +msgstr "" #: ../gtk/password.ui.h:2 msgid "Please enter the domain password" msgstr "" #: ../gtk/call_logs.ui.h:1 -#, fuzzy msgid "Call history" -msgstr "Linphone - Oproepgeschiedenis" +msgstr "" #: ../gtk/call_logs.ui.h:2 msgid "Clear all" msgstr "" #: ../gtk/call_logs.ui.h:3 -#, fuzzy msgid "Call back" -msgstr "Oproepgeschiedenis" +msgstr "" #: ../gtk/sip_account.ui.h:1 msgid "Linphone - Configure a SIP account" msgstr "" #: ../gtk/sip_account.ui.h:2 -#, fuzzy msgid "Your SIP identity:" -msgstr "SIP-identiteit:" +msgstr "" #: ../gtk/sip_account.ui.h:3 msgid "Looks like sip:@" @@ -1138,23 +1069,20 @@ msgid "sip:" msgstr "sip:" #: ../gtk/sip_account.ui.h:5 -#, fuzzy msgid "SIP Proxy address:" -msgstr "SIP-proxy:" +msgstr "" #: ../gtk/sip_account.ui.h:6 msgid "Looks like sip:" msgstr "" #: ../gtk/sip_account.ui.h:7 -#, fuzzy msgid "Registration duration (sec):" -msgstr "Registratieperiode:" +msgstr "" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "Route (optioneel):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1165,23 +1093,20 @@ msgid "Route (optional):" msgstr "Route (optioneel):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Contactlijst" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" msgstr "" #: ../gtk/sip_account.ui.h:13 -#, fuzzy msgid "Publish presence information" -msgstr "Toon informatie over aanwezigheid:" +msgstr "" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Aan" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1216,14 +1141,12 @@ msgid "CIF" msgstr "" #: ../gtk/parameters.ui.h:8 -#, fuzzy msgid "Audio codecs" -msgstr "Video codecs" +msgstr "" #: ../gtk/parameters.ui.h:9 -#, fuzzy msgid "Video codecs" -msgstr "Video codecs" +msgstr "" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" @@ -1258,9 +1181,8 @@ msgid "Use IPv6 instead of IPv4" msgstr "" #: ../gtk/parameters.ui.h:18 -#, fuzzy msgid "Transport" -msgstr "Contactlijst" +msgstr "" #: ../gtk/parameters.ui.h:19 msgid "Media encryption type" @@ -1291,14 +1213,12 @@ msgid "DSCP fields" msgstr "" #: ../gtk/parameters.ui.h:26 -#, fuzzy msgid "SIP/TCP port" -msgstr "SIP-poort" +msgstr "" #: ../gtk/parameters.ui.h:27 -#, fuzzy msgid "SIP/UDP port" -msgstr "SIP-poort" +msgstr "" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1325,76 +1245,64 @@ msgid "Behind NAT / Firewall (use uPnP)" msgstr "" #: ../gtk/parameters.ui.h:34 -#, fuzzy msgid "Public IP address:" -msgstr "SIP-adres:" +msgstr "" #: ../gtk/parameters.ui.h:35 -#, fuzzy msgid "Stun server:" -msgstr "Geluidsapparaat" +msgstr "" #: ../gtk/parameters.ui.h:36 -#, fuzzy msgid "NAT and Firewall" -msgstr "Contactlijst" +msgstr "" #: ../gtk/parameters.ui.h:37 -#, fuzzy msgid "Network settings" -msgstr "Netwerk" +msgstr "" #: ../gtk/parameters.ui.h:38 -#, fuzzy msgid "Ring sound:" -msgstr "Belgeluid:" +msgstr "" #: ../gtk/parameters.ui.h:39 msgid "ALSA special device (optional):" msgstr "" #: ../gtk/parameters.ui.h:40 -#, fuzzy msgid "Capture device:" -msgstr "Geluidsapparaat gebruiken:" +msgstr "" #: ../gtk/parameters.ui.h:41 -#, fuzzy msgid "Ring device:" -msgstr "Geluidsapparaat gebruiken:" +msgstr "" #: ../gtk/parameters.ui.h:42 -#, fuzzy msgid "Playback device:" -msgstr "Geluidsapparaat gebruiken:" +msgstr "" #: ../gtk/parameters.ui.h:43 msgid "Enable echo cancellation" msgstr "" #: ../gtk/parameters.ui.h:44 -#, fuzzy msgid "Audio" -msgstr "Contactlijst" +msgstr "" #: ../gtk/parameters.ui.h:45 -#, fuzzy msgid "Video input device:" -msgstr "Geluidsapparaat" +msgstr "" #: ../gtk/parameters.ui.h:46 msgid "Prefered video resolution:" msgstr "" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Geluidsapparaat" +msgstr "" #: ../gtk/parameters.ui.h:48 -#, fuzzy msgid "Video" -msgstr "Contactlijst" +msgstr "" #: ../gtk/parameters.ui.h:49 msgid "Multimedia settings" @@ -1409,28 +1317,24 @@ msgid "Your display name (eg: John Doe):" msgstr "" #: ../gtk/parameters.ui.h:52 -#, fuzzy msgid "Your username:" -msgstr "gebruikersnaam:" +msgstr "" #: ../gtk/parameters.ui.h:53 -#, fuzzy msgid "Your resulting SIP address:" -msgstr "Uw SIP-adres:" +msgstr "" #: ../gtk/parameters.ui.h:54 -#, fuzzy msgid "Default identity" -msgstr "SIP-identiteit:" +msgstr "" #: ../gtk/parameters.ui.h:55 msgid "Wizard" msgstr "" #: ../gtk/parameters.ui.h:56 -#, fuzzy msgid "Add" -msgstr "Adres" +msgstr "" #: ../gtk/parameters.ui.h:57 msgid "Edit" @@ -1441,18 +1345,16 @@ msgid "Remove" msgstr "Verwijderen" #: ../gtk/parameters.ui.h:59 -#, fuzzy msgid "Proxy accounts" -msgstr "Contactlijst" +msgstr "" #: ../gtk/parameters.ui.h:60 msgid "Erase all passwords" msgstr "" #: ../gtk/parameters.ui.h:61 -#, fuzzy msgid "Privacy" -msgstr "Contactlijst" +msgstr "" #: ../gtk/parameters.ui.h:62 msgid "Manage SIP Accounts" @@ -1467,23 +1369,20 @@ msgid "Disable" msgstr "Uit" #: ../gtk/parameters.ui.h:65 -#, fuzzy msgid "Codecs" -msgstr "Contactlijst" +msgstr "" #: ../gtk/parameters.ui.h:66 msgid "0 stands for \"unlimited\"" msgstr "" #: ../gtk/parameters.ui.h:67 -#, fuzzy msgid "Upload speed limit in Kbit/sec:" -msgstr "Upload bandbreedte (kbit/sec):" +msgstr "" #: ../gtk/parameters.ui.h:68 -#, fuzzy msgid "Download speed limit in Kbit/sec:" -msgstr "Download bandbreedte (kbit/sec):" +msgstr "" #: ../gtk/parameters.ui.h:69 msgid "Enable adaptive rate control" @@ -1500,84 +1399,72 @@ msgid "Bandwidth control" msgstr "" #: ../gtk/parameters.ui.h:72 -#, fuzzy msgid "Codecs" -msgstr "Codecs" +msgstr "" #: ../gtk/parameters.ui.h:73 -#, fuzzy msgid "Language" -msgstr "Contactlijst" +msgstr "" #: ../gtk/parameters.ui.h:74 msgid "Show advanced settings" msgstr "" #: ../gtk/parameters.ui.h:75 -#, fuzzy msgid "Level" -msgstr "Contactlijst" +msgstr "" #: ../gtk/parameters.ui.h:76 -#, fuzzy msgid "User interface" -msgstr "gebruikersnaam:" +msgstr "" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "Serveradres" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Authorisatie gegevens" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Contactlijst" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" msgstr "" #: ../gtk/parameters.ui.h:83 -#, fuzzy msgid "Done" -msgstr "Weg" +msgstr "" #: ../gtk/buddylookup.ui.h:1 -#, fuzzy msgid "Search contacts in directory" -msgstr "Contact informatie" +msgstr "" #: ../gtk/buddylookup.ui.h:2 msgid "Add to my list" msgstr "" #: ../gtk/buddylookup.ui.h:3 -#, fuzzy msgid "Search somebody" -msgstr "Contactlijst" +msgstr "" #: ../gtk/waiting.ui.h:1 -#, fuzzy msgid "Linphone" -msgstr "linphone" +msgstr "" #: ../gtk/waiting.ui.h:2 msgid "Please wait" msgstr "" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "Netwerk" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1596,19 +1483,16 @@ msgid "Set DSCP values (in hexadecimal)" msgstr "" #: ../gtk/call_statistics.ui.h:1 -#, fuzzy msgid "Call statistics" -msgstr "Oproepgeschiedenis" +msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" -msgstr "Video codecs" +msgstr "" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" -msgstr "Video codecs" +msgstr "" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1627,9 +1511,8 @@ msgid "Video Media connectivity" msgstr "" #: ../gtk/call_statistics.ui.h:8 -#, fuzzy msgid "Round trip time" -msgstr "Geluidseigenschappen" +msgstr "" #: ../gtk/call_statistics.ui.h:9 msgid "Video resolution received" @@ -1644,9 +1527,8 @@ msgid "RTP profile" msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "Contact informatie" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 msgid "Configure VoIP tunnel" @@ -1729,23 +1611,20 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Netwerk" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" msgstr "" #: ../gtk/ldap.ui.h:7 -#, fuzzy msgid "Not yet available" -msgstr "Geen informatie beschikbaar" +msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Contactlijst" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1756,14 +1635,12 @@ msgid "Authname" msgstr "" #: ../gtk/ldap.ui.h:11 -#, fuzzy msgid "Realm" -msgstr "gebied:" +msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Contactlijst" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1779,18 +1656,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "Adres" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Contactlijst" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1805,9 +1680,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Contactlijst" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1831,11 +1705,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1843,86 +1714,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "Verbinden" +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "Gereed." -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Informatie" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Zoekt de lokatie van het telefoonnummer..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "Kon dit nummer niet vinden." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "Verbinden" -#: ../coreapi/linphonecore.c:2425 -#, fuzzy +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" -msgstr "Kon niet oproepen" +msgstr "" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:2745 -#, fuzzy +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" -msgstr "belt u." +msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "" -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Verbonden." -#: ../coreapi/linphonecore.c:3220 -#, fuzzy +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" -msgstr "afgebroken" +msgstr "" -#: ../coreapi/linphonecore.c:3412 -#, fuzzy +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" -msgstr "Kon niet oproepen" +msgstr "" -#: ../coreapi/linphonecore.c:3417 -#, fuzzy +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." -msgstr "Kon niet oproepen" +msgstr "" -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "STUN adres wordt opgezocht..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1935,789 +1799,183 @@ msgid "Busy" msgstr "Bezet" #: ../coreapi/friend.c:39 -#, fuzzy msgid "Be right back" -msgstr "Kom zo terug" +msgstr "" #: ../coreapi/friend.c:42 msgid "Away" msgstr "Afwezig" #: ../coreapi/friend.c:45 -#, fuzzy msgid "On the phone" -msgstr "Aan de telefoon" +msgstr "" #: ../coreapi/friend.c:48 -#, fuzzy msgid "Out to lunch" -msgstr "Aan het lunchen" +msgstr "" #: ../coreapi/friend.c:51 msgid "Do not disturb" msgstr "Niet storen" #: ../coreapi/friend.c:54 -#, fuzzy msgid "Moved" -msgstr "Codecs" +msgstr "" #: ../coreapi/friend.c:57 msgid "Using another messaging service" msgstr "" #: ../coreapi/friend.c:60 -#, fuzzy msgid "Offline" -msgstr "Aanwezig" +msgstr "" #: ../coreapi/friend.c:63 msgid "Pending" msgstr "" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Informatie" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 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:1369 -#, fuzzy, c-format +#: ../coreapi/proxy.c:1377 +#, c-format msgid "Could not login as %s" -msgstr "Kon pixmap bestand %s niet vinden" +msgstr "" -#: ../coreapi/callbacks.c:355 -#, fuzzy +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." -msgstr "Externe diensten" +msgstr "" -#: ../coreapi/callbacks.c:373 -#, fuzzy +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." -msgstr "Externe diensten" +msgstr "" -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:435 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:475 +#, c-format msgid "Call with %s is paused." -msgstr "Chat met %s" +msgstr "" -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:459 -#, fuzzy +#: ../coreapi/callbacks.c:498 msgid "Call resumed." -msgstr "Oproep beeindigd" +msgstr "" -#: ../coreapi/callbacks.c:464 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:502 +#, c-format msgid "Call answered by %s." msgstr "" -"Oproepen of\n" -"beantwoorden" -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "" -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "Oproep beeindigd." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Gebruiker is bezet." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "Gebruiker is tijdelijk niet beschikbaar." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "De gebruiker wenst niet gestoord te worden." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Oproep geweigerd." -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 -#, fuzzy +#: ../coreapi/callbacks.c:780 msgid "Redirected" -msgstr "Doorgeschakeld naar %s..." - -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:798 -#, fuzzy +#: ../coreapi/callbacks.c:835 msgid "Call failed." -msgstr "Oproep geannuleerd." +msgstr "" -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "Registratie op %s gelukt." -#: ../coreapi/callbacks.c:879 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:914 +#, c-format msgid "Unregistration on %s done." -msgstr "Registratie op %s gelukt." +msgstr "" -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:900 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:935 +#, c-format msgid "Registration on %s failed: %s" -msgstr "Registratie op %s mislukt (time-out)." +msgstr "" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:174 +#, c-format msgid "Authentication token is %s" -msgstr "Authorisatie gegevens" +msgstr "" -#: ../coreapi/linphonecall.c:2932 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:3020 +#, 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." - -#~ msgid "aborted" -#~ msgstr "afgebroken" - -#~ msgid "completed" -#~ msgstr "voltooid" - -#~ msgid "missed" -#~ msgstr "gemist" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s op %s\n" -#~ "Van: %s\n" -#~ "Aan: %s\n" -#~ "Status: %s\n" -#~ "Tijdsduur: %i mins %i secs\n" - -#~ msgid "Outgoing call" -#~ msgstr "Uitgaande oproep" - -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "Slecht geformuleerd SIP-adres. Een SIP-adres ziet er uit als sip:" -#~ "gebruikersnaam@domeinnaam" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Uw computer maakt schijnbaar gebruik van ALSA geluidsdrivers.\n" -#~ "Dit is de beste keuze. Maar de pcm oss emulatie module mist\n" -#~ "en linphone heeft deze nodig. Geeft u alstublieft het commando\n" -#~ "'modprobe snd-pcm-oss' als root om de module te laden." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Uw computer maakt schijnbaar gebruik van ALSA geluidsdrivers.\n" -#~ "Dit is de beste keuze. Maar de mixer oss emulatie module mist\n" -#~ "en linphone heeft deze nodig. Geeft u alstublieft het commando\n" -#~ "'modprobe snd-mixer-oss' als root om de module te laden." - -#~ msgid "Chat with %s" -#~ msgstr "Chat met %s" - -#, fuzzy -#~ msgid "Choosing a username" -#~ msgstr "gebruikersnaam:" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "Aan" - -#, fuzzy -#~ msgid "Unmute" -#~ msgstr "Ongelimiteerd" - -#, fuzzy -#~ msgid "Contact list" -#~ 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." - -#~ msgid "" -#~ "Your machine appears to be connected to an IPv6 network. By default " -#~ "linphone always uses IPv4. Please update your configuration if you want " -#~ "to use IPv6" -#~ msgstr "" -#~ "Uw machine lijkt verbonden te zijn met een IPv6 netwerk. Standaard " -#~ "gebruikt linphone altijd IPv4. Wijzig uw configuratie wanneer u IPv6 wilt " -#~ "gebruiken." - -#, fuzzy -#~ msgid "_Modes" -#~ msgstr "Codecs" - -#~ msgid "Accept" -#~ msgstr "Accepteren" - -#, fuzzy -#~ msgid "Incoming call from" -#~ msgstr "Inkomende oproep" - -#, fuzzy -#~ msgid "Linphone - Incoming call" -#~ msgstr "Inkomende oproep" - -#, fuzzy -#~ msgid "" -#~ "Audio codecs\n" -#~ "Video codecs" -#~ msgstr "Audio en video codecs" - -#~ msgid "Sorry, having multiple simultaneous calls is not supported yet !" -#~ msgstr "" -#~ "Helaas, meerdere gelijktijdige gesprekken wordt nog niet ondersteund!" - -#~ msgid "Could not reach destination." -#~ msgstr "Kon bestemming niet bereiken." - -#~ msgid "Request Cancelled." -#~ msgstr "Verzoek geannuleerd." - -#~ msgid "Bad request" -#~ msgstr "Slecht geformuleerd verzoek" - -#~ msgid "User cannot be found at given address." -#~ msgstr "Gebruiker kan niet worden gevonden bij opgegeven adres." - -#~ msgid "Remote user cannot support any of proposed codecs." -#~ msgstr "De externe gebruiker ondersteunt geen van de voorgestelde codecs." - -#~ msgid "Timeout." -#~ msgstr "Time-out." - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "Externe machine is gevonden, maar verbinding is geweigerd." - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you\n" -#~ "to contact him using the following alternate resource:" -#~ msgstr "" -#~ "De gebruiker is op dit moment niet bereikbaar, maar hij nodigt u uit om\n" -#~ "op de volgende, alternatieve, manier contact met hem op te nemen:" - -#~ msgid "No nat/firewall address supplied !" -#~ msgstr "Geen NAT/firewall adres opgegeven" - -#~ msgid "Invalid nat address '%s' : %s" -#~ msgstr "Ongeldig NAT adres '%s' : %s" - -#~ msgid "Gone" -#~ msgstr "Weg" - -#~ msgid "Waiting for Approval" -#~ msgstr "Wachten op accoord" - -#~ msgid "Be Right Back" -#~ msgstr "Kom zo terug" - -#~ msgid "On The Phone" -#~ msgstr "Aan de telefoon" - -#~ msgid "Out To Lunch" -#~ msgstr "Aan het lunchen" - -#~ msgid "Closed" -#~ msgstr "Gesloten" - -#, fuzzy -#~ msgid "_View" -#~ msgstr "Video" - -#, fuzzy -#~ msgid "_Properties" -#~ msgstr "RTP-eigenschappen" - -#, fuzzy -#~ msgid "Show logs" -#~ msgstr "Oproepen weergeven" - -#, fuzzy -#~ msgid "_About" -#~ msgstr "Account" - -#, fuzzy -#~ msgid "Proxy in use" -#~ msgstr "Te gebruiken proxy:" - -#~ msgid "Sound" -#~ msgstr "Geluid" - -#, fuzzy -#~ msgid "Proxy accounts" -#~ msgstr "Te gebruiken proxy:" - -#~ msgid "Go" -#~ msgstr "Ga" - -#~ msgid "Exit" -#~ msgstr "Einde" - -#~ msgid "Shows the address book" -#~ msgstr "Het adresboek weergeven" - -#~ msgid "..." -#~ msgstr "..." - -#~ msgid "" -#~ "Hangup\n" -#~ "or refuse" -#~ msgstr "" -#~ "Ophangen\n" -#~ "of weigeren" - -#~ msgid "Or chat !" -#~ msgstr "Of chat!" - -#~ msgid "Show more..." -#~ msgstr "Meer weergeven..." - -#~ msgid "Playback level:" -#~ msgstr "Geluidssterkte afspelen:" - -#~ msgid "Recording level:" -#~ msgstr "Geluidssterkte opname:" - -#, fuzzy -#~ msgid "Ring level:" -#~ msgstr "Geluidssterkte opname:" - -#~ msgid "Controls" -#~ msgstr "Functies" - -#~ msgid "Reachable" -#~ msgstr "Bereikbaar" - -#~ msgid "Busy, I'll be back in " -#~ msgstr "Bezig; ik ben terug over " - -#~ msgid "The other party will be informed that you'll be back in X minutes" -#~ msgstr "" -#~ "De andere partij zal worden geïnformeerd dat u over X minuten terug bent" - -#~ msgid "mn" -#~ msgstr "min" - -#~ msgid "Moved temporarily" -#~ msgstr "Tijdelijk verplaatst" - -#~ msgid "Alternative service" -#~ msgstr "Alternatieve dienst" - -#~ msgid "URL:" -#~ msgstr "URL:" - -#~ msgid "Presence" -#~ msgstr "Aanwezigheid" - -#~ msgid "Press digits to send DTMFs." -#~ msgstr "Druk op de cijfers om DTMF's te sturen" - -#~ msgid "" -#~ " 3\n" -#~ "def" -#~ msgstr "" -#~ " 3\n" -#~ "def" - -#~ msgid "" -#~ " 2\n" -#~ "abc" -#~ msgstr "" -#~ " 2\n" -#~ "abc" - -#~ msgid "" -#~ " 4\n" -#~ "ghi" -#~ msgstr "" -#~ " 4\n" -#~ "ghi" - -#~ msgid "" -#~ " 5\n" -#~ "jkl" -#~ msgstr "" -#~ " 5\n" -#~ "jkl" - -#~ msgid "" -#~ " 6\n" -#~ "mno" -#~ msgstr "" -#~ " 6\n" -#~ "mno" - -#~ msgid "" -#~ " 7\n" -#~ "pqrs" -#~ msgstr "" -#~ " 7\n" -#~ "pqrs" - -#~ msgid "" -#~ " 8\n" -#~ "tuv" -#~ msgstr "" -#~ " 8\n" -#~ "tuv" - -#~ msgid "" -#~ " 9\n" -#~ "wxyz" -#~ msgstr "" -#~ " 9\n" -#~ "wxyz" - -#~ msgid "DTMF" -#~ msgstr "DTMF" - -#~ msgid "My online friends" -#~ msgstr "Mijn online vrienden" - -#~ msgid "" -#~ "C: 2001\n" -#~ "Made in Old Europe" -#~ msgstr "" -#~ "C: 2001\n" -#~ "Gemaakt in antiek Europa" - -#~ msgid "" -#~ "Linphone is a web-phone.\n" -#~ "It is compatible with SIP and RTP protocols." -#~ msgstr "" -#~ "Linphone is een webtelefoon.\n" -#~ "Het werkt met de SIP- en RTP-protocollen." - -#~ msgid "http://www.linphone.org" -#~ msgstr "http://www.linphone.org" - -#~ msgid "Use IPv6 network (if available)" -#~ msgstr "Gebruik IPv6 netwerk (wanneer het beschikbaar is)" - -#~ msgid "" -#~ "Toggle this if you are on an ipv6 network and you wish linphone to use it." -#~ msgstr "" -#~ "Wijzig dit wanneer u op een IPv6 netwerk zit en linphone daarop wilt " -#~ "gebruiken." - -#~ msgid "Global" -#~ msgstr "Globaal" - -#~ msgid "" -#~ "These options is only for users in a private network, behind a gateway. " -#~ "If you are not in this situation, then leave this empty." -#~ msgstr "" -#~ "Deze optie is alleen voor gebruikers in een lokaal netwerk, achter een " -#~ "gateway: Wanneer u niet in deze situatie zit, laat dit dan leeg." - -#~ msgid "No firewall" -#~ msgstr "Geen firewall" - -#~ msgid "Use this STUN server to guess firewall address :" -#~ msgstr "Gebruik deze STUN server om het firewall adres te achterhalen" - -#~ msgid "Specify firewall address manually:" -#~ msgstr "Geef het firewall adres handmatig op" - -#~ msgid "NAT traversal options (experimental)" -#~ msgstr "NAT-doorstuur opties (experimenteel)" - -#~ msgid "Number of buffered miliseconds (jitter compensation):" -#~ msgstr "Aantal gebufferde miliseconden (jitter compensatie):" - -#~ msgid "RTP port used for audio:" -#~ msgstr "RTP-poort voor geluid:" - -#~ msgid "Use SIP INFO message instead of RTP rfc2833 for DTMF transmitting" -#~ msgstr "" -#~ "Gebruik SIP INFO bericht in plaats van RTP rfc2833 voor DTMF berichten" - -#~ msgid "RTP-RFC2833 is the recommended way." -#~ msgstr "RTP-RFC2833 is de aanbevolen manier." - -#~ msgid "Other" -#~ msgstr "Overige" - -#~ msgid "micro" -#~ msgstr "microfoon" - -#~ msgid "Enable echo-canceler (cancels the echo heard by the remote party)" -#~ msgstr "" -#~ "Activeer de echo-onderdrukking (onderdrukt de echo die de andere partij " -#~ "hoort)" - -#~ msgid "Choose file" -#~ msgstr "Kies bestand" - -#~ msgid "Listen" -#~ msgstr "Luisteren" - -#~ msgid "Run sip user agent on port:" -#~ msgstr "Start SIP gebruikerssysteem op poort:" - -#~ msgid "It is strongly recommended to use port 5060." -#~ msgstr "Het wordt sterk aangeraden om poort 5060 te gebruiken." - -#~ msgid "@" -#~ msgstr "@" - -#~ msgid "Identity" -#~ msgstr "Identiteit" - -#~ msgid "Add proxy/registrar" -#~ msgstr "Voeg proxy/registratieserver toe" - -#~ msgid "Clear all stored authentication information (username,password...)" -#~ msgstr "" -#~ "Schoon alle opgeslagen authorisatie gegevens op (gebruikersnaam, " -#~ "wachtwoord...)" - -#~ msgid "List of audio codecs, in order of preference:" -#~ msgstr "Lijst met audio codecs, in volgorde van voorkeur:" - -#~ msgid "" -#~ "Note: Codecs in red are not usable regarding to your connection type to " -#~ "the internet." -#~ msgstr "" -#~ "Opmerking: Met rood weergegeven codecs zijn niet bruikbaar vanwege het " -#~ "soort internetverbinding dat u heeft" - -#~ msgid "Codec information" -#~ msgstr "Codec informatie" - -#~ msgid "Address Book" -#~ msgstr "Adresboek" - -#~ msgid "Select" -#~ msgstr "Kiezen" - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you to contact him " -#~ "using the following alternate ressource:" -#~ msgstr "" -#~ "De gebruiker is op dit moment niet bereikbaar, maar hij nodigt u uit op " -#~ "de volgende, alternatieve, manier contact met hem op te nemen:" - -#~ msgid "None." -#~ msgstr "Geen." - -#~ msgid "Send registration:" -#~ msgstr "Verstruur registratie:" - -#~ msgid "Name:" -#~ msgstr "Naam:" - -#~ msgid "Subscribe policy:" -#~ msgstr "Aanmeldbeleid:" - -#~ msgid "Send subscription (see person's online status)" -#~ msgstr "Verstruur aanmelding (bekijk de online status van een persoon)" - -#~ msgid "New incoming subscription" -#~ msgstr "Nieuwe inkomende aanmelding" - -#~ msgid "You have received a new subscription..." -#~ msgstr "U heeft een nieuwe aanmelding ontvangen..." - -#~ msgid "Refuse" -#~ msgstr "Weigeren" - -#~ msgid "Authentication required for realm" -#~ msgstr "Authorisatie benodigd voor gebied" - -#~ msgid "userid:" -#~ msgstr "gebruikersID:" - -#~ msgid "Text:" -#~ msgstr "Tekst:" - -#~ msgid "The caller asks for resource reservation. Do you agree ?" -#~ msgstr "De beller vraagt om reservering van bronnen. Gaat u accoord?" - -#~ msgid "" -#~ "The caller doesn't use resource reservation. \t\t\t\t\tDo you wish to " -#~ "continue anyway ?" -#~ msgstr "" -#~ "De beller gebruikt geen bron reservatie. \t\t\t\t\tWilt u toch doorgaan?" - -#~ msgid "linphone - receiving call from %s" -#~ msgstr "Linphone - binnenkomend gesprek van %s" - -#~ msgid "" -#~ "You have received a subscription from %s.This means that this person " -#~ "wishes to be notified of your presence information (online, busy, " -#~ "away...).\n" -#~ "Do you agree ?" -#~ msgstr "" -#~ "U heeft een aanmelding ontvangen van %s. Dit betekent dat deze persoon " -#~ "een melding wil ontvangen wat betreft uw status (online, bezig, weg...).\n" -#~ "Gaat u accoord?" - -#~ msgid "Authentication required for realm %s" -#~ msgstr "Authorisatie benodigd voor gebied %s" - -#~ msgid "Wait" -#~ msgstr "Wachten" - -#~ msgid "Deny" -#~ msgstr "Weigeren" - -#~ msgid "Bad sip address: a sip address looks like sip:user@domain" -#~ msgstr "" -#~ "Slecht geformuleerd SIP-adres. Een SIP-adres ziet er uit als sip:" -#~ "gebruikersnaam@domeinnaam" - -#~ msgid "Stun lookup done..." -#~ msgstr "STUN adres gevonden..." - -#~ msgid "User manual" -#~ msgstr "Handleiding" - -#~ msgid "Ring sound selection" -#~ msgstr "Belgeluid keuze" - -#~ msgid "Communication ended." -#~ msgstr "Communicatie beëindigd." - -#~ msgid "Firewall 's external ip address (in dot notations):" -#~ msgstr "Extern IP adres van de firewall (in x.x.x.x notatie):" - -#~ msgid "Index" -#~ msgstr "Index" - -#~ msgid "28k modem" -#~ msgstr "28k modem" - -#~ msgid "56k modem" -#~ msgstr "56k modem" - -#~ msgid "64k modem (numeris)" -#~ msgstr "64k modem (ISDN)" - -#~ msgid "ADSL or Cable modem" -#~ msgstr "ADSL- of kabelmodem" - -#~ msgid "Ethernet or equivalent" -#~ msgstr "Ethernet of vergelijkbaar" - -#~ msgid "Connection type:" -#~ msgstr "Soort verbinding:" - -#~ msgid "" -#~ "Linphone could not open audio device %s. Check if your sound card is " -#~ "fully configured and working." -#~ msgstr "" -#~ "Linphone kon het geluidsapparaat %s niet openen. Controleer of uw " -#~ "geluidskaart goed is ingesteld en werkt." - -#~ msgid "Type here the sip address of the person you want to call." -#~ msgstr "Geef hier het SIP-adres op van de persoon die u wilt bellen." - -#~ msgid "" -#~ "Release or\n" -#~ "Refuse" -#~ msgstr "" -#~ "Ophangen\n" -#~ "of weigeren" - -#~ msgid "%s. Retry after %i minute(s)." -#~ msgstr "%s. Opnieuw proberen na %i minu(u)t(en)." +msgstr[0] "" +msgstr[1] "" diff --git a/po/pl.po b/po/pl.po index 62e06d793..794b0c996 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,19 +1,21 @@ -# SIP Telephony Application. -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -# Simon Morlat , 2001. -# +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: linphone 0.7.1\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2003-08-22 12:50+0200\n" -"Last-Translator: Robert Nasiadek \n" -"Language-Team: Polski \n" -"Language: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:08+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Polish (http://www.transifex.com/projects/p/linphone-gtk/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8-bit\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -26,27 +28,25 @@ msgid "Send text to %s" msgstr "" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "Połączenie odwołane." +msgstr "" #: ../gtk/calllogs.c:320 msgid "Missed" msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "linia" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format @@ -54,6 +54,7 @@ msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: ../gtk/calllogs.c:332 #, c-format @@ -61,6 +62,7 @@ msgid "%i second" msgid_plural "%i seconds" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 #, c-format @@ -124,124 +126,110 @@ msgstr "" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" msgstr "" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Informacja" +msgstr "" #: ../gtk/main.c:163 msgid "Run the audio assistant" msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 "" -#: ../gtk/main.c:1260 +#: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1376 -#, fuzzy +#: ../gtk/main.c:1283 msgid "Call error" -msgstr "Połączenie odwołane." +msgstr "" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 -#, fuzzy +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" -msgstr "Rozmowa odrzucona." +msgstr "" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 -#, fuzzy +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" -msgstr "linia" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy +#: ../gtk/main.c:1299 msgid "Call paused" -msgstr "Połączenie odwołane." +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "Dzwonie do " +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 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:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "" #: ../gtk/friendlist.c:505 -#, fuzzy msgid "Add to addressbook" -msgstr "Książka adresowa" +msgstr "" #: ../gtk/friendlist.c:691 -#, fuzzy msgid "Presence status" -msgstr "Obecność" +msgstr "" #: ../gtk/friendlist.c:709 ../gtk/propertybox.c:552 ../gtk/contact.ui.h:1 msgid "Name" msgstr "Nazwa" #: ../gtk/friendlist.c:721 -#, fuzzy msgid "Call" -msgstr "Połączenie odwołane." +msgstr "" #: ../gtk/friendlist.c:726 msgid "Chat" @@ -253,9 +241,9 @@ msgid "Search in %s directory" msgstr "" #: ../gtk/friendlist.c:976 -#, fuzzy, c-format +#, c-format msgid "Edit contact '%s'" -msgstr "(Brak informacji kontaktowych !)" +msgstr "" #: ../gtk/friendlist.c:977 #, c-format @@ -281,9 +269,8 @@ msgid "Status" msgstr "Status" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Min przepustowość (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -301,93 +288,92 @@ msgstr "Wyłączone" msgid "Account" msgstr "" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "" -#: ../gtk/propertybox.c:1225 -#, fuzzy +#: ../gtk/propertybox.c:1234 msgid "None" -msgstr "Brak." +msgstr "" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -411,14 +397,12 @@ msgid "Error communicating with server." msgstr "" #: ../gtk/buddylookup.c:164 -#, fuzzy msgid "Connecting..." -msgstr "Lącze" +msgstr "" #: ../gtk/buddylookup.c:168 -#, fuzzy msgid "Connected" -msgstr "Połączony" +msgstr "" #: ../gtk/buddylookup.c:172 msgid "Receiving data..." @@ -430,6 +414,7 @@ msgid "Found %i contact" msgid_plural "Found %i contacts" msgstr[0] "" msgstr[1] "" +msgstr[2] "" #: ../gtk/setupwizard.c:34 msgid "" @@ -458,28 +443,24 @@ msgid "Enter your linphone.org username" msgstr "" #: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 -#, fuzzy msgid "Username:" -msgstr "Podręcznik" +msgstr "" #: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 -#, fuzzy msgid "Password:" -msgstr "Twoje hasło:" +msgstr "" #: ../gtk/setupwizard.c:124 msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "Podręcznik" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "Twoje hasło:" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -494,14 +475,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "Podręcznik" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "Twoje hasło:" +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -527,8 +506,7 @@ msgstr "" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" @@ -569,9 +547,9 @@ msgid "Terminating" msgstr "" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, fuzzy, c-format +#, c-format msgid "Call #%i" -msgstr "Połączenie odwołane." +msgstr "" #: ../gtk/incall_view.c:155 #, c-format @@ -587,9 +565,8 @@ msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "Połączenie odwołane." +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -616,18 +593,16 @@ msgid "uPnP in progress" msgstr "" #: ../gtk/incall_view.c:243 -#, fuzzy msgid "uPnp not available" -msgstr "Brak informacji" +msgstr "" #: ../gtk/incall_view.c:245 msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "Połączenie odwołane." +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -654,114 +629,108 @@ msgstr "" msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 -#, fuzzy +#: ../gtk/incall_view.c:511 msgid "Calling..." -msgstr "Dzwonie do " +msgstr "" -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "" -#: ../gtk/incall_view.c:515 -#, fuzzy +#: ../gtk/incall_view.c:525 msgid "Incoming call" -msgstr "Dzwonie do " +msgstr "" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:702 -#, fuzzy +#: ../gtk/incall_view.c:722 msgid "In call" -msgstr "Dzwonie do " +msgstr "" -#: ../gtk/incall_view.c:738 -#, fuzzy +#: ../gtk/incall_view.c:758 msgid "Paused call" -msgstr "Dzwonie do " +msgstr "" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "" -#: ../gtk/incall_view.c:772 -#, fuzzy +#: ../gtk/incall_view.c:794 msgid "Call ended." -msgstr "Rozmowa odrzucona." +msgstr "" -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "Połączenie odwołane." +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "" @@ -803,23 +772,20 @@ msgid "" msgstr "" #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Użyj tego urządzenia dźwięku:" +msgstr "" #: ../gtk/audio_assistant.c:329 -#, fuzzy msgid "Recorded volume" -msgstr "Źródło nagrywania:" +msgstr "" #: ../gtk/audio_assistant.c:333 msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Użyj tego urządzenia dźwięku:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -858,14 +824,12 @@ msgid "Record and Play" msgstr "" #: ../gtk/main.ui.h:1 -#, fuzzy msgid "Callee name" -msgstr "Rozmowa odrzucona." +msgstr "" #: ../gtk/main.ui.h:2 -#, fuzzy msgid "Send" -msgstr "Dźwięk" +msgstr "" #: ../gtk/main.ui.h:3 msgid "End conference" @@ -888,14 +852,12 @@ msgid "Transfer" msgstr "" #: ../gtk/main.ui.h:14 -#, fuzzy msgid "In call" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/main.ui.h:15 -#, fuzzy msgid "Duration" -msgstr "Informacja" +msgstr "" #: ../gtk/main.ui.h:16 msgid "Call quality rating" @@ -906,9 +868,8 @@ msgid "All users" msgstr "" #: ../gtk/main.ui.h:18 -#, fuzzy msgid "Online users" -msgstr "linia" +msgstr "" #: ../gtk/main.ui.h:19 msgid "ADSL" @@ -919,27 +880,24 @@ msgid "Fiber Channel" msgstr "" #: ../gtk/main.ui.h:21 -#, fuzzy msgid "Default" -msgstr "Tożsamość" +msgstr "" #: ../gtk/main.ui.h:22 msgid "_Options" msgstr "" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Informacja" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" msgstr "" #: ../gtk/main.ui.h:25 -#, fuzzy msgid "Enable self-view" -msgstr "Włączone" +msgstr "" #: ../gtk/main.ui.h:26 msgid "_Help" @@ -962,52 +920,44 @@ msgid "Account assistant" msgstr "" #: ../gtk/main.ui.h:32 -#, fuzzy msgid "SIP address or phone number:" -msgstr "Adres serwera rejestracji sip" +msgstr "" #: ../gtk/main.ui.h:33 msgid "Initiate a new call" msgstr "" #: ../gtk/main.ui.h:34 -#, fuzzy msgid "Contacts" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/main.ui.h:35 msgid "Search" msgstr "" #: ../gtk/main.ui.h:36 -#, fuzzy msgid "Add contacts from directory" -msgstr "Informacje o kodeku" +msgstr "" #: ../gtk/main.ui.h:37 -#, fuzzy msgid "Add contact" -msgstr "(Brak informacji kontaktowych !)" +msgstr "" #: ../gtk/main.ui.h:38 -#, fuzzy msgid "Recent calls" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/main.ui.h:39 -#, fuzzy msgid "My current identity:" -msgstr "Tożsamość" +msgstr "" #: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 -#, fuzzy msgid "Username" -msgstr "Podręcznik" +msgstr "" #: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 -#, fuzzy msgid "Password" -msgstr "Twoje hasło:" +msgstr "" #: ../gtk/main.ui.h:42 msgid "Internet connection:" @@ -1022,23 +972,20 @@ msgid "UserID" msgstr "" #: ../gtk/main.ui.h:45 -#, fuzzy msgid "Login information" -msgstr "Informacje o kodeku" +msgstr "" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome !" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About linphone" -msgstr "linphone" +msgstr "" #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications,2010\n" @@ -1065,9 +1012,8 @@ msgid "" msgstr "" #: ../gtk/contact.ui.h:2 -#, fuzzy msgid "SIP Address" -msgstr "Adres" +msgstr "" #: ../gtk/contact.ui.h:3 msgid "Show this contact presence status" @@ -1078,9 +1024,8 @@ msgid "Allow this contact to see my presence status" msgstr "" #: ../gtk/contact.ui.h:5 -#, fuzzy msgid "Contact information" -msgstr "Informacje o kodeku" +msgstr "" #: ../gtk/log.ui.h:1 msgid "Linphone debug window" @@ -1091,9 +1036,8 @@ msgid "Scroll to end" msgstr "" #: ../gtk/password.ui.h:1 -#, fuzzy msgid "Linphone - Authentication required" -msgstr "Informacje o kodeku" +msgstr "" #: ../gtk/password.ui.h:2 msgid "Please enter the domain password" @@ -1116,9 +1060,8 @@ msgid "Linphone - Configure a SIP account" msgstr "" #: ../gtk/sip_account.ui.h:2 -#, fuzzy msgid "Your SIP identity:" -msgstr "Tożsamość" +msgstr "" #: ../gtk/sip_account.ui.h:3 msgid "Looks like sip:@" @@ -1129,18 +1072,16 @@ msgid "sip:" msgstr "sip:" #: ../gtk/sip_account.ui.h:5 -#, fuzzy msgid "SIP Proxy address:" -msgstr "Adres sip:" +msgstr "" #: ../gtk/sip_account.ui.h:6 msgid "Looks like sip:" msgstr "" #: ../gtk/sip_account.ui.h:7 -#, fuzzy msgid "Registration duration (sec):" -msgstr "Rejestracja powiodła się." +msgstr "" #: ../gtk/sip_account.ui.h:8 msgid "Contact params (optional):" @@ -1155,23 +1096,20 @@ msgid "Route (optional):" msgstr "" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" msgstr "" #: ../gtk/sip_account.ui.h:13 -#, fuzzy msgid "Publish presence information" -msgstr "Informacje o kodeku" +msgstr "" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Włączony" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1206,14 +1144,12 @@ msgid "CIF" msgstr "" #: ../gtk/parameters.ui.h:8 -#, fuzzy msgid "Audio codecs" -msgstr "Kodeki audio" +msgstr "" #: ../gtk/parameters.ui.h:9 -#, fuzzy msgid "Video codecs" -msgstr "Kodeki audio" +msgstr "" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" @@ -1248,9 +1184,8 @@ msgid "Use IPv6 instead of IPv4" msgstr "" #: ../gtk/parameters.ui.h:18 -#, fuzzy msgid "Transport" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/parameters.ui.h:19 msgid "Media encryption type" @@ -1281,14 +1216,12 @@ msgid "DSCP fields" msgstr "" #: ../gtk/parameters.ui.h:26 -#, fuzzy msgid "SIP/TCP port" -msgstr "Port SIP" +msgstr "" #: ../gtk/parameters.ui.h:27 -#, fuzzy msgid "SIP/UDP port" -msgstr "Port SIP" +msgstr "" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1315,76 +1248,64 @@ msgid "Behind NAT / Firewall (use uPnP)" msgstr "" #: ../gtk/parameters.ui.h:34 -#, fuzzy msgid "Public IP address:" -msgstr "Adres sip:" +msgstr "" #: ../gtk/parameters.ui.h:35 -#, fuzzy msgid "Stun server:" -msgstr "Dźwięk" +msgstr "" #: ../gtk/parameters.ui.h:36 -#, fuzzy msgid "NAT and Firewall" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/parameters.ui.h:37 -#, fuzzy msgid "Network settings" -msgstr "Sieć" +msgstr "" #: ../gtk/parameters.ui.h:38 -#, fuzzy msgid "Ring sound:" -msgstr "Źródło nagrywania:" +msgstr "" #: ../gtk/parameters.ui.h:39 msgid "ALSA special device (optional):" msgstr "" #: ../gtk/parameters.ui.h:40 -#, fuzzy msgid "Capture device:" -msgstr "Użyj tego urządzenia dźwięku:" +msgstr "" #: ../gtk/parameters.ui.h:41 -#, fuzzy msgid "Ring device:" -msgstr "Użyj tego urządzenia dźwięku:" +msgstr "" #: ../gtk/parameters.ui.h:42 -#, fuzzy msgid "Playback device:" -msgstr "Użyj tego urządzenia dźwięku:" +msgstr "" #: ../gtk/parameters.ui.h:43 msgid "Enable echo cancellation" msgstr "" #: ../gtk/parameters.ui.h:44 -#, fuzzy msgid "Audio" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/parameters.ui.h:45 -#, fuzzy msgid "Video input device:" -msgstr "Dźwięk" +msgstr "" #: ../gtk/parameters.ui.h:46 msgid "Prefered video resolution:" msgstr "" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Dźwięk" +msgstr "" #: ../gtk/parameters.ui.h:48 -#, fuzzy msgid "Video" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/parameters.ui.h:49 msgid "Multimedia settings" @@ -1399,28 +1320,24 @@ msgid "Your display name (eg: John Doe):" msgstr "" #: ../gtk/parameters.ui.h:52 -#, fuzzy msgid "Your username:" -msgstr "Podręcznik" +msgstr "" #: ../gtk/parameters.ui.h:53 -#, fuzzy msgid "Your resulting SIP address:" -msgstr "Twój adres sip:" +msgstr "" #: ../gtk/parameters.ui.h:54 -#, fuzzy msgid "Default identity" -msgstr "Tożsamość" +msgstr "" #: ../gtk/parameters.ui.h:55 msgid "Wizard" msgstr "" #: ../gtk/parameters.ui.h:56 -#, fuzzy msgid "Add" -msgstr "Adres" +msgstr "" #: ../gtk/parameters.ui.h:57 msgid "Edit" @@ -1431,18 +1348,16 @@ msgid "Remove" msgstr "" #: ../gtk/parameters.ui.h:59 -#, fuzzy msgid "Proxy accounts" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/parameters.ui.h:60 msgid "Erase all passwords" msgstr "" #: ../gtk/parameters.ui.h:61 -#, fuzzy msgid "Privacy" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/parameters.ui.h:62 msgid "Manage SIP Accounts" @@ -1457,9 +1372,8 @@ msgid "Disable" msgstr "Wyłącz" #: ../gtk/parameters.ui.h:65 -#, fuzzy msgid "Codecs" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/parameters.ui.h:66 msgid "0 stands for \"unlimited\"" @@ -1488,84 +1402,72 @@ msgid "Bandwidth control" msgstr "" #: ../gtk/parameters.ui.h:72 -#, fuzzy msgid "Codecs" -msgstr "Kodeki" +msgstr "" #: ../gtk/parameters.ui.h:73 -#, fuzzy msgid "Language" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/parameters.ui.h:74 msgid "Show advanced settings" msgstr "" #: ../gtk/parameters.ui.h:75 -#, fuzzy msgid "Level" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/parameters.ui.h:76 -#, fuzzy msgid "User interface" -msgstr "Podręcznik" +msgstr "" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "Adres serwera:" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Informacje o kodeku" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" msgstr "" #: ../gtk/parameters.ui.h:83 -#, fuzzy msgid "Done" -msgstr "Brak." +msgstr "" #: ../gtk/buddylookup.ui.h:1 -#, fuzzy msgid "Search contacts in directory" -msgstr "Informacje o kodeku" +msgstr "" #: ../gtk/buddylookup.ui.h:2 msgid "Add to my list" msgstr "" #: ../gtk/buddylookup.ui.h:3 -#, fuzzy msgid "Search somebody" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/waiting.ui.h:1 -#, fuzzy msgid "Linphone" -msgstr "linphone" +msgstr "" #: ../gtk/waiting.ui.h:2 msgid "Please wait" msgstr "" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "Sieć" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1588,14 +1490,12 @@ msgid "Call statistics" msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" -msgstr "Kodeki audio" +msgstr "" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" -msgstr "Kodeki audio" +msgstr "" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1614,9 +1514,8 @@ msgid "Video Media connectivity" msgstr "" #: ../gtk/call_statistics.ui.h:8 -#, fuzzy msgid "Round trip time" -msgstr "Właściwości dźwięku" +msgstr "" #: ../gtk/call_statistics.ui.h:9 msgid "Video resolution received" @@ -1631,9 +1530,8 @@ msgid "RTP profile" msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "Informacje o kodeku" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 msgid "Configure VoIP tunnel" @@ -1716,23 +1614,20 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Sieć" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" msgstr "" #: ../gtk/ldap.ui.h:7 -#, fuzzy msgid "Not yet available" -msgstr "Brak informacji" +msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1747,9 +1642,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1765,18 +1659,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "Adres" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1791,9 +1683,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Dzwonie do " +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1817,11 +1708,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1829,93 +1717,85 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "Lącze" +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 -#, fuzzy +#: ../coreapi/linphonecore.c:1511 msgid "Ready" -msgstr "Gotowy." +msgstr "" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Informacja" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "" -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "" #. must be known at that time -#: ../coreapi/linphonecore.c:2418 -#, fuzzy +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" -msgstr "Dzwonie do " +msgstr "" -#: ../coreapi/linphonecore.c:2425 -#, fuzzy +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" -msgstr "Nie można znaleźć pixmapy: %s" +msgstr "" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:2745 -#, fuzzy +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" -msgstr "dzwoni do Ciebie." +msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "" -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Połączony" -#: ../coreapi/linphonecore.c:3220 -#, fuzzy +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" -msgstr "Połączenie odwołane." +msgstr "" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "" -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" #: ../coreapi/friend.c:33 -#, fuzzy msgid "Online" -msgstr "linia" +msgstr "" #: ../coreapi/friend.c:36 msgid "Busy" @@ -1930,9 +1810,8 @@ msgid "Away" msgstr "Zajęty" #: ../coreapi/friend.c:45 -#, fuzzy msgid "On the phone" -msgstr "linphone" +msgstr "" #: ../coreapi/friend.c:48 msgid "Out to lunch" @@ -1943,507 +1822,164 @@ msgid "Do not disturb" msgstr "Nie przeszkadzać" #: ../coreapi/friend.c:54 -#, fuzzy msgid "Moved" -msgstr "Kodeki" +msgstr "" #: ../coreapi/friend.c:57 msgid "Using another messaging service" msgstr "" #: ../coreapi/friend.c:60 -#, fuzzy msgid "Offline" -msgstr "linia" +msgstr "" #: ../coreapi/friend.c:63 msgid "Pending" msgstr "" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Informacja" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 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:1369 -#, fuzzy, c-format +#: ../coreapi/proxy.c:1377 +#, c-format msgid "Could not login as %s" -msgstr "Nie można znaleźć pixmapy: %s" +msgstr "" -#: ../coreapi/callbacks.c:355 -#, fuzzy +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." -msgstr "Rejestruje..." +msgstr "" -#: ../coreapi/callbacks.c:373 -#, fuzzy +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." -msgstr "Rejestruje..." +msgstr "" -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:459 -#, fuzzy +#: ../coreapi/callbacks.c:498 msgid "Call resumed." -msgstr "Rozmowa odrzucona." +msgstr "" -#: ../coreapi/callbacks.c:464 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:502 +#, c-format msgid "Call answered by %s." msgstr "" -"Zadzwoń lub\n" -"Odpowiedz" -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "" -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:658 -#, fuzzy +#: ../coreapi/callbacks.c:705 msgid "Call terminated." -msgstr "Rozmowa odrzucona." +msgstr "" -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Osoba jest zajęta." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "Osoba jest tymczasowo niedostępna." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "Osoba nie chce, aby jej przeszkadzać." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Rozmowa odrzucona." -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." +#: ../coreapi/callbacks.c:835 +msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:798 -#, fuzzy -msgid "Call failed." -msgstr "Połączenie odwołane." - -#: ../coreapi/callbacks.c:878 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:913 +#, c-format msgid "Registration on %s successful." -msgstr "Rejestracja powiodła się." +msgstr "" -#: ../coreapi/callbacks.c:879 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:914 +#, c-format msgid "Unregistration on %s done." -msgstr "Rejestracja powiodła się." +msgstr "" -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:900 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:935 +#, c-format msgid "Registration on %s failed: %s" -msgstr "Rejestracja powiodła się." +msgstr "" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:174 +#, c-format msgid "Authentication token is %s" -msgstr "Informacje o kodeku" +msgstr "" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "" msgstr[1] "" - -#, 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 " - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Używasz sterowników ALSA do dźwięku.\n" -#~ "To jest najlepszy wybór. Jednak brakuje modułu emulacji pcm oss,\n" -#~ "a Linphone go wymaga. Uruchom 'modprobe snd-pcm-oss' jako root,\n" -#~ "aby go załadować" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Używasz sterowników ALSA do dźwięku.\n" -#~ "To jest najlepszy wybór. Jednak brakuje modułu emulacji mixera oss,\n" -#~ "a Linphone go wymaga. Uruchom 'modprobe snd-mixer-oss' jako root,\n" -#~ "aby go załadować" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "Włączone" - -#, fuzzy -#~ msgid "Contact list" -#~ 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 "_Modes" -#~ msgstr "Kodeki" - -#, fuzzy -#~ msgid "" -#~ "Audio codecs\n" -#~ "Video codecs" -#~ msgstr "Kodeki audio" - -#, fuzzy -#~ msgid "Request Cancelled." -#~ msgstr "Połączenie odwołane." - -#~ msgid "User cannot be found at given address." -#~ msgstr "Osoba nie istnieje pod tym adresem." - -#~ msgid "Remote user cannot support any of proposed codecs." -#~ msgstr "Osoba nie posiada żadnych zaproponowanych kodeków." - -#~ msgid "Timeout." -#~ msgstr "Upłynął limit czasu." - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "Serwer istnieje, ale odrzucił połączenie." - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you\n" -#~ "to contact him using the following alternate resource:" -#~ msgstr "" -#~ "Użytkownik nie jest dostępny, ale proponuje kontakt poprzez alternatywny " -#~ "adres:" - -#, fuzzy -#~ msgid "Gone" -#~ msgstr "Brak." - -#, fuzzy -#~ msgid "Display filters" -#~ msgstr "Wyświetlana nazwa:" - -#, fuzzy -#~ msgid "_Properties" -#~ msgstr "Właściwości RTP" - -#~ msgid "Sound" -#~ msgstr "Dźwięk" - -#~ msgid "Address book" -#~ msgstr "Książka adresowa" - -#~ msgid "Shows the address book" -#~ msgstr "Pokazuje książkę adresową" - -#~ msgid "..." -#~ msgstr "..." - -#~ msgid "Show more..." -#~ msgstr "Pokaż więcej" - -#~ msgid "Playback level:" -#~ msgstr "Poziom odtwarzania:" - -#~ msgid "Recording level:" -#~ msgstr "Poziom nagrywania:" - -#, fuzzy -#~ msgid "Ring level:" -#~ msgstr "Poziom nagrywania:" - -#~ msgid "Reachable" -#~ msgstr "Dostępny" - -#~ msgid "Busy, I'll be back in " -#~ msgstr "Zajęty, wrócę za " - -#~ msgid "The other party will be informed that you'll be back in X minutes" -#~ msgstr "Osoba zostanie powiadomiona, że wrócisz za X minut." - -#~ msgid "mn" -#~ msgstr "mn" - -#~ msgid "Moved temporarily" -#~ msgstr "Tymczasowo niedostępny" - -#~ msgid "Alternative service" -#~ msgstr "Alternatywny adres" - -#~ msgid "URL:" -#~ msgstr "URL:" - -#~ msgid "Presence" -#~ msgstr "Obecność" - -#~ msgid "Press digits to send DTMFs." -#~ msgstr "Nacisnij cyfry, aby wysłać DTMFy." - -#~ msgid "DTMF" -#~ msgstr "DTMF" - -#~ msgid "" -#~ "Linphone is a web-phone.\n" -#~ "It is compatible with SIP and RTP protocols." -#~ msgstr "" -#~ "Linphone jest telefonem internetowym.\n" -#~ "Jest kompatybilny z protokolami SIP i RTP." - -#, fuzzy -#~ msgid "Use IPv6 network (if available)" -#~ msgstr "Osoba jest tymczasowo niedostępna." - -#, fuzzy -#~ msgid "" -#~ "These options is only for users in a private network, behind a gateway. " -#~ "If you are not in this situation, then leave this empty." -#~ msgstr "" -#~ "Ta opcja jest tylko dla osób w sieci prywatnej, znajdujących się za " -#~ "firewallem. Jeżeli nie jesteś w takiej sytuacji, nie zmieniaj tej opcji." - -#~ msgid "NAT traversal options (experimental)" -#~ msgstr "Opcje NAT traversal (eksperymentalne)" - -#, fuzzy -#~ msgid "Number of buffered miliseconds (jitter compensation):" -#~ msgstr "Czas bufora w milisekundach (kompensacja jitter):" - -#~ msgid "RTP port used for audio:" -#~ msgstr "Port RTP dla dźwięku:" - -#~ msgid "micro" -#~ msgstr "mikrofon" - -#~ msgid "Run sip user agent on port:" -#~ msgstr "Uruchom agenta sip na porcie:" - -#~ msgid "It is strongly recommended to use port 5060." -#~ msgstr "Rekomendowane jest użycie portu 5060." - -#~ msgid "@" -#~ msgstr "@" - -#~ msgid "Identity" -#~ msgstr "Tożsamość" - -#, fuzzy -#~ msgid "Add proxy/registrar" -#~ msgstr "Użyj rejestracji sip" - -#~ msgid "Remote services" -#~ msgstr "Zdalne usługi" - -#~ msgid "List of audio codecs, in order of preference:" -#~ msgstr "Lista kodeków audio, w kolejności preferencji:" - -#~ msgid "" -#~ "Note: Codecs in red are not usable regarding to your connection type to " -#~ "the internet." -#~ msgstr "" -#~ "Uwaga: Czerwone kodeki nie mogą być użyte, ze względu na typTwojego " -#~ "połącznia z internetem." - -#~ msgid "Codec information" -#~ msgstr "Informacje o kodeku" - -#~ msgid "Address Book" -#~ msgstr "Książka adresowa" - -#~ msgid "Select" -#~ msgstr "Wybierz" - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you to contact him " -#~ "using the following alternate ressource:" -#~ msgstr "" -#~ "Użytkownik nie jest dostępny, ale proponuje kontakt poprzez alternatywny " -#~ "adres:" - -#~ msgid "None." -#~ msgstr "Brak." - -#, fuzzy -#~ msgid "Name:" -#~ msgstr "Nazwa" - -#, fuzzy -#~ msgid "Bad sip address: a sip address looks like sip:user@domain" -#~ msgstr "Nie poprawny adres sip. Adres sip wygląda tak " - -#~ msgid "Communication ended." -#~ msgstr "Komunikacja zakończona." - -#, fuzzy -#~ msgid "Firewall 's external ip address (in dot notations):" -#~ msgstr "Adres IP firewall'u (w notacji kropkowej):" - -#~ msgid "Index" -#~ msgstr "Indeks" - -#~ msgid "28k modem" -#~ msgstr "Modem 28K" - -#~ msgid "56k modem" -#~ msgstr "Modem 56K" - -#~ msgid "64k modem (numeris)" -#~ msgstr "Modem ISDN 64K" - -#~ msgid "ADSL or Cable modem" -#~ msgstr "ADSL lub połączenie kablowe" - -#~ msgid "Ethernet or equivalent" -#~ msgstr "LAN lub podobne" - -#~ msgid "Connection type:" -#~ msgstr "Typ połączenia:" - -#, fuzzy -#~ msgid "" -#~ "Linphone could not open audio device %s. Check if your sound card is " -#~ "fully configured and working." -#~ msgstr "" -#~ "Linphone nie mógł otworzyć urządzenia dźwięku. Sprawdź czy Twoja karta " -#~ "jest dobrze skonfigurowana." - -#~ msgid "Type here the sip address of the person you want to call." -#~ msgstr "Tutaj wpisz adres sip osoby, do której chcesz zadzwonić" - -#~ msgid "" -#~ "Release or\n" -#~ "Refuse" -#~ msgstr "" -#~ "Rozłącz lub\n" -#~ "Odmów" - -#~ msgid "%s. Retry after %i minute(s)." -#~ msgstr "%s. Spróbuj za %i minut." - -#, fuzzy -#~ msgid "Timeout..." -#~ msgstr "Upłynął limit czasu." - -#~ 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." - -#~ msgid "Address of record:" -#~ msgstr "Adres do rejestracji:" - -#~ msgid "" -#~ "The password used for registration. On some servers it is not necessary" -#~ msgstr "Hasło do rejestracji. Na niektórych serwerach nie jest wymagane" - -#~ msgid "Use this registrar server as outbound proxy." -#~ msgstr "Użyj tego serwera rejestracji jako zewnętrznego proxy" - -#~ msgid "sip address:" -#~ msgstr "Adres SIP:" - -#~ msgid "Modify" -#~ msgstr "Zmień" - -#~ msgid "" -#~ "You are currently using the i810_audio driver.\n" -#~ "This driver is buggy and so does not work with Linphone.\n" -#~ "We suggest that you replace it by its equivalent ALSA driver,\n" -#~ "either with packages from your distribution, or by downloading\n" -#~ "ALSA drivers at http://www.alsa-project.org." -#~ msgstr "" -#~ "Używasz sterownika i810_audio.\n" -#~ "Ten sterownik ma błędy i nie działa z Linphone\n" -#~ "Sugerujemy zmiane sterowników na ich odpowiedniki ALSA z pakietów Twojej " -#~ "dystrybucji,\n" -#~ "lub ze strony http://www.alsa-project.org/." - -#~ msgid "Unregistration successfull." -#~ msgstr "Derejestracja powiodła się." +msgstr[2] "" diff --git a/po/pt_BR.po b/po/pt_BR.po index c30d3787a..4cc377ec9 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,26 +1,26 @@ -# Portuguese translations for gnomebaker package. -# Copyright (C) 2005 THE linphone COPYRIGHT HOLDER -# This file is distributed under the same license as the linphone package. -# Rafael Caesar Lenzi , 2005. -# -#, fuzzy +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: linphone-1.1.0\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2006-07-11 23:30+0200\n" -"Last-Translator: Rafael Caesar Lenzi \n" -"Language-Team: pt_BR \n" -"Language: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:08+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/linphone-gtk/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 -#, fuzzy, c-format +#, c-format msgid "Call %s" -msgstr "Histórico de chamadas" +msgstr "" #: ../gtk/calllogs.c:149 ../gtk/friendlist.c:975 #, c-format @@ -28,28 +28,25 @@ msgid "Send text to %s" msgstr "" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "Contatando " +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "Abortado" +msgstr "" #: ../gtk/calllogs.c:320 -#, fuzzy msgid "Missed" -msgstr "Perdido" +msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "linha" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format @@ -127,110 +124,98 @@ msgstr "" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" msgstr "" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Informações" +msgstr "" #: ../gtk/main.c:163 msgid "Run the audio assistant" msgstr "" -#: ../gtk/main.c:590 -#, fuzzy, c-format -msgid "Call with %s" -msgstr "Bate-papo com %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 "" -#: ../gtk/main.c:1260 +#: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1376 -#, fuzzy +#: ../gtk/main.c:1283 msgid "Call error" -msgstr "Linphone - Histórico de chamadas" +msgstr "" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 -#, fuzzy +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" -msgstr "Chamada cancelada." +msgstr "" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Camadas recebidas" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 -#, fuzzy +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" -msgstr "linha" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy +#: ../gtk/main.c:1299 msgid "Call paused" -msgstr "Abortado" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "Contatando " +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 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:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "" #: ../gtk/friendlist.c:505 -#, fuzzy msgid "Add to addressbook" -msgstr "Catálogo de endereços" +msgstr "" #: ../gtk/friendlist.c:691 msgid "Presence status" @@ -241,14 +226,12 @@ msgid "Name" msgstr "Nome" #: ../gtk/friendlist.c:721 -#, fuzzy msgid "Call" -msgstr "Histórico de chamadas" +msgstr "" #: ../gtk/friendlist.c:726 -#, fuzzy msgid "Chat" -msgstr "Sala de bate-papo" +msgstr "" #: ../gtk/friendlist.c:756 #, c-format @@ -256,9 +239,9 @@ msgid "Search in %s directory" msgstr "" #: ../gtk/friendlist.c:976 -#, fuzzy, c-format +#, c-format msgid "Edit contact '%s'" -msgstr "Edicar informação de contato" +msgstr "" #: ../gtk/friendlist.c:977 #, c-format @@ -284,9 +267,8 @@ msgid "Status" msgstr "" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Bitrate mínimo (kbits/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -301,96 +283,95 @@ msgid "Disabled" msgstr "Desativado" #: ../gtk/propertybox.c:809 -#, fuzzy msgid "Account" -msgstr "Aceitar" - -#: ../gtk/propertybox.c:1063 -msgid "English" -msgstr "" - -#: ../gtk/propertybox.c:1064 -msgid "French" -msgstr "" - -#: ../gtk/propertybox.c:1065 -msgid "Swedish" -msgstr "" - -#: ../gtk/propertybox.c:1066 -msgid "Italian" -msgstr "" - -#: ../gtk/propertybox.c:1067 -msgid "Spanish" -msgstr "" - -#: ../gtk/propertybox.c:1068 -msgid "Brazilian Portugese" -msgstr "" - -#: ../gtk/propertybox.c:1069 -msgid "Polish" -msgstr "" - -#: ../gtk/propertybox.c:1070 -msgid "German" -msgstr "" - -#: ../gtk/propertybox.c:1071 -msgid "Russian" msgstr "" #: ../gtk/propertybox.c:1072 -msgid "Japanese" +msgid "English" msgstr "" #: ../gtk/propertybox.c:1073 -msgid "Dutch" +msgid "French" msgstr "" #: ../gtk/propertybox.c:1074 -msgid "Hungarian" +msgid "Swedish" msgstr "" #: ../gtk/propertybox.c:1075 -msgid "Czech" +msgid "Italian" msgstr "" #: ../gtk/propertybox.c:1076 -msgid "Chinese" +msgid "Spanish" msgstr "" #: ../gtk/propertybox.c:1077 -msgid "Traditional Chinese" +msgid "Brazilian Portugese" msgstr "" #: ../gtk/propertybox.c:1078 -msgid "Norwegian" +msgid "Polish" msgstr "" #: ../gtk/propertybox.c:1079 -msgid "Hebrew" +msgid "German" msgstr "" #: ../gtk/propertybox.c:1080 +msgid "Russian" +msgstr "" + +#: ../gtk/propertybox.c:1081 +msgid "Japanese" +msgstr "" + +#: ../gtk/propertybox.c:1082 +msgid "Dutch" +msgstr "" + +#: ../gtk/propertybox.c:1083 +msgid "Hungarian" +msgstr "" + +#: ../gtk/propertybox.c:1084 +msgid "Czech" +msgstr "" + +#: ../gtk/propertybox.c:1085 +msgid "Chinese" +msgstr "" + +#: ../gtk/propertybox.c:1086 +msgid "Traditional Chinese" +msgstr "" + +#: ../gtk/propertybox.c:1087 +msgid "Norwegian" +msgstr "" + +#: ../gtk/propertybox.c:1088 +msgid "Hebrew" +msgstr "" + +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "" -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "Nenhum" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -414,14 +395,12 @@ msgid "Error communicating with server." msgstr "" #: ../gtk/buddylookup.c:164 -#, fuzzy msgid "Connecting..." -msgstr "Contatando " +msgstr "" #: ../gtk/buddylookup.c:168 -#, fuzzy msgid "Connected" -msgstr "Conectado." +msgstr "" #: ../gtk/buddylookup.c:172 msgid "Receiving data..." @@ -461,28 +440,24 @@ msgid "Enter your linphone.org username" msgstr "" #: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 -#, fuzzy msgid "Username:" -msgstr "Usuário" +msgstr "" #: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 -#, fuzzy msgid "Password:" -msgstr "Senha:" +msgstr "" #: ../gtk/setupwizard.c:124 msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "Usuário" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "Senha:" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -497,14 +472,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "Usuário" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "Senha:" +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -530,8 +503,7 @@ msgstr "" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" @@ -572,9 +544,9 @@ msgid "Terminating" msgstr "" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, fuzzy, c-format +#, c-format msgid "Call #%i" -msgstr "Histórico de chamadas" +msgstr "" #: ../gtk/incall_view.c:155 #, c-format @@ -590,9 +562,8 @@ msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "Histórico de chamadas" +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -603,9 +574,8 @@ msgid "Going through one or more NATs" msgstr "" #: ../gtk/incall_view.c:229 -#, fuzzy msgid "Direct" -msgstr "Redirecionado para %s..." +msgstr "" #: ../gtk/incall_view.c:231 msgid "Through a relay server" @@ -620,18 +590,16 @@ msgid "uPnP in progress" msgstr "" #: ../gtk/incall_view.c:243 -#, fuzzy msgid "uPnp not available" -msgstr "Informações não disponíveis" +msgstr "" #: ../gtk/incall_view.c:245 msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "Histórico de chamadas" +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -658,114 +626,108 @@ msgstr "" msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 -#, fuzzy +#: ../gtk/incall_view.c:511 msgid "Calling..." -msgstr "Contatando " +msgstr "" -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "" -#: ../gtk/incall_view.c:515 -#, fuzzy +#: ../gtk/incall_view.c:525 msgid "Incoming call" -msgstr "Camadas recebidas" +msgstr "" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:702 -#, fuzzy +#: ../gtk/incall_view.c:722 msgid "In call" -msgstr "Contatando " +msgstr "" -#: ../gtk/incall_view.c:738 -#, fuzzy +#: ../gtk/incall_view.c:758 msgid "Paused call" -msgstr "Contatando " +msgstr "" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "" -#: ../gtk/incall_view.c:772 -#, fuzzy +#: ../gtk/incall_view.c:794 msgid "Call ended." -msgstr "Chamada cancelada." +msgstr "" -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "Histórico de chamadas" +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "" @@ -775,9 +737,9 @@ msgid "Please enter login information for %s" msgstr "" #: ../gtk/config-fetching.c:57 -#, fuzzy, c-format +#, c-format msgid "fetching from %s" -msgstr "Camadas recebidas" +msgstr "" #: ../gtk/config-fetching.c:73 #, c-format @@ -807,23 +769,20 @@ msgid "" msgstr "" #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Dispositivo de captura de som:" +msgstr "" #: ../gtk/audio_assistant.c:329 -#, fuzzy msgid "Recorded volume" -msgstr "Origem de gravação:" +msgstr "" #: ../gtk/audio_assistant.c:333 msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Dispositivo de som:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -862,14 +821,12 @@ msgid "Record and Play" msgstr "" #: ../gtk/main.ui.h:1 -#, fuzzy msgid "Callee name" -msgstr "Chamada cancelada." +msgstr "" #: ../gtk/main.ui.h:2 -#, fuzzy msgid "Send" -msgstr "Som" +msgstr "" #: ../gtk/main.ui.h:3 msgid "End conference" @@ -892,14 +849,12 @@ msgid "Transfer" msgstr "" #: ../gtk/main.ui.h:14 -#, fuzzy msgid "In call" -msgstr "Camadas recebidas" +msgstr "" #: ../gtk/main.ui.h:15 -#, fuzzy msgid "Duration" -msgstr "Informações" +msgstr "" #: ../gtk/main.ui.h:16 msgid "Call quality rating" @@ -910,9 +865,8 @@ msgid "All users" msgstr "" #: ../gtk/main.ui.h:18 -#, fuzzy msgid "Online users" -msgstr "linha" +msgstr "" #: ../gtk/main.ui.h:19 msgid "ADSL" @@ -923,27 +877,24 @@ msgid "Fiber Channel" msgstr "" #: ../gtk/main.ui.h:21 -#, fuzzy msgid "Default" -msgstr "Identificação SIP:" +msgstr "" #: ../gtk/main.ui.h:22 msgid "_Options" msgstr "" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Configuração de proxy/registrador" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" msgstr "" #: ../gtk/main.ui.h:25 -#, fuzzy msgid "Enable self-view" -msgstr "Ativado" +msgstr "" #: ../gtk/main.ui.h:26 msgid "_Help" @@ -974,66 +925,56 @@ msgid "Initiate a new call" msgstr "" #: ../gtk/main.ui.h:34 -#, fuzzy msgid "Contacts" -msgstr "Contatando " +msgstr "" #: ../gtk/main.ui.h:35 msgid "Search" msgstr "" #: ../gtk/main.ui.h:36 -#, fuzzy msgid "Add contacts from directory" -msgstr "Informação de contato" +msgstr "" #: ../gtk/main.ui.h:37 -#, fuzzy msgid "Add contact" -msgstr "Edicar informação de contato" +msgstr "" #: ../gtk/main.ui.h:38 -#, fuzzy msgid "Recent calls" -msgstr "Camadas recebidas" +msgstr "" #: ../gtk/main.ui.h:39 -#, fuzzy msgid "My current identity:" -msgstr "Identificação SIP:" +msgstr "" #: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 -#, fuzzy msgid "Username" -msgstr "Usuário" +msgstr "" #: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 -#, fuzzy msgid "Password" -msgstr "Senha:" +msgstr "" #: ../gtk/main.ui.h:42 msgid "Internet connection:" msgstr "" #: ../gtk/main.ui.h:43 -#, fuzzy msgid "Automatically log me in" -msgstr "Adquirir automaticamente um nome de servidor válido." +msgstr "" #: ../gtk/main.ui.h:44 ../gtk/password.ui.h:3 msgid "UserID" msgstr "" #: ../gtk/main.ui.h:45 -#, fuzzy msgid "Login information" -msgstr "Informação de contato" +msgstr "" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome !" -msgstr "Contatando " +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" @@ -1068,9 +1009,8 @@ msgid "" msgstr "" #: ../gtk/contact.ui.h:2 -#, fuzzy msgid "SIP Address" -msgstr "Endereço" +msgstr "" #: ../gtk/contact.ui.h:3 msgid "Show this contact presence status" @@ -1081,9 +1021,8 @@ msgid "Allow this contact to see my presence status" msgstr "" #: ../gtk/contact.ui.h:5 -#, fuzzy msgid "Contact information" -msgstr "Informação de contato" +msgstr "" #: ../gtk/log.ui.h:1 msgid "Linphone debug window" @@ -1094,36 +1033,32 @@ msgid "Scroll to end" msgstr "" #: ../gtk/password.ui.h:1 -#, fuzzy msgid "Linphone - Authentication required" -msgstr "Autenticação requerida" +msgstr "" #: ../gtk/password.ui.h:2 msgid "Please enter the domain password" msgstr "" #: ../gtk/call_logs.ui.h:1 -#, fuzzy msgid "Call history" -msgstr "Linphone - Histórico de chamadas" +msgstr "" #: ../gtk/call_logs.ui.h:2 msgid "Clear all" msgstr "" #: ../gtk/call_logs.ui.h:3 -#, fuzzy msgid "Call back" -msgstr "Histórico de chamadas" +msgstr "" #: ../gtk/sip_account.ui.h:1 msgid "Linphone - Configure a SIP account" msgstr "" #: ../gtk/sip_account.ui.h:2 -#, fuzzy msgid "Your SIP identity:" -msgstr "Identificação SIP:" +msgstr "" #: ../gtk/sip_account.ui.h:3 msgid "Looks like sip:@" @@ -1134,23 +1069,20 @@ msgid "sip:" msgstr "" #: ../gtk/sip_account.ui.h:5 -#, fuzzy msgid "SIP Proxy address:" -msgstr "Proxy SIP:" +msgstr "" #: ../gtk/sip_account.ui.h:6 msgid "Looks like sip:" msgstr "" #: ../gtk/sip_account.ui.h:7 -#, fuzzy msgid "Registration duration (sec):" -msgstr "Período do registo:" +msgstr "" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "Rota (opcional):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1161,23 +1093,20 @@ msgid "Route (optional):" msgstr "Rota (opcional):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Contatando " +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" msgstr "" #: ../gtk/sip_account.ui.h:13 -#, fuzzy msgid "Publish presence information" -msgstr "Informar informação de presença" +msgstr "" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Ativado" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1212,14 +1141,12 @@ msgid "CIF" msgstr "" #: ../gtk/parameters.ui.h:8 -#, fuzzy msgid "Audio codecs" -msgstr "Codec's de áudio" +msgstr "" #: ../gtk/parameters.ui.h:9 -#, fuzzy msgid "Video codecs" -msgstr "Codec's de áudio" +msgstr "" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" @@ -1254,9 +1181,8 @@ msgid "Use IPv6 instead of IPv4" msgstr "" #: ../gtk/parameters.ui.h:18 -#, fuzzy msgid "Transport" -msgstr "Contatando " +msgstr "" #: ../gtk/parameters.ui.h:19 msgid "Media encryption type" @@ -1287,14 +1213,12 @@ msgid "DSCP fields" msgstr "" #: ../gtk/parameters.ui.h:26 -#, fuzzy msgid "SIP/TCP port" -msgstr "Porta SIP" +msgstr "" #: ../gtk/parameters.ui.h:27 -#, fuzzy msgid "SIP/UDP port" -msgstr "Porta SIP" +msgstr "" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1321,76 +1245,64 @@ msgid "Behind NAT / Firewall (use uPnP)" msgstr "" #: ../gtk/parameters.ui.h:34 -#, fuzzy msgid "Public IP address:" -msgstr "Endereço sip:" +msgstr "" #: ../gtk/parameters.ui.h:35 -#, fuzzy msgid "Stun server:" -msgstr "Dispositivo de som" +msgstr "" #: ../gtk/parameters.ui.h:36 -#, fuzzy msgid "NAT and Firewall" -msgstr "Contatando " +msgstr "" #: ../gtk/parameters.ui.h:37 -#, fuzzy msgid "Network settings" -msgstr "Rede" +msgstr "" #: ../gtk/parameters.ui.h:38 -#, fuzzy msgid "Ring sound:" -msgstr "Som do toque:" +msgstr "" #: ../gtk/parameters.ui.h:39 msgid "ALSA special device (optional):" msgstr "" #: ../gtk/parameters.ui.h:40 -#, fuzzy msgid "Capture device:" -msgstr "Dispositivo de captura de som:" +msgstr "" #: ../gtk/parameters.ui.h:41 -#, fuzzy msgid "Ring device:" -msgstr "Dispositivo de som" +msgstr "" #: ../gtk/parameters.ui.h:42 -#, fuzzy msgid "Playback device:" -msgstr "Dispositivo de som:" +msgstr "" #: ../gtk/parameters.ui.h:43 msgid "Enable echo cancellation" msgstr "" #: ../gtk/parameters.ui.h:44 -#, fuzzy msgid "Audio" -msgstr "Contatando " +msgstr "" #: ../gtk/parameters.ui.h:45 -#, fuzzy msgid "Video input device:" -msgstr "Dispositivo de som" +msgstr "" #: ../gtk/parameters.ui.h:46 msgid "Prefered video resolution:" msgstr "" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Dispositivo de som" +msgstr "" #: ../gtk/parameters.ui.h:48 -#, fuzzy msgid "Video" -msgstr "Contatando " +msgstr "" #: ../gtk/parameters.ui.h:49 msgid "Multimedia settings" @@ -1405,28 +1317,24 @@ msgid "Your display name (eg: John Doe):" msgstr "" #: ../gtk/parameters.ui.h:52 -#, fuzzy msgid "Your username:" -msgstr "Usuário" +msgstr "" #: ../gtk/parameters.ui.h:53 -#, fuzzy msgid "Your resulting SIP address:" -msgstr "Seu endereço SIP:" +msgstr "" #: ../gtk/parameters.ui.h:54 -#, fuzzy msgid "Default identity" -msgstr "Identificação SIP:" +msgstr "" #: ../gtk/parameters.ui.h:55 msgid "Wizard" msgstr "" #: ../gtk/parameters.ui.h:56 -#, fuzzy msgid "Add" -msgstr "Endereço" +msgstr "" #: ../gtk/parameters.ui.h:57 msgid "Edit" @@ -1437,18 +1345,16 @@ msgid "Remove" msgstr "Remover" #: ../gtk/parameters.ui.h:59 -#, fuzzy msgid "Proxy accounts" -msgstr "Contatando " +msgstr "" #: ../gtk/parameters.ui.h:60 msgid "Erase all passwords" msgstr "" #: ../gtk/parameters.ui.h:61 -#, fuzzy msgid "Privacy" -msgstr "Contatando " +msgstr "" #: ../gtk/parameters.ui.h:62 msgid "Manage SIP Accounts" @@ -1463,9 +1369,8 @@ msgid "Disable" msgstr "Desativar" #: ../gtk/parameters.ui.h:65 -#, fuzzy msgid "Codecs" -msgstr "Contatando " +msgstr "" #: ../gtk/parameters.ui.h:66 msgid "0 stands for \"unlimited\"" @@ -1494,70 +1399,60 @@ msgid "Bandwidth control" msgstr "" #: ../gtk/parameters.ui.h:72 -#, fuzzy msgid "Codecs" -msgstr "Codec's de áudio" +msgstr "" #: ../gtk/parameters.ui.h:73 -#, fuzzy msgid "Language" -msgstr "Contatando " +msgstr "" #: ../gtk/parameters.ui.h:74 msgid "Show advanced settings" msgstr "" #: ../gtk/parameters.ui.h:75 -#, fuzzy msgid "Level" -msgstr "Contatando " +msgstr "" #: ../gtk/parameters.ui.h:76 -#, fuzzy msgid "User interface" -msgstr "Usuário" +msgstr "" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "Endereço do servidor" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Informações de autenticação" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Contatando " +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" msgstr "" #: ../gtk/parameters.ui.h:83 -#, fuzzy msgid "Done" -msgstr "Nenhum" +msgstr "" #: ../gtk/buddylookup.ui.h:1 -#, fuzzy msgid "Search contacts in directory" -msgstr "Informação de contato" +msgstr "" #: ../gtk/buddylookup.ui.h:2 msgid "Add to my list" msgstr "" #: ../gtk/buddylookup.ui.h:3 -#, fuzzy msgid "Search somebody" -msgstr "Contatando " +msgstr "" #: ../gtk/waiting.ui.h:1 msgid "Linphone" @@ -1568,9 +1463,8 @@ msgid "Please wait" msgstr "" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "Rede" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1589,19 +1483,16 @@ msgid "Set DSCP values (in hexadecimal)" msgstr "" #: ../gtk/call_statistics.ui.h:1 -#, fuzzy msgid "Call statistics" -msgstr "Histórico de chamadas" +msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" -msgstr "Codec's de áudio" +msgstr "" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" -msgstr "Codec's de áudio" +msgstr "" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1620,9 +1511,8 @@ msgid "Video Media connectivity" msgstr "" #: ../gtk/call_statistics.ui.h:8 -#, fuzzy msgid "Round trip time" -msgstr "Propriedades de som" +msgstr "" #: ../gtk/call_statistics.ui.h:9 msgid "Video resolution received" @@ -1637,9 +1527,8 @@ msgid "RTP profile" msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "Informação de contato" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 msgid "Configure VoIP tunnel" @@ -1722,23 +1611,20 @@ msgid "1" msgstr "" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Rede" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" msgstr "" #: ../gtk/ldap.ui.h:7 -#, fuzzy msgid "Not yet available" -msgstr "Informações não disponíveis" +msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Contatando " +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1753,9 +1639,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Contatando " +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1771,18 +1656,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "Endereço" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Contatando " +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1797,9 +1680,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Contatando " +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1823,11 +1705,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1835,93 +1714,85 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "Contatando " +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 -#, fuzzy +#: ../coreapi/linphonecore.c:1511 msgid "Ready" -msgstr "Pronto." +msgstr "" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Informações" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Procurando por telefone de destino..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "Não foi possível encontrar este número." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 -#, fuzzy +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" -msgstr "Contatando " +msgstr "" -#: ../coreapi/linphonecore.c:2425 -#, fuzzy +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" -msgstr "Não é possível achar arquivo pixmap: %s" +msgstr "" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:2745 -#, fuzzy +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" -msgstr "está chamado você." +msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "" -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Conectado." -#: ../coreapi/linphonecore.c:3220 -#, fuzzy +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" -msgstr "Abortado" +msgstr "" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "" -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" #: ../coreapi/friend.c:33 -#, fuzzy msgid "Online" -msgstr "linha" +msgstr "" #: ../coreapi/friend.c:36 msgid "Busy" @@ -1956,484 +1827,155 @@ msgid "Using another messaging service" msgstr "" #: ../coreapi/friend.c:60 -#, fuzzy msgid "Offline" -msgstr "linha" +msgstr "" #: ../coreapi/friend.c:63 msgid "Pending" msgstr "" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Informações" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 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:1369 -#, fuzzy, c-format +#: ../coreapi/proxy.c:1377 +#, c-format msgid "Could not login as %s" -msgstr "Não é possível achar arquivo pixmap: %s" +msgstr "" -#: ../coreapi/callbacks.c:355 -#, fuzzy +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." -msgstr "Serviços remotos" +msgstr "" -#: ../coreapi/callbacks.c:373 -#, fuzzy +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." -msgstr "Serviços remotos" +msgstr "" -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:435 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:475 +#, c-format msgid "Call with %s is paused." -msgstr "Bate-papo com %s" +msgstr "" -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:459 -#, fuzzy +#: ../coreapi/callbacks.c:498 msgid "Call resumed." -msgstr "Chamada cancelada." +msgstr "" -#: ../coreapi/callbacks.c:464 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:502 +#, c-format msgid "Call answered by %s." msgstr "" -"Ligar ou\n" -"atender" -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "" -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "" -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Usuário está ocupado." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "Usuário está temporáriamente indisponível." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "" -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "" -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 -#, fuzzy +#: ../coreapi/callbacks.c:780 msgid "Redirected" -msgstr "Redirecionado para %s..." - -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:798 -#, fuzzy +#: ../coreapi/callbacks.c:835 msgid "Call failed." -msgstr "Histórico de chamadas" +msgstr "" -#: ../coreapi/callbacks.c:878 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:913 +#, c-format msgid "Registration on %s successful." -msgstr "Registro em %s efetuado." +msgstr "" -#: ../coreapi/callbacks.c:879 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:914 +#, c-format msgid "Unregistration on %s done." -msgstr "Registro em %s efetuado." +msgstr "" -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:900 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:935 +#, c-format msgid "Registration on %s failed: %s" -msgstr "Registro falhou (tempo esgotado)." +msgstr "" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:174 +#, c-format msgid "Authentication token is %s" -msgstr "Informações de autenticação" +msgstr "" -#: ../coreapi/linphonecall.c:2932 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:3020 +#, 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)." - -#~ msgid "aborted" -#~ msgstr "Abortado" - -#~ msgid "completed" -#~ msgstr "Competado" - -#~ msgid "missed" -#~ msgstr "Perdido" - -#, fuzzy -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s em %sDe: %s\n" -#~ "Para: %s\n" -#~ "Status: %s\n" -#~ "Duração: %i min %i seg\n" - -#~ msgid "Outgoing call" -#~ msgstr "Chamadas efetuadas" - -#~ msgid "Chat with %s" -#~ msgstr "Bate-papo com %s" - -#, fuzzy -#~ msgid "Choosing a username" -#~ msgstr "Usuário" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "Ativado" - -#, fuzzy -#~ msgid "Contact list" -#~ 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." - -#~ msgid "" -#~ "Your machine appears to be connected to an IPv6 network. By default " -#~ "linphone always uses IPv4. Please update your configuration if you want " -#~ "to use IPv6" -#~ msgstr "" -#~ "Sua máquina aparentemente está conectada em uma rede IPv6. Por padrão o " -#~ "linphone sempre usa IPv4. Por favor atualize sua configuração se deseja " -#~ "usar IPv6" - -#~ msgid "Accept" -#~ msgstr "Aceitar" - -#, fuzzy -#~ msgid "Incoming call from" -#~ msgstr "Camadas recebidas" - -#, fuzzy -#~ msgid "Linphone - Incoming call" -#~ msgstr "Camadas recebidas" - -#~ msgid "Could not reach destination." -#~ msgstr "Não foi possível alcançar o detino." - -#~ msgid "Request Cancelled." -#~ msgstr "Pedido cancelado." - -#~ msgid "User cannot be found at given address." -#~ msgstr "Usuário não pode ser encontrado no endereço especificado." - -#~ msgid "Timeout." -#~ msgstr "Tempo esgotado." - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "Servidor de destino encontrado, porém recusou a conexão." - -#, fuzzy -#~ msgid "Gone" -#~ msgstr "Nenhum" - -#, fuzzy -#~ msgid "_Properties" -#~ msgstr "Propriedades RTP:" - -#, fuzzy -#~ msgid "Show logs" -#~ msgstr "Exibir chamadas" - -#, fuzzy -#~ msgid "_About" -#~ msgstr "Aceitar" - -#, fuzzy -#~ msgid "Proxy in use" -#~ msgstr "Proxy à usar:" - -#~ msgid "Sound" -#~ msgstr "Som" - -#, fuzzy -#~ msgid "Proxy accounts" -#~ msgstr "Proxy à usar:" - -#~ msgid "Go" -#~ msgstr "Ir" - -#, fuzzy -#~ msgid "Exit" -#~ msgstr "Editar" - -#~ msgid "Shows the address book" -#~ msgstr "Exibe o catálogo de endereços" - -#~ msgid "" -#~ "Hangup\n" -#~ "or refuse" -#~ msgstr "" -#~ "Desligar\n" -#~ "ou recusar" - -#~ msgid "Or chat !" -#~ msgstr "Ou bate-papo!" - -#~ msgid "Show more..." -#~ msgstr "Exibir mais..." - -#~ msgid "Playback level:" -#~ msgstr "Volume do auto-falante:" - -#~ msgid "Recording level:" -#~ msgstr "Volume do microfone:" - -#, fuzzy -#~ msgid "Ring level:" -#~ msgstr "Volume do microfone:" - -#~ msgid "Busy, I'll be back in " -#~ msgstr "Ocupado, volto em " - -#~ msgid "mn" -#~ msgstr "min" - -#~ msgid "Moved temporarily" -#~ msgstr "Movido temporáriamente" - -#~ msgid "Alternative service" -#~ msgstr "Serviço alternativo" - -#~ msgid "Presence" -#~ msgstr "Presença" - -#~ msgid "My online friends" -#~ msgstr "Meus amigos online" - -#~ msgid "" -#~ "Linphone is a web-phone.\n" -#~ "It is compatible with SIP and RTP protocols." -#~ msgstr "" -#~ "Linphone é um web-fone.\n" -#~ "Ele é compatível com os protocolos SIP e RTP." - -#~ msgid "Use IPv6 network (if available)" -#~ msgstr "Usar rede IPv6 (se disponível)" - -#~ msgid "" -#~ "Toggle this if you are on an ipv6 network and you wish linphone to use it." -#~ msgstr "" -#~ "Marque isto se você estiver em uma rede IPv6, e deseja que o linphone " -#~ "este protocolo." - -#, fuzzy -#~ msgid "" -#~ "These options is only for users in a private network, behind a gateway. " -#~ "If you are not in this situation, then leave this empty." -#~ msgstr "" -#~ "Esta opção é somente para usuários de uma rede privada, atrás de um " -#~ "gateway. Se você não está nesta situação, deixe isto em braco." - -#~ msgid "NAT traversal options (experimental)" -#~ msgstr "Opções de NAT(Experimental)" - -#~ msgid "Number of buffered miliseconds (jitter compensation):" -#~ msgstr "Número de segundos em bueffer:" - -#~ msgid "RTP port used for audio:" -#~ msgstr "Porta RTP usada para audio:" - -#~ msgid "Use SIP INFO message instead of RTP rfc2833 for DTMF transmitting" -#~ msgstr "" -#~ "Usar mensagem SIP INFO em vez de RTP rfc2833 para transmissão de DTMF" - -#~ msgid "RTP-RFC2833 is the recommended way." -#~ msgstr "RTP-RFC2833 é a maneira recomendada." - -#~ msgid "Other" -#~ msgstr "Outro" - -#~ msgid "micro" -#~ msgstr "microfone" - -#~ msgid "Listen" -#~ msgstr "Escutar" - -#~ msgid "Run sip user agent on port:" -#~ msgstr "Executar agente sip na porta:" - -#~ msgid "It is strongly recommended to use port 5060." -#~ msgstr "É altamente recomendavel usar a porta 5060." - -#~ msgid "Identity" -#~ msgstr "Identificação" - -#~ msgid "Add proxy/registrar" -#~ msgstr "Adicionar proxy/registrador" - -#~ msgid "Clear all stored authentication information (username,password...)" -#~ msgstr "" -#~ "Limpar todas as informações de autenticação (nomes de usuário, senha...)" - -#~ msgid "List of audio codecs, in order of preference:" -#~ msgstr "Lista de codecs de audio, em ordem de preferência:" - -#~ msgid "Codec information" -#~ msgstr "Informações sobre o codec" - -#~ msgid "Address Book" -#~ msgstr "Catálogo de endereços" - -#~ msgid "Select" -#~ msgstr "Selecionar" - -#~ msgid "None." -#~ msgstr "Nenhum" - -#~ msgid "Send registration:" -#~ msgstr "Enviar registro:" - -#~ msgid "Name:" -#~ msgstr "Nome:" - -#~ msgid "Refuse" -#~ msgstr "Recusar" - -#~ msgid "userid:" -#~ msgstr "Identificação:" - -#~ msgid "Text:" -#~ msgstr "Texto:" - -#~ msgid "linphone - receiving call from %s" -#~ msgstr "Linphone - Recebendo chamada de %s" - -#~ msgid "User manual" -#~ msgstr "Manual do usuário" - -#~ msgid "Ring sound selection" -#~ msgstr "Seleção de toque" - -#~ msgid "Communication ended." -#~ msgstr "Comunicação encerrada." - -#~ msgid "Firewall 's external ip address (in dot notations):" -#~ msgstr "Endereço externo do firewall:" - -#~ msgid "Index" -#~ msgstr "Índice" - -#~ msgid "28k modem" -#~ msgstr "Modem 28k" - -#~ msgid "56k modem" -#~ msgstr "Modem 56l" - -#~ msgid "64k modem (numeris)" -#~ msgstr "Modem 64k" - -#~ msgid "ADSL or Cable modem" -#~ msgstr "ADSL ou Cable modem" - -#~ msgid "Ethernet or equivalent" -#~ msgstr "Ethernet ou equivalente" - -#~ msgid "Connection type:" -#~ msgstr "Tipo de conexão:" - -#~ msgid "" -#~ "Linphone could not open audio device %s. Check if your sound card is " -#~ "fully configured and working." -#~ msgstr "" -#~ "Linphone não pode abrir dispositivo de áudio %s. Verifique se sua placa " -#~ "de som está configurada e funcionando." - -#~ msgid "Type here the sip address of the person you want to call." -#~ msgstr "Escreva aqui o endereço sip da pessoa que você quer ligar." +msgstr[0] "" +msgstr[1] "" diff --git a/po/ru.po b/po/ru.po index 6e916a63c..50023c1f8 100644 --- a/po/ru.po +++ b/po/ru.po @@ -1,23 +1,24 @@ -# SIP Telephony Application. -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# Simon Morlat , 2001. -# Maxim Prokopyev , 2010. -# Alexey Loginov , 2014. -# +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# a , 2014 +# Maxim Prokopyev , 2010 +# Simon Morlat , 2001 msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2014-09-10 01:32+0300\n" -"Last-Translator: AlexL \n" -"Language-Team: Russian \n" -"Language: ru\n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:13+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Russian (http://www.transifex.com/projects/p/linphone-gtk/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Language: ru\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -76,18 +77,14 @@ msgstr "%s\t%s" msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "" -"%s\tКачество: %s\n" -"%s\t%s\t" +msgstr "%s\tКачество: %s\n%s\t%s\t" #: ../gtk/calllogs.c:343 #, c-format msgid "" "%s\t\n" "%s" -msgstr "" -"%s\t\n" -"%s" +msgstr "%s\t\n%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -108,9 +105,7 @@ msgstr "Неверный sip контакт!" #: ../gtk/main.c:107 msgid "log to stdout some debug information while running." -msgstr "" -"Вывод некоторой отладочной информации на устройство стандартного вывода во " -"время работы." +msgstr "Вывод некоторой отладочной информации на устройство стандартного вывода во время работы." #: ../gtk/main.c:114 msgid "path to a file to write logs into." @@ -134,11 +129,9 @@ msgstr "Если установлено, то автоматический пр #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" -"Определить рабочий каталог (относительно каталога установки, например: c:" -"\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +msgstr "Определить рабочий каталог (относительно каталога установки, например: c:\\Program Files\\Linphone)" #: ../gtk/main.c:156 msgid "Configuration file" @@ -148,94 +141,80 @@ msgstr "Файл конфигурации" msgid "Run the audio assistant" msgstr "Запустить помощника аудио" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "Звонок с %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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" -"Если вы ответите Нет, эта персона будет временно в чёрном списке." +msgstr "%s вы бы хотели быть добавленным в этот контактный лист.\nВы разрешаете ему(ей) видеть ваш статус присутствия или добавить в контактный лист?\nЕсли вы ответите Нет, эта персона будет временно в чёрном списке." -#: ../gtk/main.c:1260 +#: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "" -"Пожалуйста, введите пароль для пользователя %s\n" -" для реалм (рилм) %s:" +msgstr "Пожалуйста, введите пароль для пользователя %s\n для реалм (рилм) %s:" -#: ../gtk/main.c:1376 +#: ../gtk/main.c:1283 msgid "Call error" msgstr "Ошибка звонка" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "Звонок окончен" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Входящий звонок" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Ответ" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Отклонить" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 msgid "Call paused" msgstr "Звонок приостановлен" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 #, c-format msgid "by %s" msgstr "%s" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s предложил запустить видео. Вы принимаете?" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "Домашняя страница" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Linphone - интернет видео телефон" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (по умолчанию)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "Мы передали в %s" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"Звуковые карты не были обнаружены на этом компьютере.\n" -"Вы не сможете отправлять или получать аудио звонки." +msgstr "Звуковые карты не были обнаружены на этом компьютере.\nВы не сможете отправлять или получать аудио звонки." -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "Свободный SIP видео-телефон" @@ -312,94 +291,92 @@ msgstr "Не разрешён" msgid "Account" msgstr "Учётная запись" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "Английский" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "Французский" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "Шведский" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "Итальянский" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "Испанский" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "Бразильский португальский" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "Польский" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "Немецкий" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "Русский" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "Японский" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "Датский" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "Венгерский" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "Чешский" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "Китайский" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "Традиционный китайский" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "Норвежский" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "Иврит" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "Сербский" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." -msgstr "" -"Вы должны перезагрузить linphone для того, чтобы языковые настройки вступили " -"в силу." +msgstr "Вы должны перезагрузить linphone для того, чтобы языковые настройки вступили в силу." -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "Нет" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "ZRTP" @@ -408,9 +385,7 @@ msgstr "ZRTP" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"Доступна новая версия с %s.\n" -"Открыть браузер для загрузки?" +msgstr "Доступна новая версия с %s.\nОткрыть браузер для загрузки?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -448,9 +423,7 @@ msgstr[2] "Найдено %i контактов" msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"Добро пожаловать!\n" -"Этот помощник поможет вам использовать учётную запись SIP для ваших звонков." +msgstr "Добро пожаловать!\nЭтот помощник поможет вам использовать учётную запись SIP для ваших звонков." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -458,8 +431,7 @@ msgstr "Создать учётную запись на linphone.org" #: ../gtk/setupwizard.c:44 msgid "I have already a linphone.org account and I just want to use it" -msgstr "" -"Я уже имею учётную запись на linphone.org и только хочу использовать её" +msgstr "Я уже имею учётную запись на linphone.org и только хочу использовать её" #: ../gtk/setupwizard.c:45 msgid "I have already a sip account and I just want to use it" @@ -529,10 +501,7 @@ msgstr "Информировать об обновлениях linphone" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "" -"Ошибка, учётная запись не подтверждена, имя пользователя уже используется " -"или\n" -"сервер недоступен. Пожалуйста, зайдите снова и попробуйте ещё раз." +msgstr "Ошибка, учётная запись не подтверждена, имя пользователя уже используется или\nсервер недоступен. Пожалуйста, зайдите снова и попробуйте ещё раз." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -540,14 +509,9 @@ msgstr "Спасибо! Учётная запись успешно настро #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." -msgstr "" -"Пожалуйста, подтвердите вашу учётную запись, щёлкнув на ссылку, которую вы " -"только\n" -"что получили по электронной почте. Затем вернитесь сюда и нажмите кнопку " -"Далее." +msgstr "Пожалуйста, подтвердите вашу учётную запись, щёлкнув на ссылку, которую вы только\nчто получили по электронной почте. Затем вернитесь сюда и нажмите кнопку Далее." #: ../gtk/setupwizard.c:600 msgid "SIP account configuration assistant" @@ -652,9 +616,7 @@ msgstr "Напрямую или через сервер" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "" -"загрузка: %f\n" -"отдача: %f (КБит/сек)" +msgstr "загрузка: %f\nотдача: %f (КБит/сек)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -670,110 +632,108 @@ msgstr "%.3f секунд" msgid "Hang up" msgstr "Повесить трубку" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "Звоним..." -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "00::00::00" -#: ../gtk/incall_view.c:515 +#: ../gtk/incall_view.c:525 msgid "Incoming call" msgstr "Входящий звонок" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "хороший" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "средний" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "плохой" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "очень плохой" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "совсем плохой" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "недоступен" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "Защищённые с помощью SRTP" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Защищённые с помощью ZRTP - [знак аутентификации: %s]" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "Установить непроверенный" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Установить проверенный" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "В конференции" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In call" msgstr "Звоним" -#: ../gtk/incall_view.c:738 +#: ../gtk/incall_view.c:758 msgid "Paused call" msgstr "Звонок приостановлен" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "%02i::%02i::%02i" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Звонок закончен." -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "Передача в прогрессе" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "Передача завершена." -#: ../gtk/incall_view.c:809 +#: ../gtk/incall_view.c:831 msgid "Transfer failed." msgstr "Передача неудачна." -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "Продолжить" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Пауза" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" -msgstr "" -"Записывается в\n" -"%s %s" +msgstr "Записывается в\n%s %s" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "(Пауза)" @@ -812,9 +772,7 @@ msgstr "Слишком громко" msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" -msgstr "" -"Добро пожаловать!\n" -"Этот помощник поможет вам сконфигурировать настройки аудио для linphone" +msgstr "Добро пожаловать!\nЭтот помощник поможет вам сконфигурировать настройки аудио для linphone" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -1054,19 +1012,7 @@ msgid "" "cs: Petr Pisar \n" "hu: anonymous\n" "he: Eli Zaretskii \n" -msgstr "" -"fr: Simon Morlat\n" -"en: Simon Morlat and Delphine Perreau\n" -"it: Alberto Zanoni \n" -"de: Jean-Jacques Sarton \n" -"sv: Daniel Nylander \n" -"es: Jesus Benitez \n" -"ja: YAMAGUCHI YOSHIYA \n" -"pt_BR: Rafael Caesar Lenzi \n" -"pl: Robert Nasiadek \n" -"cs: Petr Pisar \n" -"hu: anonymous\n" -"he: Eli Zaretskii \n" +msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1370,9 +1316,7 @@ msgstr "Настройки мультимедиа" #: ../gtk/parameters.ui.h:50 msgid "This section defines your SIP address when not using a SIP account" -msgstr "" -"Эта секция определяет ваш SIP адрес, когда вы не используете учётную запись " -"SIP" +msgstr "Эта секция определяет ваш SIP адрес, когда вы не используете учётную запись SIP" #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" @@ -1454,9 +1398,7 @@ msgstr "Разрешить адаптивное управление скоро msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "" -"Адаптивное управление скоростью - это технология динамического угадывания " -"доступной пропускной способности во время звонка." +msgstr "Адаптивное управление скоростью - это технология динамического угадывания доступной пропускной способности во время звонка." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1769,17 +1711,9 @@ msgstr "Указание удалённой конфигурации URI" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " -msgstr "" -"Этот диалог позволяет установить HTTP или HTTPS адрес, когда конфигурация " -"будет получена при запуске.\n" -"Пожалуйста, введите или измените настройки URI ниже. После нажатия OK " -"linphone автоматически перезагрузится чтобы получить и учесть новую " -"конфигурацию в учётной записи." +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " +msgstr "Этот диалог позволяет установить HTTP или HTTPS адрес, когда конфигурация будет получена при запуске.\nПожалуйста, введите или измените настройки URI ниже. После нажатия OK linphone автоматически перезагрузится чтобы получить и учесть новую конфигурацию в учётной записи." #: ../gtk/config-uri.ui.h:4 msgid "https://" @@ -1793,73 +1727,72 @@ msgstr "Конфигурирование..." msgid "Please wait while fetching configuration from server..." msgstr "Пожалуйста, подождите пока получается конфигурация с сервера..." -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "Готов" -#: ../coreapi/linphonecore.c:1967 +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" msgstr "Конфигурирование" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Поиск назначения для телефонного номера.." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "Не получилось принять решение по этому номеру." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "Соединение" -#: ../coreapi/linphonecore.c:2425 +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" msgstr "Невозможно позвонить" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" -msgstr "" -"К сожалению, мы достигли максимального количества одновременных звонков" +msgstr "К сожалению, мы достигли максимального количества одновременных звонков" -#: ../coreapi/linphonecore.c:2745 +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" msgstr "контактирует с вами" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "и спросил автоматический ответ." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "." -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "Изменение параметров звонка..." -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Соединён." -#: ../coreapi/linphonecore.c:3220 +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" msgstr "Звонок отменён" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "Невозможно приостановить звонок" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "Приостановка текущего звонка..." -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "Идет поиск STUN..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "Сбор локальных кандидатов ICE в прогрессе..." @@ -1915,332 +1848,141 @@ msgstr "Отдых" msgid "Unknown-bug" msgstr "Неизвестная ошибка" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"Введённый SIP-адрес прокси является недействительным, он должен начинаться с " -"\"sip:имя_хоста\"" +msgstr "Введённый SIP-адрес прокси является недействительным, он должен начинаться с \"sip:имя_хоста\"" -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"Неверные параметры для sip идентификации\n" -"Должно выглядеть как sip:имя_пользователя@домен_прокси, как например, sip:" -"alice@example.net" +msgstr "Неверные параметры для sip идентификации\nДолжно выглядеть как sip:имя_пользователя@домен_прокси, как например, sip:alice@example.net" -#: ../coreapi/proxy.c:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "Невозможно зайти как: %s" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "Дистанционный звонок." -#: ../coreapi/callbacks.c:373 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." msgstr "Дистанционный звонок..." -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "Предответное проключение." -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "Звонок с %s приостановлен." -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "На звонок ответил %s - на удержании." -#: ../coreapi/callbacks.c:459 +#: ../coreapi/callbacks.c:498 msgid "Call resumed." msgstr "Звонок возобновлён." -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "На звонок ответил %s." -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "Несовместимость, проверьте кодеки или параметры безопасности..." -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "Несовместимость медиа-параметров." + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "Мы возобновили." -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "Мы приостановлены другой стороной." -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "Звонок был дистанционно обновлён." -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "Звонок прерван." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Пользователь занят." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "Пользователь временно недоступен." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "Пользователь не хочет чтобы его беспокоили." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Звонок отклонён." -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "Таймаут запроса." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "Переадресован" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." -msgstr "Несовместимость медиа-параметров." - -#: ../coreapi/callbacks.c:798 +#: ../coreapi/callbacks.c:835 msgid "Call failed." msgstr "Звонок не удался." -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "Регистрация на %s прошла успешно." -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "Отмена регистрации на %s завершена." -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "время ожидания истекло" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "Регистрация на %s не удалась: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "Сервис недоступен, повтор" -#: ../coreapi/linphonecall.c:177 +#: ../coreapi/linphonecall.c:174 #, c-format msgid "Authentication token is %s" msgstr "Маркер проверки подлинности: %s" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "У вас %i пропущенный вызов." msgstr[1] "У вас %i пропущенных вызова." msgstr[2] "У вас %i пропущенных вызов." - -#~ msgid "" -#~ "%s\t%s\tQuality: %s\n" -#~ "%s\t%s %s\t" -#~ msgstr "" -#~ "%s\t%s\tКачество: %s\n" -#~ "%s\t%s %s\t" - -#~ msgid "Chat with %s" -#~ msgstr "Чат с %s" - -#~ msgid "" -#~ "Please enter your password for username %s\n" -#~ " at domain %s:" -#~ msgstr "" -#~ "Пожалуйста, введите пароль для пользователя %s\n" -#~ " для домена %s:" - -#~ msgid "by %s" -#~ msgstr "by %s" - -#~ msgid "Min bitrate (kbit/s)" -#~ msgstr "Минимальный битрейт (КБит/сек)" - -#~ msgid "Enable video" -#~ msgstr "Разрешить видео" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "Введите имя пользователя, номер телефона или полный sip адрес" - -#~ msgid "Lookup:" -#~ msgstr "Поиск:" - -#~ msgid "in" -#~ msgstr "в" - -#~ msgid "Keypad" -#~ msgstr "Клавиатура" - -#~ msgid "" -#~ "fr: Simon Morlat\n" -#~ "en: Simon Morlat and Delphine Perreau\n" -#~ "it: Alberto Zanoni \n" -#~ "de: Jean-Jacques Sarton \n" -#~ "sv: Daniel Nylander \n" -#~ "es: Jesus Benitez \n" -#~ "ja: YAMAGUCHI YOSHIYA \n" -#~ "pt_BR: Rafael Caesar Lenzi \n" -#~ "pl: Robert Nasiadek \n" -#~ "cs: Petr Pisar \n" -#~ "hu: anonymous\n" -#~ msgstr "" -#~ "fr: Simon Morlat\n" -#~ "en: Simon Morlat and Delphine Perreau\n" -#~ "it: Alberto Zanoni \n" -#~ "de: Jean-Jacques Sarton \n" -#~ "sv: Daniel Nylander \n" -#~ "es: Jesus Benitez \n" -#~ "ja: YAMAGUCHI YOSHIYA \n" -#~ "pt_BR: Rafael Caesar Lenzi \n" -#~ "pl: Robert Nasiadek \n" -#~ "cs: Petr Pisar \n" -#~ "hu: anonymous\n" - -#~ msgid "edit" -#~ msgstr "править" - -#~ msgid "Behind NAT / Firewall (specify gateway IP below)" -#~ msgstr "За NAT / брандмауэром (указать IP шлюза ниже)" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "Регистрация в \n" -#~ "виртуальной сети FONICS!" - -#~ msgid "aborted" -#~ msgstr "прервано" - -#~ msgid "completed" -#~ msgstr "завершён" - -#~ msgid "missed" -#~ msgstr "пропущено" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s в %s\n" -#~ "От: %s\n" -#~ "Кому: %s\n" -#~ "Статус: %s\n" -#~ "Длительность: %i мин. %i сек.\n" - -#~ msgid "Outgoing call" -#~ msgstr "Исходящий звонок" - -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "Не могу опознать sip адрес. Url для sip обычно выглядит как sip:" -#~ "пользователь@домен" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Ваш компьютер использует ALSA звуковые драйвера.\n" -#~ "Это лучший выбор. Однако, pcm oss модуль эмуляции\n" -#~ "не найден, а он нужен для linphone.\n" -#~ "Пожалуйста, выполните от пользователя root команду 'modprobe snd-pcm-oss' " -#~ "чтобы загрузить его." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Ваш компьютер использует ALSA звуковые драйвера.\n" -#~ "Это лучший выбор. Однако, mixer oss модуль эмуляции\n" -#~ "не найден, а он нужен для linphone.\n" -#~ "Пожалуйста, выполните от пользователя root команду 'modprobe snd-pcm-oss' " -#~ "чтобы загрузить его." - -#~ msgid "Incompatible, check codecs..." -#~ msgstr "Несовместимость, проверьте кодеки..." - -#~ msgid "We are being paused..." -#~ msgstr "Мы приостанавливаемся..." - -#~ msgid "We have been resumed..." -#~ msgstr "Мы возобновили..." - -#~ msgid "Call has been updated by remote..." -#~ msgstr "Звонок был дистанционно обновлён..." - -#~ msgid "No response." -#~ msgstr "Нет ответа." - -#~ msgid "Protocol error." -#~ msgstr "Ошибка протокола." - -#~ msgid "No common codecs" -#~ msgstr "Нет общих кодеков" - -#~ msgid "Authentication failure" -#~ msgstr "Неудача аутентификации" - -#~ msgid "Please choose a username:" -#~ msgstr "Пожалуйста, выберите имя пользователя:" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "Проверка доступности для '%s'" - -#~ msgid "Please wait..." -#~ msgstr "Пожалуйста, подождите..." - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "" -#~ "Такое имя пользователя уже существует. Пожалуйста, попробуйте с другим " -#~ "именем." - -#~ msgid "Ok !" -#~ msgstr "ОК!" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "Проблемы со связью, пожалуйста, повторите попытку позже." - -#~ msgid "Choosing a username" -#~ msgstr "Выбор имени пользователя" - -#~ msgid "Verifying" -#~ msgstr "Проверка" - -#~ msgid "Creating your account" -#~ msgstr "Создание вашей учётной записи" - -#~ msgid "Now ready !" -#~ msgstr "Готово!" diff --git a/po/sr.po b/po/sr.po index 2ec83343c..89a40b99c 100644 --- a/po/sr.po +++ b/po/sr.po @@ -1,20 +1,21 @@ -# SIP Telephony Application. -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -# Мирослав Николић , 2013. +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: linphone 0.7.1\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2013-02-11 19:03+0200\n" -"Last-Translator: Мирослав Николић \n" -"Language-Team: Serbian \n" -"Language: sr\n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:15+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Serbian (http://www.transifex.com/projects/p/linphone-gtk/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" -"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -27,71 +28,60 @@ msgid "Send text to %s" msgstr "Пошаљи текст за %s" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "У позиву" +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "н/д" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "прекинути" +msgstr "" #: ../gtk/calllogs.c:320 -#, fuzzy msgid "Missed" -msgstr "пропуштени" +msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "Одбиј" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format msgid "%i minute" msgid_plural "%i minutes" -msgstr[0] "%i минут" -msgstr[1] "%i минута" -msgstr[2] "%i минута" -msgstr[3] "Један минут" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: ../gtk/calllogs.c:332 #, c-format msgid "%i second" msgid_plural "%i seconds" -msgstr[0] "%i секунда" -msgstr[1] "%i секунде" -msgstr[2] "%i секунде" -msgstr[3] "Једна секунда" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, fuzzy, c-format +#, c-format msgid "%s\t%s" msgstr "" -"%s\t%s\tКвалитет: %s\n" -"%s\t%s %s\t" #: ../gtk/calllogs.c:337 -#, fuzzy, c-format +#, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" msgstr "" -"%s\t%s\tКвалитет: %s\n" -"%s\t%s %s\t" #: ../gtk/calllogs.c:343 -#, fuzzy, c-format +#, c-format msgid "" "%s\t\n" "%s" msgstr "" -"%s\t%s\tКвалитет: %s\n" -"%s\t%s %s\t" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -136,110 +126,92 @@ msgstr "ако је подешено сам ће се јављати на дол #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" -"Наводи радни директоријум (треба да буде основа инсталације, нпр: c:" -"\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +msgstr "Наводи радни директоријум (треба да буде основа инсталације, нпр: c:\\Program Files\\Linphone)" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Потврђујем" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "Помоћник подешавања налога" +msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "Позив са корисником %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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" -"Ако одговорите са не, ова особа ће привремено бити стављена на црни списак." +msgstr "%s жели да вас дода на списак пријатеља.\nДа ли желите да му допустите да види ваше стање присуства или да га додате на ваш списак пријатеља ?\nАко одговорите са не, ова особа ће привремено бити стављена на црни списак." -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -"Унесите вашу лозинку за корисничко име %s\n" -" на домену %s:" -#: ../gtk/main.c:1376 +#: ../gtk/main.c:1283 msgid "Call error" msgstr "Грешка позива" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "Позив је завршен" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Долазни позив" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Јави се" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Одбиј" -#: ../gtk/main.c:1392 +#: ../gtk/main.c:1299 msgid "Call paused" msgstr "Позив је заустављен" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "Кодеци" +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "Веза веб сајта" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Линфон — интернет телефон са снимком" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (основно)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "Преселили смо се на %s" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"Ниједна звучна картица није откривен ана овом рачунару.\n" -"Нећете бити у могућности да шаљете или да примате звучне позиве." +msgstr "Ниједна звучна картица није откривен ана овом рачунару.\nНећете бити у могућности да шаљете или да примате звучне позиве." -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "Слободан СИП телефон са снимком" @@ -279,9 +251,9 @@ msgid "Delete contact '%s'" msgstr "Обришите контакт „%s“" #: ../gtk/friendlist.c:978 -#, fuzzy, c-format +#, c-format msgid "Delete chat history of '%s'" -msgstr "Обришите контакт „%s“" +msgstr "" #: ../gtk/friendlist.c:1029 #, c-format @@ -297,9 +269,8 @@ msgid "Status" msgstr "Стање" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Најмањи проток бита (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -317,93 +288,92 @@ msgstr "Искључено" msgid "Account" msgstr "Налог" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "Енглески" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "Француски" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "Шведски" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "Италијански" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "Шпански" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "Бразилски португалски" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "Пољски" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "Немачки" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "Руски" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "Јапански" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "Холандски" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "Мађарски" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "Чешки" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "Кинески" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "Традиционални кинески" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "Норвешки" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." -msgstr "" -"Трба поново да покренете линфон да би нови изабрани језик ступио на снагу." +msgstr "Трба поново да покренете линфон да би нови изабрани језик ступио на снагу." -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "Ништа" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "СРТП" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "ЗРТП" @@ -412,9 +382,7 @@ msgstr "ЗРТП" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"Новије издање је доступно са „%s“.\n" -"Да ли желите да отворите прегледник да га преузмете ?" +msgstr "Новије издање је доступно са „%s“.\nДа ли желите да отворите прегледник да га преузмете ?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -444,33 +412,27 @@ msgstr "Примам податке..." #, c-format msgid "Found %i contact" msgid_plural "Found %i contacts" -msgstr[0] "Нашао сам %i пријатеља" -msgstr[1] "Нашао сам %i пријатеља" -msgstr[2] "Нашао сам %i пријатеља" -msgstr[3] "Нашао сам једног пријатеља" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: ../gtk/setupwizard.c:34 msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"Добродошли !\n" -"Овај помоћник ће вам помоћи да користите СИП налог за ваше позиве." +msgstr "Добродошли !\nОвај помоћник ће вам помоћи да користите СИП налог за ваше позиве." #: ../gtk/setupwizard.c:43 -#, fuzzy msgid "Create an account on linphone.org" -msgstr "Направите налог тако што ћете изабрати корисничко име" +msgstr "" #: ../gtk/setupwizard.c:44 -#, fuzzy msgid "I have already a linphone.org account and I just want to use it" -msgstr "Већ имам један налог и желим да га користим" +msgstr "" #: ../gtk/setupwizard.c:45 -#, fuzzy msgid "I have already a sip account and I just want to use it" -msgstr "Већ имам један налог и желим да га користим" +msgstr "" #: ../gtk/setupwizard.c:46 msgid "I want to specify a remote configuration URI" @@ -493,14 +455,12 @@ msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "Корисничко име" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "Лозинка" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -515,14 +475,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "Корисничко име:" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "Лозинка:" +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -548,15 +506,13 @@ msgstr "Хвала вам. Ваш налог је сада подешен и с #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "Помоћник подешавања налога" +msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -567,9 +523,8 @@ msgid "Account setup assistant" msgstr "Помоћник подешавања налога" #: ../gtk/setupwizard.c:629 -#, fuzzy msgid "Configure your account (step 1/1)" -msgstr "Подесите СИП налог" +msgstr "" #: ../gtk/setupwizard.c:634 msgid "Enter your sip username (step 1/1)" @@ -602,18 +557,16 @@ msgid "Transfer to call #%i with %s" msgstr "Пребаци позив #%i са %s" #: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 -#, fuzzy msgid "Not used" -msgstr "Нисам нашао" +msgstr "" #: ../gtk/incall_view.c:221 msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "Позив није успео." +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -624,9 +577,8 @@ msgid "Going through one or more NATs" msgstr "" #: ../gtk/incall_view.c:229 -#, fuzzy msgid "Direct" -msgstr "Преусмерен" +msgstr "" #: ../gtk/incall_view.c:231 msgid "Through a relay server" @@ -637,23 +589,20 @@ msgid "uPnP not activated" msgstr "" #: ../gtk/incall_view.c:241 -#, fuzzy msgid "uPnP in progress" -msgstr "У току је тражење стуна..." +msgstr "" #: ../gtk/incall_view.c:243 -#, fuzzy msgid "uPnp not available" -msgstr "недоступно" +msgstr "" #: ../gtk/incall_view.c:245 msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "Позив није успео." +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -672,121 +621,118 @@ msgid "%ix%i @ %f fps" msgstr "" #: ../gtk/incall_view.c:304 -#, fuzzy, c-format +#, c-format msgid "%.3f seconds" -msgstr "%i секунда" +msgstr "" #: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "Позивам..." -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "00::00::00" -#: ../gtk/incall_view.c:515 +#: ../gtk/incall_view.c:525 msgid "Incoming call" msgstr "Долазни позив" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "добро" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "просечно" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "оскудно" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "јадно" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "много лоше" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "недоступно" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "Осигурано СРТП-ом" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Осигурано ЗРТП-ом [потврђивање идентитета: %s]" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "Непроверено подешавање" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Проверено подешавање" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "На конференцији" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In call" msgstr "У позиву" -#: ../gtk/incall_view.c:738 +#: ../gtk/incall_view.c:758 msgid "Paused call" msgstr "Заустављен позив" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "%02i::%02i::%02i" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Позив је завршен." -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 -#, fuzzy +#: ../gtk/incall_view.c:828 msgid "Transfer done." -msgstr "Пребаци" +msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "Пребаци" +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "Настави" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Застани" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 -#, fuzzy +#: ../gtk/incall_view.c:948 msgid "(Paused)" -msgstr "Застани" +msgstr "" #: ../gtk/loginframe.c:88 #, c-format @@ -820,18 +766,14 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Добродошли !\n" -"Овај помоћник ће вам помоћи да користите СИП налог за ваше позиве." #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Уређај за снимање:" +msgstr "" #: ../gtk/audio_assistant.c:329 msgid "Recorded volume" @@ -842,9 +784,8 @@ msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Уређај за пуштање:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -863,14 +804,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "Помоћник подешавања налога" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "Помоћник подешавања налога" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -893,9 +832,8 @@ msgid "Send" msgstr "Пошаљи" #: ../gtk/main.ui.h:3 -#, fuzzy msgid "End conference" -msgstr "На конференцији" +msgstr "" #: ../gtk/main.ui.h:7 msgid "Record this call to an audio file" @@ -950,9 +888,8 @@ msgid "_Options" msgstr "_Могућности" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Потврђујем" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -979,9 +916,8 @@ msgid "Check _Updates" msgstr "Провери _ажурирања" #: ../gtk/main.ui.h:30 -#, fuzzy msgid "Account assistant" -msgstr "Помоћник подешавања налога" +msgstr "" #: ../gtk/main.ui.h:32 msgid "SIP address or phone number:" @@ -1057,11 +993,9 @@ msgstr "(C) Беледон комуникације,2010\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "" -"Интернет телефон са снимком који користи уобичајени СИП (rfc3261) протокол." +msgstr "Интернет телефон са снимком који користи уобичајени СИП (rfc3261) протокол." #: ../gtk/about.ui.h:5 -#, fuzzy msgid "" "fr: Simon Morlat\n" "en: Simon Morlat and Delphine Perreau\n" @@ -1076,17 +1010,6 @@ msgid "" "hu: anonymous\n" "he: Eli Zaretskii \n" msgstr "" -"fr: Simon Morlat\n" -"en: Simon Morlat and Delphine Perreau\n" -"it: Alberto Zanoni \n" -"de: Jean-Jacques Sarton \n" -"sv: Daniel Nylander \n" -"es: Jesus Benitez \n" -"ja: YAMAGUCHI YOSHIYA \n" -"pt_BR: Rafael Caesar Lenzi \n" -"pl: Robert Nasiadek \n" -"cs: Petr Pisar \n" -"hu: anonymous\n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1161,9 +1084,8 @@ msgid "Registration duration (sec):" msgstr "Трајање уписа (сек):" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "Рута (изборно):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1174,9 +1096,8 @@ msgid "Route (optional):" msgstr "Рута (изборно):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Пренос" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1187,9 +1108,8 @@ msgid "Publish presence information" msgstr "Објави податке о присуству" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Укључи" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1284,9 +1204,8 @@ msgid "Fixed" msgstr "" #: ../gtk/parameters.ui.h:23 -#, fuzzy msgid "Media encryption is mandatory" -msgstr "Врста шифровања медија" +msgstr "" #: ../gtk/parameters.ui.h:24 msgid "Tunnel" @@ -1313,23 +1232,20 @@ msgid "Direct connection to the Internet" msgstr "Непосредна веза на Интернет" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "Иза НАТ-а / мрежне баријере (испод наведите ИП мрежног пролаза)" +msgstr "" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" msgstr "Иза НАТ-а / мрежне баријере (користите СТУН за решавање)" #: ../gtk/parameters.ui.h:32 -#, fuzzy msgid "Behind NAT / Firewall (use ICE)" -msgstr "Иза НАТ-а / мрежне баријере (користите СТУН за решавање)" +msgstr "" #: ../gtk/parameters.ui.h:33 -#, fuzzy msgid "Behind NAT / Firewall (use uPnP)" -msgstr "Иза НАТ-а / мрежне баријере (користите СТУН за решавање)" +msgstr "" #: ../gtk/parameters.ui.h:34 msgid "Public IP address:" @@ -1384,9 +1300,8 @@ msgid "Prefered video resolution:" msgstr "Жељена резолуција снимка:" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Улазни уређај снимка:" +msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1480,9 +1395,7 @@ msgstr "Укључи прилагодљиво управљање протоко msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "" -"Прилагодљиво управљање протоком је техника за променљиво погађање " -"доступног пропусног опсега за време позива." +msgstr "Прилагодљиво управљање протоком је техника за променљиво погађање доступног пропусног опсега за време позива." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1509,23 +1422,20 @@ msgid "User interface" msgstr "Корисничко сучеље" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "Адреса СИП посредника:" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Потврђивање идентитета није успело" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "натпис" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Посреднички налози" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" @@ -1556,23 +1466,20 @@ msgid "Please wait" msgstr "Молим сачекајте" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "Подешавања" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" msgstr "" #: ../gtk/dscp_settings.ui.h:3 -#, fuzzy msgid "Audio RTP stream" -msgstr "РТП/УДП звука:" +msgstr "" #: ../gtk/dscp_settings.ui.h:4 -#, fuzzy msgid "Video RTP stream" -msgstr "РТП/УДП снимка:" +msgstr "" #: ../gtk/dscp_settings.ui.h:5 msgid "Set DSCP values (in hexadecimal)" @@ -1583,14 +1490,12 @@ msgid "Call statistics" msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" -msgstr "Звучни кодеци" +msgstr "" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" -msgstr "Кодеци снимка" +msgstr "" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1617,23 +1522,20 @@ msgid "Video resolution received" msgstr "" #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "Жељена резолуција снимка:" +msgstr "" #: ../gtk/call_statistics.ui.h:11 msgid "RTP profile" msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "Подаци о пријатељу" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 -#, fuzzy msgid "Configure VoIP tunnel" -msgstr "Подесите СИП налог" +msgstr "" #: ../gtk/tunnel_config.ui.h:2 msgid "Host" @@ -1712,23 +1614,20 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Подешавања" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" msgstr "" #: ../gtk/ldap.ui.h:7 -#, fuzzy msgid "Not yet available" -msgstr "недоступно" +msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Кодеци" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1743,9 +1642,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Звук" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1761,18 +1659,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "СИП адреса или број телефона:" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Потражите неког" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1787,9 +1683,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Снимак" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1813,11 +1708,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1825,81 +1717,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "Повезујем се..." +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "Спреман" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Потврђујем" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Тражим одредиште телефонског броја..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "Не могу да решим овај број." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "Ступам у везу" -#: ../coreapi/linphonecore.c:2425 +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" msgstr "Не могу да позовем" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Извините, достигли смо највећи број истовремених позива" -#: ../coreapi/linphonecore.c:2745 +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" msgstr "вам се обраћа" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr " и затражени само-одговор." -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "." -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "Мењам параметре позива..." -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Повезан сам." -#: ../coreapi/linphonecore.c:3220 +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" msgstr "Позив је прекинут" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "Не могу да зауставим позив" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "Заустављам тренутни позив..." -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "У току је тражење стуна..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1948,279 +1838,148 @@ msgid "Pending" msgstr "На чекању" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Трајање" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "Непозната грешка" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"Адреса сип посредника коју сте унели је неисправна, мора почети на „sip:“ за " -"којим следи назив домаћина." +msgstr "Адреса сип посредника коју сте унели је неисправна, мора почети на „sip:“ за којим следи назив домаћина." -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"Сип идентитет који сте унели није исправан.\n" -"Треба да изгледа као „sip:корисник@домен-посредника, као што је „sip:" -"alice@example.net“" +msgstr "Сип идентитет који сте унели није исправан.\nТреба да изгледа као „sip:корисник@домен-посредника, као што је „sip:alice@example.net“" -#: ../coreapi/proxy.c:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "Не могу да се пријавим као %s" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "Удаљено звоњење." -#: ../coreapi/callbacks.c:373 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." msgstr "Удаљено звоњење..." -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "Ранији медиј." -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "Позив са „%s“ је заустављен." -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "Позив на који је одговорио „%s“ — на чекању." -#: ../coreapi/callbacks.c:459 +#: ../coreapi/callbacks.c:498 msgid "Call resumed." msgstr "Позив је настављен." -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "На позив је одговорио „%s“." -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 -#, fuzzy -msgid "We have been resumed." -msgstr "Позив нам је настављен..." +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" -#: ../coreapi/callbacks.c:521 +#: ../coreapi/callbacks.c:560 +msgid "We have been resumed." +msgstr "" + +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 -#, fuzzy +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." -msgstr "Позив је ажуриран удаљеним..." +msgstr "" -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "Позив је завршен." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Корисник је заузет." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "Корисник је привремено недоступан." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "Корисник не жели да буде узнемираван." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Позив је одбијен." -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "Преусмерен" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." -msgstr "" - -#: ../coreapi/callbacks.c:798 +#: ../coreapi/callbacks.c:835 msgid "Call failed." msgstr "Позив није успео." -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "Уписивање на „%s“ је успело." -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "Исписивање са „%s“ је обављено." -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "нема ограничења одговора" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "Уписивање на „%s“ није успело: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 +#: ../coreapi/linphonecall.c:174 #, c-format msgid "Authentication token is %s" msgstr "Симбол потврђивања идентитета је „%s“" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." -msgstr[0] "Пропустили сте %i позив." -msgstr[1] "Пропустили сте %i позива." -msgstr[2] "Пропустили сте %i позива." -msgstr[3] "Пропустили сте један позив." - -#~ msgid "aborted" -#~ msgstr "прекинути" - -#~ msgid "completed" -#~ msgstr "завршени" - -#~ msgid "missed" -#~ msgstr "пропуштени" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s у %s\n" -#~ "Позива: %s\n" -#~ "Прима: %s\n" -#~ "Стање: %s\n" -#~ "Трајање: %i мин %i сек\n" - -#~ msgid "Outgoing call" -#~ msgstr "Одлазни позив" - -#~ msgid "No response." -#~ msgstr "Нема одговора." - -#~ msgid "Protocol error." -#~ msgstr "Грешка у протоколу." - -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "Не могу да обрадим дату сип адресу. Сип адреса обично изгледа као „sip:" -#~ "корисник@домен“" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Изгледа да ваш рачунар користи АЛСА управљачке програме за звук.\n" -#~ "То је најбољи избор. Међутим недостаје пцм осс модул\n" -#~ "за емулацију а потребан је линфону. Молим извршите\n" -#~ "„modprobe snd-pcm-oss“ као администратор да га учитате." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Изгледа да ваш рачунар користи АЛСА управљачке програме за звук.\n" -#~ "То је најбољи избор. Међутим недостаје миксер осс модул\n" -#~ "за емулацију а потребан је линфону. Молим извршите\n" -#~ "„modprobe snd-mixer-oss“ као администратор да га учитате." - -#~ msgid "Chat with %s" -#~ msgstr "Ћаскајте са „%s“" - -#~ msgid "by %s" -#~ msgstr "од %s" - -#~ msgid "Please choose a username:" -#~ msgstr "Изаберите корисничко име:" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "Проверавам да ли је „%s“ доступно..." - -#~ msgid "Please wait..." -#~ msgstr "Молим сачекајте..." - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "Извините ово корисничко име већ постоји. Покушајте неко друго." - -#~ msgid "Ok !" -#~ msgstr "У реду !" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "Проблем у комуникацији, касније покушајте опет." - -#~ msgid "Choosing a username" -#~ msgstr "Бирам корисничко име" - -#~ msgid "Verifying" -#~ msgstr "Проверавам" - -#~ msgid "Creating your account" -#~ msgstr "Правим ваш налог" - -#~ msgid "Now ready !" -#~ msgstr "Спремни смо сада !" - -#~ msgid "Enable video" -#~ msgstr "Укључи снимак" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "Унесите корисничко име, број телефона, или пуну сип адресу" - -#~ msgid "Keypad" -#~ msgstr "Тастатура" - -#~ msgid "Lookup:" -#~ msgstr "Потражи:" - -#~ msgid "in" -#~ msgstr "у" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "Упишите се на виртуелну\n" -#~ "мрежу ФОНИКС !" - -#~ msgid "We are being paused..." -#~ msgstr "Заустављени смо..." - -#~ msgid "No common codecs" -#~ msgstr "Нема познатих кодека" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" diff --git a/po/sv.po b/po/sv.po index 59b307d05..de2c7ec48 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1,20 +1,21 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2009-02-17 15:22+0100\n" -"Last-Translator: Emmanuel Frécon \n" -"Language-Team: SWEDISH \n" -"Language: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:15+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Swedish (http://www.transifex.com/projects/p/linphone-gtk/language/sv/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -27,28 +28,25 @@ msgid "Send text to %s" msgstr "Skicka text till %s" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "I samtal med" +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "avbrytade" +msgstr "" #: ../gtk/calllogs.c:320 -#, fuzzy msgid "Missed" -msgstr "missade" +msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "Avböj" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format @@ -88,9 +86,8 @@ msgid "Conference" msgstr "" #: ../gtk/conference.c:46 -#, fuzzy msgid "Me" -msgstr "Mikrofon av" +msgstr "" #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102 #, c-format @@ -127,110 +124,92 @@ msgstr "Om på, besvara automatisk alla inkommande samtal" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" -"Välj en arbetskatalog som ska vara basen för installationen, såsom C:" -"\\Program\\Linphone" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +msgstr "Välj en arbetskatalog som ska vara basen för installationen, såsom C:\\Program\\Linphone" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "Bekräftelse" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "Kontoinstallationsassistenten" +msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "Samtal med %s" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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 skulle vilja lägga till dig till hans/hennes kontaktlista.\n" -"Vill du tillåta honom/henne att se din närvarostatus eller lägga till honom/" -"henne till din kontaktlista?\n" -"Om du svarar nej, personen kommer att vara bannlyst." +msgstr "%s skulle vilja lägga till dig till hans/hennes kontaktlista.\nVill du tillåta honom/henne att se din närvarostatus eller lägga till honom/henne till din kontaktlista?\nOm du svarar nej, personen kommer att vara bannlyst." -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -"Mata in ditt lösenord för användaren %s\n" -"vid domänen %s:" -#: ../gtk/main.c:1376 -#, fuzzy +#: ../gtk/main.c:1283 msgid "Call error" -msgstr "Samtalshistorik" +msgstr "" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "Samtalet slut" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "Inkommande samtal" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Avböj" -#: ../gtk/main.c:1392 -#, fuzzy +#: ../gtk/main.c:1299 msgid "Call paused" -msgstr "avbrytade" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "Portar" +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "Webbsajt" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Linphone - en video Internet telefon" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (Default)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 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:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "En gratis SIP video-telefon" @@ -247,9 +226,8 @@ msgid "Name" msgstr "Namn" #: ../gtk/friendlist.c:721 -#, fuzzy msgid "Call" -msgstr "Ringer %s" +msgstr "" #: ../gtk/friendlist.c:726 msgid "Chat" @@ -271,9 +249,9 @@ msgid "Delete contact '%s'" msgstr "Ta bort kontakt '%s'" #: ../gtk/friendlist.c:978 -#, fuzzy, c-format +#, c-format msgid "Delete chat history of '%s'" -msgstr "Ta bort kontakt '%s'" +msgstr "" #: ../gtk/friendlist.c:1029 #, c-format @@ -289,9 +267,8 @@ msgid "Status" msgstr "Status" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "Min. datahastighet (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -309,92 +286,92 @@ msgstr "Av" msgid "Account" msgstr "Konto" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "Engelska" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "Fransk" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "Svenska" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "Italiensk" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "Spanska" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "Portugisiska" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "Polska" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "Tyska" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "Ryska" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "Japanska" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "Nederländksa" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "Hungerska" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "Tjekiska" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "Kinesiska" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 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:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -403,9 +380,7 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"En nyare version är tillgänglig på %s.\n" -"Vill du öppna en browser för att ladda ner den?" +msgstr "En nyare version är tillgänglig på %s.\nVill du öppna en browser för att ladda ner den?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -442,24 +417,19 @@ msgstr[1] "Hittat kontakt %i" msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"Välkommen!\n" -"Assistenten kommer att hjälpa dig använda ett SIP konto för dina samtal:" +msgstr "Välkommen!\nAssistenten kommer att hjälpa dig använda ett SIP konto för dina samtal:" #: ../gtk/setupwizard.c:43 -#, fuzzy msgid "Create an account on linphone.org" -msgstr "Skapa ett konto genom att välja ett användarnamn" +msgstr "" #: ../gtk/setupwizard.c:44 -#, fuzzy msgid "I have already a linphone.org account and I just want to use it" -msgstr "Jag har redan ett konto och vill bara använda det." +msgstr "" #: ../gtk/setupwizard.c:45 -#, fuzzy msgid "I have already a sip account and I just want to use it" -msgstr "Jag har redan ett konto och vill bara använda det." +msgstr "" #: ../gtk/setupwizard.c:46 msgid "I want to specify a remote configuration URI" @@ -482,14 +452,12 @@ msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "Användarnamn" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "Lösenord" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -504,14 +472,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "Användarnamn:" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "Lösenord:" +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -537,15 +503,13 @@ msgstr "Tack. Ditt konto är nu konfigurerad och färdig att användas." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "Kontoinstallationsassistenten" +msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -556,9 +520,8 @@ msgid "Account setup assistant" msgstr "Kontoinstallationsassistenten" #: ../gtk/setupwizard.c:629 -#, fuzzy msgid "Configure your account (step 1/1)" -msgstr "Konfigurera ett SIP konto" +msgstr "" #: ../gtk/setupwizard.c:634 msgid "Enter your sip username (step 1/1)" @@ -577,14 +540,13 @@ msgid "Error" msgstr "" #: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 -#, fuzzy msgid "Terminating" -msgstr "Lägg på" +msgstr "" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, fuzzy, c-format +#, c-format msgid "Call #%i" -msgstr "Ringer %s" +msgstr "" #: ../gtk/incall_view.c:155 #, c-format @@ -600,9 +562,8 @@ msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "Samtalet avböjdes." +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -613,9 +574,8 @@ msgid "Going through one or more NATs" msgstr "" #: ../gtk/incall_view.c:229 -#, fuzzy msgid "Direct" -msgstr "Omdirigerat till %s..." +msgstr "" #: ../gtk/incall_view.c:231 msgid "Through a relay server" @@ -626,9 +586,8 @@ msgid "uPnP not activated" msgstr "" #: ../gtk/incall_view.c:241 -#, fuzzy msgid "uPnP in progress" -msgstr "STUN uppslagning pågår..." +msgstr "" #: ../gtk/incall_view.c:243 msgid "uPnp not available" @@ -639,9 +598,8 @@ msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "Samtalet avböjdes." +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -668,112 +626,108 @@ msgstr "" msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "Ringer..." -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "00:00:00" -#: ../gtk/incall_view.c:515 -#, fuzzy +#: ../gtk/incall_view.c:525 msgid "Incoming call" -msgstr "Inkommande samtal" +msgstr "" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:702 -#, fuzzy +#: ../gtk/incall_view.c:722 msgid "In call" -msgstr "I samtal med" +msgstr "" -#: ../gtk/incall_view.c:738 -#, fuzzy +#: ../gtk/incall_view.c:758 msgid "Paused call" -msgstr "Lägg på" +msgstr "" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "%02i:%02i:%02i" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Samtalet slut." -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "Samtalet avböjdes." +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "" @@ -783,9 +737,9 @@ msgid "Please enter login information for %s" msgstr "Mata in ditt lösenord för domänen %s:" #: ../gtk/config-fetching.c:57 -#, fuzzy, c-format +#, c-format msgid "fetching from %s" -msgstr "Inkommande samtal från %s" +msgstr "" #: ../gtk/config-fetching.c:73 #, c-format @@ -809,18 +763,14 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Välkommen!\n" -"Assistenten kommer att hjälpa dig använda ett SIP konto för dina samtal:" #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "Mikrofon enhet:" +msgstr "" #: ../gtk/audio_assistant.c:329 msgid "Recorded volume" @@ -831,9 +781,8 @@ msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "Uppspelningsenhet:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -852,14 +801,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "Assistent" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "Kontoinstallationsassistenten" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -874,9 +821,8 @@ msgid "Record and Play" msgstr "" #: ../gtk/main.ui.h:1 -#, fuzzy msgid "Callee name" -msgstr "Samtalet slut." +msgstr "" #: ../gtk/main.ui.h:2 msgid "Send" @@ -919,36 +865,28 @@ msgid "All users" msgstr "" #: ../gtk/main.ui.h:18 -#, fuzzy msgid "Online users" msgstr "" -"Alla användare\n" -"Online användare" #: ../gtk/main.ui.h:19 msgid "ADSL" msgstr "" #: ../gtk/main.ui.h:20 -#, fuzzy msgid "Fiber Channel" msgstr "" -"ADSL\n" -"Fiber" #: ../gtk/main.ui.h:21 -#, fuzzy msgid "Default" -msgstr "%s (Default)" +msgstr "" #: ../gtk/main.ui.h:22 msgid "_Options" msgstr "" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "Bekräftelse" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -963,24 +901,20 @@ msgid "_Help" msgstr "" #: ../gtk/main.ui.h:27 -#, fuzzy msgid "Show debug window" -msgstr "Linphone debug fönster" +msgstr "" #: ../gtk/main.ui.h:28 -#, fuzzy msgid "_Homepage" -msgstr "Hemsidan" +msgstr "" #: ../gtk/main.ui.h:29 -#, fuzzy msgid "Check _Updates" -msgstr "Letar efter uppdateringar" +msgstr "" #: ../gtk/main.ui.h:30 -#, fuzzy msgid "Account assistant" -msgstr "Kontoinstallationsassistenten" +msgstr "" #: ../gtk/main.ui.h:32 msgid "SIP address or phone number:" @@ -991,9 +925,8 @@ msgid "Initiate a new call" msgstr "" #: ../gtk/main.ui.h:34 -#, fuzzy msgid "Contacts" -msgstr "Kontaktar" +msgstr "" #: ../gtk/main.ui.h:35 msgid "Search" @@ -1004,14 +937,12 @@ msgid "Add contacts from directory" msgstr "Lägg till kontakt ifrån katalogen" #: ../gtk/main.ui.h:37 -#, fuzzy msgid "Add contact" -msgstr "Hittat kontakt %i" +msgstr "" #: ../gtk/main.ui.h:38 -#, fuzzy msgid "Recent calls" -msgstr "I samtal" +msgstr "" #: ../gtk/main.ui.h:39 msgid "My current identity:" @@ -1102,9 +1033,8 @@ msgid "Scroll to end" msgstr "" #: ../gtk/password.ui.h:1 -#, fuzzy msgid "Linphone - Authentication required" -msgstr "Linphone - Autentisering krävs" +msgstr "" #: ../gtk/password.ui.h:2 msgid "Please enter the domain password" @@ -1119,9 +1049,8 @@ msgid "Clear all" msgstr "" #: ../gtk/call_logs.ui.h:3 -#, fuzzy msgid "Call back" -msgstr "Ringer %s" +msgstr "" #: ../gtk/sip_account.ui.h:1 msgid "Linphone - Configure a SIP account" @@ -1152,9 +1081,8 @@ msgid "Registration duration (sec):" msgstr "Registreringsfrekvens (sek.):" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "Route (tillval):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1165,9 +1093,8 @@ msgid "Route (optional):" msgstr "Route (tillval):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "Transport" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1178,9 +1105,8 @@ msgid "Publish presence information" msgstr "Publicera närvaro information" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "Möjliggör" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1203,9 +1129,8 @@ msgid "default soundcard" msgstr "default ljudkort" #: ../gtk/parameters.ui.h:5 -#, fuzzy msgid "a sound card" -msgstr "ett ljud kort\n" +msgstr "" #: ../gtk/parameters.ui.h:6 msgid "default camera" @@ -1216,18 +1141,12 @@ msgid "CIF" msgstr "" #: ../gtk/parameters.ui.h:8 -#, fuzzy msgid "Audio codecs" msgstr "" -"Audio codecs\n" -"Video codecs" #: ../gtk/parameters.ui.h:9 -#, fuzzy msgid "Video codecs" msgstr "" -"Audio codecs\n" -"Video codecs" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" @@ -1310,23 +1229,20 @@ msgid "Direct connection to the Internet" msgstr "Direkt förbindelse till Internet" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "Bakom en NAT / brandvägg (specificera gatewap IP adress nedan)" +msgstr "" #: ../gtk/parameters.ui.h:31 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:32 -#, fuzzy msgid "Behind NAT / Firewall (use ICE)" -msgstr "Bakom en NAT / brandvägg (använd STUN för att avgöra adressen)" +msgstr "" #: ../gtk/parameters.ui.h:33 -#, fuzzy msgid "Behind NAT / Firewall (use uPnP)" -msgstr "Bakom en NAT / brandvägg (använd STUN för att avgöra adressen)" +msgstr "" #: ../gtk/parameters.ui.h:34 msgid "Public IP address:" @@ -1381,9 +1297,8 @@ msgid "Prefered video resolution:" msgstr "Video upplösning:" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "Video ingångsenhet:" +msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1395,8 +1310,7 @@ msgstr "Multimedia inställningar" #: ../gtk/parameters.ui.h:50 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" +msgstr "Denna sektion specificerar din SIP adress när du inte använder ett SIP konto" #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" @@ -1505,23 +1419,20 @@ msgid "User interface" msgstr "Användarinterface" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "SIP Adress" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Linphone - Autentisering krävs" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "etikett" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "Proxy konton" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" @@ -1552,9 +1463,8 @@ msgid "Please wait" msgstr "Vänta" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "Inställningar" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1573,23 +1483,16 @@ msgid "Set DSCP values (in hexadecimal)" msgstr "" #: ../gtk/call_statistics.ui.h:1 -#, fuzzy msgid "Call statistics" -msgstr "Ringer %s" +msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" msgstr "" -"Audio codecs\n" -"Video codecs" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" msgstr "" -"Audio codecs\n" -"Video codecs" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1616,23 +1519,20 @@ msgid "Video resolution received" msgstr "" #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "Video upplösning:" +msgstr "" #: ../gtk/call_statistics.ui.h:11 msgid "RTP profile" msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "Kontakt information" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 -#, fuzzy msgid "Configure VoIP tunnel" -msgstr "Konfigurera ett SIP konto" +msgstr "" #: ../gtk/tunnel_config.ui.h:2 msgid "Host" @@ -1711,9 +1611,8 @@ msgid "1" msgstr "" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "Inställningar" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" @@ -1724,9 +1623,8 @@ msgid "Not yet available" msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "Codecs" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1741,9 +1639,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "Audio" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1759,18 +1656,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "SIP Adress" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "Sök efter kontakter" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1785,9 +1680,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "Video" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1811,11 +1705,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1823,86 +1714,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "Kontaktar" +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "Redo" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "Bekräftelse" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "Leta efter telefonnummer för destinationen..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "Kan inte nå dett nummer." #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "Kontaktar" -#: ../coreapi/linphonecore.c:2425 -#, fuzzy +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" -msgstr "Kunde inte ringa" +msgstr "" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:2745 -#, fuzzy +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" -msgstr "kontaktar dig." +msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "" -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "Kopplad" -#: ../coreapi/linphonecore.c:3220 -#, fuzzy +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" -msgstr "avbrytade" +msgstr "" -#: ../coreapi/linphonecore.c:3412 -#, fuzzy +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" -msgstr "Kunde inte ringa" +msgstr "" -#: ../coreapi/linphonecore.c:3417 -#, fuzzy +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." -msgstr "Nuvarande samtal" +msgstr "" -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "STUN uppslagning pågår..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1951,588 +1835,147 @@ msgid "Pending" msgstr "Pågående" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "Förlopp" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "Okänd bug" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"SIP proxy adressen som du matade in är inte rätt, adressen måste starta med " -"\"sip:\", följd av ett hostnamn" +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:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -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" +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:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "Kunde inte logga in som %s" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "Ringer hos motparten." -#: ../coreapi/callbacks.c:373 -#, fuzzy +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." -msgstr "Ringer hos motparten." +msgstr "" -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "Tidig media" -#: ../coreapi/callbacks.c:435 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:475 +#, c-format msgid "Call with %s is paused." -msgstr "Samtal med %s" +msgstr "" -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:459 -#, fuzzy +#: ../coreapi/callbacks.c:498 msgid "Call resumed." -msgstr "Samtalet slut" +msgstr "" -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "" -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "Samtalet slut." -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "Användare upptagen." -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "Användaren temporärt inte tillgänglig." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "Användaren vill inte bli störd." -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "Samtalet avböjdes." -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 -#, fuzzy +#: ../coreapi/callbacks.c:780 msgid "Redirected" -msgstr "Omdirigerat till %s..." - -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:798 -#, fuzzy +#: ../coreapi/callbacks.c:835 msgid "Call failed." -msgstr "Samtalet avböjdes." +msgstr "" -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "Registrering hos %s lyckades." -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "Avregistrering hos %s lyckades." -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "Inget svar inom angiven tid" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrering hos %s mislyckades: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:174 +#, c-format msgid "Authentication token is %s" -msgstr "Linphone - Autentisering krävs" +msgstr "" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, 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 "aborted" -#~ msgstr "avbrytade" - -#~ msgid "completed" -#~ msgstr "avslutade" - -#~ msgid "missed" -#~ msgstr "missade" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s på %s\n" -#~ "Från: %s\n" -#~ "Till: %s\n" -#~ "Status: %s\n" -#~ "Längd: %i min %i sek\n" - -#~ msgid "Outgoing call" -#~ msgstr "Utgående samtal" - -#, fuzzy -#~ msgid "No response." -#~ msgstr "Inget svar inom angiven tid" - -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "Kan inte förstå angiven SIP adress. En SIP adress vanligen ser ut som sip:" -#~ "användare@domänen" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "Din dator verkar använda ALSA drivrutiner för ljud.\n" -#~ "Detta är det bästa valet. Dock PCM OSS emuleringsmodulen\n" -#~ "saknas och linphone behöver ha det. Var god exekvera\n" -#~ "'modprobe snd-pcm-oss' som root för att ladda in den." - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "Din dator verkar använda ALSA drivrutiner för ljud.\n" -#~ "Detta är det bästa valet. Dock OSS mixer emuleringsmodulen\n" -#~ "saknas och linphone behöver ha det. Var god exekvera\n" -#~ "'modprobe snd-mixer-oss' som root för att ladda in den." - -#~ msgid "Chat with %s" -#~ msgstr "Chatta med %s" - -#~ msgid "Please choose a username:" -#~ msgstr "Välj ett användarnamn:" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "Verifierar om '%s' är tillgänglig..." - -#~ msgid "Please wait..." -#~ msgstr "Var god dröj..." - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "Användarnamnet finns redan, försök med ett nytt namn." - -#~ msgid "Ok !" -#~ msgstr "Ok !" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "Kommunikationsproblem, prova igen senare." - -#~ msgid "Choosing a username" -#~ msgstr "Välj ditt användarnamn" - -#~ msgid "Verifying" -#~ msgstr "Verifierar" - -#~ msgid "Creating your account" -#~ msgstr "Skapar ditt konto" - -#~ msgid "Now ready !" -#~ msgstr "Klar nu!" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "På" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "Mata in användarnamn, telefonnummer eller SIP adress" - -#~ msgid "Lookup:" -#~ msgstr "Sök:" - -#~ msgid "in" -#~ msgstr "i" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "Registrera hos FONICS\n" -#~ "virtuella nätverk!" - -#~ msgid "Unmute" -#~ msgstr "Mikrofon på" - -#~ msgid "Contact list" -#~ msgstr "Kontaktlista" - -#, 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 "Alsa sound source" -#~ msgstr "Alsa ljud ingång" - -#~ msgid "Alsa sound output" -#~ msgstr "Also ljud utgång" - -#~ msgid "DTMF generator" -#~ msgstr "DTMF generare" - -#~ msgid "The GSM full-rate codec" -#~ msgstr "Hög hastighet GSM codec" - -#~ msgid "The GSM codec" -#~ msgstr "GSM codec" - -#, fuzzy -#~ msgid "Sound capture filter for MacOS X Audio Unit" -#~ msgstr "Fånga ljud med OSS drivrutiner" - -#, fuzzy -#~ msgid "Sound playback filter for MacOS X Audio Unit" -#~ msgstr "Ljud utgång med OSS drivrutiner" - -#~ msgid "A filter to make conferencing" -#~ msgstr "Ett filter för konferens" - -#~ msgid "Raw files and wav reader" -#~ msgstr "Raw filer och WAV läsare" - -#~ msgid "Wav file recorder" -#~ msgstr "WAV fil inspelare" - -#~ msgid "A filter that send several inputs to one output." -#~ msgstr "En filter som skickar flera ingångar till en utgång" - -#~ msgid "The free and wonderful speex codec" -#~ msgstr "Den fria speex codec" - -#~ msgid "A filter that controls and measure sound volume" -#~ msgstr "Ett filter som kontrollerar och mäter ljudvolym" - -#~ msgid "A video4linux compatible source filter to stream pictures." -#~ msgstr "En video4linux kompatibel ingångsfilter för att strömma bilder" - -#~ msgid "A filter to grab pictures from Video4Linux2-powered cameras" -#~ msgstr "En filter för att fånga bilder från Video4Linux-2 capabla kameror" - -#~ msgid "A filter that outputs a static image." -#~ msgstr "En filter med statisk bild" - -#~ msgid "A pixel format converter" -#~ msgstr "En pixel format konverterare" - -#~ msgid "A video size converter" -#~ msgstr "En video storlek konverterare" - -#~ msgid "a small video size converter" -#~ msgstr "En liten video storlek konverterare" - -#~ msgid "Echo canceller using speex library" -#~ msgstr "Echo cancellering med hjälp av speex" - -#~ msgid "A filter that reads from input and copy to its multiple outputs." -#~ msgstr "" -#~ "En filter som läser från sin ingång och kopierar till multipla utgångar" - -#~ msgid "The theora video encoder from xiph.org" -#~ msgstr "Theora video encoder från xiph.org" - -#~ msgid "The open-source and royalty-free 'theora' video codec from xiph.org" -#~ msgstr "Theora video codec från xiph.org, öppen källkod och utan royalties" - -#~ msgid "The theora video decoder from xiph.org" -#~ msgstr "Theora video decoder från xiph.org" - -#~ msgid "A H.263 decoder using ffmpeg library" -#~ msgstr "En h.263 decoder via ffmpeg" - -#~ msgid "A MPEG4 decoder using ffmpeg library" -#~ msgstr "En MPEG4 decoder via ffmpeg" - -#~ msgid "A RTP/JPEG decoder using ffmpeg library" -#~ msgstr "En RTP/JPEG decoder via ffmpeg" - -#~ msgid "A MJPEG decoder using ffmpeg library" -#~ msgstr "En MJPEG decode via ffmpeg" - -#~ msgid "A snow decoder using ffmpeg library" -#~ msgstr "En snow decoder via ffmpeg" - -#~ msgid "A video H.263 encoder using ffmpeg library." -#~ msgstr "En video h.263 encoder via ffmpeg" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library. It is compliant with old " -#~ "RFC2190 spec." -#~ msgstr "" -#~ "En video h.263 encoder via ffmpeg, kompatibel med den gamla RFC2190 " -#~ "specificationen." - -#~ msgid "A video MPEG4 encoder using ffmpeg library." -#~ msgstr "En video MPEG4 encoder via ffmpeg" - -#~ msgid "A video snow encoder using ffmpeg library." -#~ msgstr "En video snow encoder via ffmpeg" - -#~ msgid "A RTP/MJPEG encoder using ffmpeg library." -#~ msgstr "En RTP/MJPEG encoder via ffmpeg" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library, compliant with old RFC2190 " -#~ "spec." -#~ msgstr "" -#~ "En video h.263 encoder via ffmpeg, kompatible med den gamla RFC2190 " -#~ "specifikationen." - -#~ msgid "" -#~ "The snow codec is royalty-free and is open-source. \n" -#~ "It uses innovative techniques that makes it one of most promising video " -#~ "codec. It is implemented within the ffmpeg project.\n" -#~ "However it is under development, quite unstable and compatibility with " -#~ "other versions cannot be guaranteed." -#~ msgstr "" -#~ "Snow codec:en är öppen källkod och utan royalties.\n" -#~ "Den använder sig av innovativa tekniker som gör den en av de bästa. Codec:" -#~ "en implementeras inom ffmpeg projektet.\n" -#~ "Dock, den är under utveckling och kompatibiliteten mellan versioner kan " -#~ "inte garanteras." - -#~ msgid "A MJPEG encoder using ffmpeg library." -#~ msgstr "En MJPEG encoder via ffmpeg" - -#, fuzzy -#~ msgid "A SDL-based video display" -#~ msgstr "En generisk video utgång" - -#~ msgid "A video4windows compatible source filter to stream pictures." -#~ msgstr "En video4windows kompatibel ingångsfilter för att strömma bilder." - -#~ msgid "A video for windows (vfw.h) based source filter to grab pictures." -#~ msgstr "En video för windows kompatibel ingångsfilter för att fånga bilder." - -#, fuzzy -#~ msgid "A video display based on windows DrawDib api" -#~ msgstr "En video utgångsfönster med SDL" - -#, fuzzy -#~ msgid "A filter that mixes down 16 bit sample audio streams" -#~ msgstr "En filter för att mäta nivåer på 16 bitars PCM audio strömmar" - -#, fuzzy -#~ msgid "A filter that converts from mono to stereo and vice versa." -#~ msgstr "Ett filter som kontrollerar och mäter ljudvolym" - -#, fuzzy -#~ msgid "Inter ticker communication filter." -#~ msgstr "Error med förbindelsen till servern." - -#, fuzzy -#~ msgid "Sound capture filter for MacOS X Audio Unit Service" -#~ msgstr "Fånga ljud med OSS drivrutiner" - -#, fuzzy -#~ msgid "Sound playback filter for MacOS X Audio Unit Service" -#~ msgstr "Ljud utgång med OSS drivrutiner" - -#, fuzzy -#~ msgid "A video display using X11+Xv" -#~ msgstr "En video utgångsfönster med SDL" - -#, fuzzy -#~ msgid "Sound capture filter for Android" -#~ msgstr "Fånga ljud med OSS drivrutiner" - -#, fuzzy -#~ msgid "Sound playback filter for Android" -#~ msgstr "Ljud utgång med OSS drivrutiner" - -#, fuzzy -#~ msgid "A filter that captures Android video." -#~ msgstr "Ett filter som kontrollerar och mäter ljudvolym" - -#~ msgid "" -#~ "Your machine appears to be connected to an IPv6 network. By default " -#~ "linphone always uses IPv4. Please update your configuration if you want " -#~ "to use IPv6" -#~ msgstr "" -#~ "Din dator verkar vara kopplad till ett IPv6 nätverk. Default, använder " -#~ "linphone IPv4. Uppdatera din konfiguration om du vill använda IPv6." - -#~ msgid "Show debug messages" -#~ msgstr "Visa debugfönstret" - -#~ msgid "Start call" -#~ msgstr "Ring" - -#~ msgid "_Modes" -#~ msgstr "_Media" - -#~ msgid "Created by Simon Morlat\n" -#~ msgstr "Skapad av Simon Morlat\n" - -#~ msgid "Accept" -#~ msgstr "Godkänn" - -#~ msgid "Incoming call from" -#~ msgstr "Inkommande samtal från" - -#~ msgid "Linphone - Incoming call" -#~ msgstr "Linphone - Inkommande samtal" - -#~ msgid "default soundcard\n" -#~ msgstr "default ljudkort\n" - -#~ msgid "" -#~ "Remote end seems to have disconnected, the call is going to be closed." -#~ msgstr "" -#~ "Motparten verkar ha avbrutit samtalet, samtalet kommer att avslutas." - -#~ msgid "Sorry, having multiple simultaneous calls is not supported yet !" -#~ msgstr "Förlåt, men linphone stödjer inte flera samtliga samtal än!" - -#~ msgid "Could not reach destination." -#~ msgstr "Kunde inte nå motparten." - -#~ msgid "Request Cancelled." -#~ msgstr "Förfrågan avbruten." - -#~ msgid "Bad request" -#~ msgstr "Fel förfråga." - -#~ msgid "User cannot be found at given address." -#~ msgstr "Användaren kan inte hittas vid den angivna adressen." - -#~ msgid "Remote user cannot support any of proposed codecs." -#~ msgstr "Motparten stödjer ingen av de föreslagna codecs." - -#~ msgid "Timeout." -#~ msgstr "time out." - -#~ msgid "Remote host was found but refused connection." -#~ msgstr "Motparten hittades men ville inte ta emot samtalet." - -#~ msgid "" -#~ "User is not reachable at the moment but he invites you\n" -#~ "to contact him using the following alternate resource:" -#~ msgstr "" -#~ "Användaren kan inte nås för tillfället men han/hon ber digatt kontakta " -#~ "honom/henna vid följande resurs:" - -#~ msgid "Digits" -#~ msgstr "Tangenter" - -#~ msgid "Main view" -#~ msgstr "Huvud vy" - -#~ msgid "No nat/firewall address supplied !" -#~ msgstr "Ingen NAT / brandväggs adress angiven!" - -#~ msgid "Invalid nat address '%s' : %s" -#~ msgstr "Fel NAT adress '%s': %s" - -#~ msgid "Gone" -#~ msgstr "Har gått" - -#~ msgid "Waiting for Approval" -#~ msgstr "Väntar för godkännandet" - -#~ msgid "Be Right Back" -#~ msgstr "Kommer strax tillbaka" - -#~ msgid "On The Phone" -#~ msgstr "På telefon" - -#~ msgid "Out To Lunch" -#~ msgstr "Lunchar" - -#~ msgid "Closed" -#~ msgstr "Stängt" - -#~ msgid "Unknown" -#~ msgstr "Okänd" - -#~ msgid "Bresilian" -#~ msgstr "Brasiliansk" - -#~ msgid "_View" -#~ msgstr "_Vy" diff --git a/po/zh_CN.po b/po/zh_CN.po index c0eab3db4..f0897d0da 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1,21 +1,20 @@ -# SIP Telephony Application. -# Copyright (C) 2001, 2002, 2011 Free Software Foundation, Inc. -# Simon Morlat , 2001. -# Jiang Honglei, 2002. -# Aron Xu , 2011. -# +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: linphone 3.3.2\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2011-01-08 23:51+0800\n" -"Last-Translator: Aron Xu \n" -"Language-Team: Chinese (simplified) \n" -"Language: zh\n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:15+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/linphone-gtk/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -29,28 +28,25 @@ msgid "Send text to %s" msgstr "发送消息给 %s" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "正在呼叫" +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "中断" +msgstr "" #: ../gtk/calllogs.c:320 -#, fuzzy msgid "Missed" -msgstr "丢失" +msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "拒绝" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format @@ -88,9 +84,8 @@ msgid "Conference" msgstr "" #: ../gtk/conference.c:46 -#, fuzzy msgid "Me" -msgstr "静音" +msgstr "" #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102 #, c-format @@ -127,107 +122,92 @@ msgstr "是否设置呼叫自动应答" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" msgstr "指定工作目录(应为安装目录例如 C:\\Program Files\\Linphone)" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "确认" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "帐户设置向导" +msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "与 %s 通话" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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" -"如果您回答否,则会将该人临时性的放入黑名单" +msgstr "%s 想加您为联系人。\n您是否允许他看到您的在线状态或者将它加为您的联系人允许?\n如果您回答否,则会将该人临时性的放入黑名单" -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "请输入 %s@%s 的密码:" +msgstr "" -#: ../gtk/main.c:1376 -#, fuzzy +#: ../gtk/main.c:1283 msgid "Call error" -msgstr "呼叫历史" +msgstr "" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "呼叫结束" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "呼入" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "拒绝" -#: ../gtk/main.c:1392 -#, fuzzy +#: ../gtk/main.c:1299 msgid "Call paused" -msgstr "中断" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "端口" +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "网站" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Linphone - 互联网视频电话" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (默认)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"未在此计算机上检测到声卡。\n" -"您无法发送或接收音频呼叫。" +msgstr "未在此计算机上检测到声卡。\n您无法发送或接收音频呼叫。" -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "免费的 SIP 视频电话" @@ -244,9 +224,8 @@ msgid "Name" msgstr "名称" #: ../gtk/friendlist.c:721 -#, fuzzy msgid "Call" -msgstr "呼叫 %s" +msgstr "" #: ../gtk/friendlist.c:726 msgid "Chat" @@ -268,9 +247,9 @@ msgid "Delete contact '%s'" msgstr "删除联系人 %s" #: ../gtk/friendlist.c:978 -#, fuzzy, c-format +#, c-format msgid "Delete chat history of '%s'" -msgstr "删除联系人 %s" +msgstr "" #: ../gtk/friendlist.c:1029 #, c-format @@ -286,9 +265,8 @@ msgid "Status" msgstr "状态" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "最小比特率(kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -306,92 +284,92 @@ msgstr "禁用" msgid "Account" msgstr "帐户" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "英语" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "法语" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "瑞典语" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "意大利语" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "西班牙语" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "巴西葡萄牙语" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "波兰语" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "德语" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "俄语" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "日语" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "荷兰语" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "匈牙利语" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "捷克语" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "中文" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "您需要重启 linphone 以使语言选择生效。" -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -400,9 +378,7 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"%s 有新版本。\n" -"您是否要打开浏览器下载它?" +msgstr "%s 有新版本。\n您是否要打开浏览器下载它?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -438,24 +414,19 @@ msgstr[0] "找到 %i 联系方式" msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"欢迎使用 Linphone!\n" -"设置向导将帮助您配置打网络电话的 SIP 帐户。" +msgstr "欢迎使用 Linphone!\n设置向导将帮助您配置打网络电话的 SIP 帐户。" #: ../gtk/setupwizard.c:43 -#, fuzzy msgid "Create an account on linphone.org" -msgstr "通过选择一个用户名创建一个新的帐户" +msgstr "" #: ../gtk/setupwizard.c:44 -#, fuzzy msgid "I have already a linphone.org account and I just want to use it" -msgstr "我已经有一个帐户,并想使用原来的帐户" +msgstr "" #: ../gtk/setupwizard.c:45 -#, fuzzy msgid "I have already a sip account and I just want to use it" -msgstr "我已经有一个帐户,并想使用原来的帐户" +msgstr "" #: ../gtk/setupwizard.c:46 msgid "I want to specify a remote configuration URI" @@ -478,14 +449,12 @@ msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "用户名" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "密码" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -500,14 +469,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "用户名:" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "密码:" +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -533,15 +500,13 @@ msgstr "谢谢,您的帐户已经配置完毕,可以使用。" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "帐户设置向导" +msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -552,9 +517,8 @@ msgid "Account setup assistant" msgstr "帐户设置向导" #: ../gtk/setupwizard.c:629 -#, fuzzy msgid "Configure your account (step 1/1)" -msgstr "配置 SIP 帐户" +msgstr "" #: ../gtk/setupwizard.c:634 msgid "Enter your sip username (step 1/1)" @@ -573,14 +537,13 @@ msgid "Error" msgstr "" #: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 -#, fuzzy msgid "Terminating" -msgstr "终止呼叫" +msgstr "" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, fuzzy, c-format +#, c-format msgid "Call #%i" -msgstr "呼叫 %s" +msgstr "" #: ../gtk/incall_view.c:155 #, c-format @@ -588,18 +551,16 @@ msgid "Transfer to call #%i with %s" msgstr "" #: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 -#, fuzzy msgid "Not used" -msgstr "未找到" +msgstr "" #: ../gtk/incall_view.c:221 msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "ICE 过滤器" +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -610,9 +571,8 @@ msgid "Going through one or more NATs" msgstr "" #: ../gtk/incall_view.c:229 -#, fuzzy msgid "Direct" -msgstr "已重定向" +msgstr "" #: ../gtk/incall_view.c:231 msgid "Through a relay server" @@ -623,9 +583,8 @@ msgid "uPnP not activated" msgstr "" #: ../gtk/incall_view.c:241 -#, fuzzy msgid "uPnP in progress" -msgstr "正在进行 Stun 查找..." +msgstr "" #: ../gtk/incall_view.c:243 msgid "uPnp not available" @@ -636,9 +595,8 @@ msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "ICE 过滤器" +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -665,112 +623,108 @@ msgstr "" msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "正在呼叫..." -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "00::00::00" -#: ../gtk/incall_view.c:515 -#, fuzzy +#: ../gtk/incall_view.c:525 msgid "Incoming call" -msgstr "呼入" +msgstr "" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:702 -#, fuzzy +#: ../gtk/incall_view.c:722 msgid "In call" -msgstr "正在呼叫" +msgstr "" -#: ../gtk/incall_view.c:738 -#, fuzzy +#: ../gtk/incall_view.c:758 msgid "Paused call" -msgstr "正在呼叫" +msgstr "" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "%02i::%02i::%02i" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "通话结束。" -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 +#: ../gtk/incall_view.c:828 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "呼叫失败。" +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 msgid "(Paused)" msgstr "" @@ -780,9 +734,9 @@ msgid "Please enter login information for %s" msgstr "请输入 %s 的登录信息" #: ../gtk/config-fetching.c:57 -#, fuzzy, c-format +#, c-format msgid "fetching from %s" -msgstr "来自 %s 的呼叫" +msgstr "" #: ../gtk/config-fetching.c:73 #, c-format @@ -806,18 +760,14 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"欢迎使用 Linphone!\n" -"设置向导将帮助您配置打网络电话的 SIP 帐户。" #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "录音设备:" +msgstr "" #: ../gtk/audio_assistant.c:329 msgid "Recorded volume" @@ -828,9 +778,8 @@ msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "回放设备:" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -849,14 +798,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "配置向导" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "帐户设置向导" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -871,9 +818,8 @@ msgid "Record and Play" msgstr "" #: ../gtk/main.ui.h:1 -#, fuzzy msgid "Callee name" -msgstr "通话结束。" +msgstr "" #: ../gtk/main.ui.h:2 msgid "Send" @@ -916,22 +862,16 @@ msgid "All users" msgstr "" #: ../gtk/main.ui.h:18 -#, fuzzy msgid "Online users" msgstr "" -"全部用户\n" -"在线用户" #: ../gtk/main.ui.h:19 msgid "ADSL" msgstr "" #: ../gtk/main.ui.h:20 -#, fuzzy msgid "Fiber Channel" msgstr "" -"ADSL\n" -"光纤" #: ../gtk/main.ui.h:21 msgid "Default" @@ -942,9 +882,8 @@ msgid "_Options" msgstr "" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "确认" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -959,24 +898,20 @@ msgid "_Help" msgstr "" #: ../gtk/main.ui.h:27 -#, fuzzy msgid "Show debug window" -msgstr "Linphone 调试窗口" +msgstr "" #: ../gtk/main.ui.h:28 -#, fuzzy msgid "_Homepage" -msgstr "主页" +msgstr "" #: ../gtk/main.ui.h:29 -#, fuzzy msgid "Check _Updates" -msgstr "检查更新" +msgstr "" #: ../gtk/main.ui.h:30 -#, fuzzy msgid "Account assistant" -msgstr "帐户设置向导" +msgstr "" #: ../gtk/main.ui.h:32 msgid "SIP address or phone number:" @@ -999,14 +934,12 @@ msgid "Add contacts from directory" msgstr "从目录增加联系人" #: ../gtk/main.ui.h:37 -#, fuzzy msgid "Add contact" -msgstr "找到 %i 联系方式" +msgstr "" #: ../gtk/main.ui.h:38 -#, fuzzy msgid "Recent calls" -msgstr "呼入" +msgstr "" #: ../gtk/main.ui.h:39 msgid "My current identity:" @@ -1057,7 +990,6 @@ msgid "An internet video phone using the standard SIP (rfc3261) protocol." msgstr "一个采用标准 SIP (rfc3261) 协议的互联网视频电话" #: ../gtk/about.ui.h:5 -#, fuzzy msgid "" "fr: Simon Morlat\n" "en: Simon Morlat and Delphine Perreau\n" @@ -1072,18 +1004,6 @@ msgid "" "hu: anonymous\n" "he: Eli Zaretskii \n" msgstr "" -"fr: Simon Morlat\n" -"en: Simon Morlat and Delphine Perreau\n" -"it: Alberto Zanoni \n" -"de: Jean-Jacques Sarton \n" -"sv: Daniel Nylander \n" -"es: Jesus Benitez \n" -"ja: YAMAGUCHI YOSHIYA \n" -"pt_BR: Rafael Caesar Lenzi \n" -"pl: Robert Nasiadek \n" -"cs: Petr Pisar \n" -"hu: anonymous\n" -"zh_CN: Jiang Honglei 和 Aron Xu \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1110,9 +1030,8 @@ msgid "Scroll to end" msgstr "" #: ../gtk/password.ui.h:1 -#, fuzzy msgid "Linphone - Authentication required" -msgstr "Linphone - 需要认证" +msgstr "" #: ../gtk/password.ui.h:2 msgid "Please enter the domain password" @@ -1127,9 +1046,8 @@ msgid "Clear all" msgstr "" #: ../gtk/call_logs.ui.h:3 -#, fuzzy msgid "Call back" -msgstr "呼叫 %s" +msgstr "" #: ../gtk/sip_account.ui.h:1 msgid "Linphone - Configure a SIP account" @@ -1160,9 +1078,8 @@ msgid "Registration duration (sec):" msgstr "注册间隔(秒):" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "路由(可选):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1173,9 +1090,8 @@ msgid "Route (optional):" msgstr "路由(可选):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "传输协议" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1186,9 +1102,8 @@ msgid "Publish presence information" msgstr "发布在线状态" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "启用" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1211,9 +1126,8 @@ msgid "default soundcard" msgstr "默认声卡" #: ../gtk/parameters.ui.h:5 -#, fuzzy msgid "a sound card" -msgstr "声卡\n" +msgstr "" #: ../gtk/parameters.ui.h:6 msgid "default camera" @@ -1224,37 +1138,28 @@ msgid "CIF" msgstr "CIF" #: ../gtk/parameters.ui.h:8 -#, fuzzy msgid "Audio codecs" msgstr "" -"音频编解码器\n" -"视频编解码器" #: ../gtk/parameters.ui.h:9 -#, fuzzy msgid "Video codecs" msgstr "" -"音频编解码器\n" -"视频编解码器" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" msgstr "C" #: ../gtk/parameters.ui.h:11 -#, fuzzy msgid "SIP (UDP)" -msgstr "SIP (UDP):" +msgstr "" #: ../gtk/parameters.ui.h:12 -#, fuzzy msgid "SIP (TCP)" -msgstr "SIP (UDP):" +msgstr "" #: ../gtk/parameters.ui.h:13 -#, fuzzy msgid "SIP (TLS)" -msgstr "SIP (UDP):" +msgstr "" #: ../gtk/parameters.ui.h:14 msgid "Settings" @@ -1321,23 +1226,20 @@ msgid "Direct connection to the Internet" msgstr "直接连接到互联网" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "在 NAT 或防火墙后(填写网关 IP)" +msgstr "" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" msgstr "在 NAT 或防火墙后(使用 STUN 解决)" #: ../gtk/parameters.ui.h:32 -#, fuzzy msgid "Behind NAT / Firewall (use ICE)" -msgstr "在 NAT 或防火墙后(使用 STUN 解决)" +msgstr "" #: ../gtk/parameters.ui.h:33 -#, fuzzy msgid "Behind NAT / Firewall (use uPnP)" -msgstr "在 NAT 或防火墙后(使用 STUN 解决)" +msgstr "" #: ../gtk/parameters.ui.h:34 msgid "Public IP address:" @@ -1392,9 +1294,8 @@ msgid "Prefered video resolution:" msgstr "视频分辨率:" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "视频输入设备:" +msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1515,23 +1416,20 @@ msgid "User interface" msgstr "用户界面" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "SIP 代理地址:" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "Linphone - 需要认证" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "标签" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "代理帐户" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" @@ -1562,46 +1460,36 @@ msgid "Please wait" msgstr "请稍候" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "设置" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" msgstr "" #: ../gtk/dscp_settings.ui.h:3 -#, fuzzy msgid "Audio RTP stream" -msgstr "音频重采样" +msgstr "" #: ../gtk/dscp_settings.ui.h:4 -#, fuzzy msgid "Video RTP stream" -msgstr "视频 RTP/UDP:" +msgstr "" #: ../gtk/dscp_settings.ui.h:5 msgid "Set DSCP values (in hexadecimal)" msgstr "" #: ../gtk/call_statistics.ui.h:1 -#, fuzzy msgid "Call statistics" -msgstr "呼叫详情" +msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" msgstr "" -"音频编解码器\n" -"视频编解码器" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" msgstr "" -"音频编解码器\n" -"视频编解码器" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1628,24 +1516,20 @@ msgid "Video resolution received" msgstr "" #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "视频分辨率:" +msgstr "" #: ../gtk/call_statistics.ui.h:11 -#, fuzzy msgid "RTP profile" -msgstr "RTP 输入过滤器" +msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "联系人信息" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 -#, fuzzy msgid "Configure VoIP tunnel" -msgstr "配置 SIP 帐户" +msgstr "" #: ../gtk/tunnel_config.ui.h:2 msgid "Host" @@ -1724,9 +1608,8 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "设置" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" @@ -1737,9 +1620,8 @@ msgid "Not yet available" msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "编解码器" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1754,9 +1636,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "音频" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1772,18 +1653,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "SIP 地址或电话号码:" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "找人" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1798,9 +1677,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "视频" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1824,11 +1702,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1836,84 +1711,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "正在连接..." +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "就绪" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "确认" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "查询电话号码目的地..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "该号码无法解析。" #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "联系中" -#: ../coreapi/linphonecore.c:2425 -#, fuzzy +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" -msgstr "无法呼叫" +msgstr "" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:2745 +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" msgstr "正在联系您" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr " 并询问了自动回答。" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "." -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "已连接。" -#: ../coreapi/linphonecore.c:3220 -#, fuzzy +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" -msgstr "中断" +msgstr "" -#: ../coreapi/linphonecore.c:3412 -#, fuzzy +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" -msgstr "无法呼叫" +msgstr "" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "正在进行 Stun 查找..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1962,507 +1832,146 @@ msgid "Pending" msgstr "挂起" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "通话时间" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "未知错误" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "您输入的 SIP 代理地址无效,它必须是以“sip:”开头,并紧随一个主机名。" -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"您输入的地址无效。\n" -"它应具有“sip:用户名@代理域”的形式,例如 sip:alice@example.net" +msgstr "您输入的地址无效。\n它应具有“sip:用户名@代理域”的形式,例如 sip:alice@example.net" -#: ../coreapi/proxy.c:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "无法登录为 %s" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "响铃。" -#: ../coreapi/callbacks.c:373 -#, fuzzy +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." -msgstr "响铃。" +msgstr "" -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:435 -#, fuzzy, c-format +#: ../coreapi/callbacks.c:475 +#, c-format msgid "Call with %s is paused." -msgstr "与 %s 通话" +msgstr "" -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:459 -#, fuzzy +#: ../coreapi/callbacks.c:498 msgid "Call resumed." -msgstr "呼叫结束" +msgstr "" -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" + +#: ../coreapi/callbacks.c:560 msgid "We have been resumed." msgstr "" -#: ../coreapi/callbacks.c:521 +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "通话结束。" -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "被叫正忙。" -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "您呼叫的用户暂时无法接通。" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "用户已开启免打扰功能。" -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "呼叫被拒绝。" -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "已重定向" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." -msgstr "" - -#: ../coreapi/callbacks.c:798 +#: ../coreapi/callbacks.c:835 msgid "Call failed." msgstr "呼叫失败。" -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "成功注册到 %s" -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "已在 %s 解除注册。" -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "没有响应,超时" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "注册到 %s 失败: %s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:174 +#, c-format msgid "Authentication token is %s" -msgstr "Linphone - 需要认证" +msgstr "" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "您错过了 %i 个呼叫。" - -#~ msgid "aborted" -#~ msgstr "中断" - -#~ msgid "completed" -#~ msgstr "完成" - -#~ msgid "missed" -#~ msgstr "丢失" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s @ %s\n" -#~ "主叫:%s\n" -#~ "被叫: %s\n" -#~ "状态:%s\n" -#~ "状态:%i 分 %i 秒\n" - -#~ msgid "Outgoing call" -#~ msgstr "呼出" - -#~ msgid "No response." -#~ msgstr "没有响应。" - -#~ msgid "Protocol error." -#~ msgstr "协议错误。" - -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "" -#~ "无法解析给定的 SIP 地址,SIP 地址应有如下格式:\n" -#~ "sip:用户名@域名" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "您的计算机正使用 ALSA 声音驱动。\n" -#~ "ALSA 是最佳选择,然而 Linphone 必须的 PCM OSS 模拟模块缺失。\n" -#~ "请以 root 用户运行 modprobe snd-pcm-oss 载入它。" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "您的计算机正使用 ALSA 声音驱动。\n" -#~ "ALSA 是最佳选择,然而 Linphone 必须的 Mixer OSS 模拟模块缺失。\n" -#~ "请以 root 用户运行 modprobe snd-mixer-oss 载入它。" - -#~ msgid "Keypad" -#~ msgstr "数字键盘" - -#~ msgid "Chat with %s" -#~ msgstr "与 %s 通话" - -#~ msgid "Please choose a username:" -#~ msgstr "请选择用户名:" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "检查 %s 是否可用..." - -#~ msgid "Please wait..." -#~ msgstr "请稍候..." - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "对不起,该用户已经存在,请换一个尝试。" - -#~ msgid "Ok !" -#~ msgstr "成功!" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "连接错误,请稍后重试。" - -#~ msgid "Choosing a username" -#~ msgstr "选择用户名:" - -#~ msgid "Verifying" -#~ msgstr "验证中" - -#~ msgid "Creating your account" -#~ msgstr "正在创建您的帐户" - -#~ msgid "Now ready !" -#~ msgstr "就绪!" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "启用" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "请输入用户名、电话号码或完整的 SIP 地址" - -#~ msgid "Lookup:" -#~ msgstr "查找:" - -#~ msgid "in" -#~ msgstr "于" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "注册到 FONICS\n" -#~ "虚拟网络!" - -#~ msgid "No common codecs" -#~ msgstr "未找到常用编解码器" - -#~ msgid "Unmute" -#~ msgstr "取消静音" - -#~ msgid "Contact list" -#~ msgstr "联系人列表" - -#, 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 "ITU-G.711 alaw encoder" -#~ msgstr "ITU-G.711 alaw 编码器" - -#~ msgid "ITU-G.711 alaw decoder" -#~ msgstr "ITU-G.711 alaw 解码器" - -#~ msgid "Alsa sound source" -#~ msgstr "Alsa 音频源" - -#~ msgid "Alsa sound output" -#~ msgstr "Alsa 音频输出" - -#~ msgid "Sound capture filter for MacOS X Audio Queue Service" -#~ msgstr "MacOS X 音频队列服务音频输入过滤器" - -#~ msgid "Sound playback filter for MacOS X Audio Queue Service" -#~ msgstr "MacOS X 音频队列服务音频回放过滤器" - -#~ msgid "DTMF generator" -#~ msgstr "DTMF 生成器" - -#~ msgid "The GSM full-rate codec" -#~ msgstr "GSM 全速编解码器" - -#~ msgid "The GSM codec" -#~ msgstr "GSM 编解码器" - -#, fuzzy -#~ msgid "Sound capture filter for MacOS X Audio Unit" -#~ msgstr "MacOS X 音频队列服务音频输入过滤器" - -#, fuzzy -#~ msgid "Sound playback filter for MacOS X Audio Unit" -#~ msgstr "MacOS X 音频队列服务音频回放过滤器" - -#~ msgid "Raw files and wav reader" -#~ msgstr "原始文件和 Wav 读取器" - -#~ msgid "Wav file recorder" -#~ msgstr "Wav 文件记录器" - -#~ msgid "A filter that send several inputs to one output." -#~ msgstr "将多个输入发送至单个输出。" - -#~ msgid "RTP output filter" -#~ msgstr "RTP 输出过滤器" - -#~ msgid "The free and wonderful speex codec" -#~ msgstr "优秀的自由软件编解码器 Speex" - -#~ msgid "A filter that controls and measure sound volume" -#~ msgstr "控制和调节音量的过滤器" - -#~ msgid "A video4linux compatible source filter to stream pictures." -#~ msgstr "用于图像流的 video4linux 兼容源过滤器" - -#~ msgid "A filter to grab pictures from Video4Linux2-powered cameras" -#~ msgstr "用于从 Video4Linux2 驱动的摄像头获取图像的过滤器" - -#~ msgid "A filter that outputs a static image." -#~ msgstr "输出静态图像的过滤器" - -#~ msgid "A pixel format converter" -#~ msgstr "像素格式转换器" - -#~ msgid "A video size converter" -#~ msgstr "视频尺寸转换器" - -#~ msgid "a small video size converter" -#~ msgstr "小的视频尺寸转换器" - -#~ msgid "Echo canceller using speex library" -#~ msgstr "使用 Speex 库的回声抑制器" - -#~ msgid "A filter that reads from input and copy to its multiple outputs." -#~ msgstr "用于读取输入并复制到多个输出的过滤器" - -#~ msgid "The theora video encoder from xiph.org" -#~ msgstr "来自 xiph.org 的 Theora 视频编码器" - -#~ msgid "The open-source and royalty-free 'theora' video codec from xiph.org" -#~ msgstr "来自 xiph.org 的开源的自由软件编解码器 Theora" - -#~ msgid "The theora video decoder from xiph.org" -#~ msgstr "来自 xiph.org 的 Theora 视频解码器" - -#~ msgid "ITU-G.711 ulaw encoder" -#~ msgstr "ITU-G.711 ulaw 编码器" - -#~ msgid "ITU-G.711 ulaw decoder" -#~ msgstr "ITU-G.711 ulaw 解码器" - -#~ msgid "A H.263 decoder using ffmpeg library" -#~ msgstr "使用 ffmpeg 库的 H.263 解码器" - -#~ msgid "A MPEG4 decoder using ffmpeg library" -#~ msgstr "使用 ffmpeg 库的 MPEG4 解码器" - -#~ msgid "A RTP/JPEG decoder using ffmpeg library" -#~ msgstr "使用 ffmpeg 库的 RTP/JPEG 解码器" - -#~ msgid "A MJPEG decoder using ffmpeg library" -#~ msgstr "使用 ffmpeg 库的 MJPEG 解码器" - -#~ msgid "A snow decoder using ffmpeg library" -#~ msgstr "使用 ffmpeg 库的 snow 解码器" - -#~ msgid "A video H.263 encoder using ffmpeg library." -#~ msgstr "使用 ffmpeg 库的 H.263 编码器" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library. It is compliant with old " -#~ "RFC2190 spec." -#~ msgstr "使用 ffmpeg 库的 H.263 视频编码器,符合旧的 RFC2190" - -#~ msgid "A video MPEG4 encoder using ffmpeg library." -#~ msgstr "使用 ffmpeg 库的 MPEG4 视频编码器" - -#~ msgid "A video snow encoder using ffmpeg library." -#~ msgstr "使用 ffmpeg 库的 snow 编码器" - -#~ msgid "A RTP/MJPEG encoder using ffmpeg library." -#~ msgstr "使用 ffmpeg 库的 RTP/MJPEG 编码器" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library, compliant with old RFC2190 " -#~ "spec." -#~ msgstr "使用 ffmpeg 库的 H.263 编码器,符合旧的 RFC2190" - -#~ msgid "" -#~ "The snow codec is royalty-free and is open-source. \n" -#~ "It uses innovative techniques that makes it one of most promising video " -#~ "codec. It is implemented within the ffmpeg project.\n" -#~ "However it is under development, quite unstable and compatibility with " -#~ "other versions cannot be guaranteed." -#~ msgstr "" -#~ "Snow 编解码器是开源的自由软件。\n" -#~ "创新科技使 Snow 成为当今最有希望的视频编解码器。它在 ffmpeg 项目内实现。\n" -#~ "然而它仍处于开发中,稳定性和与其他版本的兼容性尚无法保证。" - -#~ msgid "A MJPEG encoder using ffmpeg library." -#~ msgstr "使用 ffmpeg 库的 MJPEG 编码器" - -#, fuzzy -#~ msgid "A SDL-based video display" -#~ msgstr "通用视频显示" - -#~ msgid "A webcam grabber based on directshow." -#~ msgstr "使用 DirectShow 的摄像头抓取器" - -#, fuzzy -#~ msgid "Sound capture filter for MacOS X Audio Unit Service" -#~ msgstr "MacOS X 音频队列服务音频输入过滤器" - -#, fuzzy -#~ msgid "Sound playback filter for MacOS X Audio Unit Service" -#~ msgstr "MacOS X 音频队列服务音频回放过滤器" - -#, fuzzy -#~ msgid "Sound capture filter for Android" -#~ msgstr "OSS 驱动的音频输入过滤器" - -#, fuzzy -#~ msgid "Sound playback filter for Android" -#~ msgstr "OSS 驱动的音频回放过滤器" - -#, fuzzy -#~ msgid "A filter that captures Android video." -#~ 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 " -#~ "to use IPv6" -#~ msgstr "" -#~ "您的机器有 IPv6 网络连接。Linphone 默认使用IPv4,如果您希望使用 IPv6 请更" -#~ "该配置。" - -#~ msgid "Sound capture filter for MacOS X Core Audio drivers" -#~ msgstr "MacOS X 核心声音驱动音频输入过滤器" - -#~ msgid "Sound playback filter for MacOS X Core Audio drivers" -#~ msgstr "MacOS X 核心声音驱动音频回放过滤器" - -#~ msgid "Show debug messages" -#~ msgstr "显示调试信息" - -#~ msgid "Start call" -#~ msgstr "开始呼叫" - -#~ msgid "_Modes" -#~ msgstr "模式(_M)" - -#~ msgid "Created by Simon Morlat\n" -#~ msgstr "由 Simon Morlat 创建\n" - -#~ msgid "Accept" -#~ msgstr "接受" - -#~ msgid "Incoming call from" -#~ msgstr "来自" - -#~ msgid "Linphone - Incoming call" -#~ msgstr "Linphone - 呼入" - -#~ msgid "default soundcard\n" -#~ msgstr "默认声卡\n" - -#~ msgid "" -#~ "Remote end seems to have disconnected, the call is going to be closed." -#~ msgstr "对方断开连接,通话终止。" - -#~ msgid "Sorry, having multiple simultaneous calls is not supported yet !" -#~ msgstr "抱歉, 还不支持并发多路呼叫!" diff --git a/po/zh_TW.po b/po/zh_TW.po index 789c278d5..22cfa3c0c 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1,20 +1,20 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: linphone 3.4\n" +"Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-15 09:24+0200\n" -"PO-Revision-Date: 2011-04-06 21:24+0800\n" -"Last-Translator: Chao-Hsiung Liao \n" -"Language-Team: \n" -"Language: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-19 10:15+0000\n" +"Last-Translator: Cqnqrd \n" +"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/linphone-gtk/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -28,28 +28,25 @@ msgid "Send text to %s" msgstr "傳送文字給 %s" #: ../gtk/calllogs.c:232 -#, fuzzy, c-format +#, c-format msgid "Recent calls (%i)" -msgstr "通話中" +msgstr "" #: ../gtk/calllogs.c:314 msgid "n/a" msgstr "" #: ../gtk/calllogs.c:317 -#, fuzzy msgid "Aborted" -msgstr "已放棄" +msgstr "" #: ../gtk/calllogs.c:320 -#, fuzzy msgid "Missed" -msgstr "未接" +msgstr "" #: ../gtk/calllogs.c:323 -#, fuzzy msgid "Declined" -msgstr "拒接" +msgstr "" #: ../gtk/calllogs.c:329 #, c-format @@ -87,9 +84,8 @@ msgid "Conference" msgstr "" #: ../gtk/conference.c:46 -#, fuzzy msgid "Me" -msgstr "靜音" +msgstr "" #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102 #, c-format @@ -126,110 +122,92 @@ msgstr "如啟用此項,將會自動接聽來電" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" -"指定一個工作目錄(應該為安裝的根目錄,例如:c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +msgstr "指定一個工作目錄(應該為安裝的根目錄,例如:c:\\Program Files\\Linphone)" #: ../gtk/main.c:156 -#, fuzzy msgid "Configuration file" -msgstr "確認" +msgstr "" #: ../gtk/main.c:163 -#, fuzzy msgid "Run the audio assistant" -msgstr "帳號設定助理" +msgstr "" -#: ../gtk/main.c:590 -#, c-format -msgid "Call with %s" -msgstr "和 %s 通話" - -#: ../gtk/main.c:1183 +#: ../gtk/main.c:1085 #, 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" -"如果您回答否,這個人會被暫時列入黑名單。" +msgstr "%s 想要加您加入他的連絡人清單。\n您是否要允許他看見您的上線狀態或將他加入您的連絡人清單?\n如果您回答否,這個人會被暫時列入黑名單。" -#: ../gtk/main.c:1260 -#, fuzzy, c-format +#: ../gtk/main.c:1162 +#, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -"請輸入您使用者名稱 %s\n" -"於網域 %s 的密碼:" -#: ../gtk/main.c:1376 -#, fuzzy +#: ../gtk/main.c:1283 msgid "Call error" -msgstr "通話紀錄" +msgstr "" -#: ../gtk/main.c:1379 ../coreapi/linphonecore.c:3240 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" msgstr "通話已結束" -#: ../gtk/main.c:1382 +#: ../gtk/main.c:1289 msgid "Incoming call" msgstr "來電" -#: ../gtk/main.c:1384 ../gtk/incall_view.c:522 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "接聽" -#: ../gtk/main.c:1386 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" msgstr "拒接" -#: ../gtk/main.c:1392 -#, fuzzy +#: ../gtk/main.c:1299 msgid "Call paused" -msgstr "通話已放棄" +msgstr "" -#: ../gtk/main.c:1392 -#, fuzzy, c-format +#: ../gtk/main.c:1299 +#, c-format msgid "by %s" -msgstr "連接埠" +msgstr "" -#: ../gtk/main.c:1459 +#: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1621 +#: ../gtk/main.c:1528 msgid "Website link" msgstr "網站連結" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" msgstr "Linphone - 網路視訊電話" -#: ../gtk/main.c:1762 +#: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" msgstr "%s (預設值)" -#: ../gtk/main.c:2099 ../coreapi/callbacks.c:949 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" msgstr "我們被轉接到 %s" -#: ../gtk/main.c:2109 +#: ../gtk/main.c:2016 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "" -"在這臺電腦中偵測不到音效卡。\n" -"您將無法傳送或接收語音電話。" +msgstr "在這臺電腦中偵測不到音效卡。\n您將無法傳送或接收語音電話。" -#: ../gtk/main.c:2250 +#: ../gtk/main.c:2157 msgid "A free SIP video-phone" msgstr "自由的 SIP 視訊電話" @@ -246,9 +224,8 @@ msgid "Name" msgstr "名稱" #: ../gtk/friendlist.c:721 -#, fuzzy msgid "Call" -msgstr "播打給 %s" +msgstr "" #: ../gtk/friendlist.c:726 msgid "Chat" @@ -270,9 +247,9 @@ msgid "Delete contact '%s'" msgstr "刪除連絡人「%s」" #: ../gtk/friendlist.c:978 -#, fuzzy, c-format +#, c-format msgid "Delete chat history of '%s'" -msgstr "刪除連絡人「%s」" +msgstr "" #: ../gtk/friendlist.c:1029 #, c-format @@ -288,9 +265,8 @@ msgid "Status" msgstr "狀態" #: ../gtk/propertybox.c:570 -#, fuzzy msgid "IP Bitrate (kbit/s)" -msgstr "最小頻寬 (kbit/s)" +msgstr "" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -308,92 +284,92 @@ msgstr "已停用" msgid "Account" msgstr "帳號" -#: ../gtk/propertybox.c:1063 +#: ../gtk/propertybox.c:1072 msgid "English" msgstr "英語" -#: ../gtk/propertybox.c:1064 +#: ../gtk/propertybox.c:1073 msgid "French" msgstr "法語" -#: ../gtk/propertybox.c:1065 +#: ../gtk/propertybox.c:1074 msgid "Swedish" msgstr "瑞典語" -#: ../gtk/propertybox.c:1066 +#: ../gtk/propertybox.c:1075 msgid "Italian" msgstr "義大利語" -#: ../gtk/propertybox.c:1067 +#: ../gtk/propertybox.c:1076 msgid "Spanish" msgstr "西班牙語" -#: ../gtk/propertybox.c:1068 +#: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" msgstr "巴西葡萄牙語" -#: ../gtk/propertybox.c:1069 +#: ../gtk/propertybox.c:1078 msgid "Polish" msgstr "波蘭語" -#: ../gtk/propertybox.c:1070 +#: ../gtk/propertybox.c:1079 msgid "German" msgstr "德語" -#: ../gtk/propertybox.c:1071 +#: ../gtk/propertybox.c:1080 msgid "Russian" msgstr "俄語" -#: ../gtk/propertybox.c:1072 +#: ../gtk/propertybox.c:1081 msgid "Japanese" msgstr "日語" -#: ../gtk/propertybox.c:1073 +#: ../gtk/propertybox.c:1082 msgid "Dutch" msgstr "荷蘭語" -#: ../gtk/propertybox.c:1074 +#: ../gtk/propertybox.c:1083 msgid "Hungarian" msgstr "匈牙利語" -#: ../gtk/propertybox.c:1075 +#: ../gtk/propertybox.c:1084 msgid "Czech" msgstr "捷克語" -#: ../gtk/propertybox.c:1076 +#: ../gtk/propertybox.c:1085 msgid "Chinese" msgstr "中文" -#: ../gtk/propertybox.c:1077 +#: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" msgstr "" -#: ../gtk/propertybox.c:1078 +#: ../gtk/propertybox.c:1087 msgid "Norwegian" msgstr "" -#: ../gtk/propertybox.c:1079 +#: ../gtk/propertybox.c:1088 msgid "Hebrew" msgstr "" -#: ../gtk/propertybox.c:1080 +#: ../gtk/propertybox.c:1089 msgid "Serbian" msgstr "" -#: ../gtk/propertybox.c:1147 +#: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "您需要重新啟動 linphone 才能讓新選擇的語言生效。" -#: ../gtk/propertybox.c:1225 +#: ../gtk/propertybox.c:1234 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1229 +#: ../gtk/propertybox.c:1238 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1235 +#: ../gtk/propertybox.c:1244 msgid "ZRTP" msgstr "" @@ -402,9 +378,7 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" -"在 %s 有最新的版本。\n" -"您想要開啟瀏覽器下載它嗎?" +msgstr "在 %s 有最新的版本。\n您想要開啟瀏覽器下載它嗎?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -440,24 +414,19 @@ msgstr[0] "找不到 %i 個連絡人" msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" -"歡迎!\n" -"這個助理會協助您使用電話的 SIP 帳號。" +msgstr "歡迎!\n這個助理會協助您使用電話的 SIP 帳號。" #: ../gtk/setupwizard.c:43 -#, fuzzy msgid "Create an account on linphone.org" -msgstr "以選擇的使用者名稱建立一個帳號" +msgstr "" #: ../gtk/setupwizard.c:44 -#, fuzzy msgid "I have already a linphone.org account and I just want to use it" -msgstr "我已經有帳號,並且要使用這個帳號" +msgstr "" #: ../gtk/setupwizard.c:45 -#, fuzzy msgid "I have already a sip account and I just want to use it" -msgstr "我已經有帳號,並且要使用這個帳號" +msgstr "" #: ../gtk/setupwizard.c:46 msgid "I want to specify a remote configuration URI" @@ -480,14 +449,12 @@ msgid "Enter your account informations" msgstr "" #: ../gtk/setupwizard.c:140 -#, fuzzy msgid "Username*" -msgstr "使用者名稱" +msgstr "" #: ../gtk/setupwizard.c:141 -#, fuzzy msgid "Password*" -msgstr "密碼" +msgstr "" #: ../gtk/setupwizard.c:144 msgid "Domain*" @@ -502,14 +469,12 @@ msgid "(*) Required fields" msgstr "" #: ../gtk/setupwizard.c:318 -#, fuzzy msgid "Username: (*)" -msgstr "使用者名稱:" +msgstr "" #: ../gtk/setupwizard.c:320 -#, fuzzy msgid "Password: (*)" -msgstr "密碼: " +msgstr "" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" @@ -535,15 +500,13 @@ msgstr "謝謝您。您的帳號已設定完成並且可以使用。" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" +"Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." msgstr "" #: ../gtk/setupwizard.c:600 -#, fuzzy msgid "SIP account configuration assistant" -msgstr "帳號設定助理" +msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -554,9 +517,8 @@ msgid "Account setup assistant" msgstr "帳號設定助理" #: ../gtk/setupwizard.c:629 -#, fuzzy msgid "Configure your account (step 1/1)" -msgstr "設定 SIP 帳號" +msgstr "" #: ../gtk/setupwizard.c:634 msgid "Enter your sip username (step 1/1)" @@ -579,9 +541,9 @@ msgid "Terminating" msgstr "" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, fuzzy, c-format +#, c-format msgid "Call #%i" -msgstr "播打給 %s" +msgstr "" #: ../gtk/incall_view.c:155 #, c-format @@ -589,18 +551,16 @@ msgid "Transfer to call #%i with %s" msgstr "" #: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 -#, fuzzy msgid "Not used" -msgstr "找不到" +msgstr "" #: ../gtk/incall_view.c:221 msgid "ICE not activated" msgstr "" #: ../gtk/incall_view.c:223 -#, fuzzy msgid "ICE failed" -msgstr "ICE 過濾器" +msgstr "" #: ../gtk/incall_view.c:225 msgid "ICE in progress" @@ -611,9 +571,8 @@ msgid "Going through one or more NATs" msgstr "" #: ../gtk/incall_view.c:229 -#, fuzzy msgid "Direct" -msgstr "已重新導向" +msgstr "" #: ../gtk/incall_view.c:231 msgid "Through a relay server" @@ -624,9 +583,8 @@ msgid "uPnP not activated" msgstr "" #: ../gtk/incall_view.c:241 -#, fuzzy msgid "uPnP in progress" -msgstr "正在進行 Stun 搜尋..." +msgstr "" #: ../gtk/incall_view.c:243 msgid "uPnp not available" @@ -637,9 +595,8 @@ msgid "uPnP is running" msgstr "" #: ../gtk/incall_view.c:247 -#, fuzzy msgid "uPnP failed" -msgstr "ICE 過濾器" +msgstr "" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -666,113 +623,110 @@ msgstr "" msgid "Hang up" msgstr "" -#: ../gtk/incall_view.c:501 +#: ../gtk/incall_view.c:511 msgid "Calling..." msgstr "播打..." -#: ../gtk/incall_view.c:504 ../gtk/incall_view.c:707 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" msgstr "00::00::00" -#: ../gtk/incall_view.c:515 +#: ../gtk/incall_view.c:525 msgid "Incoming call" msgstr "來電" -#: ../gtk/incall_view.c:552 +#: ../gtk/incall_view.c:562 msgid "good" msgstr "" -#: ../gtk/incall_view.c:554 +#: ../gtk/incall_view.c:564 msgid "average" msgstr "" -#: ../gtk/incall_view.c:556 +#: ../gtk/incall_view.c:566 msgid "poor" msgstr "" -#: ../gtk/incall_view.c:558 +#: ../gtk/incall_view.c:568 msgid "very poor" msgstr "" -#: ../gtk/incall_view.c:560 +#: ../gtk/incall_view.c:570 msgid "too bad" msgstr "" -#: ../gtk/incall_view.c:561 ../gtk/incall_view.c:577 +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" msgstr "" -#: ../gtk/incall_view.c:669 +#: ../gtk/incall_view.c:679 msgid "Secured by SRTP" msgstr "" -#: ../gtk/incall_view.c:675 +#: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:681 +#: ../gtk/incall_view.c:691 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:681 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:702 +#: ../gtk/incall_view.c:722 msgid "In call" msgstr "通話中" -#: ../gtk/incall_view.c:738 +#: ../gtk/incall_view.c:758 msgid "Paused call" msgstr "暫停通話" -#: ../gtk/incall_view.c:751 +#: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" msgstr "%02i::%02i::%02i" -#: ../gtk/incall_view.c:772 +#: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "通話結束。" -#: ../gtk/incall_view.c:803 +#: ../gtk/incall_view.c:825 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:806 -#, fuzzy +#: ../gtk/incall_view.c:828 msgid "Transfer done." -msgstr "轉接" +msgstr "" -#: ../gtk/incall_view.c:809 -#, fuzzy +#: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "轉接" +msgstr "" -#: ../gtk/incall_view.c:853 +#: ../gtk/incall_view.c:875 msgid "Resume" msgstr "繼續" -#: ../gtk/incall_view.c:860 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" msgstr "暫停" -#: ../gtk/incall_view.c:926 +#: ../gtk/incall_view.c:948 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:926 -#, fuzzy +#: ../gtk/incall_view.c:948 msgid "(Paused)" -msgstr "暫停" +msgstr "" #: ../gtk/loginframe.c:88 #, c-format @@ -806,18 +760,14 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"歡迎!\n" -"這個助理會協助您使用電話的 SIP 帳號。" #: ../gtk/audio_assistant.c:328 -#, fuzzy msgid "Capture device" -msgstr "捕捉裝置:" +msgstr "" #: ../gtk/audio_assistant.c:329 msgid "Recorded volume" @@ -828,9 +778,8 @@ msgid "No voice" msgstr "" #: ../gtk/audio_assistant.c:369 -#, fuzzy msgid "Playback device" -msgstr "播放裝置" +msgstr "" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" @@ -849,14 +798,12 @@ msgid "Let's start Linphone now" msgstr "" #: ../gtk/audio_assistant.c:496 -#, fuzzy msgid "Audio Assistant" -msgstr "帳號設定助理" +msgstr "" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -#, fuzzy msgid "Audio assistant" -msgstr "帳號設定助理" +msgstr "" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" @@ -871,9 +818,8 @@ msgid "Record and Play" msgstr "" #: ../gtk/main.ui.h:1 -#, fuzzy msgid "Callee name" -msgstr "通話結束。" +msgstr "" #: ../gtk/main.ui.h:2 msgid "Send" @@ -936,9 +882,8 @@ msgid "_Options" msgstr "選項(_O)" #: ../gtk/main.ui.h:23 -#, fuzzy msgid "Set configuration URI" -msgstr "確認" +msgstr "" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -965,9 +910,8 @@ msgid "Check _Updates" msgstr "檢查更新(_U)" #: ../gtk/main.ui.h:30 -#, fuzzy msgid "Account assistant" -msgstr "帳號設定助理" +msgstr "" #: ../gtk/main.ui.h:32 msgid "SIP address or phone number:" @@ -994,9 +938,8 @@ msgid "Add contact" msgstr "加入聯絡人" #: ../gtk/main.ui.h:38 -#, fuzzy msgid "Recent calls" -msgstr "通話中" +msgstr "" #: ../gtk/main.ui.h:39 msgid "My current identity:" @@ -1047,7 +990,6 @@ msgid "An internet video phone using the standard SIP (rfc3261) protocol." msgstr "使用標準 SIP (rfc3261) 通訊協定的網路視訊電話。" #: ../gtk/about.ui.h:5 -#, fuzzy msgid "" "fr: Simon Morlat\n" "en: Simon Morlat and Delphine Perreau\n" @@ -1062,17 +1004,6 @@ msgid "" "hu: anonymous\n" "he: Eli Zaretskii \n" msgstr "" -"fr: Simon Morlat\n" -"en: Simon Morlat and Delphine Perreau\n" -"it: Alberto Zanoni \n" -"de: Jean-Jacques Sarton \n" -"sv: Daniel Nylander \n" -"es: Jesus Benitez \n" -"ja: YAMAGUCHI YOSHIYA \n" -"pt_BR: Rafael Caesar Lenzi \n" -"pl: Robert Nasiadek \n" -"cs: Petr Pisar \n" -"hu: anonymous\n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1147,9 +1078,8 @@ msgid "Registration duration (sec):" msgstr "註冊時間 (秒):" #: ../gtk/sip_account.ui.h:8 -#, fuzzy msgid "Contact params (optional):" -msgstr "路由 (選擇性):" +msgstr "" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" @@ -1160,9 +1090,8 @@ msgid "Route (optional):" msgstr "路由 (選擇性):" #: ../gtk/sip_account.ui.h:11 -#, fuzzy msgid "Transport" -msgstr "傳輸" +msgstr "" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1173,9 +1102,8 @@ msgid "Publish presence information" msgstr "發布上線資訊" #: ../gtk/sip_account.ui.h:14 -#, fuzzy msgid "Enable AVPF" -msgstr "啟用" +msgstr "" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1222,19 +1150,16 @@ msgid "C" msgstr "C" #: ../gtk/parameters.ui.h:11 -#, fuzzy msgid "SIP (UDP)" -msgstr "SIP (UDP):" +msgstr "" #: ../gtk/parameters.ui.h:12 -#, fuzzy msgid "SIP (TCP)" -msgstr "SIP (TCP):" +msgstr "" #: ../gtk/parameters.ui.h:13 -#, fuzzy msgid "SIP (TLS)" -msgstr "SIP (TCP):" +msgstr "" #: ../gtk/parameters.ui.h:14 msgid "Settings" @@ -1301,23 +1226,20 @@ msgid "Direct connection to the Internet" msgstr "直接連線到網際網路" #: ../gtk/parameters.ui.h:30 -#, fuzzy msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "在 NAT / 防火牆之後 (在下面指定閘道器 IP)" +msgstr "" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" msgstr "在 NAT / 防火牆之後 (使用 STUN 解析)" #: ../gtk/parameters.ui.h:32 -#, fuzzy msgid "Behind NAT / Firewall (use ICE)" -msgstr "在 NAT / 防火牆之後 (使用 STUN 解析)" +msgstr "" #: ../gtk/parameters.ui.h:33 -#, fuzzy msgid "Behind NAT / Firewall (use uPnP)" -msgstr "在 NAT / 防火牆之後 (使用 STUN 解析)" +msgstr "" #: ../gtk/parameters.ui.h:34 msgid "Public IP address:" @@ -1372,9 +1294,8 @@ msgid "Prefered video resolution:" msgstr "偏好的視訊解析度:" #: ../gtk/parameters.ui.h:47 -#, fuzzy msgid "Video output method:" -msgstr "視訊輸入裝置:" +msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1495,23 +1416,20 @@ msgid "User interface" msgstr "使用者介面" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -#, fuzzy msgid "Server address:" -msgstr "SIP 代理位址:" +msgstr "" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -#, fuzzy msgid "Authentication method:" -msgstr "驗證失敗" +msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" msgstr "標籤" #: ../gtk/parameters.ui.h:81 -#, fuzzy msgid "LDAP Account setup" -msgstr "代理伺服器帳號" +msgstr "" #: ../gtk/parameters.ui.h:82 msgid "LDAP" @@ -1542,23 +1460,20 @@ msgid "Please wait" msgstr "請稍候" #: ../gtk/dscp_settings.ui.h:1 -#, fuzzy msgid "DSCP settings" -msgstr "設定值" +msgstr "" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" msgstr "" #: ../gtk/dscp_settings.ui.h:3 -#, fuzzy msgid "Audio RTP stream" -msgstr "音效重取樣器" +msgstr "" #: ../gtk/dscp_settings.ui.h:4 -#, fuzzy msgid "Video RTP stream" -msgstr "視訊 RTP/UDP:" +msgstr "" #: ../gtk/dscp_settings.ui.h:5 msgid "Set DSCP values (in hexadecimal)" @@ -1569,14 +1484,12 @@ msgid "Call statistics" msgstr "" #: ../gtk/call_statistics.ui.h:2 -#, fuzzy msgid "Audio codec" -msgstr "音訊編碼解碼器" +msgstr "" #: ../gtk/call_statistics.ui.h:3 -#, fuzzy msgid "Video codec" -msgstr "視訊編碼解碼器" +msgstr "" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1603,24 +1516,20 @@ msgid "Video resolution received" msgstr "" #: ../gtk/call_statistics.ui.h:10 -#, fuzzy msgid "Video resolution sent" -msgstr "偏好的視訊解析度:" +msgstr "" #: ../gtk/call_statistics.ui.h:11 -#, fuzzy msgid "RTP profile" -msgstr "RTP 輸入過濾隱器" +msgstr "" #: ../gtk/call_statistics.ui.h:12 -#, fuzzy msgid "Call statistics and information" -msgstr "連絡人資訊" +msgstr "" #: ../gtk/tunnel_config.ui.h:1 -#, fuzzy msgid "Configure VoIP tunnel" -msgstr "設定 SIP 帳號" +msgstr "" #: ../gtk/tunnel_config.ui.h:2 msgid "Host" @@ -1699,9 +1608,8 @@ msgid "1" msgstr "1" #: ../gtk/ldap.ui.h:1 -#, fuzzy msgid "LDAP Settings" -msgstr "設定值" +msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" @@ -1712,9 +1620,8 @@ msgid "Not yet available" msgstr "" #: ../gtk/ldap.ui.h:8 -#, fuzzy msgid "Connection" -msgstr "編碼解碼器" +msgstr "" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1729,9 +1636,8 @@ msgid "Realm" msgstr "" #: ../gtk/ldap.ui.h:12 -#, fuzzy msgid "SASL" -msgstr "音效" +msgstr "" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1747,18 +1653,16 @@ msgid "Name Attribute:" msgstr "" #: ../gtk/ldap.ui.h:17 -#, fuzzy msgid "SIP address attribute:" -msgstr "SIP 位址或電話號碼:" +msgstr "" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" msgstr "" #: ../gtk/ldap.ui.h:19 -#, fuzzy msgid "Search" -msgstr "搜尋某人" +msgstr "" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1773,9 +1677,8 @@ msgid "Follow Aliases" msgstr "" #: ../gtk/ldap.ui.h:23 -#, fuzzy msgid "Miscellaneous" -msgstr "視訊" +msgstr "" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" @@ -1799,11 +1702,8 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " msgstr "" #: ../gtk/config-uri.ui.h:4 @@ -1811,81 +1711,79 @@ msgid "https://" msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 -#, fuzzy msgid "Configuring..." -msgstr "連線中..." +msgstr "" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1034 +#: ../coreapi/linphonecore.c:1511 msgid "Ready" msgstr "準備就緒" -#: ../coreapi/linphonecore.c:1967 -#, fuzzy +#: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "確認" +msgstr "" -#: ../coreapi/linphonecore.c:2133 +#: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." msgstr "尋找電話號碼目的端..." -#: ../coreapi/linphonecore.c:2136 +#: ../coreapi/linphonecore.c:2637 msgid "Could not resolve this number." msgstr "無法解析這個號碼。" #. must be known at that time -#: ../coreapi/linphonecore.c:2418 +#: ../coreapi/linphonecore.c:2919 msgid "Contacting" msgstr "正在連絡" -#: ../coreapi/linphonecore.c:2425 +#: ../coreapi/linphonecore.c:2924 msgid "Could not call" msgstr "無法通話" -#: ../coreapi/linphonecore.c:2576 +#: ../coreapi/linphonecore.c:3074 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "抱歉,我們已達瀏同步通話的最大數目" -#: ../coreapi/linphonecore.c:2745 +#: ../coreapi/linphonecore.c:3233 msgid "is contacting you" msgstr "正在連絡您" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid " and asked autoanswer." msgstr "並要求自動接聽。" -#: ../coreapi/linphonecore.c:2746 +#: ../coreapi/linphonecore.c:3234 msgid "." msgstr "." -#: ../coreapi/linphonecore.c:2865 +#: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." msgstr "修改通話參數..." -#: ../coreapi/linphonecore.c:3194 +#: ../coreapi/linphonecore.c:3700 msgid "Connected." msgstr "已連線。" -#: ../coreapi/linphonecore.c:3220 +#: ../coreapi/linphonecore.c:3725 msgid "Call aborted" msgstr "通話已放棄" -#: ../coreapi/linphonecore.c:3412 +#: ../coreapi/linphonecore.c:3915 msgid "Could not pause the call" msgstr "無法暫停通話" -#: ../coreapi/linphonecore.c:3417 +#: ../coreapi/linphonecore.c:3919 msgid "Pausing the current call..." msgstr "暫停目前的通話..." -#: ../coreapi/misc.c:425 +#: ../coreapi/misc.c:438 msgid "Stun lookup in progress..." msgstr "正在進行 Stun 搜尋..." -#: ../coreapi/misc.c:607 +#: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1934,516 +1832,146 @@ msgid "Pending" msgstr "等待中" #: ../coreapi/friend.c:66 -#, fuzzy msgid "Vacation" -msgstr "時間長度" +msgstr "" #: ../coreapi/friend.c:68 msgid "Unknown-bug" msgstr "不明錯誤" -#: ../coreapi/proxy.c:314 +#: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "" -"您輸入的 sip 代理位址是無效的,它必須要以「sip:」開頭,後面接主機名稱。" +msgstr "您輸入的 sip 代理位址是無效的,它必須要以「sip:」開頭,後面接主機名稱。" -#: ../coreapi/proxy.c:320 +#: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "" -"您輸入的 sip 身分是無效的。\n" -"它應該看起來像 sip:使用者名稱@代理網域,像是 sip:alice@example.net" +msgstr "您輸入的 sip 身分是無效的。\n它應該看起來像 sip:使用者名稱@代理網域,像是 sip:alice@example.net" -#: ../coreapi/proxy.c:1369 +#: ../coreapi/proxy.c:1377 #, c-format msgid "Could not login as %s" msgstr "無法以 %s 登入" -#: ../coreapi/callbacks.c:355 +#: ../coreapi/callbacks.c:383 msgid "Remote ringing." msgstr "遠端響鈴。" -#: ../coreapi/callbacks.c:373 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing..." msgstr "遠端響鈴..." -#: ../coreapi/callbacks.c:384 +#: ../coreapi/callbacks.c:414 msgid "Early media." msgstr "早期媒體。" -#: ../coreapi/callbacks.c:435 +#: ../coreapi/callbacks.c:475 #, c-format msgid "Call with %s is paused." msgstr "和 %s 的通話已暫停。" -#: ../coreapi/callbacks.c:448 +#: ../coreapi/callbacks.c:488 #, c-format msgid "Call answered by %s - on hold." msgstr "通話由 %s 接聽 - 保留中。" -#: ../coreapi/callbacks.c:459 +#: ../coreapi/callbacks.c:498 msgid "Call resumed." msgstr "通話已繼續。" -#: ../coreapi/callbacks.c:464 +#: ../coreapi/callbacks.c:502 #, c-format msgid "Call answered by %s." msgstr "通話由 %s 接聽。" -#: ../coreapi/callbacks.c:483 +#: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:512 -#, fuzzy -msgid "We have been resumed." -msgstr "我們要繼續了..." +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "" -#: ../coreapi/callbacks.c:521 +#: ../coreapi/callbacks.c:560 +msgid "We have been resumed." +msgstr "" + +#. we are being paused +#: ../coreapi/callbacks.c:568 msgid "We are paused by other party." msgstr "" -#: ../coreapi/callbacks.c:556 +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:658 +#: ../coreapi/callbacks.c:705 msgid "Call terminated." msgstr "通話已終止。" -#: ../coreapi/callbacks.c:687 +#: ../coreapi/callbacks.c:733 msgid "User is busy." msgstr "使用者現正忙碌。" -#: ../coreapi/callbacks.c:688 +#: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." msgstr "使用者暫時無法聯繫。" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:690 +#: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." msgstr "使用者不想要被打擾。" -#: ../coreapi/callbacks.c:691 +#: ../coreapi/callbacks.c:737 msgid "Call declined." msgstr "通話被拒接。" -#: ../coreapi/callbacks.c:706 +#: ../coreapi/callbacks.c:752 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:780 msgid "Redirected" msgstr "已重新導向" -#: ../coreapi/callbacks.c:787 -msgid "Incompatible media parameters." -msgstr "" - -#: ../coreapi/callbacks.c:798 +#: ../coreapi/callbacks.c:835 msgid "Call failed." msgstr "通話失敗。" -#: ../coreapi/callbacks.c:878 +#: ../coreapi/callbacks.c:913 #, c-format msgid "Registration on %s successful." msgstr "在 %s 註冊成功。" -#: ../coreapi/callbacks.c:879 +#: ../coreapi/callbacks.c:914 #, c-format msgid "Unregistration on %s done." msgstr "在 %s 取消註冊完成。" -#: ../coreapi/callbacks.c:897 +#: ../coreapi/callbacks.c:932 msgid "no response timeout" msgstr "沒有回應逾時" -#: ../coreapi/callbacks.c:900 +#: ../coreapi/callbacks.c:935 #, c-format msgid "Registration on %s failed: %s" msgstr "在 %s 註冊失敗:%s" -#: ../coreapi/callbacks.c:907 +#: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:177 -#, fuzzy, c-format +#: ../coreapi/linphonecall.c:174 +#, c-format msgid "Authentication token is %s" -msgstr "驗證失敗" +msgstr "" -#: ../coreapi/linphonecall.c:2932 +#: ../coreapi/linphonecall.c:3020 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "您有 %i 通未接來電。" - -#~ msgid "aborted" -#~ msgstr "已放棄" - -#~ msgid "completed" -#~ msgstr "已完成" - -#~ msgid "missed" -#~ msgstr "未接" - -#~ msgid "" -#~ "%s at %s\n" -#~ "From: %s\n" -#~ "To: %s\n" -#~ "Status: %s\n" -#~ "Duration: %i mn %i sec\n" -#~ msgstr "" -#~ "%s 於 %s\n" -#~ "從:%s\n" -#~ "到:%s\n" -#~ "狀態:%s\n" -#~ "持續時間:%i 分 %i 秒\n" - -#~ msgid "Outgoing call" -#~ msgstr "去電" - -#~ msgid "No response." -#~ msgstr "沒有回應。" - -#~ msgid "Protocol error." -#~ msgstr "通訊協定錯誤。" - -#~ msgid "" -#~ "Could not parse given sip address. A sip url usually looks like sip:" -#~ "user@domain" -#~ msgstr "無法解析指定的 sip 位址。sip 網址通常看起來像 sip:user@domain" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the pcm oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ "'modprobe snd-pcm-oss' as root to load it." -#~ msgstr "" -#~ "您的電腦似乎是使用 ALSA 音效驅動程式。\n" -#~ "這是最好的選擇。然而缺少了 pcm oss 模擬模組\n" -#~ "而 linphone 需要它。請以 root 執行\n" -#~ "'modprobe snd-pcm-oss' 載入它。" - -#~ msgid "" -#~ "Your computer appears to be using ALSA sound drivers.\n" -#~ "This is the best choice. However the mixer oss emulation module\n" -#~ "is missing and linphone needs it. Please execute\n" -#~ " 'modprobe snd-mixer-oss' as root to load it." -#~ msgstr "" -#~ "您的電腦似乎是使用 ALSA 音效驅動程式。\n" -#~ "這是最好的選擇。然而缺少了 mixer oss 模擬模組\n" -#~ "而 linphone 需要它。請以 root 執行\n" -#~ "'modprobe snd-mixer-oss' 載入它。" - -#~ msgid "Keypad" -#~ msgstr "撥號盤" - -#~ msgid "Chat with %s" -#~ msgstr "和 %s 聊天" - -#~ msgid "Please choose a username:" -#~ msgstr "請選擇一個使用者名稱:" - -#~ msgid "Checking if '%s' is available..." -#~ msgstr "檢查「%s」是否可用…" - -#~ msgid "Please wait..." -#~ msgstr "請稍候..." - -#~ msgid "Sorry this username already exists. Please try a new one." -#~ msgstr "很抱歉這個使用者名稱已經存在。請嘗試新的名稱。" - -#~ msgid "Ok !" -#~ msgstr "確定!" - -#~ msgid "Communication problem, please try again later." -#~ msgstr "連線問題,請稍後再試一次。" - -#~ msgid "Choosing a username" -#~ msgstr "選擇使用者名稱" - -#~ msgid "Verifying" -#~ msgstr "檢驗中" - -#~ msgid "Creating your account" -#~ msgstr "正在建立您的帳號" - -#~ msgid "Now ready !" -#~ msgstr "現在已就緒!" - -#, fuzzy -#~ msgid "Enable video" -#~ msgstr "已啟用" - -#~ msgid "Enter username, phone number, or full sip address" -#~ msgstr "輸入使用者名稱、電話號碼或完整的 sip 位址" - -#~ msgid "Lookup:" -#~ msgstr "查詢:" - -#~ msgid "in" -#~ msgstr "於" - -#~ msgid "" -#~ "Register to FONICS\n" -#~ "virtual network !" -#~ msgstr "" -#~ "註冊到 FONICS\n" -#~ "虛擬網路!" - -#~ msgid "We are being paused..." -#~ msgstr "我們被暫停了..." - -#~ msgid "No common codecs" -#~ msgstr "沒有通用的編碼解碼器" - -#~ msgid "Windows" -#~ msgstr "視窗" - -#~ msgid "" -#~ "Pause all calls\n" -#~ "and answer" -#~ msgstr "" -#~ "暫停所有播打\n" -#~ "與接聽" - -#~ msgid "Unmute" -#~ msgstr "取消靜音" - -#~ msgid "Contact list" -#~ msgstr "連絡人清單 " - -#~ 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 "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 " -#~ "to use IPv6" -#~ msgstr "" -#~ "您的電腦似乎連接到 IPv6 網路。linphone 預設會先使用 IPv4。如果您想要使用 " -#~ "IPv6 請更新您的組態" - -#~ msgid "ITU-G.711 alaw encoder" -#~ msgstr "ITU-G.711 alaw 編碼器" - -#~ msgid "ITU-G.711 alaw decoder" -#~ msgstr "ITU-G.711 alaw 解碼器" - -#~ msgid "Alsa sound output" -#~ msgstr "Alsa 音效輸出" - -#~ msgid "Sound capture filter for MacOS X Audio Queue Service" -#~ msgstr "MacOS X 音效佇列服務的音效擷取過濾器" - -#~ msgid "Sound playback filter for MacOS X Audio Queue Service" -#~ msgstr "MacOS X 音效佇列服務的音效播放過濾器" - -#~ msgid "DTMF generator" -#~ msgstr "DTMF 產生器" - -#~ msgid "The GSM full-rate codec" -#~ msgstr "GSM 全頻率編解碼器" - -#~ msgid "The GSM codec" -#~ msgstr "GSM 編解碼器" - -#~ msgid "Sound capture filter for MacOS X Core Audio drivers" -#~ msgstr "MacOS X 核心音效驅動程式的音效擷取過濾器" - -#~ msgid "Sound playback filter for MacOS X Core Audio drivers" -#~ msgstr "MacOS X 核心音效驅動程式的音效播放過濾器" - -#~ msgid "A filter to make conferencing" -#~ msgstr "進行會議的過濾器" - -#~ msgid "Raw files and wav reader" -#~ msgstr "Raw 檔案與 wav 讀取器" - -#~ msgid "Wav file recorder" -#~ msgstr "Wav 檔案錄製器" - -#~ msgid "A filter that send several inputs to one output." -#~ msgstr "傳送多個輸入到一個輸出的過濾器。" - -#~ msgid "RTP output filter" -#~ msgstr "RTP 輸出過濾隱器" - -#~ msgid "The free and wonderful speex codec" -#~ msgstr "免費好用的 speex 編解碼器" - -#~ msgid "A filter that controls and measure sound volume" -#~ msgstr "控制並測量音量的過濾器" - -#~ msgid "A video4linux compatible source filter to stream pictures." -#~ msgstr "video4linux 相容來源過濾器至串流圖片。" - -#~ msgid "A filter to grab pictures from Video4Linux2-powered cameras" -#~ msgstr "從 Video4Linux2 攝影機擷取圖片的過濾器" - -#~ msgid "A filter that outputs a static image." -#~ msgstr "輸出靜態圖片的過濾器。" - -#~ msgid "A pixel format converter" -#~ msgstr "像素格式轉換器" - -#~ msgid "A video size converter" -#~ msgstr "視訊大小轉換器" - -#~ msgid "a small video size converter" -#~ msgstr "一個小型的視訊大小轉換器" - -#~ msgid "Echo canceller using speex library" -#~ msgstr "使用 speex 程式庫的回音消除器" - -#~ msgid "A filter that reads from input and copy to its multiple outputs." -#~ msgstr "從輸入讀取並將它複製到多個輸出的過濾器。" - -#~ msgid "The theora video encoder from xiph.org" -#~ msgstr "來自 xiph.org 的 theora 視訊編碼器" - -#~ msgid "The open-source and royalty-free 'theora' video codec from xiph.org" -#~ msgstr "來自 xiph.org 的開放原始碼且沒有版稅的「theora」視訊編解碼器" - -#~ msgid "The theora video decoder from xiph.org" -#~ msgstr "來自 xiph.org 的 theora 視訊解碼器" - -#~ msgid "ITU-G.711 ulaw encoder" -#~ msgstr "ITU-G.711 ulaw 編碼器" - -#~ msgid "ITU-G.711 ulaw decoder" -#~ msgstr "ITU-G.711 ulaw 解碼器" - -#~ msgid "A H.263 decoder using ffmpeg library" -#~ msgstr "使用 ffmpeg 程式庫的 H.263 解碼器" - -#~ msgid "A MPEG4 decoder using ffmpeg library" -#~ msgstr "使用 ffmpeg 程式庫的 MPEG4 解碼器" - -#~ msgid "A RTP/JPEG decoder using ffmpeg library" -#~ msgstr "使用 ffmpeg 程式庫的 RTP/JPEG 解碼器" - -#~ msgid "A MJPEG decoder using ffmpeg library" -#~ msgstr "使用 ffmpeg 程式庫的 MJPEG 解碼器" - -#~ msgid "A snow decoder using ffmpeg library" -#~ msgstr "使用 ffmpeg 程式庫的 snow 解碼器" - -#~ msgid "A video H.263 encoder using ffmpeg library." -#~ msgstr "使用 ffmpeg 程式庫的視訊 H.263 編碼器。" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library. It is compliant with old " -#~ "RFC2190 spec." -#~ msgstr "使用 ffmpeg 程式庫的視訊 H.263 編碼器。它符合舊的 RFC2190 規格。" - -#~ msgid "A video MPEG4 encoder using ffmpeg library." -#~ msgstr "使用 ffmpeg 程式庫的視訊 MPEG4 編碼器。" - -#~ msgid "A video snow encoder using ffmpeg library." -#~ msgstr "使用 ffmpeg 程式庫的視訊 snow 編碼器。" - -#~ msgid "A RTP/MJPEG encoder using ffmpeg library." -#~ msgstr "使用 ffmpeg 程式庫的 RTP/MJPEG 編碼器。" - -#~ msgid "" -#~ "A video H.263 encoder using ffmpeg library, compliant with old RFC2190 " -#~ "spec." -#~ msgstr "使用 ffmpeg 程式庫的視訊 H.263 編碼器,它符合舊的 RFC2190 規格。" - -#~ msgid "" -#~ "The snow codec is royalty-free and is open-source. \n" -#~ "It uses innovative techniques that makes it one of most promising video " -#~ "codec. It is implemented within the ffmpeg project.\n" -#~ "However it is under development, quite unstable and compatibility with " -#~ "other versions cannot be guaranteed." -#~ msgstr "" -#~ "snow 編解碼器是免版稅的,而且是開放源始碼。 \n" -#~ "它採用創新技術,使一種最前瞻的視訊編解碼器。它在 ffmpeg 專案中實作。\n" -#~ "然而,它正在開發中,相當不穩定且不能保證與其他版本的相容性。" - -#~ msgid "A MJPEG encoder using ffmpeg library." -#~ msgstr "使用 ffmpeg 程式庫的 MJPEG 編碼器。" - -#~ msgid "A SDL-based video display" -#~ msgstr "基於 SDL 的視訊顯示" - -#~ msgid "A video4windows compatible source filter to stream pictures." -#~ msgstr "video4windows 相容來源過濾器至串流圖片。" - -#~ msgid "A video for windows (vfw.h) based source filter to grab pictures." -#~ msgstr "windows (vfw.h) 視訊為基礎的來源過濾器以擷取圖片。" - -#~ msgid "" -#~ "A filter that trashes its input (useful for terminating some graphs)." -#~ msgstr "將輸入丟棄的過濾器(可用來中止某些圖形)。" - -#~ msgid "Parametric sound equalizer." -#~ msgstr "參數化音效等化器。" - -#~ msgid "A webcam grabber based on directshow." -#~ msgstr "基於 directshow 的網路攝影機擷取器。" - -#~ msgid "A video display based on windows DrawDib api" -#~ msgstr "基於 windows DrawDib api 的視訊顯示" - -#~ msgid "A filter that mixes down 16 bit sample audio streams" -#~ msgstr "混合 16 位元取樣音效串流的過濾器" - -#~ msgid "A filter that converts from mono to stereo and vice versa." -#~ msgstr "將單聲道與雙聲道互相轉換的過濾器。" - -#~ msgid "A display filter sending the buffers to draw to the upper layer" -#~ msgstr "傳送緩衝區以繪製到上層圖層的顯示過濾器" - -#~ msgid "Sound capture filter for MacOS X Audio Unit Service" -#~ msgstr "MacOS X 音效單元服務的音效擷取過濾器" - -#~ msgid "Sound playback filter for MacOS X Audio Unit Service" -#~ msgstr "MacOS X 音效單元服務的音效播放過濾器" - -#~ msgid "A video display using X11+Xv" -#~ msgstr "使用 X11+Xv 的視訊顯示" - -#~ msgid "Sound capture filter for Android" -#~ msgstr "Android 音效擷取過濾器" - -#~ msgid "Sound playback filter for Android" -#~ msgstr "Android 音效播放過濾器" - -#~ msgid "A filter that captures Android video." -#~ msgstr "擷取 Android 視訊的過濾器。" From 36561bbc4446ba276692c8ea001a0416976adcf2 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 20 Nov 2014 11:25:04 +0100 Subject: [PATCH 173/249] Create the tunnel object before remote provisioning so that it can successfully be configured. --- coreapi/linphonecore.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 3ead49966..b434feebb 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1502,7 +1502,6 @@ static void linphone_core_start(LinphoneCore * lc) { misc_config_read(lc); ui_config_read(lc); #ifdef TUNNEL_ENABLED - lc->tunnel=linphone_core_tunnel_new(lc); if (lc->tunnel) { linphone_tunnel_configure(lc->tunnel); } @@ -1630,6 +1629,10 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab sal_set_user_pointer(lc->sal,lc); sal_set_callbacks(lc->sal,&linphone_sal_callbacks); +#ifdef TUNNEL_ENABLED + lc->tunnel=linphone_core_tunnel_new(lc); +#endif + lc->network_last_check = 0; lc->network_last_status = FALSE; From 1a2e00160e586a2cbb682c33c30bd2118ed06d88 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Thu, 20 Nov 2014 13:43:18 +0100 Subject: [PATCH 174/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index b727b3031..6371c2246 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit b727b303113f9ea752b2e9328a4d1a4f65d72b6c +Subproject commit 6371c2246fa4e8bdfa2bdb512f0ebefdd2a8f2f3 From 7c0a5ee77082f517888768dd0936ea2257ae12d2 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 20 Nov 2014 16:24:43 +0100 Subject: [PATCH 175/249] fix compilation issuewq --- coreapi/TunnelManager.cc | 2 +- coreapi/linphonecore.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/coreapi/TunnelManager.cc b/coreapi/TunnelManager.cc index 9b4cebda3..53d7f288f 100644 --- a/coreapi/TunnelManager.cc +++ b/coreapi/TunnelManager.cc @@ -388,7 +388,7 @@ bool TunnelManager::startAutoDetection() { bool TunnelManager::isActivated() const{ switch(getMode()){ case LinphoneTunnelModeAuto: - return !mState==disabled; + return !(mState==disabled); case LinphoneTunnelModeDisable: return false; case LinphoneTunnelModeEnable: diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index b434feebb..6a83183da 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -4940,11 +4940,11 @@ void linphone_core_set_firewall_policy(LinphoneCore *lc, LinphoneFirewallPolicy lp_config_set_string(lc->config,"net","firewall_policy",policy); } -ORTP_INLINE LinphoneFirewallPolicy linphone_core_get_firewall_policy(const LinphoneCore *lc) { +LinphoneFirewallPolicy linphone_core_get_firewall_policy(const LinphoneCore *lc) { return _linphone_core_get_firewall_policy_with_lie(lc, FALSE); } -ORTP_INLINE LinphoneFirewallPolicy _linphone_core_get_firewall_policy(const LinphoneCore *lc) { +LinphoneFirewallPolicy _linphone_core_get_firewall_policy(const LinphoneCore *lc) { return _linphone_core_get_firewall_policy_with_lie(lc, TRUE); } From 9cabfe37dd9a49bc3f2e7281b3aaf60589a88de8 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 20 Nov 2014 17:25:25 +0100 Subject: [PATCH 176/249] A LinphoneContent object now owns all its data fields including the buffer. A normal LinphoneContent object will now copy the data from the given buffer when calling linphone_content_set_buffer(). However LinphoneContent objects converted from LinphoneContentPrivate structures do not own its data fields. --- coreapi/content.c | 49 ++++++++++++++++--------------- coreapi/content.h | 10 +++---- coreapi/private.h | 1 + coreapi/quality_reporting.c | 3 +- tester/eventapi_tester.c | 17 ++++------- tester/flexisip_tester.c | 3 +- tester/message_tester.c | 7 ++--- tester/quality_reporting_tester.c | 8 ++--- 8 files changed, 46 insertions(+), 52 deletions(-) diff --git a/coreapi/content.c b/coreapi/content.c index 944ebb2e0..84e45c853 100644 --- a/coreapi/content.c +++ b/coreapi/content.c @@ -23,27 +23,24 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. static void linphone_content_destroy(LinphoneContent *content) { - if (content->lcp.type) belle_sip_free(content->lcp.type); - if (content->lcp.subtype) belle_sip_free(content->lcp.subtype); - if (content->lcp.data) belle_sip_free(content->lcp.data); - if (content->lcp.encoding) belle_sip_free(content->lcp.encoding); - if (content->lcp.name) belle_sip_free(content->lcp.name); + if (content->owned_fields == TRUE) { + if (content->lcp.type) belle_sip_free(content->lcp.type); + if (content->lcp.subtype) belle_sip_free(content->lcp.subtype); + if (content->lcp.data) belle_sip_free(content->lcp.data); + if (content->lcp.encoding) belle_sip_free(content->lcp.encoding); + if (content->lcp.name) belle_sip_free(content->lcp.name); + } } static void linphone_content_clone(LinphoneContent *obj, const LinphoneContent *ref) { - void *data; linphone_content_set_type(obj, linphone_content_get_type(ref)); linphone_content_set_subtype(obj, linphone_content_get_subtype(ref)); linphone_content_set_encoding(obj, linphone_content_get_encoding(ref)); linphone_content_set_name(obj, linphone_content_get_name(ref)); - linphone_content_set_size(obj, linphone_content_get_size(ref)); - data = linphone_content_get_data(ref); - if (data != NULL) { - size_t size = linphone_content_get_size(ref); - void *objdata = belle_sip_malloc(size + 1); - memcpy(objdata, data, size); - ((char *)objdata)[size] = '\0'; - linphone_content_set_data(obj, objdata); + if (linphone_content_get_buffer(ref) != NULL) { + linphone_content_set_buffer(obj, linphone_content_get_buffer(ref), linphone_content_get_size(ref)); + } else { + linphone_content_set_size(obj, linphone_content_get_size(ref)); } } @@ -107,12 +104,15 @@ void linphone_content_set_subtype(LinphoneContent *content, const char *subtype) } } -void * linphone_content_get_data(const LinphoneContent *content) { +void * linphone_content_get_buffer(const LinphoneContent *content) { return content->lcp.data; } -void linphone_content_set_data(LinphoneContent *content, void *data) { - content->lcp.data = data; +void linphone_content_set_buffer(LinphoneContent *content, const void *buffer, size_t size) { + content->lcp.size = size; + content->lcp.data = belle_sip_malloc(size + 1); + memcpy(content->lcp.data, buffer, size); + ((char *)content->lcp.data)[size] = '\0'; } size_t linphone_content_get_size(const LinphoneContent *content) { @@ -156,6 +156,7 @@ void linphone_content_set_name(LinphoneContent *content, const char *name) { LinphoneContent * linphone_content_new(void) { LinphoneContent *content = belle_sip_object_new(LinphoneContent); belle_sip_object_ref(content); + content->owned_fields = TRUE; return content; } @@ -165,16 +166,15 @@ LinphoneContent * linphone_content_copy(const LinphoneContent *ref) { LinphoneContent * linphone_content_from_sal_body(const SalBody *ref) { if (ref && ref->type) { - void *objdata; LinphoneContent *content = linphone_content_new(); linphone_content_set_type(content, ref->type); linphone_content_set_subtype(content, ref->subtype); linphone_content_set_encoding(content, ref->encoding); - linphone_content_set_size(content, ref->size); - objdata = belle_sip_malloc(ref->size + 1); - memcpy(objdata, ref->data, ref->size); - ((char *)objdata)[ref->size] = '\0'; - linphone_content_set_data(content, objdata); + if (ref->data != NULL) { + linphone_content_set_buffer(content, ref->data, ref->size); + } else { + linphone_content_set_size(content, ref->size); + } return content; } return NULL; @@ -184,7 +184,7 @@ SalBody *sal_body_from_content(SalBody *body, const LinphoneContent *content) { if (content && linphone_content_get_type(content)) { body->type = linphone_content_get_type(content); body->subtype = linphone_content_get_subtype(content); - body->data = linphone_content_get_data(content); + body->data = linphone_content_get_buffer(content); body->size = linphone_content_get_size(content); body->encoding = linphone_content_get_encoding(content); return body; @@ -197,6 +197,7 @@ SalBody *sal_body_from_content(SalBody *body, const LinphoneContent *content) { LinphoneContent * linphone_content_private_to_linphone_content(const LinphoneContentPrivate *lcp) { LinphoneContent *content = belle_sip_object_new(LinphoneContent); memcpy(&content->lcp, lcp, sizeof(LinphoneContentPrivate)); + content->owned_fields = FALSE; return content; } diff --git a/coreapi/content.h b/coreapi/content.h index 24f137857..b2e04de27 100644 --- a/coreapi/content.h +++ b/coreapi/content.h @@ -150,26 +150,26 @@ LINPHONE_PUBLIC void linphone_content_set_subtype(LinphoneContent *content, cons * @param[in] content LinphoneContent object. * @return The content data buffer. */ -LINPHONE_PUBLIC void * linphone_content_get_data(const LinphoneContent *content); +LINPHONE_PUBLIC void * linphone_content_get_buffer(const LinphoneContent *content); /** * Set the content data buffer, usually a string. * @param[in] content LinphoneContent object. * @param[in] data The content data buffer. */ -LINPHONE_PUBLIC void linphone_content_set_data(LinphoneContent *content, void *data); +LINPHONE_PUBLIC void linphone_content_set_buffer(LinphoneContent *content, const void *buffer, size_t size); /** - * Get the content data size, excluding null character despite null character is always set for convenience. + * Get the content data buffer size, excluding null character despite null character is always set for convenience. * @param[in] content LinphoneContent object. - * @return The content data size. + * @return The content data buffer size. */ LINPHONE_PUBLIC size_t linphone_content_get_size(const LinphoneContent *content); /** * Set the content data size, excluding null character despite null character is always set for convenience. * @param[in] content LinphoneContent object - * @param[in] size The content data size. + * @param[in] size The content data buffer size. */ LINPHONE_PUBLIC void linphone_content_set_size(LinphoneContent *content, size_t size); diff --git a/coreapi/private.h b/coreapi/private.h index 8e1bfaf8a..808e1f57e 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -909,6 +909,7 @@ struct _LinphoneContent { belle_sip_object_t base; void *user_data; struct _LinphoneContentPrivate lcp; + bool_t owned_fields; }; BELLE_SIP_DECLARE_VPTR(LinphoneContent); diff --git a/coreapi/quality_reporting.c b/coreapi/quality_reporting.c index 1beea886a..bb1d443bf 100644 --- a/coreapi/quality_reporting.c +++ b/coreapi/quality_reporting.c @@ -331,8 +331,7 @@ static int send_report(LinphoneCall* call, reporting_session_report_t * report, append_to_buffer(&buffer, &size, &offset, "\r\n"); } - linphone_content_set_data(content, buffer); - linphone_content_set_size(content, strlen(buffer)); + linphone_content_set_buffer(content, buffer, strlen(buffer)); if (call->log->reporting.on_report_sent != NULL){ call->log->reporting.on_report_sent( diff --git a/tester/eventapi_tester.c b/tester/eventapi_tester.c index 835130f54..abd8c0a30 100644 --- a/tester/eventapi_tester.c +++ b/tester/eventapi_tester.c @@ -40,7 +40,7 @@ const char *liblinphone_tester_get_notify_content(void){ void linphone_notify_received(LinphoneCore *lc, LinphoneEvent *lev, const char *eventname, const LinphoneContent *content){ LinphoneCoreManager *mgr; CU_ASSERT_PTR_NOT_NULL_FATAL(content); - CU_ASSERT_TRUE(strcmp(notify_content,(const char*)linphone_content_get_data(content))==0); + CU_ASSERT_TRUE(strcmp(notify_content,(const char*)linphone_content_get_buffer(content))==0); mgr=get_manager(lc); mgr->stat.number_of_NotifyReceived++; } @@ -54,8 +54,7 @@ void linphone_subscription_state_change(LinphoneCore *lc, LinphoneEvent *lev, Li content = linphone_core_create_content(lc); linphone_content_set_type(content,"application"); linphone_content_set_subtype(content,"somexml2"); - linphone_content_set_data(content,belle_sip_strdup(notify_content)); - linphone_content_set_size(content,strlen(notify_content)); + linphone_content_set_buffer(content,notify_content,strlen(notify_content)); ms_message("Subscription state [%s] from [%s]",linphone_subscription_state_to_string(state),from); ms_free(from); @@ -134,8 +133,7 @@ static void subscribe_test_declined(void) { content = linphone_core_create_content(marie->lc); linphone_content_set_type(content,"application"); linphone_content_set_subtype(content,"somexml"); - linphone_content_set_data(content,belle_sip_strdup(subscribe_content)); - linphone_content_set_size(content,strlen(subscribe_content)); + linphone_content_set_buffer(content,subscribe_content,strlen(subscribe_content)); pauline->decline_subscribe=TRUE; @@ -182,8 +180,7 @@ static void subscribe_test_with_args(bool_t terminated_by_subscriber, RefreshTes content = linphone_core_create_content(marie->lc); linphone_content_set_type(content,"application"); linphone_content_set_subtype(content,"somexml"); - linphone_content_set_data(content,belle_sip_strdup(subscribe_content)); - linphone_content_set_size(content,strlen(subscribe_content)); + linphone_content_set_buffer(content,subscribe_content,strlen(subscribe_content)); lev=linphone_core_subscribe(marie->lc,pauline->identity,"dodo",expires,content); @@ -236,8 +233,7 @@ static void subscribe_test_with_args2(bool_t terminated_by_subscriber, RefreshTe content = linphone_core_create_content(marie->lc); linphone_content_set_type(content,"application"); linphone_content_set_subtype(content,"somexml"); - linphone_content_set_data(content,belle_sip_strdup(subscribe_content)); - linphone_content_set_size(content,strlen(subscribe_content)); + linphone_content_set_buffer(content,subscribe_content,strlen(subscribe_content)); lev=linphone_core_create_subscribe(marie->lc,pauline->identity,"dodo",expires); linphone_event_add_custom_header(lev,"My-Header","pouet"); @@ -315,8 +311,7 @@ static void publish_test_with_args(bool_t refresh, int expires){ content = linphone_core_create_content(marie->lc); linphone_content_set_type(content,"application"); linphone_content_set_subtype(content,"somexml"); - linphone_content_set_data(content,belle_sip_strdup(subscribe_content)); - linphone_content_set_size(content,strlen(subscribe_content)); + linphone_content_set_buffer(content,subscribe_content,strlen(subscribe_content)); lp_config_set_int(marie->lc->config,"sip","refresh_generic_publish",refresh); diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index f2ec9192e..8abd9b903 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -38,8 +38,7 @@ static void subscribe_forking(void) { content = linphone_core_create_content(marie->lc); linphone_content_set_type(content,"application"); linphone_content_set_subtype(content,"somexml"); - linphone_content_set_data(content, belle_sip_strdup(liblinphone_tester_get_subscribe_content())); - linphone_content_set_size(content, strlen(liblinphone_tester_get_subscribe_content())); + linphone_content_set_buffer(content, liblinphone_tester_get_subscribe_content(), strlen(liblinphone_tester_get_subscribe_content())); lev=linphone_core_subscribe(marie->lc,pauline->identity,"dodo",expires,content); diff --git a/tester/message_tester.c b/tester/message_tester.c index 65ad16d9d..de6b90c0d 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -836,8 +836,7 @@ static void info_message_with_args(bool_t with_content) { LinphoneContent* ct=linphone_core_create_content(marie->lc); linphone_content_set_type(ct,"application"); linphone_content_set_subtype(ct,"somexml"); - linphone_content_set_data(ct,belle_sip_strdup(info_content)); - linphone_content_set_size(ct,strlen(info_content)); + linphone_content_set_buffer(ct,info_content,strlen(info_content)); linphone_info_message_set_content(info,ct); linphone_content_unref(ct); } @@ -863,12 +862,12 @@ static void info_message_with_args(bool_t with_content) { if (with_content){ CU_ASSERT_PTR_NOT_NULL(content); if (content) { - CU_ASSERT_PTR_NOT_NULL(linphone_content_get_data(content)); + CU_ASSERT_PTR_NOT_NULL(linphone_content_get_buffer(content)); CU_ASSERT_PTR_NOT_NULL(linphone_content_get_type(content)); CU_ASSERT_PTR_NOT_NULL(linphone_content_get_subtype(content)); if (linphone_content_get_type(content)) CU_ASSERT_TRUE(strcmp(linphone_content_get_type(content),"application")==0); if (linphone_content_get_subtype(content)) CU_ASSERT_TRUE(strcmp(linphone_content_get_subtype(content),"somexml")==0); - if (linphone_content_get_data(content))CU_ASSERT_TRUE(strcmp((const char*)linphone_content_get_data(content),info_content)==0); + if (linphone_content_get_buffer(content))CU_ASSERT_TRUE(strcmp((const char*)linphone_content_get_buffer(content),info_content)==0); CU_ASSERT_EQUAL(linphone_content_get_size(content),strlen(info_content)); } } diff --git a/tester/quality_reporting_tester.c b/tester/quality_reporting_tester.c index 81bae75cf..33df384be 100644 --- a/tester/quality_reporting_tester.c +++ b/tester/quality_reporting_tester.c @@ -25,7 +25,7 @@ #define __strstr(x, y) ((x==NULL)?NULL:strstr(x,y)) void on_report_send_mandatory(const LinphoneCall *call, int stream_type, const LinphoneContent *content){ - char * body = (char *)linphone_content_get_data(content); + char * body = (char *)linphone_content_get_buffer(content); char * remote_metrics_start = __strstr(body, "RemoteMetrics:"); reporting_session_report_t * report = call->log->reporting.reports[stream_type]; MediaStream * ms; @@ -91,7 +91,7 @@ char * on_report_send_verify_metrics(const reporting_content_metrics_t *metrics, } void on_report_send_with_rtcp_xr_local(const LinphoneCall *call, int stream_type, const LinphoneContent *content){ - char * body = (char*)linphone_content_get_data(content); + char * body = (char*)linphone_content_get_buffer(content); char * remote_metrics_start = __strstr(body, "RemoteMetrics:"); reporting_session_report_t * report = call->log->reporting.reports[stream_type]; on_report_send_mandatory(call,stream_type,content); @@ -99,7 +99,7 @@ void on_report_send_with_rtcp_xr_local(const LinphoneCall *call, int stream_type CU_ASSERT_TRUE(!remote_metrics_start || on_report_send_verify_metrics(&report->local_metrics,body) < remote_metrics_start); } void on_report_send_with_rtcp_xr_remote(const LinphoneCall *call, int stream_type, const LinphoneContent *content){ - char * body = (char*)linphone_content_get_data(content); + char * body = (char*)linphone_content_get_buffer(content); reporting_session_report_t * report = call->log->reporting.reports[stream_type]; on_report_send_mandatory(call,stream_type,content); @@ -214,7 +214,7 @@ static void quality_reporting_not_sent_if_low_bandwidth() { } void on_report_send_remove_fields(const LinphoneCall *call, int stream_type, const LinphoneContent *content){ - char *body = (char*)linphone_content_get_data(content); + char *body = (char*)linphone_content_get_buffer(content); /*corrupt start of the report*/ strncpy(body, "corrupted report is corrupted", strlen("corrupted report is corrupted")); } From e697641e59feb20d70b3d390ea8b34da03d2c052 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Fri, 21 Nov 2014 08:45:39 +0100 Subject: [PATCH 177/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 6371c2246..f17ad001c 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 6371c2246fa4e8bdfa2bdb512f0ebefdd2a8f2f3 +Subproject commit f17ad001c39b30c3989754d9b3ef3429a5ac2a3e From b91b55af160e0d6b414465c5c8ed016b63867de7 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Fri, 21 Nov 2014 10:46:56 +0100 Subject: [PATCH 178/249] Update ms2 for static webcam iOS fix --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index f17ad001c..fb73f80e6 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit f17ad001c39b30c3989754d9b3ef3429a5ac2a3e +Subproject commit fb73f80e60573e581fbcb9fa8ace72d93e54aae6 From 1a2125b588ca36a7274061ddcd60afe81330eab4 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Fri, 21 Nov 2014 11:01:03 +0100 Subject: [PATCH 179/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index fb73f80e6..478d7dab4 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit fb73f80e60573e581fbcb9fa8ace72d93e54aae6 +Subproject commit 478d7dab4c2b78a0e693142c1eee27ac5d95076a From aff27f655485b21f1c4b738d5689df23b5a848e3 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 21 Nov 2014 11:44:00 +0100 Subject: [PATCH 180/249] Rework Python wrapper handwritten code handling. --- tools/python/apixml2python.py | 13 +- .../handwritten_declarations.mustache | 3 + .../handwritten_definitions.mustache | 55 ++++++++ tools/python/apixml2python/linphone.py | 120 ++++++++++++------ 4 files changed, 143 insertions(+), 48 deletions(-) diff --git a/tools/python/apixml2python.py b/tools/python/apixml2python.py index 1fb37b9bb..f6248ca69 100755 --- a/tools/python/apixml2python.py +++ b/tools/python/apixml2python.py @@ -23,7 +23,7 @@ import sys import xml.etree.ElementTree as ET sys.path.append(os.path.realpath(__file__)) -from apixml2python.linphone import LinphoneModule +from apixml2python.linphone import LinphoneModule, HandWrittenClassMethod, HandWrittenInstanceMethod, HandWrittenProperty blacklisted_classes = [ @@ -84,11 +84,12 @@ blacklisted_functions = [ 'lp_config_section_to_dict' # missing LinphoneDictionary ] hand_written_functions = [ - 'linphone_chat_room_send_message2', - 'linphone_core_get_sound_devices', - 'linphone_core_get_video_devices', - 'linphone_core_new', - 'linphone_core_new_with_config' + HandWrittenInstanceMethod('ChatRoom', 'send_message2', 'linphone_chat_room_send_message2'), + HandWrittenProperty('Content', 'buffer', 'linphone_content_get_buffer', 'linphone_content_set_buffer'), + HandWrittenProperty('Core', 'sound_devices', 'linphone_core_get_sound_devices', None), + HandWrittenProperty('Core', 'video_devices', 'linphone_core_get_video_devices', None), + HandWrittenClassMethod('Core', 'new', 'linphone_core_new'), + HandWrittenClassMethod('Core', 'new_with_config', 'linphone_core_new_with_config') ] def generate(apixmlfile, outputfile): diff --git a/tools/python/apixml2python/handwritten_declarations.mustache b/tools/python/apixml2python/handwritten_declarations.mustache index d5be0a3c4..6f7ae5b92 100644 --- a/tools/python/apixml2python/handwritten_declarations.mustache +++ b/tools/python/apixml2python/handwritten_declarations.mustache @@ -13,3 +13,6 @@ MSVideoSize PyLinphoneVideoSize_AsMSVideoSize(PyObject *obj); PyObject * PyLinphoneVideoSize_FromMSVideoSize(MSVideoSize vs); time_t PyDateTime_As_time_t(PyObject *obj); PyObject * PyDateTime_From_time_t(time_t t); + +static PyObject * pylinphone_Content_get_buffer(PyObject *self, void *closure); +static int pylinphone_Content_set_buffer(PyObject *self, PyObject *value, void *closure); diff --git a/tools/python/apixml2python/handwritten_definitions.mustache b/tools/python/apixml2python/handwritten_definitions.mustache index 4ae90a9ac..52dfc7016 100644 --- a/tools/python/apixml2python/handwritten_definitions.mustache +++ b/tools/python/apixml2python/handwritten_definitions.mustache @@ -526,3 +526,58 @@ static PyMethodDef pylinphone_PayloadTypeType_ModuleMethods[] = { /* Sentinel */ { NULL, NULL, 0, NULL } }; + + +static PyObject * pylinphone_Content_get_buffer(PyObject *self, void *closure) { + void * cbuffer; + size_t csize; + PyObject * pyresult; + PyObject * pyret; + const char *pyret_fmt; + const LinphoneContent *native_ptr; + native_ptr = pylinphone_Content_get_native_ptr(self); + if (native_ptr == NULL) { + PyErr_SetString(PyExc_TypeError, "Invalid linphone.Content instance"); + return NULL; + } + + pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p])", __FUNCTION__, self, native_ptr); + cbuffer = linphone_content_get_buffer(native_ptr); + csize = linphone_content_get_size(native_ptr); + pylinphone_dispatch_messages(); + + pyresult = PyByteArray_FromStringAndSize((const char *)cbuffer, csize); + pyret = Py_BuildValue("O", pyresult); + pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> %p", __FUNCTION__, pyret); + return pyret; +} + +static int pylinphone_Content_set_buffer(PyObject *self, PyObject *value, void *closure) { + LinphoneContent *native_ptr; + void * _buffer; + size_t _size; + LinphonePresenceModel * _presence_native_ptr = NULL; + native_ptr = pylinphone_Content_get_native_ptr(self); + if (native_ptr == NULL) { + PyErr_SetString(PyExc_TypeError, "Invalid linphone.Content instance"); + return -1; + } + + if (value == NULL) { + PyErr_SetString(PyExc_TypeError, "Cannot delete the 'buffer' attribute."); + return -1; + } + if ((value != Py_None) && !PyByteArray_Check(value)) { + PyErr_SetString(PyExc_TypeError, "The 'buffer' attribute value must be a ByteArray instance."); + return -1; + } + + _buffer = PyByteArray_AsString(value); + _size = PyByteArray_Size(value); + + pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p], %p [%p])", __FUNCTION__, self, native_ptr, value, _buffer); + linphone_content_set_buffer(native_ptr, _buffer, _size); + pylinphone_dispatch_messages(); + pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> 0", __FUNCTION__); + return 0; +} diff --git a/tools/python/apixml2python/linphone.py b/tools/python/apixml2python/linphone.py index e90926f25..0d88af2ab 100644 --- a/tools/python/apixml2python/linphone.py +++ b/tools/python/apixml2python/linphone.py @@ -38,6 +38,32 @@ def compute_event_name(s): return event_name +class HandWrittenCode: + def __init__(self, _class, name, func_list): + self._class = _class + self.name = name + self.func_list = func_list + +class HandWrittenInstanceMethod(HandWrittenCode): + def __init__(self, _class, name, cfunction): + HandWrittenCode.__init__(self, _class, name, [cfunction]) + +class HandWrittenClassMethod(HandWrittenCode): + def __init__(self, _class, name, cfunction): + HandWrittenCode.__init__(self, _class, name, [cfunction]) + +class HandWrittenProperty(HandWrittenCode): + def __init__(self, _class, name, getter_cfunction = None, setter_cfunction = None): + func_list = [] + if getter_cfunction is not None: + func_list.append(getter_cfunction) + if setter_cfunction is not None: + func_list.append(setter_cfunction) + HandWrittenCode.__init__(self, _class, name, func_list) + self.getter_cfunction = getter_cfunction + self.setter_cfunction = setter_cfunction + + class ArgumentType: def __init__(self, basic_type, complete_type, contained_type, linphone_module): self.basic_type = basic_type @@ -308,7 +334,7 @@ class MethodDefinition: arg_names.append(arg_name + "_native_obj") else: arg_names.append(arg_name) - if self.return_type != 'void': + if self.return_complete_type != 'void': c_function_call_code += "cresult = " c_function_call_code += self.method_node.get('name') + "(" if self.self_arg is not None: @@ -806,12 +832,15 @@ class EventCallbackMethodDefinition(MethodDefinition): class LinphoneModule(object): - def __init__(self, tree, blacklisted_classes, blacklisted_events, blacklisted_functions, hand_written_functions): + def __init__(self, tree, blacklisted_classes, blacklisted_events, blacklisted_functions, hand_written_codes): self.internal_instance_method_names = ['destroy', 'ref', 'unref'] self.internal_property_names = ['user_data'] self.mslist_types = Set([]) self.enums = [] self.enum_names = [] + hand_written_functions = [] + for hand_written_code in hand_written_codes: + hand_written_functions += hand_written_code.func_list xml_enums = tree.findall("./enums/enum") for xml_enum in xml_enums: if xml_enum.get('deprecated') == 'true': @@ -872,6 +901,31 @@ class LinphoneModule(object): ev['event_name'] = compute_event_name(ev['event_cname']) ev['event_doc'] = self.__format_doc(xml_event.find('briefdescription'), xml_event.find('detaileddescription')) self.events.append(ev) + for hand_written_code in hand_written_codes: + if hand_written_code._class == c['class_name']: + if isinstance(hand_written_code, HandWrittenClassMethod): + print "HandWrittenClassMethod" + m = {} + m['method_name'] = hand_written_code.name + c['class_type_hand_written_methods'].append(m) + elif isinstance(hand_written_code, HandWrittenInstanceMethod): + print "HandWrittenInstanceMethod" + m = {} + m['method_name'] = hand_written_code.name + c['class_instance_hand_written_methods'].append(m) + elif isinstance(hand_written_code, HandWrittenProperty): + print "HandWrittenProperty" + p = {} + p['property_name'] = hand_written_code.name + if hand_written_code.getter_cfunction is None: + p['getter_reference'] = 'NULL' + else: + p['getter_reference'] = '(getter)pylinphone_' + c['class_name'] + '_get_' + p['property_name'] + if hand_written_code.setter_cfunction is None: + p['setter_reference'] = 'NULL' + else: + p['setter_reference'] = '(setter)pylinphone_' + c['class_name'] + '_set_' + p['property_name'] + c['class_hand_written_properties'].append(p) xml_type_methods = xml_class.findall("./classmethods/classmethod") for xml_type_method in xml_type_methods: if xml_type_method.get('deprecated') == 'true': @@ -881,9 +935,7 @@ class LinphoneModule(object): continue m = {} m['method_name'] = method_name.replace(c['class_c_function_prefix'], '') - if method_name in hand_written_functions: - c['class_type_hand_written_methods'].append(m) - else: + if method_name not in hand_written_functions: m['method_xml_node'] = xml_type_method c['class_type_methods'].append(m) c['class_instance_methods'] = [] @@ -898,9 +950,7 @@ class LinphoneModule(object): continue m = {} m['method_name'] = method_name.replace(c['class_c_function_prefix'], '') - if method_name in hand_written_functions: - c['class_instance_hand_written_methods'].append(m) - else: + if method_name not in hand_written_functions: m['method_xml_node'] = xml_instance_method c['class_instance_methods'].append(m) c['class_properties'] = [] @@ -915,45 +965,31 @@ class LinphoneModule(object): p['property_name'] = property_name xml_property_getter = xml_property.find("./getter") xml_property_setter = xml_property.find("./setter") - handwritten_property = False if xml_property_getter is not None: - if xml_property_getter.get('name') in blacklisted_functions or xml_property_getter.get('deprecated') == 'true': + if xml_property_getter.get('name') in blacklisted_functions or xml_property_getter.get('name') in hand_written_functions or xml_property_getter.get('deprecated') == 'true': continue - elif xml_property_getter.get('name') in hand_written_functions: - handwritten_property = True if xml_property_setter is not None: - if xml_property_setter.get('name') in blacklisted_functions or xml_property_setter.get('deprecated') == 'true': + if xml_property_setter.get('name') in blacklisted_functions or xml_property_setter.get('name') in hand_written_functions or xml_property_setter.get('deprecated') == 'true': continue - elif xml_property_setter.get('name') in hand_written_functions: - handwritten_property = True - if handwritten_property: - p['getter_reference'] = 'NULL' - p['setter_reference'] = 'NULL' - if xml_property_getter is not None: - p['getter_reference'] = '(getter)pylinphone_' + c['class_name'] + '_get_' + p['property_name'] - if xml_property_setter is not None: - p['setter_reference'] = '(setter)pylinphone_' + c['class_name'] + '_set_' + p['property_name'] - c['class_hand_written_properties'].append(p) + if xml_property_getter is not None: + xml_property_getter.set('property_name', property_name) + p['getter_name'] = xml_property_getter.get('name').replace(c['class_c_function_prefix'], '') + p['getter_xml_node'] = xml_property_getter + p['getter_reference'] = "(getter)pylinphone_" + c['class_name'] + "_" + p['getter_name'] + p['getter_definition_begin'] = "static PyObject * pylinphone_" + c['class_name'] + "_" + p['getter_name'] + "(PyObject *self, void *closure) {" + p['getter_definition_end'] = "}" else: - if xml_property_getter is not None: - xml_property_getter.set('property_name', property_name) - p['getter_name'] = xml_property_getter.get('name').replace(c['class_c_function_prefix'], '') - p['getter_xml_node'] = xml_property_getter - p['getter_reference'] = "(getter)pylinphone_" + c['class_name'] + "_" + p['getter_name'] - p['getter_definition_begin'] = "static PyObject * pylinphone_" + c['class_name'] + "_" + p['getter_name'] + "(PyObject *self, void *closure) {" - p['getter_definition_end'] = "}" - else: - p['getter_reference'] = "NULL" - if xml_property_setter is not None: - xml_property_setter.set('property_name', property_name) - p['setter_name'] = xml_property_setter.get('name').replace(c['class_c_function_prefix'], '') - p['setter_xml_node'] = xml_property_setter - p['setter_reference'] = "(setter)pylinphone_" + c['class_name'] + "_" + p['setter_name'] - p['setter_definition_begin'] = "static int pylinphone_" + c['class_name'] + "_" + p['setter_name'] + "(PyObject *self, PyObject *value, void *closure) {" - p['setter_definition_end'] = "}" - else: - p['setter_reference'] = "NULL" - c['class_properties'].append(p) + p['getter_reference'] = "NULL" + if xml_property_setter is not None: + xml_property_setter.set('property_name', property_name) + p['setter_name'] = xml_property_setter.get('name').replace(c['class_c_function_prefix'], '') + p['setter_xml_node'] = xml_property_setter + p['setter_reference'] = "(setter)pylinphone_" + c['class_name'] + "_" + p['setter_name'] + p['setter_definition_begin'] = "static int pylinphone_" + c['class_name'] + "_" + p['setter_name'] + "(PyObject *self, PyObject *value, void *closure) {" + p['setter_definition_end'] = "}" + else: + p['setter_reference'] = "NULL" + c['class_properties'].append(p) self.classes.append(c) # Format events definitions for ev in self.events: From a8e2461db5cc79eda8ef6737b4112a5b3b0f33d6 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Fri, 21 Nov 2014 14:27:53 +0100 Subject: [PATCH 181/249] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 478d7dab4..ede23a105 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 478d7dab4c2b78a0e693142c1eee27ac5d95076a +Subproject commit ede23a105ec048909509dec2a320bce694743d36 From 8846ca4780ace20a0452a18b5a0e7c2e24fc669d Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 21 Nov 2014 14:44:40 +0100 Subject: [PATCH 182/249] Fix DTMF tests suite: when using SIP INFO, we should keep initial packets order --- tester/dtmf_tester.c | 8 ++++++-- tester/liblinphone_tester.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tester/dtmf_tester.c b/tester/dtmf_tester.c index fa627cfd4..1c80c21c6 100644 --- a/tester/dtmf_tester.c +++ b/tester/dtmf_tester.c @@ -29,10 +29,12 @@ void dtmf_received(LinphoneCore *lc, LinphoneCall *call, int dtmf) { *dst = *dst ? ms_strcat_printf(*dst, "%c", dtmf) : ms_strdup_printf("%c", dtmf); + counters->dtmf_count++; } void send_dtmf_base(bool_t use_rfc2833, bool_t use_sipinfo, char dtmf, char* dtmf_seq) { char* expected = NULL; + int dtmf_count_prev; marie = linphone_core_manager_new( "marie_rc"); pauline = linphone_core_manager_new( "pauline_rc"); @@ -46,19 +48,21 @@ void send_dtmf_base(bool_t use_rfc2833, bool_t use_sipinfo, char dtmf, char* dtm marie_call = linphone_core_get_current_call(marie->lc); if (dtmf != '\0') { + dtmf_count_prev = pauline->stat.dtmf_count; linphone_call_send_dtmf(marie_call, dtmf); /*wait for the DTMF to be received from pauline*/ - wait_for_until(marie->lc, pauline->lc, NULL, 0, 1000); + CU_ASSERT_TRUE(wait_for_until(marie->lc, pauline->lc, &pauline->stat.dtmf_count, dtmf_count_prev+1, 10000)); expected = ms_strdup_printf("%c", dtmf); } if (dtmf_seq != NULL) { int dtmf_delay_ms = lp_config_get_int(marie_call->core->config,"net","dtmf_delay_ms",200); + dtmf_count_prev = pauline->stat.dtmf_count; linphone_call_send_dtmfs(marie_call, dtmf_seq); /*wait for the DTMF sequence to be received from pauline*/ - wait_for_until(marie->lc, pauline->lc, NULL, 0, 1000 + dtmf_delay_ms * strlen(dtmf_seq)); + CU_ASSERT_TRUE(wait_for_until(marie->lc, pauline->lc, &pauline->stat.dtmf_count, dtmf_count_prev + strlen(dtmf_seq), 10000 + dtmf_delay_ms * strlen(dtmf_seq))); expected = (dtmf!='\0')?ms_strdup_printf("%c%s",dtmf,dtmf_seq):ms_strdup(dtmf_seq); } diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 4bbe1fa3a..715d4c6f8 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -205,6 +205,7 @@ typedef struct _stats { LinphoneChatMessage* last_received_chat_message; char * dtmf_list_received; + int dtmf_count; }stats; typedef struct _LinphoneCoreManager { From 7563118143f8309313247f2c8b1807f78d1deafe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 21 Nov 2014 15:09:17 +0100 Subject: [PATCH 183/249] Fix Player/Playing test for Android --- tester/player_tester.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tester/player_tester.c b/tester/player_tester.c index be0b47284..457bd899c 100644 --- a/tester/player_tester.c +++ b/tester/player_tester.c @@ -84,7 +84,9 @@ static void play_file(const char *filename, bool_t unsupported_format) { } static void playing_test(void) { - play_file("/home/francois/Téléchargements/test_linphone.mkv", !linphone_local_player_matroska_supported()); + const char *filename = ms_strdup_printf("%s/sounds/hello_opus_h264.mkv", liblinphone_tester_file_prefix); + play_file(filename, !linphone_local_player_matroska_supported()); + ms_free(filename); } test_t player_tests[] = { From 3149d5b69291c58811592ae8072446aa63fa588a Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 21 Nov 2014 16:00:17 +0100 Subject: [PATCH 184/249] Fix android compilation --- coreapi/linphonecore_jni.cc | 67 +++++++++++++++++++------------------ mediastreamer2 | 2 +- 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 2a985519e..8f4b44154 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "linphonecore_jni.h" #endif #include "linphonecore_utils.h" -#include +#include extern "C" { @@ -821,9 +821,9 @@ public: return; } LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); - env->CallVoidMethod(lcData->listener, - lcData->fileTransferProgressIndicationId, - lcData->core, + env->CallVoidMethod(lcData->listener, + lcData->fileTransferProgressIndicationId, + lcData->core, (jmsg = lcData->getChatMessage(env, message)), content ? create_java_linphone_content(env, content) : NULL, progress); @@ -839,9 +839,9 @@ public: return; } LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); - *size = env->CallIntMethod(lcData->listener, - lcData->fileTransferSendId, - lcData->core, + *size = env->CallIntMethod(lcData->listener, + lcData->fileTransferSendId, + lcData->core, (jmsg = lcData->getChatMessage(env, message)), content ? create_java_linphone_content(env, content) : NULL, buff ? env->NewDirectByteBuffer(buff, asking) : NULL, @@ -857,13 +857,13 @@ public: return; } LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); - + jbyteArray jbytes = env->NewByteArray(size); env->SetByteArrayRegion(jbytes, 0, size, (jbyte*)buff); - - env->CallVoidMethod(lcData->listener, - lcData->fileTransferRecvId, - lcData->core, + + env->CallVoidMethod(lcData->listener, + lcData->fileTransferRecvId, + lcData->core, (jmsg = lcData->getChatMessage(env, message)), content ? create_java_linphone_content(env, content) : NULL, jbytes, @@ -2670,14 +2670,14 @@ extern "C" void Java_org_linphone_core_LinphoneChatRoomImpl_destroy(JNIEnv* env } extern "C" jlong Java_org_linphone_core_LinphoneChatRoomImpl_createFileTransferMessage(JNIEnv* env, jobject thiz, jlong ptr, jstring jname, jstring jtype, jstring jsubtype, jint data_size) { - LinphoneContent content = {0}; + LinphoneContentPrivate content = {0}; LinphoneChatMessage *message = NULL; content.type = (char*)env->GetStringUTFChars(jtype, NULL); content.subtype = (char*)env->GetStringUTFChars(jsubtype, NULL); content.name = (char*)env->GetStringUTFChars(jname, NULL); content.size = data_size; - message = linphone_chat_room_create_file_transfer_message((LinphoneChatRoom *)ptr, &content); + message = linphone_chat_room_create_file_transfer_message((LinphoneChatRoom *)ptr, LINPHONE_CONTENT(&content)); env->ReleaseStringUTFChars(jtype, content.type); env->ReleaseStringUTFChars(jsubtype, content.subtype); env->ReleaseStringUTFChars(jname, content.name); @@ -2702,14 +2702,14 @@ extern "C" jstring Java_org_linphone_core_LinphoneChatMessageImpl_getAppData(JNI } extern "C" void Java_org_linphone_core_LinphoneChatMessageImpl_setAppData(JNIEnv* env, jobject thiz, jlong ptr, jstring appdata) { - const char * data = appdata ? env->GetStringUTFChars(appdata, NULL) : NULL; + const char * data = appdata ? env->GetStringUTFChars(appdata, NULL) : NULL; linphone_chat_message_set_appdata((LinphoneChatMessage *)ptr, data); if (appdata) env->ReleaseStringUTFChars(appdata, data); } extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setFileTransferServer(JNIEnv* env, jobject thiz, jlong ptr, jstring server_url) { - const char * url = server_url ? env->GetStringUTFChars(server_url, NULL) : NULL; + const char * url = server_url ? env->GetStringUTFChars(server_url, NULL) : NULL; linphone_core_set_file_transfer_server((LinphoneCore *)ptr, url); if (server_url) env->ReleaseStringUTFChars(server_url, url); @@ -3786,7 +3786,7 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_subscribe(JNIE jstring jevname, jint expires, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding){ LinphoneCore *lc=(LinphoneCore*)coreptr; LinphoneAddress *addr=(LinphoneAddress*)addrptr; - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; LinphoneEvent *ev; jobject jev=NULL; const char *evname=env->GetStringUTFChars(jevname,NULL); @@ -3799,7 +3799,7 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_subscribe(JNIE content.data=(void*)env->GetByteArrayElements(jdata,NULL); content.size=env->GetArrayLength(jdata); } - ev=linphone_core_subscribe(lc,addr,evname,expires,content.type ? &content : NULL); + ev=linphone_core_subscribe(lc,addr,evname,expires,content.type ? LINPHONE_CONTENT(&content) : NULL); if (jtype){ env->ReleaseStringUTFChars(jtype,content.type); env->ReleaseStringUTFChars(jsubtype,content.subtype); @@ -3822,7 +3822,7 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_publish(JNIEnv jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding){ LinphoneCore *lc=(LinphoneCore*)coreptr; LinphoneAddress *addr=(LinphoneAddress*)addrptr; - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; LinphoneEvent *ev; jobject jev=NULL; const char *evname=env->GetStringUTFChars(jevname,NULL); @@ -3835,7 +3835,7 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_publish(JNIEnv content.data=(void*)env->GetByteArrayElements(jdata,NULL); content.size=env->GetArrayLength(jdata); } - ev=linphone_core_publish(lc,addr,evname,expires,content.type ? &content : NULL); + ev=linphone_core_publish(lc,addr,evname,expires,content.type ? LINPHONE_CONTENT(&content) : NULL); if (jtype){ env->ReleaseStringUTFChars(jtype,content.type); env->ReleaseStringUTFChars(jsubtype,content.subtype); @@ -3977,12 +3977,13 @@ extern "C" jintArray Java_org_linphone_core_LpConfigImpl_getIntRange(JNIEnv *env return returnValues; } -static jobject create_java_linphone_content(JNIEnv *env, const LinphoneContent *content){ +static jobject create_java_linphone_content(JNIEnv *env, const LinphoneContent *icontent){ jclass contentClass; jmethodID ctor; jstring jtype, jsubtype, jencoding, jname; jbyteArray jdata = NULL; jint jsize = 0; + const LinphoneContentPrivate *content = LINPHONE_CONTENT_PRIVATE(icontent); contentClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneContentImpl")); ctor = env->GetMethodID(contentClass,"", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;I)V"); @@ -4022,13 +4023,13 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneInfoMessageImpl_getCont * Signature: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneInfoMessageImpl_setContent(JNIEnv *env, jobject jobj, jlong infoptr, jstring jtype, jstring jsubtype, jstring jdata){ - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; content.type=(char*)env->GetStringUTFChars(jtype,NULL); content.subtype=(char*)env->GetStringUTFChars(jsubtype,NULL); content.data=(void*)env->GetStringUTFChars(jdata,NULL); content.size=strlen((char*)content.data); - linphone_info_message_set_content((LinphoneInfoMessage*)infoptr,&content); + linphone_info_message_set_content((LinphoneInfoMessage*)infoptr,LINPHONE_CONTENT(&content)); env->ReleaseStringUTFChars(jtype,content.type); env->ReleaseStringUTFChars(jsubtype,content.subtype); env->ReleaseStringUTFChars(jdata,(char*)content.data); @@ -4130,7 +4131,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_denySubscription * Signature: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_notify(JNIEnv *env, jobject jobj, jlong evptr, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding){ - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; LinphoneEvent *ev=(LinphoneEvent*)evptr; jint err; @@ -4142,7 +4143,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_notify(JNIEnv *e content.size=env->GetArrayLength(jdata); } - err=linphone_event_notify(ev,content.type ? &content : NULL); + err=linphone_event_notify(ev,content.type ? LINPHONE_CONTENT(&content) : NULL); if (jtype){ env->ReleaseStringUTFChars(jtype,content.type); @@ -4159,7 +4160,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_notify(JNIEnv *e * Signature: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_updateSubscribe(JNIEnv *env, jobject jobj, jlong evptr, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding){ - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; LinphoneEvent *ev=(LinphoneEvent*)evptr; jint err; @@ -4171,7 +4172,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_updateSubscribe( content.size=env->GetArrayLength(jdata); } - err=linphone_event_update_subscribe(ev,content.type ? &content : NULL); + err=linphone_event_update_subscribe(ev,content.type ? LINPHONE_CONTENT(&content) : NULL); if (jtype){ env->ReleaseStringUTFChars(jtype,content.type); @@ -4188,7 +4189,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_updateSubscribe( * Signature: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_updatePublish(JNIEnv *env, jobject jobj, jlong evptr, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding){ - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; LinphoneEvent *ev=(LinphoneEvent*)evptr; jint err; @@ -4200,7 +4201,7 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_updatePublish(JN content.size=env->GetArrayLength(jdata); } - err=linphone_event_update_publish(ev,content.type ? &content : NULL); + err=linphone_event_update_publish(ev,content.type ? LINPHONE_CONTENT(&content) : NULL); if (jtype){ env->ReleaseStringUTFChars(jtype,content.type); @@ -4274,7 +4275,7 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_createSubscrib } JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneEventImpl_sendSubscribe(JNIEnv *env, jobject thiz, jlong jevent, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding) { - LinphoneContent content = {0}; + LinphoneContentPrivate content = {0}; if (jtype) { content.type = (char*) env->GetStringUTFChars(jtype, NULL); content.subtype = (char*) env->GetStringUTFChars(jsubtype, NULL); @@ -4282,7 +4283,7 @@ JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneEventImpl_sendSubscribe(JN content.data = (void*) env->GetByteArrayElements(jdata, NULL); content.size = env->GetArrayLength(jdata); } - linphone_event_send_subscribe((LinphoneEvent*) jevent, content.type ? &content : NULL); + linphone_event_send_subscribe((LinphoneEvent*) jevent, content.type ? LINPHONE_CONTENT(&content) : NULL); if (jtype) { env->ReleaseStringUTFChars(jtype, content.type); env->ReleaseStringUTFChars(jsubtype, content.subtype); @@ -4308,7 +4309,7 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_createPublish( } JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneEventImpl_sendPublish(JNIEnv *env, jobject thiz, jlong jevent, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding) { - LinphoneContent content = {0}; + LinphoneContentPrivate content = {0}; if (jtype) { content.type = (char*) env->GetStringUTFChars(jtype, NULL); content.subtype = (char*) env->GetStringUTFChars(jsubtype, NULL); @@ -4316,7 +4317,7 @@ JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneEventImpl_sendPublish(JNIE content.data = (void*) env->GetByteArrayElements(jdata, NULL); content.size = env->GetArrayLength(jdata); } - linphone_event_send_publish((LinphoneEvent*) jevent, content.type ? &content : NULL); + linphone_event_send_publish((LinphoneEvent*) jevent, content.type ? LINPHONE_CONTENT(&content) : NULL); if (jtype) { env->ReleaseStringUTFChars(jtype, content.type); env->ReleaseStringUTFChars(jsubtype, content.subtype); diff --git a/mediastreamer2 b/mediastreamer2 index ede23a105..daad27559 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit ede23a105ec048909509dec2a320bce694743d36 +Subproject commit daad2755959725b3b8196b026afd446fe3e72605 From 47118a39bceb538f43ca4b8a5570574ca22ec50c Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 21 Nov 2014 16:29:30 +0100 Subject: [PATCH 185/249] Fix android compilation, bis repetita --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index daad27559..1fa78d2f8 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit daad2755959725b3b8196b026afd446fe3e72605 +Subproject commit 1fa78d2f8ab882f553081f02410041c8f3f2b065 From c1f324d0d6e5c2d73adb541405beba6358842ec4 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 21 Nov 2014 16:57:22 +0100 Subject: [PATCH 186/249] Rename Playing test and fix compilation --- tester/player_tester.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tester/player_tester.c b/tester/player_tester.c index 457bd899c..f60e29a68 100644 --- a/tester/player_tester.c +++ b/tester/player_tester.c @@ -84,13 +84,13 @@ static void play_file(const char *filename, bool_t unsupported_format) { } static void playing_test(void) { - const char *filename = ms_strdup_printf("%s/sounds/hello_opus_h264.mkv", liblinphone_tester_file_prefix); + char *filename = ms_strdup_printf("%s/sounds/hello_opus_h264.mkv", liblinphone_tester_file_prefix); play_file(filename, !linphone_local_player_matroska_supported()); ms_free(filename); } test_t player_tests[] = { - { "Playing" , playing_test } + { "Local MKV file" , playing_test } }; test_suite_t player_test_suite = { From c88838b0b54a849f07e35cc59f4220d25765b0f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 21 Nov 2014 17:07:09 +0100 Subject: [PATCH 187/249] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 1fa78d2f8..26ff7a209 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 1fa78d2f8ab882f553081f02410041c8f3f2b065 +Subproject commit 26ff7a2098d0140083e23682752e66cf53f8e203 From 1191a49efad193b72fa970a68d4af9402445c9d1 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 22 Nov 2014 11:31:06 +0100 Subject: [PATCH 188/249] use ms_new0 --- coreapi/linphonecore.c | 6 +++--- coreapi/upnp.c | 2 +- mediastreamer2 | 2 +- oRTP | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 6a83183da..07beaf135 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1529,7 +1529,7 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab const char *aac_fmtp162248, *aac_fmtp3244; LinphoneCoreVTable* local_vtable= linphone_core_v_table_new(); ms_message("Initializing LinphoneCore %s", linphone_core_get_version()); - memset (lc, 0, sizeof (LinphoneCore)); + lc->config=lp_config_ref(config); lc->data=userdata; lc->ringstream_autorelease=TRUE; @@ -1679,7 +1679,7 @@ LinphoneCore *linphone_core_new(const LinphoneCoreVTable *vtable, LinphoneCore *linphone_core_new_with_config(const LinphoneCoreVTable *vtable, struct _LpConfig *config, void *userdata) { - LinphoneCore *core = ms_new(LinphoneCore, 1); + LinphoneCore *core = ms_new0(LinphoneCore, 1); linphone_core_init(core, vtable, config, userdata); return core; } @@ -6640,7 +6640,7 @@ typedef struct Hook{ }Hook; static Hook *hook_new(LinphoneCoreIterateHook hook, void *hook_data){ - Hook *h=ms_new(Hook,1); + Hook *h=ms_new0(Hook,1); h->fun=hook; h->data=hook_data; return h; diff --git a/coreapi/upnp.c b/coreapi/upnp.c index 83ab387c4..68b82e2ed 100644 --- a/coreapi/upnp.c +++ b/coreapi/upnp.c @@ -145,7 +145,7 @@ char * linphone_upnp_format_device_id(const char *device_id) { if(device_id == NULL) { return ret; } - ret = ms_new(char, UPNP_UUID_LEN + 1); + ret = ms_new0(char, UPNP_UUID_LEN + 1); tmp = ret; if(linphone_upnp_strncmpi(device_id, "uuid:", linphone_upnp_str_min(device_id, "uuid:")) == 0) { device_id += strlen("uuid:"); diff --git a/mediastreamer2 b/mediastreamer2 index 26ff7a209..dfc2fbd36 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 26ff7a2098d0140083e23682752e66cf53f8e203 +Subproject commit dfc2fbd36db97f07f08112ee8217477ba4257744 diff --git a/oRTP b/oRTP index 5333d998c..7508c59d7 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 5333d998c8eaf3c43e66c4a5335c0606c8dea3df +Subproject commit 7508c59d703b769d510321ff357d10139d476bab From 42a841a84b2b55adc2261a23dba7ea3afa06b581 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Mon, 24 Nov 2014 10:06:42 +0100 Subject: [PATCH 189/249] Update readme for Brew --- README.macos.md | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/README.macos.md b/README.macos.md index 6dd8b4625..6fcc8280f 100644 --- a/README.macos.md +++ b/README.macos.md @@ -42,18 +42,9 @@ In order to enable generation of bundle for multiple MacOS version and 32 bit pr # readline is required from linphonec.c otherwise compilation will fail brew link readline --force - # then you have to install antlr3 from a tap. - wget https://gist.githubusercontent.com/Gui13/f5cf103f50d34c28c7be/raw/f50242f5e0c3a6d25ed7fca1462bce3a7b738971/antlr3.rb - mv antlr3.rb /usr/local/Library/Formula/ - brew install antlr3 - - brew tap marekjelen/gtk - brew install gtk+-quartz - - # gtk-mac-integration is not available in main repository or Brew yet. - wget https://gist.github.com/Gui13/cdcad37faa6b8ffa0588/raw/bf2277d45e261ad48ae1344c4c97f2684974ed87/gtk-mac-integration.rb - mv gtk-mac-integration.rb /usr/local/Library/Formula/ - brew install gtk-mac-integration + # then you have to install some dependencies from a tap. + brew tap Gui13/linphone + brew install gtk+-quartz gtk-mac-integration ### Building Linphone From 3cb94ab1e512fb72f0126c275e529e5f260e54ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Mon, 24 Nov 2014 10:16:52 +0100 Subject: [PATCH 190/249] Fix 'Player/Local MKV file' test --- tester/player_tester.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/tester/player_tester.c b/tester/player_tester.c index f60e29a68..2894b92e7 100644 --- a/tester/player_tester.c +++ b/tester/player_tester.c @@ -18,23 +18,23 @@ #include "liblinphone_tester.h" -//static const char *_get_default_video_renderer(void){ -//#ifdef WIN32 -// return "MSDrawDibDisplay"; -//#elif defined(ANDROID) -// return "MSAndroidDisplay"; -//#elif __APPLE__ && !defined(__ios) -// return "MSOSXGLDisplay"; -//#elif defined (HAVE_XV) -// return "MSX11Video"; -//#elif defined(HAVE_GL) -// return "MSGLXVideo"; -//#elif defined(__ios) -// return "IOSDisplay"; -//#else -// return "MSVideoOut"; -//#endif -//} +static const char *_get_default_video_renderer(void){ +#ifdef WIN32 + return "MSDrawDibDisplay"; +#elif defined(ANDROID) + return "MSAndroidDisplay"; +#elif __APPLE__ && !defined(__ios) + return "MSOSXGLDisplay"; +#elif defined (HAVE_XV) + return "MSX11Video"; +#elif defined(HAVE_GL) + return "MSGLXVideo"; +#elif defined(__ios) + return "IOSDisplay"; +#else + return "MSVideoOut"; +#endif +} static bool_t wait_for_eof(bool_t *eof, int *time,int time_refresh, int timeout) { while(*time < timeout && !*eof) { @@ -59,7 +59,7 @@ static void play_file(const char *filename, bool_t unsupported_format) { CU_ASSERT_PTR_NOT_NULL(lc_manager); if(lc_manager == NULL) return; - player = linphone_core_create_local_player(lc_manager->lc, ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()), "MSX11Video", 0); + player = linphone_core_create_local_player(lc_manager->lc, ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()), _get_default_video_renderer(), 0); CU_ASSERT_PTR_NOT_NULL(player); if(player == NULL) goto fail; From 17c5372cd9dd9efb93296e03377910e2ff40b61f Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 24 Nov 2014 11:06:33 +0100 Subject: [PATCH 191/249] Add API to set/get a LinphoneContent data with a string type. --- coreapi/content.c | 9 +++++++++ coreapi/content.h | 17 ++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/coreapi/content.c b/coreapi/content.c index 84e45c853..74d04ebb7 100644 --- a/coreapi/content.c +++ b/coreapi/content.c @@ -115,6 +115,15 @@ void linphone_content_set_buffer(LinphoneContent *content, const void *buffer, s ((char *)content->lcp.data)[size] = '\0'; } +char * linphone_content_get_string_buffer(const LinphoneContent *content) { + return (char *)content->lcp.data; +} + +void linphone_content_set_string_buffer(LinphoneContent *content, const char *buffer) { + content->lcp.size = strlen(buffer); + content->lcp.data = belle_sip_strdup(buffer); +} + size_t linphone_content_get_size(const LinphoneContent *content) { return content->lcp.size; } diff --git a/coreapi/content.h b/coreapi/content.h index b2e04de27..400f5f5fb 100644 --- a/coreapi/content.h +++ b/coreapi/content.h @@ -155,10 +155,25 @@ LINPHONE_PUBLIC void * linphone_content_get_buffer(const LinphoneContent *conten /** * Set the content data buffer, usually a string. * @param[in] content LinphoneContent object. - * @param[in] data The content data buffer. + * @param[in] buffer The content data buffer. + * @param[in] size The size of the content data buffer. */ LINPHONE_PUBLIC void linphone_content_set_buffer(LinphoneContent *content, const void *buffer, size_t size); +/** + * Get the string content data buffer. + * @param[in] content LinphoneContent object + * @return The string content data buffer. + */ +LINPHONE_PUBLIC char * linphone_content_get_string_buffer(const LinphoneContent *content); + +/** + * Set the string content data buffer. + * @param[in] content LinphoneContent object. + * @param[in] buffer The string content data buffer. + */ +LINPHONE_PUBLIC void linphone_content_set_string_buffer(LinphoneContent *content, const char *buffer); + /** * Get the content data buffer size, excluding null character despite null character is always set for convenience. * @param[in] content LinphoneContent object. From 96a488a5cabc6259fb133efe0eb3859540a6f838 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Mon, 24 Nov 2014 11:48:11 +0100 Subject: [PATCH 192/249] Update readme for brew (again) --- README.macos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.macos.md b/README.macos.md index 6fcc8280f..c4723f29d 100644 --- a/README.macos.md +++ b/README.macos.md @@ -44,7 +44,7 @@ In order to enable generation of bundle for multiple MacOS version and 32 bit pr # then you have to install some dependencies from a tap. brew tap Gui13/linphone - brew install gtk+-quartz gtk-mac-integration + brew install antlr3.2 libantlr3.4c mattintosh4/gtk-mac-integration/gtk-mac-integration ### Building Linphone From 89340008674a8027b763e58d295c1248594885d4 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Mon, 24 Nov 2014 11:49:44 +0100 Subject: [PATCH 193/249] Fix message tester when no storage is used --- coreapi/callbacks.c | 9 +++++---- coreapi/chat.c | 13 ++++++++++++- coreapi/message_storage.c | 11 ++--------- coreapi/private.h | 1 + 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 59ce4a9a6..363272324 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -303,9 +303,9 @@ static void call_received(SalOp *h){ linphone_address_destroy(to_addr); return; } - + call=linphone_call_new_incoming(lc,from_addr,to_addr,h); - + linphone_call_make_local_media_description(lc,call); sal_call_set_local_media_description(call->op,call->localdesc); md=sal_call_get_final_media_description(call->op); @@ -1170,14 +1170,15 @@ static void text_delivery_update(SalOp *op, SalTextDeliveryStatus status){ } chat_msg->state=chatStatusSal2Linphone(status); - linphone_chat_message_store_state(chat_msg); + linphone_chat_message_update_state(chat_msg); + if (chat_msg && chat_msg->cb) { ms_message("Notifying text delivery with status %i",chat_msg->state); chat_msg->cb(chat_msg ,chat_msg->state ,chat_msg->cb_ud); } - if (status != SalTextDeliveryInProgress) { /*don't release op if progress*/ + if (status != SalTextDeliveryInProgress) { /*only release op if not in progress*/ linphone_chat_message_destroy(chat_msg); } } diff --git a/coreapi/chat.c b/coreapi/chat.c index 989350544..dc7598f03 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -494,6 +494,17 @@ static void _linphone_chat_room_send_message(LinphoneChatRoom *cr, LinphoneChatM linphone_chat_message_unref(msg); } +void linphone_chat_message_update_state(LinphoneChatMessage* chat_msg ) { + linphone_chat_message_store_state(chat_msg); + + if( chat_msg->state == LinphoneChatMessageStateDelivered + || chat_msg->state == LinphoneChatMessageStateNotDelivered ){ + // message is not transient anymore, we can remove it from our transient list and unref it : + chat_msg->chat_room->transient_messages = ms_list_remove(chat_msg->chat_room->transient_messages, chat_msg); + linphone_chat_message_unref(chat_msg); + } +} + /** * Send a message to peer member of this chat room. * @deprecated linphone_chat_room_send_message2() gives more control on the message expedition. @@ -523,7 +534,7 @@ void linphone_core_message_received(LinphoneCore *lc, SalOp *op, const SalMessag addr=linphone_address_new(sal_msg->from); linphone_address_clean(addr); cr=linphone_core_get_chat_room(lc,addr); - + if (sal_msg->content_type != NULL) { /* content_type field is, for now, used only for rcs file transfer but we shall strcmp it with "application/vnd.gsma.rcs-ft-http+xml" */ xmlChar *file_url = NULL; xmlDocPtr xmlMessageBody; diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index 7e614ea95..55fc82685 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -202,7 +202,7 @@ static int linphone_chat_message_store_content(LinphoneChatMessage *msg) { linphone_content_get_encoding(content), linphone_content_get_size(content), NULL - ); + ); linphone_sql_request(lc->db, buf); sqlite3_free(buf); id = (unsigned int) sqlite3_last_insert_rowid (lc->db); @@ -237,7 +237,7 @@ unsigned int linphone_chat_message_store(LinphoneChatMessage *msg){ (int64_t)msg->time, msg->appdata, content_id - ); + ); linphone_sql_request(lc->db,buf); sqlite3_free(buf); ms_free(local_contact); @@ -255,13 +255,6 @@ void linphone_chat_message_store_state(LinphoneChatMessage *msg){ linphone_sql_request(lc->db,buf); sqlite3_free(buf); } - - if( msg->state == LinphoneChatMessageStateDelivered - || msg->state == LinphoneChatMessageStateNotDelivered ){ - // message is not transient anymore, we can remove it from our transient list: - msg->chat_room->transient_messages = ms_list_remove(msg->chat_room->transient_messages, msg); - linphone_chat_message_unref(msg); - } } void linphone_chat_message_store_appdata(LinphoneChatMessage* msg){ diff --git a/coreapi/private.h b/coreapi/private.h index 808e1f57e..56f96fb2e 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -441,6 +441,7 @@ void _linphone_proxy_config_release_ops(LinphoneProxyConfig *obj); /*chat*/ void linphone_chat_room_release(LinphoneChatRoom *cr); void linphone_chat_message_destroy(LinphoneChatMessage* msg); +void linphone_chat_message_update_state(LinphoneChatMessage* chat_msg ); /**/ struct _LinphoneProxyConfig From 4505528f3bad0e3fa242611782dcf3d0e66a3ead Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Mon, 24 Nov 2014 11:49:14 +0100 Subject: [PATCH 194/249] Update tester to preset the dynamic resource path before setting up the linphone core. This prevents error messages while testing on iOS --- tester/tester.c | 61 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/tester/tester.c b/tester/tester.c index aa0bd3e8b..07ffa703a 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -109,36 +109,59 @@ void reset_counters( stats* counters) { static LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, const char* file, void* user_data) { LinphoneCore* lc; - char filepath[256]={0}; - char ringpath[256]={0}; - char ringbackpath[256]={0}; - char rootcapath[256]={0}; - char dnsuserhostspath[256]={0}; - char nowebcampath[256]={0}; + LpConfig* config = NULL; + char *filepath = NULL; + char *ringpath = NULL; + char *ringbackpath = NULL; + char *rootcapath = NULL; + char *dnsuserhostspath = NULL; + char *nowebcampath = NULL; if (path==NULL) path="."; if (file){ - sprintf(filepath, "%s/%s", path, file); + filepath = ms_strdup_printf("%s/%s", path, file); CU_ASSERT_TRUE_FATAL(ortp_file_exist(filepath)==0); + config = lp_config_new_with_factory(NULL,filepath); } - lc = linphone_core_new(v_table,NULL,*filepath!='\0' ? filepath : NULL, user_data); + + // setup dynamic-path assets + ringpath = ms_strdup_printf("%s/sounds/oldphone.wav",path); + ringbackpath = ms_strdup_printf("%s/sounds/ringback.wav", path); + nowebcampath = ms_strdup_printf("%s/images/nowebcamCIF.jpg", path); + rootcapath = ms_strdup_printf("%s/certificates/cn/cafile.pem", path); + dnsuserhostspath = ms_strdup_printf( "%s/%s", path, userhostsfile); + + + if( config != NULL ) { + lp_config_set_string(config, "sound", "remote_ring", ringbackpath); + lp_config_set_string(config, "sound", "local_ring" , ringpath); + lp_config_set_string(config, "sip", "root_ca" , rootcapath); + lc = linphone_core_new_with_config(v_table, config, user_data); + } else { + lc = linphone_core_new(v_table,NULL,*filepath!='\0' ? filepath : NULL, user_data); + + linphone_core_set_ring(lc, ringpath); + linphone_core_set_ringback(lc, ringbackpath); + linphone_core_set_root_ca(lc,rootcapath); + } sal_enable_test_features(lc->sal,TRUE); - snprintf(rootcapath, sizeof(rootcapath), "%s/certificates/cn/cafile.pem", path); - linphone_core_set_root_ca(lc,rootcapath); - - sprintf(dnsuserhostspath, "%s/%s", path, userhostsfile); sal_set_dns_user_hosts_file(lc->sal, dnsuserhostspath); - - snprintf(ringpath,sizeof(ringpath), "%s/sounds/oldphone.wav",path); - snprintf(ringbackpath,sizeof(ringbackpath), "%s/sounds/ringback.wav", path); - linphone_core_set_ring(lc, ringpath); - linphone_core_set_ringback(lc, ringbackpath); - - snprintf(nowebcampath, sizeof(nowebcampath), "%s/images/nowebcamCIF.jpg", path); linphone_core_set_static_picture(lc,nowebcampath); + + + ms_free(ringpath); + ms_free(ringbackpath); + ms_free(nowebcampath); + ms_free(rootcapath); + ms_free(dnsuserhostspath); + + if( filepath ) ms_free(filepath); + + if( config ) lp_config_unref(config); + return lc; } From c377906553144f70b838dbcef82957e5126d889c Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 24 Nov 2014 12:29:25 +0100 Subject: [PATCH 195/249] Add autocompletion feature, simply source this file to enable it for bash and zsh shells --- tester/liblinphone_completion | 99 +++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 tester/liblinphone_completion diff --git a/tester/liblinphone_completion b/tester/liblinphone_completion new file mode 100644 index 000000000..6fae7fa27 --- /dev/null +++ b/tester/liblinphone_completion @@ -0,0 +1,99 @@ +# Copyright (C) 2012 Belledonne Comunications, Grenoble, France +# +# 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. + +# Created by Gautier Pelloux-Prayer on 2014/10/24. +# This script adds auto-completion for liblinphone_tester binary for Bash and +# zsh. To use it, just type: `source liblinphone_completion`, then use +# `./liblinphone_tester [tab] to get auto-completions. To use it permanently, +# source this file in your .rc file + +_liblinphone_complete() { + local completions command_require_argument latest_arg available_tasks has_not_set_suite suite_name + # these commands expect an argument + command_require_argument=(--list-tests --config --domain --auth-domain --dns-hosts --suite --test) + + + if [ -n "$BASH_VERSION" ]; then + set -- "${COMP_WORDS[@]}" #convert them to arguments (eg $1,$#,$@,etc.) + elif [ -n "$ZSH_VERSION" ]; then + local args + read -cA args #read list of arguments user entered + set -- "${args[@]}" #convert them to arguments (eg $1,$#,$@,etc.) + fi + #skip program name + shift + + + # if user required help, do not complete anything + if ! grep -q -- "--help" <<< "$@"; then + + # retrieve the last argument + latest_arg="" + for arg in "$@"; do + if [ ! -z "$arg" ]; then + latest_arg="$arg" + fi + done + + # get the tasks available, from --help + available_tasks="$(liblinphone_tester 2>&1 --help | sed -nE "s/.*--([^ ]*).*/--\\1/p")" + # remove all already provided tasks (it's useless to provide them twice) + if [[ ! -z "$@" ]]; then + current_tasks=$(echo $@ | grep -Eo -- "--([^ ])*" | tr '\n' '|' | sed 's/|/$|/g')--$ + if [ ! -z "$current_tasks" ]; then + available_tasks=$(echo "$available_tasks" | grep -vE -- "(${current_tasks})") + fi + fi + # remove --test option if --suite is not provided yet! + has_not_set_suite=$(grep -q -- "--suite" <<< "$@"; echo $?) + if [ $has_not_set_suite = 1 ]; then + available_tasks=$(echo "$available_tasks" | grep -v -- --test) + fi + + # if latest arg does not start with '--', it is a custom value; just output all available commands + if ! grep -q -- '^--' <<< "$latest_arg"; then + completions="$available_tasks" + elif [ "$latest_arg" = "--test" ]; then + if [ $has_not_set_suite = 0 ]; then + suite_name=$(echo $@ | sed -nE 's/.*--suite (.*) .*/\1/p') + completions="$(liblinphone_tester --list-tests "$suite_name")" + fi + elif [ "$latest_arg" = "--suite" ] || [ "$latest_arg" = "--list-tests" ]; then + completions="$(liblinphone_tester --list-suites)" + # we are waiting for a custom value, so do not hint anything + elif grep -q -- " $latest_arg " <<< "$command_require_argument"; then + completions="" + else + completions="$available_tasks" + fi + fi + + if [ -n "$BASH_VERSION" ]; then + # COMPREPLY=( $(echo $completions | sed 's/ /\\ /g' )) #| sed -e 's/^/"/g' -e 's/$/"/g' | tr '\n' ' ') ) + IFS=$'\n' + COMPREPLY=($(compgen -W "${completions}" -- ${COMP_WORDS[COMP_CWORD]})) + elif [ -n "$ZSH_VERSION" ]; then + reply=( "${(ps:\n:)completions}" ) + fi +} + +if [ -n "$BASH_VERSION" ]; then + complete -F _liblinphone_complete liblinphone_tester +elif [ -n "$ZSH_VERSION" ]; then + compctl -K _liblinphone_complete liblinphone_tester +else + echo "Your shell might be not supported! Only bash and zsh tested." +fi From e16e04567a15f54122cf70dfb6302935a30734e4 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 24 Nov 2014 14:09:39 +0100 Subject: [PATCH 196/249] better fix for Call/Direct call over IPv6 on Android --- po/linphone.pot | 1987 ------------------------------------------ tester/call_tester.c | 4 + 2 files changed, 4 insertions(+), 1987 deletions(-) delete mode 100644 po/linphone.pot diff --git a/po/linphone.pot b/po/linphone.pot deleted file mode 100644 index e4e16d2c5..000000000 --- a/po/linphone.pot +++ /dev/null @@ -1,1987 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 -#, c-format -msgid "Call %s" -msgstr "" - -#: ../gtk/calllogs.c:149 ../gtk/friendlist.c:975 -#, c-format -msgid "Send text to %s" -msgstr "" - -#: ../gtk/calllogs.c:232 -#, c-format -msgid "Recent calls (%i)" -msgstr "" - -#: ../gtk/calllogs.c:314 -msgid "n/a" -msgstr "" - -#: ../gtk/calllogs.c:317 -msgid "Aborted" -msgstr "" - -#: ../gtk/calllogs.c:320 -msgid "Missed" -msgstr "" - -#: ../gtk/calllogs.c:323 -msgid "Declined" -msgstr "" - -#: ../gtk/calllogs.c:329 -#, c-format -msgid "%i minute" -msgid_plural "%i minutes" -msgstr[0] "" -msgstr[1] "" - -#: ../gtk/calllogs.c:332 -#, c-format -msgid "%i second" -msgid_plural "%i seconds" -msgstr[0] "" -msgstr[1] "" - -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - -#: ../gtk/calllogs.c:337 -#, c-format -msgid "" -"%s\tQuality: %s\n" -"%s\t%s\t" -msgstr "" - -#: ../gtk/calllogs.c:343 -#, c-format -msgid "" -"%s\t\n" -"%s" -msgstr "" - -#: ../gtk/conference.c:38 ../gtk/main.ui.h:13 -msgid "Conference" -msgstr "" - -#: ../gtk/conference.c:46 -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 "" - -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 -msgid "Invalid sip contact !" -msgstr "" - -#: ../gtk/main.c:107 -msgid "log to stdout some debug information while running." -msgstr "" - -#: ../gtk/main.c:114 -msgid "path to a file to write logs into." -msgstr "" - -#: ../gtk/main.c:121 -msgid "Start linphone with video disabled." -msgstr "" - -#: ../gtk/main.c:128 -msgid "Start only in the system tray, do not show the main interface." -msgstr "" - -#: ../gtk/main.c:135 -msgid "address to call right now" -msgstr "" - -#: ../gtk/main.c:142 -msgid "if set automatically answer incoming calls" -msgstr "" - -#: ../gtk/main.c:149 -msgid "" -"Specifiy a working directory (should be the base of the installation, eg: c:" -"\\Program Files\\Linphone)" -msgstr "" - -#: ../gtk/main.c:156 -msgid "Configuration file" -msgstr "" - -#: ../gtk/main.c:163 -msgid "Run the audio assistant" -msgstr "" - -#: ../gtk/main.c:1085 -#, 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" -"If you answer no, this person will be temporarily blacklisted." -msgstr "" - -#: ../gtk/main.c:1162 -#, c-format -msgid "" -"Please enter your password for username %s\n" -" at realm %s:" -msgstr "" - -#: ../gtk/main.c:1283 -msgid "Call error" -msgstr "" - -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 -msgid "Call ended" -msgstr "" - -#: ../gtk/main.c:1289 -msgid "Incoming call" -msgstr "" - -#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 -msgid "Answer" -msgstr "" - -#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 -msgid "Decline" -msgstr "" - -#: ../gtk/main.c:1299 -msgid "Call paused" -msgstr "" - -#: ../gtk/main.c:1299 -#, c-format -msgid "by %s" -msgstr "" - -#: ../gtk/main.c:1366 -#, c-format -msgid "%s proposed to start video. Do you accept ?" -msgstr "" - -#: ../gtk/main.c:1528 -msgid "Website link" -msgstr "" - -#: ../gtk/main.c:1577 -msgid "Linphone - a video internet phone" -msgstr "" - -#: ../gtk/main.c:1669 -#, c-format -msgid "%s (Default)" -msgstr "" - -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 -#, c-format -msgid "We are transferred to %s" -msgstr "" - -#: ../gtk/main.c:2016 -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:2157 -msgid "A free SIP video-phone" -msgstr "" - -#: ../gtk/friendlist.c:505 -msgid "Add to addressbook" -msgstr "" - -#: ../gtk/friendlist.c:691 -msgid "Presence status" -msgstr "" - -#: ../gtk/friendlist.c:709 ../gtk/propertybox.c:552 ../gtk/contact.ui.h:1 -msgid "Name" -msgstr "" - -#: ../gtk/friendlist.c:721 -msgid "Call" -msgstr "" - -#: ../gtk/friendlist.c:726 -msgid "Chat" -msgstr "" - -#: ../gtk/friendlist.c:756 -#, c-format -msgid "Search in %s directory" -msgstr "" - -#: ../gtk/friendlist.c:976 -#, c-format -msgid "Edit contact '%s'" -msgstr "" - -#: ../gtk/friendlist.c:977 -#, c-format -msgid "Delete contact '%s'" -msgstr "" - -#: ../gtk/friendlist.c:978 -#, c-format -msgid "Delete chat history of '%s'" -msgstr "" - -#: ../gtk/friendlist.c:1029 -#, c-format -msgid "Add new contact from %s directory" -msgstr "" - -#: ../gtk/propertybox.c:558 -msgid "Rate (Hz)" -msgstr "" - -#: ../gtk/propertybox.c:564 -msgid "Status" -msgstr "" - -#: ../gtk/propertybox.c:570 -msgid "IP Bitrate (kbit/s)" -msgstr "" - -#: ../gtk/propertybox.c:577 -msgid "Parameters" -msgstr "" - -#: ../gtk/propertybox.c:620 ../gtk/propertybox.c:763 -msgid "Enabled" -msgstr "" - -#: ../gtk/propertybox.c:622 ../gtk/propertybox.c:763 -msgid "Disabled" -msgstr "" - -#: ../gtk/propertybox.c:809 -msgid "Account" -msgstr "" - -#: ../gtk/propertybox.c:1072 -msgid "English" -msgstr "" - -#: ../gtk/propertybox.c:1073 -msgid "French" -msgstr "" - -#: ../gtk/propertybox.c:1074 -msgid "Swedish" -msgstr "" - -#: ../gtk/propertybox.c:1075 -msgid "Italian" -msgstr "" - -#: ../gtk/propertybox.c:1076 -msgid "Spanish" -msgstr "" - -#: ../gtk/propertybox.c:1077 -msgid "Brazilian Portugese" -msgstr "" - -#: ../gtk/propertybox.c:1078 -msgid "Polish" -msgstr "" - -#: ../gtk/propertybox.c:1079 -msgid "German" -msgstr "" - -#: ../gtk/propertybox.c:1080 -msgid "Russian" -msgstr "" - -#: ../gtk/propertybox.c:1081 -msgid "Japanese" -msgstr "" - -#: ../gtk/propertybox.c:1082 -msgid "Dutch" -msgstr "" - -#: ../gtk/propertybox.c:1083 -msgid "Hungarian" -msgstr "" - -#: ../gtk/propertybox.c:1084 -msgid "Czech" -msgstr "" - -#: ../gtk/propertybox.c:1085 -msgid "Chinese" -msgstr "" - -#: ../gtk/propertybox.c:1086 -msgid "Traditional Chinese" -msgstr "" - -#: ../gtk/propertybox.c:1087 -msgid "Norwegian" -msgstr "" - -#: ../gtk/propertybox.c:1088 -msgid "Hebrew" -msgstr "" - -#: ../gtk/propertybox.c:1089 -msgid "Serbian" -msgstr "" - -#: ../gtk/propertybox.c:1156 -msgid "" -"You need to restart linphone for the new language selection to take effect." -msgstr "" - -#: ../gtk/propertybox.c:1234 -msgid "None" -msgstr "" - -#: ../gtk/propertybox.c:1238 -msgid "SRTP" -msgstr "" - -#: ../gtk/propertybox.c:1244 -msgid "ZRTP" -msgstr "" - -#: ../gtk/update.c:80 -#, c-format -msgid "" -"A more recent version is availalble from %s.\n" -"Would you like to open a browser to download it ?" -msgstr "" - -#: ../gtk/update.c:91 -msgid "You are running the lastest version." -msgstr "" - -#: ../gtk/buddylookup.c:85 -msgid "Firstname, Lastname" -msgstr "" - -#: ../gtk/buddylookup.c:160 -msgid "Error communicating with server." -msgstr "" - -#: ../gtk/buddylookup.c:164 -msgid "Connecting..." -msgstr "" - -#: ../gtk/buddylookup.c:168 -msgid "Connected" -msgstr "" - -#: ../gtk/buddylookup.c:172 -msgid "Receiving data..." -msgstr "" - -#: ../gtk/buddylookup.c:180 -#, c-format -msgid "Found %i contact" -msgid_plural "Found %i contacts" -msgstr[0] "" -msgstr[1] "" - -#: ../gtk/setupwizard.c:34 -msgid "" -"Welcome !\n" -"This assistant will help you to use a SIP account for your calls." -msgstr "" - -#: ../gtk/setupwizard.c:43 -msgid "Create an account on linphone.org" -msgstr "" - -#: ../gtk/setupwizard.c:44 -msgid "I have already a linphone.org account and I just want to use it" -msgstr "" - -#: ../gtk/setupwizard.c:45 -msgid "I have already a sip account and I just want to use it" -msgstr "" - -#: ../gtk/setupwizard.c:46 -msgid "I want to specify a remote configuration URI" -msgstr "" - -#: ../gtk/setupwizard.c:89 -msgid "Enter your linphone.org username" -msgstr "" - -#: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 -msgid "Username:" -msgstr "" - -#: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 -msgid "Password:" -msgstr "" - -#: ../gtk/setupwizard.c:124 -msgid "Enter your account informations" -msgstr "" - -#: ../gtk/setupwizard.c:140 -msgid "Username*" -msgstr "" - -#: ../gtk/setupwizard.c:141 -msgid "Password*" -msgstr "" - -#: ../gtk/setupwizard.c:144 -msgid "Domain*" -msgstr "" - -#: ../gtk/setupwizard.c:145 -msgid "Proxy" -msgstr "" - -#: ../gtk/setupwizard.c:317 -msgid "(*) Required fields" -msgstr "" - -#: ../gtk/setupwizard.c:318 -msgid "Username: (*)" -msgstr "" - -#: ../gtk/setupwizard.c:320 -msgid "Password: (*)" -msgstr "" - -#: ../gtk/setupwizard.c:322 -msgid "Email: (*)" -msgstr "" - -#: ../gtk/setupwizard.c:324 -msgid "Confirm your password: (*)" -msgstr "" - -#: ../gtk/setupwizard.c:338 -msgid "Keep me informed with linphone updates" -msgstr "" - -#: ../gtk/setupwizard.c:394 -msgid "" -"Error, account not validated, username already used or server unreachable.\n" -"Please go back and try again." -msgstr "" - -#: ../gtk/setupwizard.c:405 -msgid "Thank you. Your account is now configured and ready for use." -msgstr "" - -#: ../gtk/setupwizard.c:413 -msgid "" -"Please validate your account by clicking on the link we just sent you by " -"email.\n" -"Then come back here and press Next button." -msgstr "" - -#: ../gtk/setupwizard.c:600 -msgid "SIP account configuration assistant" -msgstr "" - -#: ../gtk/setupwizard.c:618 -msgid "Welcome to the account setup assistant" -msgstr "" - -#: ../gtk/setupwizard.c:623 -msgid "Account setup assistant" -msgstr "" - -#: ../gtk/setupwizard.c:629 -msgid "Configure your account (step 1/1)" -msgstr "" - -#: ../gtk/setupwizard.c:634 -msgid "Enter your sip username (step 1/1)" -msgstr "" - -#: ../gtk/setupwizard.c:638 -msgid "Enter account information (step 1/2)" -msgstr "" - -#: ../gtk/setupwizard.c:647 -msgid "Validation (step 2/2)" -msgstr "" - -#: ../gtk/setupwizard.c:652 -msgid "Error" -msgstr "" - -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 -msgid "Terminating" -msgstr "" - -#: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, c-format -msgid "Call #%i" -msgstr "" - -#: ../gtk/incall_view.c:155 -#, c-format -msgid "Transfer to call #%i with %s" -msgstr "" - -#: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 -msgid "Not used" -msgstr "" - -#: ../gtk/incall_view.c:221 -msgid "ICE not activated" -msgstr "" - -#: ../gtk/incall_view.c:223 -msgid "ICE failed" -msgstr "" - -#: ../gtk/incall_view.c:225 -msgid "ICE in progress" -msgstr "" - -#: ../gtk/incall_view.c:227 -msgid "Going through one or more NATs" -msgstr "" - -#: ../gtk/incall_view.c:229 -msgid "Direct" -msgstr "" - -#: ../gtk/incall_view.c:231 -msgid "Through a relay server" -msgstr "" - -#: ../gtk/incall_view.c:239 -msgid "uPnP not activated" -msgstr "" - -#: ../gtk/incall_view.c:241 -msgid "uPnP in progress" -msgstr "" - -#: ../gtk/incall_view.c:243 -msgid "uPnp not available" -msgstr "" - -#: ../gtk/incall_view.c:245 -msgid "uPnP is running" -msgstr "" - -#: ../gtk/incall_view.c:247 -msgid "uPnP failed" -msgstr "" - -#: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 -msgid "Direct or through server" -msgstr "" - -#: ../gtk/incall_view.c:267 ../gtk/incall_view.c:279 -#, c-format -msgid "" -"download: %f\n" -"upload: %f (kbit/s)" -msgstr "" - -#: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 -#, c-format -msgid "%ix%i @ %f fps" -msgstr "" - -#: ../gtk/incall_view.c:304 -#, c-format -msgid "%.3f seconds" -msgstr "" - -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 -msgid "Hang up" -msgstr "" - -#: ../gtk/incall_view.c:511 -msgid "Calling..." -msgstr "" - -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 -msgid "00::00::00" -msgstr "" - -#: ../gtk/incall_view.c:525 -msgid "Incoming call" -msgstr "" - -#: ../gtk/incall_view.c:562 -msgid "good" -msgstr "" - -#: ../gtk/incall_view.c:564 -msgid "average" -msgstr "" - -#: ../gtk/incall_view.c:566 -msgid "poor" -msgstr "" - -#: ../gtk/incall_view.c:568 -msgid "very poor" -msgstr "" - -#: ../gtk/incall_view.c:570 -msgid "too bad" -msgstr "" - -#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 -msgid "unavailable" -msgstr "" - -#: ../gtk/incall_view.c:679 -msgid "Secured by SRTP" -msgstr "" - -#: ../gtk/incall_view.c:685 -#, c-format -msgid "Secured by ZRTP - [auth token: %s]" -msgstr "" - -#: ../gtk/incall_view.c:691 -msgid "Set unverified" -msgstr "" - -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 -msgid "Set verified" -msgstr "" - -#: ../gtk/incall_view.c:722 -msgid "In conference" -msgstr "" - -#: ../gtk/incall_view.c:722 -msgid "In call" -msgstr "" - -#: ../gtk/incall_view.c:758 -msgid "Paused call" -msgstr "" - -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "" - -#: ../gtk/incall_view.c:794 -msgid "Call ended." -msgstr "" - -#: ../gtk/incall_view.c:825 -msgid "Transfer in progress" -msgstr "" - -#: ../gtk/incall_view.c:828 -msgid "Transfer done." -msgstr "" - -#: ../gtk/incall_view.c:831 -msgid "Transfer failed." -msgstr "" - -#: ../gtk/incall_view.c:875 -msgid "Resume" -msgstr "" - -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 -msgid "Pause" -msgstr "" - -#: ../gtk/incall_view.c:948 -#, c-format -msgid "" -"Recording into\n" -"%s %s" -msgstr "" - -#: ../gtk/incall_view.c:948 -msgid "(Paused)" -msgstr "" - -#: ../gtk/loginframe.c:88 -#, c-format -msgid "Please enter login information for %s" -msgstr "" - -#: ../gtk/config-fetching.c:57 -#, c-format -msgid "fetching from %s" -msgstr "" - -#: ../gtk/config-fetching.c:73 -#, c-format -msgid "Downloading of remote configuration from %s failed." -msgstr "" - -#: ../gtk/audio_assistant.c:98 -msgid "No voice detected" -msgstr "" - -#: ../gtk/audio_assistant.c:99 -msgid "Too low" -msgstr "" - -#: ../gtk/audio_assistant.c:100 -msgid "Good" -msgstr "" - -#: ../gtk/audio_assistant.c:101 -msgid "Too loud" -msgstr "" - -#: ../gtk/audio_assistant.c:318 -msgid "" -"Welcome !\n" -"This assistant will help you to configure audio settings for Linphone" -msgstr "" - -#: ../gtk/audio_assistant.c:328 -msgid "Capture device" -msgstr "" - -#: ../gtk/audio_assistant.c:329 -msgid "Recorded volume" -msgstr "" - -#: ../gtk/audio_assistant.c:333 -msgid "No voice" -msgstr "" - -#: ../gtk/audio_assistant.c:369 -msgid "Playback device" -msgstr "" - -#: ../gtk/audio_assistant.c:370 -msgid "Play three beeps" -msgstr "" - -#: ../gtk/audio_assistant.c:403 -msgid "Press the record button and say some words" -msgstr "" - -#: ../gtk/audio_assistant.c:404 -msgid "Listen to your record voice" -msgstr "" - -#: ../gtk/audio_assistant.c:433 -msgid "Let's start Linphone now" -msgstr "" - -#: ../gtk/audio_assistant.c:496 -msgid "Audio Assistant" -msgstr "" - -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -msgid "Audio assistant" -msgstr "" - -#: ../gtk/audio_assistant.c:511 -msgid "Mic Gain calibration" -msgstr "" - -#: ../gtk/audio_assistant.c:517 -msgid "Speaker volume calibration" -msgstr "" - -#: ../gtk/audio_assistant.c:522 -msgid "Record and Play" -msgstr "" - -#: ../gtk/main.ui.h:1 -msgid "Callee name" -msgstr "" - -#: ../gtk/main.ui.h:2 -msgid "Send" -msgstr "" - -#: ../gtk/main.ui.h:3 -msgid "End conference" -msgstr "" - -#: ../gtk/main.ui.h:7 -msgid "Record this call to an audio file" -msgstr "" - -#: ../gtk/main.ui.h:8 -msgid "Video" -msgstr "" - -#: ../gtk/main.ui.h:10 -msgid "Mute" -msgstr "" - -#: ../gtk/main.ui.h:11 -msgid "Transfer" -msgstr "" - -#: ../gtk/main.ui.h:14 -msgid "In call" -msgstr "" - -#: ../gtk/main.ui.h:15 -msgid "Duration" -msgstr "" - -#: ../gtk/main.ui.h:16 -msgid "Call quality rating" -msgstr "" - -#: ../gtk/main.ui.h:17 -msgid "All users" -msgstr "" - -#: ../gtk/main.ui.h:18 -msgid "Online users" -msgstr "" - -#: ../gtk/main.ui.h:19 -msgid "ADSL" -msgstr "" - -#: ../gtk/main.ui.h:20 -msgid "Fiber Channel" -msgstr "" - -#: ../gtk/main.ui.h:21 -msgid "Default" -msgstr "" - -#: ../gtk/main.ui.h:22 -msgid "_Options" -msgstr "" - -#: ../gtk/main.ui.h:23 -msgid "Set configuration URI" -msgstr "" - -#: ../gtk/main.ui.h:24 -msgid "Always start video" -msgstr "" - -#: ../gtk/main.ui.h:25 -msgid "Enable self-view" -msgstr "" - -#: ../gtk/main.ui.h:26 -msgid "_Help" -msgstr "" - -#: ../gtk/main.ui.h:27 -msgid "Show debug window" -msgstr "" - -#: ../gtk/main.ui.h:28 -msgid "_Homepage" -msgstr "" - -#: ../gtk/main.ui.h:29 -msgid "Check _Updates" -msgstr "" - -#: ../gtk/main.ui.h:30 -msgid "Account assistant" -msgstr "" - -#: ../gtk/main.ui.h:32 -msgid "SIP address or phone number:" -msgstr "" - -#: ../gtk/main.ui.h:33 -msgid "Initiate a new call" -msgstr "" - -#: ../gtk/main.ui.h:34 -msgid "Contacts" -msgstr "" - -#: ../gtk/main.ui.h:35 -msgid "Search" -msgstr "" - -#: ../gtk/main.ui.h:36 -msgid "Add contacts from directory" -msgstr "" - -#: ../gtk/main.ui.h:37 -msgid "Add contact" -msgstr "" - -#: ../gtk/main.ui.h:38 -msgid "Recent calls" -msgstr "" - -#: ../gtk/main.ui.h:39 -msgid "My current identity:" -msgstr "" - -#: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 -msgid "Username" -msgstr "" - -#: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 -msgid "Password" -msgstr "" - -#: ../gtk/main.ui.h:42 -msgid "Internet connection:" -msgstr "" - -#: ../gtk/main.ui.h:43 -msgid "Automatically log me in" -msgstr "" - -#: ../gtk/main.ui.h:44 ../gtk/password.ui.h:3 -msgid "UserID" -msgstr "" - -#: ../gtk/main.ui.h:45 -msgid "Login information" -msgstr "" - -#: ../gtk/main.ui.h:46 -msgid "Welcome !" -msgstr "" - -#: ../gtk/main.ui.h:47 -msgid "Delete" -msgstr "" - -#: ../gtk/about.ui.h:1 -msgid "About linphone" -msgstr "" - -#: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" -msgstr "" - -#: ../gtk/about.ui.h:4 -msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "" - -#: ../gtk/about.ui.h:5 -msgid "" -"fr: Simon Morlat\n" -"en: Simon Morlat and Delphine Perreau\n" -"it: Alberto Zanoni \n" -"de: Jean-Jacques Sarton \n" -"sv: Daniel Nylander \n" -"es: Jesus Benitez \n" -"ja: YAMAGUCHI YOSHIYA \n" -"pt_BR: Rafael Caesar Lenzi \n" -"pl: Robert Nasiadek \n" -"cs: Petr Pisar \n" -"hu: anonymous\n" -"he: Eli Zaretskii \n" -msgstr "" - -#: ../gtk/contact.ui.h:2 -msgid "SIP Address" -msgstr "" - -#: ../gtk/contact.ui.h:3 -msgid "Show this contact presence status" -msgstr "" - -#: ../gtk/contact.ui.h:4 -msgid "Allow this contact to see my presence status" -msgstr "" - -#: ../gtk/contact.ui.h:5 -msgid "Contact information" -msgstr "" - -#: ../gtk/log.ui.h:1 -msgid "Linphone debug window" -msgstr "" - -#: ../gtk/log.ui.h:2 -msgid "Scroll to end" -msgstr "" - -#: ../gtk/password.ui.h:1 -msgid "Linphone - Authentication required" -msgstr "" - -#: ../gtk/password.ui.h:2 -msgid "Please enter the domain password" -msgstr "" - -#: ../gtk/call_logs.ui.h:1 -msgid "Call history" -msgstr "" - -#: ../gtk/call_logs.ui.h:2 -msgid "Clear all" -msgstr "" - -#: ../gtk/call_logs.ui.h:3 -msgid "Call back" -msgstr "" - -#: ../gtk/sip_account.ui.h:1 -msgid "Linphone - Configure a SIP account" -msgstr "" - -#: ../gtk/sip_account.ui.h:2 -msgid "Your SIP identity:" -msgstr "" - -#: ../gtk/sip_account.ui.h:3 -msgid "Looks like sip:@" -msgstr "" - -#: ../gtk/sip_account.ui.h:4 -msgid "sip:" -msgstr "" - -#: ../gtk/sip_account.ui.h:5 -msgid "SIP Proxy address:" -msgstr "" - -#: ../gtk/sip_account.ui.h:6 -msgid "Looks like sip:" -msgstr "" - -#: ../gtk/sip_account.ui.h:7 -msgid "Registration duration (sec):" -msgstr "" - -#: ../gtk/sip_account.ui.h:8 -msgid "Contact params (optional):" -msgstr "" - -#: ../gtk/sip_account.ui.h:9 -msgid "AVPF regular RTCP interval (sec):" -msgstr "" - -#: ../gtk/sip_account.ui.h:10 -msgid "Route (optional):" -msgstr "" - -#: ../gtk/sip_account.ui.h:11 -msgid "Transport" -msgstr "" - -#: ../gtk/sip_account.ui.h:12 -msgid "Register" -msgstr "" - -#: ../gtk/sip_account.ui.h:13 -msgid "Publish presence information" -msgstr "" - -#: ../gtk/sip_account.ui.h:14 -msgid "Enable AVPF" -msgstr "" - -#: ../gtk/sip_account.ui.h:15 -msgid "Configure a SIP account" -msgstr "" - -#: ../gtk/parameters.ui.h:1 -msgid "anonymous" -msgstr "" - -#: ../gtk/parameters.ui.h:2 -msgid "GSSAPI" -msgstr "" - -#: ../gtk/parameters.ui.h:3 -msgid "SASL" -msgstr "" - -#: ../gtk/parameters.ui.h:4 -msgid "default soundcard" -msgstr "" - -#: ../gtk/parameters.ui.h:5 -msgid "a sound card" -msgstr "" - -#: ../gtk/parameters.ui.h:6 -msgid "default camera" -msgstr "" - -#: ../gtk/parameters.ui.h:7 -msgid "CIF" -msgstr "" - -#: ../gtk/parameters.ui.h:8 -msgid "Audio codecs" -msgstr "" - -#: ../gtk/parameters.ui.h:9 -msgid "Video codecs" -msgstr "" - -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 -msgid "C" -msgstr "" - -#: ../gtk/parameters.ui.h:11 -msgid "SIP (UDP)" -msgstr "" - -#: ../gtk/parameters.ui.h:12 -msgid "SIP (TCP)" -msgstr "" - -#: ../gtk/parameters.ui.h:13 -msgid "SIP (TLS)" -msgstr "" - -#: ../gtk/parameters.ui.h:14 -msgid "Settings" -msgstr "" - -#: ../gtk/parameters.ui.h:15 -msgid "Set Maximum Transmission Unit:" -msgstr "" - -#: ../gtk/parameters.ui.h:16 -msgid "Send DTMFs as SIP info" -msgstr "" - -#: ../gtk/parameters.ui.h:17 -msgid "Use IPv6 instead of IPv4" -msgstr "" - -#: ../gtk/parameters.ui.h:18 -msgid "Transport" -msgstr "" - -#: ../gtk/parameters.ui.h:19 -msgid "Media encryption type" -msgstr "" - -#: ../gtk/parameters.ui.h:20 -msgid "Video RTP/UDP:" -msgstr "" - -#: ../gtk/parameters.ui.h:21 -msgid "Audio RTP/UDP:" -msgstr "" - -#: ../gtk/parameters.ui.h:22 -msgid "Fixed" -msgstr "" - -#: ../gtk/parameters.ui.h:23 -msgid "Media encryption is mandatory" -msgstr "" - -#: ../gtk/parameters.ui.h:24 -msgid "Tunnel" -msgstr "" - -#: ../gtk/parameters.ui.h:25 -msgid "DSCP fields" -msgstr "" - -#: ../gtk/parameters.ui.h:26 -msgid "SIP/TCP port" -msgstr "" - -#: ../gtk/parameters.ui.h:27 -msgid "SIP/UDP port" -msgstr "" - -#: ../gtk/parameters.ui.h:28 -msgid "Network protocol and ports" -msgstr "" - -#: ../gtk/parameters.ui.h:29 -msgid "Direct connection to the Internet" -msgstr "" - -#: ../gtk/parameters.ui.h:30 -msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "" - -#: ../gtk/parameters.ui.h:31 -msgid "Behind NAT / Firewall (use STUN to resolve)" -msgstr "" - -#: ../gtk/parameters.ui.h:32 -msgid "Behind NAT / Firewall (use ICE)" -msgstr "" - -#: ../gtk/parameters.ui.h:33 -msgid "Behind NAT / Firewall (use uPnP)" -msgstr "" - -#: ../gtk/parameters.ui.h:34 -msgid "Public IP address:" -msgstr "" - -#: ../gtk/parameters.ui.h:35 -msgid "Stun server:" -msgstr "" - -#: ../gtk/parameters.ui.h:36 -msgid "NAT and Firewall" -msgstr "" - -#: ../gtk/parameters.ui.h:37 -msgid "Network settings" -msgstr "" - -#: ../gtk/parameters.ui.h:38 -msgid "Ring sound:" -msgstr "" - -#: ../gtk/parameters.ui.h:39 -msgid "ALSA special device (optional):" -msgstr "" - -#: ../gtk/parameters.ui.h:40 -msgid "Capture device:" -msgstr "" - -#: ../gtk/parameters.ui.h:41 -msgid "Ring device:" -msgstr "" - -#: ../gtk/parameters.ui.h:42 -msgid "Playback device:" -msgstr "" - -#: ../gtk/parameters.ui.h:43 -msgid "Enable echo cancellation" -msgstr "" - -#: ../gtk/parameters.ui.h:44 -msgid "Audio" -msgstr "" - -#: ../gtk/parameters.ui.h:45 -msgid "Video input device:" -msgstr "" - -#: ../gtk/parameters.ui.h:46 -msgid "Prefered video resolution:" -msgstr "" - -#: ../gtk/parameters.ui.h:47 -msgid "Video output method:" -msgstr "" - -#: ../gtk/parameters.ui.h:48 -msgid "Video" -msgstr "" - -#: ../gtk/parameters.ui.h:49 -msgid "Multimedia settings" -msgstr "" - -#: ../gtk/parameters.ui.h:50 -msgid "This section defines your SIP address when not using a SIP account" -msgstr "" - -#: ../gtk/parameters.ui.h:51 -msgid "Your display name (eg: John Doe):" -msgstr "" - -#: ../gtk/parameters.ui.h:52 -msgid "Your username:" -msgstr "" - -#: ../gtk/parameters.ui.h:53 -msgid "Your resulting SIP address:" -msgstr "" - -#: ../gtk/parameters.ui.h:54 -msgid "Default identity" -msgstr "" - -#: ../gtk/parameters.ui.h:55 -msgid "Wizard" -msgstr "" - -#: ../gtk/parameters.ui.h:56 -msgid "Add" -msgstr "" - -#: ../gtk/parameters.ui.h:57 -msgid "Edit" -msgstr "" - -#: ../gtk/parameters.ui.h:58 -msgid "Remove" -msgstr "" - -#: ../gtk/parameters.ui.h:59 -msgid "Proxy accounts" -msgstr "" - -#: ../gtk/parameters.ui.h:60 -msgid "Erase all passwords" -msgstr "" - -#: ../gtk/parameters.ui.h:61 -msgid "Privacy" -msgstr "" - -#: ../gtk/parameters.ui.h:62 -msgid "Manage SIP Accounts" -msgstr "" - -#: ../gtk/parameters.ui.h:63 ../gtk/tunnel_config.ui.h:4 -msgid "Enable" -msgstr "" - -#: ../gtk/parameters.ui.h:64 ../gtk/tunnel_config.ui.h:5 -msgid "Disable" -msgstr "" - -#: ../gtk/parameters.ui.h:65 -msgid "Codecs" -msgstr "" - -#: ../gtk/parameters.ui.h:66 -msgid "0 stands for \"unlimited\"" -msgstr "" - -#: ../gtk/parameters.ui.h:67 -msgid "Upload speed limit in Kbit/sec:" -msgstr "" - -#: ../gtk/parameters.ui.h:68 -msgid "Download speed limit in Kbit/sec:" -msgstr "" - -#: ../gtk/parameters.ui.h:69 -msgid "Enable adaptive rate control" -msgstr "" - -#: ../gtk/parameters.ui.h:70 -msgid "" -"Adaptive rate control is a technique to dynamically guess the available " -"bandwidth during a call." -msgstr "" - -#: ../gtk/parameters.ui.h:71 -msgid "Bandwidth control" -msgstr "" - -#: ../gtk/parameters.ui.h:72 -msgid "Codecs" -msgstr "" - -#: ../gtk/parameters.ui.h:73 -msgid "Language" -msgstr "" - -#: ../gtk/parameters.ui.h:74 -msgid "Show advanced settings" -msgstr "" - -#: ../gtk/parameters.ui.h:75 -msgid "Level" -msgstr "" - -#: ../gtk/parameters.ui.h:76 -msgid "User interface" -msgstr "" - -#: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -msgid "Server address:" -msgstr "" - -#: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -msgid "Authentication method:" -msgstr "" - -#: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "" - -#: ../gtk/parameters.ui.h:81 -msgid "LDAP Account setup" -msgstr "" - -#: ../gtk/parameters.ui.h:82 -msgid "LDAP" -msgstr "" - -#: ../gtk/parameters.ui.h:83 -msgid "Done" -msgstr "" - -#: ../gtk/buddylookup.ui.h:1 -msgid "Search contacts in directory" -msgstr "" - -#: ../gtk/buddylookup.ui.h:2 -msgid "Add to my list" -msgstr "" - -#: ../gtk/buddylookup.ui.h:3 -msgid "Search somebody" -msgstr "" - -#: ../gtk/waiting.ui.h:1 -msgid "Linphone" -msgstr "" - -#: ../gtk/waiting.ui.h:2 -msgid "Please wait" -msgstr "" - -#: ../gtk/dscp_settings.ui.h:1 -msgid "DSCP settings" -msgstr "" - -#: ../gtk/dscp_settings.ui.h:2 -msgid "SIP" -msgstr "" - -#: ../gtk/dscp_settings.ui.h:3 -msgid "Audio RTP stream" -msgstr "" - -#: ../gtk/dscp_settings.ui.h:4 -msgid "Video RTP stream" -msgstr "" - -#: ../gtk/dscp_settings.ui.h:5 -msgid "Set DSCP values (in hexadecimal)" -msgstr "" - -#: ../gtk/call_statistics.ui.h:1 -msgid "Call statistics" -msgstr "" - -#: ../gtk/call_statistics.ui.h:2 -msgid "Audio codec" -msgstr "" - -#: ../gtk/call_statistics.ui.h:3 -msgid "Video codec" -msgstr "" - -#: ../gtk/call_statistics.ui.h:4 -msgid "Audio IP bandwidth usage" -msgstr "" - -#: ../gtk/call_statistics.ui.h:5 -msgid "Audio Media connectivity" -msgstr "" - -#: ../gtk/call_statistics.ui.h:6 -msgid "Video IP bandwidth usage" -msgstr "" - -#: ../gtk/call_statistics.ui.h:7 -msgid "Video Media connectivity" -msgstr "" - -#: ../gtk/call_statistics.ui.h:8 -msgid "Round trip time" -msgstr "" - -#: ../gtk/call_statistics.ui.h:9 -msgid "Video resolution received" -msgstr "" - -#: ../gtk/call_statistics.ui.h:10 -msgid "Video resolution sent" -msgstr "" - -#: ../gtk/call_statistics.ui.h:11 -msgid "RTP profile" -msgstr "" - -#: ../gtk/call_statistics.ui.h:12 -msgid "Call statistics and information" -msgstr "" - -#: ../gtk/tunnel_config.ui.h:1 -msgid "Configure VoIP tunnel" -msgstr "" - -#: ../gtk/tunnel_config.ui.h:2 -msgid "Host" -msgstr "" - -#: ../gtk/tunnel_config.ui.h:3 -msgid "Port" -msgstr "" - -#: ../gtk/tunnel_config.ui.h:6 -msgid "Configure tunnel" -msgstr "" - -#: ../gtk/tunnel_config.ui.h:9 -msgid "Configure http proxy (optional)" -msgstr "" - -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "" - -#: ../gtk/ldap.ui.h:1 -msgid "LDAP Settings" -msgstr "" - -#: ../gtk/ldap.ui.h:6 -msgid "Use TLS Connection" -msgstr "" - -#: ../gtk/ldap.ui.h:7 -msgid "Not yet available" -msgstr "" - -#: ../gtk/ldap.ui.h:8 -msgid "Connection" -msgstr "" - -#: ../gtk/ldap.ui.h:9 -msgid "Bind DN" -msgstr "" - -#: ../gtk/ldap.ui.h:10 -msgid "Authname" -msgstr "" - -#: ../gtk/ldap.ui.h:11 -msgid "Realm" -msgstr "" - -#: ../gtk/ldap.ui.h:12 -msgid "SASL" -msgstr "" - -#: ../gtk/ldap.ui.h:13 -msgid "Base object:" -msgstr "" - -#: ../gtk/ldap.ui.h:15 -#, no-c-format -msgid "Filter (%s for name):" -msgstr "" - -#: ../gtk/ldap.ui.h:16 -msgid "Name Attribute:" -msgstr "" - -#: ../gtk/ldap.ui.h:17 -msgid "SIP address attribute:" -msgstr "" - -#: ../gtk/ldap.ui.h:18 -msgid "Attributes to query:" -msgstr "" - -#: ../gtk/ldap.ui.h:19 -msgid "Search" -msgstr "" - -#: ../gtk/ldap.ui.h:20 -msgid "Timeout for search:" -msgstr "" - -#: ../gtk/ldap.ui.h:21 -msgid "Max results:" -msgstr "" - -#: ../gtk/ldap.ui.h:22 -msgid "Follow Aliases" -msgstr "" - -#: ../gtk/ldap.ui.h:23 -msgid "Miscellaneous" -msgstr "" - -#: ../gtk/ldap.ui.h:24 -msgid "ANONYMOUS" -msgstr "" - -#: ../gtk/ldap.ui.h:25 -msgid "SIMPLE" -msgstr "" - -#: ../gtk/ldap.ui.h:26 -msgid "DIGEST-MD5" -msgstr "" - -#: ../gtk/ldap.ui.h:27 -msgid "NTLM" -msgstr "" - -#: ../gtk/config-uri.ui.h:1 -msgid "Specifying a remote configuration URI" -msgstr "" - -#: ../gtk/config-uri.ui.h:2 -msgid "" -"This dialog allows to set an http or https address when configuration is to " -"be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, " -"Linphone will restart automatically in order to fetch and take into account " -"the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" -msgstr "" - -#: ../gtk/provisioning-fetch.ui.h:1 -msgid "Configuring..." -msgstr "" - -#: ../gtk/provisioning-fetch.ui.h:2 -msgid "Please wait while fetching configuration from server..." -msgstr "" - -#: ../coreapi/linphonecore.c:1511 -msgid "Ready" -msgstr "" - -#: ../coreapi/linphonecore.c:2470 -msgid "Configuring" -msgstr "" - -#: ../coreapi/linphonecore.c:2635 -msgid "Looking for telephone number destination..." -msgstr "" - -#: ../coreapi/linphonecore.c:2637 -msgid "Could not resolve this number." -msgstr "" - -#. must be known at that time -#: ../coreapi/linphonecore.c:2919 -msgid "Contacting" -msgstr "" - -#: ../coreapi/linphonecore.c:2924 -msgid "Could not call" -msgstr "" - -#: ../coreapi/linphonecore.c:3074 -msgid "Sorry, we have reached the maximum number of simultaneous calls" -msgstr "" - -#: ../coreapi/linphonecore.c:3233 -msgid "is contacting you" -msgstr "" - -#: ../coreapi/linphonecore.c:3234 -msgid " and asked autoanswer." -msgstr "" - -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "" - -#: ../coreapi/linphonecore.c:3352 -msgid "Modifying call parameters..." -msgstr "" - -#: ../coreapi/linphonecore.c:3700 -msgid "Connected." -msgstr "" - -#: ../coreapi/linphonecore.c:3725 -msgid "Call aborted" -msgstr "" - -#: ../coreapi/linphonecore.c:3915 -msgid "Could not pause the call" -msgstr "" - -#: ../coreapi/linphonecore.c:3919 -msgid "Pausing the current call..." -msgstr "" - -#: ../coreapi/misc.c:438 -msgid "Stun lookup in progress..." -msgstr "" - -#: ../coreapi/misc.c:619 -msgid "ICE local candidates gathering in progress..." -msgstr "" - -#: ../coreapi/friend.c:33 -msgid "Online" -msgstr "" - -#: ../coreapi/friend.c:36 -msgid "Busy" -msgstr "" - -#: ../coreapi/friend.c:39 -msgid "Be right back" -msgstr "" - -#: ../coreapi/friend.c:42 -msgid "Away" -msgstr "" - -#: ../coreapi/friend.c:45 -msgid "On the phone" -msgstr "" - -#: ../coreapi/friend.c:48 -msgid "Out to lunch" -msgstr "" - -#: ../coreapi/friend.c:51 -msgid "Do not disturb" -msgstr "" - -#: ../coreapi/friend.c:54 -msgid "Moved" -msgstr "" - -#: ../coreapi/friend.c:57 -msgid "Using another messaging service" -msgstr "" - -#: ../coreapi/friend.c:60 -msgid "Offline" -msgstr "" - -#: ../coreapi/friend.c:63 -msgid "Pending" -msgstr "" - -#: ../coreapi/friend.c:66 -msgid "Vacation" -msgstr "" - -#: ../coreapi/friend.c:68 -msgid "Unknown-bug" -msgstr "" - -#: ../coreapi/proxy.c:319 -msgid "" -"The sip proxy address you entered is invalid, it must start with \"sip:\" " -"followed by a hostname." -msgstr "" - -#: ../coreapi/proxy.c:325 -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:1377 -#, c-format -msgid "Could not login as %s" -msgstr "" - -#: ../coreapi/callbacks.c:383 -msgid "Remote ringing." -msgstr "" - -#: ../coreapi/callbacks.c:404 -msgid "Remote ringing..." -msgstr "" - -#: ../coreapi/callbacks.c:414 -msgid "Early media." -msgstr "" - -#: ../coreapi/callbacks.c:475 -#, c-format -msgid "Call with %s is paused." -msgstr "" - -#: ../coreapi/callbacks.c:488 -#, c-format -msgid "Call answered by %s - on hold." -msgstr "" - -#: ../coreapi/callbacks.c:498 -msgid "Call resumed." -msgstr "" - -#: ../coreapi/callbacks.c:502 -#, c-format -msgid "Call answered by %s." -msgstr "" - -#: ../coreapi/callbacks.c:525 -msgid "Incompatible, check codecs or security settings..." -msgstr "" - -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 -msgid "Incompatible media parameters." -msgstr "" - -#: ../coreapi/callbacks.c:560 -msgid "We have been resumed." -msgstr "" - -#. we are being paused -#: ../coreapi/callbacks.c:568 -msgid "We are paused by other party." -msgstr "" - -#. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 -msgid "Call is updated by remote." -msgstr "" - -#: ../coreapi/callbacks.c:705 -msgid "Call terminated." -msgstr "" - -#: ../coreapi/callbacks.c:733 -msgid "User is busy." -msgstr "" - -#: ../coreapi/callbacks.c:734 -msgid "User is temporarily unavailable." -msgstr "" - -#. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 -msgid "User does not want to be disturbed." -msgstr "" - -#: ../coreapi/callbacks.c:737 -msgid "Call declined." -msgstr "" - -#: ../coreapi/callbacks.c:752 -msgid "Request timeout." -msgstr "" - -#: ../coreapi/callbacks.c:780 -msgid "Redirected" -msgstr "" - -#: ../coreapi/callbacks.c:835 -msgid "Call failed." -msgstr "" - -#: ../coreapi/callbacks.c:913 -#, c-format -msgid "Registration on %s successful." -msgstr "" - -#: ../coreapi/callbacks.c:914 -#, c-format -msgid "Unregistration on %s done." -msgstr "" - -#: ../coreapi/callbacks.c:932 -msgid "no response timeout" -msgstr "" - -#: ../coreapi/callbacks.c:935 -#, c-format -msgid "Registration on %s failed: %s" -msgstr "" - -#: ../coreapi/callbacks.c:942 -msgid "Service unavailable, retrying" -msgstr "" - -#: ../coreapi/linphonecall.c:174 -#, c-format -msgid "Authentication token is %s" -msgstr "" - -#: ../coreapi/linphonecall.c:3020 -#, c-format -msgid "You have missed %i call." -msgid_plural "You have missed %i calls." -msgstr[0] "" -msgstr[1] "" diff --git a/tester/call_tester.c b/tester/call_tester.c index fbc413905..ff385b7a5 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -361,9 +361,13 @@ static void direct_call_over_ipv6(){ if (liblinphone_tester_ipv6_available()){ LCSipTransports pauline_transports; LinphoneAddress* pauline_dest = linphone_address_new("sip:[::1];transport=tcp"); + char hellopath[256]; marie = linphone_core_manager_new( "marie_rc"); pauline = linphone_core_manager_new( "pauline_tcp_rc"); + /*use playfile for callee to avoid locking on capture card*/ + snprintf(hellopath,sizeof(hellopath), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); + linphone_core_set_play_file(pauline->lc,hellopath); linphone_core_use_files (pauline->lc,TRUE); linphone_core_enable_ipv6(marie->lc,TRUE); From 4ac1ccdf05d2877beca5289c5361a7e952dc5018 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 24 Nov 2014 14:45:10 +0100 Subject: [PATCH 197/249] Handle the callbacks associated with a chat message directly in the LinphoneChatMessage object instead of in the LinphoneCore object. --- coreapi/callbacks.c | 11 +- coreapi/chat.c | 234 +++++++++++++++++++++++++++++++++--- coreapi/help/filetransfer.c | 28 +++-- coreapi/linphonecore.h | 70 ++++++++++- coreapi/private.h | 13 ++ gtk/chat.c | 7 +- tester/liblinphone_tester.h | 7 +- tester/message_tester.c | 80 ++++++++---- tester/tester.c | 3 - 9 files changed, 386 insertions(+), 67 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 363272324..0cc5bf6fa 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -1172,11 +1172,14 @@ static void text_delivery_update(SalOp *op, SalTextDeliveryStatus status){ chat_msg->state=chatStatusSal2Linphone(status); linphone_chat_message_update_state(chat_msg); - if (chat_msg && chat_msg->cb) { + if (chat_msg && (chat_msg->cb || (chat_msg->callbacks && linphone_chat_message_cbs_get_msg_state_changed(chat_msg->callbacks)))) { ms_message("Notifying text delivery with status %i",chat_msg->state); - chat_msg->cb(chat_msg - ,chat_msg->state - ,chat_msg->cb_ud); + if (chat_msg->callbacks && linphone_chat_message_cbs_get_msg_state_changed(chat_msg->callbacks)) { + linphone_chat_message_cbs_get_msg_state_changed(chat_msg->callbacks)(chat_msg, chat_msg->state); + } else { + /* Legacy */ + chat_msg->cb(chat_msg,chat_msg->state,chat_msg->cb_ud); + } } if (status != SalTextDeliveryInProgress) { /*only release op if not in progress*/ linphone_chat_message_destroy(chat_msg); diff --git a/coreapi/chat.c b/coreapi/chat.c index dc7598f03..6302af243 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -35,6 +35,139 @@ #define COMPOSING_DEFAULT_REMOTE_REFRESH_TIMEOUT 120 +static LinphoneChatMessageCbs * linphone_chat_message_cbs_new(void) { + return belle_sip_object_new(LinphoneChatMessageCbs); +} + +BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(LinphoneChatMessageCbs); + +BELLE_SIP_INSTANCIATE_VPTR(LinphoneChatMessageCbs, belle_sip_object_t, + NULL, // destroy + NULL, // clone + NULL, // marshal + FALSE +); + + +/** + * @addtogroup chatroom + * @{ + */ + +/** + * Acquire a reference to the LinphoneChatMessageCbs object. + * @param[in] cbs LinphoneChatMessageCbs object. + * @return The same LinphoneChatMessageCbs object. + */ +LinphoneChatMessageCbs * linphone_chat_message_cbs_ref(LinphoneChatMessageCbs *cbs) { + belle_sip_object_ref(cbs); + return cbs; +} + +/** + * Release reference to the LinphoneChatMessageCbs object. + * @param[in] cbs LinphoneChatMessageCbs object. + */ +void linphone_chat_message_cbs_unref(LinphoneChatMessageCbs *cbs) { + belle_sip_object_unref(cbs); +} + +/** + * Retrieve the user pointer associated with the LinphoneChatMessageCbs object. + * @param[in] cbs LinphoneChatMessageCbs object. + * @return The user pointer associated with the LinphoneChatMessageCbs object. + */ +void *linphone_chat_message_cbs_get_user_data(const LinphoneChatMessageCbs *cbs) { + return cbs->user_data; +} + +/** + * Assign a user pointer to the LinphoneChatMessageCbs object. + * @param[in] cbs LinphoneChatMessageCbs object. + * @param[in] ud The user pointer to associate with the LinphoneChatMessageCbs object. + */ +void linphone_chat_message_cbs_set_user_data(LinphoneChatMessageCbs *cbs, void *ud) { + cbs->user_data = ud; +} + +/** + * Get the message state changed callback. + * @param[in] cbs LinphoneChatMessageCbs object. + * @return The current message state changed callback. + */ +LinphoneChatMessageMsgStateChangedCb linphone_chat_message_cbs_get_msg_state_changed(const LinphoneChatMessageCbs *cbs) { + return cbs->msg_state_changed; +} + +/** + * Set the message state changed callback. + * @param[in] cbs LinphoneChatMessageCbs object. + * @param[in] cb The message state changed callback to be used. + */ +void linphone_chat_message_cbs_set_msg_state_changed(LinphoneChatMessageCbs *cbs, LinphoneChatMessageMsgStateChangedCb cb) { + cbs->msg_state_changed = cb; +} + +/** + * Get the file transfer receive callback. + * @param[in] cbs LinphoneChatMessageCbs object. + * @return The current file transfer receive callback. + */ +LinphoneChatMessageFileTransferRecvCb linphone_chat_message_cbs_get_file_transfer_recv(const LinphoneChatMessageCbs *cbs) { + return cbs->file_transfer_recv; +} + +/** + * Set the file transfer receive callback. + * @param[in] cbs LinphoneChatMessageCbs object. + * @param[in] cb The file transfer receive callback to be used. + */ +void linphone_chat_message_cbs_set_file_transfer_recv(LinphoneChatMessageCbs *cbs, LinphoneChatMessageFileTransferRecvCb cb) { + cbs->file_transfer_recv = cb; +} + +/** + * Get the file transfer send callback. + * @param[in] cbs LinphoneChatMessageCbs object. + * @return The current file transfer send callback. + */ +LinphoneChatMessageFileTransferSendCb linphone_chat_message_cbs_get_file_transfer_send(const LinphoneChatMessageCbs *cbs) { + return cbs->file_transfer_send; +} + +/** + * Set the file transfer send callback. + * @param[in] cbs LinphoneChatMessageCbs object. + * @param[in] cb The file transfer send callback to be used. + */ +void linphone_chat_message_cbs_set_file_transfer_send(LinphoneChatMessageCbs *cbs, LinphoneChatMessageFileTransferSendCb cb) { + cbs->file_transfer_send = cb; +} + +/** + * Get the file transfer progress indication callback. + * @param[in] cbs LinphoneChatMessageCbs object. + * @return The current file transfer progress indication callback. + */ +LinphoneChatMessageFileTransferProgressIndicationCb linphone_chat_message_cbs_get_file_transfer_progress_indication(const LinphoneChatMessageCbs *cbs) { + return cbs->file_transfer_progress_indication; +} + +/** + * Set the file transfer progress indication callback. + * @param[in] cbs LinphoneChatMessageCbs object. + * @param[in] cb The file transfer progress indication callback to be used. + */ +void linphone_chat_message_cbs_set_file_transfer_progress_indication(LinphoneChatMessageCbs *cbs, LinphoneChatMessageFileTransferProgressIndicationCb cb) { + cbs->file_transfer_progress_indication = cb; +} + +/** + * @} + */ + + + static void _linphone_chat_room_send_message(LinphoneChatRoom *cr, LinphoneChatMessage* msg); static void process_io_error_upload(void *data, const belle_sip_io_error_event_t *event){ @@ -43,6 +176,9 @@ static void process_io_error_upload(void *data, const belle_sip_io_error_event_t if (msg->cb) { msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->cb_ud); } + if (linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)) { + linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)(msg, LinphoneChatMessageStateNotDelivered); + } } static void process_auth_requested_upload(void *data, belle_sip_auth_event_t *event){ LinphoneChatMessage* msg=(LinphoneChatMessage *)data; @@ -50,6 +186,9 @@ static void process_auth_requested_upload(void *data, belle_sip_auth_event_t *ev if (msg->cb) { msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->cb_ud); } + if (linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)) { + linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)(msg, LinphoneChatMessageStateNotDelivered); + } } static void process_io_error_download(void *data, const belle_sip_io_error_event_t *event){ @@ -58,6 +197,9 @@ static void process_io_error_download(void *data, const belle_sip_io_error_event if (msg->cb) { msg->cb(msg, LinphoneChatMessageStateFileTransferError, msg->cb_ud); } + if (linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)) { + linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)(msg, LinphoneChatMessageStateFileTransferError); + } } static void process_auth_requested_download(void *data, belle_sip_auth_event_t *event){ LinphoneChatMessage* msg=(LinphoneChatMessage *)data; @@ -65,6 +207,9 @@ static void process_auth_requested_download(void *data, belle_sip_auth_event_t * if (msg->cb) { msg->cb(msg, LinphoneChatMessageStateFileTransferError, msg->cb_ud); } + if (linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)) { + linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)(msg, LinphoneChatMessageStateFileTransferError); + } } /** @@ -73,10 +218,12 @@ static void process_auth_requested_download(void *data, belle_sip_auth_event_t * */ static void linphone_chat_message_file_transfer_on_progress(belle_sip_body_handler_t *bh, belle_sip_message_t *msg, void *data, size_t offset, size_t total){ LinphoneChatMessage* chatMsg=(LinphoneChatMessage *)data; - LinphoneCore *lc = chatMsg->chat_room->lc; - /* call back given by application level */ - linphone_core_notify_file_transfer_progress_indication(lc, chatMsg, chatMsg->file_transfer_information, offset, total); - return; + if (linphone_chat_message_cbs_get_file_transfer_progress_indication(chatMsg->callbacks)) { + linphone_chat_message_cbs_get_file_transfer_progress_indication(chatMsg->callbacks)(chatMsg, chatMsg->file_transfer_information, offset, total); + } else { + /* Legacy: call back given by application level */ + linphone_core_notify_file_transfer_progress_indication(chatMsg->chat_room->lc, chatMsg, chatMsg->file_transfer_information, offset, total); + } } /** @@ -98,7 +245,12 @@ static int linphone_chat_message_file_transfer_on_send_body(belle_sip_user_body_ /* if we've not reach the end of file yet, ask for more data*/ if (offsetfile_transfer_information)){ /* get data from call back */ - linphone_core_notify_file_transfer_send(lc, chatMsg, chatMsg->file_transfer_information, buf, size); + if (linphone_chat_message_cbs_get_file_transfer_send(chatMsg->callbacks)) { + linphone_chat_message_cbs_get_file_transfer_send(chatMsg->callbacks)(chatMsg, chatMsg->file_transfer_information, buf, size); + } else { + /* Legacy */ + linphone_core_notify_file_transfer_send(lc, chatMsg, chatMsg->file_transfer_information, buf, size); + } } return BELLE_SIP_CONTINUE; @@ -173,6 +325,9 @@ static void linphone_chat_message_process_response_from_post_file(void *data, co if (msg->cb) { msg->cb(msg, LinphoneChatMessageStateFileTransferDone, msg->cb_ud); } + if (linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)) { + linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)(msg, LinphoneChatMessageStateFileTransferDone); + } _linphone_chat_room_send_message(msg->chat_room, msg); } } @@ -736,6 +891,7 @@ const LinphoneAddress* linphone_chat_room_get_peer_address(LinphoneChatRoom *cr) */ LinphoneChatMessage* linphone_chat_room_create_message(LinphoneChatRoom *cr, const char* message) { LinphoneChatMessage* msg = belle_sip_object_new(LinphoneChatMessage); + msg->callbacks=linphone_chat_message_cbs_new(); msg->chat_room=(LinphoneChatRoom*)cr; msg->message=message?ms_strdup(message):NULL; msg->is_read=TRUE; @@ -762,6 +918,7 @@ LinphoneChatMessage* linphone_chat_room_create_message_2( LinphoneCore *lc=linphone_chat_room_get_lc(cr); LinphoneChatMessage* msg = belle_sip_object_new(LinphoneChatMessage); + msg->callbacks=linphone_chat_message_cbs_new(); msg->chat_room=(LinphoneChatRoom*)cr; msg->message=message?ms_strdup(message):NULL; msg->external_body_url=external_body_url?ms_strdup(external_body_url):NULL; @@ -788,6 +945,7 @@ LinphoneChatMessage* linphone_chat_room_create_message_2( * @param msg #LinphoneChatMessage message to be sent * @param status_cb LinphoneChatMessageStateChangeCb status callback invoked when message is delivered or could not be delivered. May be NULL * @param ud user data for the status cb. + * @deprecated Use linphone_chat_room_send_chat_message() instead. * @note The LinphoneChatMessage must not be destroyed until the the callback is called. */ void linphone_chat_room_send_message2(LinphoneChatRoom *cr, LinphoneChatMessage* msg,LinphoneChatMessageStateChangedCb status_cb, void* ud) { @@ -797,6 +955,18 @@ void linphone_chat_room_send_message2(LinphoneChatRoom *cr, LinphoneChatMessage* _linphone_chat_room_send_message(cr, msg); } +/** + * Send a message to peer member of this chat room. + * @param[in] cr LinphoneChatRoom object + * @param[in] msg LinphoneChatMessage object + * The state of the message sending will be notified via the callbacks defined in the LinphoneChatMessageCbs object that can be obtained + * by calling linphone_chat_message_get_callbacks(). + */ +void linphone_chat_room_send_chat_message(LinphoneChatRoom *cr, LinphoneChatMessage *msg) { + msg->state = LinphoneChatMessageStateInProgress; + _linphone_chat_room_send_message(cr, msg); +} + static char * linphone_chat_room_create_is_composing_xml(LinphoneChatRoom *cr) { xmlBufferPtr buf; xmlTextWriterPtr writer; @@ -1034,8 +1204,12 @@ static void on_recv_body(belle_sip_user_body_handler_t *bh, belle_sip_message_t if (chatMsg->http_request == NULL) { return; } - /* call back given by application level */ - linphone_core_notify_file_transfer_recv(lc, chatMsg, chatMsg->file_transfer_information, (char *)buffer, size); + if (linphone_chat_message_cbs_get_file_transfer_recv(chatMsg->callbacks)) { + linphone_chat_message_cbs_get_file_transfer_recv(chatMsg->callbacks)(chatMsg, chatMsg->file_transfer_information, (char *)buffer, size); + } else { + /* Legacy: call back given by application level */ + linphone_core_notify_file_transfer_recv(lc, chatMsg, chatMsg->file_transfer_information, (char *)buffer, size); + } return; } @@ -1104,21 +1278,26 @@ static void linphone_chat_process_response_from_get_file(void *data, const belle LinphoneChatMessage* chatMsg=(LinphoneChatMessage *)data; LinphoneCore *lc = chatMsg->chat_room->lc; /* file downloaded succesfully, call again the callback with size at zero */ - linphone_core_notify_file_transfer_recv(lc, chatMsg, chatMsg->file_transfer_information, NULL, 0); + if (linphone_chat_message_cbs_get_file_transfer_recv(chatMsg->callbacks)) { + linphone_chat_message_cbs_get_file_transfer_recv(chatMsg->callbacks)(chatMsg, chatMsg->file_transfer_information, NULL, 0); + } else { + linphone_core_notify_file_transfer_recv(lc, chatMsg, chatMsg->file_transfer_information, NULL, 0); + } if (chatMsg->cb) { chatMsg->cb(chatMsg, LinphoneChatMessageStateFileTransferDone, chatMsg->cb_ud); } + if (linphone_chat_message_cbs_get_msg_state_changed(chatMsg->callbacks)) { + linphone_chat_message_cbs_get_msg_state_changed(chatMsg->callbacks)(chatMsg, LinphoneChatMessageStateFileTransferDone); + } } } } /** - * Start the download of the file from remote server - * - * @param message #LinphoneChatMessage - * @param status_cb LinphoneChatMessageStateChangeCb status callback invoked when file is downloaded or could not be downloaded + * Start the download of the file referenced in a LinphoneChatMessage from remote server. + * @param[in] message LinphoneChatMessage object. */ -void linphone_chat_message_start_file_download(LinphoneChatMessage *message, LinphoneChatMessageStateChangedCb status_cb, void *ud) { +void linphone_chat_message_download_file(LinphoneChatMessage *message) { belle_http_request_listener_callbacks_t cbs={0}; belle_http_request_listener_t *l; belle_generic_uri_t *uri; @@ -1142,12 +1321,23 @@ void linphone_chat_message_start_file_download(LinphoneChatMessage *message, Lin l=belle_http_request_listener_create_from_callbacks(&cbs, (void *)message); belle_sip_object_data_set(BELLE_SIP_OBJECT(req),"message",(void *)message,NULL); message->http_request = req; /* keep a reference on the request to be able to cancel the download */ - message->cb = status_cb; - message->cb_ud = ud; message->state = LinphoneChatMessageStateInProgress; /* start the download, status is In Progress */ belle_http_provider_send_request(message->chat_room->lc->http_provider,req,l); } +/** + * Start the download of the file from remote server + * + * @param message #LinphoneChatMessage + * @param status_cb LinphoneChatMessageStateChangeCb status callback invoked when file is downloaded or could not be downloaded + * @deprecated Use linphone_chat_message_download_file() instead. + */ +void linphone_chat_message_start_file_download(LinphoneChatMessage *message, LinphoneChatMessageStateChangedCb status_cb, void *ud) { + message->cb = status_cb; + message->cb_ud = ud; + linphone_chat_message_download_file(message); +} + /** * Cancel an ongoing file transfer attached to this message.(upload or download) * @param msg #LinphoneChatMessage @@ -1160,6 +1350,9 @@ void linphone_chat_message_cancel_file_transfer(LinphoneChatMessage *msg) { if (msg->cb) { msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->cb_ud); } + if (linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)) { + linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)(msg, LinphoneChatMessageStateNotDelivered); + } } @@ -1339,6 +1532,7 @@ static void _linphone_chat_message_destroy(LinphoneChatMessage* msg) { if (msg->file_transfer_filepath != NULL) { ms_free(msg->file_transfer_filepath); } + linphone_chat_message_cbs_unref(msg->callbacks); ms_message("LinphoneChatMessage [%p] destroyed.",msg); } @@ -1396,6 +1590,15 @@ const char * linphone_chat_message_get_file_transfer_filepath(LinphoneChatMessag return msg->file_transfer_filepath; } +/** + * Get the LinphoneChatMessageCbs object associated with the LinphoneChatMessage. + * @param[in] msg LinphoneChatMessage object + * @return The LinphoneChatMessageCbs object associated with the LinphoneChatMessage. + */ +LinphoneChatMessageCbs * linphone_chat_message_get_callbacks(const LinphoneChatMessage *msg) { + return msg->callbacks; +} + /** * Create a message attached to a dedicated chat room with a particular content. Use #linphone_chat_room_send_message2 to initiate the transfer @@ -1406,6 +1609,7 @@ const char * linphone_chat_message_get_file_transfer_filepath(LinphoneChatMessag LinphoneChatMessage* linphone_chat_room_create_file_transfer_message(LinphoneChatRoom *cr, LinphoneContent* initial_content) { LinphoneChatMessage* msg = belle_sip_object_new(LinphoneChatMessage); + msg->callbacks=linphone_chat_message_cbs_new(); msg->chat_room=(LinphoneChatRoom*)cr; msg->message = NULL; msg->file_transfer_information = linphone_content_copy(initial_content); diff --git a/coreapi/help/filetransfer.c b/coreapi/help/filetransfer.c index 205a51d31..c592c501b 100644 --- a/coreapi/help/filetransfer.c +++ b/coreapi/help/filetransfer.c @@ -48,7 +48,7 @@ static void stop(int signum){ /** * function invoked to report file transfer progress. * */ -static void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total) { +static void file_transfer_progress_indication(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total) { const LinphoneAddress* from_address = linphone_chat_message_get_from(message); const LinphoneAddress* to_address = linphone_chat_message_get_to(message); char *address = linphone_chat_message_is_outgoing(message)?linphone_address_as_string(to_address):linphone_address_as_string(from_address); @@ -63,7 +63,7 @@ static void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMess /** * function invoked when a file transfer is received. **/ -static void file_transfer_received(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, const char* buff, size_t size){ +static void file_transfer_received(LinphoneChatMessage *message, const LinphoneContent* content, const char* buff, size_t size){ FILE* file=NULL; if (!linphone_chat_message_get_user_data(message)) { /*first chunk, creating file*/ @@ -92,7 +92,7 @@ char big_file [128000]; /* * function called when the file transfer is initiated. file content should be feed into object LinphoneContent * */ -static void file_transfer_send(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, char* buff, size_t* size){ +static void file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, char* buff, size_t* size){ int offset=-1; if (!linphone_chat_message_get_user_data(message)) { @@ -147,6 +147,7 @@ int main(int argc, char *argv[]){ LinphoneChatRoom* chat_room; LinphoneContent* content; LinphoneChatMessage* chat_message; + LinphoneChatMessageCbs *cbs; /*seting dummy file content to something*/ for (i=0;i Can be created by linphone_chat_room_create_message(). */ typedef struct _LinphoneChatMessage LinphoneChatMessage; @@ -1327,6 +1332,46 @@ typedef enum _LinphoneChatMessageState { */ typedef void (*LinphoneChatMessageStateChangedCb)(LinphoneChatMessage* msg,LinphoneChatMessageState state,void* ud); +/** + * Call back used to notify message delivery status + * @param msg #LinphoneChatMessage object + * @param status LinphoneChatMessageState + */ +typedef void (*LinphoneChatMessageMsgStateChangedCb)(LinphoneChatMessage* msg, LinphoneChatMessageState state); + +/** + * File transfer receive callback prototype. This function is called by the core upon an incoming File transfer is started. This function may be call several time for the same file in case of large file. + * + * @param message #LinphoneChatMessage message from which the body is received. + * @param content #LinphoneContent incoming content information + * @param buff pointer to the received data + * @param size number of bytes to be read from buff. 0 means end of file. + * + */ +typedef void (*LinphoneChatMessageFileTransferRecvCb)(LinphoneChatMessage *message, const LinphoneContent* content, const char* buff, size_t size); + +/** + * File transfer send callback prototype. This function is called by the core upon an outgoing File transfer is started. This function is called until size is set to 0. + *
a #LinphoneContent with a size equal zero + * + * @param message #LinphoneChatMessage message from which the body is received. + * @param content #LinphoneContent outgoing content + * @param buff pointer to the buffer where data chunk shall be written by the app + * @param size as input value, it represents the number of bytes expected by the framework. As output value, it means the number of bytes wrote by the application in the buffer. 0 means end of file. + * + */ +typedef void (*LinphoneChatMessageFileTransferSendCb)(LinphoneChatMessage *message, const LinphoneContent* content, char* buff, size_t* size); + +/** + * File transfer progress indication callback prototype. + * + * @param message #LinphoneChatMessage message from which the body is received. + * @param content #LinphoneContent incoming content information + * @param offset The number of bytes sent/received since the beginning of the transfer. + * @param total The total number of bytes to be sent/received. + */ +typedef void (*LinphoneChatMessageFileTransferProgressIndicationCb)(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total); + LINPHONE_PUBLIC void linphone_core_set_chat_database_path(LinphoneCore *lc, const char *path); LINPHONE_PUBLIC LinphoneChatRoom * linphone_core_create_chat_room(LinphoneCore *lc, const char *to); LINPHONE_PUBLIC LinphoneChatRoom * linphone_core_get_or_create_chat_room(LinphoneCore *lc, const char *to); @@ -1377,6 +1422,7 @@ LINPHONE_PUBLIC LinphoneChatMessage* linphone_chat_room_create_file_transfer_mes LINPHONE_PUBLIC const LinphoneAddress* linphone_chat_room_get_peer_address(LinphoneChatRoom *cr); LINPHONE_PUBLIC void linphone_chat_room_send_message(LinphoneChatRoom *cr, const char *msg); LINPHONE_PUBLIC void linphone_chat_room_send_message2(LinphoneChatRoom *cr, LinphoneChatMessage* msg,LinphoneChatMessageStateChangedCb status_cb,void* ud); +LINPHONE_PUBLIC void linphone_chat_room_send_chat_message(LinphoneChatRoom *cr, LinphoneChatMessage *msg); LINPHONE_PUBLIC void linphone_chat_room_update_url(LinphoneChatRoom *cr, LinphoneChatMessage *msg); LINPHONE_PUBLIC MSList *linphone_chat_room_get_history(LinphoneChatRoom *cr,int nb_message); LINPHONE_PUBLIC void linphone_chat_room_mark_as_read(LinphoneChatRoom *cr); @@ -1438,6 +1484,7 @@ LINPHONE_PUBLIC const char* linphone_chat_message_get_external_body_url(const Li LINPHONE_PUBLIC void linphone_chat_message_set_external_body_url(LinphoneChatMessage* message,const char* url); LINPHONE_PUBLIC const LinphoneContent* linphone_chat_message_get_file_transfer_information(const LinphoneChatMessage* message); LINPHONE_PUBLIC void linphone_chat_message_start_file_download(LinphoneChatMessage* message, LinphoneChatMessageStateChangedCb status_cb, void* ud); +LINPHONE_PUBLIC void linphone_chat_message_download_file(LinphoneChatMessage *message); LINPHONE_PUBLIC void linphone_chat_message_cancel_file_transfer(LinphoneChatMessage* msg); LINPHONE_PUBLIC const char* linphone_chat_message_get_appdata(const LinphoneChatMessage* message); LINPHONE_PUBLIC void linphone_chat_message_set_appdata(LinphoneChatMessage* message, const char* data); @@ -1457,6 +1504,21 @@ LINPHONE_PUBLIC LinphoneReason linphone_chat_message_get_reason(LinphoneChatMess LINPHONE_PUBLIC const LinphoneErrorInfo *linphone_chat_message_get_error_info(const LinphoneChatMessage *msg); LINPHONE_PUBLIC void linphone_chat_message_set_file_transfer_filepath(LinphoneChatMessage *msg, const char *filepath); LINPHONE_PUBLIC const char * linphone_chat_message_get_file_transfer_filepath(LinphoneChatMessage *msg); +LINPHONE_PUBLIC LinphoneChatMessageCbs * linphone_chat_message_get_callbacks(const LinphoneChatMessage *msg); + +LINPHONE_PUBLIC LinphoneChatMessageCbs * linphone_chat_message_cbs_ref(LinphoneChatMessageCbs *cbs); +LINPHONE_PUBLIC void linphone_chat_message_cbs_unref(LinphoneChatMessageCbs *cbs); +LINPHONE_PUBLIC void *linphone_chat_message_cbs_get_user_data(const LinphoneChatMessageCbs *cbs); +LINPHONE_PUBLIC void linphone_chat_message_cbs_set_user_data(LinphoneChatMessageCbs *cbs, void *ud); +LINPHONE_PUBLIC LinphoneChatMessageMsgStateChangedCb linphone_chat_message_cbs_get_msg_state_changed(const LinphoneChatMessageCbs *cbs); +LINPHONE_PUBLIC void linphone_chat_message_cbs_set_msg_state_changed(LinphoneChatMessageCbs *cbs, LinphoneChatMessageMsgStateChangedCb cb); +LINPHONE_PUBLIC LinphoneChatMessageFileTransferRecvCb linphone_chat_message_cbs_get_file_transfer_recv(const LinphoneChatMessageCbs *cbs); +LINPHONE_PUBLIC void linphone_chat_message_cbs_set_file_transfer_recv(LinphoneChatMessageCbs *cbs, LinphoneChatMessageFileTransferRecvCb cb); +LINPHONE_PUBLIC LinphoneChatMessageFileTransferSendCb linphone_chat_message_cbs_get_file_transfer_send(const LinphoneChatMessageCbs *cbs); +LINPHONE_PUBLIC void linphone_chat_message_cbs_set_file_transfer_send(LinphoneChatMessageCbs *cbs, LinphoneChatMessageFileTransferSendCb cb); +LINPHONE_PUBLIC LinphoneChatMessageFileTransferProgressIndicationCb linphone_chat_message_cbs_get_file_transfer_progress_indication(const LinphoneChatMessageCbs *cbs); +LINPHONE_PUBLIC void linphone_chat_message_cbs_set_file_transfer_progress_indication(LinphoneChatMessageCbs *cbs, LinphoneChatMessageFileTransferProgressIndicationCb cb); + /** * @} */ @@ -1741,9 +1803,9 @@ typedef struct _LinphoneCoreVTable{ DisplayUrlCb display_url; /**< @deprecated */ ShowInterfaceCb show; /**< @deprecated Notifies the application that it should show up*/ LinphoneCoreTextMessageReceivedCb text_received; /**< @deprecated, use #message_received instead
A text message has been received */ - LinphoneCoreFileTransferRecvCb file_transfer_recv; /**< Callback to store file received attached to a #LinphoneChatMessage */ - LinphoneCoreFileTransferSendCb file_transfer_send; /**< Callback to collect file chunk to be sent for a #LinphoneChatMessage */ - LinphoneCoreFileTransferProgressIndicationCb file_transfer_progress_indication; /**< Callback to indicate file transfer progress */ + LinphoneCoreFileTransferRecvCb file_transfer_recv; /**< @deprecated Callback to store file received attached to a #LinphoneChatMessage */ + LinphoneCoreFileTransferSendCb file_transfer_send; /**< @deprecated Callback to collect file chunk to be sent for a #LinphoneChatMessage */ + LinphoneCoreFileTransferProgressIndicationCb file_transfer_progress_indication; /**< @deprecated Callback to indicate file transfer progress */ LinphoneCoreNetworkReachableCb network_reachable; /**< Callback to report IP network status (I.E up/down )*/ LinphoneCoreLogCollectionUploadStateChangedCb log_collection_upload_state_changed; /**< Callback to upload collected logs */ LinphoneCoreLogCollectionUploadProgressIndicationCb log_collection_upload_progress_indication; /**< Callback to indicate log collection upload progress */ diff --git a/coreapi/private.h b/coreapi/private.h index 56f96fb2e..d9d1eeb07 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -146,6 +146,17 @@ typedef struct _CallCallbackObj void * _user_data; }CallCallbackObj; +struct _LinphoneChatMessageCbs { + belle_sip_object_t base; + void *user_data; + LinphoneChatMessageMsgStateChangedCb msg_state_changed; + LinphoneChatMessageFileTransferRecvCb file_transfer_recv; /**< Callback to store file received attached to a #LinphoneChatMessage */ + LinphoneChatMessageFileTransferSendCb file_transfer_send; /**< Callback to collect file chunk to be sent for a #LinphoneChatMessage */ + LinphoneChatMessageFileTransferProgressIndicationCb file_transfer_progress_indication; /**< Callback to indicate file transfer progress */ +}; + +BELLE_SIP_DECLARE_VPTR(LinphoneChatMessageCbs); + typedef enum _LinphoneChatMessageDir{ LinphoneChatMessageIncoming, LinphoneChatMessageOutgoing @@ -154,6 +165,7 @@ typedef enum _LinphoneChatMessageDir{ struct _LinphoneChatMessage { belle_sip_object_t base; LinphoneChatRoom* chat_room; + LinphoneChatMessageCbs *callbacks; LinphoneChatMessageDir dir; char* message; LinphoneChatMessageStateChangedCb cb; @@ -997,6 +1009,7 @@ BELLE_SIP_TYPE_ID(LinphoneCall), BELLE_SIP_TYPE_ID(LinphoneCallLog), BELLE_SIP_TYPE_ID(LinphoneCallParams), BELLE_SIP_TYPE_ID(LinphoneChatMessage), +BELLE_SIP_TYPE_ID(LinphoneChatMessageCbs), BELLE_SIP_TYPE_ID(LinphoneChatRoom), BELLE_SIP_TYPE_ID(LinphoneContent), BELLE_SIP_TYPE_ID(LinphoneLDAPContactProvider), diff --git a/gtk/chat.c b/gtk/chat.c index 940437950..c05f32e4a 100644 --- a/gtk/chat.c +++ b/gtk/chat.c @@ -276,7 +276,7 @@ void update_chat_state_message(LinphoneChatMessageState state,LinphoneChatMessag } } -static void on_chat_state_changed(LinphoneChatMessage *msg, LinphoneChatMessageState state, void *user_pointer){ +static void on_chat_state_changed(LinphoneChatMessage *msg, LinphoneChatMessageState state){ update_chat_state_message(state,msg); } @@ -300,8 +300,11 @@ void linphone_gtk_send_text(){ entered=gtk_entry_get_text(GTK_ENTRY(entry)); if (strlen(entered)>0) { LinphoneChatMessage *msg; + LinphoneChatMessageCbs *cbs; msg=linphone_chat_room_create_message(cr,entered); - linphone_chat_room_send_message2(cr,msg,on_chat_state_changed,NULL); + cbs=linphone_chat_message_get_callbacks(msg); + linphone_chat_message_cbs_set_msg_state_changed(cbs,on_chat_state_changed); + linphone_chat_room_send_chat_message(cr,msg); linphone_gtk_push_text(w,linphone_chat_message_get_from(msg), TRUE,cr,msg,FALSE); diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 715d4c6f8..d7f5c26ce 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -235,9 +235,9 @@ void linphone_transfer_state_changed(LinphoneCore *lc, LinphoneCall *transfered, void notify_presence_received(LinphoneCore *lc, LinphoneFriend * lf); void text_message_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from_address, const char *message); void message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage* message); -void file_transfer_received(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, const char* buff, size_t size); -void file_transfer_send(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, char* buff, size_t* size); -void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total); +void file_transfer_received(LinphoneChatMessage *message, const LinphoneContent* content, const char* buff, size_t size); +void file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, char* buff, size_t* size); +void file_transfer_progress_indication(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total); void is_composing_received(LinphoneCore *lc, LinphoneChatRoom *room); void info_message_received(LinphoneCore *lc, LinphoneCall *call, const LinphoneInfoMessage *msg); void new_subscription_requested(LinphoneCore *lc, LinphoneFriend *lf, const char *url); @@ -269,6 +269,7 @@ LinphoneCoreManager *get_manager(LinphoneCore *lc); const char *liblinphone_tester_get_subscribe_content(void); const char *liblinphone_tester_get_notify_content(void); void liblinphone_tester_chat_message_state_change(LinphoneChatMessage* msg,LinphoneChatMessageState state,void* ud); +void liblinphone_tester_chat_message_msg_state_changed(LinphoneChatMessage *msg, LinphoneChatMessageState state); void liblinphone_tester_check_rtcp(LinphoneCoreManager* caller, LinphoneCoreManager* callee); void liblinphone_tester_clock_start(MSTimeSpec *start); bool_t liblinphone_tester_clock_elapsed(const MSTimeSpec *start, int value_ms); diff --git a/tester/message_tester.c b/tester/message_tester.c index de6b90c0d..9d207d034 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -62,9 +62,11 @@ void message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMess /** * function invoked when a file transfer is received. * */ -void file_transfer_received(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, const char* buff, size_t size){ +void file_transfer_received(LinphoneChatMessage *message, const LinphoneContent* content, const char* buff, size_t size){ FILE* file=NULL; char receive_file[256]; + LinphoneChatRoom *cr = linphone_chat_message_get_chat_room(message); + LinphoneCore *lc = linphone_chat_room_get_core(cr); snprintf(receive_file,sizeof(receive_file), "%s/receive_file.dump", liblinphone_tester_writable_dir_prefix); if (!linphone_chat_message_get_user_data(message)) { /*first chunk, creating file*/ @@ -91,7 +93,7 @@ static char big_file [128000]; /* a buffer to simulate a big file for the file t /* * function called when the file transfer is initiated. file content should be feed into object LinphoneContent * */ -void file_transfer_send(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, char* buff, size_t* size){ +void file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, char* buff, size_t* size){ int offset=-1; if (!linphone_chat_message_get_user_data(message)) { @@ -116,7 +118,9 @@ void file_transfer_send(LinphoneCore *lc, LinphoneChatMessage *message, const L /** * function invoked to report file transfer progress. * */ -void file_transfer_progress_indication(LinphoneCore *lc, LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total) { +void file_transfer_progress_indication(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total) { + LinphoneChatRoom *cr = linphone_chat_message_get_chat_room(message); + LinphoneCore *lc = linphone_chat_room_get_core(cr); const LinphoneAddress* from_address = linphone_chat_message_get_from(message); const LinphoneAddress* to_address = linphone_chat_message_get_to(message); char *address = linphone_chat_message_is_outgoing(message)?linphone_address_as_string(to_address):linphone_address_as_string(from_address); @@ -142,9 +146,14 @@ void is_composing_received(LinphoneCore *lc, LinphoneChatRoom *room) { } void liblinphone_tester_chat_message_state_change(LinphoneChatMessage* msg,LinphoneChatMessageState state,void* ud) { - LinphoneCore* lc=(LinphoneCore*)ud; + liblinphone_tester_chat_message_msg_state_changed(msg, state); +} + +void liblinphone_tester_chat_message_msg_state_changed(LinphoneChatMessage *msg, LinphoneChatMessageState state) { + LinphoneChatRoom *cr = linphone_chat_message_get_chat_room(msg); + LinphoneCore *lc = linphone_chat_room_get_core(cr); stats* counters = get_stats(lc); - ms_message("Message [%s] [%s]",linphone_chat_message_get_text(msg),linphone_chat_message_state_to_string(state)); + ms_message("Message [%s] [%s]",linphone_chat_message_get_text(msg), linphone_chat_message_state_to_string(state)); switch (state) { case LinphoneChatMessageStateDelivered: counters->number_of_LinphoneMessageDelivered++; @@ -159,9 +168,8 @@ void liblinphone_tester_chat_message_state_change(LinphoneChatMessage* msg,Linph counters->number_of_LinphoneMessageNotDelivered++; break; default: - ms_error("Unexpected state [%s] for message [%p]",linphone_chat_message_state_to_string(state),msg); + ms_error("Unexpected state [%s] for message [%p]",linphone_chat_message_state_to_string(state), msg); } - } static void text_message(void) { @@ -340,13 +348,13 @@ static void text_message_with_ack(void) { char* to = linphone_address_as_string(marie->identity); LinphoneChatRoom* chat_room = linphone_core_create_chat_room(pauline->lc,to); LinphoneChatMessage* message = linphone_chat_room_create_message(chat_room,"Bli bli bli \n blu"); - { - int dummy=0; - wait_for_until(marie->lc,pauline->lc,&dummy,1,100); /*just to have time to purge message stored in the server*/ - reset_counters(&marie->stat); - reset_counters(&pauline->stat); - } - linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); + LinphoneChatMessageCbs *cbs = linphone_chat_message_get_callbacks(message); + int dummy=0; + wait_for_until(marie->lc,pauline->lc,&dummy,1,100); /*just to have time to purge message stored in the server*/ + reset_counters(&marie->stat); + reset_counters(&pauline->stat); + linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed); + linphone_chat_room_send_chat_message(chat_room,message); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceived,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneMessageDelivered,1)); CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneMessageInProgress,1); @@ -366,6 +374,7 @@ static void text_message_with_external_body(void) { char* to = linphone_address_as_string(marie->identity); LinphoneChatRoom* chat_room = linphone_core_create_chat_room(pauline->lc,to); LinphoneChatMessage* message = linphone_chat_room_create_message(chat_room,"Bli bli bli \n blu"); + LinphoneChatMessageCbs *cbs = linphone_chat_message_get_callbacks(message); linphone_chat_message_set_external_body_url(message,message_external_body_url="http://www.linphone.org"); { int dummy=0; @@ -373,7 +382,8 @@ static void text_message_with_external_body(void) { reset_counters(&marie->stat); reset_counters(&pauline->stat); } - linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); + linphone_chat_message_cbs_set_msg_state_changed(cbs,liblinphone_tester_chat_message_msg_state_changed); + linphone_chat_room_send_chat_message(chat_room,message); /* check transient message list: the message should be in it, and should be the only one */ CU_ASSERT_EQUAL(ms_list_size(chat_room->transient_messages), 1); @@ -396,6 +406,7 @@ static void file_transfer_message(void) { char* to; LinphoneChatRoom* chat_room; LinphoneChatMessage* message; + LinphoneChatMessageCbs *cbs; LinphoneContent* content; const char* big_file_content="big file"; /* setting dummy file content to something */ LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); @@ -423,16 +434,21 @@ static void file_transfer_message(void) { linphone_content_set_size(content,sizeof(big_file)); /*total size to be transfered*/ linphone_content_set_name(content,"bigfile.txt"); message = linphone_chat_room_create_file_transfer_message(chat_room, content); + cbs = linphone_chat_message_get_callbacks(message); { int dummy=0; wait_for_until(marie->lc,pauline->lc,&dummy,1,100); /*just to have time to purge message stored in the server*/ reset_counters(&marie->stat); reset_counters(&pauline->stat); } - linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); + linphone_chat_message_cbs_set_msg_state_changed(cbs,liblinphone_tester_chat_message_msg_state_changed); + linphone_chat_room_send_chat_message(chat_room,message); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1)); if (marie->stat.last_received_chat_message ) { - linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change, marie->lc); + cbs = linphone_chat_message_get_callbacks(marie->stat.last_received_chat_message); + linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed); + linphone_chat_message_cbs_set_file_transfer_recv(cbs, file_transfer_received); + linphone_chat_message_download_file(marie->stat.last_received_chat_message); } CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageExtBodyReceived,1)); @@ -452,6 +468,7 @@ static void small_file_transfer_message(void) { char* to; LinphoneChatRoom* chat_room; LinphoneChatMessage* message; + LinphoneChatMessageCbs *cbs; LinphoneContent* content; const char* big_file_content="big file"; /* setting dummy file content to something */ LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); @@ -485,10 +502,15 @@ static void small_file_transfer_message(void) { reset_counters(&marie->stat); reset_counters(&pauline->stat); } - linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); + cbs = linphone_chat_message_get_callbacks(message); + linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed); + linphone_chat_room_send_chat_message(chat_room,message); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1)); if (marie->stat.last_received_chat_message ) { - linphone_chat_message_start_file_download(marie->stat.last_received_chat_message, liblinphone_tester_chat_message_state_change, marie->lc); + cbs = linphone_chat_message_get_callbacks(marie->stat.last_received_chat_message); + linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed); + linphone_chat_message_cbs_set_file_transfer_recv(cbs, file_transfer_received); + linphone_chat_message_download_file(marie->stat.last_received_chat_message); } CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageExtBodyReceived,1)); @@ -506,6 +528,7 @@ static void file_transfer_message_io_error_upload(void) { char* to; LinphoneChatRoom* chat_room; LinphoneChatMessage* message; + LinphoneChatMessageCbs *cbs; LinphoneContent* content; const char* big_file_content="big file"; /* setting dummy file content to something */ LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); @@ -540,7 +563,10 @@ static void file_transfer_message_io_error_upload(void) { reset_counters(&marie->stat); reset_counters(&pauline->stat); } - linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); + cbs = linphone_chat_message_get_callbacks(message); + linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed); + linphone_chat_message_cbs_set_file_transfer_progress_indication(cbs, file_transfer_progress_indication); + linphone_chat_room_send_chat_message(chat_room,message); /*wait for file to be 25% uploaded and simultate a network error*/ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.progress_of_LinphoneFileTransfer,25)); @@ -632,6 +658,7 @@ static void file_transfer_message_upload_cancelled(void) { char* to; LinphoneChatRoom* chat_room; LinphoneChatMessage* message; + LinphoneChatMessageCbs *cbs; LinphoneContent* content; const char* big_file_content="big file"; /* setting dummy file content to something */ LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); @@ -666,7 +693,10 @@ static void file_transfer_message_upload_cancelled(void) { reset_counters(&marie->stat); reset_counters(&pauline->stat); } - linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); + cbs = linphone_chat_message_get_callbacks(message); + linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed); + linphone_chat_message_cbs_set_file_transfer_progress_indication(cbs, file_transfer_progress_indication); + linphone_chat_room_send_chat_message(chat_room,message); /*wait for file to be 50% uploaded and cancel the transfer */ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.progress_of_LinphoneFileTransfer, 50)); @@ -753,6 +783,7 @@ static void text_message_with_send_error(void) { char* to = linphone_address_as_string(pauline->identity); LinphoneChatRoom* chat_room = linphone_core_create_chat_room(marie->lc,to); LinphoneChatMessage* message = linphone_chat_room_create_message(chat_room,"Bli bli bli \n blu"); + LinphoneChatMessageCbs *cbs = linphone_chat_message_get_callbacks(message); reset_counters(&marie->stat); reset_counters(&pauline->stat); @@ -764,7 +795,8 @@ static void text_message_with_send_error(void) { reset_counters(&marie->stat); reset_counters(&pauline->stat); } - linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,marie->lc); + linphone_chat_message_cbs_set_msg_state_changed(cbs,liblinphone_tester_chat_message_msg_state_changed); + linphone_chat_room_send_chat_message(chat_room,message); /* check transient message list: the message should be in it, and should be the only one */ CU_ASSERT_EQUAL(ms_list_size(chat_room->transient_messages), 1); @@ -789,6 +821,7 @@ static void text_message_denied(void) { char* to = linphone_address_as_string(pauline->identity); LinphoneChatRoom* chat_room = linphone_core_create_chat_room(marie->lc,to); LinphoneChatMessage* message = linphone_chat_room_create_message(chat_room,"Bli bli bli \n blu"); + LinphoneChatMessageCbs *cbs = linphone_chat_message_get_callbacks(message); /*pauline doesn't want to be disturbed*/ linphone_core_disable_chat(pauline->lc,LinphoneReasonDoNotDisturb); @@ -798,7 +831,8 @@ static void text_message_denied(void) { reset_counters(&marie->stat); reset_counters(&pauline->stat); } - linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,marie->lc); + linphone_chat_message_cbs_set_msg_state_changed(cbs,liblinphone_tester_chat_message_msg_state_changed); + linphone_chat_room_send_chat_message(chat_room,message); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageNotDelivered,1)); CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneMessageReceived,0); diff --git a/tester/tester.c b/tester/tester.c index 07ffa703a..971bf5d63 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -234,9 +234,6 @@ LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, int check_f mgr->v_table.call_state_changed=call_state_changed; mgr->v_table.text_received=text_message_received; mgr->v_table.message_received=message_received; - mgr->v_table.file_transfer_recv=file_transfer_received; - mgr->v_table.file_transfer_send=file_transfer_send; - mgr->v_table.file_transfer_progress_indication=file_transfer_progress_indication; mgr->v_table.is_composing_received=is_composing_received; mgr->v_table.new_subscription_requested=new_subscription_requested; mgr->v_table.notify_presence_received=notify_presence_received; From 0ea7c35b89f62b21a586d1a1d922a34477f00276 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 24 Nov 2014 16:55:48 +0100 Subject: [PATCH 198/249] Use correct exectuable name and fill test/suite name too --- tester/liblinphone_completion | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/tester/liblinphone_completion b/tester/liblinphone_completion index 6fae7fa27..3ff1304ba 100644 --- a/tester/liblinphone_completion +++ b/tester/liblinphone_completion @@ -21,7 +21,7 @@ # source this file in your .rc file _liblinphone_complete() { - local completions command_require_argument latest_arg available_tasks has_not_set_suite suite_name + local completions command_require_argument prev_arg latest_arg available_tasks has_not_set_suite suite_name # these commands expect an argument command_require_argument=(--list-tests --config --domain --auth-domain --dns-hosts --suite --test) @@ -34,22 +34,27 @@ _liblinphone_complete() { set -- "${args[@]}" #convert them to arguments (eg $1,$#,$@,etc.) fi #skip program name + program=$1 shift # if user required help, do not complete anything if ! grep -q -- "--help" <<< "$@"; then - # retrieve the last argument latest_arg="" + prev_arg="" + latest_is_empty=0 for arg in "$@"; do if [ ! -z "$arg" ]; then + prev_arg="$latest_arg" latest_arg="$arg" + else + latest_is_empty=1 fi done # get the tasks available, from --help - available_tasks="$(liblinphone_tester 2>&1 --help | sed -nE "s/.*--([^ ]*).*/--\\1/p")" + available_tasks="$($program 2>&1 --help | sed -nE "s/.*--([^ ]*).*/--\\1/p")" # remove all already provided tasks (it's useless to provide them twice) if [[ ! -z "$@" ]]; then current_tasks=$(echo $@ | grep -Eo -- "--([^ ])*" | tr '\n' '|' | sed 's/|/$|/g')--$ @@ -63,16 +68,22 @@ _liblinphone_complete() { available_tasks=$(echo "$available_tasks" | grep -v -- --test) fi - # if latest arg does not start with '--', it is a custom value; just output all available commands - if ! grep -q -- '^--' <<< "$latest_arg"; then - completions="$available_tasks" + # if latest arg does not start with '--', it is a custom value + if [ $latest_is_empty = 0 ] && ! grep -q -- '^--' <<< "$latest_arg"; then + # echo "yes!$prev_arg $has_not_set_suite" + if [ "$prev_arg" = "--test" ] && [ $has_not_set_suite = 0 ]; then + suite_name=$(echo $@ | sed -nE 's/.*--suite ([^ ]*) .*/\1/p') + completions="$($program --list-tests "$suite_name" | grep "^$latest_arg")" + elif [ "$prev_arg" = "--suite" ] || [ "$prev_arg" = "--list-tests" ]; then + completions="$($program --list-suites)" + fi elif [ "$latest_arg" = "--test" ]; then if [ $has_not_set_suite = 0 ]; then suite_name=$(echo $@ | sed -nE 's/.*--suite (.*) .*/\1/p') - completions="$(liblinphone_tester --list-tests "$suite_name")" + completions="$($program --list-tests "$suite_name")" fi elif [ "$latest_arg" = "--suite" ] || [ "$latest_arg" = "--list-tests" ]; then - completions="$(liblinphone_tester --list-suites)" + completions="$($program --list-suites)" # we are waiting for a custom value, so do not hint anything elif grep -q -- " $latest_arg " <<< "$command_require_argument"; then completions="" From b393ffef15975a3a52df5edf1e453a1d3cb23ff6 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 25 Nov 2014 09:01:30 +0100 Subject: [PATCH 199/249] introduce a new option to put liblinphone tester traces into a file (I.E --log-file ) --- tester/liblinphone_tester.c | 20 +++++++++- tester/tester.c | 73 +++++++++++++++++++++++++++++++++---- 2 files changed, 83 insertions(+), 10 deletions(-) diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c index 171f4eae9..addf99566 100644 --- a/tester/liblinphone_tester.c +++ b/tester/liblinphone_tester.c @@ -25,6 +25,8 @@ #include "CUnit/CUCurses.h" #endif +extern int liblinphone_tester_use_log_file; + #ifdef ANDROID #include @@ -115,6 +117,8 @@ static void liblinphone_tester_qnx_log_handler(OrtpLogLevel lev, const char *fmt } #endif /* __QNX__ */ + + void helper(const char *name) { liblinphone_tester_fprintf(stderr,"%s --help\n" "\t\t\t--verbose\n" @@ -127,6 +131,7 @@ void helper(const char *name) { "\t\t\t--suite \n" "\t\t\t--test \n" "\t\t\t--dns-hosts \n" + "\t\t\t--log-file \n" #if HAVE_CU_CURSES "\t\t\t--curses\n" #endif @@ -148,7 +153,7 @@ int main (int argc, char *argv[]) int ret; const char *suite_name=NULL; const char *test_name=NULL; - + FILE* log_file=NULL; #if defined(ANDROID) linphone_core_set_log_handler(linphone_android_ortp_log_handler); #elif defined(__QNX__) @@ -193,7 +198,18 @@ int main (int argc, char *argv[]) suite_name = argv[i]; liblinphone_tester_list_suite_tests(suite_name); return 0; - } else { + } else if (strcmp(argv[i],"--log-file")==0){ + CHECK_ARG("--log-file", ++i, argc); + log_file=fopen(argv[i],"w"); + if (!log_file) { + ms_fatal("Cannot open file [%s] for writting logs because [%s]",argv[i],strerror(errno)); + } else { + liblinphone_tester_use_log_file=1; + liblinphone_tester_fprintf(stdout,"Redirecting traces to file [%s]",argv[i]); + linphone_core_set_log_file(log_file); + } + + }else { liblinphone_tester_fprintf(stderr, "Unknown option \"%s\"\n", argv[i]); \ helper(argv[0]); return -1; diff --git a/tester/tester.c b/tester/tester.c index 971bf5d63..8b2066e53 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -17,7 +17,7 @@ */ #include -#include "CUnit/Basic.h" +#include "CUnit/TestRun.h" #include "linphonecore.h" #include "private.h" #include "liblinphone_tester.h" @@ -40,6 +40,7 @@ const char* auth_domain="sip.example.org"; const char* test_username="liblinphone_tester"; const char* test_password="secret"; const char* test_route="sip2.linphone.org"; +int liblinphone_tester_use_log_file=0; #if WINAPI_FAMILY_PHONE_APP const char *liblinphone_tester_file_prefix="Assets"; @@ -140,7 +141,7 @@ static LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* lp_config_set_string(config, "sip", "root_ca" , rootcapath); lc = linphone_core_new_with_config(v_table, config, user_data); } else { - lc = linphone_core_new(v_table,NULL,*filepath!='\0' ? filepath : NULL, user_data); + lc = linphone_core_new(v_table,NULL,(filepath!=NULL&&filepath[0]!='\0') ? filepath : NULL, user_data); linphone_core_set_ring(lc, ringpath); linphone_core_set_ringback(lc, ringbackpath); @@ -422,6 +423,56 @@ void liblinphone_tester_uninit(void) { } } +/*derivated from cunit*/ +static void test_complete_message_handler(const CU_pTest pTest, + const CU_pSuite pSuite, + const CU_pFailureRecord pFailureList) { + int i; + CU_pFailureRecord pFailure = pFailureList; + if (pFailure) { + if (liblinphone_tester_use_log_file) ms_warning("Suite [%s], Test [%s] had failures:", pSuite->pName, pTest->pName); + liblinphone_tester_fprintf(stdout,"\nSuite [%s], Test [%s] had failures:", pSuite->pName, pTest->pName); + } else { + if (liblinphone_tester_use_log_file) ms_warning(" passed"); + liblinphone_tester_fprintf(stdout," passed"); + } + for (i = 1 ; (NULL != pFailure) ; pFailure = pFailure->pNext, i++) { + if (liblinphone_tester_use_log_file) ms_warning("\n %d. %s:%u - %s", i, + (NULL != pFailure->strFileName) ? pFailure->strFileName : "", + pFailure->uiLineNumber, + (NULL != pFailure->strCondition) ? pFailure->strCondition : ""); + liblinphone_tester_fprintf(stdout,"\n %d. %s:%u - %s", i, + (NULL != pFailure->strFileName) ? pFailure->strFileName : "", + pFailure->uiLineNumber, + (NULL != pFailure->strCondition) ? pFailure->strCondition : ""); + } + } + + +static void test_all_tests_complete_message_handler(const CU_pFailureRecord pFailure) { + if (liblinphone_tester_use_log_file) ms_warning("\n\n %s",CU_get_run_results_string()); + liblinphone_tester_fprintf(stdout,"\n\n %s",CU_get_run_results_string()); +} + +static void test_suite_init_failure_message_handler(const CU_pSuite pSuite) { + if (liblinphone_tester_use_log_file) ms_warning("Suite initialization failed for [%s].", pSuite->pName); + liblinphone_tester_fprintf(stdout,"Suite initialization failed for [%s].", pSuite->pName); +} + +static void test_suite_cleanup_failure_message_handler(const CU_pSuite pSuite) { + if (liblinphone_tester_use_log_file) ms_warning("Suite cleanup failed for '%s'.", pSuite->pName); + liblinphone_tester_fprintf(stdout,"Suite cleanup failed for [%s].", pSuite->pName); +} + +static void test_start_message_handler(const CU_pTest pTest, const CU_pSuite pSuite) { + if (liblinphone_tester_use_log_file) ms_warning("Suite [%s] Test [%s]", pSuite->pName,pTest->pName); + liblinphone_tester_fprintf(stdout,"\nSuite [%s] Test [%s]\n", pSuite->pName,pTest->pName); +} +static void test_suite_start_message_handler(const CU_pSuite pSuite) { + if (liblinphone_tester_use_log_file) ms_warning("Suite [%s]", pSuite->pName); + liblinphone_tester_fprintf(stdout,"\nSuite [%s]", pSuite->pName); +} + int liblinphone_tester_run_tests(const char *suite_name, const char *test_name) { int i; int ret; @@ -433,6 +484,14 @@ int liblinphone_tester_run_tests(const char *suite_name, const char *test_name) run_test_suite(test_suite[i]); } + CU_set_test_start_handler(test_start_message_handler); + CU_set_test_complete_handler(test_complete_message_handler); + CU_set_all_test_complete_handler(test_all_tests_complete_message_handler); + CU_set_suite_init_failure_handler(test_suite_init_failure_message_handler); + CU_set_suite_cleanup_failure_handler(test_suite_cleanup_failure_message_handler); + CU_set_suite_start_handler(test_suite_start_message_handler); + + #if !HAVE_CU_GET_SUITE if( suite_name ){ ms_warning("Tester compiled without CU_get_suite() function, running all tests instead of suite '%s'\n", suite_name); @@ -440,7 +499,6 @@ int liblinphone_tester_run_tests(const char *suite_name, const char *test_name) #else if (suite_name){ CU_pSuite suite; - CU_basic_set_mode(CU_BRM_VERBOSE); suite=CU_get_suite(suite_name); if (!suite) { ms_error("Could not find suite '%s'. Available suites are:", suite_name); @@ -454,11 +512,11 @@ int liblinphone_tester_run_tests(const char *suite_name, const char *test_name) liblinphone_tester_list_suite_tests(suite->pName); return -2; } else { - CU_ErrorCode err= CU_basic_run_test(suite, test); + CU_ErrorCode err= CU_run_test(suite, test); if (err != CUE_SUCCESS) ms_error("CU_basic_run_test error %d", err); } } else { - CU_basic_run_suite(suite); + CU_run_suite(suite); } } else @@ -473,8 +531,7 @@ int liblinphone_tester_run_tests(const char *suite_name, const char *test_name) #endif { /* Run all tests using the CUnit Basic interface */ - CU_basic_set_mode(CU_BRM_VERBOSE); - CU_basic_run_tests(); + CU_run_all_tests(); } } @@ -483,7 +540,7 @@ int liblinphone_tester_run_tests(const char *suite_name, const char *test_name) /* Redisplay list of failed tests on end */ if (CU_get_number_of_failure_records()){ CU_basic_show_failures(CU_get_failure_list()); - printf("\n"); + liblinphone_tester_fprintf(stdout,"\n"); } CU_cleanup_registry(); From 496f4a920ce4b6830a56446cf65e0c71709b5db4 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 25 Nov 2014 09:08:26 +0100 Subject: [PATCH 200/249] add $(TEST_OPTIONS) to liblinphone tester make file --- tester/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/Makefile.am b/tester/Makefile.am index ec5366726..88f17ea28 100644 --- a/tester/Makefile.am +++ b/tester/Makefile.am @@ -44,7 +44,7 @@ endif test: liblinphone_tester - ./liblinphone_tester --config $(abs_srcdir) + ./liblinphone_tester --config $(abs_srcdir) $(TEST_OPTIONS) else !BUILD_CUNIT_TESTS From 705ace0470a45a29959256fda366037e7318227f Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 25 Nov 2014 10:19:30 +0100 Subject: [PATCH 201/249] test to get stout working on buildbot --- tester/tester.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/tester.c b/tester/tester.c index 8b2066e53..a7bcef044 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -552,7 +552,7 @@ int liblinphone_tester_fprintf(FILE * stream, const char * format, ...) { va_list args; va_start(args, format); #ifndef ANDROID - result = vfprintf(stream,format,args); + result = vprintf(format,args); #else /*used by liblinphone tester to retrieve suite list*/ result = 0; From 991cf8551de52cfa0caa046bdd9269aea1d62044 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 25 Nov 2014 11:21:27 +0100 Subject: [PATCH 202/249] update ms2 and ortp --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index dfc2fbd36..656c9ed2e 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit dfc2fbd36db97f07f08112ee8217477ba4257744 +Subproject commit 656c9ed2e7bfc053b87ab0c1c945dd37d689f82c diff --git a/oRTP b/oRTP index 7508c59d7..e3c89164c 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 7508c59d703b769d510321ff357d10139d476bab +Subproject commit e3c89164c93c52bad59bbfa523312ed1676b2d98 From 2d70a8120ca2e379f2e22f242387336f9f9872ed Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 25 Nov 2014 11:20:07 +0100 Subject: [PATCH 203/249] flush liblinphone tester traces --- tester/tester.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tester/tester.c b/tester/tester.c index a7bcef044..a74b0a675 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -552,7 +552,8 @@ int liblinphone_tester_fprintf(FILE * stream, const char * format, ...) { va_list args; va_start(args, format); #ifndef ANDROID - result = vprintf(format,args); + result = vfprintf(stream,format,args); + fflush(stream); #else /*used by liblinphone tester to retrieve suite list*/ result = 0; From 660d800839057178672e7d5c2b5c9a2a2a79d731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Tue, 25 Nov 2014 14:02:57 +0100 Subject: [PATCH 204/249] Make the call recording testers to remove the record file after testing --- tester/call_tester.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tester/call_tester.c b/tester/call_tester.c index ff385b7a5..ac0988376 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -3095,6 +3095,7 @@ static void record_call(const char *filename, bool_t enableVideo) { end_call(marie, pauline); CU_ASSERT_EQUAL(access(filepath, F_OK), 0); } + remove(filepath); ms_free(filepath); } linphone_core_manager_destroy(marie); From 3b7091e39aa72456abac997a4e1e245bfa13a716 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 25 Nov 2014 15:28:20 +0100 Subject: [PATCH 205/249] Update oRTP, possibly fix call paused resumed test --- oRTP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oRTP b/oRTP index e3c89164c..672d511d3 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit e3c89164c93c52bad59bbfa523312ed1676b2d98 +Subproject commit 672d511d3218c87adb6923c33f61b1ac4ed166cd From c0e80d83d8f09b9bfd52c82e818e6a9d83b4abc0 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 25 Nov 2014 15:31:29 +0100 Subject: [PATCH 206/249] Clean paused resumed test to ease readibility --- tester/call_tester.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index ac0988376..fc2ef00ed 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -378,7 +378,7 @@ static void direct_call_over_ipv6(){ CU_ASSERT_TRUE(wait_for_until(pauline->lc, NULL, &pauline->stat.number_of_LinphoneRegistrationOk, 2, 2000)); CU_ASSERT_TRUE(wait_for_until(pauline->lc, NULL, &marie->stat.number_of_LinphoneRegistrationOk, 2, 2000)); #endif - + linphone_core_get_sip_transports_used(pauline->lc,&pauline_transports); linphone_address_set_port(pauline_dest,pauline_transports.tcp_port); linphone_core_invite_address(marie->lc,pauline_dest); @@ -709,10 +709,10 @@ static void disable_all_video_codecs_except_one(LinphoneCore *lc, const char *mi static void call_failed_because_of_codecs(void) { int begin,leaked_objects; - + belle_sip_object_enable_leak_detector(TRUE); begin=belle_sip_object_get_object_count(); - + { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -1145,13 +1145,12 @@ static void call_paused_resumed_with_loss(void) { LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); LinphoneCall* call_pauline; const rtp_stats_t * stats; - + float loss_percentage; OrtpNetworkSimulatorParams params={0}; params.enabled=TRUE; params.loss_rate=25; - CU_ASSERT_TRUE(call(pauline,marie)); call_pauline = linphone_core_get_current_call(pauline->lc); rtp_session_enable_network_simulation(call_pauline->audiostream->ms.sessions.rtp_session,¶ms); @@ -1159,25 +1158,28 @@ static void call_paused_resumed_with_loss(void) { wait_for_until(pauline->lc, marie->lc, NULL, 5, 4000); + stats = rtp_session_get_stats(call_pauline->sessions->rtp_session); linphone_core_pause_call(pauline->lc,call_pauline); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallPausing,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallPausedByRemote,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallPaused,1)); /*stay in pause a little while in order to generate traffic*/ - wait_for_until(pauline->lc, marie->lc, NULL, 5, 2000); + wait_for_until(pauline->lc, marie->lc, NULL, 5, 10000); linphone_core_resume_call(pauline->lc,call_pauline); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,2)); /*same here: wait a while for a bit of a traffic, we need to receive a RTCP packet*/ - wait_for_until(pauline->lc, marie->lc, NULL, 5, 5000); + wait_for_until(pauline->lc, marie->lc, NULL, 5, 6000); /*since stats are NOT totally reset during pause, the stats->packet_recv is computed from the start of call. This test ensures that the loss rate is consistent during the entire call.*/ stats = rtp_session_get_stats(call_pauline->sessions->rtp_session); - CU_ASSERT_TRUE(((stats->cum_packet_loss * 100.f / stats->packet_recv) / params.loss_rate) > .5f); + loss_percentage = stats->cum_packet_loss * 100.f / stats->packet_recv; + CU_ASSERT_TRUE(.75 * params.loss_rate < loss_percentage); + CU_ASSERT_TRUE(loss_percentage < 1.25 * params.loss_rate); /*just to sleep*/ linphone_core_terminate_all_calls(pauline->lc); From 1d75349823a58aaaf24840356b24e6b50d2d7a6b Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 25 Nov 2014 15:37:11 +0100 Subject: [PATCH 207/249] Update ms2 and remove debug test --- mediastreamer2 | 2 +- tester/call_tester.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 656c9ed2e..7e4bdef10 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 656c9ed2e7bfc053b87ab0c1c945dd37d689f82c +Subproject commit 7e4bdef10dd32b6c9fbc7c84994dd23c5af87597 diff --git a/tester/call_tester.c b/tester/call_tester.c index fc2ef00ed..91fe27286 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -1158,7 +1158,6 @@ static void call_paused_resumed_with_loss(void) { wait_for_until(pauline->lc, marie->lc, NULL, 5, 4000); - stats = rtp_session_get_stats(call_pauline->sessions->rtp_session); linphone_core_pause_call(pauline->lc,call_pauline); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallPausing,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallPausedByRemote,1)); From 5aeb75c91761e5905addacefb11be26866059a38 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 25 Nov 2014 16:21:23 +0100 Subject: [PATCH 208/249] Update completions script to handle properly commads with arg --- tester/liblinphone_completion | 41 +++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/tester/liblinphone_completion b/tester/liblinphone_completion index 3ff1304ba..a16856333 100644 --- a/tester/liblinphone_completion +++ b/tester/liblinphone_completion @@ -21,10 +21,7 @@ # source this file in your .rc file _liblinphone_complete() { - local completions command_require_argument prev_arg latest_arg available_tasks has_not_set_suite suite_name - # these commands expect an argument - command_require_argument=(--list-tests --config --domain --auth-domain --dns-hosts --suite --test) - + local completions command_requiring_argument prev_arg latest_arg available_tasks has_not_set_suite suite_name if [ -n "$BASH_VERSION" ]; then set -- "${COMP_WORDS[@]}" #convert them to arguments (eg $1,$#,$@,etc.) @@ -37,7 +34,6 @@ _liblinphone_complete() { program=$1 shift - # if user required help, do not complete anything if ! grep -q -- "--help" <<< "$@"; then # retrieve the last argument @@ -55,6 +51,10 @@ _liblinphone_complete() { # get the tasks available, from --help available_tasks="$($program 2>&1 --help | sed -nE "s/.*--([^ ]*).*/--\\1/p")" + + # these commands expect an argument + command_requiring_argument="$($program 2>&1 --help | sed -nE "s/.*--(.*) <.*/--\\1/p")" + # remove all already provided tasks (it's useless to provide them twice) if [[ ! -z "$@" ]]; then current_tasks=$(echo $@ | grep -Eo -- "--([^ ])*" | tr '\n' '|' | sed 's/|/$|/g')--$ @@ -85,26 +85,29 @@ _liblinphone_complete() { elif [ "$latest_arg" = "--suite" ] || [ "$latest_arg" = "--list-tests" ]; then completions="$($program --list-suites)" # we are waiting for a custom value, so do not hint anything - elif grep -q -- " $latest_arg " <<< "$command_require_argument"; then + elif grep -q -- "^$latest_arg$" <<< "$command_requiring_argument"; then completions="" else completions="$available_tasks" fi fi - if [ -n "$BASH_VERSION" ]; then - # COMPREPLY=( $(echo $completions | sed 's/ /\\ /g' )) #| sed -e 's/^/"/g' -e 's/$/"/g' | tr '\n' ' ') ) - IFS=$'\n' - COMPREPLY=($(compgen -W "${completions}" -- ${COMP_WORDS[COMP_CWORD]})) - elif [ -n "$ZSH_VERSION" ]; then - reply=( "${(ps:\n:)completions}" ) + if [ ! -z "$completions" ]; then + if [ -n "$BASH_VERSION" ]; then + IFS=$'\n' #if that even necessary? + COMPREPLY=($(compgen -W "${completions}" -- ${COMP_WORDS[COMP_CWORD]})) + elif [ -n "$ZSH_VERSION" ]; then + reply=( "${(ps:\n:)completions}" ) + fi fi } -if [ -n "$BASH_VERSION" ]; then - complete -F _liblinphone_complete liblinphone_tester -elif [ -n "$ZSH_VERSION" ]; then - compctl -K _liblinphone_complete liblinphone_tester -else - echo "Your shell might be not supported! Only bash and zsh tested." -fi +for tester in liblinphone_tester mediastreamer2_tester belle_sip_tester; do + if [ -n "$BASH_VERSION" ]; then + complete -F _liblinphone_complete $tester + elif [ -n "$ZSH_VERSION" ]; then + compctl -K _liblinphone_complete $tester + else + echo "Your shell might be not supported! Only bash and zsh tested." + fi +done From a197741416048719a39f0de49b2bc5daa9db8ed0 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 25 Nov 2014 16:59:08 +0100 Subject: [PATCH 209/249] Fix completions script when suites have spaces --- tester/liblinphone_completion | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tester/liblinphone_completion b/tester/liblinphone_completion index a16856333..c58cc42c1 100644 --- a/tester/liblinphone_completion +++ b/tester/liblinphone_completion @@ -72,20 +72,20 @@ _liblinphone_complete() { if [ $latest_is_empty = 0 ] && ! grep -q -- '^--' <<< "$latest_arg"; then # echo "yes!$prev_arg $has_not_set_suite" if [ "$prev_arg" = "--test" ] && [ $has_not_set_suite = 0 ]; then - suite_name=$(echo $@ | sed -nE 's/.*--suite ([^ ]*) .*/\1/p') - completions="$($program --list-tests "$suite_name" | grep "^$latest_arg")" + suite_name=$(echo $@ | sed -nE 's/.*--suite (.*) (--.*)$/\1/p' |sed "s@\\\\@@g") + completions="$($program --list-tests $suite_name | grep "^$latest_arg")" elif [ "$prev_arg" = "--suite" ] || [ "$prev_arg" = "--list-tests" ]; then completions="$($program --list-suites)" fi elif [ "$latest_arg" = "--test" ]; then if [ $has_not_set_suite = 0 ]; then - suite_name=$(echo $@ | sed -nE 's/.*--suite (.*) .*/\1/p') - completions="$($program --list-tests "$suite_name")" + suite_name=$(echo $@ | sed -nE 's/.*--suite (.*) (--.*)$/\1/p' |sed "s@\\\\@@g") + completions="$($program --list-tests $suite_name)" fi elif [ "$latest_arg" = "--suite" ] || [ "$latest_arg" = "--list-tests" ]; then completions="$($program --list-suites)" # we are waiting for a custom value, so do not hint anything - elif grep -q -- "^$latest_arg$" <<< "$command_requiring_argument"; then + elif [[ ! -z "$latest_arg" ]] && grep -q -- "^$latest_arg$" <<< "$command_requiring_argument"; then completions="" else completions="$available_tasks" From 59e1152de207645aaccbb7481645efecd834a797 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 25 Nov 2014 17:47:36 +0100 Subject: [PATCH 210/249] update ms2 and ortp and fix potential crash in gtk UI --- gtk/chat.c | 3 ++- mediastreamer2 | 2 +- oRTP | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/gtk/chat.c b/gtk/chat.c index c05f32e4a..daa5fd95a 100644 --- a/gtk/chat.c +++ b/gtk/chat.c @@ -474,8 +474,9 @@ void linphone_gtk_load_chatroom(LinphoneChatRoom *cr,const LinphoneAddress *uri, } void linphone_gtk_chat_destroyed(GtkWidget *w){ + /* LinphoneChatRoom *cr=(LinphoneChatRoom*)g_object_get_data(G_OBJECT(w),"cr"); - linphone_chat_room_destroy(cr); + */ } diff --git a/mediastreamer2 b/mediastreamer2 index 7e4bdef10..83e6c0dca 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 7e4bdef10dd32b6c9fbc7c84994dd23c5af87597 +Subproject commit 83e6c0dcaa3e88678423461848b6f3fb13bcc7dd diff --git a/oRTP b/oRTP index 672d511d3..277534655 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 672d511d3218c87adb6923c33f61b1ac4ed166cd +Subproject commit 27753465516af7ace7769bf7e466043f97b8b787 From cdc14e2b737c91711aeb81f86cd7b04aab4a9f9e Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 25 Nov 2014 18:29:26 +0100 Subject: [PATCH 211/249] Handle GTK UI compilation when building with CMake. --- CMakeLists.txt | 7 ++++ config.h.cmake | 5 +++ coreapi/CMakeLists.txt | 28 ++++++++------- gtk/CMakeLists.txt | 82 ++++++++++++++++++++++++++++++++++++++++++ pixmaps/CMakeLists.txt | 64 +++++++++++++++++++++++++++++++++ 5 files changed, 173 insertions(+), 13 deletions(-) create mode 100644 gtk/CMakeLists.txt create mode 100644 pixmaps/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 4311101fd..65446420a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,8 @@ set(LINPHONE_MICRO_VERSION "0") set(LINPHONE_VERSION "${LINPHONE_MAJOR_VERSION}.${LINPHONE_MINOR_VERSION}.${LINPHONE_MICRO_VERSION}") set(LINPHONE_SO_VERSION "6") +set(LINPHONE_ALL_LANGS "cs de es fr he hu it ja nb_NO nl pl pt_BR ru sr sv zh_CN zh_TW") + include(CMakeDependentOption) @@ -88,6 +90,7 @@ if(MSVC) endif() +set(GETTEXT_PACKAGE "linphone") if(ENABLE_RELATIVE_PREFIX) set(LINPHONE_DATA_DIR ".") else() @@ -104,6 +107,10 @@ add_definitions(-DHAVE_CONFIG_H) add_subdirectory(coreapi) add_subdirectory(share) +if(ENABLE_GTK_UI) + add_subdirectory(gtk) + add_subdirectory(pixmaps) +endif() if(ENABLE_TOOLS) add_subdirectory(tools) endif() diff --git a/config.h.cmake b/config.h.cmake index f348cf3f9..9756ebbd7 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -26,7 +26,12 @@ #define LINPHONE_VERSION "${LINPHONE_VERSION}" #define LIBLINPHONE_VERSION "${LINPHONE_VERSION}" +#define LINPHONE_ALL_LANGS "${LINPHONE_ALL_LANGS}" + #define LINPHONE_PLUGINS_DIR "${LINPHONE_PLUGINS_DIR}" + +#define GETTEXT_PACKAGE "${GETTEXT_PACKAGE}" + #define PACKAGE_LOCALE_DIR "${PACKAGE_LOCALE_DIR}" #define PACKAGE_DATA_DIR "${PACKAGE_DATA_DIR}" #define PACKAGE_SOUND_DIR "${PACKAGE_SOUND_DIR}" diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt index 2369501c7..6efc80e60 100644 --- a/coreapi/CMakeLists.txt +++ b/coreapi/CMakeLists.txt @@ -31,6 +31,7 @@ set(SOURCE_FILES authentication.c bellesip_sal/sal_address_impl.c bellesip_sal/sal_impl.c + bellesip_sal/sal_impl.h bellesip_sal/sal_op_call.c bellesip_sal/sal_op_call_transfer.c bellesip_sal/sal_op_events.c @@ -46,43 +47,44 @@ set(SOURCE_FILES call_params.c chat.c conference.c + contactprovider.c content.c + dict.c ec-calibrator.c enum.c + enum.h event.c + event.h friend.c info.c + ldap/ldapprovider.c linphonecall.c linphonecore.c + linphonecore.h + linphonecore_utils.h + linphonefriend.h linphone_tunnel_config.c + linphone_tunnel.h lpconfig.c + lpconfig.h lsd.c message_storage.c misc.c offeranswer.c + offeranswer.h player.c presence.c + private.h proxy.c quality_reporting.c remote_provisioning.c sal.c siplogin.c sipsetup.c - xml.c - xml2lpc.c - bellesip_sal/sal_impl.h - enum.h - event.h - linphonecore.h - linphonecore_utils.h - linphonefriend.h - linphone_tunnel.h - lpconfig.h - offeranswer.h - private.h sipsetup.h + xml2lpc.c xml2lpc.h -) + xml.c) if(ENABLE_TUNNEL) list(APPEND SOURCE_FILES linphone_tunnel.cc diff --git a/gtk/CMakeLists.txt b/gtk/CMakeLists.txt new file mode 100644 index 000000000..0092be84a --- /dev/null +++ b/gtk/CMakeLists.txt @@ -0,0 +1,82 @@ +############################################################################ +# CMakeLists.txt +# Copyright (C) 2014 Belledonne Communications, Grenoble France +# +############################################################################ +# +# 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. +# +############################################################################ + +find_package(GTK2 2.10 REQUIRED gtk) + +set(UI_FILES + about.ui + audio_assistant.ui + buddylookup.ui + call_logs.ui + call_statistics.ui + config-uri.ui + contact.ui + dscp_settings.ui + keypad.ui + ldap.ui + log.ui + main.ui + parameters.ui + password.ui + provisioning-fetch.ui + sip_account.ui + tunnel_config.ui + waiting.ui +) + +set(PIXMAPS stock_people.png) + +set(SOURCE_FILES + audio_assistant.c + buddylookup.c + calllogs.c + chat.c + conference.c + config-fetching.c + friendlist.c + incall_view.c + logging.c + loginframe.c + main.c + propertybox.c + singleinstance.c + support.c + update.c + utils.c + videowindow.c +) + +add_executable(linphone-gtk ${SOURCE_FILES}) +target_include_directories(linphone-gtk PUBLIC ${GTK2_INCLUDE_DIRS}) +target_link_libraries(linphone-gtk linphone ${GTK2_LIBRARIES}) + +install(TARGETS linphone-gtk + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE +) + +install(FILES ${UI_FILES} ${PIXMAPS} + DESTINATION ${PACKAGE_DATA_DIR}/linphone + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ +) diff --git a/pixmaps/CMakeLists.txt b/pixmaps/CMakeLists.txt new file mode 100644 index 000000000..61dacfe46 --- /dev/null +++ b/pixmaps/CMakeLists.txt @@ -0,0 +1,64 @@ +############################################################################ +# CMakeLists.txt +# Copyright (C) 2014 Belledonne Communications, Grenoble France +# +############################################################################ +# +# 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. +# +############################################################################ + +set(PIXMAPS + active_chat.png + addcall-green.png + call.png + call_status_incoming.png + call_status_outgoing.png + chat_message_delivered.png + chat_message_inprogress.png + chat_message_not_delivered.png + chat.png + composing_active_chat.png + composing_chat.png + contact-orange.png + contact_starred.png + contact_unstarred.png + dialer-orange.png + dialer.png + history-orange.png + hold_off.png + hold_on.png + linphone-banner.png + linphone.icns + linphone.png + mic_active.png + mic_muted.png + notok.png + ok.png + speaker.png + startcall-green.png + startcall-small.png + status-green.png + status-offline.png + status-orange.png + status-red.png + stopcall-red.png + stopcall-small.png +) + +install(FILES ${PIXMAPS} + DESTINATION ${PACKAGE_DATA_DIR}/pixmaps/linphone + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ +) From 9ccafea592133ac51a3c5fd8462d972e6929f515 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 26 Nov 2014 09:38:13 +0100 Subject: [PATCH 212/249] Use proper readline detection --- README.macos.md | 5 +---- m4/readline.m4 | 18 +++++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/README.macos.md b/README.macos.md index c4723f29d..cfe0a40a9 100644 --- a/README.macos.md +++ b/README.macos.md @@ -112,10 +112,7 @@ The libvpx build isn't able to produce dual architecture files. To workaround th If you got the source code from git, run `./autogen.sh` first. Then or otherwise, : - # HomeBrew - PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict --with-readline=/usr/local && make - # MacPorts - PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict --with-readline=/opt/local && make + PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict && make * Install on the system diff --git a/m4/readline.m4 b/m4/readline.m4 index ebb7656cd..16065e348 100644 --- a/m4/readline.m4 +++ b/m4/readline.m4 @@ -5,8 +5,12 @@ AC_DEFUN([LP_CHECK_READLINE],[ AC_ARG_WITH( readline, - [ --with-readline Set prefix where gnu readline headers and libs can be found (ex:/usr, /usr/local, none) [default=/usr] ], - [ readline_prefix=${withval}],[ readline_prefix="/usr" ]) + [ --with-readline Set prefix where gnu readline headers and libs can be found (ex:/usr, /usr/local, none) [default=/usr] ], + [ readline_prefix=${withval} ], + [ readline_prefix="/usr/local" ], + [ readline_prefix="/opt/local" ], + [ readline_prefix="/usr" ] +) if test "$readline_prefix" != "none"; then @@ -14,14 +18,14 @@ if test "$readline_prefix" != "none"; then READLINE_CFLAGS="-I$readline_prefix/include" READLINE_LIBS="-L$readline_prefix/lib" fi - + CPPFLAGS_save=$CPPFLAGS LIBS_save=$LIBS CPPFLAGS="$CPPFLAGS $READLINE_CFLAGS" LIBS="$LIBS $READLINE_LIBS" AC_CHECK_HEADERS(readline.h readline/readline.h, readline_h_found=yes) AC_CHECK_HEADERS(history.h readline/history.h) - + for termcap_lib in "" -ltermcap -lcurses -lncurses; do unset ac_cv_lib_readline_readline AC_CHECK_LIB(readline, readline, [readline_libs_found=yes],[],[$termcap_lib]) @@ -33,14 +37,14 @@ if test "$readline_prefix" != "none"; then LIBS=$LIBS_save CPPFLAGS=$CPPFLAGS_save - + if test "$readline_libs_found$readline_h_found" != "yesyes" ; then AC_MSG_WARN([Could not find libreadline headers or library, linphonec will have limited prompt features]) else AC_DEFINE([HAVE_READLINE],1,[defined when compiling with readline support]) fi - - + + AC_SUBST(READLINE_CFLAGS) AC_SUBST(READLINE_LIBS) From 39f1f11d74e222c17d70ce7fbf620ad2dc490e9d Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 26 Nov 2014 11:31:09 +0100 Subject: [PATCH 213/249] Remove useless grep in completion script --- tester/liblinphone_completion | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/liblinphone_completion b/tester/liblinphone_completion index c58cc42c1..a0d05f3e0 100644 --- a/tester/liblinphone_completion +++ b/tester/liblinphone_completion @@ -73,7 +73,7 @@ _liblinphone_complete() { # echo "yes!$prev_arg $has_not_set_suite" if [ "$prev_arg" = "--test" ] && [ $has_not_set_suite = 0 ]; then suite_name=$(echo $@ | sed -nE 's/.*--suite (.*) (--.*)$/\1/p' |sed "s@\\\\@@g") - completions="$($program --list-tests $suite_name | grep "^$latest_arg")" + completions="$($program --list-tests $suite_name)" elif [ "$prev_arg" = "--suite" ] || [ "$prev_arg" = "--list-tests" ]; then completions="$($program --list-suites)" fi From e4aa948bb9ef316c044dc525c9f543e971f35be9 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 26 Nov 2014 12:14:31 +0100 Subject: [PATCH 214/249] implement immediate destruction of iOS AudioUnit when no calls are active. --- coreapi/linphonecore.c | 1 + mediastreamer2 | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 07beaf135..b57c18d4f 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -6395,6 +6395,7 @@ bool_t linphone_core_can_we_add_call(LinphoneCore *lc) static void notify_soundcard_usage(LinphoneCore *lc, bool_t used){ MSSndCard *card=lc->sound_conf.capt_sndcard; if (card && ms_snd_card_get_capabilities(card) & MS_SND_CARD_CAP_IS_SLOW){ + ms_message("Notifying soundcard that we don't need it anymore for calls."); ms_snd_card_set_usage_hint(card,used); } } diff --git a/mediastreamer2 b/mediastreamer2 index 83e6c0dca..fa739e091 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 83e6c0dcaa3e88678423461848b6f3fb13bcc7dd +Subproject commit fa739e091ed5d483937771cc2ab310c442ba72d8 From 91c9bbaeb4b3c857a8155c3de1c954b306b1fb8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 26 Nov 2014 12:21:07 +0100 Subject: [PATCH 215/249] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index fa739e091..3333c0da8 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit fa739e091ed5d483937771cc2ab310c442ba72d8 +Subproject commit 3333c0da86e23ab498c74896c67d53121fb91002 From 96ca18f8dbdcfac0892d690f0508ce2eb8c748df Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 26 Nov 2014 12:54:01 +0100 Subject: [PATCH 216/249] Finally fix the call paused resumed with loss test --- oRTP | 2 +- tester/call_tester.c | 45 ++++++++++++++++++++++++------------- tester/liblinphone_tester.h | 5 +++++ tester/tester.c | 1 + 4 files changed, 37 insertions(+), 16 deletions(-) diff --git a/oRTP b/oRTP index 277534655..a3debbd39 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 27753465516af7ace7769bf7e466043f97b8b787 +Subproject commit a3debbd394fb32ab54ed265d2190711971c890e7 diff --git a/tester/call_tester.c b/tester/call_tester.c index 91fe27286..48bb67864 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -79,6 +79,16 @@ void call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState CU_FAIL("unexpected event");break; } } + +void call_stats_updated(LinphoneCore *lc, LinphoneCall *call, const LinphoneCallStats *lstats) { + stats* counters = get_stats(lc); + if (lstats->updated == LINPHONE_CALL_STATS_RECEIVED_RTCP_UPDATE) { + counters->number_of_rtcp_received++; + } else if (lstats->updated == LINPHONE_CALL_STATS_SENT_RTCP_UPDATE) { + counters->number_of_rtcp_sent++; + } +} + void linphone_call_encryption_changed(LinphoneCore *lc, LinphoneCall *call, bool_t on, const char *authentication_token) { char* to=linphone_address_as_string(linphone_call_get_call_log(call)->to); char* from=linphone_address_as_string(linphone_call_get_call_log(call)->from); @@ -1140,52 +1150,57 @@ static void call_paused_resumed(void) { linphone_core_manager_destroy(pauline); } +#define CHECK_CURRENT_LOSS_RATE() \ + rtcp_count_current = pauline->stat.number_of_rtcp_sent; \ + /*wait for an RTCP packet to have an accurate cumulative lost value*/ \ + CU_ASSERT_TRUE(wait_for_until(pauline->lc, marie->lc, &pauline->stat.number_of_rtcp_sent, rtcp_count_current+1, 10000)); \ + stats = rtp_session_get_stats(call_pauline->audiostream->ms.sessions.rtp_session); \ + loss_percentage = stats->cum_packet_loss * 100.f / (stats->packet_recv + stats->cum_packet_loss); \ + CU_ASSERT_TRUE(.75 * params.loss_rate < loss_percentage); \ + CU_ASSERT_TRUE(loss_percentage < 1.25 * params.loss_rate) + static void call_paused_resumed_with_loss(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); LinphoneCall* call_pauline; const rtp_stats_t * stats; float loss_percentage; + int rtcp_count_current; OrtpNetworkSimulatorParams params={0}; params.enabled=TRUE; - params.loss_rate=25; + params.loss_rate=20; CU_ASSERT_TRUE(call(pauline,marie)); call_pauline = linphone_core_get_current_call(pauline->lc); rtp_session_enable_network_simulation(call_pauline->audiostream->ms.sessions.rtp_session,¶ms); - rtp_session_enable_network_simulation(call_pauline->videostream->ms.sessions.rtp_session,¶ms); - wait_for_until(pauline->lc, marie->lc, NULL, 5, 4000); + /*generate some traffic*/ + wait_for_until(pauline->lc, marie->lc, NULL, 5, 6000); + CHECK_CURRENT_LOSS_RATE(); + /*pause call*/ linphone_core_pause_call(pauline->lc,call_pauline); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallPausing,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallPausedByRemote,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallPaused,1)); - /*stay in pause a little while in order to generate traffic*/ - wait_for_until(pauline->lc, marie->lc, NULL, 5, 10000); + wait_for_until(pauline->lc, marie->lc, NULL, 5, 5000); + CHECK_CURRENT_LOSS_RATE(); + /*resume*/ linphone_core_resume_call(pauline->lc,call_pauline); - CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,2)); - /*same here: wait a while for a bit of a traffic, we need to receive a RTCP packet*/ wait_for_until(pauline->lc, marie->lc, NULL, 5, 6000); /*since stats are NOT totally reset during pause, the stats->packet_recv is computed from the start of call. This test ensures that the loss rate is consistent during the entire call.*/ - stats = rtp_session_get_stats(call_pauline->sessions->rtp_session); - loss_percentage = stats->cum_packet_loss * 100.f / stats->packet_recv; - CU_ASSERT_TRUE(.75 * params.loss_rate < loss_percentage); - CU_ASSERT_TRUE(loss_percentage < 1.25 * params.loss_rate); - - /*just to sleep*/ - linphone_core_terminate_all_calls(pauline->lc); + CHECK_CURRENT_LOSS_RATE(); + linphone_core_terminate_all_calls(marie->lc); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); - linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index d7f5c26ce..a7c82913a 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -206,6 +206,10 @@ typedef struct _stats { char * dtmf_list_received; int dtmf_count; + + int number_of_rtcp_sent; + int number_of_rtcp_received; + }stats; typedef struct _LinphoneCoreManager { @@ -247,6 +251,7 @@ void linphone_notify_received(LinphoneCore *lc, LinphoneEvent *lev, const char * void linphone_configuration_status(LinphoneCore *lc, LinphoneConfiguringState status, const char *message); void linphone_call_encryption_changed(LinphoneCore *lc, LinphoneCall *call, bool_t on, const char *authentication_token); void dtmf_received(LinphoneCore *lc, LinphoneCall *call, int dtmf); +void call_stats_updated(LinphoneCore *lc, LinphoneCall *call, const LinphoneCallStats *stats); LinphoneAddress * create_linphone_address(const char * domain); bool_t wait_for(LinphoneCore* lc_1, LinphoneCore* lc_2,int* counter,int value); diff --git a/tester/tester.c b/tester/tester.c index a74b0a675..d8639db47 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -247,6 +247,7 @@ LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, int check_f mgr->v_table.call_encryption_changed=linphone_call_encryption_changed; mgr->v_table.network_reachable=network_reachable; mgr->v_table.dtmf_received=dtmf_received; + mgr->v_table.call_stats_updated=call_stats_updated; reset_counters(&mgr->stat); if (rc_file) rc_path = ms_strdup_printf("rcfiles/%s", rc_file); From 06de47db2e497b60d420c2aa72107e3694f2ba8d Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 26 Nov 2014 13:40:53 +0100 Subject: [PATCH 217/249] Fix a special case in message history retrieval. This function is not yet completely tested, --- coreapi/message_storage.c | 2 +- tester/message_tester.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index 55fc82685..2684ba0b5 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -371,7 +371,7 @@ MSList *linphone_chat_room_get_history_range(LinphoneChatRoom *cr, int startm, i if (startm<0) startm=0; - if (endm>0&&endm>=startm){ + if ((endm>0&&endm>=startm) || (startm == 0 && endm == 0) ){ buf2=ms_strdup_printf("%s LIMIT %i ",buf,endm+1-startm); ms_free(buf); buf = buf2; diff --git a/tester/message_tester.c b/tester/message_tester.c index 9d207d034..ab7a83077 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -1045,6 +1045,10 @@ static void history_messages_count() { CU_ASSERT_EQUAL(ms_list_size(messages), 10); ms_list_free_with_data(messages, (void (*)(void*))linphone_chat_message_unref); + messages=linphone_chat_room_get_history(chatroom,1); + CU_ASSERT_EQUAL(ms_list_size(messages), 1); + ms_list_free_with_data(messages, (void (*)(void*))linphone_chat_message_unref); + messages=linphone_chat_room_get_history(chatroom,0); CU_ASSERT_EQUAL(linphone_chat_room_get_history_size(chatroom), 1270); CU_ASSERT_EQUAL(ms_list_size(messages), 1270); From e87403f3249c1dd38a09180f761c60c88c354500 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 26 Nov 2014 13:52:36 +0100 Subject: [PATCH 218/249] Use a debug message instead of message for timing measurements --- coreapi/message_storage.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index 2684ba0b5..66d49a3db 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -391,7 +391,7 @@ MSList *linphone_chat_room_get_history_range(LinphoneChatRoom *cr, int startm, i begin=ortp_get_cur_time_ms(); linphone_sql_request_message(lc->db,buf,cr); end=ortp_get_cur_time_ms(); - ms_message("%s(): completed in %i ms",__FUNCTION__, (int)(end-begin)); + ms_debug("%s(): completed in %i ms",__FUNCTION__, (int)(end-begin)); ms_free(buf); ret=cr->messages_hist; cr->messages_hist=NULL; From a3f728d84a7b79b68f771144de49500dde8565fa Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 26 Nov 2014 13:53:02 +0100 Subject: [PATCH 219/249] Test the history range function thoroughly --- tester/message_tester.c | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tester/message_tester.c b/tester/message_tester.c index ab7a83077..a44973227 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -1024,6 +1024,59 @@ static void message_storage_migration() { remove(tmp_db); } +static void history_message_count_helper(LinphoneChatRoom* chatroom, int x, int y, int expected ){ + MSList* messages = linphone_chat_room_get_history_range(chatroom, x, y); + int size = ms_list_size(messages); + if( expected != size ){ + ms_warning("History retrieved from %d to %d returned %d records, but expected %d", x, y, size, expected); + } + CU_ASSERT_EQUAL(size, expected); + + ms_list_free_with_data(messages, (void (*)(void *))linphone_chat_message_unref); + +} + +static void history_range_full_test(){ + LinphoneCoreManager *marie = linphone_core_manager_new("marie_rc"); + LinphoneAddress *jehan_addr = linphone_address_new(""); + LinphoneChatRoom *chatroom; + char src_db[256]; + char tmp_db[256]; + snprintf(src_db,sizeof(src_db), "%s/messages.db", liblinphone_tester_file_prefix); + snprintf(tmp_db,sizeof(tmp_db), "%s/tmp.db", liblinphone_tester_writable_dir_prefix); + + CU_ASSERT_EQUAL_FATAL(message_tester_copy_file(src_db, tmp_db), 0); + + linphone_core_set_chat_database_path(marie->lc, tmp_db); + + chatroom = linphone_core_get_chat_room(marie->lc, jehan_addr); + CU_ASSERT_PTR_NOT_NULL(chatroom); + if (chatroom){ + // We have 20 tests to perform to fully qualify the function, here they are: + history_message_count_helper(chatroom, 0, 0, 1); + history_message_count_helper(chatroom, -1, 0, 1); + history_message_count_helper(chatroom, 0, -1, 1270); + history_message_count_helper(chatroom, 1, 3, 3); + history_message_count_helper(chatroom, 3, 1, 1270-3); + history_message_count_helper(chatroom, 10, 10, 1); + history_message_count_helper(chatroom, -1, -1, 1270); + history_message_count_helper(chatroom, -1, -2, 1270); + history_message_count_helper(chatroom, -2, -1, 1270); + history_message_count_helper(chatroom, 3, -1, 1270-3); + history_message_count_helper(chatroom, 1, -3, 1270-1); + history_message_count_helper(chatroom, 2, -2, 1270-2); + history_message_count_helper(chatroom, 2, 0, 1270-2); + history_message_count_helper(chatroom, 0, 2, 3); + history_message_count_helper(chatroom, -1, 3, 4); + history_message_count_helper(chatroom, -2, 2, 3); + history_message_count_helper(chatroom, -3, 1, 2); + } + linphone_core_manager_destroy(marie); + linphone_address_destroy(jehan_addr); + remove(tmp_db); +} + + static void history_messages_count() { LinphoneCoreManager *marie = linphone_core_manager_new("marie_rc"); LinphoneAddress *jehan_addr = linphone_address_new(""); @@ -1107,6 +1160,7 @@ test_t message_tests[] = { #ifdef MSG_STORAGE_ENABLED ,{ "Database migration", message_storage_migration } ,{ "History count", history_messages_count } + ,{ "History range", history_range_full_test } #endif }; From 0ffba34fe54ec618d267c9270a7e43797ce080d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 26 Nov 2014 14:41:47 +0100 Subject: [PATCH 220/249] Fix crash of Player/Local MKV file tester --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 3333c0da8..eb5832d5d 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 3333c0da86e23ab498c74896c67d53121fb91002 +Subproject commit eb5832d5db58e59664e67ef21818cd00e7c2a548 From 8ace78e2f8ccb77670ba3066576948e9bff7bfd6 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 26 Nov 2014 16:38:39 +0100 Subject: [PATCH 221/249] Handle compilation of unit tests with CMake. --- CMakeLists.txt | 14 +++++++++++++ config.h.cmake | 3 +++ coreapi/CMakeLists.txt | 4 +++- gtk/CMakeLists.txt | 2 +- tester/CMakeLists.txt | 45 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 tester/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 65446420a..2570a4cad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,6 +55,7 @@ cmake_dependent_option(ENABLE_ASSISTANT "Turn on assistant compiling." YES "ENAB list(APPEND CMAKE_MODULE_PATH ${CMAKE_PREFIX_PATH}/share/cmake/Modules) include(CheckIncludeFile) +include(CheckLibraryExists) if(MSVC) list(APPEND CMAKE_REQUIRED_INCLUDES ${CMAKE_PREFIX_PATH}/include/MSVC) @@ -63,6 +64,16 @@ endif() find_package(BelleSIP REQUIRED) find_package(MS2 REQUIRED) find_package(XML2 REQUIRED) +if(ENABLE_UNIT_TESTS) + find_package(CUnit) + if(CUNIT_FOUND) + check_library_exists("cunit" "CU_get_suite" "" HAVE_CU_GET_SUITE) + check_library_exists("cunit" "CU_curses_run_tests" "" HAVE_CU_CURSES) + else() + message(WARNING "Could not find the cunit library!") + set(ENABLE_UNIT_TESTS OFF CACHE BOOL "Enable compilation of unit tests." FORCE) + endif() +endif() if(ENABLE_TUNNEL) find_package(Tunnel) if(NOT TUNNEL_FOUND) @@ -114,6 +125,9 @@ endif() if(ENABLE_TOOLS) add_subdirectory(tools) endif() +if(ENABLE_UNIT_TESTS) + add_subdirectory(tester) +endif() install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/FindLinphone.cmake diff --git a/config.h.cmake b/config.h.cmake index 9756ebbd7..a7020d97a 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -35,3 +35,6 @@ #define PACKAGE_LOCALE_DIR "${PACKAGE_LOCALE_DIR}" #define PACKAGE_DATA_DIR "${PACKAGE_DATA_DIR}" #define PACKAGE_SOUND_DIR "${PACKAGE_SOUND_DIR}" + +#cmakedefine HAVE_CU_GET_SUITE 1 +#cmakedefine HAVE_CU_CURSES 1 \ No newline at end of file diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt index 6efc80e60..b2501e2fb 100644 --- a/coreapi/CMakeLists.txt +++ b/coreapi/CMakeLists.txt @@ -65,6 +65,7 @@ set(SOURCE_FILES linphonefriend.h linphone_tunnel_config.c linphone_tunnel.h + localplayer.c lpconfig.c lpconfig.h lsd.c @@ -84,7 +85,8 @@ set(SOURCE_FILES sipsetup.h xml2lpc.c xml2lpc.h - xml.c) + xml.c +) if(ENABLE_TUNNEL) list(APPEND SOURCE_FILES linphone_tunnel.cc diff --git a/gtk/CMakeLists.txt b/gtk/CMakeLists.txt index 0092be84a..ae395500d 100644 --- a/gtk/CMakeLists.txt +++ b/gtk/CMakeLists.txt @@ -20,7 +20,7 @@ # ############################################################################ -find_package(GTK2 2.10 REQUIRED gtk) +find_package(GTK2 2.18 REQUIRED gtk) set(UI_FILES about.ui diff --git a/tester/CMakeLists.txt b/tester/CMakeLists.txt new file mode 100644 index 000000000..3131a1054 --- /dev/null +++ b/tester/CMakeLists.txt @@ -0,0 +1,45 @@ +############################################################################ +# CMakeLists.txt +# Copyright (C) 2014 Belledonne Communications, Grenoble France +# +############################################################################ +# +# 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. +# +############################################################################ + +set(SOURCE_FILES + call_tester.c + dtmf_tester.c + eventapi_tester.c + flexisip_tester.c + liblinphone_tester.c + log_collection_tester.c + message_tester.c + player_tester.c + presence_tester.c + quality_reporting_tester.c + register_tester.c + remote_provisioning_tester.c + setup_tester.c + stun_tester.c + tester.c + transport_tester.c + upnp_tester.c +) + +add_executable(liblinphone_tester ${SOURCE_FILES}) +target_include_directories(liblinphone_tester PUBLIC ${CUNIT_INCLUDE_DIRS}) +target_link_libraries(liblinphone_tester linphone ${CUNIT_LIBRARIES}) From 15dcfa4071cde576a4a97cec22c94bdc98a52a85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 26 Nov 2014 16:48:55 +0100 Subject: [PATCH 222/249] Fix "Call/Call with file player" tester --- tester/call_tester.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 48bb67864..b0290113b 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2028,12 +2028,12 @@ static void call_with_file_player(void) { snprintf(hellopath,sizeof(hellopath), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); /*caller uses files instead of soundcard in order to avoid mixing soundcard input with file played using call's player*/ - linphone_core_use_files(pauline->lc,TRUE); - linphone_core_set_play_file(pauline->lc,NULL); + linphone_core_use_files(marie->lc,TRUE); + linphone_core_set_play_file(marie->lc,NULL); /*callee is recording and plays file*/ linphone_core_use_files(pauline->lc,TRUE); - linphone_core_set_play_file(pauline->lc,hellopath); + linphone_core_set_play_file(pauline->lc,NULL); linphone_core_set_record_file(pauline->lc,recordpath); CU_ASSERT_TRUE(call(marie,pauline)); @@ -2051,8 +2051,11 @@ static void call_with_file_player(void) { CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); CU_ASSERT_TRUE(ms_audio_diff(hellopath,recordpath,&similar,NULL,NULL)==0); - CU_ASSERT_TRUE(similar>0.9); + CU_ASSERT_TRUE(similar>0.4); CU_ASSERT_TRUE(similar<=1.0); + if(similar > 0.4 && similar <=1.0) { + remove(recordpath); + } linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); ms_free(recordpath); From e76b7423b8d87b6d947de6cc0f0f3375d948750a Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 26 Nov 2014 17:30:38 +0100 Subject: [PATCH 223/249] Fix CUnit symbols checking in CMake. --- CMakeLists.txt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2570a4cad..759a95f97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,7 +55,7 @@ cmake_dependent_option(ENABLE_ASSISTANT "Turn on assistant compiling." YES "ENAB list(APPEND CMAKE_MODULE_PATH ${CMAKE_PREFIX_PATH}/share/cmake/Modules) include(CheckIncludeFile) -include(CheckLibraryExists) +include(CheckSymbolExists) if(MSVC) list(APPEND CMAKE_REQUIRED_INCLUDES ${CMAKE_PREFIX_PATH}/include/MSVC) @@ -67,8 +67,12 @@ find_package(XML2 REQUIRED) if(ENABLE_UNIT_TESTS) find_package(CUnit) if(CUNIT_FOUND) - check_library_exists("cunit" "CU_get_suite" "" HAVE_CU_GET_SUITE) - check_library_exists("cunit" "CU_curses_run_tests" "" HAVE_CU_CURSES) + cmake_push_check_state(RESET) + list(APPEND CMAKE_REQUIRED_INCLUDES ${CUNIT_INCLUDE_DIRS}) + list(APPEND CMAKE_REQUIRED_LIBRARIES ${CUNIT_LIBRARIES}) + check_symbol_exists("CU_get_suite" "CUnit/CUnit.h" HAVE_CU_GET_SUITE) + check_symbol_exists("CU_curses_run_tests" "CUnit/CUnit.h" HAVE_CU_CURSES) + cmake_pop_check_state() else() message(WARNING "Could not find the cunit library!") set(ENABLE_UNIT_TESTS OFF CACHE BOOL "Enable compilation of unit tests." FORCE) From 31d6c87aeb0cecc87297ca6acb69490ee6087dc6 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 26 Nov 2014 22:21:29 +0100 Subject: [PATCH 224/249] update ms2 for vp8 fix --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index eb5832d5d..f0cfb2641 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit eb5832d5db58e59664e67ef21818cd00e7c2a548 +Subproject commit f0cfb2641de9554db29bc6266579d9d4661e339a From 80def19f58d374842c9a5b174f1a1ed2361200aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 27 Nov 2014 10:03:34 +0100 Subject: [PATCH 225/249] Remove the recording file when similarity is higher than threshold --- tester/call_tester.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index b0290113b..ad5ee315d 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2021,6 +2021,7 @@ static void call_with_file_player(void) { char hellopath[256]; char *recordpath = create_filepath(liblinphone_tester_writable_dir_prefix, "record", "wav"); double similar; + const double threshold = 0.9; /*make sure the record file doesn't already exists, otherwise this test will append new samples to it*/ unlink(recordpath); @@ -2051,9 +2052,9 @@ static void call_with_file_player(void) { CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); CU_ASSERT_TRUE(ms_audio_diff(hellopath,recordpath,&similar,NULL,NULL)==0); - CU_ASSERT_TRUE(similar>0.4); + CU_ASSERT_TRUE(similar>threshold); CU_ASSERT_TRUE(similar<=1.0); - if(similar > 0.4 && similar <=1.0) { + if(similar > threshold && similar <=1.0) { remove(recordpath); } linphone_core_manager_destroy(marie); @@ -2077,6 +2078,7 @@ static void call_with_mkv_file_player(void) { char hellowav[256]; char *recordpath; double similar; + const double threshold = 0.9; if (!is_format_supported(marie->lc,"mkv")){ ms_warning("Test skipped, no mkv support."); @@ -2113,8 +2115,11 @@ static void call_with_mkv_file_player(void) { CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); CU_ASSERT_TRUE(ms_audio_diff(hellowav,recordpath,&similar,NULL,NULL)==0); - CU_ASSERT_TRUE(similar>0.6); + CU_ASSERT_TRUE(similar>threshold); CU_ASSERT_TRUE(similar<=1.0); + if(similar>threshold && similar<=1.0) { + remove(recordpath); + } ms_free(recordpath); end: From 13bacf87c9fbc177011c2326a59faf691da7da1e Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 27 Nov 2014 10:18:37 +0100 Subject: [PATCH 226/249] fix compilation warning update ms2 --- coreapi/message_storage.c | 2 +- mediastreamer2 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index 66d49a3db..2684ba0b5 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -391,7 +391,7 @@ MSList *linphone_chat_room_get_history_range(LinphoneChatRoom *cr, int startm, i begin=ortp_get_cur_time_ms(); linphone_sql_request_message(lc->db,buf,cr); end=ortp_get_cur_time_ms(); - ms_debug("%s(): completed in %i ms",__FUNCTION__, (int)(end-begin)); + ms_message("%s(): completed in %i ms",__FUNCTION__, (int)(end-begin)); ms_free(buf); ret=cr->messages_hist; cr->messages_hist=NULL; diff --git a/mediastreamer2 b/mediastreamer2 index f0cfb2641..042feb909 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit f0cfb2641de9554db29bc6266579d9d4661e339a +Subproject commit 042feb9096af9fbe1a45e8c76b4121d738329e1e From 110ed1c9d9dffe1583b8ea596b7204b93a7de385 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 27 Nov 2014 10:29:39 +0100 Subject: [PATCH 227/249] Fix crash when receiving some UTF-8 chars --- coreapi/linphonecore_jni.cc | 10 +++++++--- .../org/linphone/core/LinphoneChatMessageImpl.java | 11 +++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 8f4b44154..be72e283f 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -2726,11 +2726,15 @@ extern "C" void Java_org_linphone_core_LinphoneChatMessageImpl_store(JNIEnv* en linphone_chat_message_store((LinphoneChatMessage*)ptr); } -extern "C" jstring Java_org_linphone_core_LinphoneChatMessageImpl_getText(JNIEnv* env +extern "C" jbyteArray Java_org_linphone_core_LinphoneChatMessageImpl_getText(JNIEnv* env ,jobject thiz ,jlong ptr) { - jstring jvalue =env->NewStringUTF(linphone_chat_message_get_text((LinphoneChatMessage*)ptr)); - return jvalue; + const char *message = linphone_chat_message_get_text((LinphoneChatMessage*)ptr); + size_t length = strlen(message); + jbyteArray array = env->NewByteArray(length); + env->SetByteArrayRegion(array, 0, length, (const jbyte*)message); + + return array; } extern "C" jint Java_org_linphone_core_LinphoneChatMessageImpl_getReason(JNIEnv* env diff --git a/java/impl/org/linphone/core/LinphoneChatMessageImpl.java b/java/impl/org/linphone/core/LinphoneChatMessageImpl.java index 7e6d474a2..6d6009c92 100644 --- a/java/impl/org/linphone/core/LinphoneChatMessageImpl.java +++ b/java/impl/org/linphone/core/LinphoneChatMessageImpl.java @@ -1,8 +1,10 @@ package org.linphone.core; +import java.io.UnsupportedEncodingException; + public class LinphoneChatMessageImpl implements LinphoneChatMessage { protected final long nativePtr; - private native String getText(long ptr); + private native byte[] getText(long ptr); private native long getPeerAddress(long ptr); private native String getExternalBodyUrl(long ptr); private native void setExternalBodyUrl(long ptr, String url); @@ -25,7 +27,12 @@ public class LinphoneChatMessageImpl implements LinphoneChatMessage { @Override public String getText() { - return getText(nativePtr); + try { + return new String(getText(nativePtr), "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; } @Override From 8e9deac0b34c7c4aeb980faf1c93c9e7529e89e0 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 27 Nov 2014 11:51:43 +0100 Subject: [PATCH 228/249] Fix issue 1778: First launch wizard doesn't enable ICE --- gtk/setupwizard.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gtk/setupwizard.c b/gtk/setupwizard.c index 491014625..1cb86f3af 100644 --- a/gtk/setupwizard.c +++ b/gtk/setupwizard.c @@ -452,7 +452,7 @@ static void linphone_gtk_assistant_prepare(GtkWidget *assistant, GtkWidget *page linphone_core_add_auth_info(linphone_gtk_get_core(),info); linphone_address_destroy(identity); - if (strcmp(creator->domain, "sip:sip.linphone.org") == 0 ){ + if (strcmp(creator->domain, "sip:sip.linphone.org") == 0) { linphone_proxy_config_enable_avpf(cfg,TRUE); // If account created on sip.linphone.org, we configure linphone to use TLS by default if (linphone_core_sip_transport_supported(linphone_gtk_get_core(),LinphoneTransportTls)) { @@ -465,6 +465,8 @@ static void linphone_gtk_assistant_prepare(GtkWidget *assistant, GtkWidget *page ms_free(tmp); linphone_address_destroy(addr); } + linphone_core_set_stun_server(linphone_gtk_get_core(), "stun.linphone.org"); + linphone_core_set_firewall_policy(linphone_gtk_get_core(), LinphonePolicyUseIce); } if (linphone_core_add_proxy_config(linphone_gtk_get_core(),cfg)==-1) From fa483fe62989683d1ff0515b64e3349e7226003a Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 27 Nov 2014 14:11:33 +0100 Subject: [PATCH 229/249] Fix compilation with CMake. --- CMakeLists.txt | 2 ++ coreapi/CMakeLists.txt | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 759a95f97..0272d671c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,6 +104,8 @@ if(MSVC) include_directories(${CMAKE_PREFIX_PATH}/include/MSVC) endif() +add_definitions(-DIN_LINPHONE) + set(GETTEXT_PACKAGE "linphone") if(ENABLE_RELATIVE_PREFIX) diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt index b2501e2fb..e3bae9640 100644 --- a/coreapi/CMakeLists.txt +++ b/coreapi/CMakeLists.txt @@ -106,7 +106,6 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/liblinphone_gitversion.h COMMAND ${CMAKE_COMMAND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DWORK_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DOUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/gitversion.cmake) add_definitions( - -DIN_LINPHONE -DUSE_BELLESIP -DLIBLINPHONE_EXPORTS ) From e3f789cb8e4bd18d121a9b02c525ad96cdfafb21 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 27 Nov 2014 16:09:39 +0100 Subject: [PATCH 230/249] Update localizations --- po/de.po | 289 ++++---- po/de_DE.po | 1984 +++++++++++++++++++++++++++++++++++++++++++++++++++ po/he.po | 33 +- po/ja.po | 461 ++++++------ po/sr.po | 433 +++++------ 5 files changed, 2594 insertions(+), 606 deletions(-) create mode 100644 po/de_DE.po diff --git a/po/de.po b/po/de.po index d447b9325..c65ead393 100644 --- a/po/de.po +++ b/po/de.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# andreas, 2014 # Gerhard Stengel , 2011-2012 # Simon Morlat , 2001 msgid "" @@ -10,8 +11,8 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" -"PO-Revision-Date: 2014-11-19 10:14+0000\n" -"Last-Translator: Cqnqrd \n" +"PO-Revision-Date: 2014-11-25 16:45+0000\n" +"Last-Translator: andreas\n" "Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,7 +33,7 @@ msgstr "Text zu „%s“ schicken" #: ../gtk/calllogs.c:232 #, c-format msgid "Recent calls (%i)" -msgstr "" +msgstr "letzte Anrufe (%i)" #: ../gtk/calllogs.c:314 msgid "n/a" @@ -67,21 +68,21 @@ msgstr[1] "%i Sekunden" #: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 #, c-format msgid "%s\t%s" -msgstr "" +msgstr "%s\t%s" #: ../gtk/calllogs.c:337 #, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "" +msgstr "%s\tQualität: %s\n%s\t%s\t" #: ../gtk/calllogs.c:343 #, c-format msgid "" "%s\t\n" "%s" -msgstr "" +msgstr "%s\t\n%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -132,11 +133,11 @@ msgstr "Geben Sie einen Arbeitsordner an (sollte der Installationsordner sein, z #: ../gtk/main.c:156 msgid "Configuration file" -msgstr "" +msgstr "Konfigurationsdatei" #: ../gtk/main.c:163 msgid "Run the audio assistant" -msgstr "" +msgstr "Starte den Audio-Assistent" #: ../gtk/main.c:1085 #, c-format @@ -151,7 +152,7 @@ msgstr "%s möchte Sie zu seiner Kontaktliste hinzufügen.\nMöchten Sie ihm erl msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "" +msgstr "Bitte geben Sie Ihr Passwort für den Benutzernamen %s\n für Bereich %s ein:" #: ../gtk/main.c:1283 msgid "Call error" @@ -233,7 +234,7 @@ msgstr "Anrufen" #: ../gtk/friendlist.c:726 msgid "Chat" -msgstr "" +msgstr "Chat" #: ../gtk/friendlist.c:756 #, c-format @@ -253,7 +254,7 @@ msgstr "Kontakt „%s“ löschen" #: ../gtk/friendlist.c:978 #, c-format msgid "Delete chat history of '%s'" -msgstr "" +msgstr "Lösche Gesprächshistorie von '%s'" #: ../gtk/friendlist.c:1029 #, c-format @@ -270,7 +271,7 @@ msgstr "Status" #: ../gtk/propertybox.c:570 msgid "IP Bitrate (kbit/s)" -msgstr "" +msgstr "IP Bit-Rate (kbit/s)" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -354,11 +355,11 @@ msgstr "Norwegisch" #: ../gtk/propertybox.c:1088 msgid "Hebrew" -msgstr "" +msgstr "Hebräisch" #: ../gtk/propertybox.c:1089 msgid "Serbian" -msgstr "" +msgstr "Serbisch" #: ../gtk/propertybox.c:1156 msgid "" @@ -371,11 +372,11 @@ msgstr "Keinen" #: ../gtk/propertybox.c:1238 msgid "SRTP" -msgstr "" +msgstr "SRTP" #: ../gtk/propertybox.c:1244 msgid "ZRTP" -msgstr "" +msgstr "ZRTP" #: ../gtk/update.c:80 #, c-format @@ -435,7 +436,7 @@ msgstr "Ich habe bereits ein SIP-Konto und möchte es jetzt benutzen." #: ../gtk/setupwizard.c:46 msgid "I want to specify a remote configuration URI" -msgstr "" +msgstr "Ich möchte eine URI zur Fernkonfiguration angeben" #: ../gtk/setupwizard.c:89 msgid "Enter your linphone.org username" @@ -491,7 +492,7 @@ msgstr "Bestätigen Sie Ihr Passwort: (*)" #: ../gtk/setupwizard.c:338 msgid "Keep me informed with linphone updates" -msgstr "" +msgstr "Halte mich über linphone Aktualisierungen auf dem laufenden" #: ../gtk/setupwizard.c:394 msgid "" @@ -511,7 +512,7 @@ msgstr "Bitte bestätigen Sie Ihr Konto, indem Sie auf die Verknüpfung klicken, #: ../gtk/setupwizard.c:600 msgid "SIP account configuration assistant" -msgstr "" +msgstr "SIP-Konto-Einrichtungsassistent" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" @@ -585,27 +586,27 @@ msgstr "Über einen Relay-Server" #: ../gtk/incall_view.c:239 msgid "uPnP not activated" -msgstr "" +msgstr "uPnP nicht aktiviert" #: ../gtk/incall_view.c:241 msgid "uPnP in progress" -msgstr "" +msgstr "uPnP läuft" #: ../gtk/incall_view.c:243 msgid "uPnp not available" -msgstr "" +msgstr "uPnp nicht verfügbar" #: ../gtk/incall_view.c:245 msgid "uPnP is running" -msgstr "" +msgstr "uPnP läuft" #: ../gtk/incall_view.c:247 msgid "uPnP failed" -msgstr "" +msgstr "uPnP fehlgeschlagen" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" -msgstr "" +msgstr "Direkt oder über Server" #: ../gtk/incall_view.c:267 ../gtk/incall_view.c:279 #, c-format @@ -617,16 +618,16 @@ msgstr "Herunterladen: %f\nHochladen: %f (kbit/s)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format msgid "%ix%i @ %f fps" -msgstr "" +msgstr "%ix%i @ %f bps" #: ../gtk/incall_view.c:304 #, c-format msgid "%.3f seconds" -msgstr "" +msgstr "%.3f Sekunden" #: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 msgid "Hang up" -msgstr "" +msgstr "Auflegen" #: ../gtk/incall_view.c:511 msgid "Calling..." @@ -634,7 +635,7 @@ msgstr "Verbindungsaufbau..." #: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" -msgstr "" +msgstr "00::00::00" #: ../gtk/incall_view.c:525 msgid "Incoming call" @@ -696,7 +697,7 @@ msgstr "Gehaltener Anruf" #: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" -msgstr "" +msgstr "%02i::%02i::%02i" #: ../gtk/incall_view.c:794 msgid "Call ended." @@ -727,11 +728,11 @@ msgstr "Halten" msgid "" "Recording into\n" "%s %s" -msgstr "" +msgstr "Recording into\n%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" -msgstr "" +msgstr "(pausiert)" #: ../gtk/loginframe.c:88 #, c-format @@ -741,86 +742,86 @@ msgstr "Bitte geben Sie die Anmeldeinformationen für %s ein." #: ../gtk/config-fetching.c:57 #, c-format msgid "fetching from %s" -msgstr "" +msgstr "abrufen von %s" #: ../gtk/config-fetching.c:73 #, c-format msgid "Downloading of remote configuration from %s failed." -msgstr "" +msgstr "Herunterladen der Fernkonfiguration von %s fehlgeschlagen" #: ../gtk/audio_assistant.c:98 msgid "No voice detected" -msgstr "" +msgstr "Keine Stimme ermittelt" #: ../gtk/audio_assistant.c:99 msgid "Too low" -msgstr "" +msgstr "zu gering" #: ../gtk/audio_assistant.c:100 msgid "Good" -msgstr "" +msgstr "gut" #: ../gtk/audio_assistant.c:101 msgid "Too loud" -msgstr "" +msgstr "zu laut" #: ../gtk/audio_assistant.c:318 msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" -msgstr "" +msgstr "Willkommen!\nDieser Assistent wird Ihnen dabei helfen, die Audio-Einstellungen für Linphone vorzunehmen." #: ../gtk/audio_assistant.c:328 msgid "Capture device" -msgstr "" +msgstr "Aufnahmegerät" #: ../gtk/audio_assistant.c:329 msgid "Recorded volume" -msgstr "" +msgstr "aufgenommene Lautstärke" #: ../gtk/audio_assistant.c:333 msgid "No voice" -msgstr "" +msgstr "Keine Stimme" #: ../gtk/audio_assistant.c:369 msgid "Playback device" -msgstr "" +msgstr "Wiedergabegerät" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" -msgstr "" +msgstr "spiele drei Pieptöne ab" #: ../gtk/audio_assistant.c:403 msgid "Press the record button and say some words" -msgstr "" +msgstr "Drücken Sie den Aufnahmeknopf und sagen Sie etwas" #: ../gtk/audio_assistant.c:404 msgid "Listen to your record voice" -msgstr "" +msgstr "Hören Sie das Aufgenommene" #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" -msgstr "" +msgstr "Linphone jetzt starten" #: ../gtk/audio_assistant.c:496 msgid "Audio Assistant" -msgstr "" +msgstr "Audio-Assistant" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 msgid "Audio assistant" -msgstr "" +msgstr "Audio-Assistant" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" -msgstr "" +msgstr "Einrichtung MIkrofonverstärker" #: ../gtk/audio_assistant.c:517 msgid "Speaker volume calibration" -msgstr "" +msgstr "Einrichtung Lautstärke" #: ../gtk/audio_assistant.c:522 msgid "Record and Play" -msgstr "" +msgstr "aufnehmen und abspielen" #: ../gtk/main.ui.h:1 msgid "Callee name" @@ -832,19 +833,19 @@ msgstr "Senden" #: ../gtk/main.ui.h:3 msgid "End conference" -msgstr "" +msgstr "Konferenz beenden" #: ../gtk/main.ui.h:7 msgid "Record this call to an audio file" -msgstr "" +msgstr "Speichere den Anruf in eine Audio-Datei" #: ../gtk/main.ui.h:8 msgid "Video" -msgstr "" +msgstr "Video" #: ../gtk/main.ui.h:10 msgid "Mute" -msgstr "" +msgstr "Stumm" #: ../gtk/main.ui.h:11 msgid "Transfer" @@ -872,7 +873,7 @@ msgstr "Angemeldete Teilnehmer" #: ../gtk/main.ui.h:19 msgid "ADSL" -msgstr "" +msgstr "ADSL" #: ../gtk/main.ui.h:20 msgid "Fiber Channel" @@ -888,7 +889,7 @@ msgstr "_Optionen" #: ../gtk/main.ui.h:23 msgid "Set configuration URI" -msgstr "" +msgstr "Konfigurations URI angeben" #: ../gtk/main.ui.h:24 msgid "Always start video" @@ -908,7 +909,7 @@ msgstr "Debug-Fenster anzeigen" #: ../gtk/main.ui.h:28 msgid "_Homepage" -msgstr "" +msgstr "_Homepage" #: ../gtk/main.ui.h:29 msgid "Check _Updates" @@ -980,7 +981,7 @@ msgstr "Willkommen !" #: ../gtk/main.ui.h:47 msgid "Delete" -msgstr "" +msgstr "Löschen" #: ../gtk/about.ui.h:1 msgid "About linphone" @@ -988,7 +989,7 @@ msgstr "Über Linphone" #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications,2010\n" -msgstr "" +msgstr "(C) Belledonne Communications,2010\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1008,7 +1009,7 @@ msgid "" "cs: Petr Pisar \n" "hu: anonymous\n" "he: Eli Zaretskii \n" -msgstr "" +msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1084,11 +1085,11 @@ msgstr "Registrierungsdauer (sec):" #: ../gtk/sip_account.ui.h:8 msgid "Contact params (optional):" -msgstr "" +msgstr "Kontaktdetails (optional)" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" -msgstr "" +msgstr "AVPF Standard RTCP Interval (sek):" #: ../gtk/sip_account.ui.h:10 msgid "Route (optional):" @@ -1096,7 +1097,7 @@ msgstr "Route (optional):" #: ../gtk/sip_account.ui.h:11 msgid "Transport" -msgstr "" +msgstr "Übertragung" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1108,7 +1109,7 @@ msgstr "Anwesenheitsstatus veröffentlichen" #: ../gtk/sip_account.ui.h:14 msgid "Enable AVPF" -msgstr "" +msgstr "Aktiviere AVPF" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1116,15 +1117,15 @@ msgstr "SIP-Konto einrichten" #: ../gtk/parameters.ui.h:1 msgid "anonymous" -msgstr "" +msgstr "Anonym" #: ../gtk/parameters.ui.h:2 msgid "GSSAPI" -msgstr "" +msgstr "GSSAPI" #: ../gtk/parameters.ui.h:3 msgid "SASL" -msgstr "" +msgstr "SASL" #: ../gtk/parameters.ui.h:4 msgid "default soundcard" @@ -1140,7 +1141,7 @@ msgstr "Standard-Kamera" #: ../gtk/parameters.ui.h:7 msgid "CIF" -msgstr "" +msgstr "CIF" #: ../gtk/parameters.ui.h:8 msgid "Audio codecs" @@ -1152,19 +1153,19 @@ msgstr "Video-Codecs" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" -msgstr "" +msgstr "C" #: ../gtk/parameters.ui.h:11 msgid "SIP (UDP)" -msgstr "" +msgstr "SIP (UDP)" #: ../gtk/parameters.ui.h:12 msgid "SIP (TCP)" -msgstr "" +msgstr "SIP (TCP)" #: ../gtk/parameters.ui.h:13 msgid "SIP (TLS)" -msgstr "" +msgstr "SIP (TLS)" #: ../gtk/parameters.ui.h:14 msgid "Settings" @@ -1192,11 +1193,11 @@ msgstr "Verschlüsselungstyp der Medien" #: ../gtk/parameters.ui.h:20 msgid "Video RTP/UDP:" -msgstr "" +msgstr "Video RTP/UDP:" #: ../gtk/parameters.ui.h:21 msgid "Audio RTP/UDP:" -msgstr "" +msgstr "Audio RTP/UDP:" #: ../gtk/parameters.ui.h:22 msgid "Fixed" @@ -1204,7 +1205,7 @@ msgstr "Fest" #: ../gtk/parameters.ui.h:23 msgid "Media encryption is mandatory" -msgstr "" +msgstr "Medienverschlüsselung erzwingen" #: ../gtk/parameters.ui.h:24 msgid "Tunnel" @@ -1216,11 +1217,11 @@ msgstr "DSCP-Felder" #: ../gtk/parameters.ui.h:26 msgid "SIP/TCP port" -msgstr "" +msgstr "SIP/TCP Port" #: ../gtk/parameters.ui.h:27 msgid "SIP/UDP port" -msgstr "" +msgstr "SIP/UDP Port" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1232,7 +1233,7 @@ msgstr "Direkte Verbindung ins Internet" #: ../gtk/parameters.ui.h:30 msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "" +msgstr "Hinter NAT / Firewall (Gateway IP angeben)" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" @@ -1244,7 +1245,7 @@ msgstr "Hinter NAT / Firewall (ICE verwenden)" #: ../gtk/parameters.ui.h:33 msgid "Behind NAT / Firewall (use uPnP)" -msgstr "" +msgstr "Hinter NAT / Firewall (uPnP verwenden)" #: ../gtk/parameters.ui.h:34 msgid "Public IP address:" @@ -1300,7 +1301,7 @@ msgstr "Bevorzugte Video-Auflösung:" #: ../gtk/parameters.ui.h:47 msgid "Video output method:" -msgstr "" +msgstr "Methode zur Videoausgabe" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1422,23 +1423,23 @@ msgstr "Benutzeroberfläche" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 msgid "Server address:" -msgstr "" +msgstr "Server-Adresse" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 msgid "Authentication method:" -msgstr "" +msgstr "Authentifizierungsmethode" #: ../gtk/parameters.ui.h:80 msgid "label" -msgstr "" +msgstr "Hinweisschild" #: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" -msgstr "" +msgstr "LDAP-Kontoeinrichtung" #: ../gtk/parameters.ui.h:82 msgid "LDAP" -msgstr "" +msgstr "LDAP" #: ../gtk/parameters.ui.h:83 msgid "Done" @@ -1466,7 +1467,7 @@ msgstr "Bitte warten" #: ../gtk/dscp_settings.ui.h:1 msgid "DSCP settings" -msgstr "" +msgstr "DSCP-Einstellungen" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1502,7 +1503,7 @@ msgstr "Genutzte IP-Bandbreite Audio" #: ../gtk/call_statistics.ui.h:5 msgid "Audio Media connectivity" -msgstr "" +msgstr "Audio-Konnektivität" #: ../gtk/call_statistics.ui.h:6 msgid "Video IP bandwidth usage" @@ -1510,23 +1511,23 @@ msgstr "Genutzte IP-Bandbreite Video" #: ../gtk/call_statistics.ui.h:7 msgid "Video Media connectivity" -msgstr "" +msgstr "Video-Konnektivität" #: ../gtk/call_statistics.ui.h:8 msgid "Round trip time" -msgstr "" +msgstr "Umlaufzeit" #: ../gtk/call_statistics.ui.h:9 msgid "Video resolution received" -msgstr "" +msgstr "Videoauflösung empfangen" #: ../gtk/call_statistics.ui.h:10 msgid "Video resolution sent" -msgstr "" +msgstr "Videoauflösung gesendet" #: ../gtk/call_statistics.ui.h:11 msgid "RTP profile" -msgstr "" +msgstr "RTP-Profil" #: ../gtk/call_statistics.ui.h:12 msgid "Call statistics and information" @@ -1550,178 +1551,178 @@ msgstr "Tunnel einrichten" #: ../gtk/tunnel_config.ui.h:9 msgid "Configure http proxy (optional)" -msgstr "HTTP-Proxy einrichten (optional)" +msgstr "Configure http proxy (optional)" #: ../gtk/keypad.ui.h:1 msgid "D" -msgstr "" +msgstr "D" #: ../gtk/keypad.ui.h:2 msgid "#" -msgstr "" +msgstr "#" #: ../gtk/keypad.ui.h:3 msgid "0" -msgstr "" +msgstr "0" #: ../gtk/keypad.ui.h:4 msgid "*" -msgstr "" +msgstr "*" #: ../gtk/keypad.ui.h:6 msgid "9" -msgstr "" +msgstr "9" #: ../gtk/keypad.ui.h:7 msgid "8" -msgstr "" +msgstr "8" #: ../gtk/keypad.ui.h:8 msgid "7" -msgstr "" +msgstr "7" #: ../gtk/keypad.ui.h:9 msgid "B" -msgstr "" +msgstr "B" #: ../gtk/keypad.ui.h:10 msgid "6" -msgstr "" +msgstr "6" #: ../gtk/keypad.ui.h:11 msgid "5" -msgstr "" +msgstr "5" #: ../gtk/keypad.ui.h:12 msgid "4" -msgstr "" +msgstr "4" #: ../gtk/keypad.ui.h:13 msgid "A" -msgstr "" +msgstr "A" #: ../gtk/keypad.ui.h:14 msgid "3" -msgstr "" +msgstr "3" #: ../gtk/keypad.ui.h:15 msgid "2" -msgstr "" +msgstr "2" #: ../gtk/keypad.ui.h:16 msgid "1" -msgstr "" +msgstr "1" #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" -msgstr "" +msgstr "LDAP-Einstellungen" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" -msgstr "" +msgstr "TLS-Verbindung verwenden" #: ../gtk/ldap.ui.h:7 msgid "Not yet available" -msgstr "" +msgstr "Aktuell nicht verfügbar" #: ../gtk/ldap.ui.h:8 msgid "Connection" -msgstr "" +msgstr "Verbindung" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" -msgstr "" +msgstr "Bind-DN" #: ../gtk/ldap.ui.h:10 msgid "Authname" -msgstr "" +msgstr "Authentifizierungsname" #: ../gtk/ldap.ui.h:11 msgid "Realm" -msgstr "" +msgstr "Bereich" #: ../gtk/ldap.ui.h:12 msgid "SASL" -msgstr "" +msgstr "SASL" #: ../gtk/ldap.ui.h:13 msgid "Base object:" -msgstr "" +msgstr "Basis-Objekt:" #: ../gtk/ldap.ui.h:15 #, no-c-format msgid "Filter (%s for name):" -msgstr "" +msgstr "Filter (%s nach Name):" #: ../gtk/ldap.ui.h:16 msgid "Name Attribute:" -msgstr "" +msgstr "Name:" #: ../gtk/ldap.ui.h:17 msgid "SIP address attribute:" -msgstr "" +msgstr "SIP-Adresse:" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" -msgstr "" +msgstr "Sucheigenschaft:" #: ../gtk/ldap.ui.h:19 msgid "Search" -msgstr "" +msgstr "Suche" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" -msgstr "" +msgstr "Zeitüberschreitung bei der Suche:" #: ../gtk/ldap.ui.h:21 msgid "Max results:" -msgstr "" +msgstr "Max Ergebnisse:" #: ../gtk/ldap.ui.h:22 msgid "Follow Aliases" -msgstr "" +msgstr "folge Pseudonymen" #: ../gtk/ldap.ui.h:23 msgid "Miscellaneous" -msgstr "" +msgstr "Sonstiges" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" -msgstr "" +msgstr "ANONYMOUS" #: ../gtk/ldap.ui.h:25 msgid "SIMPLE" -msgstr "" +msgstr "SIMPLE" #: ../gtk/ldap.ui.h:26 msgid "DIGEST-MD5" -msgstr "" +msgstr "DIGEST-MD5" #: ../gtk/ldap.ui.h:27 msgid "NTLM" -msgstr "" +msgstr "NTLM" #: ../gtk/config-uri.ui.h:1 msgid "Specifying a remote configuration URI" -msgstr "" +msgstr "Eine URI zur FErnkonfiguration angeben" #: ../gtk/config-uri.ui.h:2 msgid "" "This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" "Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" +msgstr "Diese Maske erlaubt Ihnen für das Laden der Konfiguration beim Programmstart eine http- oder https-Adresse anzugeben.\nBitte geben Sie unten die Konfigurations-URI ein oder ändern diese. Nach dem Bestätigen mit OK wird Linphone automatisch neustarten, um die neuen Einstellungen zu übernehmen." #: ../gtk/config-uri.ui.h:4 msgid "https://" -msgstr "" +msgstr "https://" #: ../gtk/provisioning-fetch.ui.h:1 msgid "Configuring..." -msgstr "" +msgstr "Einstellen..." #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." -msgstr "" +msgstr "Bitte warten Sie während die Einstellungen vom Server abgerufen werden..." #: ../coreapi/linphonecore.c:1511 msgid "Ready" @@ -1729,7 +1730,7 @@ msgstr "Bereit" #: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "" +msgstr "Einstellen" #: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." @@ -1762,7 +1763,7 @@ msgstr " und fragt nach automatischer Antwort." #: ../coreapi/linphonecore.c:3234 msgid "." -msgstr "" +msgstr "." #: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." @@ -1838,7 +1839,7 @@ msgstr "Ausstehend" #: ../coreapi/friend.c:66 msgid "Vacation" -msgstr "" +msgstr "Urlaub" #: ../coreapi/friend.c:68 msgid "Unknown-bug" @@ -1871,7 +1872,7 @@ msgstr "Klingeln bei der Gegenseite..." #: ../coreapi/callbacks.c:414 msgid "Early media." -msgstr "" +msgstr "nicht kompatibel, prüfe Codecs oder Sicherheitseinstellungen..." #: ../coreapi/callbacks.c:475 #, c-format @@ -1894,7 +1895,7 @@ msgstr "Anruf wird von %s entgegengenommen." #: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." -msgstr "" +msgstr "Inkompatibel, prüfe Codecs oder Sicherheitseinstellungen..." #: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 msgid "Incompatible media parameters." @@ -1937,7 +1938,7 @@ msgstr "Anruf abgewiesen" #: ../coreapi/callbacks.c:752 msgid "Request timeout." -msgstr "" +msgstr "Zeitüberschreitung bei der Anfrage" #: ../coreapi/callbacks.c:780 msgid "Redirected" @@ -1968,7 +1969,7 @@ msgstr "Registrierung auf %s fehlgeschlagen: %s" #: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" -msgstr "" +msgstr "Service nicht verfügbar, versuche erneut" #: ../coreapi/linphonecall.c:174 #, c-format diff --git a/po/de_DE.po b/po/de_DE.po new file mode 100644 index 000000000..c65ead393 --- /dev/null +++ b/po/de_DE.po @@ -0,0 +1,1984 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# andreas, 2014 +# Gerhard Stengel , 2011-2012 +# Simon Morlat , 2001 +msgid "" +msgstr "" +"Project-Id-Version: linphone-gtk\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"PO-Revision-Date: 2014-11-25 16:45+0000\n" +"Last-Translator: andreas\n" +"Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 +#, c-format +msgid "Call %s" +msgstr "„%s“ anrufen" + +#: ../gtk/calllogs.c:149 ../gtk/friendlist.c:975 +#, c-format +msgid "Send text to %s" +msgstr "Text zu „%s“ schicken" + +#: ../gtk/calllogs.c:232 +#, c-format +msgid "Recent calls (%i)" +msgstr "letzte Anrufe (%i)" + +#: ../gtk/calllogs.c:314 +msgid "n/a" +msgstr "nicht verfügbar" + +#: ../gtk/calllogs.c:317 +msgid "Aborted" +msgstr "Abgebrochen" + +#: ../gtk/calllogs.c:320 +msgid "Missed" +msgstr "Entgangen" + +#: ../gtk/calllogs.c:323 +msgid "Declined" +msgstr "Abgewiesen" + +#: ../gtk/calllogs.c:329 +#, c-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i Minute" +msgstr[1] "%i Minuten" + +#: ../gtk/calllogs.c:332 +#, c-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i Sekunde" +msgstr[1] "%i Sekunden" + +#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 +#, c-format +msgid "%s\t%s" +msgstr "%s\t%s" + +#: ../gtk/calllogs.c:337 +#, c-format +msgid "" +"%s\tQuality: %s\n" +"%s\t%s\t" +msgstr "%s\tQualität: %s\n%s\t%s\t" + +#: ../gtk/calllogs.c:343 +#, c-format +msgid "" +"%s\t\n" +"%s" +msgstr "%s\t\n%s" + +#: ../gtk/conference.c:38 ../gtk/main.ui.h:13 +msgid "Conference" +msgstr "Konferenz" + +#: ../gtk/conference.c:46 +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" +msgstr "Pixmapdatei %s kann nicht gefunden werden." + +#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +msgid "Invalid sip contact !" +msgstr "Ungültiger SIP-Kontakt!" + +#: ../gtk/main.c:107 +msgid "log to stdout some debug information while running." +msgstr "Ausgabe von Debug-Informationen auf stdout während der Laufzeit" + +#: ../gtk/main.c:114 +msgid "path to a file to write logs into." +msgstr "Pfad zu einer Datei, in die Protokolle geschrieben werden." + +#: ../gtk/main.c:121 +msgid "Start linphone with video disabled." +msgstr "Linphone mit ausgeschaltetem Video starten." + +#: ../gtk/main.c:128 +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:135 +msgid "address to call right now" +msgstr "Im Moment anzurufende Adresse" + +#: ../gtk/main.c:142 +msgid "if set automatically answer incoming calls" +msgstr "Falls aktiviert, werden eingehende Anrufe automatisch beantwortet" + +#: ../gtk/main.c:149 +msgid "" +"Specifiy a working directory (should be the base of the installation, eg: " +"c:\\Program Files\\Linphone)" +msgstr "Geben Sie einen Arbeitsordner an (sollte der Installationsordner sein, z. B. C:\\Programme\\Linphone)" + +#: ../gtk/main.c:156 +msgid "Configuration file" +msgstr "Konfigurationsdatei" + +#: ../gtk/main.c:163 +msgid "Run the audio assistant" +msgstr "Starte den Audio-Assistent" + +#: ../gtk/main.c:1085 +#, 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" +"If you answer no, this person will be temporarily blacklisted." +msgstr "%s möchte Sie zu seiner Kontaktliste hinzufügen.\nMöchten Sie ihm erlauben, Ihren Anwesenheitsstatus zu sehen, oder ihn zu Ihrer Kontaktliste hinzufügen?\nWenn Sie mit Nein antworten, wird diese Person vorläufig blockiert." + +#: ../gtk/main.c:1162 +#, c-format +msgid "" +"Please enter your password for username %s\n" +" at realm %s:" +msgstr "Bitte geben Sie Ihr Passwort für den Benutzernamen %s\n für Bereich %s ein:" + +#: ../gtk/main.c:1283 +msgid "Call error" +msgstr "Anruf fehlgeschlagen" + +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +msgid "Call ended" +msgstr "Anruf beendet" + +#: ../gtk/main.c:1289 +msgid "Incoming call" +msgstr "Eingehender Anruf" + +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +msgid "Answer" +msgstr "Annehmen" + +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 +msgid "Decline" +msgstr "Abweisen" + +#: ../gtk/main.c:1299 +msgid "Call paused" +msgstr "Anruf wird gehalten" + +#: ../gtk/main.c:1299 +#, c-format +msgid "by %s" +msgstr "von %s" + +#: ../gtk/main.c:1366 +#, c-format +msgid "%s proposed to start video. Do you accept ?" +msgstr "%s schlägt vor, eine Videoübertragung zu starten. Nehmen Sie an?" + +#: ../gtk/main.c:1528 +msgid "Website link" +msgstr "Website-Verknüpfung" + +#: ../gtk/main.c:1577 +msgid "Linphone - a video internet phone" +msgstr "Linphone - ein Internet-Video-Telefon" + +#: ../gtk/main.c:1669 +#, c-format +msgid "%s (Default)" +msgstr "%s (Vorgabe)" + +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#, c-format +msgid "We are transferred to %s" +msgstr "Vermittlung nach %s" + +#: ../gtk/main.c:2016 +msgid "" +"No sound cards have been detected on this computer.\n" +"You won't be able to send or receive audio calls." +msgstr "Auf diesem Rechner können keine Soundkarten gefunden werden.\nSie können keine Audio-Anrufe tätigen oder entgegennehmen." + +#: ../gtk/main.c:2157 +msgid "A free SIP video-phone" +msgstr "Ein freies SIP-Video-Telefon" + +#: ../gtk/friendlist.c:505 +msgid "Add to addressbook" +msgstr "Zum Adressbuch hinzufügen" + +#: ../gtk/friendlist.c:691 +msgid "Presence status" +msgstr "Anwesenheitsstatus" + +#: ../gtk/friendlist.c:709 ../gtk/propertybox.c:552 ../gtk/contact.ui.h:1 +msgid "Name" +msgstr "Name" + +#: ../gtk/friendlist.c:721 +msgid "Call" +msgstr "Anrufen" + +#: ../gtk/friendlist.c:726 +msgid "Chat" +msgstr "Chat" + +#: ../gtk/friendlist.c:756 +#, c-format +msgid "Search in %s directory" +msgstr "Im %s-Verzeichnis suchen" + +#: ../gtk/friendlist.c:976 +#, c-format +msgid "Edit contact '%s'" +msgstr "Kontakt „%s“ bearbeiten" + +#: ../gtk/friendlist.c:977 +#, c-format +msgid "Delete contact '%s'" +msgstr "Kontakt „%s“ löschen" + +#: ../gtk/friendlist.c:978 +#, c-format +msgid "Delete chat history of '%s'" +msgstr "Lösche Gesprächshistorie von '%s'" + +#: ../gtk/friendlist.c:1029 +#, c-format +msgid "Add new contact from %s directory" +msgstr "Einen neuen Kontakt aus dem %s-Verzeichnis hinzufügen" + +#: ../gtk/propertybox.c:558 +msgid "Rate (Hz)" +msgstr "Rate (Hz)" + +#: ../gtk/propertybox.c:564 +msgid "Status" +msgstr "Status" + +#: ../gtk/propertybox.c:570 +msgid "IP Bitrate (kbit/s)" +msgstr "IP Bit-Rate (kbit/s)" + +#: ../gtk/propertybox.c:577 +msgid "Parameters" +msgstr "Parameter" + +#: ../gtk/propertybox.c:620 ../gtk/propertybox.c:763 +msgid "Enabled" +msgstr "Freigegeben" + +#: ../gtk/propertybox.c:622 ../gtk/propertybox.c:763 +msgid "Disabled" +msgstr "Gesperrt" + +#: ../gtk/propertybox.c:809 +msgid "Account" +msgstr "Konto" + +#: ../gtk/propertybox.c:1072 +msgid "English" +msgstr "Englisch" + +#: ../gtk/propertybox.c:1073 +msgid "French" +msgstr "Französisch" + +#: ../gtk/propertybox.c:1074 +msgid "Swedish" +msgstr "Schwedisch" + +#: ../gtk/propertybox.c:1075 +msgid "Italian" +msgstr "Italienisch" + +#: ../gtk/propertybox.c:1076 +msgid "Spanish" +msgstr "Spanisch" + +#: ../gtk/propertybox.c:1077 +msgid "Brazilian Portugese" +msgstr "Brasilianisches Portugiesisch" + +#: ../gtk/propertybox.c:1078 +msgid "Polish" +msgstr "Polnisch" + +#: ../gtk/propertybox.c:1079 +msgid "German" +msgstr "Deutsch" + +#: ../gtk/propertybox.c:1080 +msgid "Russian" +msgstr "Russisch" + +#: ../gtk/propertybox.c:1081 +msgid "Japanese" +msgstr "Japanisch" + +#: ../gtk/propertybox.c:1082 +msgid "Dutch" +msgstr "Niederländisch" + +#: ../gtk/propertybox.c:1083 +msgid "Hungarian" +msgstr "Ungarisch" + +#: ../gtk/propertybox.c:1084 +msgid "Czech" +msgstr "Tschechisch" + +#: ../gtk/propertybox.c:1085 +msgid "Chinese" +msgstr "Chinesisch" + +#: ../gtk/propertybox.c:1086 +msgid "Traditional Chinese" +msgstr "Traditionelles Chinesisch" + +#: ../gtk/propertybox.c:1087 +msgid "Norwegian" +msgstr "Norwegisch" + +#: ../gtk/propertybox.c:1088 +msgid "Hebrew" +msgstr "Hebräisch" + +#: ../gtk/propertybox.c:1089 +msgid "Serbian" +msgstr "Serbisch" + +#: ../gtk/propertybox.c:1156 +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:1234 +msgid "None" +msgstr "Keinen" + +#: ../gtk/propertybox.c:1238 +msgid "SRTP" +msgstr "SRTP" + +#: ../gtk/propertybox.c:1244 +msgid "ZRTP" +msgstr "ZRTP" + +#: ../gtk/update.c:80 +#, c-format +msgid "" +"A more recent version is availalble from %s.\n" +"Would you like to open a browser to download it ?" +msgstr "Eine neuere Version ist von %s verfügbar.\nMöchten Sie einen Browser zum Herunterladen öffnen?" + +#: ../gtk/update.c:91 +msgid "You are running the lastest version." +msgstr "Sie verwenden bereits die aktuellste Version." + +#: ../gtk/buddylookup.c:85 +msgid "Firstname, Lastname" +msgstr "Vorname, Nachname" + +#: ../gtk/buddylookup.c:160 +msgid "Error communicating with server." +msgstr "Fehler bei der Kommunikation mit dem Server." + +#: ../gtk/buddylookup.c:164 +msgid "Connecting..." +msgstr "Verbinden..." + +#: ../gtk/buddylookup.c:168 +msgid "Connected" +msgstr "Verbunden" + +#: ../gtk/buddylookup.c:172 +msgid "Receiving data..." +msgstr "Daten werden empfangen..." + +#: ../gtk/buddylookup.c:180 +#, c-format +msgid "Found %i contact" +msgid_plural "Found %i contacts" +msgstr[0] "%i Kontakt gefunden" +msgstr[1] "%i Kontakte gefunden" + +#: ../gtk/setupwizard.c:34 +msgid "" +"Welcome !\n" +"This assistant will help you to use a SIP account for your calls." +msgstr "Willkommen!\nDieser Assistent wird Ihnen dabei helfen, ein SIP-Konto für Ihre Anrufe zu verwenden." + +#: ../gtk/setupwizard.c:43 +msgid "Create an account on linphone.org" +msgstr "Ein Konto bei linphone.org erstellen." + +#: ../gtk/setupwizard.c:44 +msgid "I have already a linphone.org account and I just want to use it" +msgstr "Ich habe bereits ein Konto bei linphone.org und möchte es jetzt benutzen." + +#: ../gtk/setupwizard.c:45 +msgid "I have already a sip account and I just want to use it" +msgstr "Ich habe bereits ein SIP-Konto und möchte es jetzt benutzen." + +#: ../gtk/setupwizard.c:46 +msgid "I want to specify a remote configuration URI" +msgstr "Ich möchte eine URI zur Fernkonfiguration angeben" + +#: ../gtk/setupwizard.c:89 +msgid "Enter your linphone.org username" +msgstr "Geben Sie Ihren Benutzernamen bei linphone.org ein." + +#: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 +msgid "Username:" +msgstr "Benutzername:" + +#: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 +msgid "Password:" +msgstr "Passwort:" + +#: ../gtk/setupwizard.c:124 +msgid "Enter your account informations" +msgstr "Geben Sie Ihre Zugangsdaten ein." + +#: ../gtk/setupwizard.c:140 +msgid "Username*" +msgstr "Benutzername*" + +#: ../gtk/setupwizard.c:141 +msgid "Password*" +msgstr "Passwort*" + +#: ../gtk/setupwizard.c:144 +msgid "Domain*" +msgstr "Domäne*" + +#: ../gtk/setupwizard.c:145 +msgid "Proxy" +msgstr "Proxy" + +#: ../gtk/setupwizard.c:317 +msgid "(*) Required fields" +msgstr "(*) erforderliche Felder" + +#: ../gtk/setupwizard.c:318 +msgid "Username: (*)" +msgstr "Benutzername: (*)" + +#: ../gtk/setupwizard.c:320 +msgid "Password: (*)" +msgstr "Passwort: (*)" + +#: ../gtk/setupwizard.c:322 +msgid "Email: (*)" +msgstr "E-Mail: (*)" + +#: ../gtk/setupwizard.c:324 +msgid "Confirm your password: (*)" +msgstr "Bestätigen Sie Ihr Passwort: (*)" + +#: ../gtk/setupwizard.c:338 +msgid "Keep me informed with linphone updates" +msgstr "Halte mich über linphone Aktualisierungen auf dem laufenden" + +#: ../gtk/setupwizard.c:394 +msgid "" +"Error, account not validated, username already used or server unreachable.\n" +"Please go back and try again." +msgstr "Fehler, Konto kann nicht bestätigt werden. Der Benutzername wird bereits\nverwendet oder der Server ist unerreichbar.\nBitte gehen Sie zurück und versuchen Sie es noch einmal." + +#: ../gtk/setupwizard.c:405 +msgid "Thank you. Your account is now configured and ready for use." +msgstr "Danke. Ihr Konto ist nun fertig eingerichtet und kann verwendet werden." + +#: ../gtk/setupwizard.c:413 +msgid "" +"Please validate your account by clicking on the link we just sent you by email.\n" +"Then come back here and press Next button." +msgstr "Bitte bestätigen Sie Ihr Konto, indem Sie auf die Verknüpfung klicken, die wir Ihnen soeben per E-Mail geschickt haben.\nDanach gehen Sie hierher zurück und drücken auf „Vor“." + +#: ../gtk/setupwizard.c:600 +msgid "SIP account configuration assistant" +msgstr "SIP-Konto-Einrichtungsassistent" + +#: ../gtk/setupwizard.c:618 +msgid "Welcome to the account setup assistant" +msgstr "Willkommen zum Konto-Einrichtungsassistenten" + +#: ../gtk/setupwizard.c:623 +msgid "Account setup assistant" +msgstr "Konto-Einrichtungsassistent" + +#: ../gtk/setupwizard.c:629 +msgid "Configure your account (step 1/1)" +msgstr "Konto einrichten (Schritt 1/1)" + +#: ../gtk/setupwizard.c:634 +msgid "Enter your sip username (step 1/1)" +msgstr "Geben Sie Ihren SIP-Benutzernamen ein (Schritt 1/1)" + +#: ../gtk/setupwizard.c:638 +msgid "Enter account information (step 1/2)" +msgstr "Geben Sie Ihre Zugangsdaten ein (Schritt 1/2)" + +#: ../gtk/setupwizard.c:647 +msgid "Validation (step 2/2)" +msgstr "Bestätigung (Schritt 2/2)" + +#: ../gtk/setupwizard.c:652 +msgid "Error" +msgstr "Fehler" + +#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +msgid "Terminating" +msgstr "Fertigstellen" + +#: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 +#, c-format +msgid "Call #%i" +msgstr "Anruf #%i" + +#: ../gtk/incall_view.c:155 +#, c-format +msgid "Transfer to call #%i with %s" +msgstr "Vermittlung zum Anruf #%i mit %s" + +#: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 +msgid "Not used" +msgstr "Nicht verwendet" + +#: ../gtk/incall_view.c:221 +msgid "ICE not activated" +msgstr "ICE nicht aktiviert" + +#: ../gtk/incall_view.c:223 +msgid "ICE failed" +msgstr "ICE fehlgeschlagen" + +#: ../gtk/incall_view.c:225 +msgid "ICE in progress" +msgstr "ICE läuft" + +#: ../gtk/incall_view.c:227 +msgid "Going through one or more NATs" +msgstr "Ein oder mehrere NATs werden durchquert" + +#: ../gtk/incall_view.c:229 +msgid "Direct" +msgstr "Direkt" + +#: ../gtk/incall_view.c:231 +msgid "Through a relay server" +msgstr "Über einen Relay-Server" + +#: ../gtk/incall_view.c:239 +msgid "uPnP not activated" +msgstr "uPnP nicht aktiviert" + +#: ../gtk/incall_view.c:241 +msgid "uPnP in progress" +msgstr "uPnP läuft" + +#: ../gtk/incall_view.c:243 +msgid "uPnp not available" +msgstr "uPnp nicht verfügbar" + +#: ../gtk/incall_view.c:245 +msgid "uPnP is running" +msgstr "uPnP läuft" + +#: ../gtk/incall_view.c:247 +msgid "uPnP failed" +msgstr "uPnP fehlgeschlagen" + +#: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 +msgid "Direct or through server" +msgstr "Direkt oder über Server" + +#: ../gtk/incall_view.c:267 ../gtk/incall_view.c:279 +#, c-format +msgid "" +"download: %f\n" +"upload: %f (kbit/s)" +msgstr "Herunterladen: %f\nHochladen: %f (kbit/s)" + +#: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 +#, c-format +msgid "%ix%i @ %f fps" +msgstr "%ix%i @ %f bps" + +#: ../gtk/incall_view.c:304 +#, c-format +msgid "%.3f seconds" +msgstr "%.3f Sekunden" + +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +msgid "Hang up" +msgstr "Auflegen" + +#: ../gtk/incall_view.c:511 +msgid "Calling..." +msgstr "Verbindungsaufbau..." + +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +msgid "00::00::00" +msgstr "00::00::00" + +#: ../gtk/incall_view.c:525 +msgid "Incoming call" +msgstr "Eingehender Anruf" + +#: ../gtk/incall_view.c:562 +msgid "good" +msgstr "gut" + +#: ../gtk/incall_view.c:564 +msgid "average" +msgstr "durchschnittlich" + +#: ../gtk/incall_view.c:566 +msgid "poor" +msgstr "schlecht" + +#: ../gtk/incall_view.c:568 +msgid "very poor" +msgstr "sehr schlecht" + +#: ../gtk/incall_view.c:570 +msgid "too bad" +msgstr "zu schlecht" + +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 +msgid "unavailable" +msgstr "nicht verfügbar" + +#: ../gtk/incall_view.c:679 +msgid "Secured by SRTP" +msgstr "Gesichert durch SRTP" + +#: ../gtk/incall_view.c:685 +#, c-format +msgid "Secured by ZRTP - [auth token: %s]" +msgstr "Gesichert durch ZRTP - [Auth.-Token: %s]" + +#: ../gtk/incall_view.c:691 +msgid "Set unverified" +msgstr "Auf „Ungeprüft“ setzen" + +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +msgid "Set verified" +msgstr "Auf „Geprüft“ setzen" + +#: ../gtk/incall_view.c:722 +msgid "In conference" +msgstr "In Konferenz" + +#: ../gtk/incall_view.c:722 +msgid "In call" +msgstr "Im Gespräch" + +#: ../gtk/incall_view.c:758 +msgid "Paused call" +msgstr "Gehaltener Anruf" + +#: ../gtk/incall_view.c:771 +#, c-format +msgid "%02i::%02i::%02i" +msgstr "%02i::%02i::%02i" + +#: ../gtk/incall_view.c:794 +msgid "Call ended." +msgstr "Anruf beendet." + +#: ../gtk/incall_view.c:825 +msgid "Transfer in progress" +msgstr "Vermittlung läuft" + +#: ../gtk/incall_view.c:828 +msgid "Transfer done." +msgstr "Vermittlung abgeschlossen." + +#: ../gtk/incall_view.c:831 +msgid "Transfer failed." +msgstr "Vermittlung fehlgeschlagen." + +#: ../gtk/incall_view.c:875 +msgid "Resume" +msgstr "Fortsetzen" + +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +msgid "Pause" +msgstr "Halten" + +#: ../gtk/incall_view.c:948 +#, c-format +msgid "" +"Recording into\n" +"%s %s" +msgstr "Recording into\n%s %s" + +#: ../gtk/incall_view.c:948 +msgid "(Paused)" +msgstr "(pausiert)" + +#: ../gtk/loginframe.c:88 +#, c-format +msgid "Please enter login information for %s" +msgstr "Bitte geben Sie die Anmeldeinformationen für %s ein." + +#: ../gtk/config-fetching.c:57 +#, c-format +msgid "fetching from %s" +msgstr "abrufen von %s" + +#: ../gtk/config-fetching.c:73 +#, c-format +msgid "Downloading of remote configuration from %s failed." +msgstr "Herunterladen der Fernkonfiguration von %s fehlgeschlagen" + +#: ../gtk/audio_assistant.c:98 +msgid "No voice detected" +msgstr "Keine Stimme ermittelt" + +#: ../gtk/audio_assistant.c:99 +msgid "Too low" +msgstr "zu gering" + +#: ../gtk/audio_assistant.c:100 +msgid "Good" +msgstr "gut" + +#: ../gtk/audio_assistant.c:101 +msgid "Too loud" +msgstr "zu laut" + +#: ../gtk/audio_assistant.c:318 +msgid "" +"Welcome !\n" +"This assistant will help you to configure audio settings for Linphone" +msgstr "Willkommen!\nDieser Assistent wird Ihnen dabei helfen, die Audio-Einstellungen für Linphone vorzunehmen." + +#: ../gtk/audio_assistant.c:328 +msgid "Capture device" +msgstr "Aufnahmegerät" + +#: ../gtk/audio_assistant.c:329 +msgid "Recorded volume" +msgstr "aufgenommene Lautstärke" + +#: ../gtk/audio_assistant.c:333 +msgid "No voice" +msgstr "Keine Stimme" + +#: ../gtk/audio_assistant.c:369 +msgid "Playback device" +msgstr "Wiedergabegerät" + +#: ../gtk/audio_assistant.c:370 +msgid "Play three beeps" +msgstr "spiele drei Pieptöne ab" + +#: ../gtk/audio_assistant.c:403 +msgid "Press the record button and say some words" +msgstr "Drücken Sie den Aufnahmeknopf und sagen Sie etwas" + +#: ../gtk/audio_assistant.c:404 +msgid "Listen to your record voice" +msgstr "Hören Sie das Aufgenommene" + +#: ../gtk/audio_assistant.c:433 +msgid "Let's start Linphone now" +msgstr "Linphone jetzt starten" + +#: ../gtk/audio_assistant.c:496 +msgid "Audio Assistant" +msgstr "Audio-Assistant" + +#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +msgid "Audio assistant" +msgstr "Audio-Assistant" + +#: ../gtk/audio_assistant.c:511 +msgid "Mic Gain calibration" +msgstr "Einrichtung MIkrofonverstärker" + +#: ../gtk/audio_assistant.c:517 +msgid "Speaker volume calibration" +msgstr "Einrichtung Lautstärke" + +#: ../gtk/audio_assistant.c:522 +msgid "Record and Play" +msgstr "aufnehmen und abspielen" + +#: ../gtk/main.ui.h:1 +msgid "Callee name" +msgstr "Name des Angerufenen" + +#: ../gtk/main.ui.h:2 +msgid "Send" +msgstr "Senden" + +#: ../gtk/main.ui.h:3 +msgid "End conference" +msgstr "Konferenz beenden" + +#: ../gtk/main.ui.h:7 +msgid "Record this call to an audio file" +msgstr "Speichere den Anruf in eine Audio-Datei" + +#: ../gtk/main.ui.h:8 +msgid "Video" +msgstr "Video" + +#: ../gtk/main.ui.h:10 +msgid "Mute" +msgstr "Stumm" + +#: ../gtk/main.ui.h:11 +msgid "Transfer" +msgstr "Vermittlung" + +#: ../gtk/main.ui.h:14 +msgid "In call" +msgstr "Im Gespräch" + +#: ../gtk/main.ui.h:15 +msgid "Duration" +msgstr "Dauer" + +#: ../gtk/main.ui.h:16 +msgid "Call quality rating" +msgstr "Bewertung der Verbindungsqualität" + +#: ../gtk/main.ui.h:17 +msgid "All users" +msgstr "Alle Teilnehmer" + +#: ../gtk/main.ui.h:18 +msgid "Online users" +msgstr "Angemeldete Teilnehmer" + +#: ../gtk/main.ui.h:19 +msgid "ADSL" +msgstr "ADSL" + +#: ../gtk/main.ui.h:20 +msgid "Fiber Channel" +msgstr "Glasfaserkabel" + +#: ../gtk/main.ui.h:21 +msgid "Default" +msgstr "Vorgabe" + +#: ../gtk/main.ui.h:22 +msgid "_Options" +msgstr "_Optionen" + +#: ../gtk/main.ui.h:23 +msgid "Set configuration URI" +msgstr "Konfigurations URI angeben" + +#: ../gtk/main.ui.h:24 +msgid "Always start video" +msgstr "Video immer starten" + +#: ../gtk/main.ui.h:25 +msgid "Enable self-view" +msgstr "Selbstansicht ein" + +#: ../gtk/main.ui.h:26 +msgid "_Help" +msgstr "_Hilfe" + +#: ../gtk/main.ui.h:27 +msgid "Show debug window" +msgstr "Debug-Fenster anzeigen" + +#: ../gtk/main.ui.h:28 +msgid "_Homepage" +msgstr "_Homepage" + +#: ../gtk/main.ui.h:29 +msgid "Check _Updates" +msgstr "Auf _Aktualisierungen überprüfen" + +#: ../gtk/main.ui.h:30 +msgid "Account assistant" +msgstr "Konto-Einrichtungsassistent" + +#: ../gtk/main.ui.h:32 +msgid "SIP address or phone number:" +msgstr "SIP-Adresse oder Telefonnummer:" + +#: ../gtk/main.ui.h:33 +msgid "Initiate a new call" +msgstr "Einen neuen Anruf beginnen" + +#: ../gtk/main.ui.h:34 +msgid "Contacts" +msgstr "Kontakte" + +#: ../gtk/main.ui.h:35 +msgid "Search" +msgstr "Suchen" + +#: ../gtk/main.ui.h:36 +msgid "Add contacts from directory" +msgstr "Kontakte aus einem Verzeichnis hinzufügen" + +#: ../gtk/main.ui.h:37 +msgid "Add contact" +msgstr "Kontakt hinzufügen" + +#: ../gtk/main.ui.h:38 +msgid "Recent calls" +msgstr "Letzte Gespräche" + +#: ../gtk/main.ui.h:39 +msgid "My current identity:" +msgstr "Aktuelle Identität:" + +#: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 +msgid "Username" +msgstr "Benutzername" + +#: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 +msgid "Password" +msgstr "Passwort" + +#: ../gtk/main.ui.h:42 +msgid "Internet connection:" +msgstr "Internetverbindung:" + +#: ../gtk/main.ui.h:43 +msgid "Automatically log me in" +msgstr "Automatisch anmelden" + +#: ../gtk/main.ui.h:44 ../gtk/password.ui.h:3 +msgid "UserID" +msgstr "Benutzer-ID" + +#: ../gtk/main.ui.h:45 +msgid "Login information" +msgstr "Anmeldeinformationen" + +#: ../gtk/main.ui.h:46 +msgid "Welcome !" +msgstr "Willkommen !" + +#: ../gtk/main.ui.h:47 +msgid "Delete" +msgstr "Löschen" + +#: ../gtk/about.ui.h:1 +msgid "About linphone" +msgstr "Über Linphone" + +#: ../gtk/about.ui.h:2 +msgid "(C) Belledonne Communications,2010\n" +msgstr "(C) Belledonne Communications,2010\n" + +#: ../gtk/about.ui.h:4 +msgid "An internet video phone using the standard SIP (rfc3261) protocol." +msgstr "Ein Internet-Video-Telefon, das das Standard-SIP-Protokoll (RFC3261) verwendet." + +#: ../gtk/about.ui.h:5 +msgid "" +"fr: Simon Morlat\n" +"en: Simon Morlat and Delphine Perreau\n" +"it: Alberto Zanoni \n" +"de: Jean-Jacques Sarton \n" +"sv: Daniel Nylander \n" +"es: Jesus Benitez \n" +"ja: YAMAGUCHI YOSHIYA \n" +"pt_BR: Rafael Caesar Lenzi \n" +"pl: Robert Nasiadek \n" +"cs: Petr Pisar \n" +"hu: anonymous\n" +"he: Eli Zaretskii \n" +msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n" + +#: ../gtk/contact.ui.h:2 +msgid "SIP Address" +msgstr "SIP-Adresse" + +#: ../gtk/contact.ui.h:3 +msgid "Show this contact presence status" +msgstr "Anwesenheitsstatus dieses Kontakts zeigen" + +#: ../gtk/contact.ui.h:4 +msgid "Allow this contact to see my presence status" +msgstr "Diesem Kontakt erlauben, meinen Anwesenheitsstatus zu sehen" + +#: ../gtk/contact.ui.h:5 +msgid "Contact information" +msgstr "Kontaktinformationen" + +#: ../gtk/log.ui.h:1 +msgid "Linphone debug window" +msgstr "Linphone Debug-Fenster" + +#: ../gtk/log.ui.h:2 +msgid "Scroll to end" +msgstr "Ans Ende rollen" + +#: ../gtk/password.ui.h:1 +msgid "Linphone - Authentication required" +msgstr "Linphone - Authentifikation erforderlich" + +#: ../gtk/password.ui.h:2 +msgid "Please enter the domain password" +msgstr "Bitte das Passwort der Domäne eingeben" + +#: ../gtk/call_logs.ui.h:1 +msgid "Call history" +msgstr "Anrufchronik" + +#: ../gtk/call_logs.ui.h:2 +msgid "Clear all" +msgstr "Alle löschen" + +#: ../gtk/call_logs.ui.h:3 +msgid "Call back" +msgstr "Anrufen" + +#: ../gtk/sip_account.ui.h:1 +msgid "Linphone - Configure a SIP account" +msgstr "Linphone - SIP-Konto einrichten" + +#: ../gtk/sip_account.ui.h:2 +msgid "Your SIP identity:" +msgstr "Ihre SIP-Identität:" + +#: ../gtk/sip_account.ui.h:3 +msgid "Looks like sip:@" +msgstr "Sieht aus wie sip:@" + +#: ../gtk/sip_account.ui.h:4 +msgid "sip:" +msgstr "sip:" + +#: ../gtk/sip_account.ui.h:5 +msgid "SIP Proxy address:" +msgstr "SIP-Proxy-Adresse:" + +#: ../gtk/sip_account.ui.h:6 +msgid "Looks like sip:" +msgstr "Sieht aus wie sip:" + +#: ../gtk/sip_account.ui.h:7 +msgid "Registration duration (sec):" +msgstr "Registrierungsdauer (sec):" + +#: ../gtk/sip_account.ui.h:8 +msgid "Contact params (optional):" +msgstr "Kontaktdetails (optional)" + +#: ../gtk/sip_account.ui.h:9 +msgid "AVPF regular RTCP interval (sec):" +msgstr "AVPF Standard RTCP Interval (sek):" + +#: ../gtk/sip_account.ui.h:10 +msgid "Route (optional):" +msgstr "Route (optional):" + +#: ../gtk/sip_account.ui.h:11 +msgid "Transport" +msgstr "Übertragung" + +#: ../gtk/sip_account.ui.h:12 +msgid "Register" +msgstr "Registrieren" + +#: ../gtk/sip_account.ui.h:13 +msgid "Publish presence information" +msgstr "Anwesenheitsstatus veröffentlichen" + +#: ../gtk/sip_account.ui.h:14 +msgid "Enable AVPF" +msgstr "Aktiviere AVPF" + +#: ../gtk/sip_account.ui.h:15 +msgid "Configure a SIP account" +msgstr "SIP-Konto einrichten" + +#: ../gtk/parameters.ui.h:1 +msgid "anonymous" +msgstr "Anonym" + +#: ../gtk/parameters.ui.h:2 +msgid "GSSAPI" +msgstr "GSSAPI" + +#: ../gtk/parameters.ui.h:3 +msgid "SASL" +msgstr "SASL" + +#: ../gtk/parameters.ui.h:4 +msgid "default soundcard" +msgstr "Standard-Soundkarte" + +#: ../gtk/parameters.ui.h:5 +msgid "a sound card" +msgstr "eine Soundkarte" + +#: ../gtk/parameters.ui.h:6 +msgid "default camera" +msgstr "Standard-Kamera" + +#: ../gtk/parameters.ui.h:7 +msgid "CIF" +msgstr "CIF" + +#: ../gtk/parameters.ui.h:8 +msgid "Audio codecs" +msgstr "Audio-Codecs" + +#: ../gtk/parameters.ui.h:9 +msgid "Video codecs" +msgstr "Video-Codecs" + +#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +msgid "C" +msgstr "C" + +#: ../gtk/parameters.ui.h:11 +msgid "SIP (UDP)" +msgstr "SIP (UDP)" + +#: ../gtk/parameters.ui.h:12 +msgid "SIP (TCP)" +msgstr "SIP (TCP)" + +#: ../gtk/parameters.ui.h:13 +msgid "SIP (TLS)" +msgstr "SIP (TLS)" + +#: ../gtk/parameters.ui.h:14 +msgid "Settings" +msgstr "Einstellungen" + +#: ../gtk/parameters.ui.h:15 +msgid "Set Maximum Transmission Unit:" +msgstr "Maximum Transmission Unit setzen:" + +#: ../gtk/parameters.ui.h:16 +msgid "Send DTMFs as SIP info" +msgstr "DTMFs als SIP-Info senden" + +#: ../gtk/parameters.ui.h:17 +msgid "Use IPv6 instead of IPv4" +msgstr "IPv6 statt IPv4 verwenden" + +#: ../gtk/parameters.ui.h:18 +msgid "Transport" +msgstr "Übertragung" + +#: ../gtk/parameters.ui.h:19 +msgid "Media encryption type" +msgstr "Verschlüsselungstyp der Medien" + +#: ../gtk/parameters.ui.h:20 +msgid "Video RTP/UDP:" +msgstr "Video RTP/UDP:" + +#: ../gtk/parameters.ui.h:21 +msgid "Audio RTP/UDP:" +msgstr "Audio RTP/UDP:" + +#: ../gtk/parameters.ui.h:22 +msgid "Fixed" +msgstr "Fest" + +#: ../gtk/parameters.ui.h:23 +msgid "Media encryption is mandatory" +msgstr "Medienverschlüsselung erzwingen" + +#: ../gtk/parameters.ui.h:24 +msgid "Tunnel" +msgstr "Tunnel" + +#: ../gtk/parameters.ui.h:25 +msgid "DSCP fields" +msgstr "DSCP-Felder" + +#: ../gtk/parameters.ui.h:26 +msgid "SIP/TCP port" +msgstr "SIP/TCP Port" + +#: ../gtk/parameters.ui.h:27 +msgid "SIP/UDP port" +msgstr "SIP/UDP Port" + +#: ../gtk/parameters.ui.h:28 +msgid "Network protocol and ports" +msgstr "Netzwerkprotokoll und Ports" + +#: ../gtk/parameters.ui.h:29 +msgid "Direct connection to the Internet" +msgstr "Direkte Verbindung ins Internet" + +#: ../gtk/parameters.ui.h:30 +msgid "Behind NAT / Firewall (specify gateway IP )" +msgstr "Hinter NAT / Firewall (Gateway IP angeben)" + +#: ../gtk/parameters.ui.h:31 +msgid "Behind NAT / Firewall (use STUN to resolve)" +msgstr "Hinter NAT / Firewall (STUN verwenden)" + +#: ../gtk/parameters.ui.h:32 +msgid "Behind NAT / Firewall (use ICE)" +msgstr "Hinter NAT / Firewall (ICE verwenden)" + +#: ../gtk/parameters.ui.h:33 +msgid "Behind NAT / Firewall (use uPnP)" +msgstr "Hinter NAT / Firewall (uPnP verwenden)" + +#: ../gtk/parameters.ui.h:34 +msgid "Public IP address:" +msgstr "Öffentliche IP-Adresse:" + +#: ../gtk/parameters.ui.h:35 +msgid "Stun server:" +msgstr "STUN-Server:" + +#: ../gtk/parameters.ui.h:36 +msgid "NAT and Firewall" +msgstr "NAT und Firewall" + +#: ../gtk/parameters.ui.h:37 +msgid "Network settings" +msgstr "Netzwerkeinstellungen" + +#: ../gtk/parameters.ui.h:38 +msgid "Ring sound:" +msgstr "Klingelton:" + +#: ../gtk/parameters.ui.h:39 +msgid "ALSA special device (optional):" +msgstr "Spezielles ALSA-Gerät (optional):" + +#: ../gtk/parameters.ui.h:40 +msgid "Capture device:" +msgstr "Aufnahmegerät:" + +#: ../gtk/parameters.ui.h:41 +msgid "Ring device:" +msgstr "Gerät für Klingelton:" + +#: ../gtk/parameters.ui.h:42 +msgid "Playback device:" +msgstr "Wiedergabegerät:" + +#: ../gtk/parameters.ui.h:43 +msgid "Enable echo cancellation" +msgstr "Echounterdrückung ein" + +#: ../gtk/parameters.ui.h:44 +msgid "Audio" +msgstr "Audio" + +#: ../gtk/parameters.ui.h:45 +msgid "Video input device:" +msgstr "Video-Aufnahmegerät:" + +#: ../gtk/parameters.ui.h:46 +msgid "Prefered video resolution:" +msgstr "Bevorzugte Video-Auflösung:" + +#: ../gtk/parameters.ui.h:47 +msgid "Video output method:" +msgstr "Methode zur Videoausgabe" + +#: ../gtk/parameters.ui.h:48 +msgid "Video" +msgstr "Video" + +#: ../gtk/parameters.ui.h:49 +msgid "Multimedia settings" +msgstr "Multimedia-Einstellungen" + +#: ../gtk/parameters.ui.h:50 +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 +msgid "Your display name (eg: John Doe):" +msgstr "Ihr angezeigter Name (z. B. Heinz Müller):" + +#: ../gtk/parameters.ui.h:52 +msgid "Your username:" +msgstr "Ihr Benutzername:" + +#: ../gtk/parameters.ui.h:53 +msgid "Your resulting SIP address:" +msgstr "Sich ergebende SIP-Adresse:" + +#: ../gtk/parameters.ui.h:54 +msgid "Default identity" +msgstr "Standard-Identität" + +#: ../gtk/parameters.ui.h:55 +msgid "Wizard" +msgstr "Assistent" + +#: ../gtk/parameters.ui.h:56 +msgid "Add" +msgstr "Hinzufügen" + +#: ../gtk/parameters.ui.h:57 +msgid "Edit" +msgstr "Bearbeiten" + +#: ../gtk/parameters.ui.h:58 +msgid "Remove" +msgstr "Entfernen" + +#: ../gtk/parameters.ui.h:59 +msgid "Proxy accounts" +msgstr "Proxy-Konten" + +#: ../gtk/parameters.ui.h:60 +msgid "Erase all passwords" +msgstr "Alle Passwörter löschen" + +#: ../gtk/parameters.ui.h:61 +msgid "Privacy" +msgstr "Privatsphäre" + +#: ../gtk/parameters.ui.h:62 +msgid "Manage SIP Accounts" +msgstr "SIP-Konten verwalten" + +#: ../gtk/parameters.ui.h:63 ../gtk/tunnel_config.ui.h:4 +msgid "Enable" +msgstr "Freigeben" + +#: ../gtk/parameters.ui.h:64 ../gtk/tunnel_config.ui.h:5 +msgid "Disable" +msgstr "Sperren" + +#: ../gtk/parameters.ui.h:65 +msgid "Codecs" +msgstr "Codecs" + +#: ../gtk/parameters.ui.h:66 +msgid "0 stands for \"unlimited\"" +msgstr "0 bedeutet „unbegrenzt“" + +#: ../gtk/parameters.ui.h:67 +msgid "Upload speed limit in Kbit/sec:" +msgstr "Upload-Bandbreite (kbit/sec):" + +#: ../gtk/parameters.ui.h:68 +msgid "Download speed limit in Kbit/sec:" +msgstr "Download-Bandbreite (kbit/sec):" + +#: ../gtk/parameters.ui.h:69 +msgid "Enable adaptive rate control" +msgstr "Adaptive Ratenregelung ein" + +#: ../gtk/parameters.ui.h:70 +msgid "" +"Adaptive rate control is a technique to dynamically guess the available " +"bandwidth during a call." +msgstr "Adaptive Ratenregelung ist eine Technik zur dynamischen Abschätzung der zur Verfügung stehenden Bandbreite während eines Anrufs." + +#: ../gtk/parameters.ui.h:71 +msgid "Bandwidth control" +msgstr "Bandbreiten-Einstellungen" + +#: ../gtk/parameters.ui.h:72 +msgid "Codecs" +msgstr "Codecs" + +#: ../gtk/parameters.ui.h:73 +msgid "Language" +msgstr "Sprache" + +#: ../gtk/parameters.ui.h:74 +msgid "Show advanced settings" +msgstr "Fortgeschrittene Einstellungen anzeigen" + +#: ../gtk/parameters.ui.h:75 +msgid "Level" +msgstr "Detaillierung" + +#: ../gtk/parameters.ui.h:76 +msgid "User interface" +msgstr "Benutzeroberfläche" + +#: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 +msgid "Server address:" +msgstr "Server-Adresse" + +#: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 +msgid "Authentication method:" +msgstr "Authentifizierungsmethode" + +#: ../gtk/parameters.ui.h:80 +msgid "label" +msgstr "Hinweisschild" + +#: ../gtk/parameters.ui.h:81 +msgid "LDAP Account setup" +msgstr "LDAP-Kontoeinrichtung" + +#: ../gtk/parameters.ui.h:82 +msgid "LDAP" +msgstr "LDAP" + +#: ../gtk/parameters.ui.h:83 +msgid "Done" +msgstr "Fertig" + +#: ../gtk/buddylookup.ui.h:1 +msgid "Search contacts in directory" +msgstr "Kontakte im Verzeichnis suchen" + +#: ../gtk/buddylookup.ui.h:2 +msgid "Add to my list" +msgstr "Zur Kontaktliste hinzufügen" + +#: ../gtk/buddylookup.ui.h:3 +msgid "Search somebody" +msgstr "Kontaktsuche" + +#: ../gtk/waiting.ui.h:1 +msgid "Linphone" +msgstr "Linphone" + +#: ../gtk/waiting.ui.h:2 +msgid "Please wait" +msgstr "Bitte warten" + +#: ../gtk/dscp_settings.ui.h:1 +msgid "DSCP settings" +msgstr "DSCP-Einstellungen" + +#: ../gtk/dscp_settings.ui.h:2 +msgid "SIP" +msgstr "SIP" + +#: ../gtk/dscp_settings.ui.h:3 +msgid "Audio RTP stream" +msgstr "Audio-RTP-Datenstrom" + +#: ../gtk/dscp_settings.ui.h:4 +msgid "Video RTP stream" +msgstr "Video-RTP-Datenstrom" + +#: ../gtk/dscp_settings.ui.h:5 +msgid "Set DSCP values (in hexadecimal)" +msgstr "DSCP-Werte setzen (hexadezimal)" + +#: ../gtk/call_statistics.ui.h:1 +msgid "Call statistics" +msgstr "Anrufstatistik" + +#: ../gtk/call_statistics.ui.h:2 +msgid "Audio codec" +msgstr "Audio-Codec" + +#: ../gtk/call_statistics.ui.h:3 +msgid "Video codec" +msgstr "Video-Codec" + +#: ../gtk/call_statistics.ui.h:4 +msgid "Audio IP bandwidth usage" +msgstr "Genutzte IP-Bandbreite Audio" + +#: ../gtk/call_statistics.ui.h:5 +msgid "Audio Media connectivity" +msgstr "Audio-Konnektivität" + +#: ../gtk/call_statistics.ui.h:6 +msgid "Video IP bandwidth usage" +msgstr "Genutzte IP-Bandbreite Video" + +#: ../gtk/call_statistics.ui.h:7 +msgid "Video Media connectivity" +msgstr "Video-Konnektivität" + +#: ../gtk/call_statistics.ui.h:8 +msgid "Round trip time" +msgstr "Umlaufzeit" + +#: ../gtk/call_statistics.ui.h:9 +msgid "Video resolution received" +msgstr "Videoauflösung empfangen" + +#: ../gtk/call_statistics.ui.h:10 +msgid "Video resolution sent" +msgstr "Videoauflösung gesendet" + +#: ../gtk/call_statistics.ui.h:11 +msgid "RTP profile" +msgstr "RTP-Profil" + +#: ../gtk/call_statistics.ui.h:12 +msgid "Call statistics and information" +msgstr "Anrufstatistik und -informationen" + +#: ../gtk/tunnel_config.ui.h:1 +msgid "Configure VoIP tunnel" +msgstr "VoIP-Tunnel einrichten" + +#: ../gtk/tunnel_config.ui.h:2 +msgid "Host" +msgstr "Host" + +#: ../gtk/tunnel_config.ui.h:3 +msgid "Port" +msgstr "Port" + +#: ../gtk/tunnel_config.ui.h:6 +msgid "Configure tunnel" +msgstr "Tunnel einrichten" + +#: ../gtk/tunnel_config.ui.h:9 +msgid "Configure http proxy (optional)" +msgstr "Configure http proxy (optional)" + +#: ../gtk/keypad.ui.h:1 +msgid "D" +msgstr "D" + +#: ../gtk/keypad.ui.h:2 +msgid "#" +msgstr "#" + +#: ../gtk/keypad.ui.h:3 +msgid "0" +msgstr "0" + +#: ../gtk/keypad.ui.h:4 +msgid "*" +msgstr "*" + +#: ../gtk/keypad.ui.h:6 +msgid "9" +msgstr "9" + +#: ../gtk/keypad.ui.h:7 +msgid "8" +msgstr "8" + +#: ../gtk/keypad.ui.h:8 +msgid "7" +msgstr "7" + +#: ../gtk/keypad.ui.h:9 +msgid "B" +msgstr "B" + +#: ../gtk/keypad.ui.h:10 +msgid "6" +msgstr "6" + +#: ../gtk/keypad.ui.h:11 +msgid "5" +msgstr "5" + +#: ../gtk/keypad.ui.h:12 +msgid "4" +msgstr "4" + +#: ../gtk/keypad.ui.h:13 +msgid "A" +msgstr "A" + +#: ../gtk/keypad.ui.h:14 +msgid "3" +msgstr "3" + +#: ../gtk/keypad.ui.h:15 +msgid "2" +msgstr "2" + +#: ../gtk/keypad.ui.h:16 +msgid "1" +msgstr "1" + +#: ../gtk/ldap.ui.h:1 +msgid "LDAP Settings" +msgstr "LDAP-Einstellungen" + +#: ../gtk/ldap.ui.h:6 +msgid "Use TLS Connection" +msgstr "TLS-Verbindung verwenden" + +#: ../gtk/ldap.ui.h:7 +msgid "Not yet available" +msgstr "Aktuell nicht verfügbar" + +#: ../gtk/ldap.ui.h:8 +msgid "Connection" +msgstr "Verbindung" + +#: ../gtk/ldap.ui.h:9 +msgid "Bind DN" +msgstr "Bind-DN" + +#: ../gtk/ldap.ui.h:10 +msgid "Authname" +msgstr "Authentifizierungsname" + +#: ../gtk/ldap.ui.h:11 +msgid "Realm" +msgstr "Bereich" + +#: ../gtk/ldap.ui.h:12 +msgid "SASL" +msgstr "SASL" + +#: ../gtk/ldap.ui.h:13 +msgid "Base object:" +msgstr "Basis-Objekt:" + +#: ../gtk/ldap.ui.h:15 +#, no-c-format +msgid "Filter (%s for name):" +msgstr "Filter (%s nach Name):" + +#: ../gtk/ldap.ui.h:16 +msgid "Name Attribute:" +msgstr "Name:" + +#: ../gtk/ldap.ui.h:17 +msgid "SIP address attribute:" +msgstr "SIP-Adresse:" + +#: ../gtk/ldap.ui.h:18 +msgid "Attributes to query:" +msgstr "Sucheigenschaft:" + +#: ../gtk/ldap.ui.h:19 +msgid "Search" +msgstr "Suche" + +#: ../gtk/ldap.ui.h:20 +msgid "Timeout for search:" +msgstr "Zeitüberschreitung bei der Suche:" + +#: ../gtk/ldap.ui.h:21 +msgid "Max results:" +msgstr "Max Ergebnisse:" + +#: ../gtk/ldap.ui.h:22 +msgid "Follow Aliases" +msgstr "folge Pseudonymen" + +#: ../gtk/ldap.ui.h:23 +msgid "Miscellaneous" +msgstr "Sonstiges" + +#: ../gtk/ldap.ui.h:24 +msgid "ANONYMOUS" +msgstr "ANONYMOUS" + +#: ../gtk/ldap.ui.h:25 +msgid "SIMPLE" +msgstr "SIMPLE" + +#: ../gtk/ldap.ui.h:26 +msgid "DIGEST-MD5" +msgstr "DIGEST-MD5" + +#: ../gtk/ldap.ui.h:27 +msgid "NTLM" +msgstr "NTLM" + +#: ../gtk/config-uri.ui.h:1 +msgid "Specifying a remote configuration URI" +msgstr "Eine URI zur FErnkonfiguration angeben" + +#: ../gtk/config-uri.ui.h:2 +msgid "" +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " +msgstr "Diese Maske erlaubt Ihnen für das Laden der Konfiguration beim Programmstart eine http- oder https-Adresse anzugeben.\nBitte geben Sie unten die Konfigurations-URI ein oder ändern diese. Nach dem Bestätigen mit OK wird Linphone automatisch neustarten, um die neuen Einstellungen zu übernehmen." + +#: ../gtk/config-uri.ui.h:4 +msgid "https://" +msgstr "https://" + +#: ../gtk/provisioning-fetch.ui.h:1 +msgid "Configuring..." +msgstr "Einstellen..." + +#: ../gtk/provisioning-fetch.ui.h:2 +msgid "Please wait while fetching configuration from server..." +msgstr "Bitte warten Sie während die Einstellungen vom Server abgerufen werden..." + +#: ../coreapi/linphonecore.c:1511 +msgid "Ready" +msgstr "Bereit" + +#: ../coreapi/linphonecore.c:2470 +msgid "Configuring" +msgstr "Einstellen" + +#: ../coreapi/linphonecore.c:2635 +msgid "Looking for telephone number destination..." +msgstr "Telefonnummernziel wird gesucht..." + +#: ../coreapi/linphonecore.c:2637 +msgid "Could not resolve this number." +msgstr "Diese Nummer kann nicht aufgelöst werden." + +#. must be known at that time +#: ../coreapi/linphonecore.c:2919 +msgid "Contacting" +msgstr "Verbindungsaufbau" + +#: ../coreapi/linphonecore.c:2924 +msgid "Could not call" +msgstr "Anruf kann nicht getätigt werden." + +#: ../coreapi/linphonecore.c:3074 +msgid "Sorry, we have reached the maximum number of simultaneous calls" +msgstr "Die maximale Anzahl der gleichzeitigen Anrufe ist erreicht." + +#: ../coreapi/linphonecore.c:3233 +msgid "is contacting you" +msgstr "ruft Sie an" + +#: ../coreapi/linphonecore.c:3234 +msgid " and asked autoanswer." +msgstr " und fragt nach automatischer Antwort." + +#: ../coreapi/linphonecore.c:3234 +msgid "." +msgstr "." + +#: ../coreapi/linphonecore.c:3352 +msgid "Modifying call parameters..." +msgstr "Die Anrufparameter werden verändert..." + +#: ../coreapi/linphonecore.c:3700 +msgid "Connected." +msgstr "Verbunden." + +#: ../coreapi/linphonecore.c:3725 +msgid "Call aborted" +msgstr "Anruf abgebrochen" + +#: ../coreapi/linphonecore.c:3915 +msgid "Could not pause the call" +msgstr "Anruf kann nicht gehalten werden" + +#: ../coreapi/linphonecore.c:3919 +msgid "Pausing the current call..." +msgstr "Aktueller Anruf wird gehalten..." + +#: ../coreapi/misc.c:438 +msgid "Stun lookup in progress..." +msgstr "STUN-Ermittlung läuft..." + +#: ../coreapi/misc.c:619 +msgid "ICE local candidates gathering in progress..." +msgstr "Lokale Kandidaten für ICE werden zusammengestellt..." + +#: ../coreapi/friend.c:33 +msgid "Online" +msgstr "Angemeldet" + +#: ../coreapi/friend.c:36 +msgid "Busy" +msgstr "Besetzt" + +#: ../coreapi/friend.c:39 +msgid "Be right back" +msgstr "Bald wieder da" + +#: ../coreapi/friend.c:42 +msgid "Away" +msgstr "Abwesend" + +#: ../coreapi/friend.c:45 +msgid "On the phone" +msgstr "Im Gespräch" + +#: ../coreapi/friend.c:48 +msgid "Out to lunch" +msgstr "Beim Essen" + +#: ../coreapi/friend.c:51 +msgid "Do not disturb" +msgstr "Nicht stören" + +#: ../coreapi/friend.c:54 +msgid "Moved" +msgstr "Umgezogen" + +#: ../coreapi/friend.c:57 +msgid "Using another messaging service" +msgstr "Ein anderer Nachrichtendienst wird benutzt" + +#: ../coreapi/friend.c:60 +msgid "Offline" +msgstr "Abgemeldet" + +#: ../coreapi/friend.c:63 +msgid "Pending" +msgstr "Ausstehend" + +#: ../coreapi/friend.c:66 +msgid "Vacation" +msgstr "Urlaub" + +#: ../coreapi/friend.c:68 +msgid "Unknown-bug" +msgstr "Unbekannter Fehler" + +#: ../coreapi/proxy.c:319 +msgid "" +"The sip proxy address you entered is invalid, it must start with \"sip:\" " +"followed by a hostname." +msgstr "Die von Ihnen eingegebene SIP-Proxy-Adresse ist ungültig, sie muss mit „sip:“ gefolgt vom Hostnamen beginnen." + +#: ../coreapi/proxy.c:325 +msgid "" +"The sip identity you entered is invalid.\n" +"It should look like sip:username@proxydomain, such as sip:alice@example.net" +msgstr "Die von Ihnen eingegebene SIP-Identität ist ungültig.\nSie sollte wie sip:benutzername@proxydomain aussehen, also z.B. sip:alice@beispiel.net" + +#: ../coreapi/proxy.c:1377 +#, c-format +msgid "Could not login as %s" +msgstr "Anmeldung als %s fehlgeschlagen" + +#: ../coreapi/callbacks.c:383 +msgid "Remote ringing." +msgstr "Klingeln bei der Gegenseite." + +#: ../coreapi/callbacks.c:404 +msgid "Remote ringing..." +msgstr "Klingeln bei der Gegenseite..." + +#: ../coreapi/callbacks.c:414 +msgid "Early media." +msgstr "nicht kompatibel, prüfe Codecs oder Sicherheitseinstellungen..." + +#: ../coreapi/callbacks.c:475 +#, c-format +msgid "Call with %s is paused." +msgstr "Anruf mit %s wird gehalten." + +#: ../coreapi/callbacks.c:488 +#, c-format +msgid "Call answered by %s - on hold." +msgstr "Der von %s entgegengenommene Anruf wird gehalten." + +#: ../coreapi/callbacks.c:498 +msgid "Call resumed." +msgstr "Anruf fortgesetzt." + +#: ../coreapi/callbacks.c:502 +#, c-format +msgid "Call answered by %s." +msgstr "Anruf wird von %s entgegengenommen." + +#: ../coreapi/callbacks.c:525 +msgid "Incompatible, check codecs or security settings..." +msgstr "Inkompatibel, prüfe Codecs oder Sicherheitseinstellungen..." + +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "Inkompatible Medienparameter." + +#: ../coreapi/callbacks.c:560 +msgid "We have been resumed." +msgstr "Anruf wird fortgesetzt." + +#. we are being paused +#: ../coreapi/callbacks.c:568 +msgid "We are paused by other party." +msgstr "Anruf wird von der Gegenseite gehalten." + +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 +msgid "Call is updated by remote." +msgstr "Anruf ist von der Gegenseite aktualisiert worden." + +#: ../coreapi/callbacks.c:705 +msgid "Call terminated." +msgstr "Anruf beendet." + +#: ../coreapi/callbacks.c:733 +msgid "User is busy." +msgstr "Teilnehmer ist besetzt." + +#: ../coreapi/callbacks.c:734 +msgid "User is temporarily unavailable." +msgstr "Teilnehmer zur Zeit nicht verfügbar." + +#. char *retrymsg=_("%s. Retry after %i minute(s)."); +#: ../coreapi/callbacks.c:736 +msgid "User does not want to be disturbed." +msgstr "Teilnehmer möchte nicht gestört werden." + +#: ../coreapi/callbacks.c:737 +msgid "Call declined." +msgstr "Anruf abgewiesen" + +#: ../coreapi/callbacks.c:752 +msgid "Request timeout." +msgstr "Zeitüberschreitung bei der Anfrage" + +#: ../coreapi/callbacks.c:780 +msgid "Redirected" +msgstr "Umgeleitet" + +#: ../coreapi/callbacks.c:835 +msgid "Call failed." +msgstr "Anruf fehlgeschlagen." + +#: ../coreapi/callbacks.c:913 +#, c-format +msgid "Registration on %s successful." +msgstr "Registrierung auf %s erfolgreich." + +#: ../coreapi/callbacks.c:914 +#, c-format +msgid "Unregistration on %s done." +msgstr "Abmeldung von %s ist erfolgt." + +#: ../coreapi/callbacks.c:932 +msgid "no response timeout" +msgstr "Zeitüberschreitung bei der Antwort" + +#: ../coreapi/callbacks.c:935 +#, c-format +msgid "Registration on %s failed: %s" +msgstr "Registrierung auf %s fehlgeschlagen: %s" + +#: ../coreapi/callbacks.c:942 +msgid "Service unavailable, retrying" +msgstr "Service nicht verfügbar, versuche erneut" + +#: ../coreapi/linphonecall.c:174 +#, c-format +msgid "Authentication token is %s" +msgstr "Authentifizierungs-Token ist %s" + +#: ../coreapi/linphonecall.c:3020 +#, 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." diff --git a/po/he.po b/po/he.po index a574873b0..6a1730255 100644 --- a/po/he.po +++ b/po/he.po @@ -4,14 +4,15 @@ # # Translators: # Eli Zaretskii , 2012 +# GenghisKhan , 2014 # GenghisKhan , 2012-2013 msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" -"PO-Revision-Date: 2014-11-19 10:08+0000\n" -"Last-Translator: Cqnqrd \n" +"PO-Revision-Date: 2014-11-24 10:22+0000\n" +"Last-Translator: GenghisKhan \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/linphone-gtk/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -151,7 +152,7 @@ msgstr "‫%s מעוניין להוסיפך אל רשימת אנשי הקשר ש msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "" +msgstr "אנא הזן סיסמה עבור משתמש %s\nבמתחם %s:" #: ../gtk/main.c:1283 msgid "Call error" @@ -754,15 +755,15 @@ msgstr "" #: ../gtk/audio_assistant.c:99 msgid "Too low" -msgstr "" +msgstr "נמוך מדי" #: ../gtk/audio_assistant.c:100 msgid "Good" -msgstr "" +msgstr "טוב" #: ../gtk/audio_assistant.c:101 msgid "Too loud" -msgstr "" +msgstr "חזק מדי" #: ../gtk/audio_assistant.c:318 msgid "" @@ -772,7 +773,7 @@ msgstr "" #: ../gtk/audio_assistant.c:328 msgid "Capture device" -msgstr "" +msgstr "התקן לכידה" #: ../gtk/audio_assistant.c:329 msgid "Recorded volume" @@ -780,15 +781,15 @@ msgstr "" #: ../gtk/audio_assistant.c:333 msgid "No voice" -msgstr "" +msgstr "אין קול" #: ../gtk/audio_assistant.c:369 msgid "Playback device" -msgstr "" +msgstr "התקן השמעה" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" -msgstr "" +msgstr "נגן שלושה צפצופים" #: ../gtk/audio_assistant.c:403 msgid "Press the record button and say some words" @@ -800,7 +801,7 @@ msgstr "" #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" -msgstr "" +msgstr "הבא נתחיל את Linphone עכשיו" #: ../gtk/audio_assistant.c:496 msgid "Audio Assistant" @@ -1096,7 +1097,7 @@ msgstr "ניתוב (רשות):" #: ../gtk/sip_account.ui.h:11 msgid "Transport" -msgstr "" +msgstr "טרנספורט" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1108,7 +1109,7 @@ msgstr "פרסם מידע נוכחות" #: ../gtk/sip_account.ui.h:14 msgid "Enable AVPF" -msgstr "" +msgstr "אפשר AVPF" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1466,7 +1467,7 @@ msgstr "נא להמתין" #: ../gtk/dscp_settings.ui.h:1 msgid "DSCP settings" -msgstr "" +msgstr "אפשרויות DSCP" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1667,7 +1668,7 @@ msgstr "" #: ../gtk/ldap.ui.h:19 msgid "Search" -msgstr "" +msgstr "חיפוש" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1683,7 +1684,7 @@ msgstr "" #: ../gtk/ldap.ui.h:23 msgid "Miscellaneous" -msgstr "" +msgstr "שונות" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" diff --git a/po/ja.po b/po/ja.po index 87ead9898..5a48f3008 100644 --- a/po/ja.po +++ b/po/ja.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Alexander, 2014 msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" -"PO-Revision-Date: 2014-11-19 10:08+0000\n" -"Last-Translator: Cqnqrd \n" +"PO-Revision-Date: 2014-11-26 14:34+0000\n" +"Last-Translator: Alexander\n" "Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,72 +21,72 @@ msgstr "" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format msgid "Call %s" -msgstr "" +msgstr "%s 呼出中" #: ../gtk/calllogs.c:149 ../gtk/friendlist.c:975 #, c-format msgid "Send text to %s" -msgstr "" +msgstr "%s にテキストを送信" #: ../gtk/calllogs.c:232 #, c-format msgid "Recent calls (%i)" -msgstr "" +msgstr "通話時間 (%i)" #: ../gtk/calllogs.c:314 msgid "n/a" -msgstr "" +msgstr "n/a" #: ../gtk/calllogs.c:317 msgid "Aborted" -msgstr "" +msgstr "中断" #: ../gtk/calllogs.c:320 msgid "Missed" -msgstr "" +msgstr "失敗" #: ../gtk/calllogs.c:323 msgid "Declined" -msgstr "" +msgstr "辞退" #: ../gtk/calllogs.c:329 #, c-format msgid "%i minute" msgid_plural "%i minutes" -msgstr[0] "" +msgstr[0] "%i 分" #: ../gtk/calllogs.c:332 #, c-format msgid "%i second" msgid_plural "%i seconds" -msgstr[0] "" +msgstr[0] "%i 秒" #: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 #, c-format msgid "%s\t%s" -msgstr "" +msgstr "%s⇥%s" #: ../gtk/calllogs.c:337 #, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "" +msgstr "%s品質: %s\n%s⇥%s⇥" #: ../gtk/calllogs.c:343 #, c-format msgid "" "%s\t\n" "%s" -msgstr "" +msgstr "%s⇥\n%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" -msgstr "" +msgstr "会議" #: ../gtk/conference.c:46 msgid "Me" -msgstr "" +msgstr "自分" #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102 #, c-format @@ -94,45 +95,45 @@ msgstr "pixmapファイルが見つかりません %s" #: ../gtk/chat.c:364 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" -msgstr "" +msgstr "無効なSIP接続です!" #: ../gtk/main.c:107 msgid "log to stdout some debug information while running." -msgstr "" +msgstr "実行中にいくつかのデバッグ情報をstdoutに送信します。" #: ../gtk/main.c:114 msgid "path to a file to write logs into." -msgstr "" +msgstr "ログを書き込むファイルへのパス。" #: ../gtk/main.c:121 msgid "Start linphone with video disabled." -msgstr "" +msgstr "ビデオを無効にしてLinphoneを開始します。" #: ../gtk/main.c:128 msgid "Start only in the system tray, do not show the main interface." -msgstr "" +msgstr "主なインターフェイスを表示しないでシステムトレイに移動します。" #: ../gtk/main.c:135 msgid "address to call right now" -msgstr "" +msgstr "今すぐに呼び出す" #: ../gtk/main.c:142 msgid "if set automatically answer incoming calls" -msgstr "" +msgstr "着信呼び出しが設定されている場合自動的に応答する" #: ../gtk/main.c:149 msgid "" "Specifiy a working directory (should be the base of the installation, eg: " "c:\\Program Files\\Linphone)" -msgstr "" +msgstr "作業ディレクトリをSpecifiy (インストールした時のベースである必要があります。例:c:\\Program Files\\Linphone)" #: ../gtk/main.c:156 msgid "Configuration file" -msgstr "" +msgstr "設定ファイル" #: ../gtk/main.c:163 msgid "Run the audio assistant" -msgstr "" +msgstr "オーディオアシスタントを実行" #: ../gtk/main.c:1085 #, c-format @@ -140,7 +141,7 @@ 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" "If you answer no, this person will be temporarily blacklisted." -msgstr "" +msgstr "%s が連絡相手にあなたを追加しようとしています。\nあなたのステータスを参照させるか、もしくは連絡先リストに追加することができます。\nあなたが拒否すると、この人は一時的にブラックリストへ登録されます。" #: ../gtk/main.c:1162 #, c-format @@ -151,32 +152,32 @@ msgstr "" #: ../gtk/main.c:1283 msgid "Call error" -msgstr "" +msgstr "呼出エラー" #: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 msgid "Call ended" -msgstr "" +msgstr "呼出終了" #: ../gtk/main.c:1289 msgid "Incoming call" -msgstr "" +msgstr "着信" #: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" -msgstr "" +msgstr "応答" #: ../gtk/main.c:1293 ../gtk/main.ui.h:6 msgid "Decline" -msgstr "" +msgstr "拒否" #: ../gtk/main.c:1299 msgid "Call paused" -msgstr "" +msgstr "呼び出しの一時停止" #: ../gtk/main.c:1299 #, c-format msgid "by %s" -msgstr "" +msgstr "%s" #: ../gtk/main.c:1366 #, c-format @@ -185,21 +186,21 @@ msgstr "" #: ../gtk/main.c:1528 msgid "Website link" -msgstr "" +msgstr "ウェブサイトリンク" #: ../gtk/main.c:1577 msgid "Linphone - a video internet phone" -msgstr "" +msgstr "Linphone - ビデオインターネット電話" #: ../gtk/main.c:1669 #, c-format msgid "%s (Default)" -msgstr "" +msgstr "%s (デフォルト)" #: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 #, c-format msgid "We are transferred to %s" -msgstr "" +msgstr "%s に転送しました" #: ../gtk/main.c:2016 msgid "" @@ -209,15 +210,15 @@ msgstr "" #: ../gtk/main.c:2157 msgid "A free SIP video-phone" -msgstr "" +msgstr "無料 SIP ビデオ-電話" #: ../gtk/friendlist.c:505 msgid "Add to addressbook" -msgstr "" +msgstr "電話帳に追加する" #: ../gtk/friendlist.c:691 msgid "Presence status" -msgstr "" +msgstr "状態のステータス" #: ../gtk/friendlist.c:709 ../gtk/propertybox.c:552 ../gtk/contact.ui.h:1 msgid "Name" @@ -225,31 +226,31 @@ msgstr "名前" #: ../gtk/friendlist.c:721 msgid "Call" -msgstr "" +msgstr "通話" #: ../gtk/friendlist.c:726 msgid "Chat" -msgstr "" +msgstr "チャット" #: ../gtk/friendlist.c:756 #, c-format msgid "Search in %s directory" -msgstr "" +msgstr "%s のディレクトリ内を検索" #: ../gtk/friendlist.c:976 #, c-format msgid "Edit contact '%s'" -msgstr "" +msgstr "'%s' の連絡先を編集" #: ../gtk/friendlist.c:977 #, c-format msgid "Delete contact '%s'" -msgstr "" +msgstr "'%s' の連絡先を削除" #: ../gtk/friendlist.c:978 #, c-format msgid "Delete chat history of '%s'" -msgstr "" +msgstr "'%s' のチャット履歴を削除" #: ../gtk/friendlist.c:1029 #, c-format @@ -258,7 +259,7 @@ msgstr "" #: ../gtk/propertybox.c:558 msgid "Rate (Hz)" -msgstr "" +msgstr "レート (Hz)" #: ../gtk/propertybox.c:564 msgid "Status" @@ -266,7 +267,7 @@ msgstr "状態" #: ../gtk/propertybox.c:570 msgid "IP Bitrate (kbit/s)" -msgstr "" +msgstr "IP ビットレート (kbit/s)" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -282,11 +283,11 @@ msgstr "使用しない" #: ../gtk/propertybox.c:809 msgid "Account" -msgstr "" +msgstr "アカウント" #: ../gtk/propertybox.c:1072 msgid "English" -msgstr "" +msgstr "English" #: ../gtk/propertybox.c:1073 msgid "French" @@ -294,31 +295,31 @@ msgstr "Français" #: ../gtk/propertybox.c:1074 msgid "Swedish" -msgstr "" +msgstr "Svenska" #: ../gtk/propertybox.c:1075 msgid "Italian" -msgstr "" +msgstr "Italiano" #: ../gtk/propertybox.c:1076 msgid "Spanish" -msgstr "" +msgstr "Español" #: ../gtk/propertybox.c:1077 msgid "Brazilian Portugese" -msgstr "" +msgstr "Português do Brasil" #: ../gtk/propertybox.c:1078 msgid "Polish" -msgstr "" +msgstr "Polski" #: ../gtk/propertybox.c:1079 msgid "German" -msgstr "" +msgstr "Deutsch" #: ../gtk/propertybox.c:1080 msgid "Russian" -msgstr "" +msgstr "Pусский" #: ../gtk/propertybox.c:1081 msgid "Japanese" @@ -326,7 +327,7 @@ msgstr "日本語" #: ../gtk/propertybox.c:1082 msgid "Dutch" -msgstr "" +msgstr "Nederlands" #: ../gtk/propertybox.c:1083 msgid "Hungarian" @@ -342,87 +343,87 @@ msgstr "简体中文" #: ../gtk/propertybox.c:1086 msgid "Traditional Chinese" -msgstr "" +msgstr "繁体中文" #: ../gtk/propertybox.c:1087 msgid "Norwegian" -msgstr "" +msgstr "Norsk" #: ../gtk/propertybox.c:1088 msgid "Hebrew" -msgstr "" +msgstr "עברית" #: ../gtk/propertybox.c:1089 msgid "Serbian" -msgstr "" +msgstr "Cрпски" #: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." -msgstr "" +msgstr "言語の選択を有効にするには、 Linphoneを再起動する必要があります。" #: ../gtk/propertybox.c:1234 msgid "None" -msgstr "" +msgstr "なし" #: ../gtk/propertybox.c:1238 msgid "SRTP" -msgstr "" +msgstr "SRTP" #: ../gtk/propertybox.c:1244 msgid "ZRTP" -msgstr "" +msgstr "ZRTP" #: ../gtk/update.c:80 #, c-format msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "" +msgstr "%s よりも新しいバージョンが利用可能です。\nダウンロードするために、ブラウザを開きますか?" #: ../gtk/update.c:91 msgid "You are running the lastest version." -msgstr "" +msgstr "最新版です。" #: ../gtk/buddylookup.c:85 msgid "Firstname, Lastname" -msgstr "" +msgstr "名前、名字" #: ../gtk/buddylookup.c:160 msgid "Error communicating with server." -msgstr "" +msgstr "サーバーとの通信エラーが発生しました。" #: ../gtk/buddylookup.c:164 msgid "Connecting..." -msgstr "" +msgstr "接続中..." #: ../gtk/buddylookup.c:168 msgid "Connected" -msgstr "" +msgstr "接続" #: ../gtk/buddylookup.c:172 msgid "Receiving data..." -msgstr "" +msgstr "データを受信中…" #: ../gtk/buddylookup.c:180 #, c-format msgid "Found %i contact" msgid_plural "Found %i contacts" -msgstr[0] "" +msgstr[0] "%i 件発見" #: ../gtk/setupwizard.c:34 msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "" +msgstr "ようこそ!\nこのアシスタントは、あなたのSIPアカウントを使用するのに役立ちます。" #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" -msgstr "" +msgstr "linphone.orgのアカウントを作成" #: ../gtk/setupwizard.c:44 msgid "I have already a linphone.org account and I just want to use it" -msgstr "" +msgstr "linphone.orgのアカウントを持っているのでそれを使います" #: ../gtk/setupwizard.c:45 msgid "I have already a sip account and I just want to use it" @@ -434,55 +435,55 @@ msgstr "" #: ../gtk/setupwizard.c:89 msgid "Enter your linphone.org username" -msgstr "" +msgstr "linphone.orgで取得したユーザー名を入力" #: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 msgid "Username:" -msgstr "" +msgstr "ユーザー名:" #: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 msgid "Password:" -msgstr "" +msgstr "パスワード:" #: ../gtk/setupwizard.c:124 msgid "Enter your account informations" -msgstr "" +msgstr "アカウント情報を入力" #: ../gtk/setupwizard.c:140 msgid "Username*" -msgstr "" +msgstr "ユーザー名*" #: ../gtk/setupwizard.c:141 msgid "Password*" -msgstr "" +msgstr "パスワード*" #: ../gtk/setupwizard.c:144 msgid "Domain*" -msgstr "" +msgstr "ドメイン*" #: ../gtk/setupwizard.c:145 msgid "Proxy" -msgstr "" +msgstr "プロキシ*" #: ../gtk/setupwizard.c:317 msgid "(*) Required fields" -msgstr "" +msgstr "(*) 必須" #: ../gtk/setupwizard.c:318 msgid "Username: (*)" -msgstr "" +msgstr "ユーザー名: (*)" #: ../gtk/setupwizard.c:320 msgid "Password: (*)" -msgstr "" +msgstr "パスワード: (*)" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" -msgstr "" +msgstr "メールアドレス: (*)" #: ../gtk/setupwizard.c:324 msgid "Confirm your password: (*)" -msgstr "" +msgstr "パスワードを再入力: (*)" #: ../gtk/setupwizard.c:338 msgid "Keep me informed with linphone updates" @@ -510,11 +511,11 @@ msgstr "" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" -msgstr "" +msgstr "アカウント設定アシスタントへようこそ" #: ../gtk/setupwizard.c:623 msgid "Account setup assistant" -msgstr "" +msgstr "アカウント設定アシスタント" #: ../gtk/setupwizard.c:629 msgid "Configure your account (step 1/1)" @@ -534,7 +535,7 @@ msgstr "" #: ../gtk/setupwizard.c:652 msgid "Error" -msgstr "" +msgstr "エラー" #: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 msgid "Terminating" @@ -552,19 +553,19 @@ msgstr "" #: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 msgid "Not used" -msgstr "" +msgstr "使用しない" #: ../gtk/incall_view.c:221 msgid "ICE not activated" -msgstr "" +msgstr "ICE 未認証" #: ../gtk/incall_view.c:223 msgid "ICE failed" -msgstr "" +msgstr "ICE 失敗" #: ../gtk/incall_view.c:225 msgid "ICE in progress" -msgstr "" +msgstr "ICE 進行中" #: ../gtk/incall_view.c:227 msgid "Going through one or more NATs" @@ -572,11 +573,11 @@ msgstr "" #: ../gtk/incall_view.c:229 msgid "Direct" -msgstr "" +msgstr "直接" #: ../gtk/incall_view.c:231 msgid "Through a relay server" -msgstr "" +msgstr "間接的にリレーサーバーを使う" #: ../gtk/incall_view.c:239 msgid "uPnP not activated" @@ -612,12 +613,12 @@ msgstr "" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format msgid "%ix%i @ %f fps" -msgstr "" +msgstr "%ix%i @ %f fps" #: ../gtk/incall_view.c:304 #, c-format msgid "%.3f seconds" -msgstr "" +msgstr "%.3f 秒" #: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 msgid "Hang up" @@ -629,11 +630,11 @@ msgstr "" #: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" -msgstr "" +msgstr "00::00::00" #: ../gtk/incall_view.c:525 msgid "Incoming call" -msgstr "" +msgstr "着信" #: ../gtk/incall_view.c:562 msgid "good" @@ -641,7 +642,7 @@ msgstr "" #: ../gtk/incall_view.c:564 msgid "average" -msgstr "" +msgstr "アベレージ" #: ../gtk/incall_view.c:566 msgid "poor" @@ -661,7 +662,7 @@ msgstr "" #: ../gtk/incall_view.c:679 msgid "Secured by SRTP" -msgstr "" +msgstr "SRTPのセキュリティ" #: ../gtk/incall_view.c:685 #, c-format @@ -691,7 +692,7 @@ msgstr "" #: ../gtk/incall_view.c:771 #, c-format msgid "%02i::%02i::%02i" -msgstr "" +msgstr "%02i::%02i::%02i" #: ../gtk/incall_view.c:794 msgid "Call ended." @@ -703,19 +704,19 @@ msgstr "" #: ../gtk/incall_view.c:828 msgid "Transfer done." -msgstr "" +msgstr "転送完了。" #: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "" +msgstr "転送失敗。" #: ../gtk/incall_view.c:875 msgid "Resume" -msgstr "" +msgstr "レジューム" #: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 msgid "Pause" -msgstr "" +msgstr "一時停止" #: ../gtk/incall_view.c:948 #, c-format @@ -726,7 +727,7 @@ msgstr "" #: ../gtk/incall_view.c:948 msgid "(Paused)" -msgstr "" +msgstr "(停止中)" #: ../gtk/loginframe.c:88 #, c-format @@ -775,7 +776,7 @@ msgstr "" #: ../gtk/audio_assistant.c:333 msgid "No voice" -msgstr "" +msgstr "音声なし" #: ../gtk/audio_assistant.c:369 msgid "Playback device" @@ -791,31 +792,31 @@ msgstr "" #: ../gtk/audio_assistant.c:404 msgid "Listen to your record voice" -msgstr "" +msgstr "録音した音声を聞く" #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" -msgstr "" +msgstr "Linphoneをはじめる" #: ../gtk/audio_assistant.c:496 msgid "Audio Assistant" -msgstr "" +msgstr "音声アシスタント" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 msgid "Audio assistant" -msgstr "" +msgstr "音声アシスタント" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" -msgstr "" +msgstr "マイクのゲイン測定" #: ../gtk/audio_assistant.c:517 msgid "Speaker volume calibration" -msgstr "" +msgstr "スピーカーの音量測定" #: ../gtk/audio_assistant.c:522 msgid "Record and Play" -msgstr "" +msgstr "録音して再生" #: ../gtk/main.ui.h:1 msgid "Callee name" @@ -823,7 +824,7 @@ msgstr "" #: ../gtk/main.ui.h:2 msgid "Send" -msgstr "" +msgstr "送信" #: ../gtk/main.ui.h:3 msgid "End conference" @@ -835,15 +836,15 @@ msgstr "" #: ../gtk/main.ui.h:8 msgid "Video" -msgstr "" +msgstr "ビデオ" #: ../gtk/main.ui.h:10 msgid "Mute" -msgstr "" +msgstr "消音" #: ../gtk/main.ui.h:11 msgid "Transfer" -msgstr "" +msgstr "転送" #: ../gtk/main.ui.h:14 msgid "In call" @@ -859,15 +860,15 @@ msgstr "" #: ../gtk/main.ui.h:17 msgid "All users" -msgstr "" +msgstr "すべての利用者" #: ../gtk/main.ui.h:18 msgid "Online users" -msgstr "" +msgstr "オンラインの利用者" #: ../gtk/main.ui.h:19 msgid "ADSL" -msgstr "" +msgstr "ADSL" #: ../gtk/main.ui.h:20 msgid "Fiber Channel" @@ -875,7 +876,7 @@ msgstr "" #: ../gtk/main.ui.h:21 msgid "Default" -msgstr "" +msgstr "デフォルト" #: ../gtk/main.ui.h:22 msgid "_Options" @@ -903,7 +904,7 @@ msgstr "" #: ../gtk/main.ui.h:28 msgid "_Homepage" -msgstr "" +msgstr "_ホームページ" #: ../gtk/main.ui.h:29 msgid "Check _Updates" @@ -911,7 +912,7 @@ msgstr "" #: ../gtk/main.ui.h:30 msgid "Account assistant" -msgstr "" +msgstr "アカウントのアシスタント" #: ../gtk/main.ui.h:32 msgid "SIP address or phone number:" @@ -927,7 +928,7 @@ msgstr "" #: ../gtk/main.ui.h:35 msgid "Search" -msgstr "" +msgstr "検索" #: ../gtk/main.ui.h:36 msgid "Add contacts from directory" @@ -947,11 +948,11 @@ msgstr "" #: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 msgid "Username" -msgstr "" +msgstr "ユーザー名" #: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 msgid "Password" -msgstr "" +msgstr "パスワード" #: ../gtk/main.ui.h:42 msgid "Internet connection:" @@ -959,7 +960,7 @@ msgstr "" #: ../gtk/main.ui.h:43 msgid "Automatically log me in" -msgstr "" +msgstr "自動的にログインする" #: ../gtk/main.ui.h:44 ../gtk/password.ui.h:3 msgid "UserID" @@ -967,23 +968,23 @@ msgstr "" #: ../gtk/main.ui.h:45 msgid "Login information" -msgstr "" +msgstr "ログイン情報" #: ../gtk/main.ui.h:46 msgid "Welcome !" -msgstr "" +msgstr "ようこそ" #: ../gtk/main.ui.h:47 msgid "Delete" -msgstr "" +msgstr "削除" #: ../gtk/about.ui.h:1 msgid "About linphone" -msgstr "" +msgstr "linphoneについて" #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications,2010\n" -msgstr "" +msgstr "(C) Belledonne Communications,2010\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1007,7 +1008,7 @@ msgstr "" #: ../gtk/contact.ui.h:2 msgid "SIP Address" -msgstr "" +msgstr "SIPアドレス" #: ../gtk/contact.ui.h:3 msgid "Show this contact presence status" @@ -1023,7 +1024,7 @@ msgstr "" #: ../gtk/log.ui.h:1 msgid "Linphone debug window" -msgstr "" +msgstr "Linphoneデバッグウインドウ" #: ../gtk/log.ui.h:2 msgid "Scroll to end" @@ -1039,11 +1040,11 @@ msgstr "" #: ../gtk/call_logs.ui.h:1 msgid "Call history" -msgstr "" +msgstr "呼出履歴" #: ../gtk/call_logs.ui.h:2 msgid "Clear all" -msgstr "" +msgstr "すべて消去する" #: ../gtk/call_logs.ui.h:3 msgid "Call back" @@ -1067,7 +1068,7 @@ msgstr "sip:" #: ../gtk/sip_account.ui.h:5 msgid "SIP Proxy address:" -msgstr "" +msgstr "SIP プロキシ:" #: ../gtk/sip_account.ui.h:6 msgid "Looks like sip:" @@ -1091,19 +1092,19 @@ msgstr "" #: ../gtk/sip_account.ui.h:11 msgid "Transport" -msgstr "" +msgstr "転送" #: ../gtk/sip_account.ui.h:12 msgid "Register" -msgstr "" +msgstr "登録" #: ../gtk/sip_account.ui.h:13 msgid "Publish presence information" -msgstr "" +msgstr "パブリッシュ情報" #: ../gtk/sip_account.ui.h:14 msgid "Enable AVPF" -msgstr "" +msgstr "AVPFを有効にする" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1111,15 +1112,15 @@ msgstr "" #: ../gtk/parameters.ui.h:1 msgid "anonymous" -msgstr "" +msgstr "anonymous" #: ../gtk/parameters.ui.h:2 msgid "GSSAPI" -msgstr "" +msgstr "GSSAPI" #: ../gtk/parameters.ui.h:3 msgid "SASL" -msgstr "" +msgstr "SASL" #: ../gtk/parameters.ui.h:4 msgid "default soundcard" @@ -1127,23 +1128,23 @@ msgstr "" #: ../gtk/parameters.ui.h:5 msgid "a sound card" -msgstr "" +msgstr "サウンドカード" #: ../gtk/parameters.ui.h:6 msgid "default camera" -msgstr "" +msgstr "デフォルトのカメラ" #: ../gtk/parameters.ui.h:7 msgid "CIF" -msgstr "" +msgstr "CIF" #: ../gtk/parameters.ui.h:8 msgid "Audio codecs" -msgstr "" +msgstr "オーディオのコーデック" #: ../gtk/parameters.ui.h:9 msgid "Video codecs" -msgstr "" +msgstr "ビデオのコーデック" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" @@ -1151,19 +1152,19 @@ msgstr "" #: ../gtk/parameters.ui.h:11 msgid "SIP (UDP)" -msgstr "" +msgstr "SIP (UDP)" #: ../gtk/parameters.ui.h:12 msgid "SIP (TCP)" -msgstr "" +msgstr "SIP (TCP)" #: ../gtk/parameters.ui.h:13 msgid "SIP (TLS)" -msgstr "" +msgstr "SIP (TLS)" #: ../gtk/parameters.ui.h:14 msgid "Settings" -msgstr "" +msgstr "設定" #: ../gtk/parameters.ui.h:15 msgid "Set Maximum Transmission Unit:" @@ -1171,27 +1172,27 @@ msgstr "" #: ../gtk/parameters.ui.h:16 msgid "Send DTMFs as SIP info" -msgstr "" +msgstr "DTMFをSIP情報で送信する" #: ../gtk/parameters.ui.h:17 msgid "Use IPv6 instead of IPv4" -msgstr "" +msgstr "IPv4ではなくIPv6を使用する" #: ../gtk/parameters.ui.h:18 msgid "Transport" -msgstr "" +msgstr "転送" #: ../gtk/parameters.ui.h:19 msgid "Media encryption type" -msgstr "" +msgstr "メディアの暗号化の種類" #: ../gtk/parameters.ui.h:20 msgid "Video RTP/UDP:" -msgstr "" +msgstr "ビデオ RTP/UDP:" #: ../gtk/parameters.ui.h:21 msgid "Audio RTP/UDP:" -msgstr "" +msgstr "オーディオ RTP/UDP:" #: ../gtk/parameters.ui.h:22 msgid "Fixed" @@ -1203,23 +1204,23 @@ msgstr "" #: ../gtk/parameters.ui.h:24 msgid "Tunnel" -msgstr "" +msgstr "トンネル" #: ../gtk/parameters.ui.h:25 msgid "DSCP fields" -msgstr "" +msgstr "DSCP値" #: ../gtk/parameters.ui.h:26 msgid "SIP/TCP port" -msgstr "" +msgstr "SIP/TCP ポート" #: ../gtk/parameters.ui.h:27 msgid "SIP/UDP port" -msgstr "" +msgstr "SIP/UDP ポート" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" -msgstr "" +msgstr "ネットワークのプロトコルとポート" #: ../gtk/parameters.ui.h:29 msgid "Direct connection to the Internet" @@ -1243,23 +1244,23 @@ msgstr "" #: ../gtk/parameters.ui.h:34 msgid "Public IP address:" -msgstr "" +msgstr "パブリック IP アドレス:" #: ../gtk/parameters.ui.h:35 msgid "Stun server:" -msgstr "" +msgstr "Stunサーバー:" #: ../gtk/parameters.ui.h:36 msgid "NAT and Firewall" -msgstr "" +msgstr "NAT と ファイヤーウォール" #: ../gtk/parameters.ui.h:37 msgid "Network settings" -msgstr "" +msgstr "ネットワーク設定" #: ../gtk/parameters.ui.h:38 msgid "Ring sound:" -msgstr "" +msgstr "鳴動音:" #: ../gtk/parameters.ui.h:39 msgid "ALSA special device (optional):" @@ -1279,11 +1280,11 @@ msgstr "" #: ../gtk/parameters.ui.h:43 msgid "Enable echo cancellation" -msgstr "" +msgstr "エコーキャンセラーを有効にする" #: ../gtk/parameters.ui.h:44 msgid "Audio" -msgstr "" +msgstr "オーディオ" #: ../gtk/parameters.ui.h:45 msgid "Video input device:" @@ -1299,11 +1300,11 @@ msgstr "" #: ../gtk/parameters.ui.h:48 msgid "Video" -msgstr "" +msgstr "ビデオ" #: ../gtk/parameters.ui.h:49 msgid "Multimedia settings" -msgstr "" +msgstr "マルチメディア設定" #: ../gtk/parameters.ui.h:50 msgid "This section defines your SIP address when not using a SIP account" @@ -1311,11 +1312,11 @@ msgstr "" #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" -msgstr "" +msgstr "あなたの表示名 (例: John Doe):" #: ../gtk/parameters.ui.h:52 msgid "Your username:" -msgstr "" +msgstr "あなたのユーザー名:" #: ../gtk/parameters.ui.h:53 msgid "Your resulting SIP address:" @@ -1327,7 +1328,7 @@ msgstr "" #: ../gtk/parameters.ui.h:55 msgid "Wizard" -msgstr "" +msgstr "ウィザード" #: ../gtk/parameters.ui.h:56 msgid "Add" @@ -1335,7 +1336,7 @@ msgstr "追加する" #: ../gtk/parameters.ui.h:57 msgid "Edit" -msgstr "" +msgstr "編集する" #: ../gtk/parameters.ui.h:58 msgid "Remove" @@ -1351,7 +1352,7 @@ msgstr "" #: ../gtk/parameters.ui.h:61 msgid "Privacy" -msgstr "" +msgstr "プライバシー" #: ../gtk/parameters.ui.h:62 msgid "Manage SIP Accounts" @@ -1367,7 +1368,7 @@ msgstr "使用しない" #: ../gtk/parameters.ui.h:65 msgid "Codecs" -msgstr "" +msgstr "コーデック" #: ../gtk/parameters.ui.h:66 msgid "0 stands for \"unlimited\"" @@ -1375,11 +1376,11 @@ msgstr "" #: ../gtk/parameters.ui.h:67 msgid "Upload speed limit in Kbit/sec:" -msgstr "" +msgstr "アップロード速度制限 Kbit/sec:" #: ../gtk/parameters.ui.h:68 msgid "Download speed limit in Kbit/sec:" -msgstr "" +msgstr "ダウンロード速度制限 Kbit/sec:" #: ../gtk/parameters.ui.h:69 msgid "Enable adaptive rate control" @@ -1393,31 +1394,31 @@ msgstr "" #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" -msgstr "" +msgstr "帯域幅制御" #: ../gtk/parameters.ui.h:72 msgid "Codecs" -msgstr "" +msgstr "コーデック" #: ../gtk/parameters.ui.h:73 msgid "Language" -msgstr "" +msgstr "言語" #: ../gtk/parameters.ui.h:74 msgid "Show advanced settings" -msgstr "" +msgstr "拡張設定を表示する" #: ../gtk/parameters.ui.h:75 msgid "Level" -msgstr "" +msgstr "レベル" #: ../gtk/parameters.ui.h:76 msgid "User interface" -msgstr "" +msgstr "ユーザーインターフェイス" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 msgid "Server address:" -msgstr "" +msgstr "サーバーアドレス:" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 msgid "Authentication method:" @@ -1425,7 +1426,7 @@ msgstr "" #: ../gtk/parameters.ui.h:80 msgid "label" -msgstr "" +msgstr "ラベル" #: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" @@ -1453,15 +1454,15 @@ msgstr "" #: ../gtk/waiting.ui.h:1 msgid "Linphone" -msgstr "" +msgstr "Linphone" #: ../gtk/waiting.ui.h:2 msgid "Please wait" -msgstr "" +msgstr "お待ちください" #: ../gtk/dscp_settings.ui.h:1 msgid "DSCP settings" -msgstr "" +msgstr "DSCP設定" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" @@ -1469,11 +1470,11 @@ msgstr "SIP" #: ../gtk/dscp_settings.ui.h:3 msgid "Audio RTP stream" -msgstr "" +msgstr "オーディオのRTP" #: ../gtk/dscp_settings.ui.h:4 msgid "Video RTP stream" -msgstr "" +msgstr "ビデオのRTP" #: ../gtk/dscp_settings.ui.h:5 msgid "Set DSCP values (in hexadecimal)" @@ -1485,11 +1486,11 @@ msgstr "" #: ../gtk/call_statistics.ui.h:2 msgid "Audio codec" -msgstr "" +msgstr "オーディオのコーデック" #: ../gtk/call_statistics.ui.h:3 msgid "Video codec" -msgstr "" +msgstr "ビデオのコーデック" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" @@ -1521,7 +1522,7 @@ msgstr "" #: ../gtk/call_statistics.ui.h:11 msgid "RTP profile" -msgstr "" +msgstr "RTPプロファイル" #: ../gtk/call_statistics.ui.h:12 msgid "Call statistics and information" @@ -1533,11 +1534,11 @@ msgstr "" #: ../gtk/tunnel_config.ui.h:2 msgid "Host" -msgstr "" +msgstr "ホスト" #: ../gtk/tunnel_config.ui.h:3 msgid "Port" -msgstr "" +msgstr "ポート" #: ../gtk/tunnel_config.ui.h:6 msgid "Configure tunnel" @@ -1613,7 +1614,7 @@ msgstr "" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" -msgstr "" +msgstr "TLS接続を使用する" #: ../gtk/ldap.ui.h:7 msgid "Not yet available" @@ -1621,7 +1622,7 @@ msgstr "" #: ../gtk/ldap.ui.h:8 msgid "Connection" -msgstr "" +msgstr "接続" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" @@ -1633,11 +1634,11 @@ msgstr "" #: ../gtk/ldap.ui.h:11 msgid "Realm" -msgstr "" +msgstr "Realm" #: ../gtk/ldap.ui.h:12 msgid "SASL" -msgstr "" +msgstr "SASL" #: ../gtk/ldap.ui.h:13 msgid "Base object:" @@ -1662,7 +1663,7 @@ msgstr "" #: ../gtk/ldap.ui.h:19 msgid "Search" -msgstr "" +msgstr "検索" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" @@ -1678,11 +1679,11 @@ msgstr "" #: ../gtk/ldap.ui.h:23 msgid "Miscellaneous" -msgstr "" +msgstr "種々" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" -msgstr "" +msgstr "匿名" #: ../gtk/ldap.ui.h:25 msgid "SIMPLE" @@ -1690,7 +1691,7 @@ msgstr "" #: ../gtk/ldap.ui.h:26 msgid "DIGEST-MD5" -msgstr "" +msgstr "ダイジェスト-MD5" #: ../gtk/ldap.ui.h:27 msgid "NTLM" @@ -1708,7 +1709,7 @@ msgstr "" #: ../gtk/config-uri.ui.h:4 msgid "https://" -msgstr "" +msgstr "https://" #: ../gtk/provisioning-fetch.ui.h:1 msgid "Configuring..." @@ -1720,7 +1721,7 @@ msgstr "" #: ../coreapi/linphonecore.c:1511 msgid "Ready" -msgstr "" +msgstr "準備" #: ../coreapi/linphonecore.c:2470 msgid "Configuring" @@ -1757,7 +1758,7 @@ msgstr "" #: ../coreapi/linphonecore.c:3234 msgid "." -msgstr "" +msgstr "." #: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." @@ -1789,11 +1790,11 @@ msgstr "" #: ../coreapi/friend.c:33 msgid "Online" -msgstr "" +msgstr "オンライン" #: ../coreapi/friend.c:36 msgid "Busy" -msgstr "" +msgstr "ビジー" #: ../coreapi/friend.c:39 msgid "Be right back" @@ -1801,7 +1802,7 @@ msgstr "" #: ../coreapi/friend.c:42 msgid "Away" -msgstr "退席中" +msgstr "離席中" #: ../coreapi/friend.c:45 msgid "On the phone" @@ -1817,7 +1818,7 @@ msgstr "手が離せません" #: ../coreapi/friend.c:54 msgid "Moved" -msgstr "" +msgstr "移動中" #: ../coreapi/friend.c:57 msgid "Using another messaging service" @@ -1825,19 +1826,19 @@ msgstr "" #: ../coreapi/friend.c:60 msgid "Offline" -msgstr "" +msgstr "オフライン" #: ../coreapi/friend.c:63 msgid "Pending" -msgstr "" +msgstr "保留" #: ../coreapi/friend.c:66 msgid "Vacation" -msgstr "" +msgstr "休暇中" #: ../coreapi/friend.c:68 msgid "Unknown-bug" -msgstr "" +msgstr "不明なバグ" #: ../coreapi/proxy.c:319 msgid "" @@ -1866,7 +1867,7 @@ msgstr "" #: ../coreapi/callbacks.c:414 msgid "Early media." -msgstr "" +msgstr "Early media." #: ../coreapi/callbacks.c:475 #, c-format @@ -1915,16 +1916,16 @@ msgstr "" #: ../coreapi/callbacks.c:733 msgid "User is busy." -msgstr "ユーザーはビジーです" +msgstr "相手はビジーです。" #: ../coreapi/callbacks.c:734 msgid "User is temporarily unavailable." -msgstr "ユーザーは、今出られません。" +msgstr "相手は、今出られません。" #. char *retrymsg=_("%s. Retry after %i minute(s)."); #: ../coreapi/callbacks.c:736 msgid "User does not want to be disturbed." -msgstr "ユーザーは手が離せないようです。" +msgstr "相手は手が離せないようです。" #: ../coreapi/callbacks.c:737 msgid "Call declined." @@ -1932,7 +1933,7 @@ msgstr "通話は拒否されました。" #: ../coreapi/callbacks.c:752 msgid "Request timeout." -msgstr "" +msgstr "リクエストは時間切れです。" #: ../coreapi/callbacks.c:780 msgid "Redirected" diff --git a/po/sr.po b/po/sr.po index 89a40b99c..0b98e236f 100644 --- a/po/sr.po +++ b/po/sr.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Мирослав Николић , 2014 msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" -"PO-Revision-Date: 2014-11-19 10:15+0000\n" -"Last-Translator: Cqnqrd \n" +"PO-Revision-Date: 2014-11-26 20:58+0000\n" +"Last-Translator: Мирослав Николић \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/linphone-gtk/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -30,7 +31,7 @@ msgstr "Пошаљи текст за %s" #: ../gtk/calllogs.c:232 #, c-format msgid "Recent calls (%i)" -msgstr "" +msgstr "Недавни позиви (%i)" #: ../gtk/calllogs.c:314 msgid "n/a" @@ -38,50 +39,50 @@ msgstr "н/д" #: ../gtk/calllogs.c:317 msgid "Aborted" -msgstr "" +msgstr "Прекинут" #: ../gtk/calllogs.c:320 msgid "Missed" -msgstr "" +msgstr "Пропуштен" #: ../gtk/calllogs.c:323 msgid "Declined" -msgstr "" +msgstr "Одбијен" #: ../gtk/calllogs.c:329 #, c-format msgid "%i minute" msgid_plural "%i minutes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%i минут" +msgstr[1] "%i минута" +msgstr[2] "%i минута" #: ../gtk/calllogs.c:332 #, c-format msgid "%i second" msgid_plural "%i seconds" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%i секунда" +msgstr[1] "%i секунде" +msgstr[2] "%i секунди" #: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 #, c-format msgid "%s\t%s" -msgstr "" +msgstr "%s\t%s" #: ../gtk/calllogs.c:337 #, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "" +msgstr "%s\tКвалитет: %s\n%s\t%s\t" #: ../gtk/calllogs.c:343 #, c-format msgid "" "%s\t\n" "%s" -msgstr "" +msgstr "%s\t\n%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -102,15 +103,15 @@ msgstr "Неисправан сип контакт !" #: ../gtk/main.c:107 msgid "log to stdout some debug information while running." -msgstr "бележи у стандардни излаз неке податке за уклањање грешака док ради." +msgstr "бележи на стандардни излаз неке податке прочишћавања док ради." #: ../gtk/main.c:114 msgid "path to a file to write logs into." -msgstr "путања до датотеке за уписивање бележака." +msgstr "путања до датотеке за уписивање дневника." #: ../gtk/main.c:121 msgid "Start linphone with video disabled." -msgstr "" +msgstr "Покреће линфон са искљученим видеом." #: ../gtk/main.c:128 msgid "Start only in the system tray, do not show the main interface." @@ -128,15 +129,15 @@ msgstr "ако је подешено сам ће се јављати на дол msgid "" "Specifiy a working directory (should be the base of the installation, eg: " "c:\\Program Files\\Linphone)" -msgstr "Наводи радни директоријум (треба да буде основа инсталације, нпр: c:\\Program Files\\Linphone)" +msgstr "Наводи радни директоријум (треба да буде основа инсталације, нпр: „c:\\Program Files\\Linphone“)" #: ../gtk/main.c:156 msgid "Configuration file" -msgstr "" +msgstr "Датотека подешавања" #: ../gtk/main.c:163 msgid "Run the audio assistant" -msgstr "" +msgstr "Покреће помоћника звука" #: ../gtk/main.c:1085 #, c-format @@ -144,14 +145,14 @@ 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" "If you answer no, this person will be temporarily blacklisted." -msgstr "%s жели да вас дода на списак пријатеља.\nДа ли желите да му допустите да види ваше стање присуства или да га додате на ваш списак пријатеља ?\nАко одговорите са не, ова особа ће привремено бити стављена на црни списак." +msgstr "%s жели да вас дода на списак пријатеља.\nДа ли желите да му допустите да види ваше стање присуства или да га додате на ваш списак пријатеља ?\nАко одговорите са не, ова особа ће привремено бити стављена на списак забрана." #: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "" +msgstr "Унесите вашу лозинку за корисничко име %s\n на подручју %s:" #: ../gtk/main.c:1283 msgid "Call error" @@ -180,12 +181,12 @@ msgstr "Позив је заустављен" #: ../gtk/main.c:1299 #, c-format msgid "by %s" -msgstr "" +msgstr "од %s" #: ../gtk/main.c:1366 #, c-format msgid "%s proposed to start video. Do you accept ?" -msgstr "" +msgstr "%s предлаже да започнете видео. Да ли прихватате ?" #: ../gtk/main.c:1528 msgid "Website link" @@ -209,7 +210,7 @@ msgstr "Преселили смо се на %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "Ниједна звучна картица није откривен ана овом рачунару.\nНећете бити у могућности да шаљете или да примате звучне позиве." +msgstr "Ниједна звучна картица није откривена на овом рачунару.\nНећете бити у могућности да шаљете или да примате звучне позиве." #: ../gtk/main.c:2157 msgid "A free SIP video-phone" @@ -233,7 +234,7 @@ msgstr "Позови" #: ../gtk/friendlist.c:726 msgid "Chat" -msgstr "" +msgstr "Ћаскај" #: ../gtk/friendlist.c:756 #, c-format @@ -253,7 +254,7 @@ msgstr "Обришите контакт „%s“" #: ../gtk/friendlist.c:978 #, c-format msgid "Delete chat history of '%s'" -msgstr "" +msgstr "Обришите историјат ћаскања за „%s“" #: ../gtk/friendlist.c:1029 #, c-format @@ -270,7 +271,7 @@ msgstr "Стање" #: ../gtk/propertybox.c:570 msgid "IP Bitrate (kbit/s)" -msgstr "" +msgstr "Проток бита ИП-а (kbit/s)" #: ../gtk/propertybox.c:577 msgid "Parameters" @@ -354,16 +355,16 @@ msgstr "Норвешки" #: ../gtk/propertybox.c:1088 msgid "Hebrew" -msgstr "" +msgstr "Јеврејски" #: ../gtk/propertybox.c:1089 msgid "Serbian" -msgstr "" +msgstr "Српски" #: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." -msgstr "Трба поново да покренете линфон да би нови изабрани језик ступио на снагу." +msgstr "Треба поново да покренете линфон да би нови изабрани језик ступио у дејство." #: ../gtk/propertybox.c:1234 msgid "None" @@ -382,7 +383,7 @@ msgstr "ЗРТП" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "Новије издање је доступно са „%s“.\nДа ли желите да отворите прегледник да га преузмете ?" +msgstr "Новије издање је доступно са „%s“.\nДа ли желите да отворите прегледник и да га преузмете ?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -412,35 +413,35 @@ msgstr "Примам податке..." #, c-format msgid "Found %i contact" msgid_plural "Found %i contacts" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Нашао сам %i контакт" +msgstr[1] "Нашао сам %i контакта" +msgstr[2] "Нашао сам %i контаката" #: ../gtk/setupwizard.c:34 msgid "" "Welcome !\n" "This assistant will help you to use a SIP account for your calls." -msgstr "Добродошли !\nОвај помоћник ће вам помоћи да користите СИП налог за ваше позиве." +msgstr "Добро дошли !\nОвај помоћник ће вам помоћи да користите СИП налог за ваше позиве." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" -msgstr "" +msgstr "Направи налог на линфон.орг-у" #: ../gtk/setupwizard.c:44 msgid "I have already a linphone.org account and I just want to use it" -msgstr "" +msgstr "Већ имам налог линфон.орг-а и желим да га користим" #: ../gtk/setupwizard.c:45 msgid "I have already a sip account and I just want to use it" -msgstr "" +msgstr "Већ имам сип налог и желим да га користим" #: ../gtk/setupwizard.c:46 msgid "I want to specify a remote configuration URI" -msgstr "" +msgstr "Желим да наведем удаљену путању подешавања" #: ../gtk/setupwizard.c:89 msgid "Enter your linphone.org username" -msgstr "" +msgstr "Унесите ваше корисничко име линфон.орг-а" #: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 msgid "Username:" @@ -452,53 +453,53 @@ msgstr "Лозинка:" #: ../gtk/setupwizard.c:124 msgid "Enter your account informations" -msgstr "" +msgstr "Унесите податке вашег налога" #: ../gtk/setupwizard.c:140 msgid "Username*" -msgstr "" +msgstr "Корисник*" #: ../gtk/setupwizard.c:141 msgid "Password*" -msgstr "" +msgstr "Лозинка*" #: ../gtk/setupwizard.c:144 msgid "Domain*" -msgstr "" +msgstr "Домен*" #: ../gtk/setupwizard.c:145 msgid "Proxy" -msgstr "" +msgstr "Посредник" #: ../gtk/setupwizard.c:317 msgid "(*) Required fields" -msgstr "" +msgstr "(*) Обавезна поља" #: ../gtk/setupwizard.c:318 msgid "Username: (*)" -msgstr "" +msgstr "Корисник: (*)" #: ../gtk/setupwizard.c:320 msgid "Password: (*)" -msgstr "" +msgstr "Лозинка: (*)" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" -msgstr "" +msgstr "Ел. пошта: (*)" #: ../gtk/setupwizard.c:324 msgid "Confirm your password: (*)" -msgstr "" +msgstr "Потврдите вашу лозинку: (*)" #: ../gtk/setupwizard.c:338 msgid "Keep me informed with linphone updates" -msgstr "" +msgstr "Обавештавај ме о ажурирањима линфона" #: ../gtk/setupwizard.c:394 msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "" +msgstr "Грешка, налог није потврђен, корисничко име је већ у употреби или је сервер недоступан.\nВратите се назад и покушајте опет." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -508,15 +509,15 @@ msgstr "Хвала вам. Ваш налог је сада подешен и с msgid "" "Please validate your account by clicking on the link we just sent you by email.\n" "Then come back here and press Next button." -msgstr "" +msgstr "Потврдите ваш налог притиском на везу коју смо вам управо послали ел. поштом.\nЗатим се вратите овде и притисните дугме „Напред“." #: ../gtk/setupwizard.c:600 msgid "SIP account configuration assistant" -msgstr "" +msgstr "Помоћник подешавања СИП налога" #: ../gtk/setupwizard.c:618 msgid "Welcome to the account setup assistant" -msgstr "Добродошли у помоћника подешавања налога" +msgstr "Добро дошли у помоћника подешавања налога" #: ../gtk/setupwizard.c:623 msgid "Account setup assistant" @@ -524,32 +525,32 @@ msgstr "Помоћник подешавања налога" #: ../gtk/setupwizard.c:629 msgid "Configure your account (step 1/1)" -msgstr "" +msgstr "Подесите ваш налог (корак 1/1)" #: ../gtk/setupwizard.c:634 msgid "Enter your sip username (step 1/1)" -msgstr "" +msgstr "Унесите ваше корисничко име сип-а (корак 1/1)" #: ../gtk/setupwizard.c:638 msgid "Enter account information (step 1/2)" -msgstr "" +msgstr "Унесите податке налога (корак 1/2)" #: ../gtk/setupwizard.c:647 msgid "Validation (step 2/2)" -msgstr "" +msgstr "Потврђивање (корак 2/2)" #: ../gtk/setupwizard.c:652 msgid "Error" -msgstr "" +msgstr "Грешка" #: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 msgid "Terminating" -msgstr "" +msgstr "Завршавам" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 #, c-format msgid "Call #%i" -msgstr "Позови #%i" +msgstr "Позив бр. %i" #: ../gtk/incall_view.c:155 #, c-format @@ -558,76 +559,76 @@ msgstr "Пребаци позив #%i са %s" #: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 msgid "Not used" -msgstr "" +msgstr "Не користи се" #: ../gtk/incall_view.c:221 msgid "ICE not activated" -msgstr "" +msgstr "ИЦЕ није покренут" #: ../gtk/incall_view.c:223 msgid "ICE failed" -msgstr "" +msgstr "ИЦЕ није успео" #: ../gtk/incall_view.c:225 msgid "ICE in progress" -msgstr "" +msgstr "ИЦЕ је у току" #: ../gtk/incall_view.c:227 msgid "Going through one or more NATs" -msgstr "" +msgstr "Пролазим кроз један или више НАТ-са" #: ../gtk/incall_view.c:229 msgid "Direct" -msgstr "" +msgstr "Непосредно" #: ../gtk/incall_view.c:231 msgid "Through a relay server" -msgstr "" +msgstr "Преко преносног сервера" #: ../gtk/incall_view.c:239 msgid "uPnP not activated" -msgstr "" +msgstr "уПнП није покренут" #: ../gtk/incall_view.c:241 msgid "uPnP in progress" -msgstr "" +msgstr "уПнП је у току" #: ../gtk/incall_view.c:243 msgid "uPnp not available" -msgstr "" +msgstr "уПнП није доступан" #: ../gtk/incall_view.c:245 msgid "uPnP is running" -msgstr "" +msgstr "уПнП ради" #: ../gtk/incall_view.c:247 msgid "uPnP failed" -msgstr "" +msgstr "уПнП није успео" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" -msgstr "" +msgstr "Непосредно или кроз сервер" #: ../gtk/incall_view.c:267 ../gtk/incall_view.c:279 #, c-format msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "" +msgstr "преузимање: %f\nотпремање: %f (kbit/s)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format msgid "%ix%i @ %f fps" -msgstr "" +msgstr "%ix%i @ %f к/с" #: ../gtk/incall_view.c:304 #, c-format msgid "%.3f seconds" -msgstr "" +msgstr "%.3f секунде" #: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 msgid "Hang up" -msgstr "" +msgstr "Прекини" #: ../gtk/incall_view.c:511 msgid "Calling..." @@ -705,15 +706,15 @@ msgstr "Позив је завршен." #: ../gtk/incall_view.c:825 msgid "Transfer in progress" -msgstr "" +msgstr "Пренос је у току" #: ../gtk/incall_view.c:828 msgid "Transfer done." -msgstr "" +msgstr "Пренос је обављен." #: ../gtk/incall_view.c:831 msgid "Transfer failed." -msgstr "" +msgstr "Пренос није успео." #: ../gtk/incall_view.c:875 msgid "Resume" @@ -728,11 +729,11 @@ msgstr "Застани" msgid "" "Recording into\n" "%s %s" -msgstr "" +msgstr "Снимам у\n%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" -msgstr "" +msgstr "(Паузирано)" #: ../gtk/loginframe.c:88 #, c-format @@ -742,86 +743,86 @@ msgstr "Унесите податке пријављивања за %s" #: ../gtk/config-fetching.c:57 #, c-format msgid "fetching from %s" -msgstr "" +msgstr "довлачим са „%s“" #: ../gtk/config-fetching.c:73 #, c-format msgid "Downloading of remote configuration from %s failed." -msgstr "" +msgstr "Преузимање удаљеног подешавања са „%s“ није успело." #: ../gtk/audio_assistant.c:98 msgid "No voice detected" -msgstr "" +msgstr "Глас није откривен" #: ../gtk/audio_assistant.c:99 msgid "Too low" -msgstr "" +msgstr "Сувише низак" #: ../gtk/audio_assistant.c:100 msgid "Good" -msgstr "" +msgstr "Добар" #: ../gtk/audio_assistant.c:101 msgid "Too loud" -msgstr "" +msgstr "Сувише гласан" #: ../gtk/audio_assistant.c:318 msgid "" "Welcome !\n" "This assistant will help you to configure audio settings for Linphone" -msgstr "" +msgstr "Добро дошли !\nОвај помоћник ће вам помоћи да подесите звучне поставке за Линфон" #: ../gtk/audio_assistant.c:328 msgid "Capture device" -msgstr "" +msgstr "Уређај за снимање" #: ../gtk/audio_assistant.c:329 msgid "Recorded volume" -msgstr "" +msgstr "Снимљени волумен" #: ../gtk/audio_assistant.c:333 msgid "No voice" -msgstr "" +msgstr "Нема гласа" #: ../gtk/audio_assistant.c:369 msgid "Playback device" -msgstr "" +msgstr "Уређај за пуштање" #: ../gtk/audio_assistant.c:370 msgid "Play three beeps" -msgstr "" +msgstr "Пусти три писка" #: ../gtk/audio_assistant.c:403 msgid "Press the record button and say some words" -msgstr "" +msgstr "Притисните дугме за снимање и реците нешто" #: ../gtk/audio_assistant.c:404 msgid "Listen to your record voice" -msgstr "" +msgstr "Слушајте ваш снимљени глас" #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" -msgstr "" +msgstr "Хајде сада да покренемо Линфон" #: ../gtk/audio_assistant.c:496 msgid "Audio Assistant" -msgstr "" +msgstr "Помоћник звука" #: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 msgid "Audio assistant" -msgstr "" +msgstr "Помоћник звука" #: ../gtk/audio_assistant.c:511 msgid "Mic Gain calibration" -msgstr "" +msgstr "Дотеривање појачања микрофона" #: ../gtk/audio_assistant.c:517 msgid "Speaker volume calibration" -msgstr "" +msgstr "Дотеривање јачине звука звучника" #: ../gtk/audio_assistant.c:522 msgid "Record and Play" -msgstr "" +msgstr "Снимите и пустите" #: ../gtk/main.ui.h:1 msgid "Callee name" @@ -833,23 +834,23 @@ msgstr "Пошаљи" #: ../gtk/main.ui.h:3 msgid "End conference" -msgstr "" +msgstr "Заврши конференцију" #: ../gtk/main.ui.h:7 msgid "Record this call to an audio file" -msgstr "" +msgstr "Сними овај позив у звучну датотеку" #: ../gtk/main.ui.h:8 msgid "Video" -msgstr "" +msgstr "Видео" #: ../gtk/main.ui.h:10 msgid "Mute" -msgstr "" +msgstr "Утишај" #: ../gtk/main.ui.h:11 msgid "Transfer" -msgstr "Пребаци" +msgstr "Пренос" #: ../gtk/main.ui.h:14 msgid "In call" @@ -869,7 +870,7 @@ msgstr "Сви корисници" #: ../gtk/main.ui.h:18 msgid "Online users" -msgstr "Корисницима на мрежи" +msgstr "Корисници на мрежи" #: ../gtk/main.ui.h:19 msgid "ADSL" @@ -889,11 +890,11 @@ msgstr "_Могућности" #: ../gtk/main.ui.h:23 msgid "Set configuration URI" -msgstr "" +msgstr "Постави путању подешавања" #: ../gtk/main.ui.h:24 msgid "Always start video" -msgstr "" +msgstr "Увек покрени видео" #: ../gtk/main.ui.h:25 msgid "Enable self-view" @@ -917,7 +918,7 @@ msgstr "Провери _ажурирања" #: ../gtk/main.ui.h:30 msgid "Account assistant" -msgstr "" +msgstr "Помоћник налога" #: ../gtk/main.ui.h:32 msgid "SIP address or phone number:" @@ -953,7 +954,7 @@ msgstr "Мој тренутни идентитет:" #: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 msgid "Username" -msgstr "Корисничко име" +msgstr "Корисник" #: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 msgid "Password" @@ -977,11 +978,11 @@ msgstr "Подаци пријављивања" #: ../gtk/main.ui.h:46 msgid "Welcome !" -msgstr "Добродошли !" +msgstr "Добро дошли !" #: ../gtk/main.ui.h:47 msgid "Delete" -msgstr "" +msgstr "Обриши" #: ../gtk/about.ui.h:1 msgid "About linphone" @@ -989,11 +990,11 @@ msgstr "О линфону" #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications,2010\n" -msgstr "(C) Беледон комуникације,2010\n" +msgstr "(C) Беледоне комуникације, 2010\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "Интернет телефон са снимком који користи уобичајени СИП (rfc3261) протокол." +msgstr "Интернет телефон са снимком који користи уобичајени СИП протокол (rfc3261)." #: ../gtk/about.ui.h:5 msgid "" @@ -1009,7 +1010,7 @@ msgid "" "cs: Petr Pisar \n" "hu: anonymous\n" "he: Eli Zaretskii \n" -msgstr "" +msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \nsr: Мирослав Николић \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1033,7 +1034,7 @@ msgstr "Линфоново прозорче прочишћавања" #: ../gtk/log.ui.h:2 msgid "Scroll to end" -msgstr "" +msgstr "Премакни на крај" #: ../gtk/password.ui.h:1 msgid "Linphone - Authentication required" @@ -1065,7 +1066,7 @@ msgstr "Ваш СИП идентитет:" #: ../gtk/sip_account.ui.h:3 msgid "Looks like sip:@" -msgstr "Изгледа као „sip:<корисничко-име>@<домен>" +msgstr "Изгледа као „sip:<корисничко-име>@<домен>“" #: ../gtk/sip_account.ui.h:4 msgid "sip:" @@ -1077,7 +1078,7 @@ msgstr "Адреса СИП посредника:" #: ../gtk/sip_account.ui.h:6 msgid "Looks like sip:" -msgstr "Изгледа као „sip:<назив посредника>" +msgstr "Изгледа као „sip:<назив посредника>“" #: ../gtk/sip_account.ui.h:7 msgid "Registration duration (sec):" @@ -1085,11 +1086,11 @@ msgstr "Трајање уписа (сек):" #: ../gtk/sip_account.ui.h:8 msgid "Contact params (optional):" -msgstr "" +msgstr "Параметри пријатеља (изборно):" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" -msgstr "" +msgstr "АВПФ редован РТЦП интервал (сек):" #: ../gtk/sip_account.ui.h:10 msgid "Route (optional):" @@ -1097,7 +1098,7 @@ msgstr "Рута (изборно):" #: ../gtk/sip_account.ui.h:11 msgid "Transport" -msgstr "" +msgstr "Пренос" #: ../gtk/sip_account.ui.h:12 msgid "Register" @@ -1109,7 +1110,7 @@ msgstr "Објави податке о присуству" #: ../gtk/sip_account.ui.h:14 msgid "Enable AVPF" -msgstr "" +msgstr "Укључи АВПФ" #: ../gtk/sip_account.ui.h:15 msgid "Configure a SIP account" @@ -1117,15 +1118,15 @@ msgstr "Подесите СИП налог" #: ../gtk/parameters.ui.h:1 msgid "anonymous" -msgstr "" +msgstr "безимено" #: ../gtk/parameters.ui.h:2 msgid "GSSAPI" -msgstr "" +msgstr "ГССАПИ" #: ../gtk/parameters.ui.h:3 msgid "SASL" -msgstr "" +msgstr "САСЛ" #: ../gtk/parameters.ui.h:4 msgid "default soundcard" @@ -1137,7 +1138,7 @@ msgstr "звучна картица" #: ../gtk/parameters.ui.h:6 msgid "default camera" -msgstr "основна камера" +msgstr "основна камерица" #: ../gtk/parameters.ui.h:7 msgid "CIF" @@ -1145,7 +1146,7 @@ msgstr "ЦИФ" #: ../gtk/parameters.ui.h:8 msgid "Audio codecs" -msgstr "Звучни кодеци" +msgstr "Кодеци звука" #: ../gtk/parameters.ui.h:9 msgid "Video codecs" @@ -1201,27 +1202,27 @@ msgstr "РТП/УДП звука:" #: ../gtk/parameters.ui.h:22 msgid "Fixed" -msgstr "" +msgstr "Неизмењиво" #: ../gtk/parameters.ui.h:23 msgid "Media encryption is mandatory" -msgstr "" +msgstr "Шифровање медија је обавезно" #: ../gtk/parameters.ui.h:24 msgid "Tunnel" -msgstr "" +msgstr "Тунел" #: ../gtk/parameters.ui.h:25 msgid "DSCP fields" -msgstr "" +msgstr "ДСЦП поља" #: ../gtk/parameters.ui.h:26 msgid "SIP/TCP port" -msgstr "" +msgstr "СИП/ТЦП прикључник" #: ../gtk/parameters.ui.h:27 msgid "SIP/UDP port" -msgstr "" +msgstr "СИП/УДП прикључник" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1233,7 +1234,7 @@ msgstr "Непосредна веза на Интернет" #: ../gtk/parameters.ui.h:30 msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "" +msgstr "Иза НАТ-а / мрежне баријере (наведите ИП мрежног пролаза)" #: ../gtk/parameters.ui.h:31 msgid "Behind NAT / Firewall (use STUN to resolve)" @@ -1241,11 +1242,11 @@ msgstr "Иза НАТ-а / мрежне баријере (користите С #: ../gtk/parameters.ui.h:32 msgid "Behind NAT / Firewall (use ICE)" -msgstr "" +msgstr "Иза НАТ-а / мрежне баријере (користите ИЦЕ)" #: ../gtk/parameters.ui.h:33 msgid "Behind NAT / Firewall (use uPnP)" -msgstr "" +msgstr "Иза НАТ-а / мрежне баријере (користите уПнП)" #: ../gtk/parameters.ui.h:34 msgid "Public IP address:" @@ -1261,7 +1262,7 @@ msgstr "НАТ и мрежна баријера" #: ../gtk/parameters.ui.h:37 msgid "Network settings" -msgstr "Подешавања мреже" +msgstr "Мрежа" #: ../gtk/parameters.ui.h:38 msgid "Ring sound:" @@ -1301,7 +1302,7 @@ msgstr "Жељена резолуција снимка:" #: ../gtk/parameters.ui.h:47 msgid "Video output method:" -msgstr "" +msgstr "Начин излаза снимка:" #: ../gtk/parameters.ui.h:48 msgid "Video" @@ -1309,7 +1310,7 @@ msgstr "Снимак" #: ../gtk/parameters.ui.h:49 msgid "Multimedia settings" -msgstr "Подешавања мултимедија" +msgstr "Мултимедија" #: ../gtk/parameters.ui.h:50 msgid "This section defines your SIP address when not using a SIP account" @@ -1333,7 +1334,7 @@ msgstr "Основни идентитет" #: ../gtk/parameters.ui.h:55 msgid "Wizard" -msgstr "" +msgstr "Чаробњак" #: ../gtk/parameters.ui.h:56 msgid "Add" @@ -1361,7 +1362,7 @@ msgstr "Приватност" #: ../gtk/parameters.ui.h:62 msgid "Manage SIP Accounts" -msgstr "Управљај СИП налозима" +msgstr "СИП налози" #: ../gtk/parameters.ui.h:63 ../gtk/tunnel_config.ui.h:4 msgid "Enable" @@ -1381,11 +1382,11 @@ msgstr "0 значи „неограничено“" #: ../gtk/parameters.ui.h:67 msgid "Upload speed limit in Kbit/sec:" -msgstr "Ограничење брзине слања у Kb/s:" +msgstr "Ограничи брзину слања на (Kb/s):" #: ../gtk/parameters.ui.h:68 msgid "Download speed limit in Kbit/sec:" -msgstr "Ограничење брзине преузимања у Kb/s:" +msgstr "Ограничи брзину преузимања на (Kb/s):" #: ../gtk/parameters.ui.h:69 msgid "Enable adaptive rate control" @@ -1423,11 +1424,11 @@ msgstr "Корисничко сучеље" #: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 msgid "Server address:" -msgstr "" +msgstr "Адреса сервера:" #: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 msgid "Authentication method:" -msgstr "" +msgstr "Начин потврђивања идентитета:" #: ../gtk/parameters.ui.h:80 msgid "label" @@ -1435,11 +1436,11 @@ msgstr "натпис" #: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" -msgstr "" +msgstr "Подешавања ЛДАП налога" #: ../gtk/parameters.ui.h:82 msgid "LDAP" -msgstr "" +msgstr "ЛДАП" #: ../gtk/parameters.ui.h:83 msgid "Done" @@ -1463,95 +1464,95 @@ msgstr "Линфон" #: ../gtk/waiting.ui.h:2 msgid "Please wait" -msgstr "Молим сачекајте" +msgstr "Сачекајте мало" #: ../gtk/dscp_settings.ui.h:1 msgid "DSCP settings" -msgstr "" +msgstr "ДСЦП подешавања" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" -msgstr "" +msgstr "СИП" #: ../gtk/dscp_settings.ui.h:3 msgid "Audio RTP stream" -msgstr "" +msgstr "РТП ток звука" #: ../gtk/dscp_settings.ui.h:4 msgid "Video RTP stream" -msgstr "" +msgstr "РТП ток снимка" #: ../gtk/dscp_settings.ui.h:5 msgid "Set DSCP values (in hexadecimal)" -msgstr "" +msgstr "Подесите ДСЦП вредности (хексадецимално)" #: ../gtk/call_statistics.ui.h:1 msgid "Call statistics" -msgstr "" +msgstr "Статистика позива" #: ../gtk/call_statistics.ui.h:2 msgid "Audio codec" -msgstr "" +msgstr "Звучни кодек" #: ../gtk/call_statistics.ui.h:3 msgid "Video codec" -msgstr "" +msgstr "Видео кодек" #: ../gtk/call_statistics.ui.h:4 msgid "Audio IP bandwidth usage" -msgstr "" +msgstr "Искоришћеност ИП пропусног опсега звука" #: ../gtk/call_statistics.ui.h:5 msgid "Audio Media connectivity" -msgstr "" +msgstr "Повезивост медија звука" #: ../gtk/call_statistics.ui.h:6 msgid "Video IP bandwidth usage" -msgstr "" +msgstr "Искоришћеност ИП пропусног опсега снимка" #: ../gtk/call_statistics.ui.h:7 msgid "Video Media connectivity" -msgstr "" +msgstr "Повезивост медија снимка" #: ../gtk/call_statistics.ui.h:8 msgid "Round trip time" -msgstr "" +msgstr "Време повратног путовања" #: ../gtk/call_statistics.ui.h:9 msgid "Video resolution received" -msgstr "" +msgstr "Примљена резолуција снимка" #: ../gtk/call_statistics.ui.h:10 msgid "Video resolution sent" -msgstr "" +msgstr "Послата резолуција снимка" #: ../gtk/call_statistics.ui.h:11 msgid "RTP profile" -msgstr "" +msgstr "РТП профил" #: ../gtk/call_statistics.ui.h:12 msgid "Call statistics and information" -msgstr "" +msgstr "Статистика позива и подаци" #: ../gtk/tunnel_config.ui.h:1 msgid "Configure VoIP tunnel" -msgstr "" +msgstr "Подесите ВоИП тунел" #: ../gtk/tunnel_config.ui.h:2 msgid "Host" -msgstr "" +msgstr "Домаћин" #: ../gtk/tunnel_config.ui.h:3 msgid "Port" -msgstr "" +msgstr "Прикључник" #: ../gtk/tunnel_config.ui.h:6 msgid "Configure tunnel" -msgstr "" +msgstr "Подесите тунел" #: ../gtk/tunnel_config.ui.h:9 msgid "Configure http proxy (optional)" -msgstr "" +msgstr "Подесите хттп посредника (изборно)" #: ../gtk/keypad.ui.h:1 msgid "D" @@ -1615,114 +1616,114 @@ msgstr "1" #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" -msgstr "" +msgstr "ЛДАП подешавања" #: ../gtk/ldap.ui.h:6 msgid "Use TLS Connection" -msgstr "" +msgstr "Користи ТЛС везу" #: ../gtk/ldap.ui.h:7 msgid "Not yet available" -msgstr "" +msgstr "Још није доступно" #: ../gtk/ldap.ui.h:8 msgid "Connection" -msgstr "" +msgstr "Веза" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" -msgstr "" +msgstr "Свежи назив домена" #: ../gtk/ldap.ui.h:10 msgid "Authname" -msgstr "" +msgstr "Назив потврђивања" #: ../gtk/ldap.ui.h:11 msgid "Realm" -msgstr "" +msgstr "Подручје" #: ../gtk/ldap.ui.h:12 msgid "SASL" -msgstr "" +msgstr "САСЛ" #: ../gtk/ldap.ui.h:13 msgid "Base object:" -msgstr "" +msgstr "Предмет основе:" #: ../gtk/ldap.ui.h:15 #, no-c-format msgid "Filter (%s for name):" -msgstr "" +msgstr "Пропусник (%s за име):" #: ../gtk/ldap.ui.h:16 msgid "Name Attribute:" -msgstr "" +msgstr "Особине имена:" #: ../gtk/ldap.ui.h:17 msgid "SIP address attribute:" -msgstr "" +msgstr "Особине СИП адресе:" #: ../gtk/ldap.ui.h:18 msgid "Attributes to query:" -msgstr "" +msgstr "Особине за пропитивање:" #: ../gtk/ldap.ui.h:19 msgid "Search" -msgstr "" +msgstr "Потражите" #: ../gtk/ldap.ui.h:20 msgid "Timeout for search:" -msgstr "" +msgstr "Време за претрагу:" #: ../gtk/ldap.ui.h:21 msgid "Max results:" -msgstr "" +msgstr "Највише резултата:" #: ../gtk/ldap.ui.h:22 msgid "Follow Aliases" -msgstr "" +msgstr "Прати надимке" #: ../gtk/ldap.ui.h:23 msgid "Miscellaneous" -msgstr "" +msgstr "Разно" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" -msgstr "" +msgstr "БЕЗИМЕНО" #: ../gtk/ldap.ui.h:25 msgid "SIMPLE" -msgstr "" +msgstr "ЈЕДНОСТАВНО" #: ../gtk/ldap.ui.h:26 msgid "DIGEST-MD5" -msgstr "" +msgstr "ДИГЕСТ-МД5" #: ../gtk/ldap.ui.h:27 msgid "NTLM" -msgstr "" +msgstr "НТЛМ" #: ../gtk/config-uri.ui.h:1 msgid "Specifying a remote configuration URI" -msgstr "" +msgstr "Наводим удаљену путању подешавања" #: ../gtk/config-uri.ui.h:2 msgid "" "This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" "Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" +msgstr "Ово прозорче омогућава подешавање хттп или хттпс адресе када се подешавање добавља на покретању.\nУнесите или измените путању подешавања. Након што притиснете „У реду“, Линфон ће се сам поново покренути како би довукао и унео у налог нова подешавања. " #: ../gtk/config-uri.ui.h:4 msgid "https://" -msgstr "" +msgstr "https://" #: ../gtk/provisioning-fetch.ui.h:1 msgid "Configuring..." -msgstr "" +msgstr "Подешавам..." #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." -msgstr "" +msgstr "Сачекајте док довучем подешавања са сервера..." #: ../coreapi/linphonecore.c:1511 msgid "Ready" @@ -1730,7 +1731,7 @@ msgstr "Спреман" #: ../coreapi/linphonecore.c:2470 msgid "Configuring" -msgstr "" +msgstr "Подешавам" #: ../coreapi/linphonecore.c:2635 msgid "Looking for telephone number destination..." @@ -1791,7 +1792,7 @@ msgstr "У току је тражење стуна..." #: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." -msgstr "" +msgstr "Прикупљање месних ИЦЕ кандидата је у току..." #: ../coreapi/friend.c:33 msgid "Online" @@ -1839,7 +1840,7 @@ msgstr "На чекању" #: ../coreapi/friend.c:66 msgid "Vacation" -msgstr "" +msgstr "На одмору" #: ../coreapi/friend.c:68 msgid "Unknown-bug" @@ -1895,25 +1896,25 @@ msgstr "На позив је одговорио „%s“." #: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." -msgstr "" +msgstr "Несагласно, проверите кодеке или безбедносна подешавања..." #: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 msgid "Incompatible media parameters." -msgstr "" +msgstr "Медијски параметри су несагласни." #: ../coreapi/callbacks.c:560 msgid "We have been resumed." -msgstr "" +msgstr "Наставили смо." #. we are being paused #: ../coreapi/callbacks.c:568 msgid "We are paused by other party." -msgstr "" +msgstr "Друга страна нас је паузирала." #. reINVITE and in-dialogs UPDATE go here #: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." -msgstr "" +msgstr "Позив је освежен удаљеним." #: ../coreapi/callbacks.c:705 msgid "Call terminated." @@ -1938,7 +1939,7 @@ msgstr "Позив је одбијен." #: ../coreapi/callbacks.c:752 msgid "Request timeout." -msgstr "" +msgstr "Истекло је време захтева." #: ../coreapi/callbacks.c:780 msgid "Redirected" @@ -1969,7 +1970,7 @@ msgstr "Уписивање на „%s“ није успело: %s" #: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" -msgstr "" +msgstr "Услуга није доступна, поново покушавам" #: ../coreapi/linphonecall.c:174 #, c-format @@ -1980,6 +1981,6 @@ msgstr "Симбол потврђивања идентитета је „%s“" #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Пропустили сте %i позив." +msgstr[1] "Пропустили сте %i позива." +msgstr[2] "Пропустили сте %i позива." From 9a8236180cffe68418357a1f9e717a8e6a32974a Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 27 Nov 2014 16:59:21 +0100 Subject: [PATCH 231/249] Activate -Werror when building with CMake. --- CMakeLists.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0272d671c..1740cc44f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -107,6 +107,25 @@ endif() add_definitions(-DIN_LINPHONE) +if(MSVC) + set(CMAKE_C_FLAGS "/W3") + set(CMAKE_CXX_FLAGS "/W3") +else() + set(CMAKE_C_FLAGS "-Wall -Wuninitialized -Wdeclaration-after-statement -fno-strict-aliasing -Werror") + set(CMAKE_CXX_FLAGS "-Wall -Wuninitialized -Werror") + if(CMAKE_C_COMPILER_ID STREQUAL "Clang") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments -Wno-array-bounds") + endif() + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -Wno-array-bounds") + endif() + if(APPLE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=unknown-warning-option -Wno-tautological-compare -Wno-unused-function") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unknown-warning-option -Wno-tautological-compare -Wno-unused-function") + endif() +endif() + + set(GETTEXT_PACKAGE "linphone") if(ENABLE_RELATIVE_PREFIX) set(LINPHONE_DATA_DIR ".") From ff42eeab99e1f85c2c3e68e587cc5aecad05dd50 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 28 Nov 2014 10:27:38 +0100 Subject: [PATCH 232/249] Update localization --- po/cat-id-tbl.c | 0 po/cs.po | 2 +- po/de_DE.po | 1984 ----------------------------------------------- po/es.po | 2 +- po/fr.po | 152 ++-- po/hu.po | 2 +- po/it.po | 2 +- po/ja.po | 16 +- po/nb_NO.po | 2 +- po/nl.po | 2 +- po/pl.po | 2 +- po/pt_BR.po | 2 +- po/ru.po | 3 +- po/sv.po | 2 +- po/zh_CN.po | 2 +- po/zh_TW.po | 2 +- 16 files changed, 98 insertions(+), 2079 deletions(-) delete mode 100644 po/cat-id-tbl.c delete mode 100644 po/de_DE.po diff --git a/po/cat-id-tbl.c b/po/cat-id-tbl.c deleted file mode 100644 index e69de29bb..000000000 diff --git a/po/cs.po b/po/cs.po index f6056909d..9df6476d2 100644 --- a/po/cs.po +++ b/po/cs.po @@ -11,7 +11,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:17+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Czech (http://www.transifex.com/projects/p/linphone-gtk/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/de_DE.po b/po/de_DE.po deleted file mode 100644 index c65ead393..000000000 --- a/po/de_DE.po +++ /dev/null @@ -1,1984 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# andreas, 2014 -# Gerhard Stengel , 2011-2012 -# Simon Morlat , 2001 -msgid "" -msgstr "" -"Project-Id-Version: linphone-gtk\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" -"PO-Revision-Date: 2014-11-25 16:45+0000\n" -"Last-Translator: andreas\n" -"Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 -#, c-format -msgid "Call %s" -msgstr "„%s“ anrufen" - -#: ../gtk/calllogs.c:149 ../gtk/friendlist.c:975 -#, c-format -msgid "Send text to %s" -msgstr "Text zu „%s“ schicken" - -#: ../gtk/calllogs.c:232 -#, c-format -msgid "Recent calls (%i)" -msgstr "letzte Anrufe (%i)" - -#: ../gtk/calllogs.c:314 -msgid "n/a" -msgstr "nicht verfügbar" - -#: ../gtk/calllogs.c:317 -msgid "Aborted" -msgstr "Abgebrochen" - -#: ../gtk/calllogs.c:320 -msgid "Missed" -msgstr "Entgangen" - -#: ../gtk/calllogs.c:323 -msgid "Declined" -msgstr "Abgewiesen" - -#: ../gtk/calllogs.c:329 -#, c-format -msgid "%i minute" -msgid_plural "%i minutes" -msgstr[0] "%i Minute" -msgstr[1] "%i Minuten" - -#: ../gtk/calllogs.c:332 -#, c-format -msgid "%i second" -msgid_plural "%i seconds" -msgstr[0] "%i Sekunde" -msgstr[1] "%i Sekunden" - -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "%s\t%s" - -#: ../gtk/calllogs.c:337 -#, c-format -msgid "" -"%s\tQuality: %s\n" -"%s\t%s\t" -msgstr "%s\tQualität: %s\n%s\t%s\t" - -#: ../gtk/calllogs.c:343 -#, c-format -msgid "" -"%s\t\n" -"%s" -msgstr "%s\t\n%s" - -#: ../gtk/conference.c:38 ../gtk/main.ui.h:13 -msgid "Conference" -msgstr "Konferenz" - -#: ../gtk/conference.c:46 -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" -msgstr "Pixmapdatei %s kann nicht gefunden werden." - -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 -msgid "Invalid sip contact !" -msgstr "Ungültiger SIP-Kontakt!" - -#: ../gtk/main.c:107 -msgid "log to stdout some debug information while running." -msgstr "Ausgabe von Debug-Informationen auf stdout während der Laufzeit" - -#: ../gtk/main.c:114 -msgid "path to a file to write logs into." -msgstr "Pfad zu einer Datei, in die Protokolle geschrieben werden." - -#: ../gtk/main.c:121 -msgid "Start linphone with video disabled." -msgstr "Linphone mit ausgeschaltetem Video starten." - -#: ../gtk/main.c:128 -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:135 -msgid "address to call right now" -msgstr "Im Moment anzurufende Adresse" - -#: ../gtk/main.c:142 -msgid "if set automatically answer incoming calls" -msgstr "Falls aktiviert, werden eingehende Anrufe automatisch beantwortet" - -#: ../gtk/main.c:149 -msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "Geben Sie einen Arbeitsordner an (sollte der Installationsordner sein, z. B. C:\\Programme\\Linphone)" - -#: ../gtk/main.c:156 -msgid "Configuration file" -msgstr "Konfigurationsdatei" - -#: ../gtk/main.c:163 -msgid "Run the audio assistant" -msgstr "Starte den Audio-Assistent" - -#: ../gtk/main.c:1085 -#, 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" -"If you answer no, this person will be temporarily blacklisted." -msgstr "%s möchte Sie zu seiner Kontaktliste hinzufügen.\nMöchten Sie ihm erlauben, Ihren Anwesenheitsstatus zu sehen, oder ihn zu Ihrer Kontaktliste hinzufügen?\nWenn Sie mit Nein antworten, wird diese Person vorläufig blockiert." - -#: ../gtk/main.c:1162 -#, c-format -msgid "" -"Please enter your password for username %s\n" -" at realm %s:" -msgstr "Bitte geben Sie Ihr Passwort für den Benutzernamen %s\n für Bereich %s ein:" - -#: ../gtk/main.c:1283 -msgid "Call error" -msgstr "Anruf fehlgeschlagen" - -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 -msgid "Call ended" -msgstr "Anruf beendet" - -#: ../gtk/main.c:1289 -msgid "Incoming call" -msgstr "Eingehender Anruf" - -#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 -msgid "Answer" -msgstr "Annehmen" - -#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 -msgid "Decline" -msgstr "Abweisen" - -#: ../gtk/main.c:1299 -msgid "Call paused" -msgstr "Anruf wird gehalten" - -#: ../gtk/main.c:1299 -#, c-format -msgid "by %s" -msgstr "von %s" - -#: ../gtk/main.c:1366 -#, c-format -msgid "%s proposed to start video. Do you accept ?" -msgstr "%s schlägt vor, eine Videoübertragung zu starten. Nehmen Sie an?" - -#: ../gtk/main.c:1528 -msgid "Website link" -msgstr "Website-Verknüpfung" - -#: ../gtk/main.c:1577 -msgid "Linphone - a video internet phone" -msgstr "Linphone - ein Internet-Video-Telefon" - -#: ../gtk/main.c:1669 -#, c-format -msgid "%s (Default)" -msgstr "%s (Vorgabe)" - -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 -#, c-format -msgid "We are transferred to %s" -msgstr "Vermittlung nach %s" - -#: ../gtk/main.c:2016 -msgid "" -"No sound cards have been detected on this computer.\n" -"You won't be able to send or receive audio calls." -msgstr "Auf diesem Rechner können keine Soundkarten gefunden werden.\nSie können keine Audio-Anrufe tätigen oder entgegennehmen." - -#: ../gtk/main.c:2157 -msgid "A free SIP video-phone" -msgstr "Ein freies SIP-Video-Telefon" - -#: ../gtk/friendlist.c:505 -msgid "Add to addressbook" -msgstr "Zum Adressbuch hinzufügen" - -#: ../gtk/friendlist.c:691 -msgid "Presence status" -msgstr "Anwesenheitsstatus" - -#: ../gtk/friendlist.c:709 ../gtk/propertybox.c:552 ../gtk/contact.ui.h:1 -msgid "Name" -msgstr "Name" - -#: ../gtk/friendlist.c:721 -msgid "Call" -msgstr "Anrufen" - -#: ../gtk/friendlist.c:726 -msgid "Chat" -msgstr "Chat" - -#: ../gtk/friendlist.c:756 -#, c-format -msgid "Search in %s directory" -msgstr "Im %s-Verzeichnis suchen" - -#: ../gtk/friendlist.c:976 -#, c-format -msgid "Edit contact '%s'" -msgstr "Kontakt „%s“ bearbeiten" - -#: ../gtk/friendlist.c:977 -#, c-format -msgid "Delete contact '%s'" -msgstr "Kontakt „%s“ löschen" - -#: ../gtk/friendlist.c:978 -#, c-format -msgid "Delete chat history of '%s'" -msgstr "Lösche Gesprächshistorie von '%s'" - -#: ../gtk/friendlist.c:1029 -#, c-format -msgid "Add new contact from %s directory" -msgstr "Einen neuen Kontakt aus dem %s-Verzeichnis hinzufügen" - -#: ../gtk/propertybox.c:558 -msgid "Rate (Hz)" -msgstr "Rate (Hz)" - -#: ../gtk/propertybox.c:564 -msgid "Status" -msgstr "Status" - -#: ../gtk/propertybox.c:570 -msgid "IP Bitrate (kbit/s)" -msgstr "IP Bit-Rate (kbit/s)" - -#: ../gtk/propertybox.c:577 -msgid "Parameters" -msgstr "Parameter" - -#: ../gtk/propertybox.c:620 ../gtk/propertybox.c:763 -msgid "Enabled" -msgstr "Freigegeben" - -#: ../gtk/propertybox.c:622 ../gtk/propertybox.c:763 -msgid "Disabled" -msgstr "Gesperrt" - -#: ../gtk/propertybox.c:809 -msgid "Account" -msgstr "Konto" - -#: ../gtk/propertybox.c:1072 -msgid "English" -msgstr "Englisch" - -#: ../gtk/propertybox.c:1073 -msgid "French" -msgstr "Französisch" - -#: ../gtk/propertybox.c:1074 -msgid "Swedish" -msgstr "Schwedisch" - -#: ../gtk/propertybox.c:1075 -msgid "Italian" -msgstr "Italienisch" - -#: ../gtk/propertybox.c:1076 -msgid "Spanish" -msgstr "Spanisch" - -#: ../gtk/propertybox.c:1077 -msgid "Brazilian Portugese" -msgstr "Brasilianisches Portugiesisch" - -#: ../gtk/propertybox.c:1078 -msgid "Polish" -msgstr "Polnisch" - -#: ../gtk/propertybox.c:1079 -msgid "German" -msgstr "Deutsch" - -#: ../gtk/propertybox.c:1080 -msgid "Russian" -msgstr "Russisch" - -#: ../gtk/propertybox.c:1081 -msgid "Japanese" -msgstr "Japanisch" - -#: ../gtk/propertybox.c:1082 -msgid "Dutch" -msgstr "Niederländisch" - -#: ../gtk/propertybox.c:1083 -msgid "Hungarian" -msgstr "Ungarisch" - -#: ../gtk/propertybox.c:1084 -msgid "Czech" -msgstr "Tschechisch" - -#: ../gtk/propertybox.c:1085 -msgid "Chinese" -msgstr "Chinesisch" - -#: ../gtk/propertybox.c:1086 -msgid "Traditional Chinese" -msgstr "Traditionelles Chinesisch" - -#: ../gtk/propertybox.c:1087 -msgid "Norwegian" -msgstr "Norwegisch" - -#: ../gtk/propertybox.c:1088 -msgid "Hebrew" -msgstr "Hebräisch" - -#: ../gtk/propertybox.c:1089 -msgid "Serbian" -msgstr "Serbisch" - -#: ../gtk/propertybox.c:1156 -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:1234 -msgid "None" -msgstr "Keinen" - -#: ../gtk/propertybox.c:1238 -msgid "SRTP" -msgstr "SRTP" - -#: ../gtk/propertybox.c:1244 -msgid "ZRTP" -msgstr "ZRTP" - -#: ../gtk/update.c:80 -#, c-format -msgid "" -"A more recent version is availalble from %s.\n" -"Would you like to open a browser to download it ?" -msgstr "Eine neuere Version ist von %s verfügbar.\nMöchten Sie einen Browser zum Herunterladen öffnen?" - -#: ../gtk/update.c:91 -msgid "You are running the lastest version." -msgstr "Sie verwenden bereits die aktuellste Version." - -#: ../gtk/buddylookup.c:85 -msgid "Firstname, Lastname" -msgstr "Vorname, Nachname" - -#: ../gtk/buddylookup.c:160 -msgid "Error communicating with server." -msgstr "Fehler bei der Kommunikation mit dem Server." - -#: ../gtk/buddylookup.c:164 -msgid "Connecting..." -msgstr "Verbinden..." - -#: ../gtk/buddylookup.c:168 -msgid "Connected" -msgstr "Verbunden" - -#: ../gtk/buddylookup.c:172 -msgid "Receiving data..." -msgstr "Daten werden empfangen..." - -#: ../gtk/buddylookup.c:180 -#, c-format -msgid "Found %i contact" -msgid_plural "Found %i contacts" -msgstr[0] "%i Kontakt gefunden" -msgstr[1] "%i Kontakte gefunden" - -#: ../gtk/setupwizard.c:34 -msgid "" -"Welcome !\n" -"This assistant will help you to use a SIP account for your calls." -msgstr "Willkommen!\nDieser Assistent wird Ihnen dabei helfen, ein SIP-Konto für Ihre Anrufe zu verwenden." - -#: ../gtk/setupwizard.c:43 -msgid "Create an account on linphone.org" -msgstr "Ein Konto bei linphone.org erstellen." - -#: ../gtk/setupwizard.c:44 -msgid "I have already a linphone.org account and I just want to use it" -msgstr "Ich habe bereits ein Konto bei linphone.org und möchte es jetzt benutzen." - -#: ../gtk/setupwizard.c:45 -msgid "I have already a sip account and I just want to use it" -msgstr "Ich habe bereits ein SIP-Konto und möchte es jetzt benutzen." - -#: ../gtk/setupwizard.c:46 -msgid "I want to specify a remote configuration URI" -msgstr "Ich möchte eine URI zur Fernkonfiguration angeben" - -#: ../gtk/setupwizard.c:89 -msgid "Enter your linphone.org username" -msgstr "Geben Sie Ihren Benutzernamen bei linphone.org ein." - -#: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 -msgid "Username:" -msgstr "Benutzername:" - -#: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 -msgid "Password:" -msgstr "Passwort:" - -#: ../gtk/setupwizard.c:124 -msgid "Enter your account informations" -msgstr "Geben Sie Ihre Zugangsdaten ein." - -#: ../gtk/setupwizard.c:140 -msgid "Username*" -msgstr "Benutzername*" - -#: ../gtk/setupwizard.c:141 -msgid "Password*" -msgstr "Passwort*" - -#: ../gtk/setupwizard.c:144 -msgid "Domain*" -msgstr "Domäne*" - -#: ../gtk/setupwizard.c:145 -msgid "Proxy" -msgstr "Proxy" - -#: ../gtk/setupwizard.c:317 -msgid "(*) Required fields" -msgstr "(*) erforderliche Felder" - -#: ../gtk/setupwizard.c:318 -msgid "Username: (*)" -msgstr "Benutzername: (*)" - -#: ../gtk/setupwizard.c:320 -msgid "Password: (*)" -msgstr "Passwort: (*)" - -#: ../gtk/setupwizard.c:322 -msgid "Email: (*)" -msgstr "E-Mail: (*)" - -#: ../gtk/setupwizard.c:324 -msgid "Confirm your password: (*)" -msgstr "Bestätigen Sie Ihr Passwort: (*)" - -#: ../gtk/setupwizard.c:338 -msgid "Keep me informed with linphone updates" -msgstr "Halte mich über linphone Aktualisierungen auf dem laufenden" - -#: ../gtk/setupwizard.c:394 -msgid "" -"Error, account not validated, username already used or server unreachable.\n" -"Please go back and try again." -msgstr "Fehler, Konto kann nicht bestätigt werden. Der Benutzername wird bereits\nverwendet oder der Server ist unerreichbar.\nBitte gehen Sie zurück und versuchen Sie es noch einmal." - -#: ../gtk/setupwizard.c:405 -msgid "Thank you. Your account is now configured and ready for use." -msgstr "Danke. Ihr Konto ist nun fertig eingerichtet und kann verwendet werden." - -#: ../gtk/setupwizard.c:413 -msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" -"Then come back here and press Next button." -msgstr "Bitte bestätigen Sie Ihr Konto, indem Sie auf die Verknüpfung klicken, die wir Ihnen soeben per E-Mail geschickt haben.\nDanach gehen Sie hierher zurück und drücken auf „Vor“." - -#: ../gtk/setupwizard.c:600 -msgid "SIP account configuration assistant" -msgstr "SIP-Konto-Einrichtungsassistent" - -#: ../gtk/setupwizard.c:618 -msgid "Welcome to the account setup assistant" -msgstr "Willkommen zum Konto-Einrichtungsassistenten" - -#: ../gtk/setupwizard.c:623 -msgid "Account setup assistant" -msgstr "Konto-Einrichtungsassistent" - -#: ../gtk/setupwizard.c:629 -msgid "Configure your account (step 1/1)" -msgstr "Konto einrichten (Schritt 1/1)" - -#: ../gtk/setupwizard.c:634 -msgid "Enter your sip username (step 1/1)" -msgstr "Geben Sie Ihren SIP-Benutzernamen ein (Schritt 1/1)" - -#: ../gtk/setupwizard.c:638 -msgid "Enter account information (step 1/2)" -msgstr "Geben Sie Ihre Zugangsdaten ein (Schritt 1/2)" - -#: ../gtk/setupwizard.c:647 -msgid "Validation (step 2/2)" -msgstr "Bestätigung (Schritt 2/2)" - -#: ../gtk/setupwizard.c:652 -msgid "Error" -msgstr "Fehler" - -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 -msgid "Terminating" -msgstr "Fertigstellen" - -#: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 -#, c-format -msgid "Call #%i" -msgstr "Anruf #%i" - -#: ../gtk/incall_view.c:155 -#, c-format -msgid "Transfer to call #%i with %s" -msgstr "Vermittlung zum Anruf #%i mit %s" - -#: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 -msgid "Not used" -msgstr "Nicht verwendet" - -#: ../gtk/incall_view.c:221 -msgid "ICE not activated" -msgstr "ICE nicht aktiviert" - -#: ../gtk/incall_view.c:223 -msgid "ICE failed" -msgstr "ICE fehlgeschlagen" - -#: ../gtk/incall_view.c:225 -msgid "ICE in progress" -msgstr "ICE läuft" - -#: ../gtk/incall_view.c:227 -msgid "Going through one or more NATs" -msgstr "Ein oder mehrere NATs werden durchquert" - -#: ../gtk/incall_view.c:229 -msgid "Direct" -msgstr "Direkt" - -#: ../gtk/incall_view.c:231 -msgid "Through a relay server" -msgstr "Über einen Relay-Server" - -#: ../gtk/incall_view.c:239 -msgid "uPnP not activated" -msgstr "uPnP nicht aktiviert" - -#: ../gtk/incall_view.c:241 -msgid "uPnP in progress" -msgstr "uPnP läuft" - -#: ../gtk/incall_view.c:243 -msgid "uPnp not available" -msgstr "uPnp nicht verfügbar" - -#: ../gtk/incall_view.c:245 -msgid "uPnP is running" -msgstr "uPnP läuft" - -#: ../gtk/incall_view.c:247 -msgid "uPnP failed" -msgstr "uPnP fehlgeschlagen" - -#: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 -msgid "Direct or through server" -msgstr "Direkt oder über Server" - -#: ../gtk/incall_view.c:267 ../gtk/incall_view.c:279 -#, c-format -msgid "" -"download: %f\n" -"upload: %f (kbit/s)" -msgstr "Herunterladen: %f\nHochladen: %f (kbit/s)" - -#: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 -#, c-format -msgid "%ix%i @ %f fps" -msgstr "%ix%i @ %f bps" - -#: ../gtk/incall_view.c:304 -#, c-format -msgid "%.3f seconds" -msgstr "%.3f Sekunden" - -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 -msgid "Hang up" -msgstr "Auflegen" - -#: ../gtk/incall_view.c:511 -msgid "Calling..." -msgstr "Verbindungsaufbau..." - -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 -msgid "00::00::00" -msgstr "00::00::00" - -#: ../gtk/incall_view.c:525 -msgid "Incoming call" -msgstr "Eingehender Anruf" - -#: ../gtk/incall_view.c:562 -msgid "good" -msgstr "gut" - -#: ../gtk/incall_view.c:564 -msgid "average" -msgstr "durchschnittlich" - -#: ../gtk/incall_view.c:566 -msgid "poor" -msgstr "schlecht" - -#: ../gtk/incall_view.c:568 -msgid "very poor" -msgstr "sehr schlecht" - -#: ../gtk/incall_view.c:570 -msgid "too bad" -msgstr "zu schlecht" - -#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 -msgid "unavailable" -msgstr "nicht verfügbar" - -#: ../gtk/incall_view.c:679 -msgid "Secured by SRTP" -msgstr "Gesichert durch SRTP" - -#: ../gtk/incall_view.c:685 -#, c-format -msgid "Secured by ZRTP - [auth token: %s]" -msgstr "Gesichert durch ZRTP - [Auth.-Token: %s]" - -#: ../gtk/incall_view.c:691 -msgid "Set unverified" -msgstr "Auf „Ungeprüft“ setzen" - -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 -msgid "Set verified" -msgstr "Auf „Geprüft“ setzen" - -#: ../gtk/incall_view.c:722 -msgid "In conference" -msgstr "In Konferenz" - -#: ../gtk/incall_view.c:722 -msgid "In call" -msgstr "Im Gespräch" - -#: ../gtk/incall_view.c:758 -msgid "Paused call" -msgstr "Gehaltener Anruf" - -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i::%02i::%02i" - -#: ../gtk/incall_view.c:794 -msgid "Call ended." -msgstr "Anruf beendet." - -#: ../gtk/incall_view.c:825 -msgid "Transfer in progress" -msgstr "Vermittlung läuft" - -#: ../gtk/incall_view.c:828 -msgid "Transfer done." -msgstr "Vermittlung abgeschlossen." - -#: ../gtk/incall_view.c:831 -msgid "Transfer failed." -msgstr "Vermittlung fehlgeschlagen." - -#: ../gtk/incall_view.c:875 -msgid "Resume" -msgstr "Fortsetzen" - -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 -msgid "Pause" -msgstr "Halten" - -#: ../gtk/incall_view.c:948 -#, c-format -msgid "" -"Recording into\n" -"%s %s" -msgstr "Recording into\n%s %s" - -#: ../gtk/incall_view.c:948 -msgid "(Paused)" -msgstr "(pausiert)" - -#: ../gtk/loginframe.c:88 -#, c-format -msgid "Please enter login information for %s" -msgstr "Bitte geben Sie die Anmeldeinformationen für %s ein." - -#: ../gtk/config-fetching.c:57 -#, c-format -msgid "fetching from %s" -msgstr "abrufen von %s" - -#: ../gtk/config-fetching.c:73 -#, c-format -msgid "Downloading of remote configuration from %s failed." -msgstr "Herunterladen der Fernkonfiguration von %s fehlgeschlagen" - -#: ../gtk/audio_assistant.c:98 -msgid "No voice detected" -msgstr "Keine Stimme ermittelt" - -#: ../gtk/audio_assistant.c:99 -msgid "Too low" -msgstr "zu gering" - -#: ../gtk/audio_assistant.c:100 -msgid "Good" -msgstr "gut" - -#: ../gtk/audio_assistant.c:101 -msgid "Too loud" -msgstr "zu laut" - -#: ../gtk/audio_assistant.c:318 -msgid "" -"Welcome !\n" -"This assistant will help you to configure audio settings for Linphone" -msgstr "Willkommen!\nDieser Assistent wird Ihnen dabei helfen, die Audio-Einstellungen für Linphone vorzunehmen." - -#: ../gtk/audio_assistant.c:328 -msgid "Capture device" -msgstr "Aufnahmegerät" - -#: ../gtk/audio_assistant.c:329 -msgid "Recorded volume" -msgstr "aufgenommene Lautstärke" - -#: ../gtk/audio_assistant.c:333 -msgid "No voice" -msgstr "Keine Stimme" - -#: ../gtk/audio_assistant.c:369 -msgid "Playback device" -msgstr "Wiedergabegerät" - -#: ../gtk/audio_assistant.c:370 -msgid "Play three beeps" -msgstr "spiele drei Pieptöne ab" - -#: ../gtk/audio_assistant.c:403 -msgid "Press the record button and say some words" -msgstr "Drücken Sie den Aufnahmeknopf und sagen Sie etwas" - -#: ../gtk/audio_assistant.c:404 -msgid "Listen to your record voice" -msgstr "Hören Sie das Aufgenommene" - -#: ../gtk/audio_assistant.c:433 -msgid "Let's start Linphone now" -msgstr "Linphone jetzt starten" - -#: ../gtk/audio_assistant.c:496 -msgid "Audio Assistant" -msgstr "Audio-Assistant" - -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 -msgid "Audio assistant" -msgstr "Audio-Assistant" - -#: ../gtk/audio_assistant.c:511 -msgid "Mic Gain calibration" -msgstr "Einrichtung MIkrofonverstärker" - -#: ../gtk/audio_assistant.c:517 -msgid "Speaker volume calibration" -msgstr "Einrichtung Lautstärke" - -#: ../gtk/audio_assistant.c:522 -msgid "Record and Play" -msgstr "aufnehmen und abspielen" - -#: ../gtk/main.ui.h:1 -msgid "Callee name" -msgstr "Name des Angerufenen" - -#: ../gtk/main.ui.h:2 -msgid "Send" -msgstr "Senden" - -#: ../gtk/main.ui.h:3 -msgid "End conference" -msgstr "Konferenz beenden" - -#: ../gtk/main.ui.h:7 -msgid "Record this call to an audio file" -msgstr "Speichere den Anruf in eine Audio-Datei" - -#: ../gtk/main.ui.h:8 -msgid "Video" -msgstr "Video" - -#: ../gtk/main.ui.h:10 -msgid "Mute" -msgstr "Stumm" - -#: ../gtk/main.ui.h:11 -msgid "Transfer" -msgstr "Vermittlung" - -#: ../gtk/main.ui.h:14 -msgid "In call" -msgstr "Im Gespräch" - -#: ../gtk/main.ui.h:15 -msgid "Duration" -msgstr "Dauer" - -#: ../gtk/main.ui.h:16 -msgid "Call quality rating" -msgstr "Bewertung der Verbindungsqualität" - -#: ../gtk/main.ui.h:17 -msgid "All users" -msgstr "Alle Teilnehmer" - -#: ../gtk/main.ui.h:18 -msgid "Online users" -msgstr "Angemeldete Teilnehmer" - -#: ../gtk/main.ui.h:19 -msgid "ADSL" -msgstr "ADSL" - -#: ../gtk/main.ui.h:20 -msgid "Fiber Channel" -msgstr "Glasfaserkabel" - -#: ../gtk/main.ui.h:21 -msgid "Default" -msgstr "Vorgabe" - -#: ../gtk/main.ui.h:22 -msgid "_Options" -msgstr "_Optionen" - -#: ../gtk/main.ui.h:23 -msgid "Set configuration URI" -msgstr "Konfigurations URI angeben" - -#: ../gtk/main.ui.h:24 -msgid "Always start video" -msgstr "Video immer starten" - -#: ../gtk/main.ui.h:25 -msgid "Enable self-view" -msgstr "Selbstansicht ein" - -#: ../gtk/main.ui.h:26 -msgid "_Help" -msgstr "_Hilfe" - -#: ../gtk/main.ui.h:27 -msgid "Show debug window" -msgstr "Debug-Fenster anzeigen" - -#: ../gtk/main.ui.h:28 -msgid "_Homepage" -msgstr "_Homepage" - -#: ../gtk/main.ui.h:29 -msgid "Check _Updates" -msgstr "Auf _Aktualisierungen überprüfen" - -#: ../gtk/main.ui.h:30 -msgid "Account assistant" -msgstr "Konto-Einrichtungsassistent" - -#: ../gtk/main.ui.h:32 -msgid "SIP address or phone number:" -msgstr "SIP-Adresse oder Telefonnummer:" - -#: ../gtk/main.ui.h:33 -msgid "Initiate a new call" -msgstr "Einen neuen Anruf beginnen" - -#: ../gtk/main.ui.h:34 -msgid "Contacts" -msgstr "Kontakte" - -#: ../gtk/main.ui.h:35 -msgid "Search" -msgstr "Suchen" - -#: ../gtk/main.ui.h:36 -msgid "Add contacts from directory" -msgstr "Kontakte aus einem Verzeichnis hinzufügen" - -#: ../gtk/main.ui.h:37 -msgid "Add contact" -msgstr "Kontakt hinzufügen" - -#: ../gtk/main.ui.h:38 -msgid "Recent calls" -msgstr "Letzte Gespräche" - -#: ../gtk/main.ui.h:39 -msgid "My current identity:" -msgstr "Aktuelle Identität:" - -#: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 -msgid "Username" -msgstr "Benutzername" - -#: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 -msgid "Password" -msgstr "Passwort" - -#: ../gtk/main.ui.h:42 -msgid "Internet connection:" -msgstr "Internetverbindung:" - -#: ../gtk/main.ui.h:43 -msgid "Automatically log me in" -msgstr "Automatisch anmelden" - -#: ../gtk/main.ui.h:44 ../gtk/password.ui.h:3 -msgid "UserID" -msgstr "Benutzer-ID" - -#: ../gtk/main.ui.h:45 -msgid "Login information" -msgstr "Anmeldeinformationen" - -#: ../gtk/main.ui.h:46 -msgid "Welcome !" -msgstr "Willkommen !" - -#: ../gtk/main.ui.h:47 -msgid "Delete" -msgstr "Löschen" - -#: ../gtk/about.ui.h:1 -msgid "About linphone" -msgstr "Über Linphone" - -#: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" -msgstr "(C) Belledonne Communications,2010\n" - -#: ../gtk/about.ui.h:4 -msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "Ein Internet-Video-Telefon, das das Standard-SIP-Protokoll (RFC3261) verwendet." - -#: ../gtk/about.ui.h:5 -msgid "" -"fr: Simon Morlat\n" -"en: Simon Morlat and Delphine Perreau\n" -"it: Alberto Zanoni \n" -"de: Jean-Jacques Sarton \n" -"sv: Daniel Nylander \n" -"es: Jesus Benitez \n" -"ja: YAMAGUCHI YOSHIYA \n" -"pt_BR: Rafael Caesar Lenzi \n" -"pl: Robert Nasiadek \n" -"cs: Petr Pisar \n" -"hu: anonymous\n" -"he: Eli Zaretskii \n" -msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n" - -#: ../gtk/contact.ui.h:2 -msgid "SIP Address" -msgstr "SIP-Adresse" - -#: ../gtk/contact.ui.h:3 -msgid "Show this contact presence status" -msgstr "Anwesenheitsstatus dieses Kontakts zeigen" - -#: ../gtk/contact.ui.h:4 -msgid "Allow this contact to see my presence status" -msgstr "Diesem Kontakt erlauben, meinen Anwesenheitsstatus zu sehen" - -#: ../gtk/contact.ui.h:5 -msgid "Contact information" -msgstr "Kontaktinformationen" - -#: ../gtk/log.ui.h:1 -msgid "Linphone debug window" -msgstr "Linphone Debug-Fenster" - -#: ../gtk/log.ui.h:2 -msgid "Scroll to end" -msgstr "Ans Ende rollen" - -#: ../gtk/password.ui.h:1 -msgid "Linphone - Authentication required" -msgstr "Linphone - Authentifikation erforderlich" - -#: ../gtk/password.ui.h:2 -msgid "Please enter the domain password" -msgstr "Bitte das Passwort der Domäne eingeben" - -#: ../gtk/call_logs.ui.h:1 -msgid "Call history" -msgstr "Anrufchronik" - -#: ../gtk/call_logs.ui.h:2 -msgid "Clear all" -msgstr "Alle löschen" - -#: ../gtk/call_logs.ui.h:3 -msgid "Call back" -msgstr "Anrufen" - -#: ../gtk/sip_account.ui.h:1 -msgid "Linphone - Configure a SIP account" -msgstr "Linphone - SIP-Konto einrichten" - -#: ../gtk/sip_account.ui.h:2 -msgid "Your SIP identity:" -msgstr "Ihre SIP-Identität:" - -#: ../gtk/sip_account.ui.h:3 -msgid "Looks like sip:@" -msgstr "Sieht aus wie sip:@" - -#: ../gtk/sip_account.ui.h:4 -msgid "sip:" -msgstr "sip:" - -#: ../gtk/sip_account.ui.h:5 -msgid "SIP Proxy address:" -msgstr "SIP-Proxy-Adresse:" - -#: ../gtk/sip_account.ui.h:6 -msgid "Looks like sip:" -msgstr "Sieht aus wie sip:" - -#: ../gtk/sip_account.ui.h:7 -msgid "Registration duration (sec):" -msgstr "Registrierungsdauer (sec):" - -#: ../gtk/sip_account.ui.h:8 -msgid "Contact params (optional):" -msgstr "Kontaktdetails (optional)" - -#: ../gtk/sip_account.ui.h:9 -msgid "AVPF regular RTCP interval (sec):" -msgstr "AVPF Standard RTCP Interval (sek):" - -#: ../gtk/sip_account.ui.h:10 -msgid "Route (optional):" -msgstr "Route (optional):" - -#: ../gtk/sip_account.ui.h:11 -msgid "Transport" -msgstr "Übertragung" - -#: ../gtk/sip_account.ui.h:12 -msgid "Register" -msgstr "Registrieren" - -#: ../gtk/sip_account.ui.h:13 -msgid "Publish presence information" -msgstr "Anwesenheitsstatus veröffentlichen" - -#: ../gtk/sip_account.ui.h:14 -msgid "Enable AVPF" -msgstr "Aktiviere AVPF" - -#: ../gtk/sip_account.ui.h:15 -msgid "Configure a SIP account" -msgstr "SIP-Konto einrichten" - -#: ../gtk/parameters.ui.h:1 -msgid "anonymous" -msgstr "Anonym" - -#: ../gtk/parameters.ui.h:2 -msgid "GSSAPI" -msgstr "GSSAPI" - -#: ../gtk/parameters.ui.h:3 -msgid "SASL" -msgstr "SASL" - -#: ../gtk/parameters.ui.h:4 -msgid "default soundcard" -msgstr "Standard-Soundkarte" - -#: ../gtk/parameters.ui.h:5 -msgid "a sound card" -msgstr "eine Soundkarte" - -#: ../gtk/parameters.ui.h:6 -msgid "default camera" -msgstr "Standard-Kamera" - -#: ../gtk/parameters.ui.h:7 -msgid "CIF" -msgstr "CIF" - -#: ../gtk/parameters.ui.h:8 -msgid "Audio codecs" -msgstr "Audio-Codecs" - -#: ../gtk/parameters.ui.h:9 -msgid "Video codecs" -msgstr "Video-Codecs" - -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 -msgid "C" -msgstr "C" - -#: ../gtk/parameters.ui.h:11 -msgid "SIP (UDP)" -msgstr "SIP (UDP)" - -#: ../gtk/parameters.ui.h:12 -msgid "SIP (TCP)" -msgstr "SIP (TCP)" - -#: ../gtk/parameters.ui.h:13 -msgid "SIP (TLS)" -msgstr "SIP (TLS)" - -#: ../gtk/parameters.ui.h:14 -msgid "Settings" -msgstr "Einstellungen" - -#: ../gtk/parameters.ui.h:15 -msgid "Set Maximum Transmission Unit:" -msgstr "Maximum Transmission Unit setzen:" - -#: ../gtk/parameters.ui.h:16 -msgid "Send DTMFs as SIP info" -msgstr "DTMFs als SIP-Info senden" - -#: ../gtk/parameters.ui.h:17 -msgid "Use IPv6 instead of IPv4" -msgstr "IPv6 statt IPv4 verwenden" - -#: ../gtk/parameters.ui.h:18 -msgid "Transport" -msgstr "Übertragung" - -#: ../gtk/parameters.ui.h:19 -msgid "Media encryption type" -msgstr "Verschlüsselungstyp der Medien" - -#: ../gtk/parameters.ui.h:20 -msgid "Video RTP/UDP:" -msgstr "Video RTP/UDP:" - -#: ../gtk/parameters.ui.h:21 -msgid "Audio RTP/UDP:" -msgstr "Audio RTP/UDP:" - -#: ../gtk/parameters.ui.h:22 -msgid "Fixed" -msgstr "Fest" - -#: ../gtk/parameters.ui.h:23 -msgid "Media encryption is mandatory" -msgstr "Medienverschlüsselung erzwingen" - -#: ../gtk/parameters.ui.h:24 -msgid "Tunnel" -msgstr "Tunnel" - -#: ../gtk/parameters.ui.h:25 -msgid "DSCP fields" -msgstr "DSCP-Felder" - -#: ../gtk/parameters.ui.h:26 -msgid "SIP/TCP port" -msgstr "SIP/TCP Port" - -#: ../gtk/parameters.ui.h:27 -msgid "SIP/UDP port" -msgstr "SIP/UDP Port" - -#: ../gtk/parameters.ui.h:28 -msgid "Network protocol and ports" -msgstr "Netzwerkprotokoll und Ports" - -#: ../gtk/parameters.ui.h:29 -msgid "Direct connection to the Internet" -msgstr "Direkte Verbindung ins Internet" - -#: ../gtk/parameters.ui.h:30 -msgid "Behind NAT / Firewall (specify gateway IP )" -msgstr "Hinter NAT / Firewall (Gateway IP angeben)" - -#: ../gtk/parameters.ui.h:31 -msgid "Behind NAT / Firewall (use STUN to resolve)" -msgstr "Hinter NAT / Firewall (STUN verwenden)" - -#: ../gtk/parameters.ui.h:32 -msgid "Behind NAT / Firewall (use ICE)" -msgstr "Hinter NAT / Firewall (ICE verwenden)" - -#: ../gtk/parameters.ui.h:33 -msgid "Behind NAT / Firewall (use uPnP)" -msgstr "Hinter NAT / Firewall (uPnP verwenden)" - -#: ../gtk/parameters.ui.h:34 -msgid "Public IP address:" -msgstr "Öffentliche IP-Adresse:" - -#: ../gtk/parameters.ui.h:35 -msgid "Stun server:" -msgstr "STUN-Server:" - -#: ../gtk/parameters.ui.h:36 -msgid "NAT and Firewall" -msgstr "NAT und Firewall" - -#: ../gtk/parameters.ui.h:37 -msgid "Network settings" -msgstr "Netzwerkeinstellungen" - -#: ../gtk/parameters.ui.h:38 -msgid "Ring sound:" -msgstr "Klingelton:" - -#: ../gtk/parameters.ui.h:39 -msgid "ALSA special device (optional):" -msgstr "Spezielles ALSA-Gerät (optional):" - -#: ../gtk/parameters.ui.h:40 -msgid "Capture device:" -msgstr "Aufnahmegerät:" - -#: ../gtk/parameters.ui.h:41 -msgid "Ring device:" -msgstr "Gerät für Klingelton:" - -#: ../gtk/parameters.ui.h:42 -msgid "Playback device:" -msgstr "Wiedergabegerät:" - -#: ../gtk/parameters.ui.h:43 -msgid "Enable echo cancellation" -msgstr "Echounterdrückung ein" - -#: ../gtk/parameters.ui.h:44 -msgid "Audio" -msgstr "Audio" - -#: ../gtk/parameters.ui.h:45 -msgid "Video input device:" -msgstr "Video-Aufnahmegerät:" - -#: ../gtk/parameters.ui.h:46 -msgid "Prefered video resolution:" -msgstr "Bevorzugte Video-Auflösung:" - -#: ../gtk/parameters.ui.h:47 -msgid "Video output method:" -msgstr "Methode zur Videoausgabe" - -#: ../gtk/parameters.ui.h:48 -msgid "Video" -msgstr "Video" - -#: ../gtk/parameters.ui.h:49 -msgid "Multimedia settings" -msgstr "Multimedia-Einstellungen" - -#: ../gtk/parameters.ui.h:50 -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 -msgid "Your display name (eg: John Doe):" -msgstr "Ihr angezeigter Name (z. B. Heinz Müller):" - -#: ../gtk/parameters.ui.h:52 -msgid "Your username:" -msgstr "Ihr Benutzername:" - -#: ../gtk/parameters.ui.h:53 -msgid "Your resulting SIP address:" -msgstr "Sich ergebende SIP-Adresse:" - -#: ../gtk/parameters.ui.h:54 -msgid "Default identity" -msgstr "Standard-Identität" - -#: ../gtk/parameters.ui.h:55 -msgid "Wizard" -msgstr "Assistent" - -#: ../gtk/parameters.ui.h:56 -msgid "Add" -msgstr "Hinzufügen" - -#: ../gtk/parameters.ui.h:57 -msgid "Edit" -msgstr "Bearbeiten" - -#: ../gtk/parameters.ui.h:58 -msgid "Remove" -msgstr "Entfernen" - -#: ../gtk/parameters.ui.h:59 -msgid "Proxy accounts" -msgstr "Proxy-Konten" - -#: ../gtk/parameters.ui.h:60 -msgid "Erase all passwords" -msgstr "Alle Passwörter löschen" - -#: ../gtk/parameters.ui.h:61 -msgid "Privacy" -msgstr "Privatsphäre" - -#: ../gtk/parameters.ui.h:62 -msgid "Manage SIP Accounts" -msgstr "SIP-Konten verwalten" - -#: ../gtk/parameters.ui.h:63 ../gtk/tunnel_config.ui.h:4 -msgid "Enable" -msgstr "Freigeben" - -#: ../gtk/parameters.ui.h:64 ../gtk/tunnel_config.ui.h:5 -msgid "Disable" -msgstr "Sperren" - -#: ../gtk/parameters.ui.h:65 -msgid "Codecs" -msgstr "Codecs" - -#: ../gtk/parameters.ui.h:66 -msgid "0 stands for \"unlimited\"" -msgstr "0 bedeutet „unbegrenzt“" - -#: ../gtk/parameters.ui.h:67 -msgid "Upload speed limit in Kbit/sec:" -msgstr "Upload-Bandbreite (kbit/sec):" - -#: ../gtk/parameters.ui.h:68 -msgid "Download speed limit in Kbit/sec:" -msgstr "Download-Bandbreite (kbit/sec):" - -#: ../gtk/parameters.ui.h:69 -msgid "Enable adaptive rate control" -msgstr "Adaptive Ratenregelung ein" - -#: ../gtk/parameters.ui.h:70 -msgid "" -"Adaptive rate control is a technique to dynamically guess the available " -"bandwidth during a call." -msgstr "Adaptive Ratenregelung ist eine Technik zur dynamischen Abschätzung der zur Verfügung stehenden Bandbreite während eines Anrufs." - -#: ../gtk/parameters.ui.h:71 -msgid "Bandwidth control" -msgstr "Bandbreiten-Einstellungen" - -#: ../gtk/parameters.ui.h:72 -msgid "Codecs" -msgstr "Codecs" - -#: ../gtk/parameters.ui.h:73 -msgid "Language" -msgstr "Sprache" - -#: ../gtk/parameters.ui.h:74 -msgid "Show advanced settings" -msgstr "Fortgeschrittene Einstellungen anzeigen" - -#: ../gtk/parameters.ui.h:75 -msgid "Level" -msgstr "Detaillierung" - -#: ../gtk/parameters.ui.h:76 -msgid "User interface" -msgstr "Benutzeroberfläche" - -#: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 -msgid "Server address:" -msgstr "Server-Adresse" - -#: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 -msgid "Authentication method:" -msgstr "Authentifizierungsmethode" - -#: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "Hinweisschild" - -#: ../gtk/parameters.ui.h:81 -msgid "LDAP Account setup" -msgstr "LDAP-Kontoeinrichtung" - -#: ../gtk/parameters.ui.h:82 -msgid "LDAP" -msgstr "LDAP" - -#: ../gtk/parameters.ui.h:83 -msgid "Done" -msgstr "Fertig" - -#: ../gtk/buddylookup.ui.h:1 -msgid "Search contacts in directory" -msgstr "Kontakte im Verzeichnis suchen" - -#: ../gtk/buddylookup.ui.h:2 -msgid "Add to my list" -msgstr "Zur Kontaktliste hinzufügen" - -#: ../gtk/buddylookup.ui.h:3 -msgid "Search somebody" -msgstr "Kontaktsuche" - -#: ../gtk/waiting.ui.h:1 -msgid "Linphone" -msgstr "Linphone" - -#: ../gtk/waiting.ui.h:2 -msgid "Please wait" -msgstr "Bitte warten" - -#: ../gtk/dscp_settings.ui.h:1 -msgid "DSCP settings" -msgstr "DSCP-Einstellungen" - -#: ../gtk/dscp_settings.ui.h:2 -msgid "SIP" -msgstr "SIP" - -#: ../gtk/dscp_settings.ui.h:3 -msgid "Audio RTP stream" -msgstr "Audio-RTP-Datenstrom" - -#: ../gtk/dscp_settings.ui.h:4 -msgid "Video RTP stream" -msgstr "Video-RTP-Datenstrom" - -#: ../gtk/dscp_settings.ui.h:5 -msgid "Set DSCP values (in hexadecimal)" -msgstr "DSCP-Werte setzen (hexadezimal)" - -#: ../gtk/call_statistics.ui.h:1 -msgid "Call statistics" -msgstr "Anrufstatistik" - -#: ../gtk/call_statistics.ui.h:2 -msgid "Audio codec" -msgstr "Audio-Codec" - -#: ../gtk/call_statistics.ui.h:3 -msgid "Video codec" -msgstr "Video-Codec" - -#: ../gtk/call_statistics.ui.h:4 -msgid "Audio IP bandwidth usage" -msgstr "Genutzte IP-Bandbreite Audio" - -#: ../gtk/call_statistics.ui.h:5 -msgid "Audio Media connectivity" -msgstr "Audio-Konnektivität" - -#: ../gtk/call_statistics.ui.h:6 -msgid "Video IP bandwidth usage" -msgstr "Genutzte IP-Bandbreite Video" - -#: ../gtk/call_statistics.ui.h:7 -msgid "Video Media connectivity" -msgstr "Video-Konnektivität" - -#: ../gtk/call_statistics.ui.h:8 -msgid "Round trip time" -msgstr "Umlaufzeit" - -#: ../gtk/call_statistics.ui.h:9 -msgid "Video resolution received" -msgstr "Videoauflösung empfangen" - -#: ../gtk/call_statistics.ui.h:10 -msgid "Video resolution sent" -msgstr "Videoauflösung gesendet" - -#: ../gtk/call_statistics.ui.h:11 -msgid "RTP profile" -msgstr "RTP-Profil" - -#: ../gtk/call_statistics.ui.h:12 -msgid "Call statistics and information" -msgstr "Anrufstatistik und -informationen" - -#: ../gtk/tunnel_config.ui.h:1 -msgid "Configure VoIP tunnel" -msgstr "VoIP-Tunnel einrichten" - -#: ../gtk/tunnel_config.ui.h:2 -msgid "Host" -msgstr "Host" - -#: ../gtk/tunnel_config.ui.h:3 -msgid "Port" -msgstr "Port" - -#: ../gtk/tunnel_config.ui.h:6 -msgid "Configure tunnel" -msgstr "Tunnel einrichten" - -#: ../gtk/tunnel_config.ui.h:9 -msgid "Configure http proxy (optional)" -msgstr "Configure http proxy (optional)" - -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - -#: ../gtk/ldap.ui.h:1 -msgid "LDAP Settings" -msgstr "LDAP-Einstellungen" - -#: ../gtk/ldap.ui.h:6 -msgid "Use TLS Connection" -msgstr "TLS-Verbindung verwenden" - -#: ../gtk/ldap.ui.h:7 -msgid "Not yet available" -msgstr "Aktuell nicht verfügbar" - -#: ../gtk/ldap.ui.h:8 -msgid "Connection" -msgstr "Verbindung" - -#: ../gtk/ldap.ui.h:9 -msgid "Bind DN" -msgstr "Bind-DN" - -#: ../gtk/ldap.ui.h:10 -msgid "Authname" -msgstr "Authentifizierungsname" - -#: ../gtk/ldap.ui.h:11 -msgid "Realm" -msgstr "Bereich" - -#: ../gtk/ldap.ui.h:12 -msgid "SASL" -msgstr "SASL" - -#: ../gtk/ldap.ui.h:13 -msgid "Base object:" -msgstr "Basis-Objekt:" - -#: ../gtk/ldap.ui.h:15 -#, no-c-format -msgid "Filter (%s for name):" -msgstr "Filter (%s nach Name):" - -#: ../gtk/ldap.ui.h:16 -msgid "Name Attribute:" -msgstr "Name:" - -#: ../gtk/ldap.ui.h:17 -msgid "SIP address attribute:" -msgstr "SIP-Adresse:" - -#: ../gtk/ldap.ui.h:18 -msgid "Attributes to query:" -msgstr "Sucheigenschaft:" - -#: ../gtk/ldap.ui.h:19 -msgid "Search" -msgstr "Suche" - -#: ../gtk/ldap.ui.h:20 -msgid "Timeout for search:" -msgstr "Zeitüberschreitung bei der Suche:" - -#: ../gtk/ldap.ui.h:21 -msgid "Max results:" -msgstr "Max Ergebnisse:" - -#: ../gtk/ldap.ui.h:22 -msgid "Follow Aliases" -msgstr "folge Pseudonymen" - -#: ../gtk/ldap.ui.h:23 -msgid "Miscellaneous" -msgstr "Sonstiges" - -#: ../gtk/ldap.ui.h:24 -msgid "ANONYMOUS" -msgstr "ANONYMOUS" - -#: ../gtk/ldap.ui.h:25 -msgid "SIMPLE" -msgstr "SIMPLE" - -#: ../gtk/ldap.ui.h:26 -msgid "DIGEST-MD5" -msgstr "DIGEST-MD5" - -#: ../gtk/ldap.ui.h:27 -msgid "NTLM" -msgstr "NTLM" - -#: ../gtk/config-uri.ui.h:1 -msgid "Specifying a remote configuration URI" -msgstr "Eine URI zur FErnkonfiguration angeben" - -#: ../gtk/config-uri.ui.h:2 -msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "Diese Maske erlaubt Ihnen für das Laden der Konfiguration beim Programmstart eine http- oder https-Adresse anzugeben.\nBitte geben Sie unten die Konfigurations-URI ein oder ändern diese. Nach dem Bestätigen mit OK wird Linphone automatisch neustarten, um die neuen Einstellungen zu übernehmen." - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" -msgstr "https://" - -#: ../gtk/provisioning-fetch.ui.h:1 -msgid "Configuring..." -msgstr "Einstellen..." - -#: ../gtk/provisioning-fetch.ui.h:2 -msgid "Please wait while fetching configuration from server..." -msgstr "Bitte warten Sie während die Einstellungen vom Server abgerufen werden..." - -#: ../coreapi/linphonecore.c:1511 -msgid "Ready" -msgstr "Bereit" - -#: ../coreapi/linphonecore.c:2470 -msgid "Configuring" -msgstr "Einstellen" - -#: ../coreapi/linphonecore.c:2635 -msgid "Looking for telephone number destination..." -msgstr "Telefonnummernziel wird gesucht..." - -#: ../coreapi/linphonecore.c:2637 -msgid "Could not resolve this number." -msgstr "Diese Nummer kann nicht aufgelöst werden." - -#. must be known at that time -#: ../coreapi/linphonecore.c:2919 -msgid "Contacting" -msgstr "Verbindungsaufbau" - -#: ../coreapi/linphonecore.c:2924 -msgid "Could not call" -msgstr "Anruf kann nicht getätigt werden." - -#: ../coreapi/linphonecore.c:3074 -msgid "Sorry, we have reached the maximum number of simultaneous calls" -msgstr "Die maximale Anzahl der gleichzeitigen Anrufe ist erreicht." - -#: ../coreapi/linphonecore.c:3233 -msgid "is contacting you" -msgstr "ruft Sie an" - -#: ../coreapi/linphonecore.c:3234 -msgid " and asked autoanswer." -msgstr " und fragt nach automatischer Antwort." - -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 -msgid "Modifying call parameters..." -msgstr "Die Anrufparameter werden verändert..." - -#: ../coreapi/linphonecore.c:3700 -msgid "Connected." -msgstr "Verbunden." - -#: ../coreapi/linphonecore.c:3725 -msgid "Call aborted" -msgstr "Anruf abgebrochen" - -#: ../coreapi/linphonecore.c:3915 -msgid "Could not pause the call" -msgstr "Anruf kann nicht gehalten werden" - -#: ../coreapi/linphonecore.c:3919 -msgid "Pausing the current call..." -msgstr "Aktueller Anruf wird gehalten..." - -#: ../coreapi/misc.c:438 -msgid "Stun lookup in progress..." -msgstr "STUN-Ermittlung läuft..." - -#: ../coreapi/misc.c:619 -msgid "ICE local candidates gathering in progress..." -msgstr "Lokale Kandidaten für ICE werden zusammengestellt..." - -#: ../coreapi/friend.c:33 -msgid "Online" -msgstr "Angemeldet" - -#: ../coreapi/friend.c:36 -msgid "Busy" -msgstr "Besetzt" - -#: ../coreapi/friend.c:39 -msgid "Be right back" -msgstr "Bald wieder da" - -#: ../coreapi/friend.c:42 -msgid "Away" -msgstr "Abwesend" - -#: ../coreapi/friend.c:45 -msgid "On the phone" -msgstr "Im Gespräch" - -#: ../coreapi/friend.c:48 -msgid "Out to lunch" -msgstr "Beim Essen" - -#: ../coreapi/friend.c:51 -msgid "Do not disturb" -msgstr "Nicht stören" - -#: ../coreapi/friend.c:54 -msgid "Moved" -msgstr "Umgezogen" - -#: ../coreapi/friend.c:57 -msgid "Using another messaging service" -msgstr "Ein anderer Nachrichtendienst wird benutzt" - -#: ../coreapi/friend.c:60 -msgid "Offline" -msgstr "Abgemeldet" - -#: ../coreapi/friend.c:63 -msgid "Pending" -msgstr "Ausstehend" - -#: ../coreapi/friend.c:66 -msgid "Vacation" -msgstr "Urlaub" - -#: ../coreapi/friend.c:68 -msgid "Unknown-bug" -msgstr "Unbekannter Fehler" - -#: ../coreapi/proxy.c:319 -msgid "" -"The sip proxy address you entered is invalid, it must start with \"sip:\" " -"followed by a hostname." -msgstr "Die von Ihnen eingegebene SIP-Proxy-Adresse ist ungültig, sie muss mit „sip:“ gefolgt vom Hostnamen beginnen." - -#: ../coreapi/proxy.c:325 -msgid "" -"The sip identity you entered is invalid.\n" -"It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "Die von Ihnen eingegebene SIP-Identität ist ungültig.\nSie sollte wie sip:benutzername@proxydomain aussehen, also z.B. sip:alice@beispiel.net" - -#: ../coreapi/proxy.c:1377 -#, c-format -msgid "Could not login as %s" -msgstr "Anmeldung als %s fehlgeschlagen" - -#: ../coreapi/callbacks.c:383 -msgid "Remote ringing." -msgstr "Klingeln bei der Gegenseite." - -#: ../coreapi/callbacks.c:404 -msgid "Remote ringing..." -msgstr "Klingeln bei der Gegenseite..." - -#: ../coreapi/callbacks.c:414 -msgid "Early media." -msgstr "nicht kompatibel, prüfe Codecs oder Sicherheitseinstellungen..." - -#: ../coreapi/callbacks.c:475 -#, c-format -msgid "Call with %s is paused." -msgstr "Anruf mit %s wird gehalten." - -#: ../coreapi/callbacks.c:488 -#, c-format -msgid "Call answered by %s - on hold." -msgstr "Der von %s entgegengenommene Anruf wird gehalten." - -#: ../coreapi/callbacks.c:498 -msgid "Call resumed." -msgstr "Anruf fortgesetzt." - -#: ../coreapi/callbacks.c:502 -#, c-format -msgid "Call answered by %s." -msgstr "Anruf wird von %s entgegengenommen." - -#: ../coreapi/callbacks.c:525 -msgid "Incompatible, check codecs or security settings..." -msgstr "Inkompatibel, prüfe Codecs oder Sicherheitseinstellungen..." - -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 -msgid "Incompatible media parameters." -msgstr "Inkompatible Medienparameter." - -#: ../coreapi/callbacks.c:560 -msgid "We have been resumed." -msgstr "Anruf wird fortgesetzt." - -#. we are being paused -#: ../coreapi/callbacks.c:568 -msgid "We are paused by other party." -msgstr "Anruf wird von der Gegenseite gehalten." - -#. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 -msgid "Call is updated by remote." -msgstr "Anruf ist von der Gegenseite aktualisiert worden." - -#: ../coreapi/callbacks.c:705 -msgid "Call terminated." -msgstr "Anruf beendet." - -#: ../coreapi/callbacks.c:733 -msgid "User is busy." -msgstr "Teilnehmer ist besetzt." - -#: ../coreapi/callbacks.c:734 -msgid "User is temporarily unavailable." -msgstr "Teilnehmer zur Zeit nicht verfügbar." - -#. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 -msgid "User does not want to be disturbed." -msgstr "Teilnehmer möchte nicht gestört werden." - -#: ../coreapi/callbacks.c:737 -msgid "Call declined." -msgstr "Anruf abgewiesen" - -#: ../coreapi/callbacks.c:752 -msgid "Request timeout." -msgstr "Zeitüberschreitung bei der Anfrage" - -#: ../coreapi/callbacks.c:780 -msgid "Redirected" -msgstr "Umgeleitet" - -#: ../coreapi/callbacks.c:835 -msgid "Call failed." -msgstr "Anruf fehlgeschlagen." - -#: ../coreapi/callbacks.c:913 -#, c-format -msgid "Registration on %s successful." -msgstr "Registrierung auf %s erfolgreich." - -#: ../coreapi/callbacks.c:914 -#, c-format -msgid "Unregistration on %s done." -msgstr "Abmeldung von %s ist erfolgt." - -#: ../coreapi/callbacks.c:932 -msgid "no response timeout" -msgstr "Zeitüberschreitung bei der Antwort" - -#: ../coreapi/callbacks.c:935 -#, c-format -msgid "Registration on %s failed: %s" -msgstr "Registrierung auf %s fehlgeschlagen: %s" - -#: ../coreapi/callbacks.c:942 -msgid "Service unavailable, retrying" -msgstr "Service nicht verfügbar, versuche erneut" - -#: ../coreapi/linphonecall.c:174 -#, c-format -msgid "Authentication token is %s" -msgstr "Authentifizierungs-Token ist %s" - -#: ../coreapi/linphonecall.c:3020 -#, 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." diff --git a/po/es.po b/po/es.po index 366c345de..a1d349dcf 100644 --- a/po/es.po +++ b/po/es.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:17+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/linphone-gtk/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/fr.po b/po/fr.po index 173b4b260..ce23e2726 100644 --- a/po/fr.po +++ b/po/fr.po @@ -3,15 +3,17 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Cqnqrd , 2014 +# Gautier Pelloux-Prayer , 2014 +# Gautier Pelloux-Prayer , 2014 +# Gautier Pelloux-Prayer , 2014 # Simon Morlat , 2001 msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" -"PO-Revision-Date: 2014-11-19 18:33+0000\n" -"Last-Translator: Cqnqrd \n" +"PO-Revision-Date: 2014-11-27 15:47+0000\n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: French (http://www.transifex.com/projects/p/linphone-gtk/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -67,7 +69,7 @@ msgstr[1] "%i secondes" #: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 #, c-format msgid "%s\t%s" -msgstr "" +msgstr "%s\t%s" #: ../gtk/calllogs.c:337 #, c-format @@ -81,7 +83,7 @@ msgstr "%s\tQualité: %s\n%s\t%s\t" msgid "" "%s\t\n" "%s" -msgstr "" +msgstr "%s\t\n%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -233,7 +235,7 @@ msgstr "Appeler" #: ../gtk/friendlist.c:726 msgid "Chat" -msgstr "" +msgstr "Chat" #: ../gtk/friendlist.c:756 #, c-format @@ -483,7 +485,7 @@ msgstr "Mot de passe: (*)" #: ../gtk/setupwizard.c:322 msgid "Email: (*)" -msgstr "" +msgstr "Email : (*)" #: ../gtk/setupwizard.c:324 msgid "Confirm your password: (*)" @@ -491,7 +493,7 @@ msgstr "Confirmez votre mot de passe: (*)" #: ../gtk/setupwizard.c:338 msgid "Keep me informed with linphone updates" -msgstr "" +msgstr "Me tenir informer des mises à jour de Linphone " #: ../gtk/setupwizard.c:394 msgid "" @@ -617,12 +619,12 @@ msgstr "" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format msgid "%ix%i @ %f fps" -msgstr "" +msgstr "%ix%i @ %f fps" #: ../gtk/incall_view.c:304 #, c-format msgid "%.3f seconds" -msgstr "" +msgstr "%.3f secondes" #: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 msgid "Hang up" @@ -727,7 +729,7 @@ msgstr "Pause" msgid "" "Recording into\n" "%s %s" -msgstr "" +msgstr "Enregistrement dans\n%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" @@ -750,19 +752,19 @@ msgstr "Le chargement de la configuration depuis %s a échoué." #: ../gtk/audio_assistant.c:98 msgid "No voice detected" -msgstr "" +msgstr "Voix non détectée" #: ../gtk/audio_assistant.c:99 msgid "Too low" -msgstr "" +msgstr "Trop bas" #: ../gtk/audio_assistant.c:100 msgid "Good" -msgstr "" +msgstr "Bien" #: ../gtk/audio_assistant.c:101 msgid "Too loud" -msgstr "" +msgstr "Trop bruyant" #: ../gtk/audio_assistant.c:318 msgid "" @@ -872,11 +874,11 @@ msgstr "En ligne" #: ../gtk/main.ui.h:19 msgid "ADSL" -msgstr "" +msgstr "ADSL" #: ../gtk/main.ui.h:20 msgid "Fiber Channel" -msgstr "" +msgstr "Fibre optique" #: ../gtk/main.ui.h:21 msgid "Default" @@ -884,7 +886,7 @@ msgstr "Par défaut" #: ../gtk/main.ui.h:22 msgid "_Options" -msgstr "" +msgstr "_Options" #: ../gtk/main.ui.h:23 msgid "Set configuration URI" @@ -968,7 +970,7 @@ msgstr "Me connecter automatiquement" #: ../gtk/main.ui.h:44 ../gtk/password.ui.h:3 msgid "UserID" -msgstr "" +msgstr "ID utilisateur" #: ../gtk/main.ui.h:45 msgid "Login information" @@ -988,7 +990,7 @@ msgstr "A propos de linphone" #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications,2010\n" -msgstr "" +msgstr "(C) Belledonne Communications, 2010\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1008,7 +1010,7 @@ msgid "" "cs: Petr Pisar \n" "hu: anonymous\n" "he: Eli Zaretskii \n" -msgstr "" +msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1032,7 +1034,7 @@ msgstr "Fenêtre de débogage de linphone" #: ../gtk/log.ui.h:2 msgid "Scroll to end" -msgstr "" +msgstr "Défiler jusqu'à la fin" #: ../gtk/password.ui.h:1 msgid "Linphone - Authentication required" @@ -1068,7 +1070,7 @@ msgstr "De la forme sip:@" #: ../gtk/sip_account.ui.h:4 msgid "sip:" -msgstr "" +msgstr "sip:" #: ../gtk/sip_account.ui.h:5 msgid "SIP Proxy address:" @@ -1116,11 +1118,11 @@ msgstr "Configurer un compte SIP" #: ../gtk/parameters.ui.h:1 msgid "anonymous" -msgstr "" +msgstr "anonyme" #: ../gtk/parameters.ui.h:2 msgid "GSSAPI" -msgstr "" +msgstr "GSSAPI" #: ../gtk/parameters.ui.h:3 msgid "SASL" @@ -1140,7 +1142,7 @@ msgstr "camera par défaut" #: ../gtk/parameters.ui.h:7 msgid "CIF" -msgstr "" +msgstr "CIF" #: ../gtk/parameters.ui.h:8 msgid "Audio codecs" @@ -1152,19 +1154,19 @@ msgstr "Codecs vidéo" #: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 msgid "C" -msgstr "" +msgstr "C" #: ../gtk/parameters.ui.h:11 msgid "SIP (UDP)" -msgstr "" +msgstr "SIP (UDP)" #: ../gtk/parameters.ui.h:12 msgid "SIP (TCP)" -msgstr "" +msgstr "SIP (TCP)" #: ../gtk/parameters.ui.h:13 msgid "SIP (TLS)" -msgstr "" +msgstr "SIP (TLS)" #: ../gtk/parameters.ui.h:14 msgid "Settings" @@ -1192,11 +1194,11 @@ msgstr "Type d'encryption media" #: ../gtk/parameters.ui.h:20 msgid "Video RTP/UDP:" -msgstr "" +msgstr "Vidéo RTP / UDP :" #: ../gtk/parameters.ui.h:21 msgid "Audio RTP/UDP:" -msgstr "" +msgstr "Audio RTP / UDP :" #: ../gtk/parameters.ui.h:22 msgid "Fixed" @@ -1204,11 +1206,11 @@ msgstr "Fixe" #: ../gtk/parameters.ui.h:23 msgid "Media encryption is mandatory" -msgstr "" +msgstr "Le chiffrement media est obligatoire" #: ../gtk/parameters.ui.h:24 msgid "Tunnel" -msgstr "" +msgstr "Tunnel" #: ../gtk/parameters.ui.h:25 msgid "DSCP fields" @@ -1216,11 +1218,11 @@ msgstr "Champs DSCP" #: ../gtk/parameters.ui.h:26 msgid "SIP/TCP port" -msgstr "" +msgstr "Port SIP / TCP" #: ../gtk/parameters.ui.h:27 msgid "SIP/UDP port" -msgstr "" +msgstr "Port SIP / UDP" #: ../gtk/parameters.ui.h:28 msgid "Network protocol and ports" @@ -1268,7 +1270,7 @@ msgstr "Sonnerie:" #: ../gtk/parameters.ui.h:39 msgid "ALSA special device (optional):" -msgstr "" +msgstr "Appareil ALSA spécifique (optionnel) :" #: ../gtk/parameters.ui.h:40 msgid "Capture device:" @@ -1402,7 +1404,7 @@ msgstr "Gestion de la bande passante" #: ../gtk/parameters.ui.h:72 msgid "Codecs" -msgstr "" +msgstr "Codecs" #: ../gtk/parameters.ui.h:73 msgid "Language" @@ -1430,7 +1432,7 @@ msgstr "Méthode d'authentification:" #: ../gtk/parameters.ui.h:80 msgid "label" -msgstr "" +msgstr "label" #: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" @@ -1438,7 +1440,7 @@ msgstr "Configuration LDAP" #: ../gtk/parameters.ui.h:82 msgid "LDAP" -msgstr "" +msgstr "LDAP" #: ../gtk/parameters.ui.h:83 msgid "Done" @@ -1470,15 +1472,15 @@ msgstr "Réglages DSCP" #: ../gtk/dscp_settings.ui.h:2 msgid "SIP" -msgstr "" +msgstr "SIP" #: ../gtk/dscp_settings.ui.h:3 msgid "Audio RTP stream" -msgstr "" +msgstr "Flux RTP audio" #: ../gtk/dscp_settings.ui.h:4 msgid "Video RTP stream" -msgstr "" +msgstr "Flux RTP vidéo" #: ../gtk/dscp_settings.ui.h:5 msgid "Set DSCP values (in hexadecimal)" @@ -1542,7 +1544,7 @@ msgstr "Hôte" #: ../gtk/tunnel_config.ui.h:3 msgid "Port" -msgstr "" +msgstr "Port" #: ../gtk/tunnel_config.ui.h:6 msgid "Configure tunnel" @@ -1554,63 +1556,63 @@ msgstr "Configuration d'un proxy http (optionel)" #: ../gtk/keypad.ui.h:1 msgid "D" -msgstr "" +msgstr "D" #: ../gtk/keypad.ui.h:2 msgid "#" -msgstr "" +msgstr "#" #: ../gtk/keypad.ui.h:3 msgid "0" -msgstr "" +msgstr "0" #: ../gtk/keypad.ui.h:4 msgid "*" -msgstr "" +msgstr "*" #: ../gtk/keypad.ui.h:6 msgid "9" -msgstr "" +msgstr "9" #: ../gtk/keypad.ui.h:7 msgid "8" -msgstr "" +msgstr "8" #: ../gtk/keypad.ui.h:8 msgid "7" -msgstr "" +msgstr "7" #: ../gtk/keypad.ui.h:9 msgid "B" -msgstr "" +msgstr "B" #: ../gtk/keypad.ui.h:10 msgid "6" -msgstr "" +msgstr "6" #: ../gtk/keypad.ui.h:11 msgid "5" -msgstr "" +msgstr "5" #: ../gtk/keypad.ui.h:12 msgid "4" -msgstr "" +msgstr "4" #: ../gtk/keypad.ui.h:13 msgid "A" -msgstr "" +msgstr "A" #: ../gtk/keypad.ui.h:14 msgid "3" -msgstr "" +msgstr "3" #: ../gtk/keypad.ui.h:15 msgid "2" -msgstr "" +msgstr "2" #: ../gtk/keypad.ui.h:16 msgid "1" -msgstr "" +msgstr "1" #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" @@ -1634,11 +1636,11 @@ msgstr "" #: ../gtk/ldap.ui.h:10 msgid "Authname" -msgstr "" +msgstr "Nom d'authentification" #: ../gtk/ldap.ui.h:11 msgid "Realm" -msgstr "" +msgstr "Realm" #: ../gtk/ldap.ui.h:12 msgid "SASL" @@ -1646,16 +1648,16 @@ msgstr "SASL" #: ../gtk/ldap.ui.h:13 msgid "Base object:" -msgstr "" +msgstr "Object de base :" #: ../gtk/ldap.ui.h:15 #, no-c-format msgid "Filter (%s for name):" -msgstr "" +msgstr "Filtre (nom avec %s) : " #: ../gtk/ldap.ui.h:16 msgid "Name Attribute:" -msgstr "" +msgstr "Attribut nom :" #: ../gtk/ldap.ui.h:17 msgid "SIP address attribute:" @@ -1687,19 +1689,19 @@ msgstr "Divers" #: ../gtk/ldap.ui.h:24 msgid "ANONYMOUS" -msgstr "" +msgstr "ANONYME" #: ../gtk/ldap.ui.h:25 msgid "SIMPLE" -msgstr "" +msgstr "SIMPLE" #: ../gtk/ldap.ui.h:26 msgid "DIGEST-MD5" -msgstr "" +msgstr "DIGEST-MD5" #: ../gtk/ldap.ui.h:27 msgid "NTLM" -msgstr "" +msgstr "NTLM" #: ../gtk/config-uri.ui.h:1 msgid "Specifying a remote configuration URI" @@ -1713,7 +1715,7 @@ msgstr "Cette boite de dialogue vous permet de spécifier une addresse http ou h #: ../gtk/config-uri.ui.h:4 msgid "https://" -msgstr "" +msgstr "https://" #: ../gtk/provisioning-fetch.ui.h:1 msgid "Configuring..." @@ -1762,7 +1764,7 @@ msgstr "et sollicite un décrochage automatique." #: ../coreapi/linphonecore.c:3234 msgid "." -msgstr "" +msgstr "." #: ../coreapi/linphonecore.c:3352 msgid "Modifying call parameters..." @@ -1790,7 +1792,7 @@ msgstr "Découverte STUN en cours" #: ../coreapi/misc.c:619 msgid "ICE local candidates gathering in progress..." -msgstr "" +msgstr "Collection des candidats locaux ICE en cours..." #: ../coreapi/friend.c:33 msgid "Online" @@ -1894,7 +1896,7 @@ msgstr "Appel répondu par %s." #: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." -msgstr "" +msgstr "Incompatible, vérfiez les codecs ou les paramètres de sécurité..." #: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 msgid "Incompatible media parameters." @@ -1912,7 +1914,7 @@ msgstr "L'appel a été mis en attente." #. reINVITE and in-dialogs UPDATE go here #: ../coreapi/callbacks.c:602 msgid "Call is updated by remote." -msgstr "" +msgstr "L'appel est modifié par la partie distante." #: ../coreapi/callbacks.c:705 msgid "Call terminated." @@ -1937,7 +1939,7 @@ msgstr "Appel décliné." #: ../coreapi/callbacks.c:752 msgid "Request timeout." -msgstr "" +msgstr "Délai d'attente de la requête dépassé." #: ../coreapi/callbacks.c:780 msgid "Redirected" @@ -1968,7 +1970,7 @@ msgstr "Echec de l'enregistrement sur %s: %s" #: ../coreapi/callbacks.c:942 msgid "Service unavailable, retrying" -msgstr "" +msgstr "Service indisponible, nouvelle tentative" #: ../coreapi/linphonecall.c:174 #, c-format diff --git a/po/hu.po b/po/hu.po index 792868436..d620e646b 100644 --- a/po/hu.po +++ b/po/hu.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:16+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Hungarian (http://www.transifex.com/projects/p/linphone-gtk/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/it.po b/po/it.po index d9d6c0e41..a7e15fd13 100644 --- a/po/it.po +++ b/po/it.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:16+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Italian (http://www.transifex.com/projects/p/linphone-gtk/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/ja.po b/po/ja.po index 5a48f3008..cc365010a 100644 --- a/po/ja.po +++ b/po/ja.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" -"PO-Revision-Date: 2014-11-26 14:34+0000\n" +"PO-Revision-Date: 2014-11-28 09:19+0000\n" "Last-Translator: Alexander\n" "Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/language/ja/)\n" "MIME-Version: 1.0\n" @@ -487,7 +487,7 @@ msgstr "パスワードを再入力: (*)" #: ../gtk/setupwizard.c:338 msgid "Keep me informed with linphone updates" -msgstr "" +msgstr "アップデートでLinphoneを常に最新にする" #: ../gtk/setupwizard.c:394 msgid "" @@ -593,11 +593,11 @@ msgstr "" #: ../gtk/incall_view.c:245 msgid "uPnP is running" -msgstr "" +msgstr "uPnP作動中" #: ../gtk/incall_view.c:247 msgid "uPnP failed" -msgstr "" +msgstr "uPnP失敗" #: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 msgid "Direct or through server" @@ -896,7 +896,7 @@ msgstr "" #: ../gtk/main.ui.h:26 msgid "_Help" -msgstr "" +msgstr "_ヘルプ" #: ../gtk/main.ui.h:27 msgid "Show debug window" @@ -956,7 +956,7 @@ msgstr "パスワード" #: ../gtk/main.ui.h:42 msgid "Internet connection:" -msgstr "" +msgstr "インターネット接続:" #: ../gtk/main.ui.h:43 msgid "Automatically log me in" @@ -1004,7 +1004,7 @@ msgid "" "cs: Petr Pisar \n" "hu: anonymous\n" "he: Eli Zaretskii \n" -msgstr "" +msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1687,7 +1687,7 @@ msgstr "匿名" #: ../gtk/ldap.ui.h:25 msgid "SIMPLE" -msgstr "" +msgstr "シンプル" #: ../gtk/ldap.ui.h:26 msgid "DIGEST-MD5" diff --git a/po/nb_NO.po b/po/nb_NO.po index ed39ef92c..a4b047ac4 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -10,7 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:17+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/linphone-gtk/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/nl.po b/po/nl.po index b64a2cc2d..be7b007b6 100644 --- a/po/nl.po +++ b/po/nl.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:08+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/linphone-gtk/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/pl.po b/po/pl.po index 794b0c996..99a4937a0 100644 --- a/po/pl.po +++ b/po/pl.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:08+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Polish (http://www.transifex.com/projects/p/linphone-gtk/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/pt_BR.po b/po/pt_BR.po index 4cc377ec9..46209da20 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:08+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/linphone-gtk/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/ru.po b/po/ru.po index 50023c1f8..ed3767e23 100644 --- a/po/ru.po +++ b/po/ru.po @@ -4,6 +4,7 @@ # # Translators: # a , 2014 +# a , 2014 # Maxim Prokopyev , 2010 # Simon Morlat , 2001 msgid "" @@ -12,7 +13,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:13+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Russian (http://www.transifex.com/projects/p/linphone-gtk/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/sv.po b/po/sv.po index de2c7ec48..befddf083 100644 --- a/po/sv.po +++ b/po/sv.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:15+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/linphone-gtk/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/zh_CN.po b/po/zh_CN.po index f0897d0da..34f97d9fe 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:15+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/linphone-gtk/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/po/zh_TW.po b/po/zh_TW.po index 22cfa3c0c..673029508 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-11-19 10:39+0100\n" "PO-Revision-Date: 2014-11-19 10:15+0000\n" -"Last-Translator: Cqnqrd \n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/linphone-gtk/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" From bd7a6b2fa7d3f7665aaa8089a5bbce683d7e7798 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 28 Nov 2014 10:49:32 +0100 Subject: [PATCH 233/249] Improve build with CMake. - Install the GTK UI binary under the name linphone instead of linphone-gtk. - Install all sounds and rings. - Install freedesktop files. --- CMakeLists.txt | 2 ++ gtk/CMakeLists.txt | 1 + share/CMakeLists.txt | 37 ++++++++++++++++++++++++++------ share/audio-assistant.desktop.in | 2 +- share/rings/CMakeLists.txt | 21 ++++++++++++++---- 5 files changed, 52 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1740cc44f..7d91afd8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,6 +136,8 @@ set(LINPHONE_PLUGINS_DIR "${LINPHONE_DATA_DIR}/lib/liblinphone/plugins") set(PACKAGE_LOCALE_DIR "${LINPHONE_DATA_DIR}/share/locale") set(PACKAGE_DATA_DIR "${LINPHONE_DATA_DIR}/share") set(PACKAGE_SOUND_DIR "${LINPHONE_DATA_DIR}/share/sounds/linphone") +set(PACKAGE_RING_DIR "${PACKAGE_SOUND_DIR}/rings") +set(PACKAGE_FREEDESKTOP_DIR "${PACKAGE_DATA_DIR}/applications") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/config.h PROPERTIES GENERATED ON) add_definitions(-DHAVE_CONFIG_H) diff --git a/gtk/CMakeLists.txt b/gtk/CMakeLists.txt index ae395500d..6bc50e5e9 100644 --- a/gtk/CMakeLists.txt +++ b/gtk/CMakeLists.txt @@ -66,6 +66,7 @@ set(SOURCE_FILES ) add_executable(linphone-gtk ${SOURCE_FILES}) +set_target_properties(linphone-gtk PROPERTIES OUTPUT_NAME linphone) target_include_directories(linphone-gtk PUBLIC ${GTK2_INCLUDE_DIRS}) target_link_libraries(linphone-gtk linphone ${GTK2_LIBRARIES}) diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt index 03b36a74d..0ae15ce76 100644 --- a/share/CMakeLists.txt +++ b/share/CMakeLists.txt @@ -21,12 +21,37 @@ ############################################################################ install(FILES archived-rootca.pem - RENAME rootca.pem - DESTINATION share/linphone - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) + RENAME rootca.pem + DESTINATION ${PACKAGE_DATA_DIR}/linphone + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ +) -install(FILES ringback.wav - DESTINATION share/sounds/linphone - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) +set(SOUND_FILES + hello16000.wav + hello8000.wav + incoming_chat.wav + ringback.wav +) + +install(FILES ${SOUND_FILES} + DESTINATION ${PACKAGE_SOUND_DIR} + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ +) + +if(ENABLE_GTK_UI) + set(prefix "${CMAKE_INSTALL_PREFIX}") + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/audio-assistant.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/audio-assistant.desktop) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/linphone.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/linphone.desktop) + + set(FREEDESKTOP_FILES + ${CMAKE_CURRENT_BINARY_DIR}/audio-assistant.desktop + ${CMAKE_CURRENT_BINARY_DIR}/linphone.desktop + ) + + install(FILES ${FREEDESKTOP_FILES} + DESTINATION ${PACKAGE_FREEDESKTOP_DIR} + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ + ) +endif() add_subdirectory(rings) diff --git a/share/audio-assistant.desktop.in b/share/audio-assistant.desktop.in index 8f2ef4c54..dc0734bc6 100644 --- a/share/audio-assistant.desktop.in +++ b/share/audio-assistant.desktop.in @@ -6,6 +6,6 @@ Comment[fr]=Assistant audio de Linphone. Comment[ru]=Помощник аудио Linphone Type=Application Exec=linphone --run-audio-assistant -Icon=/usr/local/share/pixmaps/linphone/linphone.png +Icon=@prefix@/share/pixmaps/linphone/linphone.png Terminal=false Categories=Network;Telephony; \ No newline at end of file diff --git a/share/rings/CMakeLists.txt b/share/rings/CMakeLists.txt index 63f2c47ac..6ec2182e2 100644 --- a/share/rings/CMakeLists.txt +++ b/share/rings/CMakeLists.txt @@ -20,7 +20,20 @@ # ############################################################################ -install(FILES oldphone.wav toy-mono.wav - COMPONENT COMP_liblinphone - DESTINATION share/sounds/linphone/rings - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) +set(RING_FILES + bigben.wav + oldphone-mono-30s.caf + oldphone-mono.wav + oldphone.wav + orig.wav + rock.wav + sweet.wav + synth.wav + tapping.wav + toy-mono.wav +) + +install(FILES ${RING_FILES} + DESTINATION ${PACKAGE_RING_DIR} + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ +) From 0e273ee722d292397b0c0eb0174e4d833cb42e11 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 28 Nov 2014 11:01:49 +0100 Subject: [PATCH 234/249] Cleanup translations --- coreapi/friend.c | 2 +- coreapi/linphonecore.c | 2 +- gtk/about.ui | 4 +- gtk/audio_assistant.c | 2 +- gtk/calllogs.c | 6 +- gtk/config-uri.ui | 2 +- gtk/incall_view.c | 6 +- gtk/keypad.ui | 32 ++-- gtk/main.ui | 2 +- gtk/p2pwizard.ui | 4 +- gtk/parameters.ui | 6 +- gtk/setupwizard.c | 2 +- po/cs.po | 304 ++++++++++++++++++---------------- po/de.po | 367 ++++++++++++++++++++++++----------------- po/es.po | 279 +++++++++++++++---------------- po/fr.po | 352 ++++++++++++++++++++++----------------- po/he.po | 273 +++++++++++++++--------------- po/hu.po | 308 ++++++++++++++++++---------------- po/it.po | 261 ++++++++++++++--------------- po/ja.po | 283 ++++++++++++++++--------------- po/nb_NO.po | 278 +++++++++++++++---------------- po/nl.po | 197 ++++++++-------------- po/pl.po | 221 ++++++++++--------------- po/pt_BR.po | 182 ++++++-------------- po/ru.po | 362 +++++++++++++++++++++++----------------- po/sr.po | 351 ++++++++++++++++++++++----------------- po/sv.po | 224 ++++++++++--------------- po/zh_CN.po | 264 +++++++++++++++-------------- po/zh_TW.po | 271 +++++++++++++++--------------- 29 files changed, 2421 insertions(+), 2426 deletions(-) diff --git a/coreapi/friend.c b/coreapi/friend.c index d1ecd560c..44a2a6f82 100644 --- a/coreapi/friend.c +++ b/coreapi/friend.c @@ -65,7 +65,7 @@ const char *linphone_online_status_to_string(LinphoneOnlineStatus ss){ case LinphoneStatusVacation: str=_("Vacation"); default: - str=_("Unknown-bug"); + str=_("Unknown status"); } return str; } diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index b57c18d4f..9a7053d07 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -3234,7 +3234,7 @@ void linphone_core_notify_incoming_call(LinphoneCore *lc, LinphoneCall *call){ tmp=linphone_address_as_string(from_parsed); linphone_address_destroy(from_parsed); barmesg=ortp_strdup_printf("%s %s%s",tmp,_("is contacting you"), - (sal_call_autoanswer_asked(call->op)) ?_(" and asked autoanswer."):_(".")); + (sal_call_autoanswer_asked(call->op)) ?_(" and asked autoanswer."):"."); linphone_core_notify_show_interface(lc); linphone_core_notify_display_status(lc,barmesg); diff --git a/gtk/about.ui b/gtk/about.ui index 38fc2e796..d647724b2 100644 --- a/gtk/about.ui +++ b/gtk/about.ui @@ -5,14 +5,14 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 5 - About linphone + About Linphone False center-on-parent dialog False Linphone undef - (C) Belledonne Communications,2010 + (C) Belledonne Communications, 2010 An internet video phone using the standard SIP (rfc3261) protocol. http://www.linphone.org diff --git a/gtk/audio_assistant.c b/gtk/audio_assistant.c index 83a89a3eb..7d50fedc2 100644 --- a/gtk/audio_assistant.c +++ b/gtk/audio_assistant.c @@ -315,7 +315,7 @@ static void open_mixer(){ static GtkWidget *create_intro(){ GtkWidget *vbox=gtk_vbox_new(FALSE,2); - GtkWidget *label=gtk_label_new(_("Welcome !\nThis assistant will help you to configure audio settings for Linphone")); + GtkWidget *label=gtk_label_new(_("Welcome!\nThis assistant will help you to configure audio settings for Linphone")); gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 2); gtk_widget_show_all(vbox); return vbox; diff --git a/gtk/calllogs.c b/gtk/calllogs.c index a4b86240a..7960708c7 100644 --- a/gtk/calllogs.c +++ b/gtk/calllogs.c @@ -332,7 +332,7 @@ void linphone_gtk_call_log_update(GtkWidget *w){ ngettext("%i second", "%i seconds", duration%60), duration%60); if (status==NULL) { - headtxt=g_markup_printf_escaped(_("%s\t%s"),display,start_date ? start_date : ""); + headtxt=g_markup_printf_escaped("%s\t%s",display,start_date ? start_date : ""); logtxt=g_markup_printf_escaped( _("%s\t" "Quality: %s\n%s\t%s\t"), @@ -340,8 +340,8 @@ void linphone_gtk_call_log_update(GtkWidget *w){ } else { headtxt=g_markup_printf_escaped(_("%s\t%s"),display,start_date ? start_date : ""); logtxt=g_markup_printf_escaped( - _("%s\t" - "\n%s"),addr, status); + "%s\t" + "\n%s",addr, status); } g_free(minutes); g_free(seconds); diff --git a/gtk/config-uri.ui b/gtk/config-uri.ui index 5e864743e..cc99c40db 100644 --- a/gtk/config-uri.ui +++ b/gtk/config-uri.ui @@ -77,7 +77,7 @@ Please enter or modify the configuration URI below. After clicking OK, Linphone True True - https:// + https:// False False True diff --git a/gtk/incall_view.c b/gtk/incall_view.c index 4fa0bd66b..1d1c95e6a 100644 --- a/gtk/incall_view.c +++ b/gtk/incall_view.c @@ -428,7 +428,7 @@ void linphone_gtk_update_video_button(LinphoneCall *call){ gboolean has_video=linphone_call_params_video_enabled(params); gboolean button_sensitive=FALSE; if (call_view==NULL) return; - + button=linphone_gtk_get_widget(call_view,"video_button"); gtk_button_set_image(GTK_BUTTON(button), @@ -715,7 +715,7 @@ void linphone_gtk_in_call_view_set_in_call(LinphoneCall *call){ GtkWidget *call_stats=(GtkWidget*)g_object_get_data(G_OBJECT(callview),"call_stats"); linphone_gtk_in_call_show_video(call); - + display_peer_name_in_label(callee,linphone_call_get_remote_address (call)); gtk_widget_hide(linphone_gtk_get_widget(callview,"answer_decline_panel")); @@ -768,7 +768,7 @@ void linphone_gtk_in_call_view_update_duration(LinphoneCall *call){ int seconds=duration%60; int minutes=(duration/60)%60; int hours=duration/3600; - snprintf(tmp,sizeof(tmp)-1,_("%02i::%02i::%02i"),hours,minutes,seconds); + snprintf(tmp,sizeof(tmp)-1,"%02i::%02i::%02i",hours,minutes,seconds); gtk_label_set_text(GTK_LABEL(duration_label),tmp); } diff --git a/gtk/keypad.ui b/gtk/keypad.ui index 2dd62a0f0..86c957531 100644 --- a/gtk/keypad.ui +++ b/gtk/keypad.ui @@ -29,7 +29,7 @@ True - D + D True True True @@ -45,7 +45,7 @@ - # + # True True True @@ -61,7 +61,7 @@ - 0 + 0 True True True @@ -77,7 +77,7 @@ - * + * True True True @@ -91,7 +91,7 @@ - C + C True True True @@ -107,7 +107,7 @@ - 9 + 9 True True True @@ -123,7 +123,7 @@ - 8 + 8 True True True @@ -139,7 +139,7 @@ - 7 + 7 True True True @@ -153,7 +153,7 @@ - B + B True True True @@ -169,7 +169,7 @@ - 6 + 6 True True True @@ -185,7 +185,7 @@ - 5 + 5 True True True @@ -201,7 +201,7 @@ - 4 + 4 True True True @@ -215,7 +215,7 @@ - A + A True True True @@ -229,7 +229,7 @@ - 3 + 3 True True True @@ -243,7 +243,7 @@ - 2 + 2 True True True @@ -257,7 +257,7 @@ - 1 + 1 40 40 True diff --git a/gtk/main.ui b/gtk/main.ui index 06909d6c6..c66728af5 100644 --- a/gtk/main.ui +++ b/gtk/main.ui @@ -1890,7 +1890,7 @@ True False - <b>Welcome !</b> + <b>Welcome!</b> True diff --git a/gtk/p2pwizard.ui b/gtk/p2pwizard.ui index e8e6703ee..111f46ff5 100644 --- a/gtk/p2pwizard.ui +++ b/gtk/p2pwizard.ui @@ -8,8 +8,8 @@ True - Welcome ! -This wizard will help you to setup a SIP account. + Welcome! +This wizard will help you to setup a SIP account. True GTK_JUSTIFY_CENTER diff --git a/gtk/parameters.ui b/gtk/parameters.ui index 7705e1319..aa8480aa9 100644 --- a/gtk/parameters.ui +++ b/gtk/parameters.ui @@ -2538,7 +2538,7 @@ True False - label + label 1 @@ -2550,7 +2550,7 @@ True False - label + label 1 @@ -2564,7 +2564,7 @@ True False - label + label 1 diff --git a/gtk/setupwizard.c b/gtk/setupwizard.c index 1cb86f3af..8e269e266 100644 --- a/gtk/setupwizard.c +++ b/gtk/setupwizard.c @@ -31,7 +31,7 @@ static GdkPixbuf *notok; static GtkWidget *create_intro(){ GtkWidget *vbox=gtk_vbox_new(FALSE,2); - GtkWidget *label=gtk_label_new(_("Welcome !\nThis assistant will help you to use a SIP account for your calls.")); + GtkWidget *label=gtk_label_new(_("Welcome!\nThis assistant will help you to use a SIP account for your calls.")); gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 2); g_object_set_data(G_OBJECT(vbox),"label",label); gtk_widget_show_all(vbox); diff --git a/po/cs.po b/po/cs.po index 9df6476d2..a8a550fa4 100644 --- a/po/cs.po +++ b/po/cs.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Klara Cihlarova , 2005 # Petr Pisar , 2006-2011,2013 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:17+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/linphone-gtk/language/cs/)\n" +"Language-Team: Czech (http://www.transifex.com/projects/p/linphone-gtk/" +"language/cs/)\n" +"Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -66,24 +67,19 @@ msgstr[0] "%i sekunda" msgstr[1] "%i sekundy" msgstr[2] "%i sekund" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "%s\t%s" - #: ../gtk/calllogs.c:337 #, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "%s\tKvalita: %s\n%s\t%s\t" +msgstr "" +"%s\tKvalita: %s\n" +"%s\t%s\t" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" -msgstr "%s\t\n%s" +msgid "%s\t%s" +msgstr "%s\t%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -98,7 +94,7 @@ msgstr "Já" msgid "Couldn't find pixmap file: %s" msgstr "Nelze najít soubor s obrázkem: %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "Neplatný sipový kontakt!" @@ -128,9 +124,11 @@ msgstr "je-li nastaveno, automaticky zvedne příchozí hovor" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" +"Zadejte pracovní adresář (měl by být základní instalační adresář, například " "c:\\Program Files\\Linphone)" -msgstr "Zadejte pracovní adresář (měl by být základní instalační adresář, například c:\\Program Files\\Linphone)" #: ../gtk/main.c:156 msgid "Configuration file" @@ -144,9 +142,14 @@ msgstr "" #, 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 si vás chce přidat do svého adresáře.\nDovolíte mu, aby viděl váš stav přítomnosti, nebo si ho také chcete přidat do svého adresáře?\nOdpovíte-li ne, tato osobo bude dočasně blokována." +msgstr "" +"%s si vás chce přidat do svého adresáře.\n" +"Dovolíte mu, aby viděl váš stav přítomnosti, nebo si ho také chcete přidat " +"do svého adresáře?\n" +"Odpovíte-li ne, tato osobo bude dočasně blokována." #: ../gtk/main.c:1162 #, c-format @@ -159,7 +162,7 @@ msgstr "" msgid "Call error" msgstr "Chyba hovoru" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "Hovor ukončen" @@ -211,7 +214,9 @@ msgstr "Byly jsme přepojeni na %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "Na tomto počítači nebyla objevena žádná zvuková karta.\nNebudete moci vytáčet a přijímat a zvukové hovory." +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:2157 msgid "A free SIP video-phone" @@ -384,7 +389,9 @@ msgstr "ZRTP" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "Na %s je dostupná novější verze.\nPřejete si otevřít prohlížeč, abyste si ji mohli stáhnout?" +msgstr "" +"Na %s je dostupná novější verze.\n" +"Přejete si otevřít prohlížeč, abyste si ji mohli stáhnout?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -419,10 +426,13 @@ msgstr[1] "Nalezeny %i kontakty" msgstr[2] "Nalezeno %i kontaktů" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "Vítejte!\nTento průvodce vám pomůže používat sipový účet při vašich hovorech." +msgstr "" +"Vítejte!\n" +"Tento průvodce vám pomůže používat sipový účet při vašich hovorech." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -500,7 +510,10 @@ msgstr "" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "Došlo k chybě (účet nebyl ověřen, uživatelské jméno již existuje nebo server není dostupný).\nProsím, vraťte se a zkoste to znovu." +msgstr "" +"Došlo k chybě (účet nebyl ověřen, uživatelské jméno již existuje nebo server " +"není dostupný).\n" +"Prosím, vraťte se a zkoste to znovu." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -508,43 +521,47 @@ msgstr "Děkujeme vám. Váš účet je nyní nastaven a připraven k použití #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." -msgstr "Prosím, ověřte svůj účet tak, že kliknete na odkaz, který jsme vám právě zaslali e-mailem.\nPak se sem vraťte a stiskněte tlačítko Další." +msgstr "" +"Prosím, ověřte svůj účet tak, že kliknete na odkaz, který jsme vám právě " +"zaslali e-mailem.\n" +"Pak se sem vraťte a stiskněte tlačítko Další." -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "Vítejte v průvodci nastavení účtu" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "Průvodce nastavením účtu" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "Nastavit účet (krok 1/1)" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "Zadejte vaše sipové uživatelské jméno (krok 1/1)" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "Zadejte údaje o účtu (krok 1/2)" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "Ověření (krok 2/2)" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "Chyba" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "Ukončuje se" @@ -615,7 +632,9 @@ msgstr "Přímé nebo skrze server" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "příchozí: %f\nodchozí: %f (kb/s)" +msgstr "" +"příchozí: %f\n" +"odchozí: %f (kb/s)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -696,11 +715,6 @@ msgstr "Probíhá hovor" msgid "Paused call" msgstr "Odložený hovor" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i:%02i:%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Hovor skončil." @@ -730,7 +744,9 @@ msgstr "Odložit" msgid "" "Recording into\n" "%s %s" -msgstr "Nahrává se do\n%s %s" +msgstr "" +"Nahrává se do\n" +"%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" @@ -768,10 +784,13 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" +"Vítejte!\n" +"Tento průvodce vám pomůže používat sipový účet při vašich hovorech." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -978,7 +997,8 @@ msgid "Login information" msgstr "Informace o přihlášení" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "Vítejte!" #: ../gtk/main.ui.h:47 @@ -986,11 +1006,13 @@ msgid "Delete" msgstr "Smazat" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "O Linphonu" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +#, fuzzy +msgid "(C) Belledonne Communications, 2010\n" msgstr "© Belledonne Communications, 2010\n" #: ../gtk/about.ui.h:4 @@ -1153,7 +1175,7 @@ msgstr "Kodeky zvuku" msgid "Video codecs" msgstr "Kodeky obrazu" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "C" @@ -1397,7 +1419,9 @@ msgstr "Zapnout přizpůsobující se řízení rychlosti" msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "Přizpůsobující se řízení rychlosti je technika dynamického odhadu dostupného pásma během hovoru." +msgstr "" +"Přizpůsobující se řízení rychlosti je technika dynamického odhadu " +"dostupného pásma během hovoru." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1432,18 +1456,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "Hotovo" @@ -1555,66 +1575,6 @@ msgstr "Nastavit tunel" msgid "Configure http proxy (optional)" msgstr "Nastavit HTTP proxy (volitelné)" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1710,12 +1670,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1726,64 +1685,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "Připraven." -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Vyhledává se umístění čísla…" -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "Toto číslo nelze vyhledat." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "Navazuje se spojení" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "Nelze volat" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 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:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "vás volá" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr " a požaduje automatickou zvednutí." -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "Upravují se parametry hovoru…" -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Připojeno." -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "Hovor přerušen" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "Hovor nebylo možné odložit" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "Současný hovor se odkládá…" @@ -1844,20 +1799,25 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "Neznámá chyba" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "Adresa SIP proxy, kterou jste zadali, není platná. Musí začínat na „sip:“ a pak musí následovat jméno stroje." +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:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "SIP identita, kterou jste zadali, není platná.\nMěla by mít tvar sip:uživatel@proxydoména, například sip:alice@example.net" +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:1377 #, c-format @@ -1985,3 +1945,61 @@ 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 "D" +#~ msgstr "D" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "B" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "A" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "" +#~ "%s\t\n" +#~ "%s" +#~ msgstr "" +#~ "%s\t\n" +#~ "%s" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i:%02i:%02i" + +#~ msgid "." +#~ msgstr "." diff --git a/po/de.po b/po/de.po index c65ead393..a36d864f0 100644 --- a/po/de.po +++ b/po/de.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # andreas, 2014 # Gerhard Stengel , 2011-2012 @@ -10,14 +10,15 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-25 16:45+0000\n" "Last-Translator: andreas\n" -"Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/language/de/)\n" +"Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/" +"language/de/)\n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -65,24 +66,19 @@ msgid_plural "%i seconds" msgstr[0] "%i Sekunde" msgstr[1] "%i Sekunden" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "%s\t%s" - #: ../gtk/calllogs.c:337 #, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "%s\tQualität: %s\n%s\t%s\t" +msgstr "" +"%s\tQualität: %s\n" +"%s\t%s\t" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" -msgstr "%s\t\n%s" +msgid "%s\t%s" +msgstr "%s\t%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -97,7 +93,7 @@ msgstr "Eigenes Telefon" msgid "Couldn't find pixmap file: %s" msgstr "Pixmapdatei %s kann nicht gefunden werden." -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "Ungültiger SIP-Kontakt!" @@ -115,7 +111,9 @@ msgstr "Linphone mit ausgeschaltetem Video starten." #: ../gtk/main.c:128 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." +msgstr "" +"Nur im Systemabschnitt der Kontrollleiste starten, aber das Hauptfenster " +"nicht zeigen." #: ../gtk/main.c:135 msgid "address to call right now" @@ -127,9 +125,11 @@ msgstr "Falls aktiviert, werden eingehende Anrufe automatisch beantwortet" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "Geben Sie einen Arbeitsordner an (sollte der Installationsordner sein, z. B. C:\\Programme\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" +"Geben Sie einen Arbeitsordner an (sollte der Installationsordner sein, z. B. " +"C:\\Programme\\Linphone)" #: ../gtk/main.c:156 msgid "Configuration file" @@ -143,22 +143,29 @@ msgstr "Starte den Audio-Assistent" #, 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 möchte Sie zu seiner Kontaktliste hinzufügen.\nMöchten Sie ihm erlauben, Ihren Anwesenheitsstatus zu sehen, oder ihn zu Ihrer Kontaktliste hinzufügen?\nWenn Sie mit Nein antworten, wird diese Person vorläufig blockiert." +msgstr "" +"%s möchte Sie zu seiner Kontaktliste hinzufügen.\n" +"Möchten Sie ihm erlauben, Ihren Anwesenheitsstatus zu sehen, oder ihn zu " +"Ihrer Kontaktliste hinzufügen?\n" +"Wenn Sie mit Nein antworten, wird diese Person vorläufig blockiert." #: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "Bitte geben Sie Ihr Passwort für den Benutzernamen %s\n für Bereich %s ein:" +msgstr "" +"Bitte geben Sie Ihr Passwort für den Benutzernamen %s\n" +" für Bereich %s ein:" #: ../gtk/main.c:1283 msgid "Call error" msgstr "Anruf fehlgeschlagen" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "Anruf beendet" @@ -210,7 +217,9 @@ msgstr "Vermittlung nach %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "Auf diesem Rechner können keine Soundkarten gefunden werden.\nSie können keine Audio-Anrufe tätigen oder entgegennehmen." +msgstr "" +"Auf diesem Rechner können keine Soundkarten gefunden werden.\n" +"Sie können keine Audio-Anrufe tätigen oder entgegennehmen." #: ../gtk/main.c:2157 msgid "A free SIP video-phone" @@ -364,7 +373,9 @@ msgstr "Serbisch" #: ../gtk/propertybox.c:1156 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." +msgstr "" +"Linphone muss neu gestartet werden, damit die neue Spracheinstellung wirksam " +"wird." #: ../gtk/propertybox.c:1234 msgid "None" @@ -383,7 +394,9 @@ msgstr "ZRTP" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "Eine neuere Version ist von %s verfügbar.\nMöchten Sie einen Browser zum Herunterladen öffnen?" +msgstr "" +"Eine neuere Version ist von %s verfügbar.\n" +"Möchten Sie einen Browser zum Herunterladen öffnen?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -417,10 +430,14 @@ msgstr[0] "%i Kontakt gefunden" msgstr[1] "%i Kontakte gefunden" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "Willkommen!\nDieser Assistent wird Ihnen dabei helfen, ein SIP-Konto für Ihre Anrufe zu verwenden." +msgstr "" +"Willkommen!\n" +"Dieser Assistent wird Ihnen dabei helfen, ein SIP-Konto für Ihre Anrufe zu " +"verwenden." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -428,7 +445,8 @@ msgstr "Ein Konto bei linphone.org erstellen." #: ../gtk/setupwizard.c:44 msgid "I have already a linphone.org account and I just want to use it" -msgstr "Ich habe bereits ein Konto bei linphone.org und möchte es jetzt benutzen." +msgstr "" +"Ich habe bereits ein Konto bei linphone.org und möchte es jetzt benutzen." #: ../gtk/setupwizard.c:45 msgid "I have already a sip account and I just want to use it" @@ -498,51 +516,59 @@ msgstr "Halte mich über linphone Aktualisierungen auf dem laufenden" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "Fehler, Konto kann nicht bestätigt werden. Der Benutzername wird bereits\nverwendet oder der Server ist unerreichbar.\nBitte gehen Sie zurück und versuchen Sie es noch einmal." +msgstr "" +"Fehler, Konto kann nicht bestätigt werden. Der Benutzername wird bereits\n" +"verwendet oder der Server ist unerreichbar.\n" +"Bitte gehen Sie zurück und versuchen Sie es noch einmal." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." -msgstr "Danke. Ihr Konto ist nun fertig eingerichtet und kann verwendet werden." +msgstr "" +"Danke. Ihr Konto ist nun fertig eingerichtet und kann verwendet werden." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." -msgstr "Bitte bestätigen Sie Ihr Konto, indem Sie auf die Verknüpfung klicken, die wir Ihnen soeben per E-Mail geschickt haben.\nDanach gehen Sie hierher zurück und drücken auf „Vor“." +msgstr "" +"Bitte bestätigen Sie Ihr Konto, indem Sie auf die Verknüpfung klicken, die " +"wir Ihnen soeben per E-Mail geschickt haben.\n" +"Danach gehen Sie hierher zurück und drücken auf „Vor“." -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "SIP-Konto-Einrichtungsassistent" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "Willkommen zum Konto-Einrichtungsassistenten" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "Konto-Einrichtungsassistent" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "Konto einrichten (Schritt 1/1)" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "Geben Sie Ihren SIP-Benutzernamen ein (Schritt 1/1)" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "Geben Sie Ihre Zugangsdaten ein (Schritt 1/2)" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "Bestätigung (Schritt 2/2)" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "Fehler" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "Fertigstellen" @@ -613,7 +639,9 @@ msgstr "Direkt oder über Server" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "Herunterladen: %f\nHochladen: %f (kbit/s)" +msgstr "" +"Herunterladen: %f\n" +"Hochladen: %f (kbit/s)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -694,11 +722,6 @@ msgstr "Im Gespräch" msgid "Paused call" msgstr "Gehaltener Anruf" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i::%02i::%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Anruf beendet." @@ -728,7 +751,9 @@ msgstr "Halten" msgid "" "Recording into\n" "%s %s" -msgstr "Recording into\n%s %s" +msgstr "" +"Recording into\n" +"%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" @@ -766,10 +791,14 @@ msgid "Too loud" msgstr "zu laut" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" -msgstr "Willkommen!\nDieser Assistent wird Ihnen dabei helfen, die Audio-Einstellungen für Linphone vorzunehmen." +msgstr "" +"Willkommen!\n" +"Dieser Assistent wird Ihnen dabei helfen, die Audio-Einstellungen für " +"Linphone vorzunehmen." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -976,7 +1005,8 @@ msgid "Login information" msgstr "Anmeldeinformationen" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "Willkommen !" #: ../gtk/main.ui.h:47 @@ -984,16 +1014,20 @@ msgid "Delete" msgstr "Löschen" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "Über Linphone" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +#, fuzzy +msgid "(C) Belledonne Communications, 2010\n" msgstr "(C) Belledonne Communications,2010\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "Ein Internet-Video-Telefon, das das Standard-SIP-Protokoll (RFC3261) verwendet." +msgstr "" +"Ein Internet-Video-Telefon, das das Standard-SIP-Protokoll (RFC3261) " +"verwendet." #: ../gtk/about.ui.h:5 msgid "" @@ -1009,7 +1043,19 @@ msgid "" "cs: Petr Pisar \n" "hu: anonymous\n" "he: Eli Zaretskii \n" -msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n" +msgstr "" +"fr: Simon Morlat\n" +"en: Simon Morlat and Delphine Perreau\n" +"it: Alberto Zanoni \n" +"de: Jean-Jacques Sarton \n" +"sv: Daniel Nylander \n" +"es: Jesus Benitez \n" +"ja: YAMAGUCHI YOSHIYA \n" +"pt_BR: Rafael Caesar Lenzi \n" +"pl: Robert Nasiadek \n" +"cs: Petr Pisar \n" +"hu: anonymous\n" +"he: Eli Zaretskii \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1151,7 +1197,7 @@ msgstr "Audio-Codecs" msgid "Video codecs" msgstr "Video-Codecs" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "C" @@ -1313,7 +1359,9 @@ msgstr "Multimedia-Einstellungen" #: ../gtk/parameters.ui.h:50 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." +msgstr "" +"In diesem Bereich legen Sie Ihre SIP-Adresse fest, wenn Sie kein SIP-Konto " +"verwenden." #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" @@ -1395,7 +1443,9 @@ msgstr "Adaptive Ratenregelung ein" msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "Adaptive Ratenregelung ist eine Technik zur dynamischen Abschätzung der zur Verfügung stehenden Bandbreite während eines Anrufs." +msgstr "" +"Adaptive Ratenregelung ist eine Technik zur dynamischen Abschätzung der " +"zur Verfügung stehenden Bandbreite während eines Anrufs." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1430,18 +1480,14 @@ msgid "Authentication method:" msgstr "Authentifizierungsmethode" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "Hinweisschild" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "LDAP-Kontoeinrichtung" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "LDAP" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "Fertig" @@ -1553,66 +1599,6 @@ msgstr "Tunnel einrichten" msgid "Configure http proxy (optional)" msgstr "Configure http proxy (optional)" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "LDAP-Einstellungen" @@ -1708,13 +1694,17 @@ msgstr "Eine URI zur FErnkonfiguration angeben" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "Diese Maske erlaubt Ihnen für das Laden der Konfiguration beim Programmstart eine http- oder https-Adresse anzugeben.\nBitte geben Sie unten die Konfigurations-URI ein oder ändern diese. Nach dem Bestätigen mit OK wird Linphone automatisch neustarten, um die neuen Einstellungen zu übernehmen." - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" -msgstr "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " +msgstr "" +"Diese Maske erlaubt Ihnen für das Laden der Konfiguration beim Programmstart " +"eine http- oder https-Adresse anzugeben.\n" +"Bitte geben Sie unten die Konfigurations-URI ein oder ändern diese. Nach dem " +"Bestätigen mit OK wird Linphone automatisch neustarten, um die neuen " +"Einstellungen zu übernehmen." #: ../gtk/provisioning-fetch.ui.h:1 msgid "Configuring..." @@ -1722,66 +1712,63 @@ msgstr "Einstellen..." #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." -msgstr "Bitte warten Sie während die Einstellungen vom Server abgerufen werden..." +msgstr "" +"Bitte warten Sie während die Einstellungen vom Server abgerufen werden..." -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "Bereit" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "Einstellen" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Telefonnummernziel wird gesucht..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "Diese Nummer kann nicht aufgelöst werden." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "Verbindungsaufbau" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "Anruf kann nicht getätigt werden." -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Die maximale Anzahl der gleichzeitigen Anrufe ist erreicht." -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "ruft Sie an" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr " und fragt nach automatischer Antwort." -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "Die Anrufparameter werden verändert..." -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Verbunden." -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "Anruf abgebrochen" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "Anruf kann nicht gehalten werden" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "Aktueller Anruf wird gehalten..." @@ -1842,20 +1829,26 @@ msgid "Vacation" msgstr "Urlaub" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "Unbekannter Fehler" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "Die von Ihnen eingegebene SIP-Proxy-Adresse ist ungültig, sie muss mit „sip:“ gefolgt vom Hostnamen beginnen." +msgstr "" +"Die von Ihnen eingegebene SIP-Proxy-Adresse ist ungültig, sie muss mit " +"„sip:“ gefolgt vom Hostnamen beginnen." #: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "Die von Ihnen eingegebene SIP-Identität ist ungültig.\nSie sollte wie sip:benutzername@proxydomain aussehen, also z.B. sip:alice@beispiel.net" +msgstr "" +"Die von Ihnen eingegebene SIP-Identität ist ungültig.\n" +"Sie sollte wie sip:benutzername@proxydomain aussehen, also z.B. sip:" +"alice@beispiel.net" #: ../coreapi/proxy.c:1377 #, c-format @@ -1982,3 +1975,67 @@ 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 "https://" +#~ msgstr "https://" + +#~ msgid "label" +#~ msgstr "Hinweisschild" + +#~ msgid "D" +#~ msgstr "D" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "B" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "A" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "" +#~ "%s\t\n" +#~ "%s" +#~ msgstr "" +#~ "%s\t\n" +#~ "%s" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i::%02i::%02i" + +#~ msgid "." +#~ msgstr "." diff --git a/po/es.po b/po/es.po index a1d349dcf..b2054661d 100644 --- a/po/es.po +++ b/po/es.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:17+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/linphone-gtk/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/linphone-gtk/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -62,11 +63,6 @@ msgid_plural "%i seconds" msgstr[0] "%i segundo" msgstr[1] "%i segundos" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" @@ -74,11 +70,9 @@ msgid "" "%s\t%s\t" msgstr "" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -94,13 +88,14 @@ msgstr "Yo" msgid "Couldn't find pixmap file: %s" msgstr "No se pudo encontrar el archivo pixmap: %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "¡Contacto SIP no válido!" #: ../gtk/main.c:107 msgid "log to stdout some debug information while running." -msgstr "registra a stdout cierta información de depuración durante la ejecución." +msgstr "" +"registra a stdout cierta información de depuración durante la ejecución." #: ../gtk/main.c:114 msgid "path to a file to write logs into." @@ -124,9 +119,11 @@ msgstr "si está activo, responder a llamadas entrantes automáticamente" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "Especifique un directorio de trabajo (debería ser la raíz de la instalación, ej: c:\\Archivos de Programa\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" +"Especifique un directorio de trabajo (debería ser la raíz de la instalación, " +"ej: c:\\Archivos de Programa\\Linphone)" #: ../gtk/main.c:156 msgid "Configuration file" @@ -140,9 +137,14 @@ msgstr "" #, 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 desea añadirle a su lista de contactos.\n¿Desea permitirle ver su estado de presencia o añadirle a su lista de contactos?\nSi responde no, esta persona será bloqueada temporalmente." +msgstr "" +"%s desea añadirle a su lista de contactos.\n" +"¿Desea permitirle ver su estado de presencia o añadirle a su lista de " +"contactos?\n" +"Si responde no, esta persona será bloqueada temporalmente." #: ../gtk/main.c:1162 #, c-format @@ -155,7 +157,7 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "" @@ -207,7 +209,9 @@ msgstr "Somos transferidos a %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "No se ha encontrado una tarjeta de sonido en este equipo.\nNo será posible realizar o recibir llamadas de audio." +msgstr "" +"No se ha encontrado una tarjeta de sonido en este equipo.\n" +"No será posible realizar o recibir llamadas de audio." #: ../gtk/main.c:2157 msgid "A free SIP video-phone" @@ -414,10 +418,13 @@ msgstr[0] "Se encontró %i contacto" msgstr[1] "Se encontraron %i contactos" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "¡Bienvenido/a !\nEste asistente le ayudará a utilizar una cuenta SIP para sus llamadas." +msgstr "" +"¡Bienvenido/a !\n" +"Este asistente le ayudará a utilizar una cuenta SIP para sus llamadas." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -503,43 +510,44 @@ msgstr "Gracias. Su cuenta está configurada y lista para su utilización." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." msgstr "" -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "Bienvenido al asistente de configuración de cuenta" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "Asistente de configuración de cuenta" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "" @@ -691,11 +699,6 @@ msgstr "" msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i::%02i::%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "" @@ -763,10 +766,13 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" +"¡Bienvenido/a !\n" +"Este asistente le ayudará a utilizar una cuenta SIP para sus llamadas." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -973,7 +979,7 @@ msgid "Login information" msgstr "" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +msgid "Welcome!" msgstr "" #: ../gtk/main.ui.h:47 @@ -981,16 +987,18 @@ msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -msgid "About linphone" +msgid "About Linphone" msgstr "" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +msgid "(C) Belledonne Communications, 2010\n" msgstr "" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "Un vídeo-teléfono a través de Internet que usa el protocolo estándar SIP (rfc3261)" +msgstr "" +"Un vídeo-teléfono a través de Internet que usa el protocolo estándar SIP " +"(rfc3261)" #: ../gtk/about.ui.h:5 msgid "" @@ -1148,7 +1156,7 @@ msgstr "" msgid "Video codecs" msgstr "" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "C" @@ -1392,7 +1400,9 @@ msgstr "Activar control de frecuencia adaptativo" msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "Control de frecuencia adaptativo es una técnica que estima dinámicamente el ancho de banda disponible durante la llamada." +msgstr "" +"Control de frecuencia adaptativo es una técnica que estima dinámicamente " +"el ancho de banda disponible durante la llamada." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1427,18 +1437,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "etiqueta" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "" @@ -1550,66 +1556,6 @@ msgstr "" msgid "Configure http proxy (optional)" msgstr "" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1705,12 +1651,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1721,64 +1666,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Buscando el número de teléfono del destinatario…" -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "No se ha podido resolver este número." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Disculpe, se ha alcanzado el máximo número de llamadas simultáneas" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "y ha solicitado auto respuesta." -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "Modificando parámetros de llamada…" -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Conectado." -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "No se pudo pausar la llamada" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "Pausando la llamada actual..." @@ -1839,20 +1780,26 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "Bug-desconocido" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "La dirección del Proxy SIP que ha introducido no es válida, debe empezar con \"sip:\" seguido del hostname." +msgstr "" +"La dirección del Proxy SIP que ha introducido no es válida, debe empezar con " +"\"sip:\" seguido del hostname." #: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "La identidad SIP que ha introducido no es válida.\nDebe ser del tipo sip:username@proxydomain, como por ejemplo sip:alice@example.net" +msgstr "" +"La identidad SIP que ha introducido no es válida.\n" +"Debe ser del tipo sip:username@proxydomain, como por ejemplo sip:" +"alice@example.net" #: ../coreapi/proxy.c:1377 #, c-format @@ -1979,3 +1926,57 @@ msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "Tiene %i llamada perdida." msgstr[1] "Tiene %i llamadas perdidas." + +#~ msgid "label" +#~ msgstr "etiqueta" + +#~ msgid "D" +#~ msgstr "D" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "B" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "A" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i::%02i::%02i" + +#~ msgid "." +#~ msgstr "." diff --git a/po/fr.po b/po/fr.po index ce23e2726..5e64f94e2 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Gautier Pelloux-Prayer , 2014 # Gautier Pelloux-Prayer , 2014 @@ -11,14 +11,15 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-27 15:47+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: French (http://www.transifex.com/projects/p/linphone-gtk/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/projects/p/linphone-gtk/" +"language/fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -66,24 +67,19 @@ msgid_plural "%i seconds" msgstr[0] "%i seconde" msgstr[1] "%i secondes" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "%s\t%s" - #: ../gtk/calllogs.c:337 #, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "%s\tQualité: %s\n%s\t%s\t" +msgstr "" +"%s\tQualité: %s\n" +"%s\t%s\t" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" -msgstr "%s\t\n%s" +msgid "%s\t%s" +msgstr "%s\t%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -98,7 +94,7 @@ msgstr "Moi" msgid "Couldn't find pixmap file: %s" msgstr "Icone non trouvée: %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "Contact sip invalide !" @@ -128,9 +124,11 @@ msgstr "si positionné, répond automatiquement aux appels entrants" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "Spécifie un répertoire de travail (qui devrait être le répertoire d'installation, par exemple c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +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:156 msgid "Configuration file" @@ -144,22 +142,30 @@ msgstr "Démarre l'assistant audio" #, 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 souhaite vous ajouter à sa liste de contact.\nSouhaitez vous l'autoriser à voir votre information de présence et l'ajouter à votre liste également ?\nSi vous répondez non, cette personne sera mise temporairement sur liste noire." +msgstr "" +"%s souhaite vous ajouter à sa liste de contact.\n" +"Souhaitez vous l'autoriser à voir votre information de présence et l'ajouter " +"à votre liste également ?\n" +"Si vous répondez non, cette personne sera mise temporairement sur liste " +"noire." #: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "Entrez le mot de passe pour %s\n sur le domaine %s:" +msgstr "" +"Entrez le mot de passe pour %s\n" +" sur le domaine %s:" #: ../gtk/main.c:1283 msgid "Call error" msgstr "Erreur lors de l'appel" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "Appel terminé." @@ -211,7 +217,9 @@ msgstr "Transfert vers %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "Aucune carte son n'a été détectée sur cet ordinateur.\nVous ne pourrez pas effectuer d'appels audio." +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:2157 msgid "A free SIP video-phone" @@ -365,7 +373,9 @@ msgstr "Serbe" #: ../gtk/propertybox.c:1156 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." +msgstr "" +"La nouvelle selection de langue prendra effet au prochain démarrage de " +"linphone." #: ../gtk/propertybox.c:1234 msgid "None" @@ -384,7 +394,10 @@ msgstr "ZRTP" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "Une version plus récente est disponible sur %s.\nVoulez vous ouvrir le navigateur afin de pouvoir télécharger la dernière version ?" +msgstr "" +"Une version plus récente est disponible sur %s.\n" +"Voulez vous ouvrir le navigateur afin de pouvoir télécharger la dernière " +"version ?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -418,10 +431,13 @@ msgstr[0] "%i contact trouvé." msgstr[1] "%i contacts trouvés." #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "Bienvenue!\nCet assistant va vous aider à utiliser un compte SIP pour vos appels." +msgstr "" +"Bienvenue!\n" +"Cet assistant va vous aider à utiliser un compte SIP pour vos appels." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -499,7 +515,10 @@ msgstr "Me tenir informer des mises à jour de Linphone " msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "Erreur, le compte n'est pas validé, l'identifiant est déjà utilisé ou le serveur n'est pas accessible.\nMerci d'essayer à nouveau." +msgstr "" +"Erreur, le compte n'est pas validé, l'identifiant est déjà utilisé ou le " +"serveur n'est pas accessible.\n" +"Merci d'essayer à nouveau." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -507,43 +526,47 @@ msgstr "Merci. Votre compte est maintenant configuré et prêt à être utilisé #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." -msgstr "Merci de valider votre compte en cliquant sur le lien que nous avons envoyé par email.\nPuis appuyez sur suivant." +msgstr "" +"Merci de valider votre compte en cliquant sur le lien que nous avons envoyé " +"par email.\n" +"Puis appuyez sur suivant." -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "Assistant de configuration de compte." -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "Bienvenue dans l'assistant de configuration de compte." -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "Assistant de configuration de compte." -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "Configurez votre compte (étape 1/1)" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "Entrez votre identifiant sip (étape 1/1)" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "Entrez les informations concernant votre compte (étape 1/2)" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "Validation (étape 2/2)" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "Erreur" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "En cours d’arrêt." @@ -695,11 +718,6 @@ msgstr "Appel en cours" msgid "Paused call" msgstr "Appel en attente" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i::%02i::%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Appel terminé." @@ -729,7 +747,9 @@ msgstr "Pause" msgid "" "Recording into\n" "%s %s" -msgstr "Enregistrement dans\n%s %s" +msgstr "" +"Enregistrement dans\n" +"%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" @@ -767,10 +787,14 @@ msgid "Too loud" msgstr "Trop bruyant" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" -msgstr "Bienvenue!\nCet assistant va vous aider à régler les paramètres audio de votre ordinateur pour une utilisation optimale avec Linphone." +msgstr "" +"Bienvenue!\n" +"Cet assistant va vous aider à régler les paramètres audio de votre " +"ordinateur pour une utilisation optimale avec Linphone." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -977,7 +1001,8 @@ msgid "Login information" msgstr "Information de login" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "Bienvenue !" #: ../gtk/main.ui.h:47 @@ -985,11 +1010,13 @@ msgid "Delete" msgstr "Supprimer" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "A propos de linphone" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +#, fuzzy +msgid "(C) Belledonne Communications, 2010\n" msgstr "(C) Belledonne Communications, 2010\n" #: ../gtk/about.ui.h:4 @@ -1010,7 +1037,19 @@ msgid "" "cs: Petr Pisar \n" "hu: anonymous\n" "he: Eli Zaretskii \n" -msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n" +msgstr "" +"fr: Simon Morlat\n" +"en: Simon Morlat and Delphine Perreau\n" +"it: Alberto Zanoni \n" +"de: Jean-Jacques Sarton \n" +"sv: Daniel Nylander \n" +"es: Jesus Benitez \n" +"ja: YAMAGUCHI YOSHIYA \n" +"pt_BR: Rafael Caesar Lenzi \n" +"pl: Robert Nasiadek \n" +"cs: Petr Pisar \n" +"hu: anonymous\n" +"he: Eli Zaretskii \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1152,7 +1191,7 @@ msgstr "Codecs audio" msgid "Video codecs" msgstr "Codecs vidéo" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "C" @@ -1314,7 +1353,9 @@ msgstr "Paramètres multimedia" #: ../gtk/parameters.ui.h:50 msgid "This section defines your SIP address when not using a SIP account" -msgstr "Cette rubrique permet de définir son adresse SIP lorsqu'on ne possède pas de compte SIP" +msgstr "" +"Cette rubrique permet de définir son adresse SIP lorsqu'on ne possède pas de " +"compte SIP" #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" @@ -1396,7 +1437,10 @@ msgstr "Activer le control de débit adaptatif." msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "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." +msgstr "" +"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." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1431,18 +1475,14 @@ msgid "Authentication method:" msgstr "Méthode d'authentification:" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "label" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "Configuration LDAP" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "LDAP" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "Fermer" @@ -1554,66 +1594,6 @@ msgstr "Configuration du tunnel" msgid "Configure http proxy (optional)" msgstr "Configuration d'un proxy http (optionel)" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "Paramètres LDAP" @@ -1709,13 +1689,17 @@ msgstr "Spécifier une URI de configuration" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "Cette boite de dialogue vous permet de spécifier une addresse http ou https où la configuration doit être téléchargée au démarrage.\nVeuillez entrer l'URI http(s) ci dessous. Après avoir validé, Linphone va redémarrer automatiquement pour charger et prendre en compte la nouvelle configuration." - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" -msgstr "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " +msgstr "" +"Cette boite de dialogue vous permet de spécifier une addresse http ou https " +"où la configuration doit être téléchargée au démarrage.\n" +"Veuillez entrer l'URI http(s) ci dessous. Après avoir validé, Linphone va " +"redémarrer automatiquement pour charger et prendre en compte la nouvelle " +"configuration." #: ../gtk/provisioning-fetch.ui.h:1 msgid "Configuring..." @@ -1723,66 +1707,64 @@ msgstr "Configuration en cours" #: ../gtk/provisioning-fetch.ui.h:2 msgid "Please wait while fetching configuration from server..." -msgstr "Veuillez patenter un instant pendant le chargement de la configuration distante..." +msgstr "" +"Veuillez patenter un instant pendant le chargement de la configuration " +"distante..." -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "Prêt." -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "Configuration en cours" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Recherche de la destination du numéro de téléphone..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "La destination n'a pu être trouvée." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "Appel de" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "Echec de l'appel" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Désolé, le nombre maximum d'appels simultanés est atteint." -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "vous appelle" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "et sollicite un décrochage automatique." -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "Modifications des paramètres d'appels..." -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "En ligne." -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "Appel abandonné" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "La mise en attente a échoué" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "Mise en attente de l'appel..." @@ -1843,20 +1825,26 @@ msgid "Vacation" msgstr "En congé" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "Bug inconnu" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "L'adresse SIP du proxy est invalide. Elle doit commencer par \"sip:\" suivie par un nom de domaine." +msgstr "" +"L'adresse SIP du proxy est invalide. Elle doit commencer par \"sip:\" suivie " +"par un nom de domaine." #: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "L'identité SIP que vous avez fourni est invalide.\nElle doit être de la forme sip:username@domain, comme par example sip:alice@example.net" +msgstr "" +"L'identité SIP que vous avez fourni est invalide.\n" +"Elle doit être de la forme sip:username@domain, comme par example sip:" +"alice@example.net" #: ../coreapi/proxy.c:1377 #, c-format @@ -1983,3 +1971,67 @@ 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 "https://" +#~ msgstr "https://" + +#~ msgid "label" +#~ msgstr "label" + +#~ msgid "D" +#~ msgstr "D" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "B" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "A" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "" +#~ "%s\t\n" +#~ "%s" +#~ msgstr "" +#~ "%s\t\n" +#~ "%s" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i::%02i::%02i" + +#~ msgid "." +#~ msgstr "." diff --git a/po/he.po b/po/he.po index 6a1730255..e25b70afb 100644 --- a/po/he.po +++ b/po/he.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Eli Zaretskii , 2012 # GenghisKhan , 2014 @@ -10,14 +10,15 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-24 10:22+0000\n" "Last-Translator: GenghisKhan \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/linphone-gtk/language/he/)\n" +"Language-Team: Hebrew (http://www.transifex.com/projects/p/linphone-gtk/" +"language/he/)\n" +"Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -65,23 +66,18 @@ msgid_plural "%i seconds" msgstr[0] "שניה %i" msgstr[1] "%i שניות" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "%s\tאיכות: %s\n%s\t%s\t" +msgstr "" +"%s\tאיכות: %s\n" +"%s\t%s\t" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -97,7 +93,7 @@ msgstr "אני" msgid "Couldn't find pixmap file: %s" msgstr "לא ניתן למצוא קובץ ‫pixmap: ‫%s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "כתובת sip לא תקפה !" @@ -127,8 +123,8 @@ msgstr "" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" msgstr "" #: ../gtk/main.c:156 @@ -143,22 +139,29 @@ msgstr "" #, 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היה ותשובתך תהיה לא, אדם זה יהיה מסומן באופן זמני ברשימה השחורה." +msgstr "" +"‫%s מעוניין להוסיפך אל רשימת אנשי הקשר שלו.\n" +"האם ברצונך להרשות להם לראות את מצב נוכחותך או להוסיפם אל רשימת אנשי הקשר " +"שלך ?\n" +"היה ותשובתך תהיה לא, אדם זה יהיה מסומן באופן זמני ברשימה השחורה." #: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "אנא הזן סיסמה עבור משתמש %s\nבמתחם %s:" +msgstr "" +"אנא הזן סיסמה עבור משתמש %s\n" +"במתחם %s:" #: ../gtk/main.c:1283 msgid "Call error" msgstr "שגיאת קריאה" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "שיחה הסתיימה" @@ -210,7 +213,9 @@ msgstr "אנחנו מועברים אל %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "לא אותרו כרטיסי קול במחשב זה.\nלא תהיה ביכולתך לשלוח או לקבל שיחות אודיו." +msgstr "" +"לא אותרו כרטיסי קול במחשב זה.\n" +"לא תהיה ביכולתך לשלוח או לקבל שיחות אודיו." #: ../gtk/main.c:2157 msgid "A free SIP video-phone" @@ -383,7 +388,9 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "גרסא מאוחרת יותר זמינה מן %s.\nהאם ברצונך לפתוח דפדפן בכדי להורידה ?" +msgstr "" +"גרסא מאוחרת יותר זמינה מן %s.\n" +"האם ברצונך לפתוח דפדפן בכדי להורידה ?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -417,10 +424,13 @@ msgstr[0] "נמצא איש קשר %i" msgstr[1] "נמצאו %i אנשי קשר" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "ברוך בואך !\nאשף זה יסייע לך לעשות שימוש בחשבון SIP עבור שיחותייך." +msgstr "" +"ברוך בואך !\n" +"אשף זה יסייע לך לעשות שימוש בחשבון SIP עבור שיחותייך." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -498,7 +508,9 @@ msgstr "" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "שגיאה, חשבון לא אומת, שם משתמש כבר בשימוש או שרת לא ניתן להשגה.\nנא לחזור ולנסות שוב." +msgstr "" +"שגיאה, חשבון לא אומת, שם משתמש כבר בשימוש או שרת לא ניתן להשגה.\n" +"נא לחזור ולנסות שוב." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -506,43 +518,46 @@ msgstr "תודה לך. חשבונך מוגדר ומוכן לשימוש כעת." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." -msgstr "נא לאמת את חשבונך באמצעות הקלקה על הקישור ששלחנו לך עתה באמצעות דוא״ל.\nאחרי כן נא לחזור לכאן וללחוץ על הלחצן 'קדימה'." +msgstr "" +"נא לאמת את חשבונך באמצעות הקלקה על הקישור ששלחנו לך עתה באמצעות דוא״ל.\n" +"אחרי כן נא לחזור לכאן וללחוץ על הלחצן 'קדימה'." -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "ברוך בואך אל אשף הגדרת החשבון" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "אשף הגדרת חשבון" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "הגדרת חשבונך (צעד 1/1)" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "הזנת שם משתמש sip (צעד 1/1)" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "הזנת מידע חשבון (צעד 1/2)" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "אימות (צעד 2/2)" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "שגיאה" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "מסיים כעת" @@ -613,7 +628,9 @@ msgstr "ישיר או דרך שרת" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "הורדה: %f\nהעלאה: %f (קי״ב/שנ׳)" +msgstr "" +"הורדה: %f\n" +"העלאה: %f (קי״ב/שנ׳)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -694,11 +711,6 @@ msgstr "בשיחה כעת" msgid "Paused call" msgstr "שיחה מושהית" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "‭%02i::%02i::%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "שיחה הסתיימה." @@ -728,7 +740,9 @@ msgstr "השהה" msgid "" "Recording into\n" "%s %s" -msgstr "מקליט אל תוך\n%s %s" +msgstr "" +"מקליט אל תוך\n" +"%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" @@ -766,10 +780,13 @@ msgid "Too loud" msgstr "חזק מדי" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" +"ברוך בואך !\n" +"אשף זה יסייע לך לעשות שימוש בחשבון SIP עבור שיחותייך." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -976,7 +993,8 @@ msgid "Login information" msgstr "מידע התחברות" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "ברוך בואך !" #: ../gtk/main.ui.h:47 @@ -984,11 +1002,13 @@ msgid "Delete" msgstr "מחק" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "אודות לינפון" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +#, fuzzy +msgid "(C) Belledonne Communications, 2010\n" msgstr "‫(C) ‫Belledonne Communications,‫2010\n" #: ../gtk/about.ui.h:4 @@ -1151,7 +1171,7 @@ msgstr "קודקים של אודיו" msgid "Video codecs" msgstr "קודקים של וידאו" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "" @@ -1395,7 +1415,9 @@ msgstr "אפשר בקרת קצב מסתגלת" msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "בקרת קצב מסתגלת הינה טכניקה להשערה דינמית של רוחב הפס הזמין במהלך שיחה." +msgstr "" +"בקרת קצב מסתגלת הינה טכניקה להשערה דינמית של רוחב הפס הזמין במהלך שיחה." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1430,18 +1452,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "תוויות" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "סיום" @@ -1553,66 +1571,6 @@ msgstr "הגדר מינהור" msgid "Configure http proxy (optional)" msgstr "הגדר http proxy (רשות)" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9 [סעפ]" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8 [צק]" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7 [רשת]" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6 [זחט]" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5 [יכל]" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4 [מנ]" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3 [אבג]" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2 [דהו]" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1708,12 +1666,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1724,64 +1681,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "מוכן" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "מחפש כעת עבור יעד מספר טלפון..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "לא ניתן לפתור את מספר זה." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "מתקשר כעת" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "לא ניתן להתקשר" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "הגענו אל המספר המרבי של שיחות מקבילות, עמך הסליחה" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "מתקשר/ת אליך" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr " ומבקש/ת מענה אוטומטי." -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "" - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "מתאים כעת פרמטרים של שיחה..." -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "מקושר." -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "קריאה בוטלה" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "לא ניתן להשהות את השיחה" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "משהה כעת שיחה נוכחית..." @@ -1842,20 +1795,24 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "תקלה לא מוכרת" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "כתובת sip proxy שהזנת הינה שגויה, זו צריכה להתחיל עם‭\"sip:\" ‬ לאחר שם מארח." +msgstr "" +"כתובת sip proxy שהזנת הינה שגויה, זו צריכה להתחיל עם‭\"sip:\" ‬ לאחר שם מארח." #: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "זהות sip שהוזנה הינה שגויה.\nזו צריכה להיראות כמו sip:username@proxydomain, למשל sip:alice@example.net" +msgstr "" +"זהות sip שהוזנה הינה שגויה.\n" +"זו צריכה להיראות כמו sip:username@proxydomain, למשל sip:alice@example.net" #: ../coreapi/proxy.c:1377 #, c-format @@ -1982,3 +1939,33 @@ msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "החמצת שיחה %i." msgstr[1] "החמצת %i שיחות." + +#~ msgid "label" +#~ msgstr "תוויות" + +#~ msgid "9" +#~ msgstr "9 [סעפ]" + +#~ msgid "8" +#~ msgstr "8 [צק]" + +#~ msgid "7" +#~ msgstr "7 [רשת]" + +#~ msgid "6" +#~ msgstr "6 [זחט]" + +#~ msgid "5" +#~ msgstr "5 [יכל]" + +#~ msgid "4" +#~ msgstr "4 [מנ]" + +#~ msgid "3" +#~ msgstr "3 [אבג]" + +#~ msgid "2" +#~ msgstr "2 [דהו]" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "‭%02i::%02i::%02i" diff --git a/po/hu.po b/po/hu.po index d620e646b..1287f3928 100644 --- a/po/hu.po +++ b/po/hu.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:16+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Hungarian (http://www.transifex.com/projects/p/linphone-gtk/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/projects/p/linphone-gtk/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -62,11 +63,6 @@ msgid_plural "%i seconds" msgstr[0] "" msgstr[1] "" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" @@ -74,11 +70,9 @@ msgid "" "%s\t%s\t" msgstr "" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -94,7 +88,7 @@ msgstr "én" msgid "Couldn't find pixmap file: %s" msgstr "Nemtalálható a pixmap fájl: %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "Érvénytelen sip partner !" @@ -124,9 +118,11 @@ msgstr "Bekapcsolva automatikusan válaszol a bejövő hívásokra" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "Adjon meg egy munkakönyvtárat (ennek az installációs könyvtárnak kéne lennie, pl. C:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" +"Adjon meg egy munkakönyvtárat (ennek az installációs könyvtárnak kéne " +"lennie, pl. C:\\Program Files\\Linphone)" #: ../gtk/main.c:156 msgid "Configuration file" @@ -140,9 +136,14 @@ msgstr "" #, 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 szeretné Önt hozzáadni partnerlistájához.\nSzeretné megengedni neki, hogy lássa az Ön jelenlétét, illetve hozzá szeretné adni a partnerlistához?\nHa nemmel válaszol, ez a személy átmenetileg tiltólistára kerül." +msgstr "" +"%s szeretné Önt hozzáadni partnerlistájához.\n" +"Szeretné megengedni neki, hogy lássa az Ön jelenlétét, illetve hozzá " +"szeretné adni a partnerlistához?\n" +"Ha nemmel válaszol, ez a személy átmenetileg tiltólistára kerül." #: ../gtk/main.c:1162 #, c-format @@ -155,7 +156,7 @@ msgstr "" msgid "Call error" msgstr "Hiba a hívás közben" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "Hívás vége" @@ -207,7 +208,9 @@ msgstr "Át vagyunk irányítva ide: %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "Hangkártya nincs érzékelve ezen a számítógépen.\nNem fog tudni hang hívásokat küldeni vagy fogadni." +msgstr "" +"Hangkártya nincs érzékelve ezen a számítógépen.\n" +"Nem fog tudni hang hívásokat küldeni vagy fogadni." #: ../gtk/main.c:2157 msgid "A free SIP video-phone" @@ -361,7 +364,9 @@ msgstr "" #: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." -msgstr "Újra kell indítania a linphone-t, hogy az új nyelv kiválasztása érvényre jusson. " +msgstr "" +"Újra kell indítania a linphone-t, hogy az új nyelv kiválasztása érvényre " +"jusson. " #: ../gtk/propertybox.c:1234 msgid "None" @@ -380,7 +385,9 @@ msgstr "ZRTP" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "Elérhető egy újabb verzió a következőn: %s.\nSzeretné, hogy a letöltéshez egy új böngésző ablak nyíljon?" +msgstr "" +"Elérhető egy újabb verzió a következőn: %s.\n" +"Szeretné, hogy a letöltéshez egy új böngésző ablak nyíljon?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -414,10 +421,13 @@ msgstr[0] "" msgstr[1] "" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "Üdvözöljük !\nEz a varázsló segít Önnek, hogy sip fiókot használjon hívásaihoz." +msgstr "" +"Üdvözöljük !\n" +"Ez a varázsló segít Önnek, hogy sip fiókot használjon hívásaihoz." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -495,7 +505,10 @@ msgstr "" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "Hiba, a fiók nincs érvényesítve. Valaki már használja ezt a felhasználónevet vagy a kiszolgáló nem elérhető.\nKérjük, lépjen vissza és próbálja újra." +msgstr "" +"Hiba, a fiók nincs érvényesítve. Valaki már használja ezt a felhasználónevet " +"vagy a kiszolgáló nem elérhető.\n" +"Kérjük, lépjen vissza és próbálja újra." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -503,43 +516,47 @@ msgstr "Köszönjük! Az Ön fiókját beállítottuk és használatra kész." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." -msgstr "Kérjük, érvényesítse fiókját az általunk elektronikus levélben küldött hivatkozásra kattintva.\nAzután térjen vissza ide és kattintson a Következő gombra." +msgstr "" +"Kérjük, érvényesítse fiókját az általunk elektronikus levélben küldött " +"hivatkozásra kattintva.\n" +"Azután térjen vissza ide és kattintson a Következő gombra." -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "A fiók beállítása varázsló üdvözli Önt" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "Fiók beállítása varázsló" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "Az Ön fiókjának beállítása (1/1 lépés)" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "Adja meg sip felhasználónevét (1/2 lépés)" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "Adja meg a fiókinformációt (1/2 lépés)" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "Érvényesítés (2/2 lépés)" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "Hiba" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "Befejezés" @@ -610,7 +627,9 @@ msgstr "közvetlen vagy kiszolgálón keresztül" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "letöltés: %f\nfeltöltés: %f (kbit/mp)" +msgstr "" +"letöltés: %f\n" +"feltöltés: %f (kbit/mp)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -691,11 +710,6 @@ msgstr "vonalban" msgid "Paused call" msgstr "Várakoztatott hívás" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i::%02i::%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Hívás vége." @@ -725,7 +739,9 @@ msgstr "Várakoztatás" msgid "" "Recording into\n" "%s %s" -msgstr "Felvétel a következőbe\n%s %s" +msgstr "" +"Felvétel a következőbe\n" +"%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" @@ -763,10 +779,13 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" +"Üdvözöljük !\n" +"Ez a varázsló segít Önnek, hogy sip fiókot használjon hívásaihoz." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -973,7 +992,8 @@ msgid "Login information" msgstr "Bejelentkezési információ" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "Üdvözöljük !" #: ../gtk/main.ui.h:47 @@ -981,16 +1001,20 @@ msgid "Delete" msgstr "Törlés" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "Linphone névjegy" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +#, fuzzy +msgid "(C) Belledonne Communications, 2010\n" msgstr "(C) Belledonne Communications,2010\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "Internetes videó telefon, mely a szabványos SIP (rfc3261) protokolt használja." +msgstr "" +"Internetes videó telefon, mely a szabványos SIP (rfc3261) protokolt " +"használja." #: ../gtk/about.ui.h:5 msgid "" @@ -1148,7 +1172,7 @@ msgstr "Audió kódekek" msgid "Video codecs" msgstr "Videó kódekek" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "C" @@ -1392,7 +1416,9 @@ msgstr "Alkalmazkodó mérték-szabályozás engedélyezése" msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "Az alkalmazkodó mérték-szabályozás egy módszer, mely erőteljesen próbálja megállapítani a rendelkezésre álló sávszélességet hívás alatt." +msgstr "" +"Az alkalmazkodó mérték-szabályozás egy módszer, mely erőteljesen próbálja " +"megállapítani a rendelkezésre álló sávszélességet hívás alatt." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1427,18 +1453,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "címke" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "Kész" @@ -1550,66 +1572,6 @@ msgstr "Alagút beállítása" msgid "Configure http proxy (optional)" msgstr "http proxy beállítása (nem kötelező)" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1705,12 +1667,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1721,64 +1682,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "Kész" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Telefonszám-cél keresése..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "Nem sikkerült értelmezni a számot." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "Kapcsolódás" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "Nem sikerült hívni" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Elnézést, elértük a egyidejű hívások maximális számát" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "kapcsolatba lépett veled." -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "és automatikus választ kért." -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "A hívási jellemzők módosítása..." -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Kapcsolódva." -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "Hívás megszakítva" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "Nem sikerült várakoztatni a hívást" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "Jelenlegi hívás várakoztatásának aktiválása..." @@ -1839,20 +1796,26 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "Ismeretlen programhiba" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "Az Ön által megadott SIP proxy cím érvénytelen. \"sip:\"-tal kell kezdődnie, ezt egy hosztnév követi." +msgstr "" +"Az Ön által megadott SIP proxy cím érvénytelen. \"sip:\"-tal kell kezdődnie, " +"ezt egy hosztnév követi." #: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "Az Ön által megadott SIP identitás érvénytelen.\nÍgy kéne kinéznie: sip:felhasznalonev@proxytartomany, például sip:aladar@pelda.hu" +msgstr "" +"Az Ön által megadott SIP identitás érvénytelen.\n" +"Így kéne kinéznie: sip:felhasznalonev@proxytartomany, például sip:" +"aladar@pelda.hu" #: ../coreapi/proxy.c:1377 #, c-format @@ -1892,7 +1855,8 @@ msgstr "%s válaszolt a hívásra." #: ../coreapi/callbacks.c:525 msgid "Incompatible, check codecs or security settings..." -msgstr "Nem kompatibilis, ellenőrizze a kódek- vagy a biztonsági beállításokat..." +msgstr "" +"Nem kompatibilis, ellenőrizze a kódek- vagy a biztonsági beállításokat..." #: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 msgid "Incompatible media parameters." @@ -1979,3 +1943,57 @@ msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "" msgstr[1] "" + +#~ msgid "label" +#~ msgstr "címke" + +#~ msgid "D" +#~ msgstr "D" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "B" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "A" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i::%02i::%02i" + +#~ msgid "." +#~ msgstr "." diff --git a/po/it.po b/po/it.po index a7e15fd13..dbd9daf78 100644 --- a/po/it.po +++ b/po/it.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:16+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/linphone-gtk/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/projects/p/linphone-gtk/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -62,11 +63,6 @@ msgid_plural "%i seconds" msgstr[0] "" msgstr[1] "" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" @@ -74,11 +70,9 @@ msgid "" "%s\t%s\t" msgstr "" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -94,7 +88,7 @@ msgstr "" msgid "Couldn't find pixmap file: %s" msgstr "" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "Contatto SIP non valido" @@ -124,8 +118,8 @@ msgstr "" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" msgstr "" #: ../gtk/main.c:156 @@ -140,9 +134,13 @@ msgstr "" #, 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 voui aggiungere il tuo contatto alla sua listaVoui permettere che lui veda il tuo stato o aggiungerlo alla tua lista dei contatti Se rispondi no questo utente sarà momentaneamente bloccato." +msgstr "" +"%s voui aggiungere il tuo contatto alla sua listaVoui permettere che lui " +"veda il tuo stato o aggiungerlo alla tua lista dei contatti Se rispondi no " +"questo utente sarà momentaneamente bloccato." #: ../gtk/main.c:1162 #, c-format @@ -155,7 +153,7 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "Chiamata terminata" @@ -380,7 +378,9 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "Una versione più recente è disponibile da %s.\nVuoi aprire un browser per eseguire il download ?" +msgstr "" +"Una versione più recente è disponibile da %s.\n" +"Vuoi aprire un browser per eseguire il download ?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -414,10 +414,13 @@ msgstr[0] "Trovato %i contatto" msgstr[1] "Trovato %i contatti" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "Benvenuti !\nLa procedura vi aiutera a configurare un account SIP." +msgstr "" +"Benvenuti !\n" +"La procedura vi aiutera a configurare un account SIP." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -503,43 +506,44 @@ msgstr "Grazie. Il tuo account è configurato e pronto all'uso" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." msgstr "" -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "Benvenuto nel configuratore di account" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "Configuratore di account" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "" @@ -691,11 +695,6 @@ msgstr "" msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Chiamata terminata." @@ -763,10 +762,13 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" +"Benvenuti !\n" +"La procedura vi aiutera a configurare un account SIP." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -973,7 +975,8 @@ msgid "Login information" msgstr "Credenziali di accesso" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "Benvenuto !" #: ../gtk/main.ui.h:47 @@ -981,11 +984,12 @@ msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "Info Linphone" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +msgid "(C) Belledonne Communications, 2010\n" msgstr "" #: ../gtk/about.ui.h:4 @@ -1148,7 +1152,7 @@ msgstr "" msgid "Video codecs" msgstr "" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "C" @@ -1310,7 +1314,8 @@ msgstr "Impostazioni multimediali" #: ../gtk/parameters.ui.h:50 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" +msgstr "" +"questa sezione definisce il tuo indirizzo SIP se non hai account attivi" #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" @@ -1427,18 +1432,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "etichetta" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "Fatto" @@ -1550,66 +1551,6 @@ msgstr "" msgid "Configure http proxy (optional)" msgstr "" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1705,12 +1646,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1721,64 +1661,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "Pronto" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Ricerca numero destinazione..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "Impossibile risolvere il numero." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "In connessione" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "" - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Connessione" -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "" @@ -1839,20 +1775,25 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "Bug-sconosciuto" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "L'indirizzo sip proxy utilizzato è invalido, deve iniziare con \"sip:\" seguito dall' hostaname." +msgstr "" +"L'indirizzo sip proxy utilizzato è invalido, deve iniziare con \"sip:\" " +"seguito dall' hostaname." #: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "L'identità sip utilizza è invalida.\nDovrebbre essere sip:username@proxydomain, esempio: sip:alice@example.net" +msgstr "" +"L'identità sip utilizza è invalida.\n" +"Dovrebbre essere sip:username@proxydomain, esempio: sip:alice@example.net" #: ../coreapi/proxy.c:1377 #, c-format @@ -1979,3 +1920,51 @@ msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "" msgstr[1] "" + +#~ msgid "label" +#~ msgstr "etichetta" + +#~ msgid "D" +#~ msgstr "D" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "B" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "A" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" diff --git a/po/ja.po b/po/ja.po index cc365010a..61385c5df 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Alexander, 2014 msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-28 09:19+0000\n" "Last-Translator: Alexander\n" -"Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/language/ja/)\n" +"Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/" +"language/ja/)\n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -61,24 +62,19 @@ msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i 秒" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "%s⇥%s" - #: ../gtk/calllogs.c:337 #, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "%s品質: %s\n%s⇥%s⇥" +msgstr "" +"%s品質: %s\n" +"%s⇥%s⇥" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" -msgstr "%s⇥\n%s" +msgid "%s\t%s" +msgstr "%s⇥%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -93,7 +89,7 @@ msgstr "自分" msgid "Couldn't find pixmap file: %s" msgstr "pixmapファイルが見つかりません %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "無効なSIP接続です!" @@ -123,9 +119,11 @@ msgstr "着信呼び出しが設定されている場合自動的に応答する #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "作業ディレクトリをSpecifiy (インストールした時のベースである必要があります。例:c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" +"作業ディレクトリをSpecifiy (インストールした時のベースである必要があります。" +"例:c:\\Program Files\\Linphone)" #: ../gtk/main.c:156 msgid "Configuration file" @@ -139,9 +137,14 @@ msgstr "オーディオアシスタントを実行" #, 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あなたが拒否すると、この人は一時的にブラックリストへ登録されます。" +msgstr "" +"%s が連絡相手にあなたを追加しようとしています。\n" +"あなたのステータスを参照させるか、もしくは連絡先リストに追加することができま" +"す。\n" +"あなたが拒否すると、この人は一時的にブラックリストへ登録されます。" #: ../gtk/main.c:1162 #, c-format @@ -154,7 +157,7 @@ msgstr "" msgid "Call error" msgstr "呼出エラー" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "呼出終了" @@ -379,7 +382,9 @@ msgstr "ZRTP" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "%s よりも新しいバージョンが利用可能です。\nダウンロードするために、ブラウザを開きますか?" +msgstr "" +"%s よりも新しいバージョンが利用可能です。\n" +"ダウンロードするために、ブラウザを開きますか?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -412,10 +417,13 @@ msgid_plural "Found %i contacts" msgstr[0] "%i 件発見" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "ようこそ!\nこのアシスタントは、あなたのSIPアカウントを使用するのに役立ちます。" +msgstr "" +"ようこそ!\n" +"このアシスタントは、あなたのSIPアカウントを使用するのに役立ちます。" #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -501,43 +509,44 @@ msgstr "" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." msgstr "" -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "アカウント設定アシスタントへようこそ" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "アカウント設定アシスタント" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "エラー" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "" @@ -689,11 +698,6 @@ msgstr "" msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i::%02i::%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "" @@ -761,10 +765,13 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" +"ようこそ!\n" +"このアシスタントは、あなたのSIPアカウントを使用するのに役立ちます。" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -971,7 +978,8 @@ msgid "Login information" msgstr "ログイン情報" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "ようこそ" #: ../gtk/main.ui.h:47 @@ -979,11 +987,13 @@ msgid "Delete" msgstr "削除" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "linphoneについて" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +#, fuzzy +msgid "(C) Belledonne Communications, 2010\n" msgstr "(C) Belledonne Communications,2010\n" #: ../gtk/about.ui.h:4 @@ -1004,7 +1014,19 @@ msgid "" "cs: Petr Pisar \n" "hu: anonymous\n" "he: Eli Zaretskii \n" -msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n" +msgstr "" +"fr: Simon Morlat\n" +"en: Simon Morlat and Delphine Perreau\n" +"it: Alberto Zanoni \n" +"de: Jean-Jacques Sarton \n" +"sv: Daniel Nylander \n" +"es: Jesus Benitez \n" +"ja: YAMAGUCHI YOSHIYA \n" +"pt_BR: Rafael Caesar Lenzi \n" +"pl: Robert Nasiadek \n" +"cs: Petr Pisar \n" +"hu: anonymous\n" +"he: Eli Zaretskii \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1146,7 +1168,7 @@ msgstr "オーディオのコーデック" msgid "Video codecs" msgstr "ビデオのコーデック" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "" @@ -1425,18 +1447,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "ラベル" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "" @@ -1548,66 +1566,6 @@ msgstr "" msgid "Configure http proxy (optional)" msgstr "" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1703,14 +1661,13 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" -#: ../gtk/config-uri.ui.h:4 -msgid "https://" -msgstr "https://" - #: ../gtk/provisioning-fetch.ui.h:1 msgid "Configuring..." msgstr "" @@ -1719,64 +1676,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "準備" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "" -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "" #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "接続しました。" -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "" @@ -1837,7 +1790,8 @@ msgid "Vacation" msgstr "休暇中" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "不明なバグ" #: ../coreapi/proxy.c:319 @@ -1976,3 +1930,58 @@ msgstr "" msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "" + +#~ msgid "https://" +#~ msgstr "https://" + +#~ msgid "label" +#~ msgstr "ラベル" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "" +#~ "%s\t\n" +#~ "%s" +#~ msgstr "" +#~ "%s⇥\n" +#~ "%s" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i::%02i::%02i" + +#~ msgid "." +#~ msgstr "." diff --git a/po/nb_NO.po b/po/nb_NO.po index a4b047ac4..2a316169b 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Øyvind Sæther , 2011 msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:17+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/linphone-gtk/language/nb_NO/)\n" +"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/" +"p/linphone-gtk/language/nb_NO/)\n" +"Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -63,11 +64,6 @@ msgid_plural "%i seconds" msgstr[0] "" msgstr[1] "" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" @@ -75,11 +71,9 @@ msgid "" "%s\t%s\t" msgstr "" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -95,7 +89,7 @@ msgstr "" msgid "Couldn't find pixmap file: %s" msgstr "Fant ikke pixmap fli: %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "Ugyldig SIP kontakt !" @@ -125,9 +119,11 @@ msgstr "besvarer innkommende samtaler automatisk om valgt" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "Spesifiser arbeidsmappe (bør være base for installasjonen, f.eks: c:\\Programfiler\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" +"Spesifiser arbeidsmappe (bør være base for installasjonen, f.eks: c:" +"\\Programfiler\\Linphone)" #: ../gtk/main.c:156 msgid "Configuration file" @@ -141,9 +137,14 @@ msgstr "" #, 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 vil legge deg til i hans/hennes kontaktliste.\nVil du tillate vedkommende å se din tilstedestatus eller legge vedkommende i din kontaktliste?\nHvis du svarer nei vil personen bli svartelyst midlertidig." +msgstr "" +"%s vil legge deg til i hans/hennes kontaktliste.\n" +"Vil du tillate vedkommende å se din tilstedestatus eller legge vedkommende i " +"din kontaktliste?\n" +"Hvis du svarer nei vil personen bli svartelyst midlertidig." #: ../gtk/main.c:1162 #, c-format @@ -156,7 +157,7 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "Samtale avsluttet" @@ -208,7 +209,9 @@ msgstr "Vi er overført til %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "Klarte ikke å finne noe lydkort på denne datamaskinen.\nDu vil ikke kunne sende eller motta lydsamtaler." +msgstr "" +"Klarte ikke å finne noe lydkort på denne datamaskinen.\n" +"Du vil ikke kunne sende eller motta lydsamtaler." #: ../gtk/main.c:2157 msgid "A free SIP video-phone" @@ -381,7 +384,9 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "En nyere utgave er tilgjengelig fra %s.\nVil du åpne en nettleser og laste den ned ?" +msgstr "" +"En nyere utgave er tilgjengelig fra %s.\n" +"Vil du åpne en nettleser og laste den ned ?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -415,10 +420,13 @@ msgstr[0] "Fant kontakt %i" msgstr[1] "Hittat kontakt %i" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "Velkommen\nDenne veiviseren vil hjelpe deg sette opp en SIP-konto for dine samtaler." +msgstr "" +"Velkommen\n" +"Denne veiviseren vil hjelpe deg sette opp en SIP-konto for dine samtaler." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -504,43 +512,44 @@ msgstr "Takk. Ditt konto er nå satt opp og klart til bruk." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." msgstr "" -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "Velkommen til brukerkontoveiviseren" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "Brukerkontoveiviser" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "" @@ -692,11 +701,6 @@ msgstr "I samtale med" msgid "Paused call" msgstr "Pauset samtale" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i:%02i:%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Samtale avsluttet." @@ -764,10 +768,13 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" +"Velkommen\n" +"Denne veiviseren vil hjelpe deg sette opp en SIP-konto for dine samtaler." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -974,7 +981,8 @@ msgid "Login information" msgstr "Innlogginsinformasjon" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "Velkommen!" #: ../gtk/main.ui.h:47 @@ -982,16 +990,20 @@ msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "Om Linphone" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +#, fuzzy +msgid "(C) Belledonne Communications, 2010\n" msgstr "(C) Belledonne Communications,2011\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "En Internet Videotelefon som bruker den standardiserte SIP-protokollen (rfc3261)." +msgstr "" +"En Internet Videotelefon som bruker den standardiserte SIP-protokollen " +"(rfc3261)." #: ../gtk/about.ui.h:5 msgid "" @@ -1149,7 +1161,7 @@ msgstr "Lyd kodek" msgid "Video codecs" msgstr "Video kodek" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "C" @@ -1428,18 +1440,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "etikett" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "Ferdig" @@ -1551,66 +1559,6 @@ msgstr "" msgid "Configure http proxy (optional)" msgstr "" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1706,12 +1654,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1722,64 +1669,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "Klar" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Ser etter telefonnummer for destinasjonen..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "Kan ikke tilkoble dette nummeret." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "Tilknytter" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "Kunne ikke ringe" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Beklager, du har nådd maksimalt antall samtidige samtaler" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "Kontakter deg." -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr " og ba om autosvar." -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "Endrer ringeparametre..." -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Tilkoblet" -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "Samtale avbrutt" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "Kunne ikke pause samtalen" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "Pauser nåværende samtale" @@ -1840,20 +1783,25 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "Ukjent feil" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "SIP proxy adressen du har angitt er ugyldig, den må begynne med \"sip:\" etterfult av vertsnavn." +msgstr "" +"SIP proxy adressen du har angitt er ugyldig, den må begynne med \"sip:\" " +"etterfult av vertsnavn." #: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "SIP adressen du har angitt er feil. Adressen bør se ut som sip: brukernavn@domenenavn, f.eks sip:ola@eksempel.no" +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:1377 #, c-format @@ -1980,3 +1928,57 @@ 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 "label" +#~ msgstr "etikett" + +#~ msgid "D" +#~ msgstr "D" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "B" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "A" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i:%02i:%02i" + +#~ msgid "." +#~ msgstr "." diff --git a/po/nl.po b/po/nl.po index be7b007b6..9d3ccea4e 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:08+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Dutch (http://www.transifex.com/projects/p/linphone-gtk/language/nl/)\n" +"Language-Team: Dutch (http://www.transifex.com/projects/p/linphone-gtk/" +"language/nl/)\n" +"Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -62,11 +63,6 @@ msgid_plural "%i seconds" msgstr[0] "" msgstr[1] "" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" @@ -74,11 +70,9 @@ msgid "" "%s\t%s\t" msgstr "" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -94,7 +88,7 @@ msgstr "" msgid "Couldn't find pixmap file: %s" msgstr "Kon pixmap bestand %s niet vinden" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "" @@ -124,8 +118,8 @@ msgstr "" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" msgstr "" #: ../gtk/main.c:156 @@ -140,7 +134,8 @@ msgstr "" #, 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 "" @@ -155,7 +150,7 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "Oproep beeindigd" @@ -415,7 +410,7 @@ msgstr[1] "" #: ../gtk/setupwizard.c:34 msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" @@ -503,43 +498,44 @@ msgstr "" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." msgstr "" -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "" @@ -691,11 +687,6 @@ msgstr "" msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "" @@ -764,7 +755,7 @@ msgstr "" #: ../gtk/audio_assistant.c:318 msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" @@ -973,7 +964,7 @@ msgid "Login information" msgstr "" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +msgid "Welcome!" msgstr "" #: ../gtk/main.ui.h:47 @@ -981,11 +972,11 @@ msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -msgid "About linphone" +msgid "About Linphone" msgstr "" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +msgid "(C) Belledonne Communications, 2010\n" msgstr "" #: ../gtk/about.ui.h:4 @@ -1148,7 +1139,7 @@ msgstr "" msgid "Video codecs" msgstr "" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "" @@ -1427,18 +1418,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "" @@ -1550,66 +1537,6 @@ msgstr "" msgid "Configure http proxy (optional)" msgstr "" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1705,12 +1632,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1721,64 +1647,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "Gereed." -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Zoekt de lokatie van het telefoonnummer..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "Kon dit nummer niet vinden." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "Verbinden" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "" - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Verbonden." -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "" @@ -1839,7 +1761,7 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +msgid "Unknown status" msgstr "" #: ../coreapi/proxy.c:319 @@ -1979,3 +1901,18 @@ msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "" msgstr[1] "" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "1" +#~ msgstr "1" diff --git a/po/pl.po b/po/pl.po index 99a4937a0..2112163f9 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:08+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/linphone-gtk/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/projects/p/linphone-gtk/" +"language/pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -64,11 +66,6 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" @@ -76,11 +73,9 @@ msgid "" "%s\t%s\t" msgstr "" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -96,7 +91,7 @@ msgstr "" msgid "Couldn't find pixmap file: %s" msgstr "Nie można znaleźć pixmapy: %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "" @@ -126,8 +121,8 @@ msgstr "" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" msgstr "" #: ../gtk/main.c:156 @@ -142,7 +137,8 @@ msgstr "" #, 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 "" @@ -157,7 +153,7 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "" @@ -418,7 +414,7 @@ msgstr[2] "" #: ../gtk/setupwizard.c:34 msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" @@ -506,43 +502,44 @@ msgstr "" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." msgstr "" -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "" @@ -694,11 +691,6 @@ msgstr "" msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "" @@ -767,7 +759,7 @@ msgstr "" #: ../gtk/audio_assistant.c:318 msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" @@ -976,7 +968,7 @@ msgid "Login information" msgstr "" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +msgid "Welcome!" msgstr "" #: ../gtk/main.ui.h:47 @@ -984,11 +976,11 @@ msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -msgid "About linphone" +msgid "About Linphone" msgstr "" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +msgid "(C) Belledonne Communications, 2010\n" msgstr "" #: ../gtk/about.ui.h:4 @@ -1151,7 +1143,7 @@ msgstr "" msgid "Video codecs" msgstr "" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "" @@ -1430,18 +1422,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "" @@ -1553,66 +1541,6 @@ msgstr "" msgid "Configure http proxy (optional)" msgstr "" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1708,12 +1636,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1724,64 +1651,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "" -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "" #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "" - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Połączony" -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "" @@ -1842,7 +1765,7 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +msgid "Unknown status" msgstr "" #: ../coreapi/proxy.c:319 @@ -1983,3 +1906,39 @@ msgid_plural "You have missed %i calls." msgstr[0] "" msgstr[1] "" msgstr[2] "" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" diff --git a/po/pt_BR.po b/po/pt_BR.po index 46209da20..0b474b49e 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:08+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/linphone-gtk/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" +"linphone-gtk/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -62,11 +63,6 @@ msgid_plural "%i seconds" msgstr[0] "" msgstr[1] "" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" @@ -74,11 +70,9 @@ msgid "" "%s\t%s\t" msgstr "" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -94,7 +88,7 @@ msgstr "" msgid "Couldn't find pixmap file: %s" msgstr "Não é possível achar arquivo pixmap: %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "" @@ -124,8 +118,8 @@ msgstr "" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" msgstr "" #: ../gtk/main.c:156 @@ -140,7 +134,8 @@ msgstr "" #, 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 "" @@ -155,7 +150,7 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "" @@ -415,7 +410,7 @@ msgstr[1] "" #: ../gtk/setupwizard.c:34 msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" @@ -503,43 +498,44 @@ msgstr "" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." msgstr "" -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "" @@ -691,11 +687,6 @@ msgstr "" msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "" @@ -764,7 +755,7 @@ msgstr "" #: ../gtk/audio_assistant.c:318 msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" @@ -973,7 +964,7 @@ msgid "Login information" msgstr "" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +msgid "Welcome!" msgstr "" #: ../gtk/main.ui.h:47 @@ -981,11 +972,11 @@ msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -msgid "About linphone" +msgid "About Linphone" msgstr "" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +msgid "(C) Belledonne Communications, 2010\n" msgstr "" #: ../gtk/about.ui.h:4 @@ -1148,7 +1139,7 @@ msgstr "" msgid "Video codecs" msgstr "" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "" @@ -1427,18 +1418,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "" @@ -1550,66 +1537,6 @@ msgstr "" msgid "Configure http proxy (optional)" msgstr "" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1705,12 +1632,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1721,64 +1647,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Procurando por telefone de destino..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "Não foi possível encontrar este número." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "" - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Conectado." -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "" @@ -1839,7 +1761,7 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +msgid "Unknown status" msgstr "" #: ../coreapi/proxy.c:319 diff --git a/po/ru.po b/po/ru.po index ed3767e23..410947d4f 100644 --- a/po/ru.po +++ b/po/ru.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # a , 2014 # a , 2014 @@ -11,15 +11,17 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:13+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/linphone-gtk/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/projects/p/linphone-gtk/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -68,24 +70,19 @@ msgstr[0] "%i секунда" msgstr[1] "%i секунды" msgstr[2] "%i секунд" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "%s\t%s" - #: ../gtk/calllogs.c:337 #, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "%s\tКачество: %s\n%s\t%s\t" +msgstr "" +"%s\tКачество: %s\n" +"%s\t%s\t" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" -msgstr "%s\t\n%s" +msgid "%s\t%s" +msgstr "%s\t%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -100,13 +97,15 @@ msgstr "Мне" msgid "Couldn't find pixmap file: %s" msgstr "Невозможно найти графический файл: %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "Неверный sip контакт!" #: ../gtk/main.c:107 msgid "log to stdout some debug information while running." -msgstr "Вывод некоторой отладочной информации на устройство стандартного вывода во время работы." +msgstr "" +"Вывод некоторой отладочной информации на устройство стандартного вывода во " +"время работы." #: ../gtk/main.c:114 msgid "path to a file to write logs into." @@ -130,9 +129,11 @@ msgstr "Если установлено, то автоматический пр #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "Определить рабочий каталог (относительно каталога установки, например: c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" +"Определить рабочий каталог (относительно каталога установки, например: c:" +"\\Program Files\\Linphone)" #: ../gtk/main.c:156 msgid "Configuration file" @@ -146,22 +147,29 @@ msgstr "Запустить помощника аудио" #, 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Если вы ответите Нет, эта персона будет временно в чёрном списке." +msgstr "" +"%s вы бы хотели быть добавленным в этот контактный лист.\n" +"Вы разрешаете ему(ей) видеть ваш статус присутствия или добавить в " +"контактный лист?\n" +"Если вы ответите Нет, эта персона будет временно в чёрном списке." #: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "Пожалуйста, введите пароль для пользователя %s\n для реалм (рилм) %s:" +msgstr "" +"Пожалуйста, введите пароль для пользователя %s\n" +" для реалм (рилм) %s:" #: ../gtk/main.c:1283 msgid "Call error" msgstr "Ошибка звонка" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "Звонок окончен" @@ -213,7 +221,9 @@ msgstr "Мы передали в %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "Звуковые карты не были обнаружены на этом компьютере.\nВы не сможете отправлять или получать аудио звонки." +msgstr "" +"Звуковые карты не были обнаружены на этом компьютере.\n" +"Вы не сможете отправлять или получать аудио звонки." #: ../gtk/main.c:2157 msgid "A free SIP video-phone" @@ -367,7 +377,9 @@ msgstr "Сербский" #: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." -msgstr "Вы должны перезагрузить linphone для того, чтобы языковые настройки вступили в силу." +msgstr "" +"Вы должны перезагрузить linphone для того, чтобы языковые настройки вступили " +"в силу." #: ../gtk/propertybox.c:1234 msgid "None" @@ -386,7 +398,9 @@ msgstr "ZRTP" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "Доступна новая версия с %s.\nОткрыть браузер для загрузки?" +msgstr "" +"Доступна новая версия с %s.\n" +"Открыть браузер для загрузки?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -421,10 +435,13 @@ msgstr[1] "Найдено %i контакта" msgstr[2] "Найдено %i контактов" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "Добро пожаловать!\nЭтот помощник поможет вам использовать учётную запись SIP для ваших звонков." +msgstr "" +"Добро пожаловать!\n" +"Этот помощник поможет вам использовать учётную запись SIP для ваших звонков." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -432,7 +449,8 @@ msgstr "Создать учётную запись на linphone.org" #: ../gtk/setupwizard.c:44 msgid "I have already a linphone.org account and I just want to use it" -msgstr "Я уже имею учётную запись на linphone.org и только хочу использовать её" +msgstr "" +"Я уже имею учётную запись на linphone.org и только хочу использовать её" #: ../gtk/setupwizard.c:45 msgid "I have already a sip account and I just want to use it" @@ -502,7 +520,10 @@ msgstr "Информировать об обновлениях linphone" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "Ошибка, учётная запись не подтверждена, имя пользователя уже используется или\nсервер недоступен. Пожалуйста, зайдите снова и попробуйте ещё раз." +msgstr "" +"Ошибка, учётная запись не подтверждена, имя пользователя уже используется " +"или\n" +"сервер недоступен. Пожалуйста, зайдите снова и попробуйте ещё раз." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -510,43 +531,48 @@ msgstr "Спасибо! Учётная запись успешно настро #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." -msgstr "Пожалуйста, подтвердите вашу учётную запись, щёлкнув на ссылку, которую вы только\nчто получили по электронной почте. Затем вернитесь сюда и нажмите кнопку Далее." +msgstr "" +"Пожалуйста, подтвердите вашу учётную запись, щёлкнув на ссылку, которую вы " +"только\n" +"что получили по электронной почте. Затем вернитесь сюда и нажмите кнопку " +"Далее." -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "Помощник настройки учётной записи SIP" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "Добро пожаловать в помощник настройки учётной записи" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "Помощник настройки учётной записи" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "Настроить вашу учётную запись (шаг 1/1)" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "Введите ваше sip имя пользователя (шаг 1/1)" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "Введите информацию об учётной записи (шаг 1/2)" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "Подтверждение (шаг 2/2)" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "Ошибка" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "Прерывание" @@ -617,7 +643,9 @@ msgstr "Напрямую или через сервер" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "загрузка: %f\nотдача: %f (КБит/сек)" +msgstr "" +"загрузка: %f\n" +"отдача: %f (КБит/сек)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -698,11 +726,6 @@ msgstr "Звоним" msgid "Paused call" msgstr "Звонок приостановлен" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i::%02i::%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Звонок закончен." @@ -732,7 +755,9 @@ msgstr "Пауза" msgid "" "Recording into\n" "%s %s" -msgstr "Записывается в\n%s %s" +msgstr "" +"Записывается в\n" +"%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" @@ -770,10 +795,13 @@ msgid "Too loud" msgstr "Слишком громко" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" -msgstr "Добро пожаловать!\nЭтот помощник поможет вам сконфигурировать настройки аудио для linphone" +msgstr "" +"Добро пожаловать!\n" +"Этот помощник поможет вам сконфигурировать настройки аудио для linphone" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -980,7 +1008,8 @@ msgid "Login information" msgstr "Информация для входа" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "Добро пожаловать!" #: ../gtk/main.ui.h:47 @@ -988,11 +1017,13 @@ msgid "Delete" msgstr "Удалить" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "Про linphone" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +#, fuzzy +msgid "(C) Belledonne Communications, 2010\n" msgstr "(C) Belledonne Communications,2010\n" #: ../gtk/about.ui.h:4 @@ -1013,7 +1044,19 @@ msgid "" "cs: Petr Pisar \n" "hu: anonymous\n" "he: Eli Zaretskii \n" -msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \n" +msgstr "" +"fr: Simon Morlat\n" +"en: Simon Morlat and Delphine Perreau\n" +"it: Alberto Zanoni \n" +"de: Jean-Jacques Sarton \n" +"sv: Daniel Nylander \n" +"es: Jesus Benitez \n" +"ja: YAMAGUCHI YOSHIYA \n" +"pt_BR: Rafael Caesar Lenzi \n" +"pl: Robert Nasiadek \n" +"cs: Petr Pisar \n" +"hu: anonymous\n" +"he: Eli Zaretskii \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1155,7 +1198,7 @@ msgstr "Аудио кодеки" msgid "Video codecs" msgstr "Видео кодеки" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "C" @@ -1317,7 +1360,9 @@ msgstr "Настройки мультимедиа" #: ../gtk/parameters.ui.h:50 msgid "This section defines your SIP address when not using a SIP account" -msgstr "Эта секция определяет ваш SIP адрес, когда вы не используете учётную запись SIP" +msgstr "" +"Эта секция определяет ваш SIP адрес, когда вы не используете учётную запись " +"SIP" #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" @@ -1399,7 +1444,9 @@ msgstr "Разрешить адаптивное управление скоро msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "Адаптивное управление скоростью - это технология динамического угадывания доступной пропускной способности во время звонка." +msgstr "" +"Адаптивное управление скоростью - это технология динамического угадывания " +"доступной пропускной способности во время звонка." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1434,18 +1481,14 @@ msgid "Authentication method:" msgstr "Метод аутентификации:" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "метка" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "Установка учётной записи LDAP" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "LDAP" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "Готово" @@ -1557,66 +1600,6 @@ msgstr "Конфигурировать тунель" msgid "Configure http proxy (optional)" msgstr "Конфигурировать http прокси (опционально)" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "Настройки LDAP" @@ -1712,13 +1695,17 @@ msgstr "Указание удалённой конфигурации URI" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "Этот диалог позволяет установить HTTP или HTTPS адрес, когда конфигурация будет получена при запуске.\nПожалуйста, введите или измените настройки URI ниже. После нажатия OK linphone автоматически перезагрузится чтобы получить и учесть новую конфигурацию в учётной записи." - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" -msgstr "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " +msgstr "" +"Этот диалог позволяет установить HTTP или HTTPS адрес, когда конфигурация " +"будет получена при запуске.\n" +"Пожалуйста, введите или измените настройки URI ниже. После нажатия OK " +"linphone автоматически перезагрузится чтобы получить и учесть новую " +"конфигурацию в учётной записи." #: ../gtk/provisioning-fetch.ui.h:1 msgid "Configuring..." @@ -1728,64 +1715,61 @@ msgstr "Конфигурирование..." msgid "Please wait while fetching configuration from server..." msgstr "Пожалуйста, подождите пока получается конфигурация с сервера..." -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "Готов" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "Конфигурирование" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Поиск назначения для телефонного номера.." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "Не получилось принять решение по этому номеру." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "Соединение" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "Невозможно позвонить" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" -msgstr "К сожалению, мы достигли максимального количества одновременных звонков" +msgstr "" +"К сожалению, мы достигли максимального количества одновременных звонков" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "контактирует с вами" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "и спросил автоматический ответ." -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "Изменение параметров звонка..." -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Соединён." -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "Звонок отменён" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "Невозможно приостановить звонок" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "Приостановка текущего звонка..." @@ -1846,20 +1830,26 @@ msgid "Vacation" msgstr "Отдых" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "Неизвестная ошибка" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "Введённый SIP-адрес прокси является недействительным, он должен начинаться с \"sip:имя_хоста\"" +msgstr "" +"Введённый SIP-адрес прокси является недействительным, он должен начинаться с " +"\"sip:имя_хоста\"" #: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "Неверные параметры для sip идентификации\nДолжно выглядеть как sip:имя_пользователя@домен_прокси, как например, sip:alice@example.net" +msgstr "" +"Неверные параметры для sip идентификации\n" +"Должно выглядеть как sip:имя_пользователя@домен_прокси, как например, sip:" +"alice@example.net" #: ../coreapi/proxy.c:1377 #, c-format @@ -1987,3 +1977,67 @@ msgid_plural "You have missed %i calls." msgstr[0] "У вас %i пропущенный вызов." msgstr[1] "У вас %i пропущенных вызова." msgstr[2] "У вас %i пропущенных вызов." + +#~ msgid "https://" +#~ msgstr "https://" + +#~ msgid "label" +#~ msgstr "метка" + +#~ msgid "D" +#~ msgstr "D" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "B" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "A" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "" +#~ "%s\t\n" +#~ "%s" +#~ msgstr "" +#~ "%s\t\n" +#~ "%s" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i::%02i::%02i" + +#~ msgid "." +#~ msgstr "." diff --git a/po/sr.po b/po/sr.po index 0b98e236f..653de971f 100644 --- a/po/sr.po +++ b/po/sr.po @@ -1,22 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Мирослав Николић , 2014 msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-26 20:58+0000\n" "Last-Translator: Мирослав Николић \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/linphone-gtk/language/sr/)\n" +"Language-Team: Serbian (http://www.transifex.com/projects/p/linphone-gtk/" +"language/sr/)\n" +"Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format @@ -65,24 +67,19 @@ msgstr[0] "%i секунда" msgstr[1] "%i секунде" msgstr[2] "%i секунди" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "%s\t%s" - #: ../gtk/calllogs.c:337 #, c-format msgid "" "%s\tQuality: %s\n" "%s\t%s\t" -msgstr "%s\tКвалитет: %s\n%s\t%s\t" +msgstr "" +"%s\tКвалитет: %s\n" +"%s\t%s\t" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" -msgstr "%s\t\n%s" +msgid "%s\t%s" +msgstr "%s\t%s" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 msgid "Conference" @@ -97,7 +94,7 @@ msgstr "Ја" msgid "Couldn't find pixmap file: %s" msgstr "Не могу да пронађем датотеку сличице: %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "Неисправан сип контакт !" @@ -127,9 +124,11 @@ msgstr "ако је подешено сам ће се јављати на дол #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "Наводи радни директоријум (треба да буде основа инсталације, нпр: „c:\\Program Files\\Linphone“)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" +"Наводи радни директоријум (треба да буде основа инсталације, нпр: „c:" +"\\Program Files\\Linphone“)" #: ../gtk/main.c:156 msgid "Configuration file" @@ -143,22 +142,30 @@ msgstr "Покреће помоћника звука" #, 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Ако одговорите са не, ова особа ће привремено бити стављена на списак забрана." +msgstr "" +"%s жели да вас дода на списак пријатеља.\n" +"Да ли желите да му допустите да види ваше стање присуства или да га додате " +"на ваш списак пријатеља ?\n" +"Ако одговорите са не, ова особа ће привремено бити стављена на списак " +"забрана." #: ../gtk/main.c:1162 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" -msgstr "Унесите вашу лозинку за корисничко име %s\n на подручју %s:" +msgstr "" +"Унесите вашу лозинку за корисничко име %s\n" +" на подручју %s:" #: ../gtk/main.c:1283 msgid "Call error" msgstr "Грешка позива" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "Позив је завршен" @@ -210,7 +217,9 @@ msgstr "Преселили смо се на %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "Ниједна звучна картица није откривена на овом рачунару.\nНећете бити у могућности да шаљете или да примате звучне позиве." +msgstr "" +"Ниједна звучна картица није откривена на овом рачунару.\n" +"Нећете бити у могућности да шаљете или да примате звучне позиве." #: ../gtk/main.c:2157 msgid "A free SIP video-phone" @@ -364,7 +373,8 @@ msgstr "Српски" #: ../gtk/propertybox.c:1156 msgid "" "You need to restart linphone for the new language selection to take effect." -msgstr "Треба поново да покренете линфон да би нови изабрани језик ступио у дејство." +msgstr "" +"Треба поново да покренете линфон да би нови изабрани језик ступио у дејство." #: ../gtk/propertybox.c:1234 msgid "None" @@ -383,7 +393,9 @@ msgstr "ЗРТП" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "Новије издање је доступно са „%s“.\nДа ли желите да отворите прегледник и да га преузмете ?" +msgstr "" +"Новије издање је доступно са „%s“.\n" +"Да ли желите да отворите прегледник и да га преузмете ?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -418,10 +430,13 @@ msgstr[1] "Нашао сам %i контакта" msgstr[2] "Нашао сам %i контаката" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "Добро дошли !\nОвај помоћник ће вам помоћи да користите СИП налог за ваше позиве." +msgstr "" +"Добро дошли !\n" +"Овај помоћник ће вам помоћи да користите СИП налог за ваше позиве." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -499,7 +514,10 @@ msgstr "Обавештавај ме о ажурирањима линфона" msgid "" "Error, account not validated, username already used or server unreachable.\n" "Please go back and try again." -msgstr "Грешка, налог није потврђен, корисничко име је већ у употреби или је сервер недоступан.\nВратите се назад и покушајте опет." +msgstr "" +"Грешка, налог није потврђен, корисничко име је већ у употреби или је сервер " +"недоступан.\n" +"Вратите се назад и покушајте опет." #: ../gtk/setupwizard.c:405 msgid "Thank you. Your account is now configured and ready for use." @@ -507,43 +525,47 @@ msgstr "Хвала вам. Ваш налог је сада подешен и с #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." -msgstr "Потврдите ваш налог притиском на везу коју смо вам управо послали ел. поштом.\nЗатим се вратите овде и притисните дугме „Напред“." +msgstr "" +"Потврдите ваш налог притиском на везу коју смо вам управо послали ел. " +"поштом.\n" +"Затим се вратите овде и притисните дугме „Напред“." -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "Помоћник подешавања СИП налога" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "Добро дошли у помоћника подешавања налога" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "Помоћник подешавања налога" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "Подесите ваш налог (корак 1/1)" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "Унесите ваше корисничко име сип-а (корак 1/1)" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "Унесите податке налога (корак 1/2)" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "Потврђивање (корак 2/2)" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "Грешка" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "Завршавам" @@ -614,7 +636,9 @@ msgstr "Непосредно или кроз сервер" msgid "" "download: %f\n" "upload: %f (kbit/s)" -msgstr "преузимање: %f\nотпремање: %f (kbit/s)" +msgstr "" +"преузимање: %f\n" +"отпремање: %f (kbit/s)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -695,11 +719,6 @@ msgstr "У позиву" msgid "Paused call" msgstr "Заустављен позив" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i::%02i::%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Позив је завршен." @@ -729,7 +748,9 @@ msgstr "Застани" msgid "" "Recording into\n" "%s %s" -msgstr "Снимам у\n%s %s" +msgstr "" +"Снимам у\n" +"%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" @@ -767,10 +788,13 @@ msgid "Too loud" msgstr "Сувише гласан" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" -msgstr "Добро дошли !\nОвај помоћник ће вам помоћи да подесите звучне поставке за Линфон" +msgstr "" +"Добро дошли !\n" +"Овај помоћник ће вам помоћи да подесите звучне поставке за Линфон" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -977,7 +1001,8 @@ msgid "Login information" msgstr "Подаци пријављивања" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "Добро дошли !" #: ../gtk/main.ui.h:47 @@ -985,16 +1010,19 @@ msgid "Delete" msgstr "Обриши" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "О линфону" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +#, fuzzy +msgid "(C) Belledonne Communications, 2010\n" msgstr "(C) Беледоне комуникације, 2010\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." -msgstr "Интернет телефон са снимком који користи уобичајени СИП протокол (rfc3261)." +msgstr "" +"Интернет телефон са снимком који користи уобичајени СИП протокол (rfc3261)." #: ../gtk/about.ui.h:5 msgid "" @@ -1010,7 +1038,20 @@ msgid "" "cs: Petr Pisar \n" "hu: anonymous\n" "he: Eli Zaretskii \n" -msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \nsr: Мирослав Николић \n" +msgstr "" +"fr: Simon Morlat\n" +"en: Simon Morlat and Delphine Perreau\n" +"it: Alberto Zanoni \n" +"de: Jean-Jacques Sarton \n" +"sv: Daniel Nylander \n" +"es: Jesus Benitez \n" +"ja: YAMAGUCHI YOSHIYA \n" +"pt_BR: Rafael Caesar Lenzi \n" +"pl: Robert Nasiadek \n" +"cs: Petr Pisar \n" +"hu: anonymous\n" +"he: Eli Zaretskii \n" +"sr: Мирослав Николић \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1152,7 +1193,7 @@ msgstr "Кодеци звука" msgid "Video codecs" msgstr "Кодеци снимка" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "В" @@ -1396,7 +1437,9 @@ msgstr "Укључи прилагодљиво управљање протоко msgid "" "Adaptive rate control is a technique to dynamically guess the available " "bandwidth during a call." -msgstr "Прилагодљиво управљање протоком је техника за променљиво погађање доступног пропусног опсега за време позива." +msgstr "" +"Прилагодљиво управљање протоком је техника за променљиво погађање " +"доступног пропусног опсега за време позива." #: ../gtk/parameters.ui.h:71 msgid "Bandwidth control" @@ -1431,18 +1474,14 @@ msgid "Authentication method:" msgstr "Начин потврђивања идентитета:" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "натпис" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "Подешавања ЛДАП налога" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "ЛДАП" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "Готово" @@ -1554,66 +1593,6 @@ msgstr "Подесите тунел" msgid "Configure http proxy (optional)" msgstr "Подесите хттп посредника (изборно)" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "Г" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "Б" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "А" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "ЛДАП подешавања" @@ -1709,13 +1688,17 @@ msgstr "Наводим удаљену путању подешавања" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "Ово прозорче омогућава подешавање хттп или хттпс адресе када се подешавање добавља на покретању.\nУнесите или измените путању подешавања. Након што притиснете „У реду“, Линфон ће се сам поново покренути како би довукао и унео у налог нова подешавања. " - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" -msgstr "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " +msgstr "" +"Ово прозорче омогућава подешавање хттп или хттпс адресе када се подешавање " +"добавља на покретању.\n" +"Унесите или измените путању подешавања. Након што притиснете „У реду“, " +"Линфон ће се сам поново покренути како би довукао и унео у налог нова " +"подешавања. " #: ../gtk/provisioning-fetch.ui.h:1 msgid "Configuring..." @@ -1725,64 +1708,60 @@ msgstr "Подешавам..." msgid "Please wait while fetching configuration from server..." msgstr "Сачекајте док довучем подешавања са сервера..." -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "Спреман" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "Подешавам" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Тражим одредиште телефонског броја..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "Не могу да решим овај број." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "Ступам у везу" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "Не могу да позовем" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Извините, достигли смо највећи број истовремених позива" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "вам се обраћа" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr " и затражени само-одговор." -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "Мењам параметре позива..." -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Повезан сам." -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "Позив је прекинут" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "Не могу да зауставим позив" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "Заустављам тренутни позив..." @@ -1843,20 +1822,26 @@ msgid "Vacation" msgstr "На одмору" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "Непозната грешка" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "Адреса сип посредника коју сте унели је неисправна, мора почети на „sip:“ за којим следи назив домаћина." +msgstr "" +"Адреса сип посредника коју сте унели је неисправна, мора почети на „sip:“ за " +"којим следи назив домаћина." #: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "Сип идентитет који сте унели није исправан.\nТреба да изгледа као „sip:корисник@домен-посредника, као што је „sip:alice@example.net“" +msgstr "" +"Сип идентитет који сте унели није исправан.\n" +"Треба да изгледа као „sip:корисник@домен-посредника, као што је „sip:" +"alice@example.net“" #: ../coreapi/proxy.c:1377 #, c-format @@ -1984,3 +1969,67 @@ msgid_plural "You have missed %i calls." msgstr[0] "Пропустили сте %i позив." msgstr[1] "Пропустили сте %i позива." msgstr[2] "Пропустили сте %i позива." + +#~ msgid "https://" +#~ msgstr "https://" + +#~ msgid "label" +#~ msgstr "натпис" + +#~ msgid "D" +#~ msgstr "Г" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "Б" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "А" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "" +#~ "%s\t\n" +#~ "%s" +#~ msgstr "" +#~ "%s\t\n" +#~ "%s" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i::%02i::%02i" + +#~ msgid "." +#~ msgstr "." diff --git a/po/sv.po b/po/sv.po index befddf083..1a4a4efee 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:15+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/linphone-gtk/language/sv/)\n" +"Language-Team: Swedish (http://www.transifex.com/projects/p/linphone-gtk/" +"language/sv/)\n" +"Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -62,11 +63,6 @@ msgid_plural "%i seconds" msgstr[0] "" msgstr[1] "" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" @@ -74,11 +70,9 @@ msgid "" "%s\t%s\t" msgstr "" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -94,7 +88,7 @@ msgstr "" msgid "Couldn't find pixmap file: %s" msgstr "Kunde inte hitta pixmap filen: %s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "ogiltig SIP kontakt!" @@ -124,9 +118,11 @@ msgstr "Om på, besvara automatisk alla inkommande samtal" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "Välj en arbetskatalog som ska vara basen för installationen, såsom C:\\Program\\Linphone" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" +"Välj en arbetskatalog som ska vara basen för installationen, såsom C:" +"\\Program\\Linphone" #: ../gtk/main.c:156 msgid "Configuration file" @@ -140,9 +136,14 @@ msgstr "" #, 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 skulle vilja lägga till dig till hans/hennes kontaktlista.\nVill du tillåta honom/henne att se din närvarostatus eller lägga till honom/henne till din kontaktlista?\nOm du svarar nej, personen kommer att vara bannlyst." +msgstr "" +"%s skulle vilja lägga till dig till hans/hennes kontaktlista.\n" +"Vill du tillåta honom/henne att se din närvarostatus eller lägga till honom/" +"henne till din kontaktlista?\n" +"Om du svarar nej, personen kommer att vara bannlyst." #: ../gtk/main.c:1162 #, c-format @@ -155,7 +156,7 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "Samtalet slut" @@ -380,7 +381,9 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "En nyare version är tillgänglig på %s.\nVill du öppna en browser för att ladda ner den?" +msgstr "" +"En nyare version är tillgänglig på %s.\n" +"Vill du öppna en browser för att ladda ner den?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -414,10 +417,13 @@ msgstr[0] "Hittat kontakt %i" msgstr[1] "Hittat kontakt %i" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "Välkommen!\nAssistenten kommer att hjälpa dig använda ett SIP konto för dina samtal:" +msgstr "" +"Välkommen!\n" +"Assistenten kommer att hjälpa dig använda ett SIP konto för dina samtal:" #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -503,43 +509,44 @@ msgstr "Tack. Ditt konto är nu konfigurerad och färdig att användas." #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." msgstr "" -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "Välkommen till kontoinstallationsassistenten" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "Kontoinstallationsassistenten" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "" @@ -691,11 +698,6 @@ msgstr "" msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i:%02i:%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "Samtalet slut." @@ -763,10 +765,13 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" +"Välkommen!\n" +"Assistenten kommer att hjälpa dig använda ett SIP konto för dina samtal:" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -973,7 +978,8 @@ msgid "Login information" msgstr "Login information" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "Välkommen!" #: ../gtk/main.ui.h:47 @@ -981,11 +987,12 @@ msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "Apropå linphone" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +msgid "(C) Belledonne Communications, 2010\n" msgstr "" #: ../gtk/about.ui.h:4 @@ -1148,7 +1155,7 @@ msgstr "" msgid "Video codecs" msgstr "" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "" @@ -1310,7 +1317,8 @@ msgstr "Multimedia inställningar" #: ../gtk/parameters.ui.h:50 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" +msgstr "" +"Denna sektion specificerar din SIP adress när du inte använder ett SIP konto" #: ../gtk/parameters.ui.h:51 msgid "Your display name (eg: John Doe):" @@ -1427,18 +1435,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "etikett" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "Klar" @@ -1550,66 +1554,6 @@ msgstr "" msgid "Configure http proxy (optional)" msgstr "" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1705,12 +1649,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1721,64 +1664,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "Redo" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "Leta efter telefonnummer för destinationen..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "Kan inte nå dett nummer." #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "Kontaktar" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "" - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "Kopplad" -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "" @@ -1839,20 +1778,25 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "Okänd bug" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "SIP proxy adressen som du matade in är inte rätt, adressen måste starta med \"sip:\", följd av ett hostnamn" +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:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -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" +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:1377 #, c-format @@ -1979,3 +1923,9 @@ 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 "label" +#~ msgstr "etikett" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i:%02i:%02i" diff --git a/po/zh_CN.po b/po/zh_CN.po index 34f97d9fe..50b6812f8 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:15+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/linphone-gtk/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/linphone-" +"gtk/language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -60,11 +61,6 @@ msgid "%i second" msgid_plural "%i seconds" msgstr[0] "" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" @@ -72,11 +68,9 @@ msgid "" "%s\t%s\t" msgstr "" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -92,7 +86,7 @@ msgstr "" msgid "Couldn't find pixmap file: %s" msgstr "无法打开位图文件:%s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "无效的 SIP 联系人!" @@ -122,8 +116,8 @@ msgstr "是否设置呼叫自动应答" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" msgstr "指定工作目录(应为安装目录例如 C:\\Program Files\\Linphone)" #: ../gtk/main.c:156 @@ -138,9 +132,13 @@ msgstr "" #, 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如果您回答否,则会将该人临时性的放入黑名单" +msgstr "" +"%s 想加您为联系人。\n" +"您是否允许他看到您的在线状态或者将它加为您的联系人允许?\n" +"如果您回答否,则会将该人临时性的放入黑名单" #: ../gtk/main.c:1162 #, c-format @@ -153,7 +151,7 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "呼叫结束" @@ -205,7 +203,9 @@ msgstr "" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "未在此计算机上检测到声卡。\n您无法发送或接收音频呼叫。" +msgstr "" +"未在此计算机上检测到声卡。\n" +"您无法发送或接收音频呼叫。" #: ../gtk/main.c:2157 msgid "A free SIP video-phone" @@ -378,7 +378,9 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "%s 有新版本。\n您是否要打开浏览器下载它?" +msgstr "" +"%s 有新版本。\n" +"您是否要打开浏览器下载它?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -411,10 +413,13 @@ msgid_plural "Found %i contacts" msgstr[0] "找到 %i 联系方式" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "欢迎使用 Linphone!\n设置向导将帮助您配置打网络电话的 SIP 帐户。" +msgstr "" +"欢迎使用 Linphone!\n" +"设置向导将帮助您配置打网络电话的 SIP 帐户。" #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -500,43 +505,44 @@ msgstr "谢谢,您的帐户已经配置完毕,可以使用。" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." msgstr "" -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "欢迎使用帐户设置向导" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "帐户设置向导" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "" @@ -688,11 +694,6 @@ msgstr "" msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i::%02i::%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "通话结束。" @@ -760,10 +761,13 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" +"欢迎使用 Linphone!\n" +"设置向导将帮助您配置打网络电话的 SIP 帐户。" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -970,7 +974,8 @@ msgid "Login information" msgstr "登录信息" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "欢迎!" #: ../gtk/main.ui.h:47 @@ -978,11 +983,12 @@ msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "关于 Linphone" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +msgid "(C) Belledonne Communications, 2010\n" msgstr "" #: ../gtk/about.ui.h:4 @@ -1145,7 +1151,7 @@ msgstr "" msgid "Video codecs" msgstr "" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "C" @@ -1424,18 +1430,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "标签" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "完成" @@ -1547,66 +1549,6 @@ msgstr "" msgid "Configure http proxy (optional)" msgstr "" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1702,12 +1644,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1718,64 +1659,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "就绪" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "查询电话号码目的地..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "该号码无法解析。" #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "联系中" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "正在联系您" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr " 并询问了自动回答。" -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "已连接。" -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "" @@ -1836,7 +1773,8 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "未知错误" #: ../coreapi/proxy.c:319 @@ -1849,7 +1787,9 @@ msgstr "您输入的 SIP 代理地址无效,它必须是以“sip:”开头, msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "您输入的地址无效。\n它应具有“sip:用户名@代理域”的形式,例如 sip:alice@example.net" +msgstr "" +"您输入的地址无效。\n" +"它应具有“sip:用户名@代理域”的形式,例如 sip:alice@example.net" #: ../coreapi/proxy.c:1377 #, c-format @@ -1975,3 +1915,57 @@ msgstr "" msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "您错过了 %i 个呼叫。" + +#~ msgid "label" +#~ msgstr "标签" + +#~ msgid "D" +#~ msgstr "D" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "B" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "A" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i::%02i::%02i" + +#~ msgid "." +#~ msgstr "." diff --git a/po/zh_TW.po b/po/zh_TW.po index 673029508..4efff36e4 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-19 10:39+0100\n" +"POT-Creation-Date: 2014-11-28 10:55+0100\n" "PO-Revision-Date: 2014-11-19 10:15+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/linphone-gtk/language/zh_TW/)\n" +"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/" +"linphone-gtk/language/zh_TW/)\n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 @@ -60,11 +61,6 @@ msgid "%i second" msgid_plural "%i seconds" msgstr[0] "" -#: ../gtk/calllogs.c:335 ../gtk/calllogs.c:341 -#, c-format -msgid "%s\t%s" -msgstr "" - #: ../gtk/calllogs.c:337 #, c-format msgid "" @@ -72,11 +68,9 @@ msgid "" "%s\t%s\t" msgstr "" -#: ../gtk/calllogs.c:343 +#: ../gtk/calllogs.c:341 #, c-format -msgid "" -"%s\t\n" -"%s" +msgid "%s\t%s" msgstr "" #: ../gtk/conference.c:38 ../gtk/main.ui.h:13 @@ -92,7 +86,7 @@ msgstr "" msgid "Couldn't find pixmap file: %s" msgstr "找不到 pixmap 檔:%s" -#: ../gtk/chat.c:364 ../gtk/friendlist.c:924 +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 msgid "Invalid sip contact !" msgstr "無效的 sip 連絡人!" @@ -122,9 +116,10 @@ msgstr "如啟用此項,將會自動接聽來電" #: ../gtk/main.c:149 msgid "" -"Specifiy a working directory (should be the base of the installation, eg: " -"c:\\Program Files\\Linphone)" -msgstr "指定一個工作目錄(應該為安裝的根目錄,例如:c:\\Program Files\\Linphone)" +"Specifiy a working directory (should be the base of the installation, eg: c:" +"\\Program Files\\Linphone)" +msgstr "" +"指定一個工作目錄(應該為安裝的根目錄,例如:c:\\Program Files\\Linphone)" #: ../gtk/main.c:156 msgid "Configuration file" @@ -138,9 +133,13 @@ msgstr "" #, 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如果您回答否,這個人會被暫時列入黑名單。" +msgstr "" +"%s 想要加您加入他的連絡人清單。\n" +"您是否要允許他看見您的上線狀態或將他加入您的連絡人清單?\n" +"如果您回答否,這個人會被暫時列入黑名單。" #: ../gtk/main.c:1162 #, c-format @@ -153,7 +152,7 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3744 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 msgid "Call ended" msgstr "通話已結束" @@ -205,7 +204,9 @@ msgstr "我們被轉接到 %s" msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." -msgstr "在這臺電腦中偵測不到音效卡。\n您將無法傳送或接收語音電話。" +msgstr "" +"在這臺電腦中偵測不到音效卡。\n" +"您將無法傳送或接收語音電話。" #: ../gtk/main.c:2157 msgid "A free SIP video-phone" @@ -378,7 +379,9 @@ msgstr "" msgid "" "A more recent version is availalble from %s.\n" "Would you like to open a browser to download it ?" -msgstr "在 %s 有最新的版本。\n您想要開啟瀏覽器下載它嗎?" +msgstr "" +"在 %s 有最新的版本。\n" +"您想要開啟瀏覽器下載它嗎?" #: ../gtk/update.c:91 msgid "You are running the lastest version." @@ -411,10 +414,13 @@ msgid_plural "Found %i contacts" msgstr[0] "找不到 %i 個連絡人" #: ../gtk/setupwizard.c:34 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to use a SIP account for your calls." -msgstr "歡迎!\n這個助理會協助您使用電話的 SIP 帳號。" +msgstr "" +"歡迎!\n" +"這個助理會協助您使用電話的 SIP 帳號。" #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -500,43 +506,44 @@ msgstr "謝謝您。您的帳號已設定完成並且可以使用。" #: ../gtk/setupwizard.c:413 msgid "" -"Please validate your account by clicking on the link we just sent you by email.\n" +"Please validate your account by clicking on the link we just sent you by " +"email.\n" "Then come back here and press Next button." msgstr "" -#: ../gtk/setupwizard.c:600 +#: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" msgstr "" -#: ../gtk/setupwizard.c:618 +#: ../gtk/setupwizard.c:620 msgid "Welcome to the account setup assistant" msgstr "歡迎使用帳號設定助理" -#: ../gtk/setupwizard.c:623 +#: ../gtk/setupwizard.c:625 msgid "Account setup assistant" msgstr "帳號設定助理" -#: ../gtk/setupwizard.c:629 +#: ../gtk/setupwizard.c:631 msgid "Configure your account (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:634 +#: ../gtk/setupwizard.c:636 msgid "Enter your sip username (step 1/1)" msgstr "" -#: ../gtk/setupwizard.c:638 +#: ../gtk/setupwizard.c:640 msgid "Enter account information (step 1/2)" msgstr "" -#: ../gtk/setupwizard.c:647 +#: ../gtk/setupwizard.c:649 msgid "Validation (step 2/2)" msgstr "" -#: ../gtk/setupwizard.c:652 +#: ../gtk/setupwizard.c:654 msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:656 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" msgstr "" @@ -688,11 +695,6 @@ msgstr "通話中" msgid "Paused call" msgstr "暫停通話" -#: ../gtk/incall_view.c:771 -#, c-format -msgid "%02i::%02i::%02i" -msgstr "%02i::%02i::%02i" - #: ../gtk/incall_view.c:794 msgid "Call ended." msgstr "通話結束。" @@ -760,10 +762,13 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 +#, fuzzy msgid "" -"Welcome !\n" +"Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" +"歡迎!\n" +"這個助理會協助您使用電話的 SIP 帳號。" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -970,7 +975,8 @@ msgid "Login information" msgstr "登入資訊" #: ../gtk/main.ui.h:46 -msgid "Welcome !" +#, fuzzy +msgid "Welcome!" msgstr "歡迎使用!" #: ../gtk/main.ui.h:47 @@ -978,11 +984,13 @@ msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -msgid "About linphone" +#, fuzzy +msgid "About Linphone" msgstr "關於 linphone" #: ../gtk/about.ui.h:2 -msgid "(C) Belledonne Communications,2010\n" +#, fuzzy +msgid "(C) Belledonne Communications, 2010\n" msgstr "(C) Belledonne Communications,2010\n" #: ../gtk/about.ui.h:4 @@ -1145,7 +1153,7 @@ msgstr "音訊編碼解碼器" msgid "Video codecs" msgstr "視訊編碼解碼器" -#: ../gtk/parameters.ui.h:10 ../gtk/keypad.ui.h:5 +#: ../gtk/parameters.ui.h:10 msgid "C" msgstr "C" @@ -1424,18 +1432,14 @@ msgid "Authentication method:" msgstr "" #: ../gtk/parameters.ui.h:80 -msgid "label" -msgstr "標籤" - -#: ../gtk/parameters.ui.h:81 msgid "LDAP Account setup" msgstr "" -#: ../gtk/parameters.ui.h:82 +#: ../gtk/parameters.ui.h:81 msgid "LDAP" msgstr "" -#: ../gtk/parameters.ui.h:83 +#: ../gtk/parameters.ui.h:82 msgid "Done" msgstr "完成" @@ -1547,66 +1551,6 @@ msgstr "" msgid "Configure http proxy (optional)" msgstr "" -#: ../gtk/keypad.ui.h:1 -msgid "D" -msgstr "D" - -#: ../gtk/keypad.ui.h:2 -msgid "#" -msgstr "#" - -#: ../gtk/keypad.ui.h:3 -msgid "0" -msgstr "0" - -#: ../gtk/keypad.ui.h:4 -msgid "*" -msgstr "*" - -#: ../gtk/keypad.ui.h:6 -msgid "9" -msgstr "9" - -#: ../gtk/keypad.ui.h:7 -msgid "8" -msgstr "8" - -#: ../gtk/keypad.ui.h:8 -msgid "7" -msgstr "7" - -#: ../gtk/keypad.ui.h:9 -msgid "B" -msgstr "B" - -#: ../gtk/keypad.ui.h:10 -msgid "6" -msgstr "6" - -#: ../gtk/keypad.ui.h:11 -msgid "5" -msgstr "5" - -#: ../gtk/keypad.ui.h:12 -msgid "4" -msgstr "4" - -#: ../gtk/keypad.ui.h:13 -msgid "A" -msgstr "A" - -#: ../gtk/keypad.ui.h:14 -msgid "3" -msgstr "3" - -#: ../gtk/keypad.ui.h:15 -msgid "2" -msgstr "2" - -#: ../gtk/keypad.ui.h:16 -msgid "1" -msgstr "1" - #: ../gtk/ldap.ui.h:1 msgid "LDAP Settings" msgstr "" @@ -1702,12 +1646,11 @@ msgstr "" #: ../gtk/config-uri.ui.h:2 msgid "" -"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" -"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " -msgstr "" - -#: ../gtk/config-uri.ui.h:4 -msgid "https://" +"This dialog allows to set an http or https address when configuration is to " +"be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, " +"Linphone will restart automatically in order to fetch and take into account " +"the new configuration. " msgstr "" #: ../gtk/provisioning-fetch.ui.h:1 @@ -1718,64 +1661,60 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1511 +#: ../coreapi/linphonecore.c:1510 msgid "Ready" msgstr "準備就緒" -#: ../coreapi/linphonecore.c:2470 +#: ../coreapi/linphonecore.c:2473 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2635 +#: ../coreapi/linphonecore.c:2638 msgid "Looking for telephone number destination..." msgstr "尋找電話號碼目的端..." -#: ../coreapi/linphonecore.c:2637 +#: ../coreapi/linphonecore.c:2640 msgid "Could not resolve this number." msgstr "無法解析這個號碼。" #. must be known at that time -#: ../coreapi/linphonecore.c:2919 +#: ../coreapi/linphonecore.c:2922 msgid "Contacting" msgstr "正在連絡" -#: ../coreapi/linphonecore.c:2924 +#: ../coreapi/linphonecore.c:2927 msgid "Could not call" msgstr "無法通話" -#: ../coreapi/linphonecore.c:3074 +#: ../coreapi/linphonecore.c:3077 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "抱歉,我們已達瀏同步通話的最大數目" -#: ../coreapi/linphonecore.c:3233 +#: ../coreapi/linphonecore.c:3236 msgid "is contacting you" msgstr "正在連絡您" -#: ../coreapi/linphonecore.c:3234 +#: ../coreapi/linphonecore.c:3237 msgid " and asked autoanswer." msgstr "並要求自動接聽。" -#: ../coreapi/linphonecore.c:3234 -msgid "." -msgstr "." - -#: ../coreapi/linphonecore.c:3352 +#: ../coreapi/linphonecore.c:3355 msgid "Modifying call parameters..." msgstr "修改通話參數..." -#: ../coreapi/linphonecore.c:3700 +#: ../coreapi/linphonecore.c:3703 msgid "Connected." msgstr "已連線。" -#: ../coreapi/linphonecore.c:3725 +#: ../coreapi/linphonecore.c:3728 msgid "Call aborted" msgstr "通話已放棄" -#: ../coreapi/linphonecore.c:3915 +#: ../coreapi/linphonecore.c:3918 msgid "Could not pause the call" msgstr "無法暫停通話" -#: ../coreapi/linphonecore.c:3919 +#: ../coreapi/linphonecore.c:3922 msgid "Pausing the current call..." msgstr "暫停目前的通話..." @@ -1836,20 +1775,24 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -msgid "Unknown-bug" +#, fuzzy +msgid "Unknown status" msgstr "不明錯誤" #: ../coreapi/proxy.c:319 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." -msgstr "您輸入的 sip 代理位址是無效的,它必須要以「sip:」開頭,後面接主機名稱。" +msgstr "" +"您輸入的 sip 代理位址是無效的,它必須要以「sip:」開頭,後面接主機名稱。" #: ../coreapi/proxy.c:325 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" -msgstr "您輸入的 sip 身分是無效的。\n它應該看起來像 sip:使用者名稱@代理網域,像是 sip:alice@example.net" +msgstr "" +"您輸入的 sip 身分是無效的。\n" +"它應該看起來像 sip:使用者名稱@代理網域,像是 sip:alice@example.net" #: ../coreapi/proxy.c:1377 #, c-format @@ -1975,3 +1918,57 @@ msgstr "" msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "您有 %i 通未接來電。" + +#~ msgid "label" +#~ msgstr "標籤" + +#~ msgid "D" +#~ msgstr "D" + +#~ msgid "#" +#~ msgstr "#" + +#~ msgid "0" +#~ msgstr "0" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "9" +#~ msgstr "9" + +#~ msgid "8" +#~ msgstr "8" + +#~ msgid "7" +#~ msgstr "7" + +#~ msgid "B" +#~ msgstr "B" + +#~ msgid "6" +#~ msgstr "6" + +#~ msgid "5" +#~ msgstr "5" + +#~ msgid "4" +#~ msgstr "4" + +#~ msgid "A" +#~ msgstr "A" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "%02i::%02i::%02i" +#~ msgstr "%02i::%02i::%02i" + +#~ msgid "." +#~ msgstr "." From f03bb1849b96f41e8ec4a9a6c4570436bb833f26 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 28 Nov 2014 11:13:48 +0100 Subject: [PATCH 235/249] Handle download of rootca.pem when building with CMake. --- coreapi/gitversion.cmake | 2 +- share/CMakeLists.txt | 20 ++++++++++++++++++-- share/rootca.cmake | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 share/rootca.cmake diff --git a/coreapi/gitversion.cmake b/coreapi/gitversion.cmake index 5c6facdab..23fecb10c 100644 --- a/coreapi/gitversion.cmake +++ b/coreapi/gitversion.cmake @@ -1,5 +1,5 @@ ############################################################################ -# CMakeLists.txt +# gitversion.cmake # Copyright (C) 2014 Belledonne Communications, Grenoble France # ############################################################################ diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt index 0ae15ce76..6fcf96392 100644 --- a/share/CMakeLists.txt +++ b/share/CMakeLists.txt @@ -20,8 +20,24 @@ # ############################################################################ -install(FILES archived-rootca.pem - RENAME rootca.pem +if(APPLE) + find_program(OPENSSL_PROGRAM openssl) + find_program(SED_PROGRAM sed) + execute_process( + COMMAND ${OPENSSL_PROGRAM} version -d + OUTPUT_VARIABLE OPENSSL_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + execute_process( + COMMAND ${SED_PROGRAM} "s/OPENSSLDIR: \"\(.*\)\"/\1/" "${OPENSSL_VERSION}" + OUTPUT_VARIABLE HTTPS_CA_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +endif() + +execute_process(COMMAND ${CMAKE_COMMAND} -DHTTPS_CA_DIR=${HTTPS_CA_DIR} -DWORK_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DOUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/rootca.cmake) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/rootca.pem DESTINATION ${PACKAGE_DATA_DIR}/linphone PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) diff --git a/share/rootca.cmake b/share/rootca.cmake new file mode 100644 index 000000000..d988b778e --- /dev/null +++ b/share/rootca.cmake @@ -0,0 +1,40 @@ +############################################################################ +# rootca.cmake +# Copyright (C) 2014 Belledonne Communications, Grenoble France +# +############################################################################ +# +# 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. +# +############################################################################ + +if(HTTPS_CA_DIR) + set(ENV{HTTPS_CA_DIR} "${HTTPS_CA_DIR}") +endif() + +execute_process( + COMMAND ${CMAKE_COMMAND} -E remove "fresh-rootca.pem" + WORKING_DIRECTORY ${OUTPUT_DIR} +) +execute_process( + COMMAND "../scripts/mk-ca-bundle.pl" "${OUTPUT_DIR}/fresh-rootca.pem" + WORKING_DIRECTORY ${WORK_DIR} +) +if(EXISTS "${OUTPUT_DIR}/fresh-rootca.pem") + file(RENAME "${OUTPUT_DIR}/fresh-rootca.pem" "${OUTPUT_DIR}/rootca.pem") +else() + file(COPY "${WORK_DIR}/archived-rootca.pem" DESTINATION "${OUTPUT_DIR}") + file(RENAME "${OUTPUT_DIR}/archived-rootca.pem" "${OUTPUT_DIR}/rootca.pem") +endif() From d4d078189749d2820ee4c7b9a18e5d7890b549bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 28 Nov 2014 11:04:51 +0100 Subject: [PATCH 236/249] Fix "Call/Call with mkv file player" tester when opus is not supported by mediastreamer2 --- tester/call_tester.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index ad5ee315d..6b21e2bd6 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2104,7 +2104,12 @@ static void call_with_mkv_file_player(void) { player=linphone_call_get_player(linphone_core_get_current_call(marie->lc)); CU_ASSERT_PTR_NOT_NULL(player); if (player){ - CU_ASSERT_TRUE(linphone_player_open(player,hellomkv,on_eof,marie)==0); + int res = linphone_player_open(player,hellomkv,on_eof,marie); + if(!ms_filter_codec_supported("opus")) { + CU_ASSERT_EQUAL(res, -1); + goto end; + } + CU_ASSERT_EQUAL(res, 0); CU_ASSERT_TRUE(linphone_player_start(player)==0); CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&marie->stat.number_of_player_eof,1,12000)); linphone_player_close(player); From 1fb767e2ad060d7c4222b4c8239ffdf3351a0195 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 28 Nov 2014 15:32:33 +0100 Subject: [PATCH 237/249] Fix HTTPS_CA_DIR definition on Mac OS X when building with CMake. --- share/CMakeLists.txt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt index 6fcf96392..58c575c90 100644 --- a/share/CMakeLists.txt +++ b/share/CMakeLists.txt @@ -22,17 +22,12 @@ if(APPLE) find_program(OPENSSL_PROGRAM openssl) - find_program(SED_PROGRAM sed) execute_process( COMMAND ${OPENSSL_PROGRAM} version -d OUTPUT_VARIABLE OPENSSL_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ) - execute_process( - COMMAND ${SED_PROGRAM} "s/OPENSSLDIR: \"\(.*\)\"/\1/" "${OPENSSL_VERSION}" - OUTPUT_VARIABLE HTTPS_CA_DIR - OUTPUT_STRIP_TRAILING_WHITESPACE - ) + string(REGEX REPLACE "OPENSSLDIR: \"(.*)\"" "\\1" HTTPS_CA_DIR "${OPENSSL_VERSION}") endif() execute_process(COMMAND ${CMAKE_COMMAND} -DHTTPS_CA_DIR=${HTTPS_CA_DIR} -DWORK_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DOUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/rootca.cmake) From 23232b101fb876a2ea6a53e5d2e22fa86aefb377 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 28 Nov 2014 16:00:00 +0100 Subject: [PATCH 238/249] Handle libnotify support when building with CMake. --- CMakeLists.txt | 22 ++++++-- .../FindLinphone.cmake | 4 +- cmake/FindNotify.cmake | 56 +++++++++++++++++++ config.h.cmake | 1 + gtk/CMakeLists.txt | 4 ++ 5 files changed, 79 insertions(+), 8 deletions(-) rename FindLinphone.cmake => cmake/FindLinphone.cmake (98%) create mode 100644 cmake/FindNotify.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d91afd8e..babea3ee9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,9 +41,9 @@ option(ENABLE_DATE "Use build date in internal version number." NO) option(ENABLE_GTK_UI "Turn on or off compilation of gtk interface." YES) option(ENABLE_LDAP "Enable LDAP support." NO) option(ENABLE_MSG_STORAGE "Turn on compilation of message storage." YES) -option(ENABLE_NOTIFY "Enable libnotify support." YES) +cmake_dependent_option(ENABLE_NOTIFY "Enable libnotify support." YES "ENABLE_GTK_UI" NO) option(ENABLE_RELATIVE_PREFIX "Find resources relatively to the installation directory." NO) -option(ENABLE_TOOLS "Turn on or off compilation of console interface" YES) +option(ENABLE_TOOLS "Turn on or off compilation of tools." YES) option(ENABLE_TUNNEL "Turn on compilation of tunnel support." NO) option(ENABLE_TUTORIALS "Enable compilation of tutorials." YES) option(ENABLE_UNIT_TESTS "Enable compilation of unit tests." YES) @@ -52,13 +52,14 @@ option(ENABLE_VIDEO "Build with video support." YES) cmake_dependent_option(ENABLE_ASSISTANT "Turn on assistant compiling." YES "ENABLE_GTK_UI" NO) -list(APPEND CMAKE_MODULE_PATH ${CMAKE_PREFIX_PATH}/share/cmake/Modules) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_PREFIX_PATH}/share/cmake/Modules") include(CheckIncludeFile) include(CheckSymbolExists) if(MSVC) - list(APPEND CMAKE_REQUIRED_INCLUDES ${CMAKE_PREFIX_PATH}/include/MSVC) + list(APPEND CMAKE_REQUIRED_INCLUDES "${CMAKE_PREFIX_PATH}/include/MSVC") endif() find_package(BelleSIP REQUIRED) @@ -82,7 +83,16 @@ if(ENABLE_TUNNEL) find_package(Tunnel) if(NOT TUNNEL_FOUND) message(WARNING "Could not find the tunnel library!") - set(ENABLE_TUNNEL OFF CACHE BOOL "Enable tunnel support" FORCE) + set(ENABLE_TUNNEL OFF CACHE BOOL "Enable tunnel support." FORCE) + endif() +endif() +if(ENABLE_NOTIFY) + find_package(Notify) + if(NOTIFY_FOUND) + set(HAVE_NOTIFY4 1) + else() + message(WARNING "Could not find the notify library!") + set(ENABLE_NOTIFY OFF CACHE BOOL "Enable libnotify support." FORCE) endif() endif() @@ -157,7 +167,7 @@ if(ENABLE_UNIT_TESTS) endif() -install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/FindLinphone.cmake +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindLinphone.cmake DESTINATION share/cmake/Modules PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) diff --git a/FindLinphone.cmake b/cmake/FindLinphone.cmake similarity index 98% rename from FindLinphone.cmake rename to cmake/FindLinphone.cmake index 6c6871330..065e1c865 100644 --- a/FindLinphone.cmake +++ b/cmake/FindLinphone.cmake @@ -1,5 +1,5 @@ ############################################################################ -# FindLinphone.txt +# FindLinphone.cmake # Copyright (C) 2014 Belledonne Communications, Grenoble France # ############################################################################ @@ -33,7 +33,7 @@ find_package(MS2 REQUIRED) find_package(XML2 REQUIRED) find_package(BelleSIP REQUIRED) -set(_LINPHONEROOT_PATHS +set(_LINPHONE_ROOT_PATHS ${WITH_LINPHONE} ${CMAKE_INSTALL_PREFIX} ) diff --git a/cmake/FindNotify.cmake b/cmake/FindNotify.cmake new file mode 100644 index 000000000..26bd5bac1 --- /dev/null +++ b/cmake/FindNotify.cmake @@ -0,0 +1,56 @@ +############################################################################ +# FindNotify.cmake +# Copyright (C) 2014 Belledonne Communications, Grenoble France +# +############################################################################ +# +# 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. +# +############################################################################ +# +# - Find the notify include file and library +# +# NOTIFY_FOUND - system has linphone +# NOTIFY_INCLUDE_DIRS - the linphone include directory +# NOTIFY_LIBRARIES - The libraries needed to use linphone + +set(_NOTIFY_ROOT_PATHS + ${WITH_NOTIFY} + ${CMAKE_INSTALL_PREFIX} +) + +find_path(NOTIFY_INCLUDE_DIRS + NAMES libnotify/notify.h + HINTS _NOTIFY_ROOT_PATHS + PATH_SUFFIXES include +) + +if(NOTIFY_INCLUDE_DIRS) + set(HAVE_LIBNOTIFY_NOTIFY_H 1) +endif() + +find_library(NOTIFY_LIBRARIES + NAMES notify + HINTS ${_NOTIFY_ROOT_PATHS} + PATH_SUFFIXES bin lib +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Notify + DEFAULT_MSG + NOTIFY_INCLUDE_DIRS NOTIFY_LIBRARIES HAVE_LIBNOTIFY_NOTIFY_H +) + +mark_as_advanced(NOTIFY_INCLUDE_DIRS NOTIFY_LIBRARIES HAVE_LIBNOTIFY_NOTIFY_H) diff --git a/config.h.cmake b/config.h.cmake index a7020d97a..9690bff27 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -36,5 +36,6 @@ #define PACKAGE_DATA_DIR "${PACKAGE_DATA_DIR}" #define PACKAGE_SOUND_DIR "${PACKAGE_SOUND_DIR}" +#cmakedefine HAVE_NOTIFY4 #cmakedefine HAVE_CU_GET_SUITE 1 #cmakedefine HAVE_CU_CURSES 1 \ No newline at end of file diff --git a/gtk/CMakeLists.txt b/gtk/CMakeLists.txt index 6bc50e5e9..e5d66561b 100644 --- a/gtk/CMakeLists.txt +++ b/gtk/CMakeLists.txt @@ -69,6 +69,10 @@ add_executable(linphone-gtk ${SOURCE_FILES}) set_target_properties(linphone-gtk PROPERTIES OUTPUT_NAME linphone) target_include_directories(linphone-gtk PUBLIC ${GTK2_INCLUDE_DIRS}) target_link_libraries(linphone-gtk linphone ${GTK2_LIBRARIES}) +if(ENABLE_NOTIFY) + target_include_directories(linphone-gtk PUBLIC ${NOTIFY_INCLUDE_DIRS}) + target_link_libraries(linphone-gtk ${NOTIFY_LIBRARIES}) +endif() install(TARGETS linphone-gtk RUNTIME DESTINATION bin From ea4c24e84e2e953d92400dbad7f2842d3c5f9040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 28 Nov 2014 16:32:20 +0100 Subject: [PATCH 239/249] Fix "Player/Local MKV file" liblinphone's tester --- tester/player_tester.c | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/tester/player_tester.c b/tester/player_tester.c index 2894b92e7..8f0c5af43 100644 --- a/tester/player_tester.c +++ b/tester/player_tester.c @@ -17,24 +17,7 @@ */ #include "liblinphone_tester.h" - -static const char *_get_default_video_renderer(void){ -#ifdef WIN32 - return "MSDrawDibDisplay"; -#elif defined(ANDROID) - return "MSAndroidDisplay"; -#elif __APPLE__ && !defined(__ios) - return "MSOSXGLDisplay"; -#elif defined (HAVE_XV) - return "MSX11Video"; -#elif defined(HAVE_GL) - return "MSGLXVideo"; -#elif defined(__ios) - return "IOSDisplay"; -#else - return "MSVideoOut"; -#endif -} +#include static bool_t wait_for_eof(bool_t *eof, int *time,int time_refresh, int timeout) { while(*time < timeout && !*eof) { @@ -49,7 +32,7 @@ static void eof_callback(LinphonePlayer *player, void *user_data) { *eof = TRUE; } -static void play_file(const char *filename, bool_t unsupported_format) { +static void play_file(const char *filename, bool_t unsupported_format, const char *audio_mime, const char *video_mime) { LinphoneCoreManager *lc_manager; LinphonePlayer *player; int res, time = 0; @@ -59,12 +42,15 @@ static void play_file(const char *filename, bool_t unsupported_format) { CU_ASSERT_PTR_NOT_NULL(lc_manager); if(lc_manager == NULL) return; - player = linphone_core_create_local_player(lc_manager->lc, ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()), _get_default_video_renderer(), 0); + player = linphone_core_create_local_player(lc_manager->lc, ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()), video_stream_get_default_video_renderer(), 0); CU_ASSERT_PTR_NOT_NULL(player); if(player == NULL) goto fail; res = linphone_player_open(player, filename, eof_callback, &eof); - if(unsupported_format) { + if(unsupported_format + || (audio_mime == NULL && video_mime == NULL) + || (video_mime == NULL && audio_mime && !ms_filter_codec_supported(audio_mime)) + || (audio_mime == NULL && video_mime && !ms_filter_codec_supported(video_mime))) { CU_ASSERT_EQUAL(res, -1); } else { CU_ASSERT_EQUAL(res, 0); @@ -85,7 +71,9 @@ static void play_file(const char *filename, bool_t unsupported_format) { static void playing_test(void) { char *filename = ms_strdup_printf("%s/sounds/hello_opus_h264.mkv", liblinphone_tester_file_prefix); - play_file(filename, !linphone_local_player_matroska_supported()); + const char *audio_mime = "opus"; + const char *video_mime = "h264"; + play_file(filename, !linphone_local_player_matroska_supported(), audio_mime, video_mime); ms_free(filename); } From 1bb6ebed6cc02fef789f1d1fb091cef50a9858d5 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 28 Nov 2014 17:11:21 +0100 Subject: [PATCH 240/249] fix crash in vp8 depacketizer --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 042feb909..42600e413 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 042feb9096af9fbe1a45e8c76b4121d738329e1e +Subproject commit 42600e413e5007402fe1969f1dcd016cede3a8be From 3f53d5f045d65efcf58182c4979aba68d1711830 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 28 Nov 2014 17:23:39 +0100 Subject: [PATCH 241/249] Reworked jni layer to be able to set multiple vtables for callbacks in android app --- coreapi/linphonecore.c | 22 +- coreapi/linphonecore.h | 25 +- coreapi/linphonecore_jni.cc | 556 ++++++++++++++++++++---------------- coreapi/private.h | 1 + 4 files changed, 358 insertions(+), 246 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 9a7053d07..f89bc5643 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -7025,16 +7025,34 @@ LinphoneCoreVTable *linphone_core_v_table_new() { return ms_new0(LinphoneCoreVTable,1); } +void linphone_core_v_table_set_user_data(LinphoneCoreVTable *table, void *data) { + if (table->user_data) { + ms_free(table->user_data); + } + table->user_data = data; +} + +void* linphone_core_v_table_get_user_data(LinphoneCoreVTable *table) { + return table->user_data; +} + void linphone_core_v_table_destroy(LinphoneCoreVTable* table) { + if (table->user_data) { + ms_free(table->user_data); + } ms_free(table); } + +LinphoneCoreVTable *linphone_core_get_current_vtable(LinphoneCore *lc) { + return lc->current_vtable; +} + #define NOTIFY_IF_EXIST(function_name) \ MSList* iterator; \ ms_message ("Linphone core [%p] notifying [%s]",lc,#function_name);\ for (iterator=lc->vtables; iterator!=NULL; iterator=iterator->next) \ - if (((LinphoneCoreVTable*)(iterator->data))->function_name)\ + if ((lc->current_vtable=((LinphoneCoreVTable*)(iterator->data)))->function_name)\ ((LinphoneCoreVTable*)(iterator->data))->function_name - void linphone_core_notify_global_state_changed(LinphoneCore *lc, LinphoneGlobalState gstate, const char *message) { NOTIFY_IF_EXIST(global_state_changed)(lc,gstate,message); } diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index e3ad83ff7..ac72246ad 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1558,7 +1558,7 @@ typedef enum _LinphoneCoreLogCollectionUploadState { * @param gstate the global state * @param message informational message. */ -typedef void (*LinphoneCoreGlobalStateChangedCb )(LinphoneCore *lc, LinphoneGlobalState gstate, const char *message); +typedef void (*LinphoneCoreGlobalStateChangedCb)(LinphoneCore *lc, LinphoneGlobalState gstate, const char *message); /** * Call state notification callback. * @param lc the LinphoneCore @@ -1809,6 +1809,7 @@ typedef struct _LinphoneCoreVTable{ LinphoneCoreNetworkReachableCb network_reachable; /**< Callback to report IP network status (I.E up/down )*/ LinphoneCoreLogCollectionUploadStateChangedCb log_collection_upload_state_changed; /**< Callback to upload collected logs */ LinphoneCoreLogCollectionUploadProgressIndicationCb log_collection_upload_progress_indication; /**< Callback to indicate log collection upload progress */ + void *user_data; } LinphoneCoreVTable; /** @@ -1817,6 +1818,28 @@ typedef struct _LinphoneCoreVTable{ */ LINPHONE_PUBLIC LinphoneCoreVTable *linphone_core_v_table_new(); +/** + * Sets a user data pointer in the vtable. + * @param table the vtable + * @param data the user data to attach + */ +LINPHONE_PUBLIC void linphone_core_v_table_set_user_data(LinphoneCoreVTable *table, void *data); + +/** + * Gets a user data pointer in the vtable. + * @param table the vtable + * @returns the data attached to the vtable + */ +LINPHONE_PUBLIC void* linphone_core_v_table_get_user_data(LinphoneCoreVTable *table); + +/** + * Gets the current VTable. + * This is meant only to be called from a callback to be able to get the user_data associated with the vtable that called the callback. + * @param lc the linphonecore + * @returns the vtable that called the last callback + */ +LINPHONE_PUBLIC LinphoneCoreVTable *linphone_core_get_current_vtable(LinphoneCore *lc); + /** * Destroy a vtable. * @param vtable to be destroyed diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index be72e283f..128da582d 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -163,70 +163,154 @@ extern "C" void Java_org_linphone_core_LinphoneCoreFactoryImpl_setDebugMode(JNIE } // LinphoneCore +/* + * returns the java LinphoneProxyConfig associated with a C LinphoneProxyConfig. +**/ +jobject getProxy(JNIEnv *env, LinphoneProxyConfig *proxy, jobject core){ + jobject jobj=0; + + if (proxy!=NULL){ + jclass proxyClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneProxyConfigImpl")); + jmethodID proxyCtrId = env->GetMethodID(proxyClass,"", "(Lorg/linphone/core/LinphoneCoreImpl;J)V"); + + void *up=linphone_proxy_config_get_user_data(proxy); + + if (up==NULL){ + jobj=env->NewObject(proxyClass,proxyCtrId,core,(jlong)proxy); + linphone_proxy_config_set_user_data(proxy,(void*)env->NewWeakGlobalRef(jobj)); + linphone_proxy_config_ref(proxy); + }else{ + //promote the weak ref to local ref + jobj=env->NewLocalRef((jobject)up); + if (jobj == NULL){ + //the weak ref was dead + jobj=env->NewObject(proxyClass,proxyCtrId,core,(jlong)proxy); + linphone_proxy_config_set_user_data(proxy,(void*)env->NewWeakGlobalRef(jobj)); + } + } + env->DeleteGlobalRef(proxyClass); + } + return jobj; +} + +jobject getCall(JNIEnv *env, LinphoneCall *call){ + jobject jobj=0; + + if (call!=NULL){ + jclass callClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCallImpl")); + jmethodID callCtrId = env->GetMethodID(callClass,"", "(J)V"); + + void *up=linphone_call_get_user_pointer(call); + + if (up==NULL){ + jobj=env->NewObject(callClass,callCtrId,(jlong)call); + jobj=env->NewGlobalRef(jobj); + linphone_call_set_user_pointer(call,(void*)jobj); + linphone_call_ref(call); + }else{ + jobj=(jobject)up; + } + env->DeleteGlobalRef(callClass); + } + return jobj; +} + +jobject getChatMessage(JNIEnv *env, LinphoneChatMessage *msg){ + jobject jobj = 0; + + if (msg != NULL){ + jclass chatMessageClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneChatMessageImpl")); + jmethodID chatMessageCtrId = env->GetMethodID(chatMessageClass,"", "(J)V"); + + void *up = linphone_chat_message_get_user_data(msg); + + if (up == NULL) { + jobj = env->NewObject(chatMessageClass,chatMessageCtrId,(jlong)linphone_chat_message_ref(msg)); + jobj = env->NewGlobalRef(jobj); + linphone_chat_message_set_user_data(msg,(void*)jobj); + } else { + jobj = (jobject)up; + } + env->DeleteGlobalRef(chatMessageClass); + } + return jobj; +} + +jobject getEvent(JNIEnv *env, LinphoneEvent *lev){ + if (lev==NULL) return NULL; + jobject jev=(jobject)linphone_event_get_user_data(lev); + if (jev==NULL){ + jclass linphoneEventClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneEventImpl")); + jmethodID linphoneEventCtrId = env->GetMethodID(linphoneEventClass,"", "(J)V"); + + jev=env->NewObject(linphoneEventClass,linphoneEventCtrId,(jlong)linphone_event_ref(lev)); + jev=env->NewGlobalRef(jev); + linphone_event_set_user_data(lev,jev); + + env->DeleteGlobalRef(linphoneEventClass); + } + return jev; +} + class LinphoneCoreData { public: - LinphoneCoreData(JNIEnv* env, jobject lc,jobject alistener, jobject auserdata) { - + LinphoneCoreData(JNIEnv *env, jobject lc, LinphoneCoreVTable *vTable, jobject alistener) { core = env->NewGlobalRef(lc); listener = env->NewGlobalRef(alistener); - userdata = auserdata?env->NewGlobalRef(auserdata):0; - memset(&vTable,0,sizeof(vTable)); - vTable.show = showInterfaceCb; - vTable.auth_info_requested = authInfoRequested; - vTable.display_status = displayStatusCb; - vTable.display_message = displayMessageCb; - vTable.display_warning = displayMessageCb; - vTable.global_state_changed = globalStateChange; - vTable.registration_state_changed = registrationStateChange; - vTable.call_state_changed = callStateChange; - vTable.call_encryption_changed = callEncryptionChange; - vTable.text_received = text_received; - vTable.message_received = message_received; - vTable.is_composing_received = is_composing_received; - vTable.dtmf_received = dtmf_received; - vTable.new_subscription_requested = new_subscription_requested; - vTable.notify_presence_received = notify_presence_received; - vTable.call_stats_updated = callStatsUpdated; - vTable.transfer_state_changed = transferStateChanged; - vTable.info_received = infoReceived; - vTable.subscription_state_changed=subscriptionStateChanged; - vTable.notify_received=notifyReceived; - vTable.publish_state_changed=publishStateChanged; - vTable.configuring_status=configuringStatus; - vTable.file_transfer_progress_indication=fileTransferProgressIndication; - vTable.file_transfer_send=fileTransferSend; - vTable.file_transfer_recv=fileTransferRecv; - - listenerClass = (jclass)env->NewGlobalRef(env->GetObjectClass( alistener)); + + memset(vTable, 0, sizeof(LinphoneCoreVTable)); + + listenerClass = (jclass)env->NewGlobalRef(env->GetObjectClass(alistener)); /*displayStatus(LinphoneCore lc,String message);*/ displayStatusId = env->GetMethodID(listenerClass,"displayStatus","(Lorg/linphone/core/LinphoneCore;Ljava/lang/String;)V"); + if (displayStatusId) { + vTable->display_status = displayStatusCb; + } /*void generalState(LinphoneCore lc,int state); */ globalStateId = env->GetMethodID(listenerClass,"globalState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$GlobalState;Ljava/lang/String;)V"); globalStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCore$GlobalState")); globalStateFromIntId = env->GetStaticMethodID(globalStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneCore$GlobalState;"); - + if (globalStateId) { + vTable->global_state_changed = globalStateChange; + } + /*registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, LinphoneCore.RegistrationState cstate, String smessage);*/ registrationStateId = env->GetMethodID(listenerClass,"registrationState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneProxyConfig;Lorg/linphone/core/LinphoneCore$RegistrationState;Ljava/lang/String;)V"); registrationStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCore$RegistrationState")); registrationStateFromIntId = env->GetStaticMethodID(registrationStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneCore$RegistrationState;"); - + if (registrationStateId) { + vTable->registration_state_changed = registrationStateChange; + } + /*callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State cstate,String message);*/ callStateId = env->GetMethodID(listenerClass,"callState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;Lorg/linphone/core/LinphoneCall$State;Ljava/lang/String;)V"); callStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCall$State")); callStateFromIntId = env->GetStaticMethodID(callStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneCall$State;"); - + if (callStateId) { + vTable->call_state_changed = callStateChange; + } + transferStateId = env->GetMethodID(listenerClass,"transferState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;Lorg/linphone/core/LinphoneCall$State;)V"); + if (transferStateId) { + vTable->transfer_state_changed = transferStateChanged; + } /*callStatsUpdated(LinphoneCore lc, LinphoneCall call, LinphoneCallStats stats);*/ callStatsUpdatedId = env->GetMethodID(listenerClass, "callStatsUpdated", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;Lorg/linphone/core/LinphoneCallStats;)V"); + if (callStatsUpdatedId) { + vTable->call_stats_updated = callStatsUpdated; + } chatMessageStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneChatMessage$State")); chatMessageStateFromIntId = env->GetStaticMethodID(chatMessageStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneChatMessage$State;"); /*callEncryption(LinphoneCore lc, LinphoneCall call, boolean encrypted,String auth_token);*/ - callEncryptionChangedId=env->GetMethodID(listenerClass,"callEncryptionChanged","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;ZLjava/lang/String;)V"); + callEncryptionChangedId = env->GetMethodID(listenerClass,"callEncryptionChanged","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;ZLjava/lang/String;)V"); + if (callEncryptionChangedId) { + vTable->call_encryption_changed = callEncryptionChange; + } /*void ecCalibrationStatus(LinphoneCore.EcCalibratorStatus status, int delay_ms, Object data);*/ ecCalibrationStatusId = env->GetMethodID(listenerClass,"ecCalibrationStatus","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$EcCalibratorStatus;ILjava/lang/Object;)V"); @@ -235,28 +319,88 @@ public: /*void newSubscriptionRequest(LinphoneCore lc, LinphoneFriend lf, String url)*/ newSubscriptionRequestId = env->GetMethodID(listenerClass,"newSubscriptionRequest","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneFriend;Ljava/lang/String;)V"); + if (newSubscriptionRequestId) { + vTable->new_subscription_requested = new_subscription_requested; + } authInfoRequestedId = env->GetMethodID(listenerClass,"authInfoRequested","(Lorg/linphone/core/LinphoneCore;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); + if (authInfoRequestedId) { + vTable->auth_info_requested = authInfoRequested; + } /*void notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf);*/ notifyPresenceReceivedId = env->GetMethodID(listenerClass,"notifyPresenceReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneFriend;)V"); + if (notifyPresenceReceivedId) { + vTable->notify_presence_received = notify_presence_received; + } /*void textReceived(LinphoneCore lc, LinphoneChatRoom cr,LinphoneAddress from,String message);*/ textReceivedId = env->GetMethodID(listenerClass,"textReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatRoom;Lorg/linphone/core/LinphoneAddress;Ljava/lang/String;)V"); + if (textReceivedId) { + vTable->text_received = text_received; + } + messageReceivedId = env->GetMethodID(listenerClass,"messageReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatRoom;Lorg/linphone/core/LinphoneChatMessage;)V"); + if (messageReceivedId) { + vTable->message_received = message_received; + } + isComposingReceivedId = env->GetMethodID(listenerClass,"isComposingReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatRoom;)V"); + if (isComposingReceivedId) { + vTable->is_composing_received = is_composing_received; + } + dtmfReceivedId = env->GetMethodID(listenerClass,"dtmfReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;I)V"); - infoReceivedId = env->GetMethodID(listenerClass,"infoReceived", - "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;Lorg/linphone/core/LinphoneInfoMessage;)V"); + if (dtmfReceivedId) { + vTable->dtmf_received = dtmf_received; + } + + infoReceivedId = env->GetMethodID(listenerClass,"infoReceived", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;Lorg/linphone/core/LinphoneInfoMessage;)V"); + if (infoReceivedId) { + vTable->info_received = infoReceived; + } - subscriptionStateId = env->GetMethodID(listenerClass,"subscriptionStateChanged", - "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Lorg/linphone/core/SubscriptionState;)V"); - publishStateId = env->GetMethodID(listenerClass,"publishStateChanged", - "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Lorg/linphone/core/PublishState;)V"); - notifyRecvId = env->GetMethodID(listenerClass,"notifyReceived", - "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Ljava/lang/String;Lorg/linphone/core/LinphoneContent;)V"); + subscriptionStateId = env->GetMethodID(listenerClass,"subscriptionStateChanged", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Lorg/linphone/core/SubscriptionState;)V"); + subscriptionStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/SubscriptionState")); + subscriptionStateFromIntId = env->GetStaticMethodID(subscriptionStateClass,"fromInt","(I)Lorg/linphone/core/SubscriptionState;"); + if (subscriptionStateId) { + vTable->subscription_state_changed = subscriptionStateChanged; + } + + publishStateId = env->GetMethodID(listenerClass,"publishStateChanged", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Lorg/linphone/core/PublishState;)V"); + publishStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/PublishState")); + publishStateFromIntId = env->GetStaticMethodID(publishStateClass,"fromInt","(I)Lorg/linphone/core/PublishState;"); + if (publishStateId) { + vTable->publish_state_changed = publishStateChanged; + } + + notifyRecvId = env->GetMethodID(listenerClass,"notifyReceived", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Ljava/lang/String;Lorg/linphone/core/LinphoneContent;)V"); + if (notifyRecvId) { + vTable->notify_received = notifyReceived; + } + configuringStateId = env->GetMethodID(listenerClass,"configuringStatus","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$RemoteProvisioningState;Ljava/lang/String;)V"); + configuringStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCore$RemoteProvisioningState")); + configuringStateFromIntId = env->GetStaticMethodID(configuringStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneCore$RemoteProvisioningState;"); + if (configuringStateId) { + vTable->configuring_status = configuringStatus; + } + fileTransferProgressIndicationId = env->GetMethodID(listenerClass, "fileTransferProgressIndication", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneContent;I)V"); + if (fileTransferProgressIndicationId) { + vTable->file_transfer_progress_indication = fileTransferProgressIndication; + } + + fileTransferSendId = env->GetMethodID(listenerClass, "fileTransferSend", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneContent;Ljava/nio/ByteBuffer;I)I"); + if (fileTransferSendId) { + vTable->file_transfer_send = fileTransferSend; + } + + fileTransferRecvId = env->GetMethodID(listenerClass, "fileTransferRecv", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneContent;[BI)V"); + if (fileTransferRecvId) { + vTable->file_transfer_recv = fileTransferRecv; + } + proxyClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneProxyConfigImpl")); proxyCtrId = env->GetMethodID(proxyClass,"", "(Lorg/linphone/core/LinphoneCoreImpl;J)V"); @@ -270,10 +414,10 @@ public: chatRoomCtrId = env->GetMethodID(chatRoomClass,"", "(J)V"); friendClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneFriendImpl"));; - friendCtrId =env->GetMethodID(friendClass,"", "(J)V"); + friendCtrId = env->GetMethodID(friendClass,"", "(J)V"); addressClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneAddressImpl")); - addressCtrId =env->GetMethodID(addressClass,"", "(J)V"); + addressCtrId = env->GetMethodID(addressClass,"", "(J)V"); callStatsClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCallStatsImpl")); callStatsId = env->GetMethodID(callStatsClass, "", "(JJ)V"); @@ -286,22 +430,8 @@ public: linphoneEventClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneEventImpl")); linphoneEventCtrId = env->GetMethodID(linphoneEventClass,"", "(J)V"); - subscriptionStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/SubscriptionState")); - subscriptionStateFromIntId = env->GetStaticMethodID(subscriptionStateClass,"fromInt","(I)Lorg/linphone/core/SubscriptionState;"); - - publishStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/PublishState")); - publishStateFromIntId = env->GetStaticMethodID(publishStateClass,"fromInt","(I)Lorg/linphone/core/PublishState;"); - subscriptionDirClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/SubscriptionDir")); subscriptionDirFromIntId = env->GetStaticMethodID(subscriptionDirClass,"fromInt","(I)Lorg/linphone/core/SubscriptionDir;"); - - configuringStateId = env->GetMethodID(listenerClass,"configuringStatus","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$RemoteProvisioningState;Ljava/lang/String;)V"); - configuringStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCore$RemoteProvisioningState")); - configuringStateFromIntId = env->GetStaticMethodID(configuringStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneCore$RemoteProvisioningState;"); - - fileTransferProgressIndicationId = env->GetMethodID(listenerClass, "fileTransferProgressIndication", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneContent;I)V"); - fileTransferSendId = env->GetMethodID(listenerClass, "fileTransferSend", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneContent;Ljava/nio/ByteBuffer;I)I"); - fileTransferRecvId = env->GetMethodID(listenerClass, "fileTransferRecv", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneContent;[BI)V"); } ~LinphoneCoreData() { @@ -309,7 +439,6 @@ public: jvm->AttachCurrentThread(&env,NULL); env->DeleteGlobalRef(core); env->DeleteGlobalRef(listener); - if (userdata) env->DeleteGlobalRef(userdata); env->DeleteGlobalRef(listenerClass); env->DeleteGlobalRef(globalStateClass); env->DeleteGlobalRef(configuringStateClass); @@ -328,7 +457,6 @@ public: } jobject core; jobject listener; - jobject userdata; jclass listenerClass; jmethodID displayStatusId; @@ -414,13 +542,7 @@ public: jmethodID fileTransferRecvId; LinphoneCoreVTable vTable; - - static void showInterfaceCb(LinphoneCore *lc) { - - } - static void byeReceivedCb(LinphoneCore *lc, const char *from) { - - } + static void displayStatusCb(LinphoneCore *lc, const char *message) { JNIEnv *env = 0; jint result = jvm->AttachCurrentThread(&env,NULL); @@ -428,11 +550,9 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener,lcData->displayStatusId,lcData->core,message ? env->NewStringUTF(message) : NULL); - } - static void displayMessageCb(LinphoneCore *lc, const char *message) { - } static void authInfoRequested(LinphoneCore *lc, const char *realm, const char *username, const char *domain) { JNIEnv *env = 0; @@ -441,7 +561,8 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener, lcData->authInfoRequestedId, lcData->core, @@ -456,38 +577,14 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->globalStateId ,lcData->core ,env->CallStaticObjectMethod(lcData->globalStateClass,lcData->globalStateFromIntId,(jint)gstate), message ? env->NewStringUTF(message) : NULL); } - /* - * returns the java LinphoneProxyConfig associated with a C LinphoneProxyConfig. - **/ - jobject getProxy(JNIEnv *env , LinphoneProxyConfig *proxy, jobject core){ - jobject jobj=0; - - if (proxy!=NULL){ - void *up=linphone_proxy_config_get_user_data(proxy); - - if (up==NULL){ - jobj=env->NewObject(proxyClass,proxyCtrId,core,(jlong)proxy); - linphone_proxy_config_set_user_data(proxy,(void*)env->NewWeakGlobalRef(jobj)); - linphone_proxy_config_ref(proxy); - }else{ - //promote the weak ref to local ref - jobj=env->NewLocalRef((jobject)up); - if (jobj == NULL){ - //the weak ref was dead - jobj=env->NewObject(proxyClass,proxyCtrId,core,(jlong)proxy); - linphone_proxy_config_set_user_data(proxy,(void*)env->NewWeakGlobalRef(jobj)); - } - } - } - return jobj; - } static void registrationStateChange(LinphoneCore *lc, LinphoneProxyConfig* proxy,LinphoneRegistrationState state,const char* message) { JNIEnv *env = 0; jint result = jvm->AttachCurrentThread(&env,NULL); @@ -496,31 +593,15 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->registrationStateId ,lcData->core - ,(jproxy=lcData->getProxy(env,proxy,lcData->core)) + ,(jproxy=getProxy(env,proxy,lcData->core)) ,env->CallStaticObjectMethod(lcData->registrationStateClass,lcData->registrationStateFromIntId,(jint)state), message ? env->NewStringUTF(message) : NULL); } - jobject getCall(JNIEnv *env , LinphoneCall *call){ - jobject jobj=0; - - if (call!=NULL){ - void *up=linphone_call_get_user_pointer(call); - - if (up==NULL){ - jobj=env->NewObject(callClass,callCtrId,(jlong)call); - jobj=env->NewGlobalRef(jobj); - linphone_call_set_user_pointer(call,(void*)jobj); - linphone_call_ref(call); - }else{ - jobj=(jobject)up; - } - } - return jobj; - } static void callStateChange(LinphoneCore *lc, LinphoneCall* call,LinphoneCallState state,const char* message) { JNIEnv *env = 0; @@ -530,11 +611,12 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->callStateId ,lcData->core - ,(jcall=lcData->getCall(env,call)) + ,(jcall=getCall(env,call)) ,env->CallStaticObjectMethod(lcData->callStateClass,lcData->callStateFromIntId,(jint)state), message ? env->NewStringUTF(message) : NULL); if (state==LinphoneCallReleased){ @@ -549,11 +631,12 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->callEncryptionChangedId ,lcData->core - ,lcData->getCall(env,call) + ,getCall(env,call) ,encrypted ,authentication_token ? env->NewStringUTF(authentication_token) : NULL); } @@ -564,7 +647,8 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->notifyPresenceReceivedId ,lcData->core @@ -577,7 +661,8 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->newSubscriptionRequestId ,lcData->core @@ -591,11 +676,12 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->dtmfReceivedId ,lcData->core - ,lcData->getCall(env,call) + ,getCall(env,call) ,dtmf); } static void text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message) { @@ -605,7 +691,8 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->textReceivedId ,lcData->core @@ -613,38 +700,23 @@ public: ,env->NewObject(lcData->addressClass,lcData->addressCtrId,(jlong)from) ,message ? env->NewStringUTF(message) : NULL); } - jobject getChatMessage(JNIEnv *env , LinphoneChatMessage *msg){ - jobject jobj = 0; - - if (msg != NULL){ - void *up = linphone_chat_message_get_user_data(msg); - - if (up == NULL) { - jobj = env->NewObject(chatMessageClass,chatMessageCtrId,(jlong)linphone_chat_message_ref(msg)); - jobj = env->NewGlobalRef(jobj); - linphone_chat_message_set_user_data(msg,(void*)jobj); - } else { - jobj = (jobject)up; - } - } - return jobj; - } static void message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage *msg) { - JNIEnv *env = 0; - jobject jmsg; - jint result = jvm->AttachCurrentThread(&env,NULL); - if (result != 0) { - ms_error("cannot attach VM"); - return; - } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); - /*note: we call linphone_chat_message_ref() because the application does not acquire the object when invoked from a callback*/ - env->CallVoidMethod(lcData->listener - ,lcData->messageReceivedId - ,lcData->core - ,env->NewObject(lcData->chatRoomClass,lcData->chatRoomCtrId,(jlong)room) - ,(jmsg = lcData->getChatMessage(env, msg))); + JNIEnv *env = 0; + jobject jmsg; + jint result = jvm->AttachCurrentThread(&env,NULL); + if (result != 0) { + ms_error("cannot attach VM"); + return; } + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); + /*note: we call linphone_chat_message_ref() because the application does not acquire the object when invoked from a callback*/ + env->CallVoidMethod(lcData->listener + ,lcData->messageReceivedId + ,lcData->core + ,env->NewObject(lcData->chatRoomClass,lcData->chatRoomCtrId,(jlong)room) + ,(jmsg = getChatMessage(env, msg))); + } static void is_composing_received(LinphoneCore *lc, LinphoneChatRoom *room) { JNIEnv *env = 0; jint result = jvm->AttachCurrentThread(&env,NULL); @@ -652,7 +724,8 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->isComposingReceivedId ,lcData->core @@ -665,7 +738,8 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->ecCalibrationStatusId ,lcData->core @@ -687,9 +761,10 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); statsobj = env->NewObject(lcData->callStatsClass, lcData->callStatsId, (jlong)call, (jlong)stats); - callobj = lcData->getCall(env, call); + callobj = getCall(env, call); if (stats->type == LINPHONE_CALL_STATS_AUDIO) env->CallVoidMethod(callobj, lcData->callSetAudioStatsId, statsobj); else @@ -704,11 +779,12 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->transferStateId ,lcData->core - ,(jcall=lcData->getCall(env,call)) + ,(jcall=getCall(env,call)) ,env->CallStaticObjectMethod(lcData->callStateClass,lcData->callStateFromIntId,(jint)remote_call_state) ); } @@ -720,24 +796,15 @@ public: return; } LinphoneInfoMessage *copy_info=linphone_info_message_copy(info); - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener ,lcData->infoReceivedId ,lcData->core - ,lcData->getCall(env,call) + ,getCall(env,call) ,env->NewObject(lcData->infoMessageClass,lcData->infoMessageCtor,(jlong)copy_info) ); } - jobject getEvent(JNIEnv *env, LinphoneEvent *lev){ - if (lev==NULL) return NULL; - jobject jev=(jobject)linphone_event_get_user_data(lev); - if (jev==NULL){ - jev=env->NewObject(linphoneEventClass,linphoneEventCtrId,(jlong)linphone_event_ref(lev)); - jev=env->NewGlobalRef(jev); - linphone_event_set_user_data(lev,jev); - } - return jev; - } static void subscriptionStateChanged(LinphoneCore *lc, LinphoneEvent *ev, LinphoneSubscriptionState state){ JNIEnv *env = 0; jint result = jvm->AttachCurrentThread(&env,NULL); @@ -747,8 +814,9 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); - jevent=lcData->getEvent(env,ev); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); + jevent=getEvent(env,ev); jstate=env->CallStaticObjectMethod(lcData->subscriptionStateClass,lcData->subscriptionStateFromIntId,(jint)state); env->CallVoidMethod(lcData->listener ,lcData->subscriptionStateId @@ -771,8 +839,9 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); - jevent=lcData->getEvent(env,ev); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); + jevent=getEvent(env,ev); jstate=env->CallStaticObjectMethod(lcData->publishStateClass,lcData->publishStateFromIntId,(jint)state); env->CallVoidMethod(lcData->listener ,lcData->publishStateId @@ -789,8 +858,9 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); - jevent=lcData->getEvent(env,ev); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); + jevent=getEvent(env,ev); env->CallVoidMethod(lcData->listener ,lcData->notifyRecvId ,lcData->core @@ -807,7 +877,8 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener, lcData->configuringStateId, lcData->core, env->CallStaticObjectMethod(lcData->configuringStateClass,lcData->configuringStateFromIntId,(jint)status), message ? env->NewStringUTF(message) : NULL); } @@ -820,11 +891,12 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); env->CallVoidMethod(lcData->listener, lcData->fileTransferProgressIndicationId, lcData->core, - (jmsg = lcData->getChatMessage(env, message)), + (jmsg = getChatMessage(env, message)), content ? create_java_linphone_content(env, content) : NULL, progress); } @@ -838,11 +910,12 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); *size = env->CallIntMethod(lcData->listener, lcData->fileTransferSendId, lcData->core, - (jmsg = lcData->getChatMessage(env, message)), + (jmsg = getChatMessage(env, message)), content ? create_java_linphone_content(env, content) : NULL, buff ? env->NewDirectByteBuffer(buff, asking) : NULL, asking); @@ -856,7 +929,8 @@ public: ms_error("cannot attach VM"); return; } - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc); + LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table); jbyteArray jbytes = env->NewByteArray(size); env->SetByteArrayRegion(jbytes, 0, size, (jbyte*)buff); @@ -864,7 +938,7 @@ public: env->CallVoidMethod(lcData->listener, lcData->fileTransferRecvId, lcData->core, - (jmsg = lcData->getChatMessage(env, message)), + (jmsg = getChatMessage(env, message)), content ? create_java_linphone_content(env, content) : NULL, jbytes, size); @@ -872,15 +946,18 @@ public: }; extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_newLinphoneCore(JNIEnv* env - ,jobject thiz + ,jobject thiz ,jobject jlistener ,jstring juserConfig ,jstring jfactoryConfig - ,jobject juserdata){ + ,jobject juserdata){ const char* userConfig = juserConfig?env->GetStringUTFChars(juserConfig, NULL):NULL; const char* factoryConfig = jfactoryConfig?env->GetStringUTFChars(jfactoryConfig, NULL):NULL; - LinphoneCoreData* ldata = new LinphoneCoreData(env,thiz,jlistener,juserdata); + + LinphoneCoreVTable *vTable = linphone_core_v_table_new(); + LinphoneCoreData* ldata = new LinphoneCoreData(env, thiz, vTable, jlistener); + linphone_core_v_table_set_user_data(vTable, ldata); ms_init(); // Initialize mediastreamer2 before loading the plugins @@ -906,23 +983,31 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_newLinphoneCore(JNIEnv* libmswebrtc_init(); #endif - jlong nativePtr = (jlong)linphone_core_new( &ldata->vTable - ,userConfig - ,factoryConfig - ,ldata); - + jobject core = env->NewGlobalRef(thiz); + jlong nativePtr = (jlong)linphone_core_new(vTable, userConfig, factoryConfig, core); if (userConfig) env->ReleaseStringUTFChars(juserConfig, userConfig); if (factoryConfig) env->ReleaseStringUTFChars(jfactoryConfig, factoryConfig); return nativePtr; } -extern "C" void Java_org_linphone_core_LinphoneCoreImpl_delete(JNIEnv* env - ,jobject thiz - ,jlong lc) { - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)lc); +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_delete(JNIEnv* env, jobject thiz, jlong lc) { + jobject core = (jobject)linphone_core_get_user_data((LinphoneCore*)lc); linphone_core_destroy((LinphoneCore*)lc); ms_exit(); - delete lcData; + if (core) { + env->DeleteGlobalRef(core); + } +} + +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_AddListener(JNIEnv* env, jobject thiz, jlong lc, jobject jlistener) { + LinphoneCoreVTable *vTable = linphone_core_v_table_new(); + LinphoneCoreData* ldata = new LinphoneCoreData(env, thiz, vTable, jlistener); + linphone_core_v_table_set_user_data(vTable, ldata); + linphone_core_add_listener((LinphoneCore*)lc, vTable); +} + +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_RemoveListener(JNIEnv* env, jobject thiz, jlong lc) { + //TODO } extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_migrateToMultiTransport(JNIEnv* env @@ -992,15 +1077,14 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setDefaultProxyConfig( J ,jlong pc) { linphone_core_set_default_proxy((LinphoneCore*)lc,(LinphoneProxyConfig*)pc); } - + extern "C" jobject Java_org_linphone_core_LinphoneCoreImpl_getDefaultProxyConfig(JNIEnv* env ,jobject thiz ,jlong lc) { LinphoneProxyConfig *config=0; - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)lc); linphone_core_get_default_proxy((LinphoneCore*)lc,&config); if(config != 0) { - jobject jproxy = lcData->getProxy(env,config,lcData->core); + jobject jproxy = getProxy(env,config,thiz); return jproxy; } else { return NULL; @@ -1012,11 +1096,10 @@ extern "C" jobjectArray Java_org_linphone_core_LinphoneCoreImpl_getProxyConfigLi int proxyCount = ms_list_size(proxies); jclass cls = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneProxyConfigImpl")); jobjectArray jProxies = env->NewObjectArray(proxyCount,cls,NULL); - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)lc); for (int i = 0; i < proxyCount; i++ ) { LinphoneProxyConfig* proxy = (LinphoneProxyConfig*)proxies->data; - jobject jproxy = lcData->getProxy(env,proxy,lcData->core); + jobject jproxy = getProxy(env,proxy,thiz); if(jproxy != NULL){ env->SetObjectArrayElement(jProxies, i, jproxy); } @@ -1098,17 +1181,15 @@ extern "C" jobject Java_org_linphone_core_LinphoneCoreImpl_invite(JNIEnv* env ,jlong lc ,jstring juri) { const char* uri = env->GetStringUTFChars(juri, NULL); - LinphoneCoreData *lcd=(LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)lc); LinphoneCall* lCall = linphone_core_invite((LinphoneCore*)lc,uri); env->ReleaseStringUTFChars(juri, uri); - return lcd->getCall(env,lCall); + return getCall(env,lCall); } extern "C" jobject Java_org_linphone_core_LinphoneCoreImpl_inviteAddress(JNIEnv* env ,jobject thiz ,jlong lc ,jlong to) { - LinphoneCoreData *lcd=(LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)lc); - return lcd->getCall(env, linphone_core_invite_address((LinphoneCore*)lc,(LinphoneAddress*)to)); + return getCall(env, linphone_core_invite_address((LinphoneCore*)lc,(LinphoneAddress*)to)); } extern "C" void Java_org_linphone_core_LinphoneCoreImpl_terminateCall(JNIEnv* env @@ -1458,9 +1539,7 @@ extern "C" jobject Java_org_linphone_core_LinphoneCoreImpl_getCurrentCall(JNIEnv ,jobject thiz ,jlong lc ) { - LinphoneCoreData *lcdata=(LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)lc); - - return lcdata->getCall(env,linphone_core_get_current_call((LinphoneCore*)lc)); + return getCall(env,linphone_core_get_current_call((LinphoneCore*)lc)); } extern "C" void Java_org_linphone_core_LinphoneCoreImpl_addFriend(JNIEnv* env ,jobject thiz @@ -2384,9 +2463,8 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneCallImpl_getTransferState( JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCallImpl_getTransfererCall(JNIEnv *env, jobject jCall, jlong callptr){ LinphoneCall *call=(LinphoneCall*)callptr; LinphoneCore *lc=linphone_call_get_core(call); - LinphoneCoreData *lcdata=(LinphoneCoreData*)linphone_core_get_user_data(lc); LinphoneCall *ret=linphone_call_get_transferer_call(call); - return lcdata->getCall(env,ret); + return getCall(env,ret); } /* @@ -2397,9 +2475,8 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCallImpl_getTransfererC JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCallImpl_getTransferTargetCall(JNIEnv *env, jobject jCall, jlong callptr){ LinphoneCall *call=(LinphoneCall*)callptr; LinphoneCore *lc=linphone_call_get_core(call); - LinphoneCoreData *lcdata=(LinphoneCoreData*)linphone_core_get_user_data(lc); LinphoneCall *ret=linphone_call_get_transfer_target_call(call); - return lcdata->getCall(env,ret); + return getCall(env,ret); } extern "C" void Java_org_linphone_core_LinphoneCallImpl_enableEchoCancellation( JNIEnv* env @@ -2429,8 +2506,7 @@ extern "C" jboolean Java_org_linphone_core_LinphoneCallImpl_isEchoLimiterEnabled extern "C" jobject Java_org_linphone_core_LinphoneCallImpl_getReplacedCall( JNIEnv* env ,jobject thiz ,jlong ptr) { - LinphoneCoreData *lcd=(LinphoneCoreData*)linphone_core_get_user_data(linphone_call_get_core((LinphoneCall*)ptr)); - return lcd->getCall(env,linphone_call_get_replaced_call((LinphoneCall*)ptr)); + return getCall(env,linphone_call_get_replaced_call((LinphoneCall*)ptr)); } extern "C" jfloat Java_org_linphone_core_LinphoneCallImpl_getCurrentQuality( JNIEnv* env @@ -2507,8 +2583,8 @@ extern "C" jobject Java_org_linphone_core_LinphoneFriendImpl_getCore(JNIEnv* en ,jlong ptr) { LinphoneCore *lc=linphone_friend_get_core((LinphoneFriend*)ptr); if (lc!=NULL){ - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); - return lcData->core; + jobject core = (jobject)linphone_core_get_user_data(lc); + return core; } return NULL; } @@ -2876,12 +2952,14 @@ static void chat_room_impl_callback(LinphoneChatMessage* msg, LinphoneChatMessag jmethodID method = env->GetMethodID(clazz, "onLinphoneChatMessageStateChanged","(Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneChatMessage$State;)V"); jobject jmessage=(jobject)linphone_chat_message_get_user_data(msg); LinphoneCore *lc = linphone_chat_room_get_lc(linphone_chat_message_get_chat_room(msg)); - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); + + jclass chatMessageStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneChatMessage$State")); + jmethodID chatMessageStateFromIntId = env->GetStaticMethodID(chatMessageStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneChatMessage$State;"); env->CallVoidMethod( listener, method, jmessage, - env->CallStaticObjectMethod(lcData->chatMessageStateClass,lcData->chatMessageStateFromIntId,(jint)state)); + env->CallStaticObjectMethod(chatMessageStateClass,chatMessageStateFromIntId,(jint)state)); if (state == LinphoneChatMessageStateDelivered || state == LinphoneChatMessageStateNotDelivered) { env->DeleteGlobalRef(listener); @@ -2894,8 +2972,8 @@ extern "C" jobject Java_org_linphone_core_LinphoneChatRoomImpl_getCore(JNIEnv* ,jobject thiz ,jlong chatroom_ptr){ LinphoneCore *lc=linphone_chat_room_get_core((LinphoneChatRoom*)chatroom_ptr); - LinphoneCoreData *lcd=(LinphoneCoreData*)linphone_core_get_user_data(lc); - return lcd->core; + jobject core = (jobject)linphone_core_get_user_data(lc); + return core; } extern "C" void Java_org_linphone_core_LinphoneChatRoomImpl_sendMessage2(JNIEnv* env @@ -3134,8 +3212,7 @@ extern "C" void Java_org_linphone_core_LinphoneCallImpl_stopRecording(JNIEnv *en } extern "C" jobject Java_org_linphone_core_LinphoneCoreImpl_inviteAddressWithParams(JNIEnv *env, jobject thiz, jlong lc, jlong addr, jlong params){ - LinphoneCoreData *lcd=(LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)lc); - return lcd->getCall(env,linphone_core_invite_address_with_params((LinphoneCore *)lc, (const LinphoneAddress *)addr, (const LinphoneCallParams *)params)); + return getCall(env,linphone_core_invite_address_with_params((LinphoneCore *)lc, (const LinphoneAddress *)addr, (const LinphoneCallParams *)params)); } extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_updateAddressWithParams(JNIEnv *env, jobject thiz, jlong lc, jlong call, jlong params){ @@ -3386,9 +3463,8 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_terminateAllCalls(JNIEnv linphone_core_terminate_all_calls((LinphoneCore *) pCore); } extern "C" jobject Java_org_linphone_core_LinphoneCoreImpl_getCall(JNIEnv *env,jobject thiz,jlong pCore,jint position) { - LinphoneCoreData *lcd=(LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)pCore); LinphoneCall* lCall = (LinphoneCall*) ms_list_nth_data(linphone_core_get_calls((LinphoneCore *) pCore),position); - return lcd->getCall(env,lCall); + return getCall(env,lCall); } extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_getCallsNb(JNIEnv *env,jobject thiz,jlong pCore) { return (jint)ms_list_size(linphone_core_get_calls((LinphoneCore *) pCore)); @@ -3405,8 +3481,7 @@ extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_transferCallToAnother(JN } extern "C" jobject Java_org_linphone_core_LinphoneCoreImpl_startReferedCall(JNIEnv *env, jobject thiz, jlong lc, jlong callptr, jlong params){ - LinphoneCoreData *lcd=(LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)lc); - return lcd->getCall(env,linphone_core_start_refered_call((LinphoneCore *)lc, (LinphoneCall *)callptr, (const LinphoneCallParams *)params)); + return getCall(env,linphone_core_start_refered_call((LinphoneCore *)lc, (LinphoneCall *)callptr, (const LinphoneCallParams *)params)); } extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setZrtpSecretsCache(JNIEnv *env,jobject thiz,jlong pCore, jstring jFile) { @@ -3423,8 +3498,7 @@ extern "C" jobject Java_org_linphone_core_LinphoneCoreImpl_findCallFromUri(JNIEn const char* cUri=env->GetStringUTFChars(jUri, NULL); const LinphoneCall *call=linphone_core_find_call_from_uri((const LinphoneCore *) pCore,cUri); env->ReleaseStringUTFChars(jUri, cUri); - LinphoneCoreData *lcdata=(LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)pCore); - return (jobject) lcdata->getCall(env,(LinphoneCall*)call); + return (jobject) getCall(env,(LinphoneCall*)call); } @@ -3794,7 +3868,6 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_subscribe(JNIE LinphoneEvent *ev; jobject jev=NULL; const char *evname=env->GetStringUTFChars(jevname,NULL); - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); if (jtype){ content.type=(char*)env->GetStringUTFChars(jtype,NULL); @@ -3812,7 +3885,7 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_subscribe(JNIE } env->ReleaseStringUTFChars(jevname,evname); if (ev){ - jev=lcData->getEvent(env,ev); + jev=getEvent(env,ev); } return jev; } @@ -3830,7 +3903,6 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_publish(JNIEnv LinphoneEvent *ev; jobject jev=NULL; const char *evname=env->GetStringUTFChars(jevname,NULL); - LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc); if (jtype){ content.type=(char*)env->GetStringUTFChars(jtype,NULL); @@ -3848,7 +3920,7 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_publish(JNIEnv } env->ReleaseStringUTFChars(jevname,evname); if (ev){ - jev=lcData->getEvent(env,ev); + jev=getEvent(env,ev); } return jev; } @@ -4094,8 +4166,8 @@ JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneCoreFactoryImpl__1setLogHa JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneEventImpl_getCore(JNIEnv *env, jobject jobj, jlong evptr){ LinphoneCore *lc=linphone_event_get_core((LinphoneEvent*)evptr); - LinphoneCoreData *lcd=(LinphoneCoreData*)linphone_core_get_user_data(lc); - return lcd->core; + jobject core = (jobject)linphone_core_get_user_data(lc); + return core; } /* @@ -4264,7 +4336,6 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_getSubscriptionS JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_createSubscribe(JNIEnv *env, jobject thiz, jlong jcore, jlong jaddr, jstring jeventname, jint expires) { LinphoneCore *lc = (LinphoneCore*) jcore; - LinphoneCoreData* lcData = (LinphoneCoreData*) linphone_core_get_user_data(lc); LinphoneAddress *addr = (LinphoneAddress*) jaddr; LinphoneEvent *event; jobject jevent = NULL; @@ -4273,7 +4344,7 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_createSubscrib event = linphone_core_create_subscribe(lc, addr, event_name, expires); env->ReleaseStringUTFChars(jeventname, event_name); if (event) { - jevent = lcData->getEvent(env, event); + jevent = getEvent(env, event); } return jevent; } @@ -4298,7 +4369,6 @@ JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneEventImpl_sendSubscribe(JN JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_createPublish(JNIEnv *env, jobject thiz, jlong jcore, jlong jaddr, jstring jeventname, jint expires) { LinphoneCore *lc = (LinphoneCore*) jcore; - LinphoneCoreData* lcData = (LinphoneCoreData*) linphone_core_get_user_data(lc); LinphoneAddress *addr = (LinphoneAddress*) jaddr; LinphoneEvent *event; jobject jevent = NULL; @@ -4307,7 +4377,7 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_createPublish( event = linphone_core_create_publish(lc, addr, event_name, expires); env->ReleaseStringUTFChars(jeventname, event_name); if (event) { - jevent = lcData->getEvent(env, event); + jevent = getEvent(env, event); } return jevent; } diff --git a/coreapi/private.h b/coreapi/private.h index d9d1eeb07..0ce88fee5 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -784,6 +784,7 @@ struct _LinphoneCore LinphoneReason chat_deny_code; const char **supported_formats; LinphoneContent *log_collection_upload_information; + LinphoneCoreVTable *current_vtable; // the latest vtable to call a callback, see linphone_core_get_current_vtable }; From e7e36bb329326b3eba0d2a836f85c13823728724 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 28 Nov 2014 18:03:52 +0100 Subject: [PATCH 242/249] add basic support for tel uri in incomming calls --- coreapi/bellesip_sal/sal_address_impl.c | 20 +++++++++++++++++--- coreapi/bellesip_sal/sal_impl.c | 23 ++++++++++++++++++----- coreapi/linphonecore.c | 4 ++++ 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/coreapi/bellesip_sal/sal_address_impl.c b/coreapi/bellesip_sal/sal_address_impl.c index 024b83264..f51e421da 100644 --- a/coreapi/bellesip_sal/sal_address_impl.c +++ b/coreapi/bellesip_sal/sal_address_impl.c @@ -39,10 +39,13 @@ SalAddress * sal_address_clone(const SalAddress *addr){ const char *sal_address_get_scheme(const SalAddress *addr){ belle_sip_header_address_t* header_addr = BELLE_SIP_HEADER_ADDRESS(addr); belle_sip_uri_t* uri = belle_sip_header_address_get_uri(header_addr); + belle_generic_uri_t* generic_uri = belle_sip_header_address_get_absolute_uri(header_addr); if (uri) { if (belle_sip_uri_is_secure(uri)) return "sips"; else return "sip"; - } else + } else if (generic_uri) + return belle_generic_uri_get_scheme(generic_uri); + else return NULL; } @@ -142,10 +145,21 @@ char *sal_address_as_string(const SalAddress *addr){ char *sal_address_as_string_uri_only(const SalAddress *addr){ belle_sip_header_address_t* header_addr = BELLE_SIP_HEADER_ADDRESS(addr); - belle_sip_uri_t* uri = belle_sip_header_address_get_uri(header_addr); + belle_sip_uri_t* sip_uri = belle_sip_header_address_get_uri(header_addr); + belle_generic_uri_t* absolute_uri = belle_sip_header_address_get_absolute_uri(header_addr); char tmp[1024]={0}; size_t off=0; - belle_sip_object_marshal((belle_sip_object_t*)uri,tmp,sizeof(tmp),&off); + belle_sip_object_t* uri; + + if (sip_uri) { + uri=(belle_sip_object_t*)sip_uri; + } else if (absolute_uri) { + uri=(belle_sip_object_t*)absolute_uri; + } else { + ms_error("Cannot generate string for addr [%p] with null uri",addr); + return NULL; + } + belle_sip_object_marshal(uri,tmp,sizeof(tmp),&off); return ms_strdup(tmp); } diff --git a/coreapi/bellesip_sal/sal_impl.c b/coreapi/bellesip_sal/sal_impl.c index 052c83971..1330f5269 100644 --- a/coreapi/bellesip_sal/sal_impl.c +++ b/coreapi/bellesip_sal/sal_impl.c @@ -204,7 +204,7 @@ static void process_request_event(void *ud, const belle_sip_request_event_t *eve belle_sip_request_t* req = belle_sip_request_event_get_request(event); belle_sip_dialog_t* dialog=belle_sip_request_event_get_dialog(event); belle_sip_header_address_t* origin_address; - belle_sip_header_address_t* address; + belle_sip_header_address_t* address=NULL; belle_sip_header_from_t* from_header; belle_sip_header_to_t* to; belle_sip_response_t* resp; @@ -266,8 +266,14 @@ static void process_request_event(void *ud, const belle_sip_request_event_t *eve } if (!op->base.from_address) { - address=belle_sip_header_address_create(belle_sip_header_address_get_displayname(BELLE_SIP_HEADER_ADDRESS(from_header)) - ,belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(from_header))); + if (belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(from_header))) + address=belle_sip_header_address_create(belle_sip_header_address_get_displayname(BELLE_SIP_HEADER_ADDRESS(from_header)) + ,belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(from_header))); + else if ((belle_sip_header_address_get_absolute_uri(BELLE_SIP_HEADER_ADDRESS(from_header)))) + address=belle_sip_header_address_create2(belle_sip_header_address_get_displayname(BELLE_SIP_HEADER_ADDRESS(from_header)) + ,belle_sip_header_address_get_absolute_uri(BELLE_SIP_HEADER_ADDRESS(from_header))); + else + ms_error("Cannot not find from uri from request [%p]",req); sal_op_set_from_address(op,(SalAddress*)address); belle_sip_object_unref(address); } @@ -278,8 +284,15 @@ static void process_request_event(void *ud, const belle_sip_request_event_t *eve if (!op->base.to_address) { to=belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(req),belle_sip_header_to_t); - address=belle_sip_header_address_create(belle_sip_header_address_get_displayname(BELLE_SIP_HEADER_ADDRESS(to)) - ,belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(to))); + if (belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(to))) + address=belle_sip_header_address_create(belle_sip_header_address_get_displayname(BELLE_SIP_HEADER_ADDRESS(to)) + ,belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(to))); + else if ((belle_sip_header_address_get_absolute_uri(BELLE_SIP_HEADER_ADDRESS(to)))) + address=belle_sip_header_address_create2(belle_sip_header_address_get_displayname(BELLE_SIP_HEADER_ADDRESS(to)) + ,belle_sip_header_address_get_absolute_uri(BELLE_SIP_HEADER_ADDRESS(to))); + else + ms_error("Cannot not find to uri from request [%p]",req); + sal_op_set_to_address(op,(SalAddress*)address); belle_sip_object_unref(address); } diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index f89bc5643..16de123a7 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -2801,6 +2801,10 @@ LinphoneProxyConfig * linphone_core_lookup_known_proxy(LinphoneCore *lc, const L LinphoneProxyConfig *found_noreg_cfg=NULL; LinphoneProxyConfig *default_cfg=lc->default_proxy; + if (linphone_address_get_domain(uri) == NULL) { + ms_message("cannot seach for proxy for uri [%p] if no domain set. returning default",uri); + return default_cfg; + } /*return default proxy if it is matching the destination uri*/ if (default_cfg){ const char *domain=linphone_proxy_config_get_domain(default_cfg); From 0204cb48606e0f82ed35687c254eb81090934c60 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sun, 30 Nov 2014 09:42:50 +0100 Subject: [PATCH 243/249] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 42600e413..06a14487a 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 42600e413e5007402fe1969f1dcd016cede3a8be +Subproject commit 06a14487aa5acc0e3f0d4931c9a974762829d7bd From 6045f50dc5a2d6840474e7fd939e956ce0c88612 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 1 Dec 2014 10:59:23 +0100 Subject: [PATCH 244/249] Fix compilation with CMake on Windows. --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index babea3ee9..6f762ad8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,11 +118,11 @@ add_definitions(-DIN_LINPHONE) if(MSVC) - set(CMAKE_C_FLAGS "/W3") - set(CMAKE_CXX_FLAGS "/W3") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W3") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3") else() - set(CMAKE_C_FLAGS "-Wall -Wuninitialized -Wdeclaration-after-statement -fno-strict-aliasing -Werror") - set(CMAKE_CXX_FLAGS "-Wall -Wuninitialized -Werror") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wuninitialized -Wdeclaration-after-statement -fno-strict-aliasing -Werror") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wuninitialized -Werror") if(CMAKE_C_COMPILER_ID STREQUAL "Clang") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments -Wno-array-bounds") endif() From de2e98bd9635c49acd45d1d5b7d2bb900383e235 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 1 Dec 2014 12:36:24 +0100 Subject: [PATCH 245/249] Added ClearException in jni layer to prevent crash when listener doesn't implement all callbacks + reworked linphonecorelistener --- .../core/tutorials/TutorialBuddyStatus.java | 4 +- .../core/tutorials/TutorialChatRoom.java | 4 +- .../core/tutorials/TutorialHelloWorld.java | 10 +- .../core/tutorials/TutorialRegistration.java | 4 +- coreapi/linphonecore_jni.cc | 73 ++-- .../org/linphone/core/LinphoneCore.java | 12 + .../linphone/core/LinphoneCoreListener.java | 391 +++++++++--------- .../org/linphone/core/LinphoneCoreImpl.java | 12 + 8 files changed, 291 insertions(+), 219 deletions(-) diff --git a/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java b/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java index 69d8b9869..a1db1a25d 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java @@ -34,7 +34,7 @@ import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneCore.RemoteProvisioningState; import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; -import org.linphone.core.LinphoneCoreListener; +import org.linphone.core.LinphoneCoreListener.LinphoneListener; import org.linphone.core.LinphoneEvent; import org.linphone.core.LinphoneFriend; import org.linphone.core.LinphoneFriend.SubscribePolicy; @@ -60,7 +60,7 @@ import org.linphone.core.SubscriptionState; * @author Guillaume Beraudo * */ -public class TutorialBuddyStatus implements LinphoneCoreListener { +public class TutorialBuddyStatus implements LinphoneListener { private boolean running; private TutorialNotifier TutorialNotifier; diff --git a/coreapi/help/java/org/linphone/core/tutorials/TutorialChatRoom.java b/coreapi/help/java/org/linphone/core/tutorials/TutorialChatRoom.java index f5a34746c..eff31682d 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialChatRoom.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialChatRoom.java @@ -34,7 +34,7 @@ import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneCore.RemoteProvisioningState; import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; -import org.linphone.core.LinphoneCoreListener; +import org.linphone.core.LinphoneCoreListener.LinphoneListener; import org.linphone.core.LinphoneEvent; import org.linphone.core.LinphoneFriend; import org.linphone.core.LinphoneInfoMessage; @@ -58,7 +58,7 @@ import org.linphone.core.SubscriptionState; * @author Guillaume Beraudo * */ -public class TutorialChatRoom implements LinphoneCoreListener, LinphoneChatMessage.StateListener { +public class TutorialChatRoom implements LinphoneListener, LinphoneChatMessage.StateListener { private boolean running; private TutorialNotifier TutorialNotifier; diff --git a/coreapi/help/java/org/linphone/core/tutorials/TutorialHelloWorld.java b/coreapi/help/java/org/linphone/core/tutorials/TutorialHelloWorld.java index 5a80f4824..8806b8da1 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialHelloWorld.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialHelloWorld.java @@ -22,23 +22,23 @@ import java.nio.ByteBuffer; import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneCall; +import org.linphone.core.LinphoneCall.State; import org.linphone.core.LinphoneCallStats; import org.linphone.core.LinphoneChatMessage; import org.linphone.core.LinphoneChatRoom; import org.linphone.core.LinphoneContent; import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore.EcCalibratorStatus; +import org.linphone.core.LinphoneCore.GlobalState; +import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneCore.RemoteProvisioningState; import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; -import org.linphone.core.LinphoneCoreListener; +import org.linphone.core.LinphoneCoreListener.LinphoneListener; import org.linphone.core.LinphoneEvent; import org.linphone.core.LinphoneFriend; import org.linphone.core.LinphoneInfoMessage; import org.linphone.core.LinphoneProxyConfig; -import org.linphone.core.LinphoneCall.State; -import org.linphone.core.LinphoneCore.GlobalState; -import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.PublishState; import org.linphone.core.SubscriptionState; @@ -52,7 +52,7 @@ import org.linphone.core.SubscriptionState; * @author Guillaume Beraudo * */ -public class TutorialHelloWorld implements LinphoneCoreListener { +public class TutorialHelloWorld implements LinphoneListener { private boolean running; private TutorialNotifier TutorialNotifier; diff --git a/coreapi/help/java/org/linphone/core/tutorials/TutorialRegistration.java b/coreapi/help/java/org/linphone/core/tutorials/TutorialRegistration.java index 2d2135a62..afc2fe16c 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialRegistration.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialRegistration.java @@ -34,7 +34,7 @@ import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneCore.RemoteProvisioningState; import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; -import org.linphone.core.LinphoneCoreListener; +import org.linphone.core.LinphoneCoreListener.LinphoneListener; import org.linphone.core.LinphoneEvent; import org.linphone.core.LinphoneFriend; import org.linphone.core.LinphoneInfoMessage; @@ -57,7 +57,7 @@ import org.linphone.core.SubscriptionState; * @author Guillaume Beraudo * */ -public class TutorialRegistration implements LinphoneCoreListener { +public class TutorialRegistration implements LinphoneListener { private boolean running; private TutorialNotifier TutorialNotifier; diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 128da582d..83d28ef8c 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -264,151 +264,178 @@ public: /*displayStatus(LinphoneCore lc,String message);*/ displayStatusId = env->GetMethodID(listenerClass,"displayStatus","(Lorg/linphone/core/LinphoneCore;Ljava/lang/String;)V"); + env->ExceptionClear(); if (displayStatusId) { vTable->display_status = displayStatusCb; } /*void generalState(LinphoneCore lc,int state); */ - globalStateId = env->GetMethodID(listenerClass,"globalState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$GlobalState;Ljava/lang/String;)V"); globalStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCore$GlobalState")); globalStateFromIntId = env->GetStaticMethodID(globalStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneCore$GlobalState;"); + globalStateId = env->GetMethodID(listenerClass,"globalState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$GlobalState;Ljava/lang/String;)V"); + env->ExceptionClear(); if (globalStateId) { vTable->global_state_changed = globalStateChange; } /*registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, LinphoneCore.RegistrationState cstate, String smessage);*/ - registrationStateId = env->GetMethodID(listenerClass,"registrationState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneProxyConfig;Lorg/linphone/core/LinphoneCore$RegistrationState;Ljava/lang/String;)V"); registrationStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCore$RegistrationState")); registrationStateFromIntId = env->GetStaticMethodID(registrationStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneCore$RegistrationState;"); + registrationStateId = env->GetMethodID(listenerClass,"registrationState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneProxyConfig;Lorg/linphone/core/LinphoneCore$RegistrationState;Ljava/lang/String;)V"); + env->ExceptionClear(); if (registrationStateId) { vTable->registration_state_changed = registrationStateChange; } /*callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State cstate,String message);*/ - callStateId = env->GetMethodID(listenerClass,"callState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;Lorg/linphone/core/LinphoneCall$State;Ljava/lang/String;)V"); callStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCall$State")); callStateFromIntId = env->GetStaticMethodID(callStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneCall$State;"); + callStateId = env->GetMethodID(listenerClass,"callState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;Lorg/linphone/core/LinphoneCall$State;Ljava/lang/String;)V"); + env->ExceptionClear(); if (callStateId) { vTable->call_state_changed = callStateChange; } - + transferStateId = env->GetMethodID(listenerClass,"transferState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;Lorg/linphone/core/LinphoneCall$State;)V"); + env->ExceptionClear(); if (transferStateId) { vTable->transfer_state_changed = transferStateChanged; } /*callStatsUpdated(LinphoneCore lc, LinphoneCall call, LinphoneCallStats stats);*/ callStatsUpdatedId = env->GetMethodID(listenerClass, "callStatsUpdated", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;Lorg/linphone/core/LinphoneCallStats;)V"); + env->ExceptionClear(); if (callStatsUpdatedId) { vTable->call_stats_updated = callStatsUpdated; } - chatMessageStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneChatMessage$State")); - chatMessageStateFromIntId = env->GetStaticMethodID(chatMessageStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneChatMessage$State;"); - /*callEncryption(LinphoneCore lc, LinphoneCall call, boolean encrypted,String auth_token);*/ callEncryptionChangedId = env->GetMethodID(listenerClass,"callEncryptionChanged","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;ZLjava/lang/String;)V"); + env->ExceptionClear(); if (callEncryptionChangedId) { vTable->call_encryption_changed = callEncryptionChange; } /*void ecCalibrationStatus(LinphoneCore.EcCalibratorStatus status, int delay_ms, Object data);*/ - ecCalibrationStatusId = env->GetMethodID(listenerClass,"ecCalibrationStatus","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$EcCalibratorStatus;ILjava/lang/Object;)V"); ecCalibratorStatusClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCore$EcCalibratorStatus")); ecCalibratorStatusFromIntId = env->GetStaticMethodID(ecCalibratorStatusClass,"fromInt","(I)Lorg/linphone/core/LinphoneCore$EcCalibratorStatus;"); + ecCalibrationStatusId = env->GetMethodID(listenerClass,"ecCalibrationStatus","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$EcCalibratorStatus;ILjava/lang/Object;)V"); + env->ExceptionClear(); /*void newSubscriptionRequest(LinphoneCore lc, LinphoneFriend lf, String url)*/ newSubscriptionRequestId = env->GetMethodID(listenerClass,"newSubscriptionRequest","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneFriend;Ljava/lang/String;)V"); + env->ExceptionClear(); if (newSubscriptionRequestId) { vTable->new_subscription_requested = new_subscription_requested; } authInfoRequestedId = env->GetMethodID(listenerClass,"authInfoRequested","(Lorg/linphone/core/LinphoneCore;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); + env->ExceptionClear(); if (authInfoRequestedId) { vTable->auth_info_requested = authInfoRequested; } /*void notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf);*/ notifyPresenceReceivedId = env->GetMethodID(listenerClass,"notifyPresenceReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneFriend;)V"); + env->ExceptionClear(); if (notifyPresenceReceivedId) { vTable->notify_presence_received = notify_presence_received; } /*void textReceived(LinphoneCore lc, LinphoneChatRoom cr,LinphoneAddress from,String message);*/ textReceivedId = env->GetMethodID(listenerClass,"textReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatRoom;Lorg/linphone/core/LinphoneAddress;Ljava/lang/String;)V"); + env->ExceptionClear(); if (textReceivedId) { vTable->text_received = text_received; } - + messageReceivedId = env->GetMethodID(listenerClass,"messageReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatRoom;Lorg/linphone/core/LinphoneChatMessage;)V"); + env->ExceptionClear(); if (messageReceivedId) { vTable->message_received = message_received; } - + isComposingReceivedId = env->GetMethodID(listenerClass,"isComposingReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatRoom;)V"); + env->ExceptionClear(); if (isComposingReceivedId) { vTable->is_composing_received = is_composing_received; } - + dtmfReceivedId = env->GetMethodID(listenerClass,"dtmfReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;I)V"); + env->ExceptionClear(); if (dtmfReceivedId) { vTable->dtmf_received = dtmf_received; } - + infoReceivedId = env->GetMethodID(listenerClass,"infoReceived", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCall;Lorg/linphone/core/LinphoneInfoMessage;)V"); + env->ExceptionClear(); if (infoReceivedId) { vTable->info_received = infoReceived; } - subscriptionStateId = env->GetMethodID(listenerClass,"subscriptionStateChanged", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Lorg/linphone/core/SubscriptionState;)V"); subscriptionStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/SubscriptionState")); subscriptionStateFromIntId = env->GetStaticMethodID(subscriptionStateClass,"fromInt","(I)Lorg/linphone/core/SubscriptionState;"); + subscriptionStateId = env->GetMethodID(listenerClass,"subscriptionStateChanged", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Lorg/linphone/core/SubscriptionState;)V"); + env->ExceptionClear(); if (subscriptionStateId) { vTable->subscription_state_changed = subscriptionStateChanged; } - - publishStateId = env->GetMethodID(listenerClass,"publishStateChanged", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Lorg/linphone/core/PublishState;)V"); + publishStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/PublishState")); publishStateFromIntId = env->GetStaticMethodID(publishStateClass,"fromInt","(I)Lorg/linphone/core/PublishState;"); + publishStateId = env->GetMethodID(listenerClass,"publishStateChanged", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Lorg/linphone/core/PublishState;)V"); + env->ExceptionClear(); if (publishStateId) { vTable->publish_state_changed = publishStateChanged; } - + notifyRecvId = env->GetMethodID(listenerClass,"notifyReceived", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneEvent;Ljava/lang/String;Lorg/linphone/core/LinphoneContent;)V"); + env->ExceptionClear(); if (notifyRecvId) { vTable->notify_received = notifyReceived; } - configuringStateId = env->GetMethodID(listenerClass,"configuringStatus","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$RemoteProvisioningState;Ljava/lang/String;)V"); configuringStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCore$RemoteProvisioningState")); configuringStateFromIntId = env->GetStaticMethodID(configuringStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneCore$RemoteProvisioningState;"); + configuringStateId = env->GetMethodID(listenerClass,"configuringStatus","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$RemoteProvisioningState;Ljava/lang/String;)V"); + env->ExceptionClear(); if (configuringStateId) { vTable->configuring_status = configuringStatus; } fileTransferProgressIndicationId = env->GetMethodID(listenerClass, "fileTransferProgressIndication", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneContent;I)V"); + env->ExceptionClear(); if (fileTransferProgressIndicationId) { vTable->file_transfer_progress_indication = fileTransferProgressIndication; } - + fileTransferSendId = env->GetMethodID(listenerClass, "fileTransferSend", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneContent;Ljava/nio/ByteBuffer;I)I"); + env->ExceptionClear(); if (fileTransferSendId) { vTable->file_transfer_send = fileTransferSend; } fileTransferRecvId = env->GetMethodID(listenerClass, "fileTransferRecv", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneContent;[BI)V"); + env->ExceptionClear(); if (fileTransferRecvId) { vTable->file_transfer_recv = fileTransferRecv; } - + + chatMessageStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneChatMessage$State")); + chatMessageStateFromIntId = env->GetStaticMethodID(chatMessageStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneChatMessage$State;"); + proxyClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneProxyConfigImpl")); proxyCtrId = env->GetMethodID(proxyClass,"", "(Lorg/linphone/core/LinphoneCoreImpl;J)V"); callClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCallImpl")); callCtrId = env->GetMethodID(callClass,"", "(J)V"); + callSetAudioStatsId = env->GetMethodID(callClass, "setAudioStats", "(Lorg/linphone/core/LinphoneCallStats;)V"); + callSetVideoStatsId = env->GetMethodID(callClass, "setVideoStats", "(Lorg/linphone/core/LinphoneCallStats;)V"); chatMessageClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneChatMessageImpl")); - if (chatMessageClass) chatMessageCtrId = env->GetMethodID(chatMessageClass,"", "(J)V"); + if (chatMessageClass) { + chatMessageCtrId = env->GetMethodID(chatMessageClass,"", "(J)V"); + } chatRoomClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneChatRoomImpl")); chatRoomCtrId = env->GetMethodID(chatRoomClass,"", "(J)V"); @@ -421,8 +448,6 @@ public: callStatsClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCallStatsImpl")); callStatsId = env->GetMethodID(callStatsClass, "", "(JJ)V"); - callSetAudioStatsId = env->GetMethodID(callClass, "setAudioStats", "(Lorg/linphone/core/LinphoneCallStats;)V"); - callSetVideoStatsId = env->GetMethodID(callClass, "setVideoStats", "(Lorg/linphone/core/LinphoneCallStats;)V"); infoMessageClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneInfoMessageImpl")); infoMessageCtor = env->GetMethodID(infoMessageClass,"", "(J)V"); @@ -999,14 +1024,14 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_delete(JNIEnv* env, jobj } } -extern "C" void Java_org_linphone_core_LinphoneCoreImpl_AddListener(JNIEnv* env, jobject thiz, jlong lc, jobject jlistener) { +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_addListener(JNIEnv* env, jobject thiz, jlong lc, jobject jlistener) { LinphoneCoreVTable *vTable = linphone_core_v_table_new(); LinphoneCoreData* ldata = new LinphoneCoreData(env, thiz, vTable, jlistener); linphone_core_v_table_set_user_data(vTable, ldata); linphone_core_add_listener((LinphoneCore*)lc, vTable); } -extern "C" void Java_org_linphone_core_LinphoneCoreImpl_RemoveListener(JNIEnv* env, jobject thiz, jlong lc) { +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_removeListener(JNIEnv* env, jobject thiz, jlong lc, jobject jlistener) { //TODO } diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index af878e24f..b13a510d6 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -1787,4 +1787,16 @@ public interface LinphoneCore { * @return An object that implement LinphonePlayer */ public LinphonePlayer createLocalPlayer(AndroidVideoWindowImpl window); + + /** + * Adds a new listener to be called by the core + * @param listener to add + */ + public void addListener(LinphoneCoreListener listener); + + /** + * Removes a listener previously added with addListener + * @param listener to remove + */ + public void removeListener(LinphoneCoreListener listener); } diff --git a/java/common/org/linphone/core/LinphoneCoreListener.java b/java/common/org/linphone/core/LinphoneCoreListener.java index c82390c48..d92743ce1 100644 --- a/java/common/org/linphone/core/LinphoneCoreListener.java +++ b/java/common/org/linphone/core/LinphoneCoreListener.java @@ -22,203 +22,226 @@ import java.nio.ByteBuffer; import org.linphone.core.LinphoneCore.RemoteProvisioningState; - /** * *This interface holds all callbacks that the application should implement. None is mandatory. */ public interface LinphoneCoreListener { - /**< Ask the application some authentication information - * @return */ - void authInfoRequested(LinphoneCore lc, String realm, String username, String Domain); - - /** General State notification - * @param state LinphoneCore.State - * @return - * */ - void globalState(LinphoneCore lc,LinphoneCore.GlobalState state, String message); - - /** Call State notification - * @param state LinphoneCall.State - * @return - * */ - void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State cstate,String message); - - /** - * Call stats notification - */ - void callStatsUpdated(LinphoneCore lc, LinphoneCall call, LinphoneCallStats stats); - - /** - * Callback to display change in encryption state. - * @param encrypted true if all streams of the call are encrypted - * @param authenticationToken token like ZRTP SAS that may be displayed to user - */ - void callEncryptionChanged(LinphoneCore lc, LinphoneCall call, boolean encrypted, String authenticationToken); - - /** - * Registration state notification - * */ - void registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, LinphoneCore.RegistrationState cstate, String smessage); - - /** - * Reports that a new subscription request has been received and wait for a decision. - *Status on this subscription request is notified by changing policy for this friend - *@param lc LinphoneCore - *@param lf LinphoneFriend corresponding to the subscriber - *@param url of the subscriber - * - */ - void newSubscriptionRequest(LinphoneCore lc, LinphoneFriend lf, String url); - - /** - * Report status change for a friend previously added to LinphoneCore. - * @param lc LinphoneCore - * @param lf updated LinphoneFriend - */ - void notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf); - - /** - * invoked when a new text message is received - * @param lc LinphoneCore - * @param room LinphoneChatRoom involved in this conversation. Can be be created by the framework in case the from is not present in any chat room. - * @param from LinphoneAddress from - * @param message incoming message - */ - void textReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneAddress from, String message); - /** - * invoked when a new linphone chat message is received - * @param lc LinphoneCore - * @param room LinphoneChatRoom involved in this conversation. Can be be created by the framework in case the from is not present in any chat room. - * @param message incoming linphone chat message message - */ - void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message); + public interface LinphoneListener extends LinphoneCoreListener, + LinphoneRemoteProvisioningListener, LinphoneMessageListener, LinphoneCallStateListener, + LinphoneCallEncryptionStateListener, LinphoneNotifyListener, LinphoneComposingListener, + LinphoneGlobalStateListener, LinphoneRegistrationStateListener { + /**< Ask the application some authentication information + * @return */ + void authInfoRequested(LinphoneCore lc, String realm, String username, String Domain); - /** - * invoked when a composing notification is received - * @param lc LinphoneCore - * @param room LinphoneChatRoom involved in the conversation. - */ - void isComposingReceived(LinphoneCore lc, LinphoneChatRoom cr); + /** + * Call stats notification + */ + void callStatsUpdated(LinphoneCore lc, LinphoneCall call, LinphoneCallStats stats); - /** - * invoked when a new dtmf is received - * @param lc LinphoneCore - * @param call LinphoneCall involved in the dtmf sending - * @param dtmf value of the dtmf sent - */ - void dtmfReceived(LinphoneCore lc, LinphoneCall call, int dtmf); - - /** - * Invoked when echo cancalation calibration is completed - * @param lc LinphoneCore - * @param status - * @param delay_ms echo delay - * @param data - */ - void ecCalibrationStatus(LinphoneCore lc,LinphoneCore.EcCalibratorStatus status, int delay_ms, Object data); - /** - * Report Notified message received for this identity. - * @param lc LinphoneCore - * @param call LinphoneCall in case the notify is part of a dialog, may be null - * @param from LinphoneAddress the message comes from - * @param event String the raw body of the notify event. - * - */ - void notifyReceived(LinphoneCore lc, LinphoneCall call, LinphoneAddress from, byte[] event); + /** + * Reports that a new subscription request has been received and wait for a decision. + *Status on this subscription request is notified by changing policy for this friend + *@param lc LinphoneCore + *@param lf LinphoneFriend corresponding to the subscriber + *@param url of the subscriber + * + */ + void newSubscriptionRequest(LinphoneCore lc, LinphoneFriend lf, String url); - /** - * Notifies progress of a call transfer. - * @param lc the LinphoneCore - * @param call the call through which the transfer was sent. - * @param new_call_state the state of the call resulting of the transfer, at the other party. - **/ - void transferState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State new_call_state); - - /** - * Notifies an incoming INFO message. - * @param lc the LinphoneCore. - * @param info the info message - */ - void infoReceived(LinphoneCore lc, LinphoneCall call, LinphoneInfoMessage info); - - /** - * Notifies of subscription requests state changes, including new incoming subscriptions. - * @param lc the LinphoneCore - * @param ev LinphoneEvent object representing the subscription context. - * @param state actual state of the subscription. - */ - void subscriptionStateChanged(LinphoneCore lc, LinphoneEvent ev, SubscriptionState state); - - /** - * Notifies of an incoming NOTIFY received. - * @param lc the linphoneCore - * @param ev a LinphoneEvent representing the subscription context for which this notify belongs, or null if it is a NOTIFY out of of any subscription. - * @param eventName the event name - * @param content content of the NOTIFY request. - */ - void notifyReceived(LinphoneCore lc, LinphoneEvent ev, String eventName, LinphoneContent content); - /** - * Notifies about outgoing generic publish states. - * @param lc the LinphoneCore - * @param ev a LinphoneEvent representing the publish, typically created by {@link LinphoneCore#publish} - * @param state the publish state - */ - void publishStateChanged(LinphoneCore lc, LinphoneEvent ev, PublishState state); - - /** - * Notifies the changes about the remote provisioning step - * @param lc the LinphoneCore - * @param state the RemoteProvisioningState - * @param message the error message if state == Failed - */ - void configuringStatus(LinphoneCore lc, RemoteProvisioningState state, - String message); - - /**< @Deprecated Notifies the application that it should show up - * @return */ - void show(LinphoneCore lc); - /**< @Deprecated Callback that notifies various events with human readable text. - * @return */ - void displayStatus(LinphoneCore lc,String message); + /** + * Report status change for a friend previously added to LinphoneCore. + * @param lc LinphoneCore + * @param lf updated LinphoneFriend + */ + void notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf); - /**< @Deprecated Callback to display a message to the user - * @return */ - void displayMessage(LinphoneCore lc,String message); + /** + * invoked when a new text message is received + * @param lc LinphoneCore + * @param room LinphoneChatRoom involved in this conversation. Can be be created by the framework in case the from is not present in any chat room. + * @param from LinphoneAddress from + * @param message incoming message + */ + void textReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneAddress from, String message); + + /** + * invoked when a new dtmf is received + * @param lc LinphoneCore + * @param call LinphoneCall involved in the dtmf sending + * @param dtmf value of the dtmf sent + */ + void dtmfReceived(LinphoneCore lc, LinphoneCall call, int dtmf); + + /** + * Invoked when echo cancalation calibration is completed + * @param lc LinphoneCore + * @param status + * @param delay_ms echo delay + * @param data + */ + void ecCalibrationStatus(LinphoneCore lc,LinphoneCore.EcCalibratorStatus status, int delay_ms, Object data); + + /** + * Report Notified message received for this identity. + * @param lc LinphoneCore + * @param call LinphoneCall in case the notify is part of a dialog, may be null + * @param from LinphoneAddress the message comes from + * @param event String the raw body of the notify event. + * + */ + void notifyReceived(LinphoneCore lc, LinphoneCall call, LinphoneAddress from, byte[] event); - /** @Deprecated Callback to display a warning to the user - * @return */ - void displayWarning(LinphoneCore lc,String message); + /** + * Notifies progress of a call transfer. + * @param lc the LinphoneCore + * @param call the call through which the transfer was sent. + * @param new_call_state the state of the call resulting of the transfer, at the other party. + **/ + void transferState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State new_call_state); + + /** + * Notifies an incoming INFO message. + * @param lc the LinphoneCore. + * @param info the info message + */ + void infoReceived(LinphoneCore lc, LinphoneCall call, LinphoneInfoMessage info); + + /** + * Notifies of subscription requests state changes, including new incoming subscriptions. + * @param lc the LinphoneCore + * @param ev LinphoneEvent object representing the subscription context. + * @param state actual state of the subscription. + */ + void subscriptionStateChanged(LinphoneCore lc, LinphoneEvent ev, SubscriptionState state); + + /** + * Notifies about outgoing generic publish states. + * @param lc the LinphoneCore + * @param ev a LinphoneEvent representing the publish, typically created by {@link LinphoneCore#publish} + * @param state the publish state + */ + void publishStateChanged(LinphoneCore lc, LinphoneEvent ev, PublishState state); + + /**< @Deprecated Notifies the application that it should show up + * @return */ + void show(LinphoneCore lc); + + /**< @Deprecated Callback that notifies various events with human readable text. + * @return */ + void displayStatus(LinphoneCore lc,String message); + + /**< @Deprecated Callback to display a message to the user + * @return */ + void displayMessage(LinphoneCore lc,String message); + + /** @Deprecated Callback to display a warning to the user + * @return */ + void displayWarning(LinphoneCore lc,String message); + + /** + * Callback to be notified about the transfer progress. + * @param lc the LinphoneCore + * @param message the LinphoneChatMessage + * @param content the LinphoneContent + * @param progress percentage of the transfer done + */ + void fileTransferProgressIndication(LinphoneCore lc, LinphoneChatMessage message, LinphoneContent content, int progress); + + /** + * Callback to be notified when new data has been received + * @param lc the LinphoneCore + * @param message the LinphoneChatMessage + * @param content the LinphoneContent + * @param buffer + * @param size + */ + void fileTransferRecv(LinphoneCore lc, LinphoneChatMessage message, LinphoneContent content, byte[] buffer, int size); + + /** + * Callback to be notified when new data needs to be sent + * @param lc the LinphoneCore + * @param message the LinphoneChatMessage + * @param content the LinphoneContent + * @param buffer + * @param size + * @return the number of bytes written into buffer + */ + int fileTransferSend(LinphoneCore lc, LinphoneChatMessage message, LinphoneContent content, ByteBuffer buffer, int size); + } - /** - * Callback to be notified about the transfer progress. - * @param lc the LinphoneCore - * @param message the LinphoneChatMessage - * @param content the LinphoneContent - * @param progress percentage of the transfer done - */ - void fileTransferProgressIndication(LinphoneCore lc, LinphoneChatMessage message, LinphoneContent content, int progress); + public interface LinphoneGlobalStateListener extends LinphoneCoreListener { + /** General State notification + * @param state LinphoneCore.State + * @return + * */ + void globalState(LinphoneCore lc,LinphoneCore.GlobalState state, String message); + } - /** - * Callback to be notified when new data has been received - * @param lc the LinphoneCore - * @param message the LinphoneChatMessage - * @param content the LinphoneContent - * @param buffer - * @param size - */ - void fileTransferRecv(LinphoneCore lc, LinphoneChatMessage message, LinphoneContent content, byte[] buffer, int size); + public interface LinphoneRegistrationStateListener extends LinphoneCoreListener { + /** + * Registration state notification + * */ + void registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, LinphoneCore.RegistrationState state, String smessage); + } - /** - * Callback to be notified when new data needs to be sent - * @param lc the LinphoneCore - * @param message the LinphoneChatMessage - * @param content the LinphoneContent - * @param buffer - * @param size - * @return the number of bytes written into buffer - */ - int fileTransferSend(LinphoneCore lc, LinphoneChatMessage message, LinphoneContent content, ByteBuffer buffer, int size); + public interface LinphoneRemoteProvisioningListener extends LinphoneCoreListener { + /** + * Notifies the changes about the remote provisioning step + * @param lc the LinphoneCore + * @param state the RemoteProvisioningState + * @param message the error message if state == Failed + */ + void configuringStatus(LinphoneCore lc, RemoteProvisioningState state, String message); + } + + public interface LinphoneMessageListener extends LinphoneCoreListener { + /** + * invoked when a new linphone chat message is received + * @param lc LinphoneCore + * @param room LinphoneChatRoom involved in this conversation. Can be be created by the framework in case the from is not present in any chat room. + * @param message incoming linphone chat message message + */ + void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message); + } + + public interface LinphoneCallStateListener extends LinphoneCoreListener { + /** Call State notification + * @param state LinphoneCall.State + * @return + * */ + void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message); + } + + public interface LinphoneCallEncryptionStateListener extends LinphoneCoreListener { + /** + * Callback to display change in encryption state. + * @param encrypted true if all streams of the call are encrypted + * @param authenticationToken token like ZRTP SAS that may be displayed to user + */ + void callEncryptionChanged(LinphoneCore lc, LinphoneCall call, boolean encrypted, String authenticationToken); + } + + public interface LinphoneNotifyListener extends LinphoneCoreListener { + /** + * Notifies of an incoming NOTIFY received. + * @param lc the linphoneCore + * @param ev a LinphoneEvent representing the subscription context for which this notify belongs, or null if it is a NOTIFY out of of any subscription. + * @param eventName the event name + * @param content content of the NOTIFY request. + */ + void notifyReceived(LinphoneCore lc, LinphoneEvent ev, String eventName, LinphoneContent content); + } + + public interface LinphoneComposingListener extends LinphoneCoreListener { + /** + * invoked when a composing notification is received + * @param lc LinphoneCore + * @param room LinphoneChatRoom involved in the conversation. + */ + void isComposingReceived(LinphoneCore lc, LinphoneChatRoom cr); + } } diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index ee360e13c..d5db2ad48 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -1291,4 +1291,16 @@ class LinphoneCoreImpl implements LinphoneCore { return null; } } + + private native void addListener(long nativePtr, LinphoneCoreListener listener); + @Override + public void addListener(LinphoneCoreListener listener) { + addListener(nativePtr, listener); + } + + private native void removeListener(long nativePtr, LinphoneCoreListener listener); + @Override + public void removeListener(LinphoneCoreListener listener) { + removeListener(nativePtr, listener); + } } From b06019c599bc17786e59ae4d17dd985160deb127 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 1 Dec 2014 14:26:27 +0100 Subject: [PATCH 246/249] Add some missing sources code to localization process --- po/POTFILES.in | 2 + po/POTFILES.skip | 3 + po/ar.po | 1946 ++++++++++++++++++++++++++++++++++++++++++++++ po/cs.po | 125 ++- po/de.po | 135 ++-- po/es.po | 112 +-- po/fr.po | 146 ++-- po/he.po | 100 ++- po/hu.po | 121 ++- po/it.po | 112 +-- po/ja.po | 135 ++-- po/nb_NO.po | 121 ++- po/nl.po | 66 +- po/pl.po | 85 +- po/pt_BR.po | 61 +- po/ru.po | 131 ++-- po/sr.po | 133 ++-- po/sv.po | 78 +- po/zh_CN.po | 118 +-- po/zh_TW.po | 121 ++- 20 files changed, 2721 insertions(+), 1130 deletions(-) create mode 100644 po/ar.po diff --git a/po/POTFILES.in b/po/POTFILES.in index 5d2aabf39..19003b0f6 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -40,3 +40,5 @@ coreapi/proxy.c coreapi/callbacks.c coreapi/linphonecall.c +coreapi/call_log.c +gtk/videowindow.c diff --git a/po/POTFILES.skip b/po/POTFILES.skip index 6b9ad1b55..32dcd19f2 100755 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -48,3 +48,6 @@ mediastreamer2/src/videofilters/winvideo2.c mediastreamer2/src/videofilters/x11video.c mediastreamer2/src/voip/ice.c build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Resources/AppResources.Designer.cs +build/wp8/LibLinphoneTester-wp8/Resources/AppResources.Designer.cs +mediastreamer2/build/wp8/mediastreamer2-tester-wp8/Resources/AppResources.Designer.cs +share/linphone.desktop.in diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 000000000..455a8df4c --- /dev/null +++ b/po/ar.po @@ -0,0 +1,1946 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# محيي الدين , 2014 +# محيي الدين , 2014 +msgid "" +msgstr "" +"Project-Id-Version: linphone-gtk\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"Last-Translator: Gautier Pelloux-Prayer \n" +"Language-Team: Arabic (http://www.transifex.com/projects/p/linphone-gtk/language/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 +#, c-format +msgid "Call %s" +msgstr "اتصل بـ %s" + +#: ../gtk/calllogs.c:149 ../gtk/friendlist.c:975 +#, c-format +msgid "Send text to %s" +msgstr "أرسل رسالة إلى %s" + +#: ../gtk/calllogs.c:232 +#, c-format +msgid "Recent calls (%i)" +msgstr "المكالمات الفائتة (%i)" + +#: ../gtk/calllogs.c:314 +msgid "n/a" +msgstr "—" + +#: ../gtk/calllogs.c:317 +msgid "Aborted" +msgstr "أُلغيت" + +#: ../gtk/calllogs.c:320 +msgid "Missed" +msgstr "فائتة" + +#: ../gtk/calllogs.c:323 +msgid "Declined" +msgstr "مرفوضة" + +#: ../gtk/calllogs.c:329 +#, c-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i دقيقة" +msgstr[1] "دقيقة واحدة" +msgstr[2] "دقيقتان" +msgstr[3] "%i دقائق" +msgstr[4] "%i دقيقة" +msgstr[5] "%i دقيقة" + +#: ../gtk/calllogs.c:332 +#, c-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i ثانية" +msgstr[1] "ثانية واحدة" +msgstr[2] "ثانيتان" +msgstr[3] "%i ثوان" +msgstr[4] "%i ثانية" +msgstr[5] "%i ثانية" + +#: ../gtk/calllogs.c:337 +#, c-format +msgid "" +"%s\tQuality: %s\n" +"%s\t%s\t" +msgstr "%s\tالجودة : %s\n%s\t%s\t" + +#: ../gtk/calllogs.c:341 +#, c-format +msgid "%s\t%s" +msgstr "%s\t%s" + +#: ../gtk/conference.c:38 ../gtk/main.ui.h:13 +msgid "Conference" +msgstr "اجتماع" + +#: ../gtk/conference.c:46 +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 "أيقونة غير موجودة : %s" + +#: ../gtk/chat.c:367 ../gtk/friendlist.c:924 +msgid "Invalid sip contact !" +msgstr "جهة اتصال sip غير صالحة !" + +#: ../gtk/main.c:107 +msgid "log to stdout some debug information while running." +msgstr "أظهِرْ بعض معلومات التنقيح خلال التشغيل." + +#: ../gtk/main.c:114 +msgid "path to a file to write logs into." +msgstr "الدليل إلى الملف الذي سيُكتَب فيه سجل الوقائع." + +#: ../gtk/main.c:121 +msgid "Start linphone with video disabled." +msgstr "ابدأ لِنْفُونْ لكن دون تفعيل الفيديو." + +#: ../gtk/main.c:128 +msgid "Start only in the system tray, do not show the main interface." +msgstr "شغِّله مُصغَّرا، ولا تُظهِر الواجهة الرئيسية." + +#: ../gtk/main.c:135 +msgid "address to call right now" +msgstr "العنوان المُراد الاتصال به الآن" + +#: ../gtk/main.c:142 +msgid "if set automatically answer incoming calls" +msgstr "إذا تم التفعيل، سيجيب تلقائيا عن المكالمات الواردة" + +#: ../gtk/main.c:149 +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:156 +msgid "Configuration file" +msgstr "ملف التهيئة" + +#: ../gtk/main.c:163 +msgid "Run the audio assistant" +msgstr "ابدأ مرشد الصوت" + +#: ../gtk/main.c:1085 +#, 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" +"If you answer no, this person will be temporarily blacklisted." +msgstr "%s يريد إضافتك إلى جهة اتصاله.\nهل تريد السماح له برؤية معلومات حضورك وكذا إضافته إلى جهة اتصالك أيضا ؟ إذا أجبت ب لا، سيُحظَر هذا الشخص مؤقتا." + +#: ../gtk/main.c:1162 +#, c-format +msgid "" +"Please enter your password for username %s\n" +" at realm %s:" +msgstr "ادخل كلمة السر ل %s\n في نطاق %s:" + +#: ../gtk/main.c:1283 +msgid "Call error" +msgstr "خطأ في المكالمة" + +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 +msgid "Call ended" +msgstr "إنتهت المكالمة" + +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 +msgid "Incoming call" +msgstr "مكالمة واردة" + +#: ../gtk/main.c:1291 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +msgid "Answer" +msgstr "أجِبْ" + +#: ../gtk/main.c:1293 ../gtk/main.ui.h:6 +msgid "Decline" +msgstr "ارفضْ" + +#: ../gtk/main.c:1299 +msgid "Call paused" +msgstr "المكالمة متوقفة" + +#: ../gtk/main.c:1299 +#, c-format +msgid "by %s" +msgstr "بواسطة %s" + +#: ../gtk/main.c:1366 +#, c-format +msgid "%s proposed to start video. Do you accept ?" +msgstr "يود %s تشغيل الفيديو. هل تقبل ذلك ؟" + +#: ../gtk/main.c:1528 +msgid "Website link" +msgstr "وصلة إلى الموقع وِبْ" + +#: ../gtk/main.c:1577 +msgid "Linphone - a video internet phone" +msgstr "لِنْفُونْ - الهاتف المرئي عبر الإنترنت" + +#: ../gtk/main.c:1669 +#, c-format +msgid "%s (Default)" +msgstr "%s (افتراضي)" + +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#, c-format +msgid "We are transferred to %s" +msgstr "التحويل إلى %s" + +#: ../gtk/main.c:2016 +msgid "" +"No sound cards have been detected on this computer.\n" +"You won't be able to send or receive audio calls." +msgstr "لا وجود للوحة الصوت على هذا الحاسوب.\nلن تتمكن من تلقي أو إجراء أي مكالمة." + +#: ../gtk/main.c:2157 +msgid "A free SIP video-phone" +msgstr "هاتف SIP المرئي الحر" + +#: ../gtk/friendlist.c:505 +msgid "Add to addressbook" +msgstr "أضف إلى دفتر العناوين" + +#: ../gtk/friendlist.c:691 +msgid "Presence status" +msgstr "معلومة الحضور" + +#: ../gtk/friendlist.c:709 ../gtk/propertybox.c:552 ../gtk/contact.ui.h:1 +msgid "Name" +msgstr "الإسم" + +#: ../gtk/friendlist.c:721 +msgid "Call" +msgstr "اتصل" + +#: ../gtk/friendlist.c:726 +msgid "Chat" +msgstr "محادثة" + +#: ../gtk/friendlist.c:756 +#, c-format +msgid "Search in %s directory" +msgstr "ابحث في دليل %s" + +#: ../gtk/friendlist.c:976 +#, c-format +msgid "Edit contact '%s'" +msgstr "حرر جهة الاتصال '%s'" + +#: ../gtk/friendlist.c:977 +#, c-format +msgid "Delete contact '%s'" +msgstr "احذف جهة الاتصال '%s'" + +#: ../gtk/friendlist.c:978 +#, c-format +msgid "Delete chat history of '%s'" +msgstr "احذف تاريخ دردشات '%s'" + +#: ../gtk/friendlist.c:1029 +#, c-format +msgid "Add new contact from %s directory" +msgstr "اضف جهة اتصال انطلاقا من الدليل %s" + +#: ../gtk/propertybox.c:558 +msgid "Rate (Hz)" +msgstr "التردد (هرتز)" + +#: ../gtk/propertybox.c:564 +msgid "Status" +msgstr "الحالة" + +#: ../gtk/propertybox.c:570 +msgid "IP Bitrate (kbit/s)" +msgstr "صبيب IP (ك.بِتْ/ثانية)" + +#: ../gtk/propertybox.c:577 +msgid "Parameters" +msgstr "الإعدادات" + +#: ../gtk/propertybox.c:620 ../gtk/propertybox.c:763 +msgid "Enabled" +msgstr "مفعَّل" + +#: ../gtk/propertybox.c:622 ../gtk/propertybox.c:763 +msgid "Disabled" +msgstr "غير مفعَّل" + +#: ../gtk/propertybox.c:809 +msgid "Account" +msgstr "الحساب" + +#: ../gtk/propertybox.c:1072 +msgid "English" +msgstr "الإنجليزية" + +#: ../gtk/propertybox.c:1073 +msgid "French" +msgstr "الفرنسية" + +#: ../gtk/propertybox.c:1074 +msgid "Swedish" +msgstr "السويدية" + +#: ../gtk/propertybox.c:1075 +msgid "Italian" +msgstr "الإيطالية" + +#: ../gtk/propertybox.c:1076 +msgid "Spanish" +msgstr "الإسبانية" + +#: ../gtk/propertybox.c:1077 +msgid "Brazilian Portugese" +msgstr "البرتغالية البرازيلية" + +#: ../gtk/propertybox.c:1078 +msgid "Polish" +msgstr "البولونية" + +#: ../gtk/propertybox.c:1079 +msgid "German" +msgstr "الألمانية" + +#: ../gtk/propertybox.c:1080 +msgid "Russian" +msgstr "الروسية" + +#: ../gtk/propertybox.c:1081 +msgid "Japanese" +msgstr "اليابانية" + +#: ../gtk/propertybox.c:1082 +msgid "Dutch" +msgstr "الهولندية" + +#: ../gtk/propertybox.c:1083 +msgid "Hungarian" +msgstr "الهنغارية" + +#: ../gtk/propertybox.c:1084 +msgid "Czech" +msgstr "التشيكية" + +#: ../gtk/propertybox.c:1085 +msgid "Chinese" +msgstr "الصينية المبسَّطة" + +#: ../gtk/propertybox.c:1086 +msgid "Traditional Chinese" +msgstr "الصينية التقليدية" + +#: ../gtk/propertybox.c:1087 +msgid "Norwegian" +msgstr "النرويجية" + +#: ../gtk/propertybox.c:1088 +msgid "Hebrew" +msgstr "العبرية" + +#: ../gtk/propertybox.c:1089 +msgid "Serbian" +msgstr "الصربية" + +#: ../gtk/propertybox.c:1156 +msgid "" +"You need to restart linphone for the new language selection to take effect." +msgstr "يجب إعادة تشغيل لِنْفُونْ لكي تٌفعَّل اللغة المختارة." + +#: ../gtk/propertybox.c:1234 +msgid "None" +msgstr "بدون" + +#: ../gtk/propertybox.c:1238 +msgid "SRTP" +msgstr "SRTP" + +#: ../gtk/propertybox.c:1244 +msgid "ZRTP" +msgstr "ZRTP" + +#: ../gtk/update.c:80 +#, c-format +msgid "" +"A more recent version is availalble from %s.\n" +"Would you like to open a browser to download it ?" +msgstr "يوجد إصدار حديث من طرف %s.\nهل تريد فتح المتصفح لتنزيله ؟" + +#: ../gtk/update.c:91 +msgid "You are running the lastest version." +msgstr "أنت تستخدم الإصدار الأحدث." + +#: ../gtk/buddylookup.c:85 +msgid "Firstname, Lastname" +msgstr "الإسم، اللقب" + +#: ../gtk/buddylookup.c:160 +msgid "Error communicating with server." +msgstr "خطأ في الاتصال مع الخادم." + +#: ../gtk/buddylookup.c:164 +msgid "Connecting..." +msgstr "يجري الاتصال..." + +#: ../gtk/buddylookup.c:168 +msgid "Connected" +msgstr "متصل" + +#: ../gtk/buddylookup.c:172 +msgid "Receiving data..." +msgstr "يجري تلقي البيانات..." + +#: ../gtk/buddylookup.c:180 +#, c-format +msgid "Found %i contact" +msgid_plural "Found %i contacts" +msgstr[0] "لم يُعثَر على أي جهة اتصال" +msgstr[1] "عُثِر على جهة اتصال واحدة" +msgstr[2] "عُثِر على جهتي اتصال" +msgstr[3] "عُثِر على %i جهات اتصال" +msgstr[4] "عُثِر على %i جهة اتصال" +msgstr[5] "عُثِر على %i جهة اتصال" + +#: ../gtk/setupwizard.c:34 +msgid "" +"Welcome!\n" +"This assistant will help you to use a SIP account for your calls." +msgstr "مرحبا !\nسيمكنك هذا المرشد من إعداد حسابك SIP لإجراء المكالمات." + +#: ../gtk/setupwizard.c:43 +msgid "Create an account on linphone.org" +msgstr "إنشاء حساب في linphone.org" + +#: ../gtk/setupwizard.c:44 +msgid "I have already a linphone.org account and I just want to use it" +msgstr "أتوفر مسبقا على حساب في linphone.org وأريد فقط استخدامه" + +#: ../gtk/setupwizard.c:45 +msgid "I have already a sip account and I just want to use it" +msgstr "أتوفر مسبقا على حساب sip وأريد فقط استخدامه" + +#: ../gtk/setupwizard.c:46 +msgid "I want to specify a remote configuration URI" +msgstr "أريد تحديد عنوان التهيئة عن بعد" + +#: ../gtk/setupwizard.c:89 +msgid "Enter your linphone.org username" +msgstr "أدخِلْ إسم المستخدم في linphone.org" + +#: ../gtk/setupwizard.c:102 ../gtk/parameters.ui.h:79 ../gtk/ldap.ui.h:4 +msgid "Username:" +msgstr "إسم المستخدم :" + +#: ../gtk/setupwizard.c:104 ../gtk/password.ui.h:4 ../gtk/ldap.ui.h:5 +msgid "Password:" +msgstr "كلمة السر :" + +#: ../gtk/setupwizard.c:124 +msgid "Enter your account informations" +msgstr "أدخل معلومات حسابك" + +#: ../gtk/setupwizard.c:140 +msgid "Username*" +msgstr "إسم المستخدم*" + +#: ../gtk/setupwizard.c:141 +msgid "Password*" +msgstr "كلمة السر*" + +#: ../gtk/setupwizard.c:144 +msgid "Domain*" +msgstr "النطاق*" + +#: ../gtk/setupwizard.c:145 +msgid "Proxy" +msgstr "الوكيل" + +#: ../gtk/setupwizard.c:317 +msgid "(*) Required fields" +msgstr "(*) حقول ضرورية" + +#: ../gtk/setupwizard.c:318 +msgid "Username: (*)" +msgstr "إسم المستخدم* : (*)" + +#: ../gtk/setupwizard.c:320 +msgid "Password: (*)" +msgstr "كلمة السر* : (*)" + +#: ../gtk/setupwizard.c:322 +msgid "Email: (*)" +msgstr "البريد الالكتروني : (*)" + +#: ../gtk/setupwizard.c:324 +msgid "Confirm your password: (*)" +msgstr "أكِّد كلمة السر : (*)" + +#: ../gtk/setupwizard.c:338 +msgid "Keep me informed with linphone updates" +msgstr "أحطني علما بتحديثات لِنْفُونْ" + +#: ../gtk/setupwizard.c:394 +msgid "" +"Error, account not validated, username already used or server unreachable.\n" +"Please go back and try again." +msgstr "خطأ، لم يتم تأكيد الحساب، إسم المستخدم سبق استخدامه أو تعذر الوصول للخادم.\nيُرجى إعادة المحاولة لاحقا." + +#: ../gtk/setupwizard.c:405 +msgid "Thank you. Your account is now configured and ready for use." +msgstr "شكرا لك، لقد جرت تهيئة حسابك وهو الآن قابل للاستخدام." + +#: ../gtk/setupwizard.c:413 +msgid "" +"Please validate your account by clicking on the link we just sent you by email.\n" +"Then come back here and press Next button." +msgstr "يُرجى تأكيد حسابك وذلك بالضغط على الوصلة التي أرسلناها لك بالبريد الإلكتروني.\nثم ارجع إلى هنا واضغط على زر التالي." + +#: ../gtk/setupwizard.c:602 +msgid "SIP account configuration assistant" +msgstr "مرشد تهيئة حساب SIP" + +#: ../gtk/setupwizard.c:620 +msgid "Welcome to the account setup assistant" +msgstr "مرحبا بك في مرشد إعداد الحساب" + +#: ../gtk/setupwizard.c:625 +msgid "Account setup assistant" +msgstr "مرشد تهيئة الحساب" + +#: ../gtk/setupwizard.c:631 +msgid "Configure your account (step 1/1)" +msgstr "تهيئة حسابك (المرحلة 1/1)" + +#: ../gtk/setupwizard.c:636 +msgid "Enter your sip username (step 1/1)" +msgstr "أدخل إسم المستخدم SIP لديك (المرحلة 1/1)" + +#: ../gtk/setupwizard.c:640 +msgid "Enter account information (step 1/2)" +msgstr "أدخل معلومات حسابك (المرحلة 1/2)" + +#: ../gtk/setupwizard.c:649 +msgid "Validation (step 2/2)" +msgstr "تأكيد (المرحلة 2/2)" + +#: ../gtk/setupwizard.c:654 +msgid "Error" +msgstr "خطأ" + +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +msgid "Terminating" +msgstr "في طور الإنهاء" + +#: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 +#, c-format +msgid "Call #%i" +msgstr "مكالمة #%i" + +#: ../gtk/incall_view.c:155 +#, c-format +msgid "Transfer to call #%i with %s" +msgstr "حوِّل إلى المكالمة #%i مع %s" + +#: ../gtk/incall_view.c:211 ../gtk/incall_view.c:214 +msgid "Not used" +msgstr "غير مستخدَم" + +#: ../gtk/incall_view.c:221 +msgid "ICE not activated" +msgstr "ICE غير مفعَّل" + +#: ../gtk/incall_view.c:223 +msgid "ICE failed" +msgstr "فَشِل ICE" + +#: ../gtk/incall_view.c:225 +msgid "ICE in progress" +msgstr "تجري مساومة ICE" + +#: ../gtk/incall_view.c:227 +msgid "Going through one or more NATs" +msgstr "المرور عبد واحد أو عدة NAT" + +#: ../gtk/incall_view.c:229 +msgid "Direct" +msgstr "مباشر" + +#: ../gtk/incall_view.c:231 +msgid "Through a relay server" +msgstr "عبر خادم بديل" + +#: ../gtk/incall_view.c:239 +msgid "uPnP not activated" +msgstr "uPnP غير مفعَّل" + +#: ../gtk/incall_view.c:241 +msgid "uPnP in progress" +msgstr "يجري uPnP" + +#: ../gtk/incall_view.c:243 +msgid "uPnp not available" +msgstr "uPnP غير متوفر" + +#: ../gtk/incall_view.c:245 +msgid "uPnP is running" +msgstr "uPnP مشغَّل" + +#: ../gtk/incall_view.c:247 +msgid "uPnP failed" +msgstr "فَشِل uPnP" + +#: ../gtk/incall_view.c:257 ../gtk/incall_view.c:258 +msgid "Direct or through server" +msgstr "مباشرة أو عبر خادم" + +#: ../gtk/incall_view.c:267 ../gtk/incall_view.c:279 +#, c-format +msgid "" +"download: %f\n" +"upload: %f (kbit/s)" +msgstr "التنزيل % f\nالرفع : %f (ك.بِتْ/الثانية)" + +#: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 +#, c-format +msgid "%ix%i @ %f fps" +msgstr "%ix%i @ %f fps" + +#: ../gtk/incall_view.c:304 +#, c-format +msgid "%.3f seconds" +msgstr "%.3f ثانية" + +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 +msgid "Hang up" +msgstr "ضع السماعة" + +#: ../gtk/incall_view.c:511 +msgid "Calling..." +msgstr "يجري الاتصال..." + +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +msgid "00::00::00" +msgstr "00::00::00" + +#: ../gtk/incall_view.c:525 +msgid "Incoming call" +msgstr "المكالمة الواردة" + +#: ../gtk/incall_view.c:562 +msgid "good" +msgstr "جيدة" + +#: ../gtk/incall_view.c:564 +msgid "average" +msgstr "متوسطة" + +#: ../gtk/incall_view.c:566 +msgid "poor" +msgstr "ضعيفة" + +#: ../gtk/incall_view.c:568 +msgid "very poor" +msgstr "ضعيفة جدا" + +#: ../gtk/incall_view.c:570 +msgid "too bad" +msgstr "سيِّئة جيدا" + +#: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 +msgid "unavailable" +msgstr "غير متاحة" + +#: ../gtk/incall_view.c:679 +msgid "Secured by SRTP" +msgstr "آمن بواسطة SRTP" + +#: ../gtk/incall_view.c:685 +#, c-format +msgid "Secured by ZRTP - [auth token: %s]" +msgstr "آمن بواسطة ZRTP - [شارة الهوية : %s]" + +#: ../gtk/incall_view.c:691 +msgid "Set unverified" +msgstr "أكِّدْ عدم تحقُّقك" + +#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +msgid "Set verified" +msgstr "أكِّدْ تحقُّقَك" + +#: ../gtk/incall_view.c:722 +msgid "In conference" +msgstr "في اجتماع" + +#: ../gtk/incall_view.c:722 +msgid "In call" +msgstr "المكالمة جارية" + +#: ../gtk/incall_view.c:758 +msgid "Paused call" +msgstr "المكالمة متوقفة مؤقتا" + +#: ../gtk/incall_view.c:794 +msgid "Call ended." +msgstr "إنتهت المكالمة." + +#: ../gtk/incall_view.c:825 +msgid "Transfer in progress" +msgstr "يجري الإرسال" + +#: ../gtk/incall_view.c:828 +msgid "Transfer done." +msgstr "انتهى الإرسال." + +#: ../gtk/incall_view.c:831 +msgid "Transfer failed." +msgstr "فَشِل الإرسال." + +#: ../gtk/incall_view.c:875 +msgid "Resume" +msgstr "استأنِفْ" + +#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +msgid "Pause" +msgstr "إيقاف مؤقت" + +#: ../gtk/incall_view.c:948 +#, c-format +msgid "" +"Recording into\n" +"%s %s" +msgstr "يسجل في\n%s %s" + +#: ../gtk/incall_view.c:948 +msgid "(Paused)" +msgstr "(متوقف)" + +#: ../gtk/loginframe.c:88 +#, c-format +msgid "Please enter login information for %s" +msgstr "يُرجى إدخال معلومات الولوج ل %s" + +#: ../gtk/config-fetching.c:57 +#, c-format +msgid "fetching from %s" +msgstr "يجلب من %s" + +#: ../gtk/config-fetching.c:73 +#, c-format +msgid "Downloading of remote configuration from %s failed." +msgstr "فَشِل تنزيل التهيئة عن بعد من %s ." + +#: ../gtk/audio_assistant.c:98 +msgid "No voice detected" +msgstr "لم يكتشف صوتاً" + +#: ../gtk/audio_assistant.c:99 +msgid "Too low" +msgstr "خافِت" + +#: ../gtk/audio_assistant.c:100 +msgid "Good" +msgstr "جيد" + +#: ../gtk/audio_assistant.c:101 +msgid "Too loud" +msgstr "صاخب" + +#: ../gtk/audio_assistant.c:318 +msgid "" +"Welcome!\n" +"This assistant will help you to configure audio settings for Linphone" +msgstr "مرحبا !\nسيمكنك هذا المرشد من تهيئة إعدادات الصوت للِنْفُونْ" + +#: ../gtk/audio_assistant.c:328 +msgid "Capture device" +msgstr "جهاز الالتقاط" + +#: ../gtk/audio_assistant.c:329 +msgid "Recorded volume" +msgstr "الحجم المسجَّل" + +#: ../gtk/audio_assistant.c:333 +msgid "No voice" +msgstr "صامت" + +#: ../gtk/audio_assistant.c:369 +msgid "Playback device" +msgstr "جهاز السماع" + +#: ../gtk/audio_assistant.c:370 +msgid "Play three beeps" +msgstr "شغِّل ثلاث رنَّات" + +#: ../gtk/audio_assistant.c:403 +msgid "Press the record button and say some words" +msgstr "اضغط على زر التسجيل وانطق ببعض الكلمات" + +#: ../gtk/audio_assistant.c:404 +msgid "Listen to your record voice" +msgstr "استمع لصوتك المسجَّل" + +#: ../gtk/audio_assistant.c:433 +msgid "Let's start Linphone now" +msgstr "لنُشغِّل لِنْفُونْ الآن" + +#: ../gtk/audio_assistant.c:496 +msgid "Audio Assistant" +msgstr "مرشد الصوت" + +#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +msgid "Audio assistant" +msgstr "مرشد الصوت" + +#: ../gtk/audio_assistant.c:511 +msgid "Mic Gain calibration" +msgstr "معايرة كسب الميكروفون" + +#: ../gtk/audio_assistant.c:517 +msgid "Speaker volume calibration" +msgstr "معايرة شدة مكبر الصوت" + +#: ../gtk/audio_assistant.c:522 +msgid "Record and Play" +msgstr "سَجِّل واقرأ " + +#: ../gtk/main.ui.h:1 +msgid "Callee name" +msgstr "إسم المنادَى" + +#: ../gtk/main.ui.h:2 +msgid "Send" +msgstr "أرسِلْ" + +#: ../gtk/main.ui.h:3 +msgid "End conference" +msgstr "أنْهِ الاجتماع" + +#: ../gtk/main.ui.h:7 +msgid "Record this call to an audio file" +msgstr "سَجِّل هذه المكالمة في ملف صوتي" + +#: ../gtk/main.ui.h:8 +msgid "Video" +msgstr "مرئي" + +#: ../gtk/main.ui.h:10 +msgid "Mute" +msgstr "اصمُتْ" + +#: ../gtk/main.ui.h:11 +msgid "Transfer" +msgstr "إرسال" + +#: ../gtk/main.ui.h:14 +msgid "In call" +msgstr "المكالمة جارية" + +#: ../gtk/main.ui.h:15 +msgid "Duration" +msgstr "المدة" + +#: ../gtk/main.ui.h:16 +msgid "Call quality rating" +msgstr "تقييم جودة المكالمة" + +#: ../gtk/main.ui.h:17 +msgid "All users" +msgstr "كل المستخدمين" + +#: ../gtk/main.ui.h:18 +msgid "Online users" +msgstr "المستخدمون المتصلون" + +#: ../gtk/main.ui.h:19 +msgid "ADSL" +msgstr "ADSL" + +#: ../gtk/main.ui.h:20 +msgid "Fiber Channel" +msgstr "قناة الألياف الضوئية" + +#: ../gtk/main.ui.h:21 +msgid "Default" +msgstr "افتراضي" + +#: ../gtk/main.ui.h:22 +msgid "_Options" +msgstr "الخ_يارات" + +#: ../gtk/main.ui.h:23 +msgid "Set configuration URI" +msgstr "عنوان URI للتهيئة" + +#: ../gtk/main.ui.h:24 +msgid "Always start video" +msgstr "شغِّل الفيديو دائما" + +#: ../gtk/main.ui.h:25 +msgid "Enable self-view" +msgstr "تفعيل رؤية نفسي" + +#: ../gtk/main.ui.h:26 +msgid "_Help" +msgstr "_مساعدة" + +#: ../gtk/main.ui.h:27 +msgid "Show debug window" +msgstr "أظهِر نافذة التنقيح" + +#: ../gtk/main.ui.h:28 +msgid "_Homepage" +msgstr "موق_ع الوِبْ" + +#: ../gtk/main.ui.h:29 +msgid "Check _Updates" +msgstr "تحقق من التح_ديثات" + +#: ../gtk/main.ui.h:30 +msgid "Account assistant" +msgstr "مرشد الحساب" + +#: ../gtk/main.ui.h:32 +msgid "SIP address or phone number:" +msgstr "عنوان SIP أو رقم الهاتف :" + +#: ../gtk/main.ui.h:33 +msgid "Initiate a new call" +msgstr "ابدأ مكالمة جديدة" + +#: ../gtk/main.ui.h:34 +msgid "Contacts" +msgstr "جهات الاتصال" + +#: ../gtk/main.ui.h:35 +msgid "Search" +msgstr "بحث" + +#: ../gtk/main.ui.h:36 +msgid "Add contacts from directory" +msgstr "إضافة جهات الاتصال من الدليل" + +#: ../gtk/main.ui.h:37 +msgid "Add contact" +msgstr "إضافة جهة الاتصال" + +#: ../gtk/main.ui.h:38 +msgid "Recent calls" +msgstr "المكالمات السابقة" + +#: ../gtk/main.ui.h:39 +msgid "My current identity:" +msgstr "هويتي الحالية :" + +#: ../gtk/main.ui.h:40 ../gtk/tunnel_config.ui.h:7 +msgid "Username" +msgstr "إسم المستخدم" + +#: ../gtk/main.ui.h:41 ../gtk/tunnel_config.ui.h:8 +msgid "Password" +msgstr "كلمة السر" + +#: ../gtk/main.ui.h:42 +msgid "Internet connection:" +msgstr "الاتصال بالإنترنت :" + +#: ../gtk/main.ui.h:43 +msgid "Automatically log me in" +msgstr "سَجِّل دخولي تلقائيا" + +#: ../gtk/main.ui.h:44 ../gtk/password.ui.h:3 +msgid "UserID" +msgstr "مُعرِّف المستخدم" + +#: ../gtk/main.ui.h:45 +msgid "Login information" +msgstr "معلومات الولوج" + +#: ../gtk/main.ui.h:46 +msgid "Welcome!" +msgstr "مرحبا !" + +#: ../gtk/main.ui.h:47 +msgid "Delete" +msgstr "احذف" + +#: ../gtk/about.ui.h:1 +msgid "About Linphone" +msgstr "حول لِنْفُونْ" + +#: ../gtk/about.ui.h:2 +msgid "(C) Belledonne Communications, 2010\n" +msgstr "(C) Belledonne Communications, 2010\n" + +#: ../gtk/about.ui.h:4 +msgid "An internet video phone using the standard SIP (rfc3261) protocol." +msgstr "الهاتف المرئي للإنترنت الموافق للبروتوكول المعياري SIP (rfc3261)." + +#: ../gtk/about.ui.h:5 +msgid "" +"fr: Simon Morlat\n" +"en: Simon Morlat and Delphine Perreau\n" +"it: Alberto Zanoni \n" +"de: Jean-Jacques Sarton \n" +"sv: Daniel Nylander \n" +"es: Jesus Benitez \n" +"ja: YAMAGUCHI YOSHIYA \n" +"pt_BR: Rafael Caesar Lenzi \n" +"pl: Robert Nasiadek \n" +"cs: Petr Pisar \n" +"hu: anonymous\n" +"he: Eli Zaretskii \n" +msgstr "fr: Simon Morlat\nen: Simon Morlat and Delphine Perreau\nit: Alberto Zanoni \nde: Jean-Jacques Sarton \nsv: Daniel Nylander \nes: Jesus Benitez \nja: YAMAGUCHI YOSHIYA \npt_BR: Rafael Caesar Lenzi \npl: Robert Nasiadek \ncs: Petr Pisar \nhu: anonymous\nhe: Eli Zaretskii \nar: Muhiyeddine Cherik \n" + +#: ../gtk/contact.ui.h:2 +msgid "SIP Address" +msgstr "عنوان SIP" + +#: ../gtk/contact.ui.h:3 +msgid "Show this contact presence status" +msgstr "رؤية حالة حضور جهة الاتصال هذه" + +#: ../gtk/contact.ui.h:4 +msgid "Allow this contact to see my presence status" +msgstr "السماح لجهة الاتصال هذه برؤية حالة حضوري" + +#: ../gtk/contact.ui.h:5 +msgid "Contact information" +msgstr "معلومات جهة الاتصال" + +#: ../gtk/log.ui.h:1 +msgid "Linphone debug window" +msgstr "نافذة تنقيح لِنْفُونْ" + +#: ../gtk/log.ui.h:2 +msgid "Scroll to end" +msgstr "مرِّر إلى الآخر" + +#: ../gtk/password.ui.h:1 +msgid "Linphone - Authentication required" +msgstr "لِنْفُونْ - يجب التحقق من الهوية" + +#: ../gtk/password.ui.h:2 +msgid "Please enter the domain password" +msgstr "أدخل كلمة سر النطاق" + +#: ../gtk/call_logs.ui.h:1 +msgid "Call history" +msgstr "تاريخ المكالمات" + +#: ../gtk/call_logs.ui.h:2 +msgid "Clear all" +msgstr "أفْرِغ الكل" + +#: ../gtk/call_logs.ui.h:3 +msgid "Call back" +msgstr "إعادة الاتصال" + +#: ../gtk/sip_account.ui.h:1 +msgid "Linphone - Configure a SIP account" +msgstr "لِنْفُونْ - تهيئة حساب SIP" + +#: ../gtk/sip_account.ui.h:2 +msgid "Your SIP identity:" +msgstr "هوية SIP لديك :" + +#: ../gtk/sip_account.ui.h:3 +msgid "Looks like sip:@" +msgstr "يشبه sip:@" + +#: ../gtk/sip_account.ui.h:4 +msgid "sip:" +msgstr "sip:" + +#: ../gtk/sip_account.ui.h:5 +msgid "SIP Proxy address:" +msgstr "عنوان وكيل SIP :" + +#: ../gtk/sip_account.ui.h:6 +msgid "Looks like sip:" +msgstr "يشبه sip:" + +#: ../gtk/sip_account.ui.h:7 +msgid "Registration duration (sec):" +msgstr "مدة التسجيل (بالثواني) :" + +#: ../gtk/sip_account.ui.h:8 +msgid "Contact params (optional):" +msgstr "إعدادات جهة الاتصال (اختيارية) :" + +#: ../gtk/sip_account.ui.h:9 +msgid "AVPF regular RTCP interval (sec):" +msgstr "مجال RTCP الاعتيادي ل AVPF (بالثواني) :" + +#: ../gtk/sip_account.ui.h:10 +msgid "Route (optional):" +msgstr "التوجيه (اختياري) :" + +#: ../gtk/sip_account.ui.h:11 +msgid "Transport" +msgstr "النقل" + +#: ../gtk/sip_account.ui.h:12 +msgid "Register" +msgstr "التسجيل" + +#: ../gtk/sip_account.ui.h:13 +msgid "Publish presence information" +msgstr "انشر معلومات الحضور" + +#: ../gtk/sip_account.ui.h:14 +msgid "Enable AVPF" +msgstr "فعِّل AVPF " + +#: ../gtk/sip_account.ui.h:15 +msgid "Configure a SIP account" +msgstr "تهيئة حساب SIP" + +#: ../gtk/parameters.ui.h:1 +msgid "anonymous" +msgstr "مجهول" + +#: ../gtk/parameters.ui.h:2 +msgid "GSSAPI" +msgstr "GSSAPI" + +#: ../gtk/parameters.ui.h:3 +msgid "SASL" +msgstr "SASL" + +#: ../gtk/parameters.ui.h:4 +msgid "default soundcard" +msgstr "لوحة الصوت الافتراضية" + +#: ../gtk/parameters.ui.h:5 +msgid "a sound card" +msgstr "لوحة الصوت" + +#: ../gtk/parameters.ui.h:6 +msgid "default camera" +msgstr "الكاميرا الافتراضية" + +#: ../gtk/parameters.ui.h:7 +msgid "CIF" +msgstr "CIF" + +#: ../gtk/parameters.ui.h:8 +msgid "Audio codecs" +msgstr "مرمازات الصوت" + +#: ../gtk/parameters.ui.h:9 +msgid "Video codecs" +msgstr "مرمازات الفيديو" + +#: ../gtk/parameters.ui.h:10 +msgid "C" +msgstr "C" + +#: ../gtk/parameters.ui.h:11 +msgid "SIP (UDP)" +msgstr "SIP (UDP)" + +#: ../gtk/parameters.ui.h:12 +msgid "SIP (TCP)" +msgstr "SIP (TCP)" + +#: ../gtk/parameters.ui.h:13 +msgid "SIP (TLS)" +msgstr "SIP (TLS)" + +#: ../gtk/parameters.ui.h:14 +msgid "Settings" +msgstr "الإعدادات" + +#: ../gtk/parameters.ui.h:15 +msgid "Set Maximum Transmission Unit:" +msgstr "حدِّد Maximum Transmission Unit :" + +#: ../gtk/parameters.ui.h:16 +msgid "Send DTMFs as SIP info" +msgstr "أرسِل الأرقام الهاتفية على هيئة SIP INFO" + +#: ../gtk/parameters.ui.h:17 +msgid "Use IPv6 instead of IPv4" +msgstr "استخدم IPv6 عوضا عن IPv4" + +#: ../gtk/parameters.ui.h:18 +msgid "Transport" +msgstr "النقل" + +#: ../gtk/parameters.ui.h:19 +msgid "Media encryption type" +msgstr "نوع وسيط التعمية" + +#: ../gtk/parameters.ui.h:20 +msgid "Video RTP/UDP:" +msgstr "فيديو RTP/UDP :" + +#: ../gtk/parameters.ui.h:21 +msgid "Audio RTP/UDP:" +msgstr "صوت RTP/UDP :" + +#: ../gtk/parameters.ui.h:22 +msgid "Fixed" +msgstr "ثابت" + +#: ../gtk/parameters.ui.h:23 +msgid "Media encryption is mandatory" +msgstr "وسيط التعمية إجباري" + +#: ../gtk/parameters.ui.h:24 +msgid "Tunnel" +msgstr "النفق" + +#: ../gtk/parameters.ui.h:25 +msgid "DSCP fields" +msgstr "حقول DSCP" + +#: ../gtk/parameters.ui.h:26 +msgid "SIP/TCP port" +msgstr "منفذ SIP/TCP" + +#: ../gtk/parameters.ui.h:27 +msgid "SIP/UDP port" +msgstr "منفذ SIP/UDP" + +#: ../gtk/parameters.ui.h:28 +msgid "Network protocol and ports" +msgstr "بروتوكول الشبكة والمنافذ" + +#: ../gtk/parameters.ui.h:29 +msgid "Direct connection to the Internet" +msgstr "الاتصال مباشر بالإنترنت" + +#: ../gtk/parameters.ui.h:30 +msgid "Behind NAT / Firewall (specify gateway IP )" +msgstr "وراء جدار ناري (حدِّد عنوان IP البوابة)" + +#: ../gtk/parameters.ui.h:31 +msgid "Behind NAT / Firewall (use STUN to resolve)" +msgstr "وراء جدار ناري (استخدم STUN)" + +#: ../gtk/parameters.ui.h:32 +msgid "Behind NAT / Firewall (use ICE)" +msgstr "وراء جدار ناري (استخدم ICE)" + +#: ../gtk/parameters.ui.h:33 +msgid "Behind NAT / Firewall (use uPnP)" +msgstr "وراء جدار ناري (استخدم uPnP)" + +#: ../gtk/parameters.ui.h:34 +msgid "Public IP address:" +msgstr "عنوان IP العمومي :" + +#: ../gtk/parameters.ui.h:35 +msgid "Stun server:" +msgstr "خادم STUN :" + +#: ../gtk/parameters.ui.h:36 +msgid "NAT and Firewall" +msgstr "إعدادات حول الجدار الناري" + +#: ../gtk/parameters.ui.h:37 +msgid "Network settings" +msgstr "إعدادات الشبكة" + +#: ../gtk/parameters.ui.h:38 +msgid "Ring sound:" +msgstr "صوت الجرس :" + +#: ../gtk/parameters.ui.h:39 +msgid "ALSA special device (optional):" +msgstr "عتاد ALSA الخصوصي (اختياري) :" + +#: ../gtk/parameters.ui.h:40 +msgid "Capture device:" +msgstr "جهاز الالتقاط :" + +#: ../gtk/parameters.ui.h:41 +msgid "Ring device:" +msgstr "جهاز الرنين :" + +#: ../gtk/parameters.ui.h:42 +msgid "Playback device:" +msgstr "جهاز السمع :" + +#: ../gtk/parameters.ui.h:43 +msgid "Enable echo cancellation" +msgstr "فعِّل إزالة الصدى" + +#: ../gtk/parameters.ui.h:44 +msgid "Audio" +msgstr "الصوت" + +#: ../gtk/parameters.ui.h:45 +msgid "Video input device:" +msgstr "جهاز إدخال الفيديو :" + +#: ../gtk/parameters.ui.h:46 +msgid "Prefered video resolution:" +msgstr "المقدار المُراد لدقة الفيديو :" + +#: ../gtk/parameters.ui.h:47 +msgid "Video output method:" +msgstr "طريقة إخراج الفيديو :" + +#: ../gtk/parameters.ui.h:48 +msgid "Video" +msgstr "الفيديو" + +#: ../gtk/parameters.ui.h:49 +msgid "Multimedia settings" +msgstr "إعدادات الوسائط المتعددة" + +#: ../gtk/parameters.ui.h:50 +msgid "This section defines your SIP address when not using a SIP account" +msgstr "هذه الفقرة تحدد عنوانك SIP إن كنت لا تستخدم حساب SIP" + +#: ../gtk/parameters.ui.h:51 +msgid "Your display name (eg: John Doe):" +msgstr "إسمك المعروض (مثلا : زيد عمرو) :" + +#: ../gtk/parameters.ui.h:52 +msgid "Your username:" +msgstr "إسم المستخدم لديك :" + +#: ../gtk/parameters.ui.h:53 +msgid "Your resulting SIP address:" +msgstr "عنوانك SIP :" + +#: ../gtk/parameters.ui.h:54 +msgid "Default identity" +msgstr "الهوية الافتراضية" + +#: ../gtk/parameters.ui.h:55 +msgid "Wizard" +msgstr "المرشد" + +#: ../gtk/parameters.ui.h:56 +msgid "Add" +msgstr "إضافة" + +#: ../gtk/parameters.ui.h:57 +msgid "Edit" +msgstr "حرر" + +#: ../gtk/parameters.ui.h:58 +msgid "Remove" +msgstr "أزل" + +#: ../gtk/parameters.ui.h:59 +msgid "Proxy accounts" +msgstr "حسابات الوكيل" + +#: ../gtk/parameters.ui.h:60 +msgid "Erase all passwords" +msgstr "احذف جميع كلمات السر" + +#: ../gtk/parameters.ui.h:61 +msgid "Privacy" +msgstr "الأمان" + +#: ../gtk/parameters.ui.h:62 +msgid "Manage SIP Accounts" +msgstr "إدارة حسابات SIP" + +#: ../gtk/parameters.ui.h:63 ../gtk/tunnel_config.ui.h:4 +msgid "Enable" +msgstr "فعِّل" + +#: ../gtk/parameters.ui.h:64 ../gtk/tunnel_config.ui.h:5 +msgid "Disable" +msgstr "إلغاء التفعيل" + +#: ../gtk/parameters.ui.h:65 +msgid "Codecs" +msgstr "المراميز" + +#: ../gtk/parameters.ui.h:66 +msgid "0 stands for \"unlimited\"" +msgstr "حدِّد 0 لعدم وضع أي حد" + +#: ../gtk/parameters.ui.h:67 +msgid "Upload speed limit in Kbit/sec:" +msgstr "حد سرعة الرفع بالكيلوبِتْ/الثانية :" + +#: ../gtk/parameters.ui.h:68 +msgid "Download speed limit in Kbit/sec:" +msgstr "حد سرعة التنزيل بالكيلوبِتْ/الثانية :" + +#: ../gtk/parameters.ui.h:69 +msgid "Enable adaptive rate control" +msgstr "فعِّل التحكم المتكيف مع الصبيب" + +#: ../gtk/parameters.ui.h:70 +msgid "" +"Adaptive rate control is a technique to dynamically guess the available " +"bandwidth during a call." +msgstr "التحكم المتكيف مع الصبيب هو تقنية لملائمة جودة الصوت والصورة بناءً على سعة قناة الاتصال المتاحة خلال المكالمة." + +#: ../gtk/parameters.ui.h:71 +msgid "Bandwidth control" +msgstr "إدارة سعة القناة" + +#: ../gtk/parameters.ui.h:72 +msgid "Codecs" +msgstr "المراميز" + +#: ../gtk/parameters.ui.h:73 +msgid "Language" +msgstr "اللغة" + +#: ../gtk/parameters.ui.h:74 +msgid "Show advanced settings" +msgstr "أظهر الإعدادات المتقدمة" + +#: ../gtk/parameters.ui.h:75 +msgid "Level" +msgstr "المستوى" + +#: ../gtk/parameters.ui.h:76 +msgid "User interface" +msgstr "واجهة المستخدم" + +#: ../gtk/parameters.ui.h:77 ../gtk/ldap.ui.h:2 +msgid "Server address:" +msgstr "عنوان الخادم :" + +#: ../gtk/parameters.ui.h:78 ../gtk/ldap.ui.h:3 +msgid "Authentication method:" +msgstr "طريقة التحقق من الهوية :" + +#: ../gtk/parameters.ui.h:80 +msgid "LDAP Account setup" +msgstr "تهيئة LDAP" + +#: ../gtk/parameters.ui.h:81 +msgid "LDAP" +msgstr "LDAP" + +#: ../gtk/parameters.ui.h:82 +msgid "Done" +msgstr "أغلق" + +#: ../gtk/buddylookup.ui.h:1 +msgid "Search contacts in directory" +msgstr "البحث عن جهات الاتصال في الدليل" + +#: ../gtk/buddylookup.ui.h:2 +msgid "Add to my list" +msgstr "الإضافة إلى قائمتي" + +#: ../gtk/buddylookup.ui.h:3 +msgid "Search somebody" +msgstr "البحث عن شخص" + +#: ../gtk/waiting.ui.h:1 +msgid "Linphone" +msgstr "لِنْفُونْ" + +#: ../gtk/waiting.ui.h:2 +msgid "Please wait" +msgstr "يُرجى الانتظار" + +#: ../gtk/dscp_settings.ui.h:1 +msgid "DSCP settings" +msgstr "إعدادات DSCP" + +#: ../gtk/dscp_settings.ui.h:2 +msgid "SIP" +msgstr "SIP" + +#: ../gtk/dscp_settings.ui.h:3 +msgid "Audio RTP stream" +msgstr "تدفق RTP الصوتي" + +#: ../gtk/dscp_settings.ui.h:4 +msgid "Video RTP stream" +msgstr "تدفق RTP المرئي" + +#: ../gtk/dscp_settings.ui.h:5 +msgid "Set DSCP values (in hexadecimal)" +msgstr "حدد قيم DSCP (بالنظام الست-عشري)" + +#: ../gtk/call_statistics.ui.h:1 +msgid "Call statistics" +msgstr "إحصاء المكالمات" + +#: ../gtk/call_statistics.ui.h:2 +msgid "Audio codec" +msgstr "مرمازات الصوت" + +#: ../gtk/call_statistics.ui.h:3 +msgid "Video codec" +msgstr "مرمازات الفيديو" + +#: ../gtk/call_statistics.ui.h:4 +msgid "Audio IP bandwidth usage" +msgstr "سعة القناة الصوتية" + +#: ../gtk/call_statistics.ui.h:5 +msgid "Audio Media connectivity" +msgstr "اتصالات الصوت" + +#: ../gtk/call_statistics.ui.h:6 +msgid "Video IP bandwidth usage" +msgstr "سعة قناة الفيديو" + +#: ../gtk/call_statistics.ui.h:7 +msgid "Video Media connectivity" +msgstr "اتصالات الفيديو" + +#: ../gtk/call_statistics.ui.h:8 +msgid "Round trip time" +msgstr "مدة الذهاب والإياب" + +#: ../gtk/call_statistics.ui.h:9 +msgid "Video resolution received" +msgstr "حجم الفيديو المستلَم" + +#: ../gtk/call_statistics.ui.h:10 +msgid "Video resolution sent" +msgstr "حجم الفيديو المرسَل" + +#: ../gtk/call_statistics.ui.h:11 +msgid "RTP profile" +msgstr "تشكيلة RTP" + +#: ../gtk/call_statistics.ui.h:12 +msgid "Call statistics and information" +msgstr "إحصاء المكالمات والمعلومات" + +#: ../gtk/tunnel_config.ui.h:1 +msgid "Configure VoIP tunnel" +msgstr "تهيئة نفق VoIP" + +#: ../gtk/tunnel_config.ui.h:2 +msgid "Host" +msgstr "المضيف" + +#: ../gtk/tunnel_config.ui.h:3 +msgid "Port" +msgstr "المنفذ" + +#: ../gtk/tunnel_config.ui.h:6 +msgid "Configure tunnel" +msgstr "تهيئة النفق" + +#: ../gtk/tunnel_config.ui.h:9 +msgid "Configure http proxy (optional)" +msgstr "تهيئة وكيل http (اختياري)" + +#: ../gtk/ldap.ui.h:1 +msgid "LDAP Settings" +msgstr "إعدادات LDAP" + +#: ../gtk/ldap.ui.h:6 +msgid "Use TLS Connection" +msgstr "استخدم TLS" + +#: ../gtk/ldap.ui.h:7 +msgid "Not yet available" +msgstr "غير متاح" + +#: ../gtk/ldap.ui.h:8 +msgid "Connection" +msgstr "الاتصال " + +#: ../gtk/ldap.ui.h:9 +msgid "Bind DN" +msgstr "ربط DN" + +#: ../gtk/ldap.ui.h:10 +msgid "Authname" +msgstr "إسم الهوية" + +#: ../gtk/ldap.ui.h:11 +msgid "Realm" +msgstr "النطاق" + +#: ../gtk/ldap.ui.h:12 +msgid "SASL" +msgstr "SASL" + +#: ../gtk/ldap.ui.h:13 +msgid "Base object:" +msgstr "الكائن الأساسي :" + +#: ../gtk/ldap.ui.h:15 +#, no-c-format +msgid "Filter (%s for name):" +msgstr "رشِّح (%s كإسم) :" + +#: ../gtk/ldap.ui.h:16 +msgid "Name Attribute:" +msgstr "خاصية الإسم :" + +#: ../gtk/ldap.ui.h:17 +msgid "SIP address attribute:" +msgstr "خاصية عنوان SIP :" + +#: ../gtk/ldap.ui.h:18 +msgid "Attributes to query:" +msgstr "الخاصيات المبحوث عنها :" + +#: ../gtk/ldap.ui.h:19 +msgid "Search" +msgstr "البحث" + +#: ../gtk/ldap.ui.h:20 +msgid "Timeout for search:" +msgstr "المهلة القصوى للبحث :" + +#: ../gtk/ldap.ui.h:21 +msgid "Max results:" +msgstr "العدد الأقصى للنتائج :" + +#: ../gtk/ldap.ui.h:22 +msgid "Follow Aliases" +msgstr "متابعة الكنية" + +#: ../gtk/ldap.ui.h:23 +msgid "Miscellaneous" +msgstr "متفرقات" + +#: ../gtk/ldap.ui.h:24 +msgid "ANONYMOUS" +msgstr "مجهول الهوية" + +#: ../gtk/ldap.ui.h:25 +msgid "SIMPLE" +msgstr "بسيط" + +#: ../gtk/ldap.ui.h:26 +msgid "DIGEST-MD5" +msgstr "DIGEST-MD5" + +#: ../gtk/ldap.ui.h:27 +msgid "NTLM" +msgstr "NTLM" + +#: ../gtk/config-uri.ui.h:1 +msgid "Specifying a remote configuration URI" +msgstr "تحديد عنوان URI التهيئة عن بعد" + +#: ../gtk/config-uri.ui.h:2 +msgid "" +"This dialog allows to set an http or https address when configuration is to be fetched at startup.\n" +"Please enter or modify the configuration URI below. After clicking OK, Linphone will restart automatically in order to fetch and take into account the new configuration. " +msgstr "يسمح لك مربع الحوار هذا بإعداد عنوان http أو https الذي من خلاله تود جلب التهيئة عند بدء البرنامج.\nأدخل العنوان أسفله. بعد تأكيد الأمر، ستجري إعادة تشغيل لِنْفُونْ تلقائيا من أجل جلب والأخذ بعين الاعتبار الإعدادات الحديثة." + +#: ../gtk/provisioning-fetch.ui.h:1 +msgid "Configuring..." +msgstr "تجري التهيئة..." + +#: ../gtk/provisioning-fetch.ui.h:2 +msgid "Please wait while fetching configuration from server..." +msgstr "رجاءً انتظر ريثما ينتهي من جلب الإعدادات من الخادم..." + +#: ../coreapi/linphonecore.c:1510 +msgid "Ready" +msgstr "جاهز" + +#: ../coreapi/linphonecore.c:2473 +msgid "Configuring" +msgstr "تجري التهيئة" + +#: ../coreapi/linphonecore.c:2638 +msgid "Looking for telephone number destination..." +msgstr "يجري البحث عن وجهة رقم الهاتف..." + +#: ../coreapi/linphonecore.c:2640 +msgid "Could not resolve this number." +msgstr "لم يتمكن من إيجاد هذا الرقم." + +#. must be known at that time +#: ../coreapi/linphonecore.c:2926 +msgid "Contacting" +msgstr "يتصل ب" + +#: ../coreapi/linphonecore.c:2931 +msgid "Could not call" +msgstr "لم يتمكن من الاتصال" + +#: ../coreapi/linphonecore.c:3081 +msgid "Sorry, we have reached the maximum number of simultaneous calls" +msgstr "آسف، وصل عدد المكالمات الآنية إلى حده الأقصى" + +#: ../coreapi/linphonecore.c:3240 +msgid "is contacting you" +msgstr "يتصل بك" + +#: ../coreapi/linphonecore.c:3241 +msgid " and asked autoanswer." +msgstr "ويطلب ردا تلقائيا." + +#: ../coreapi/linphonecore.c:3359 +msgid "Modifying call parameters..." +msgstr "يجري تعديل إعدادات المكالمة..." + +#: ../coreapi/linphonecore.c:3707 +msgid "Connected." +msgstr "متصل." + +#: ../coreapi/linphonecore.c:3732 +msgid "Call aborted" +msgstr "أُلغيت المكالمة" + +#: ../coreapi/linphonecore.c:3922 +msgid "Could not pause the call" +msgstr "لم يتمكن من توقيف المكالمة مؤقتا" + +#: ../coreapi/linphonecore.c:3926 +msgid "Pausing the current call..." +msgstr "وضع المكالمة قيد الانتظار..." + +#: ../coreapi/misc.c:438 +msgid "Stun lookup in progress..." +msgstr "يجري بحث STUN..." + +#: ../coreapi/misc.c:619 +msgid "ICE local candidates gathering in progress..." +msgstr "يجري جلب مرشَّحي ICE المحلين..." + +#: ../coreapi/friend.c:33 +msgid "Online" +msgstr "على الخط" + +#: ../coreapi/friend.c:36 +msgid "Busy" +msgstr "مشغول" + +#: ../coreapi/friend.c:39 +msgid "Be right back" +msgstr "سأعود" + +#: ../coreapi/friend.c:42 +msgid "Away" +msgstr "غائب" + +#: ../coreapi/friend.c:45 +msgid "On the phone" +msgstr "على الهاتف" + +#: ../coreapi/friend.c:48 +msgid "Out to lunch" +msgstr "أمام مائدة الطعام" + +#: ../coreapi/friend.c:51 +msgid "Do not disturb" +msgstr "لا تزعجني" + +#: ../coreapi/friend.c:54 +msgid "Moved" +msgstr "ذهبتُ" + +#: ../coreapi/friend.c:57 +msgid "Using another messaging service" +msgstr "استخدام خدمة أخرى للتراسل الفوري" + +#: ../coreapi/friend.c:60 +msgid "Offline" +msgstr "غير متصل" + +#: ../coreapi/friend.c:63 +msgid "Pending" +msgstr "قيد الانتظار" + +#: ../coreapi/friend.c:66 +msgid "Vacation" +msgstr "في عطلة" + +#: ../coreapi/friend.c:68 +msgid "Unknown status" +msgstr "حالة مجهولة" + +#: ../coreapi/proxy.c:319 +msgid "" +"The sip proxy address you entered is invalid, it must start with \"sip:\" " +"followed by a hostname." +msgstr "عنوان SIP الذي أدخلت غير صالح، يجب أن يبدأ ب \"sip:\" متبوعا بإسم النطاق." + +#: ../coreapi/proxy.c:325 +msgid "" +"The sip identity you entered is invalid.\n" +"It should look like sip:username@proxydomain, such as sip:alice@example.net" +msgstr "هوية SIP التي أدخلت غير صحيحة.\nيجب أن تشبه هذا النمط sip:username@proxydomain، مثلا sip:alice@example.net" + +#: ../coreapi/proxy.c:1377 +#, c-format +msgid "Could not login as %s" +msgstr "تعذر الولوج بالهوية %s" + +#: ../coreapi/callbacks.c:383 +msgid "Remote ringing." +msgstr "يرن الجرس عن بعد..." + +#: ../coreapi/callbacks.c:404 +msgid "Remote ringing..." +msgstr "يرن الجرس عن بعد..." + +#: ../coreapi/callbacks.c:414 +msgid "Early media." +msgstr "أخذ المكالمة مبكرا." + +#: ../coreapi/callbacks.c:475 +#, c-format +msgid "Call with %s is paused." +msgstr "المكاملة مع %s متوقفة." + +#: ../coreapi/callbacks.c:488 +#, c-format +msgid "Call answered by %s - on hold." +msgstr "يجيب %s عن المكالمة - في وضع الانتظار." + +#: ../coreapi/callbacks.c:498 +msgid "Call resumed." +msgstr "استُعيدت المكالمة." + +#: ../coreapi/callbacks.c:502 +#, c-format +msgid "Call answered by %s." +msgstr "أجاب عن المكالمة %s." + +#: ../coreapi/callbacks.c:525 +msgid "Incompatible, check codecs or security settings..." +msgstr "غير موائم، تحقق من المراميز أو إعدادات الأمان..." + +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +msgid "Incompatible media parameters." +msgstr "إعدادات الوسائط غير موائمة." + +#: ../coreapi/callbacks.c:560 +msgid "We have been resumed." +msgstr "استُأنِفت المكالمة." + +#. we are being paused +#: ../coreapi/callbacks.c:568 +msgid "We are paused by other party." +msgstr "وُقِّفت المكالمة مؤقتا من طرف آخر." + +#. reINVITE and in-dialogs UPDATE go here +#: ../coreapi/callbacks.c:602 +msgid "Call is updated by remote." +msgstr "حُدِّث الاتصال من البعيد." + +#: ../coreapi/callbacks.c:705 +msgid "Call terminated." +msgstr "أُنهيت المكالمة." + +#: ../coreapi/callbacks.c:733 +msgid "User is busy." +msgstr "المستخدم مشغول." + +#: ../coreapi/callbacks.c:734 +msgid "User is temporarily unavailable." +msgstr "المستخدم غير متاح مؤقتا." + +#. char *retrymsg=_("%s. Retry after %i minute(s)."); +#: ../coreapi/callbacks.c:736 +msgid "User does not want to be disturbed." +msgstr "لا يريد المستخدم أي إزعاج." + +#: ../coreapi/callbacks.c:737 +msgid "Call declined." +msgstr "تم تجاهل المكالمة." + +#: ../coreapi/callbacks.c:752 +msgid "Request timeout." +msgstr "انتهت مهلة الطلب." + +#: ../coreapi/callbacks.c:780 +msgid "Redirected" +msgstr "مُوجَّه" + +#: ../coreapi/callbacks.c:835 +msgid "Call failed." +msgstr "فشل الاتصال." + +#: ../coreapi/callbacks.c:913 +#, c-format +msgid "Registration on %s successful." +msgstr "تم التسجيل في %s بنجاح." + +#: ../coreapi/callbacks.c:914 +#, c-format +msgid "Unregistration on %s done." +msgstr "أُلغي التسجيل في %s ." + +#: ../coreapi/callbacks.c:932 +msgid "no response timeout" +msgstr "لا إجابة قبل انتهاء المهلة" + +#: ../coreapi/callbacks.c:935 +#, c-format +msgid "Registration on %s failed: %s" +msgstr "فَشِل التسجيل في %s: %s" + +#: ../coreapi/callbacks.c:942 +msgid "Service unavailable, retrying" +msgstr "خدمة غير متاحة، تجري الإعادة" + +#: ../coreapi/linphonecall.c:174 +#, c-format +msgid "Authentication token is %s" +msgstr "شارة التحقق من الهوية هي %s" + +#: ../coreapi/linphonecall.c:3020 +#, c-format +msgid "You have missed %i call." +msgid_plural "You have missed %i calls." +msgstr[0] "لم تفتك أي مكالمة." +msgstr[1] "فاتتك مكالمة واحدة." +msgstr[2] "فاتتك مكالمتان." +msgstr[3] "فاتتك %i مكالمات." +msgstr[4] "فاتتك %i مكالمة." +msgstr[5] "فاتتك %i مكالمة." + +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" + +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" + +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" + +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" + +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" + +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/cs.po b/po/cs.po index a8a550fa4..f7b9c76f2 100644 --- a/po/cs.po +++ b/po/cs.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:17+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Czech (http://www.transifex.com/projects/p/linphone-gtk/" "language/cs/)\n" @@ -162,11 +162,11 @@ msgstr "" msgid "Call error" msgstr "Chyba hovoru" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "Hovor ukončen" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Příchozí hovor" @@ -426,13 +426,10 @@ msgstr[1] "Nalezeny %i kontakty" msgstr[2] "Nalezeno %i kontaktů" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"Vítejte!\n" -"Tento průvodce vám pomůže používat sipový účet při vašich hovorech." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -646,7 +643,7 @@ msgstr "" msgid "%.3f seconds" msgstr "%.3f sekund" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "Zavěsit" @@ -784,13 +781,10 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Vítejte!\n" -"Tento průvodce vám pomůže používat sipový účet při vašich hovorech." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -997,23 +991,20 @@ msgid "Login information" msgstr "Informace o přihlášení" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "Vítejte!" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "Smazat" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "O Linphonu" +msgstr "" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications, 2010\n" -msgstr "© Belledonne Communications, 2010\n" +msgstr "" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1702,43 +1693,43 @@ msgid "Could not resolve this number." msgstr "Toto číslo nelze vyhledat." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "Navazuje se spojení" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "Nelze volat" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 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:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "vás volá" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr " a požaduje automatickou zvednutí." -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "Upravují se parametry hovoru…" -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Připojeno." -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "Hovor přerušen" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "Hovor nebylo možné odložit" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "Současný hovor se odkládá…" @@ -1799,9 +1790,8 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "Neznámá chyba" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1946,60 +1936,33 @@ 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 "D" -#~ msgstr "D" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "*" -#~ msgstr "*" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "9" -#~ msgstr "9" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "B" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "A" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "" -#~ "%s\t\n" -#~ "%s" -#~ msgstr "" -#~ "%s\t\n" -#~ "%s" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i:%02i:%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/de.po b/po/de.po index a36d864f0..a97e08884 100644 --- a/po/de.po +++ b/po/de.po @@ -4,15 +4,16 @@ # # Translators: # andreas, 2014 +# andreas, 2014 # Gerhard Stengel , 2011-2012 # Simon Morlat , 2001 msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-25 16:45+0000\n" -"Last-Translator: andreas\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/" "language/de/)\n" "Language: de\n" @@ -165,11 +166,11 @@ msgstr "" msgid "Call error" msgstr "Anruf fehlgeschlagen" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "Anruf beendet" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Eingehender Anruf" @@ -430,14 +431,12 @@ msgstr[0] "%i Kontakt gefunden" msgstr[1] "%i Kontakte gefunden" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" "Willkommen!\n" -"Dieser Assistent wird Ihnen dabei helfen, ein SIP-Konto für Ihre Anrufe zu " -"verwenden." +"Dieser Assistent hilft Ihnen dabei ein SIP-Konto einzurichten." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -653,7 +652,7 @@ msgstr "%ix%i @ %f bps" msgid "%.3f seconds" msgstr "%.3f Sekunden" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "Auflegen" @@ -791,14 +790,13 @@ msgid "Too loud" msgstr "zu laut" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" "Willkommen!\n" -"Dieser Assistent wird Ihnen dabei helfen, die Audio-Einstellungen für " -"Linphone vorzunehmen." +"Dieser Assistent hilft Ihnen die Audioeinstellungen für Linphone " +"einzurichten." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -1005,23 +1003,20 @@ msgid "Login information" msgstr "Anmeldeinformationen" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "Willkommen !" +msgstr "Willkommen!" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "Löschen" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" msgstr "Über Linphone" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications, 2010\n" -msgstr "(C) Belledonne Communications,2010\n" +msgstr "(C) Belledonne Communications, 2010\n" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1732,43 +1727,43 @@ msgid "Could not resolve this number." msgstr "Diese Nummer kann nicht aufgelöst werden." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "Verbindungsaufbau" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "Anruf kann nicht getätigt werden." -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Die maximale Anzahl der gleichzeitigen Anrufe ist erreicht." -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "ruft Sie an" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr " und fragt nach automatischer Antwort." -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "Die Anrufparameter werden verändert..." -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Verbunden." -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "Anruf abgebrochen" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "Anruf kann nicht gehalten werden" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "Aktueller Anruf wird gehalten..." @@ -1829,9 +1824,8 @@ msgid "Vacation" msgstr "Urlaub" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "Unbekannter Fehler" +msgstr "Unbekannter Status" #: ../coreapi/proxy.c:319 msgid "" @@ -1976,66 +1970,33 @@ msgid_plural "You have missed %i calls." msgstr[0] "Sie haben %i Anruf in Abwesenheit." msgstr[1] "Sie haben %i Anrufe in Abwesenheit." -#~ msgid "https://" -#~ msgstr "https://" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "label" -#~ msgstr "Hinweisschild" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "D" -#~ msgstr "D" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "*" -#~ msgstr "*" - -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "B" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "A" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "" -#~ "%s\t\n" -#~ "%s" -#~ msgstr "" -#~ "%s\t\n" -#~ "%s" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i::%02i::%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/es.po b/po/es.po index b2054661d..f8a5bfba5 100644 --- a/po/es.po +++ b/po/es.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:17+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/linphone-gtk/" "language/es/)\n" @@ -157,11 +157,11 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Llamada entrante" @@ -418,13 +418,10 @@ msgstr[0] "Se encontró %i contacto" msgstr[1] "Se encontraron %i contactos" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"¡Bienvenido/a !\n" -"Este asistente le ayudará a utilizar una cuenta SIP para sus llamadas." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -630,7 +627,7 @@ msgstr "" msgid "%.3f seconds" msgstr "" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "" @@ -766,13 +763,10 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"¡Bienvenido/a !\n" -"Este asistente le ayudará a utilizar una cuenta SIP para sus llamadas." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -1683,43 +1677,43 @@ msgid "Could not resolve this number." msgstr "No se ha podido resolver este número." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Disculpe, se ha alcanzado el máximo número de llamadas simultáneas" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "y ha solicitado auto respuesta." -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "Modificando parámetros de llamada…" -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Conectado." -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "No se pudo pausar la llamada" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "Pausando la llamada actual..." @@ -1780,9 +1774,8 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "Bug-desconocido" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1927,56 +1920,33 @@ msgid_plural "You have missed %i calls." msgstr[0] "Tiene %i llamada perdida." msgstr[1] "Tiene %i llamadas perdidas." -#~ msgid "label" -#~ msgstr "etiqueta" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "D" -#~ msgstr "D" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "*" -#~ msgstr "*" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "B" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "A" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i::%02i::%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/fr.po b/po/fr.po index 5e64f94e2..c83a84985 100644 --- a/po/fr.po +++ b/po/fr.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-27 15:47+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:30+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: French (http://www.transifex.com/projects/p/linphone-gtk/" "language/fr/)\n" @@ -57,8 +57,8 @@ msgstr "Refusé" #, c-format msgid "%i minute" msgid_plural "%i minutes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%i minute" +msgstr[1] "%i minutes" #: ../gtk/calllogs.c:332 #, c-format @@ -165,11 +165,11 @@ msgstr "" msgid "Call error" msgstr "Erreur lors de l'appel" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "Appel terminé." -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Appel entrant" @@ -431,12 +431,11 @@ msgstr[0] "%i contact trouvé." msgstr[1] "%i contacts trouvés." #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"Bienvenue!\n" +"Bienvenue !\n" "Cet assistant va vous aider à utiliser un compte SIP pour vos appels." #: ../gtk/setupwizard.c:43 @@ -638,6 +637,8 @@ msgid "" "download: %f\n" "upload: %f (kbit/s)" msgstr "" +"débit descendant : %f\n" +"débit ascendant : %f (kbits/s)" #: ../gtk/incall_view.c:272 ../gtk/incall_view.c:274 #, c-format @@ -649,7 +650,7 @@ msgstr "%ix%i @ %f fps" msgid "%.3f seconds" msgstr "%.3f secondes" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "Raccrocher" @@ -787,12 +788,11 @@ msgid "Too loud" msgstr "Trop bruyant" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Bienvenue!\n" +"Bienvenue !\n" "Cet assistant va vous aider à régler les paramètres audio de votre " "ordinateur pour une utilisation optimale avec Linphone." @@ -938,7 +938,7 @@ msgstr "_Site web" #: ../gtk/main.ui.h:29 msgid "Check _Updates" -msgstr "" +msgstr "_Mises à jour" #: ../gtk/main.ui.h:30 msgid "Account assistant" @@ -1001,7 +1001,6 @@ msgid "Login information" msgstr "Information de login" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" msgstr "Bienvenue !" @@ -1010,12 +1009,10 @@ msgid "Delete" msgstr "Supprimer" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "A propos de linphone" +msgstr "À propos de Linphone" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications, 2010\n" msgstr "(C) Belledonne Communications, 2010\n" @@ -1129,7 +1126,7 @@ msgstr "Paramètres de contact (optionnel):" #: ../gtk/sip_account.ui.h:9 msgid "AVPF regular RTCP interval (sec):" -msgstr "" +msgstr "Intervalle standard RTCP AVPF (sec) :" #: ../gtk/sip_account.ui.h:10 msgid "Route (optional):" @@ -1165,7 +1162,7 @@ msgstr "GSSAPI" #: ../gtk/parameters.ui.h:3 msgid "SASL" -msgstr "" +msgstr "SASL" #: ../gtk/parameters.ui.h:4 msgid "default soundcard" @@ -1612,7 +1609,7 @@ msgstr "Connexion" #: ../gtk/ldap.ui.h:9 msgid "Bind DN" -msgstr "" +msgstr "Assigner ND" #: ../gtk/ldap.ui.h:10 msgid "Authname" @@ -1728,43 +1725,43 @@ msgid "Could not resolve this number." msgstr "La destination n'a pu être trouvée." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "Appel de" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "Echec de l'appel" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Désolé, le nombre maximum d'appels simultanés est atteint." -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "vous appelle" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "et sollicite un décrochage automatique." -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "Modifications des paramètres d'appels..." -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "En ligne." -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "Appel abandonné" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "La mise en attente a échoué" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "Mise en attente de l'appel..." @@ -1825,9 +1822,8 @@ msgid "Vacation" msgstr "En congé" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "Bug inconnu" +msgstr "Status inconnu" #: ../coreapi/proxy.c:319 msgid "" @@ -1972,66 +1968,38 @@ msgid_plural "You have missed %i calls." msgstr[0] "Vous avez manqué %i appel" msgstr[1] "Vous avez manqué %i appels" -#~ msgid "https://" -#~ msgstr "https://" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "interrompu" -#~ msgid "label" -#~ msgstr "label" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "terminé" -#~ msgid "D" -#~ msgstr "D" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "manqué" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" +"%s à %s\n" +"De : %s\n" +"Vers : %s\n" +"Status : %s\n" +"Durée : %i min %i sec\n" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "Appel sortant" -#~ msgid "*" -#~ msgstr "*" - -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "B" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "A" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "" -#~ "%s\t\n" -#~ "%s" -#~ msgstr "" -#~ "%s\t\n" -#~ "%s" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i::%02i::%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "Impossibde de jouer %s." diff --git a/po/he.po b/po/he.po index e25b70afb..594308819 100644 --- a/po/he.po +++ b/po/he.po @@ -5,14 +5,15 @@ # Translators: # Eli Zaretskii , 2012 # GenghisKhan , 2014 +# GenghisKhan , 2014 # GenghisKhan , 2012-2013 msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-24 10:22+0000\n" -"Last-Translator: GenghisKhan \n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/linphone-gtk/" "language/he/)\n" "Language: he\n" @@ -161,11 +162,11 @@ msgstr "" msgid "Call error" msgstr "שגיאת קריאה" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "שיחה הסתיימה" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "קריאה נכנסת" @@ -424,13 +425,10 @@ msgstr[0] "נמצא איש קשר %i" msgstr[1] "נמצאו %i אנשי קשר" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"ברוך בואך !\n" -"אשף זה יסייע לך לעשות שימוש בחשבון SIP עבור שיחותייך." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -642,7 +640,7 @@ msgstr "" msgid "%.3f seconds" msgstr "%.3f שניות" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "נתק" @@ -780,13 +778,10 @@ msgid "Too loud" msgstr "חזק מדי" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"ברוך בואך !\n" -"אשף זה יסייע לך לעשות שימוש בחשבון SIP עבור שיחותייך." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -993,23 +988,20 @@ msgid "Login information" msgstr "מידע התחברות" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "ברוך בואך !" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "מחק" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "אודות לינפון" +msgstr "" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications, 2010\n" -msgstr "‫(C) ‫Belledonne Communications,‫2010\n" +msgstr "" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1698,43 +1690,43 @@ msgid "Could not resolve this number." msgstr "לא ניתן לפתור את מספר זה." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "מתקשר כעת" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "לא ניתן להתקשר" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "הגענו אל המספר המרבי של שיחות מקבילות, עמך הסליחה" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "מתקשר/ת אליך" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr " ומבקש/ת מענה אוטומטי." -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "מתאים כעת פרמטרים של שיחה..." -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "מקושר." -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "קריאה בוטלה" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "לא ניתן להשהות את השיחה" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "משהה כעת שיחה נוכחית..." @@ -1795,9 +1787,8 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "תקלה לא מוכרת" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1940,32 +1931,33 @@ msgid_plural "You have missed %i calls." msgstr[0] "החמצת שיחה %i." msgstr[1] "החמצת %i שיחות." -#~ msgid "label" -#~ msgstr "תוויות" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "9" -#~ msgstr "9 [סעפ]" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "8" -#~ msgstr "8 [צק]" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "7" -#~ msgstr "7 [רשת]" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "6" -#~ msgstr "6 [זחט]" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "5" -#~ msgstr "5 [יכל]" - -#~ msgid "4" -#~ msgstr "4 [מנ]" - -#~ msgid "3" -#~ msgstr "3 [אבג]" - -#~ msgid "2" -#~ msgstr "2 [דהו]" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "‭%02i::%02i::%02i" +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/hu.po b/po/hu.po index 1287f3928..1fe343f05 100644 --- a/po/hu.po +++ b/po/hu.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:16+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Hungarian (http://www.transifex.com/projects/p/linphone-gtk/" "language/hu/)\n" @@ -156,11 +156,11 @@ msgstr "" msgid "Call error" msgstr "Hiba a hívás közben" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "Hívás vége" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Beérkező hívás" @@ -421,13 +421,10 @@ msgstr[0] "" msgstr[1] "" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"Üdvözöljük !\n" -"Ez a varázsló segít Önnek, hogy sip fiókot használjon hívásaihoz." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -641,7 +638,7 @@ msgstr "" msgid "%.3f seconds" msgstr "%.3f másodperc" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "Befejezés" @@ -779,13 +776,10 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Üdvözöljük !\n" -"Ez a varázsló segít Önnek, hogy sip fiókot használjon hívásaihoz." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -992,23 +986,20 @@ msgid "Login information" msgstr "Bejelentkezési információ" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "Üdvözöljük !" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "Törlés" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "Linphone névjegy" +msgstr "" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications, 2010\n" -msgstr "(C) Belledonne Communications,2010\n" +msgstr "" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1699,43 +1690,43 @@ msgid "Could not resolve this number." msgstr "Nem sikkerült értelmezni a számot." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "Kapcsolódás" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "Nem sikerült hívni" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Elnézést, elértük a egyidejű hívások maximális számát" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "kapcsolatba lépett veled." -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "és automatikus választ kért." -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "A hívási jellemzők módosítása..." -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Kapcsolódva." -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "Hívás megszakítva" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "Nem sikerült várakoztatni a hívást" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "Jelenlegi hívás várakoztatásának aktiválása..." @@ -1796,9 +1787,8 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "Ismeretlen programhiba" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1944,56 +1934,33 @@ msgid_plural "You have missed %i calls." msgstr[0] "" msgstr[1] "" -#~ msgid "label" -#~ msgstr "címke" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "D" -#~ msgstr "D" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "*" -#~ msgstr "*" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "B" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "A" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i::%02i::%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/it.po b/po/it.po index dbd9daf78..29577b62b 100644 --- a/po/it.po +++ b/po/it.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:16+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Italian (http://www.transifex.com/projects/p/linphone-gtk/" "language/it/)\n" @@ -153,11 +153,11 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "Chiamata terminata" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Chimata in entrata" @@ -414,13 +414,10 @@ msgstr[0] "Trovato %i contatto" msgstr[1] "Trovato %i contatti" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"Benvenuti !\n" -"La procedura vi aiutera a configurare un account SIP." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -626,7 +623,7 @@ msgstr "" msgid "%.3f seconds" msgstr "" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "" @@ -762,13 +759,10 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Benvenuti !\n" -"La procedura vi aiutera a configurare un account SIP." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -975,18 +969,16 @@ msgid "Login information" msgstr "Credenziali di accesso" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "Benvenuto !" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "Info Linphone" +msgstr "" #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications, 2010\n" @@ -1678,43 +1670,43 @@ msgid "Could not resolve this number." msgstr "Impossibile risolvere il numero." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "In connessione" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Connessione" -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "" @@ -1775,9 +1767,8 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "Bug-sconosciuto" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1921,50 +1912,33 @@ msgid_plural "You have missed %i calls." msgstr[0] "" msgstr[1] "" -#~ msgid "label" -#~ msgstr "etichetta" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "D" -#~ msgstr "D" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "*" -#~ msgstr "*" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "B" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "A" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/ja.po b/po/ja.po index 61385c5df..004469d0b 100644 --- a/po/ja.po +++ b/po/ja.po @@ -4,13 +4,14 @@ # # Translators: # Alexander, 2014 +# Alexander, 2014 msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-28 09:19+0000\n" -"Last-Translator: Alexander\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/" "language/ja/)\n" "Language: ja\n" @@ -22,12 +23,12 @@ msgstr "" #: ../gtk/calllogs.c:148 ../gtk/friendlist.c:974 #, c-format msgid "Call %s" -msgstr "%s 呼出中" +msgstr "%s を呼び出し中" #: ../gtk/calllogs.c:149 ../gtk/friendlist.c:975 #, c-format msgid "Send text to %s" -msgstr "%s にテキストを送信" +msgstr "%s に文章を送信" #: ../gtk/calllogs.c:232 #, c-format @@ -157,11 +158,11 @@ msgstr "" msgid "Call error" msgstr "呼出エラー" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "呼出終了" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "着信" @@ -417,13 +418,10 @@ msgid_plural "Found %i contacts" msgstr[0] "%i 件発見" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"ようこそ!\n" -"このアシスタントは、あなたのSIPアカウントを使用するのに役立ちます。" #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -435,7 +433,7 @@ msgstr "linphone.orgのアカウントを持っているのでそれを使いま #: ../gtk/setupwizard.c:45 msgid "I have already a sip account and I just want to use it" -msgstr "" +msgstr "SIPアカウントを持っているのでそれを使います" #: ../gtk/setupwizard.c:46 msgid "I want to specify a remote configuration URI" @@ -594,7 +592,7 @@ msgstr "" #: ../gtk/incall_view.c:241 msgid "uPnP in progress" -msgstr "" +msgstr "uPnPを使用中" #: ../gtk/incall_view.c:243 msgid "uPnp not available" @@ -629,13 +627,13 @@ msgstr "%ix%i @ %f fps" msgid "%.3f seconds" msgstr "%.3f 秒" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "" #: ../gtk/incall_view.c:511 msgid "Calling..." -msgstr "" +msgstr "かけています…" #: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 msgid "00::00::00" @@ -765,13 +763,10 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"ようこそ!\n" -"このアシスタントは、あなたのSIPアカウントを使用するのに役立ちます。" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -978,23 +973,20 @@ msgid "Login information" msgstr "ログイン情報" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "ようこそ" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "削除" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "linphoneについて" +msgstr "" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications, 2010\n" -msgstr "(C) Belledonne Communications,2010\n" +msgstr "" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1693,43 +1685,43 @@ msgid "Could not resolve this number." msgstr "" #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "接続しました。" -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "" @@ -1790,9 +1782,8 @@ msgid "Vacation" msgstr "休暇中" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "不明なバグ" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1931,57 +1922,33 @@ msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "" -#~ msgid "https://" -#~ msgstr "https://" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "label" -#~ msgstr "ラベル" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "*" -#~ msgstr "*" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "" -#~ "%s\t\n" -#~ "%s" -#~ msgstr "" -#~ "%s⇥\n" -#~ "%s" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i::%02i::%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/nb_NO.po b/po/nb_NO.po index 2a316169b..fb24b907a 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:17+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/" "p/linphone-gtk/language/nb_NO/)\n" @@ -157,11 +157,11 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "Samtale avsluttet" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Innkommende samtale" @@ -420,13 +420,10 @@ msgstr[0] "Fant kontakt %i" msgstr[1] "Hittat kontakt %i" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"Velkommen\n" -"Denne veiviseren vil hjelpe deg sette opp en SIP-konto for dine samtaler." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -632,7 +629,7 @@ msgstr "" msgid "%.3f seconds" msgstr "" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "" @@ -768,13 +765,10 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Velkommen\n" -"Denne veiviseren vil hjelpe deg sette opp en SIP-konto for dine samtaler." #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -981,23 +975,20 @@ msgid "Login information" msgstr "Innlogginsinformasjon" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "Velkommen!" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "Om Linphone" +msgstr "" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications, 2010\n" -msgstr "(C) Belledonne Communications,2011\n" +msgstr "" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1686,43 +1677,43 @@ msgid "Could not resolve this number." msgstr "Kan ikke tilkoble dette nummeret." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "Tilknytter" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "Kunne ikke ringe" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Beklager, du har nådd maksimalt antall samtidige samtaler" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "Kontakter deg." -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr " og ba om autosvar." -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "Endrer ringeparametre..." -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Tilkoblet" -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "Samtale avbrutt" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "Kunne ikke pause samtalen" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "Pauser nåværende samtale" @@ -1783,9 +1774,8 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "Ukjent feil" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1929,56 +1919,33 @@ msgid_plural "You have missed %i calls." msgstr[0] "Du har %i ubesvarte anrop." msgstr[1] "Du har %i missade samtal" -#~ msgid "label" -#~ msgstr "etikett" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "D" -#~ msgstr "D" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "*" -#~ msgstr "*" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "B" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "A" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i:%02i:%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/nl.po b/po/nl.po index 9d3ccea4e..8ea8053c2 100644 --- a/po/nl.po +++ b/po/nl.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:08+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/linphone-gtk/" "language/nl/)\n" @@ -150,11 +150,11 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "Oproep beeindigd" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Inkomende oproep" @@ -618,7 +618,7 @@ msgstr "" msgid "%.3f seconds" msgstr "" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "" @@ -1664,43 +1664,43 @@ msgid "Could not resolve this number." msgstr "Kon dit nummer niet vinden." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "Verbinden" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Verbonden." -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "" @@ -1902,17 +1902,33 @@ msgid_plural "You have missed %i calls." msgstr[0] "" msgstr[1] "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "*" -#~ msgstr "*" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "5" -#~ msgstr "5" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "1" -#~ msgstr "1" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" + +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/pl.po b/po/pl.po index 2112163f9..e2bcc91a4 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:08+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Polish (http://www.transifex.com/projects/p/linphone-gtk/" "language/pl/)\n" @@ -153,11 +153,11 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "" @@ -622,7 +622,7 @@ msgstr "" msgid "%.3f seconds" msgstr "" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "" @@ -1668,43 +1668,43 @@ msgid "Could not resolve this number." msgstr "" #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Połączony" -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "" @@ -1907,38 +1907,33 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "*" -#~ msgstr "*" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "9" -#~ msgstr "9" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "8" -#~ msgstr "8" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/pt_BR.po b/po/pt_BR.po index 0b474b49e..26581a852 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:08+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" "linphone-gtk/language/pt_BR/)\n" @@ -150,11 +150,11 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Camadas recebidas" @@ -618,7 +618,7 @@ msgstr "" msgid "%.3f seconds" msgstr "" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "" @@ -1664,43 +1664,43 @@ msgid "Could not resolve this number." msgstr "Não foi possível encontrar este número." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Conectado." -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "" @@ -1901,3 +1901,34 @@ msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "" msgstr[1] "" + +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" + +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" + +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" + +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" + +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" + +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/ru.po b/po/ru.po index 410947d4f..850f002c0 100644 --- a/po/ru.po +++ b/po/ru.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:13+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Russian (http://www.transifex.com/projects/p/linphone-gtk/" "language/ru/)\n" @@ -169,11 +169,11 @@ msgstr "" msgid "Call error" msgstr "Ошибка звонка" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "Звонок окончен" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Входящий звонок" @@ -435,13 +435,10 @@ msgstr[1] "Найдено %i контакта" msgstr[2] "Найдено %i контактов" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"Добро пожаловать!\n" -"Этот помощник поможет вам использовать учётную запись SIP для ваших звонков." #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -657,7 +654,7 @@ msgstr "%ix%i @ %f кадр/сек" msgid "%.3f seconds" msgstr "%.3f секунд" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "Повесить трубку" @@ -795,13 +792,10 @@ msgid "Too loud" msgstr "Слишком громко" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Добро пожаловать!\n" -"Этот помощник поможет вам сконфигурировать настройки аудио для linphone" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -1008,23 +1002,20 @@ msgid "Login information" msgstr "Информация для входа" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "Добро пожаловать!" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "Удалить" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "Про linphone" +msgstr "" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications, 2010\n" -msgstr "(C) Belledonne Communications,2010\n" +msgstr "" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1732,44 +1723,44 @@ msgid "Could not resolve this number." msgstr "Не получилось принять решение по этому номеру." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "Соединение" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "Невозможно позвонить" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" "К сожалению, мы достигли максимального количества одновременных звонков" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "контактирует с вами" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "и спросил автоматический ответ." -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "Изменение параметров звонка..." -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Соединён." -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "Звонок отменён" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "Невозможно приостановить звонок" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "Приостановка текущего звонка..." @@ -1830,9 +1821,8 @@ msgid "Vacation" msgstr "Отдых" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "Неизвестная ошибка" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1978,66 +1968,33 @@ msgstr[0] "У вас %i пропущенный вызов." msgstr[1] "У вас %i пропущенных вызова." msgstr[2] "У вас %i пропущенных вызов." -#~ msgid "https://" -#~ msgstr "https://" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "label" -#~ msgstr "метка" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "D" -#~ msgstr "D" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "*" -#~ msgstr "*" - -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "B" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "A" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "" -#~ "%s\t\n" -#~ "%s" -#~ msgstr "" -#~ "%s\t\n" -#~ "%s" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i::%02i::%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/sr.po b/po/sr.po index 653de971f..cc7879209 100644 --- a/po/sr.po +++ b/po/sr.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-26 20:58+0000\n" -"Last-Translator: Мирослав Николић \n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/linphone-gtk/" "language/sr/)\n" "Language: sr\n" @@ -165,11 +165,11 @@ msgstr "" msgid "Call error" msgstr "Грешка позива" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "Позив је завршен" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Долазни позив" @@ -430,12 +430,11 @@ msgstr[1] "Нашао сам %i контакта" msgstr[2] "Нашао сам %i контаката" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"Добро дошли !\n" +"Добро дошли!\n" "Овај помоћник ће вам помоћи да користите СИП налог за ваше позиве." #: ../gtk/setupwizard.c:43 @@ -650,7 +649,7 @@ msgstr "%ix%i @ %f к/с" msgid "%.3f seconds" msgstr "%.3f секунде" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "Прекини" @@ -788,13 +787,12 @@ msgid "Too loud" msgstr "Сувише гласан" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Добро дошли !\n" -"Овај помоћник ће вам помоћи да подесите звучне поставке за Линфон" +"Добро дошли!\n" +"Овај помоћник ће вам помоћи да подесите поставке звука за Линфон" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -1001,21 +999,18 @@ msgid "Login information" msgstr "Подаци пријављивања" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "Добро дошли !" +msgstr "Добро дошли!" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "Обриши" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "О линфону" +msgstr "О Линфону" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications, 2010\n" msgstr "(C) Беледоне комуникације, 2010\n" @@ -1725,43 +1720,43 @@ msgid "Could not resolve this number." msgstr "Не могу да решим овај број." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "Ступам у везу" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "Не могу да позовем" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Извините, достигли смо највећи број истовремених позива" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "вам се обраћа" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr " и затражени само-одговор." -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "Мењам параметре позива..." -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Повезан сам." -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "Позив је прекинут" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "Не могу да зауставим позив" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "Заустављам тренутни позив..." @@ -1822,9 +1817,8 @@ msgid "Vacation" msgstr "На одмору" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "Непозната грешка" +msgstr "Непознато стање" #: ../coreapi/proxy.c:319 msgid "" @@ -1970,66 +1964,33 @@ msgstr[0] "Пропустили сте %i позив." msgstr[1] "Пропустили сте %i позива." msgstr[2] "Пропустили сте %i позива." -#~ msgid "https://" -#~ msgstr "https://" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "label" -#~ msgstr "натпис" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "D" -#~ msgstr "Г" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "*" -#~ msgstr "*" - -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "Б" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "А" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "" -#~ "%s\t\n" -#~ "%s" -#~ msgstr "" -#~ "%s\t\n" -#~ "%s" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i::%02i::%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/sv.po b/po/sv.po index 1a4a4efee..9c326620c 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:15+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/linphone-gtk/" "language/sv/)\n" @@ -156,11 +156,11 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "Samtalet slut" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Inkommande samtal" @@ -417,13 +417,10 @@ msgstr[0] "Hittat kontakt %i" msgstr[1] "Hittat kontakt %i" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"Välkommen!\n" -"Assistenten kommer att hjälpa dig använda ett SIP konto för dina samtal:" #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -629,7 +626,7 @@ msgstr "" msgid "%.3f seconds" msgstr "" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "" @@ -765,13 +762,10 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"Välkommen!\n" -"Assistenten kommer att hjälpa dig använda ett SIP konto för dina samtal:" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -978,18 +972,16 @@ msgid "Login information" msgstr "Login information" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "Välkommen!" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "Apropå linphone" +msgstr "" #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications, 2010\n" @@ -1681,43 +1673,43 @@ msgid "Could not resolve this number." msgstr "Kan inte nå dett nummer." #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "Kontaktar" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "Kopplad" -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "" @@ -1778,9 +1770,8 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "Okänd bug" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1924,8 +1915,33 @@ msgid_plural "You have missed %i calls." msgstr[0] "Du har %i missat samtal" msgstr[1] "Du har %i missade samtal" -#~ msgid "label" -#~ msgstr "etikett" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i:%02i:%02i" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" + +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" + +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" + +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" + +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 50b6812f8..18a459c64 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:15+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/linphone-" "gtk/language/zh_CN/)\n" @@ -151,11 +151,11 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "呼叫结束" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "呼入" @@ -413,13 +413,10 @@ msgid_plural "Found %i contacts" msgstr[0] "找到 %i 联系方式" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"欢迎使用 Linphone!\n" -"设置向导将帮助您配置打网络电话的 SIP 帐户。" #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -625,7 +622,7 @@ msgstr "" msgid "%.3f seconds" msgstr "" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "" @@ -761,13 +758,10 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"欢迎使用 Linphone!\n" -"设置向导将帮助您配置打网络电话的 SIP 帐户。" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -974,18 +968,16 @@ msgid "Login information" msgstr "登录信息" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "欢迎!" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "关于 Linphone" +msgstr "" #: ../gtk/about.ui.h:2 msgid "(C) Belledonne Communications, 2010\n" @@ -1676,43 +1668,43 @@ msgid "Could not resolve this number." msgstr "该号码无法解析。" #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "联系中" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "正在联系您" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr " 并询问了自动回答。" -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "已连接。" -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "" @@ -1773,9 +1765,8 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "未知错误" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1916,56 +1907,33 @@ msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "您错过了 %i 个呼叫。" -#~ msgid "label" -#~ msgstr "标签" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "D" -#~ msgstr "D" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "*" -#~ msgstr "*" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "B" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "A" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i::%02i::%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" diff --git a/po/zh_TW.po b/po/zh_TW.po index 4efff36e4..d3dfa7ab7 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-28 10:55+0100\n" -"PO-Revision-Date: 2014-11-19 10:15+0000\n" +"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"PO-Revision-Date: 2014-12-01 13:28+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/" "linphone-gtk/language/zh_TW/)\n" @@ -152,11 +152,11 @@ msgstr "" msgid "Call error" msgstr "" -#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3747 +#: ../gtk/main.c:1286 ../coreapi/linphonecore.c:3751 msgid "Call ended" msgstr "通話已結束" -#: ../gtk/main.c:1289 +#: ../gtk/main.c:1289 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "來電" @@ -414,13 +414,10 @@ msgid_plural "Found %i contacts" msgstr[0] "找不到 %i 個連絡人" #: ../gtk/setupwizard.c:34 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" -"歡迎!\n" -"這個助理會協助您使用電話的 SIP 帳號。" #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -626,7 +623,7 @@ msgstr "" msgid "%.3f seconds" msgstr "" -#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 +#: ../gtk/incall_view.c:407 ../gtk/main.ui.h:12 ../gtk/videowindow.c:232 msgid "Hang up" msgstr "" @@ -762,13 +759,10 @@ msgid "Too loud" msgstr "" #: ../gtk/audio_assistant.c:318 -#, fuzzy msgid "" "Welcome!\n" "This assistant will help you to configure audio settings for Linphone" msgstr "" -"歡迎!\n" -"這個助理會協助您使用電話的 SIP 帳號。" #: ../gtk/audio_assistant.c:328 msgid "Capture device" @@ -975,23 +969,20 @@ msgid "Login information" msgstr "登入資訊" #: ../gtk/main.ui.h:46 -#, fuzzy msgid "Welcome!" -msgstr "歡迎使用!" +msgstr "" #: ../gtk/main.ui.h:47 msgid "Delete" msgstr "" #: ../gtk/about.ui.h:1 -#, fuzzy msgid "About Linphone" -msgstr "關於 linphone" +msgstr "" #: ../gtk/about.ui.h:2 -#, fuzzy msgid "(C) Belledonne Communications, 2010\n" -msgstr "(C) Belledonne Communications,2010\n" +msgstr "" #: ../gtk/about.ui.h:4 msgid "An internet video phone using the standard SIP (rfc3261) protocol." @@ -1678,43 +1669,43 @@ msgid "Could not resolve this number." msgstr "無法解析這個號碼。" #. must be known at that time -#: ../coreapi/linphonecore.c:2922 +#: ../coreapi/linphonecore.c:2926 msgid "Contacting" msgstr "正在連絡" -#: ../coreapi/linphonecore.c:2927 +#: ../coreapi/linphonecore.c:2931 msgid "Could not call" msgstr "無法通話" -#: ../coreapi/linphonecore.c:3077 +#: ../coreapi/linphonecore.c:3081 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "抱歉,我們已達瀏同步通話的最大數目" -#: ../coreapi/linphonecore.c:3236 +#: ../coreapi/linphonecore.c:3240 msgid "is contacting you" msgstr "正在連絡您" -#: ../coreapi/linphonecore.c:3237 +#: ../coreapi/linphonecore.c:3241 msgid " and asked autoanswer." msgstr "並要求自動接聽。" -#: ../coreapi/linphonecore.c:3355 +#: ../coreapi/linphonecore.c:3359 msgid "Modifying call parameters..." msgstr "修改通話參數..." -#: ../coreapi/linphonecore.c:3703 +#: ../coreapi/linphonecore.c:3707 msgid "Connected." msgstr "已連線。" -#: ../coreapi/linphonecore.c:3728 +#: ../coreapi/linphonecore.c:3732 msgid "Call aborted" msgstr "通話已放棄" -#: ../coreapi/linphonecore.c:3918 +#: ../coreapi/linphonecore.c:3922 msgid "Could not pause the call" msgstr "無法暫停通話" -#: ../coreapi/linphonecore.c:3922 +#: ../coreapi/linphonecore.c:3926 msgid "Pausing the current call..." msgstr "暫停目前的通話..." @@ -1775,9 +1766,8 @@ msgid "Vacation" msgstr "" #: ../coreapi/friend.c:68 -#, fuzzy msgid "Unknown status" -msgstr "不明錯誤" +msgstr "" #: ../coreapi/proxy.c:319 msgid "" @@ -1919,56 +1909,33 @@ msgid "You have missed %i call." msgid_plural "You have missed %i calls." msgstr[0] "您有 %i 通未接來電。" -#~ msgid "label" -#~ msgstr "標籤" +#: ../coreapi/call_log.c:209 +msgid "aborted" +msgstr "" -#~ msgid "D" -#~ msgstr "D" +#: ../coreapi/call_log.c:212 +msgid "completed" +msgstr "" -#~ msgid "#" -#~ msgstr "#" +#: ../coreapi/call_log.c:215 +msgid "missed" +msgstr "" -#~ msgid "0" -#~ msgstr "0" +#: ../coreapi/call_log.c:220 +#, c-format +msgid "" +"%s at %s\n" +"From: %s\n" +"To: %s\n" +"Status: %s\n" +"Duration: %i mn %i sec\n" +msgstr "" -#~ msgid "*" -#~ msgstr "*" +#: ../coreapi/call_log.c:221 +msgid "Outgoing call" +msgstr "" -#~ msgid "9" -#~ msgstr "9" - -#~ msgid "8" -#~ msgstr "8" - -#~ msgid "7" -#~ msgstr "7" - -#~ msgid "B" -#~ msgstr "B" - -#~ msgid "6" -#~ msgstr "6" - -#~ msgid "5" -#~ msgstr "5" - -#~ msgid "4" -#~ msgstr "4" - -#~ msgid "A" -#~ msgstr "A" - -#~ msgid "3" -#~ msgstr "3" - -#~ msgid "2" -#~ msgstr "2" - -#~ msgid "1" -#~ msgstr "1" - -#~ msgid "%02i::%02i::%02i" -#~ msgstr "%02i::%02i::%02i" - -#~ msgid "." -#~ msgstr "." +#: ../gtk/videowindow.c:66 +#, c-format +msgid "Cannot play %s." +msgstr "" From 93493976b374c1226f28a9b7a54db270ff53d3e8 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 1 Dec 2014 15:25:08 +0100 Subject: [PATCH 247/249] tester automatically creates unique accounts on flexisip server before running tests. This allows several developer to run the test suite simultaneously ! --- coreapi/address.c | 31 ++++ coreapi/bellesip_sal/sal_address_impl.c | 12 ++ coreapi/bellesip_sal/sal_impl.c | 4 + coreapi/bellesip_sal/sal_op_impl.c | 1 + coreapi/linphonecore.c | 2 + coreapi/linphonecore.h | 5 + coreapi/misc.c | 20 +++ include/sal/sal.h | 4 + tester/Makefile.am | 3 +- tester/accountmanager.c | 215 ++++++++++++++++++++++++ tester/call_tester.c | 22 +-- tester/flexisip/flexisip.conf | 9 + tester/liblinphone_tester.h | 3 + tester/tester.c | 6 +- 14 files changed, 320 insertions(+), 17 deletions(-) create mode 100644 tester/accountmanager.c diff --git a/coreapi/address.c b/coreapi/address.c index 250026911..6530551ea 100644 --- a/coreapi/address.c +++ b/coreapi/address.c @@ -201,6 +201,37 @@ int linphone_address_get_port(const LinphoneAddress *u) { return sal_address_get_port(u); } +/** + * Set the password encoded in the address. + * It is used for basic authentication (not recommended). + * @param addr the LinphoneAddress + * @param passwd the password to set. +**/ +void linphone_address_set_password(LinphoneAddress *addr, const char *passwd){ + sal_address_set_password(addr,passwd); +} + +/** + * Get the password encoded in the address. + * It is used for basic authentication (not recommended). + * @param addr the address + * @return the password, if any, NULL otherwise. +**/ +const char *linphone_address_get_password(const LinphoneAddress *addr){ + return sal_address_get_password(addr); +} + +/** + * Set a header into the address. + * Headers appear in the URI with '?', such as . + * @param addr the address + * @param header_name the header name + * @param header_value the header value +**/ +void linphone_address_set_header(LinphoneAddress *addr, const char *header_name, const char *header_value){ + sal_address_set_header(addr,header_name,header_value); +} + LinphoneAddress * linphone_core_create_address(LinphoneCore *lc, const char *address) { return linphone_address_new(address); } diff --git a/coreapi/bellesip_sal/sal_address_impl.c b/coreapi/bellesip_sal/sal_address_impl.c index f51e421da..c4ff234d7 100644 --- a/coreapi/bellesip_sal/sal_address_impl.c +++ b/coreapi/bellesip_sal/sal_address_impl.c @@ -117,6 +117,14 @@ void sal_address_set_username(SalAddress *addr, const char *username){ SAL_ADDRESS_SET(addr,user,username); } +void sal_address_set_password(SalAddress *addr, const char *passwd){ + SAL_ADDRESS_SET(addr,user_password,passwd); +} + +const char* sal_address_get_password(const SalAddress *addr){ + SAL_ADDRESS_GET(addr,user_password); +} + void sal_address_set_domain(SalAddress *addr, const char *host){ SAL_ADDRESS_SET(addr,host,host); } @@ -180,6 +188,10 @@ void sal_address_set_uri_params(SalAddress *addr, const char *params){ belle_sip_parameters_set(parameters,params); } +void sal_address_set_header(SalAddress *addr, const char *header_name, const char *header_value){ + belle_sip_uri_set_header(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(addr)),header_name, header_value); +} + void sal_address_set_transport(SalAddress* addr,SalTransport transport){ if (!sal_address_is_secure(addr)){ SAL_ADDRESS_SET(addr,transport_param,sal_transport_to_string(transport)); diff --git a/coreapi/bellesip_sal/sal_impl.c b/coreapi/bellesip_sal/sal_impl.c index 1330f5269..7cb02eeeb 100644 --- a/coreapi/bellesip_sal/sal_impl.c +++ b/coreapi/bellesip_sal/sal_impl.c @@ -1077,6 +1077,10 @@ unsigned char * sal_get_random_bytes(unsigned char *ret, size_t size){ return belle_sip_random_bytes(ret,size); } +char *sal_get_random_token(int size){ + return belle_sip_random_token(ms_malloc(size),size); +} + unsigned int sal_get_random(void){ unsigned int ret=0; belle_sip_random_bytes((unsigned char*)&ret,4); diff --git a/coreapi/bellesip_sal/sal_op_impl.c b/coreapi/bellesip_sal/sal_op_impl.c index 5acfd5eae..1f734719f 100644 --- a/coreapi/bellesip_sal/sal_op_impl.c +++ b/coreapi/bellesip_sal/sal_op_impl.c @@ -103,6 +103,7 @@ belle_sip_header_contact_t* sal_op_create_contact(SalOp *op){ belle_sip_header_address_set_uri(BELLE_SIP_HEADER_ADDRESS(contact_header),contact_uri); } + belle_sip_uri_set_user_password(contact_uri,NULL); belle_sip_uri_set_secure(contact_uri,sal_op_is_secure(op)); if (op->privacy!=SalPrivacyNone){ belle_sip_uri_set_user(contact_uri,NULL); diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 16de123a7..de0c1228d 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -6048,6 +6048,8 @@ void sip_config_uninit(LinphoneCore *lc) if (i>=20) ms_warning("Cannot complete unregistration, giving up"); } config->proxies=ms_list_free_with_data(config->proxies,(void (*)(void*)) _linphone_proxy_config_release); + + config->deleted_proxies=ms_list_free_with_data(config->deleted_proxies,(void (*)(void*)) _linphone_proxy_config_release); /*no longuer need to write proxy config if not changedlinphone_proxy_config_write_to_config_file(lc->config,NULL,i);*/ /*mark the end */ diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index ac72246ad..bed8fdf0e 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -400,6 +400,9 @@ LINPHONE_PUBLIC void linphone_address_set_transport(LinphoneAddress *uri,Linphon LINPHONE_PUBLIC char *linphone_address_as_string(const LinphoneAddress *u); LINPHONE_PUBLIC char *linphone_address_as_string_uri_only(const LinphoneAddress *u); LINPHONE_PUBLIC bool_t linphone_address_weak_equal(const LinphoneAddress *a1, const LinphoneAddress *a2); +LINPHONE_PUBLIC void linphone_address_set_password(LinphoneAddress *addr, const char *passwd); +LINPHONE_PUBLIC const char *linphone_address_get_password(const LinphoneAddress *addr); +LINPHONE_PUBLIC void linphone_address_set_header(LinphoneAddress *addr, const char *header_name, const char *header_value); LINPHONE_PUBLIC void linphone_address_destroy(LinphoneAddress *u); /** @@ -477,6 +480,8 @@ enum _LinphoneIceState{ **/ typedef enum _LinphoneIceState LinphoneIceState; +LINPHONE_PUBLIC const char *linphone_ice_state_to_string(LinphoneIceState state); + /** * Enum describing uPnP states. * @ingroup initializing diff --git a/coreapi/misc.c b/coreapi/misc.c index 5de319246..a869d5301 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -641,6 +641,24 @@ int linphone_core_gather_ice_candidates(LinphoneCore *lc, LinphoneCall *call) return 0; } +const char *linphone_ice_state_to_string(LinphoneIceState state){ + switch(state){ + case LinphoneIceStateFailed: + return "IceStateFailed"; + case LinphoneIceStateHostConnection: + return "IceStateHostConnection"; + case LinphoneIceStateInProgress: + return "IceStateInProgress"; + case LinphoneIceStateNotActivated: + return "IceStateNotActivated"; + case LinphoneIceStateReflexiveConnection: + return "IceStateReflexiveConnection"; + case LinphoneIceStateRelayConnection: + return "IceStateRelayConnection"; + } + return "invalid"; +} + void linphone_core_update_ice_state_in_call_stats(LinphoneCall *call) { IceCheckList *audio_check_list; @@ -699,6 +717,8 @@ void linphone_core_update_ice_state_in_call_stats(LinphoneCall *call) call->stats[LINPHONE_CALL_STATS_VIDEO].ice_state = LinphoneIceStateFailed; } } + ms_message("Call [%p] New ICE state: audio: [%s] video: [%s]", call, + linphone_ice_state_to_string(call->stats[LINPHONE_CALL_STATS_AUDIO].ice_state), linphone_ice_state_to_string(call->stats[LINPHONE_CALL_STATS_VIDEO].ice_state)); } void _update_local_media_description_from_ice(SalMediaDescription *desc, IceSession *session) diff --git a/include/sal/sal.h b/include/sal/sal.h index 5fb0fbd92..040ab9951 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -110,6 +110,9 @@ void sal_address_set_transport_name(SalAddress* addr,const char* transport); void sal_address_set_params(SalAddress *addr, const char *params); void sal_address_set_uri_params(SalAddress *addr, const char *params); bool_t sal_address_is_ipv6(SalAddress *addr); +void sal_address_set_password(SalAddress *addr, const char *passwd); +const char *sal_address_get_password(const SalAddress *addr); +void sal_address_set_header(SalAddress *addr, const char *header_name, const char *header_value); Sal * sal_init(); void sal_uninit(Sal* sal); @@ -755,6 +758,7 @@ LINPHONE_PUBLIC bool_t sal_dns_srv_enabled(const Sal *sal); LINPHONE_PUBLIC void sal_set_dns_user_hosts_file(Sal *sal, const char *hosts_file); LINPHONE_PUBLIC const char *sal_get_dns_user_hosts_file(const Sal *sal); unsigned int sal_get_random(void); +char *sal_get_random_token(int size); unsigned char * sal_get_random_bytes(unsigned char *ret, size_t size); belle_sip_source_t * sal_create_timer(Sal *sal, belle_sip_source_func_t func, void *data, unsigned int timeout_value_ms, const char* timer_name); void sal_cancel_timer(Sal *sal, belle_sip_source_t *timer); diff --git a/tester/Makefile.am b/tester/Makefile.am index 88f17ea28..d296841ad 100644 --- a/tester/Makefile.am +++ b/tester/Makefile.am @@ -25,7 +25,8 @@ liblinphonetester_la_SOURCES = tester.c \ log_collection_tester.c \ transport_tester.c \ player_tester.c \ - dtmf_tester.c + dtmf_tester.c \ + accountmanager.c liblinphonetester_la_LDFLAGS= -no-undefined liblinphonetester_la_LIBADD= ../coreapi/liblinphone.la $(CUNIT_LIBS) diff --git a/tester/accountmanager.c b/tester/accountmanager.c new file mode 100644 index 000000000..c0fc054cc --- /dev/null +++ b/tester/accountmanager.c @@ -0,0 +1,215 @@ + /* + tester - liblinphone test suite + Copyright (C) 2013 Belledonne Communications SARL + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include "liblinphone_tester.h" +#include "private.h" + +struct _Account{ + LinphoneAddress *identity; + LinphoneAddress *modified_identity; + char *password; + int created; + int done; + int auth_requested; +}; + +typedef struct _Account Account; + +Account *account_new(LinphoneAddress *identity, const char *unique_id){ + char *modified_username; + Account *obj=ms_new0(Account,1); + + /* we need to inhibit leak detector because the two LinphoneAddress will remain behond the scope of the test being run */ + belle_sip_object_inhibit_leak_detector(TRUE); + obj->identity=linphone_address_clone(identity); + obj->password=sal_get_random_token(8); + obj->modified_identity=linphone_address_clone(identity); + modified_username=ms_strdup_printf("%s_%s",linphone_address_get_username(identity), unique_id); + linphone_address_set_username(obj->modified_identity, modified_username); + ms_free(modified_username); + belle_sip_object_inhibit_leak_detector(FALSE); + return obj; +}; + +void account_destroy(Account *obj){ + linphone_address_unref(obj->identity); + linphone_address_unref(obj->modified_identity); + ms_free(obj->password); + ms_free(obj); +} + +struct _AccountManager{ + char *unique_id; + MSList *accounts; +}; + +typedef struct _AccountManager AccountManager; + +static AccountManager *the_am=NULL; + +AccountManager *account_manager_get(void){ + if (the_am==NULL){ + the_am=ms_new0(AccountManager,1); + the_am->unique_id=sal_get_random_token(6); + } + return the_am; +} + +void account_manager_destroy(void){ + if (the_am){ + ms_free(the_am->unique_id); + ms_list_free_with_data(the_am->accounts,(void(*)(void*))account_destroy); + ms_free(the_am); + } + the_am=NULL; +} + +Account *account_manager_get_account(AccountManager *m, const LinphoneAddress *identity){ + MSList *it; + + for(it=m->accounts;it!=NULL;it=it->next){ + Account *a=(Account*)it->data; + if (linphone_address_weak_equal(a->identity,identity)){ + return a; + } + } + return NULL; +} + +static void account_created_on_server_cb(LinphoneCore *lc, LinphoneProxyConfig *cfg, LinphoneRegistrationState state, const char *info){ + Account *account=(Account*)linphone_core_get_user_data(lc); + switch(state){ + case LinphoneRegistrationOk: + account->created=1; + break; + case LinphoneRegistrationCleared: + account->done=1; + break; + default: + break; + } +} + +static void account_created_auth_requested_cb(LinphoneCore *lc, const char *username, const char *realm, const char *domain){ + Account *account=(Account*)linphone_core_get_user_data(lc); + account->auth_requested=1; +} + +void account_create_on_server(Account *account, const LinphoneProxyConfig *refcfg){ + LinphoneCoreVTable vtable={0}; + LinphoneCore *lc; + LinphoneAddress *tmp_identity=linphone_address_clone(account->modified_identity); + LinphoneProxyConfig *cfg; + LinphoneAuthInfo *ai; + char *tmp; + LinphoneAddress *server_addr; + + vtable.registration_state_changed=account_created_on_server_cb; + vtable.auth_info_requested=account_created_auth_requested_cb; + lc=configure_lc_from(&vtable,NULL,NULL,account); + + cfg=linphone_core_create_proxy_config(lc); + linphone_address_set_password(tmp_identity,account->password); + linphone_address_set_header(tmp_identity,"X-Create-Account","yes"); + tmp=linphone_address_as_string(tmp_identity); + linphone_proxy_config_set_identity(cfg,tmp); + ms_free(tmp); + linphone_address_unref(tmp_identity); + + server_addr=linphone_address_new(linphone_proxy_config_get_server_addr(refcfg)); + linphone_address_set_transport(server_addr,LinphoneTransportTcp); /*use tcp for account creation*/ + tmp=linphone_address_as_string(server_addr); + linphone_proxy_config_set_server_addr(cfg,tmp); + ms_free(tmp); + linphone_address_unref(server_addr); + linphone_proxy_config_set_expires(cfg,3600); + + linphone_core_add_proxy_config(lc,cfg); + + if (wait_for_until(lc,NULL,&account->auth_requested,1,10000)==FALSE){ + ms_fatal("Account for %s could not be created on server.", linphone_proxy_config_get_identity(refcfg)); + } + linphone_proxy_config_stop_refreshing(cfg); /*so that op is destroyed; we need to remove the X-create-account*/ + linphone_proxy_config_edit(cfg); + tmp=linphone_address_as_string(account->modified_identity); + linphone_proxy_config_set_identity(cfg,tmp); /*remove the X-Create-Account header*/ + ms_free(tmp); + linphone_proxy_config_done(cfg); + + ai=linphone_auth_info_new(linphone_address_get_username(account->modified_identity), + NULL, + account->password,NULL,NULL,linphone_address_get_domain(account->modified_identity)); + linphone_core_add_auth_info(lc,ai); + linphone_auth_info_destroy(ai); + + if (wait_for_until(lc,NULL,&account->created,1,3000)==FALSE){ + ms_fatal("Account for %s is not working on server.", linphone_proxy_config_get_identity(refcfg)); + } + linphone_core_remove_proxy_config(lc,cfg); + linphone_proxy_config_unref(cfg); + if (wait_for_until(lc,NULL,&account->done,1,3000)==FALSE){ + ms_error("Account creation could not clean the registration context."); + } + linphone_core_destroy(lc); +} + +LinphoneAddress *account_manager_check_account(AccountManager *m, LinphoneProxyConfig *cfg){ + LinphoneCore *lc=linphone_proxy_config_get_core(cfg); + const char *identity=linphone_proxy_config_get_identity(cfg); + LinphoneAddress *id_addr=linphone_address_new(identity); + Account *account=account_manager_get_account(m,id_addr); + LinphoneAuthInfo *ai; + char *tmp; + bool_t create_account=FALSE; + + if (!account){ + account=account_new(id_addr,m->unique_id); + ms_message("No account for %s exists, going to create one.",identity); + create_account=TRUE; + m->accounts=ms_list_append(m->accounts,account); + } + tmp=linphone_address_as_string(account->modified_identity); + linphone_proxy_config_set_identity(cfg,tmp); + ms_free(tmp); + + if (create_account){ + account_create_on_server(account,cfg); + } + ai=linphone_auth_info_new(linphone_address_get_username(account->modified_identity), + NULL, + account->password,NULL,NULL,linphone_address_get_domain(account->modified_identity)); + linphone_core_add_auth_info(lc,ai); + linphone_auth_info_destroy(ai); + + linphone_address_unref(id_addr); + return account->modified_identity; +} + +void linphone_core_manager_check_accounts(LinphoneCoreManager *m){ + const MSList *it; + AccountManager *am=account_manager_get(); + + for(it=linphone_core_get_proxy_config_list(m->lc);it!=NULL;it=it->next){ + LinphoneProxyConfig *cfg=(LinphoneProxyConfig *)it->data; + LinphoneAddress *modified_identity=account_manager_check_account(am,cfg); + if (m->identity){ + linphone_address_unref(m->identity); + } + m->identity=linphone_address_ref(modified_identity); + } +} diff --git a/tester/call_tester.c b/tester/call_tester.c index 6b21e2bd6..453c684ad 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -206,9 +206,6 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr CU_ASSERT_PTR_NOT_NULL(linphone_core_invite_address_with_params(caller_mgr->lc,callee_mgr->identity,caller_params)); } - - /*linphone_core_invite(caller_mgr->lc,"pauline");*/ - did_received_call = wait_for(callee_mgr->lc ,caller_mgr->lc ,&callee_mgr->stat.number_of_LinphoneCallIncomingReceived @@ -641,7 +638,7 @@ static void simple_call_compatibility_mode(void) { CU_ASSERT_TRUE (wait_for(lc_marie,lc_marie,&stat_marie->number_of_LinphoneRegistrationOk,1)); - linphone_core_invite(lc_marie,"pauline"); + linphone_core_invite_address(lc_marie,pauline->identity); CU_ASSERT_TRUE (wait_for(lc_pauline,lc_marie,&stat_pauline->number_of_LinphoneCallIncomingReceived,1)); CU_ASSERT_TRUE(linphone_core_inc_invite_pending(lc_pauline)); @@ -674,7 +671,7 @@ static void cancelled_call(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - LinphoneCall* out_call = linphone_core_invite(pauline->lc,"marie"); + LinphoneCall* out_call = linphone_core_invite_address(pauline->lc,marie->identity); linphone_call_ref(out_call); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallOutgoingInit,1)); @@ -730,7 +727,7 @@ static void call_failed_because_of_codecs(void) { disable_all_audio_codecs_except_one(marie->lc,"pcmu",-1); disable_all_audio_codecs_except_one(pauline->lc,"pcma",-1); - out_call = linphone_core_invite(pauline->lc,"marie"); + out_call = linphone_core_invite_address(pauline->lc,marie->identity); linphone_call_ref(out_call); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallOutgoingInit,1)); @@ -801,7 +798,7 @@ static void cancelled_ringing_call(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - LinphoneCall* out_call = linphone_core_invite(pauline->lc,"marie"); + LinphoneCall* out_call = linphone_core_invite_address(pauline->lc,marie->identity); linphone_call_ref(out_call); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallIncomingReceived,1)); @@ -823,7 +820,7 @@ static void early_declined_call(void) { LinphoneCall* out_call; linphone_core_set_max_calls(marie->lc,0); - out_call = linphone_core_invite(pauline->lc,"marie"); + out_call = linphone_core_invite_address(pauline->lc,marie->identity); linphone_call_ref(out_call); /*wait until flexisip transfers the busy...*/ @@ -943,7 +940,7 @@ static bool_t check_ice(LinphoneCoreManager* caller, LinphoneCoreManager* callee linphone_core_iterate(callee->lc); } ms_usleep(20000); - }while(!liblinphone_tester_clock_elapsed(&ts,5000)); + }while(!liblinphone_tester_clock_elapsed(&ts,10000)); } /*make sure encryption mode are preserved*/ @@ -980,7 +977,6 @@ static void _call_with_ice_base(LinphoneCoreManager* pauline,LinphoneCoreManager CU_ASSERT_TRUE(call(pauline,marie)); if (callee_with_ice && caller_with_ice) { - check_ice(pauline,marie,LinphoneIceStateHostConnection); /*wait for the ICE reINVITE to complete*/ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,2)); @@ -1631,7 +1627,7 @@ static void video_call_with_ice_no_matching_audio_codecs(void) { linphone_core_set_firewall_policy(pauline->lc, LinphonePolicyUseIce); linphone_core_set_stun_server(pauline->lc, "stun.linphone.org"); - out_call = linphone_core_invite(marie->lc, "pauline"); + out_call = linphone_core_invite_address(marie->lc, pauline->identity); linphone_call_ref(out_call); CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &marie->stat.number_of_LinphoneCallOutgoingInit, 1)); @@ -2822,7 +2818,7 @@ static void call_established_with_rejected_reinvite_with_error(void) { static void call_rejected_because_wrong_credentials_with_params(const char* user_agent,bool_t enable_auth_req_cb) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); - LinphoneAuthInfo* good_auth_info=linphone_auth_info_clone((LinphoneAuthInfo*)(linphone_core_get_auth_info_list(marie->lc)->data)); + LinphoneAuthInfo* good_auth_info=linphone_auth_info_clone(linphone_core_find_auth_info(marie->lc,NULL,linphone_address_get_username(marie->identity),NULL)); LinphoneAuthInfo* wrong_auth_info=linphone_auth_info_clone(good_auth_info); bool_t result=FALSE; linphone_auth_info_set_passwd(wrong_auth_info,"passecretdutout"); @@ -2855,7 +2851,7 @@ static void call_rejected_because_wrong_credentials_with_params(const char* user /*to make sure unregister will work*/ linphone_core_clear_all_auth_info(marie->lc); linphone_core_add_auth_info(marie->lc,good_auth_info); - + linphone_auth_info_destroy(good_auth_info); linphone_core_manager_destroy(marie); } diff --git a/tester/flexisip/flexisip.conf b/tester/flexisip/flexisip.conf index 12f42d945..635ae0bda 100755 --- a/tester/flexisip/flexisip.conf +++ b/tester/flexisip/flexisip.conf @@ -205,6 +205,15 @@ hashed-passwords=false # Default value: false new-auth-on-407=false +# Enable a feature useful for automatic tests, allowing a client +# to create a temporary account in the password database in memory. +# This MUST not be used for production as it is a real security +# hole. +# Default value: false + +enable-test-accounts-creation=true + + ## ## ... ## diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index a7c82913a..12531a57f 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -278,6 +278,9 @@ void liblinphone_tester_chat_message_msg_state_changed(LinphoneChatMessage *msg, void liblinphone_tester_check_rtcp(LinphoneCoreManager* caller, LinphoneCoreManager* callee); void liblinphone_tester_clock_start(MSTimeSpec *start); bool_t liblinphone_tester_clock_elapsed(const MSTimeSpec *start, int value_ms); +void linphone_core_manager_check_accounts(LinphoneCoreManager *m); +void account_manager_destroy(void); +LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, const char* file, void* user_data); #ifdef ANDROID void cunit_android_trace_handler(int level, const char *fmt, va_list args) ; #endif diff --git a/tester/tester.c b/tester/tester.c index d8639db47..98186c134 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -25,8 +25,6 @@ #include "CUnit/CUCurses.h" #endif -static LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, const char* file, void* user_data); - static test_suite_t **test_suite = NULL; static int nb_test_suites = 0; @@ -108,7 +106,7 @@ void reset_counters( stats* counters) { memset(counters,0,sizeof(stats)); } -static LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, const char* file, void* user_data) { +LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, const char* file, void* user_data) { LinphoneCore* lc; LpConfig* config = NULL; char *filepath = NULL; @@ -252,6 +250,7 @@ LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, int check_f reset_counters(&mgr->stat); if (rc_file) rc_path = ms_strdup_printf("rcfiles/%s", rc_file); mgr->lc=configure_lc_from(&mgr->v_table, liblinphone_tester_file_prefix, rc_path, mgr); + linphone_core_manager_check_accounts(mgr); /*CU_ASSERT_EQUAL(ms_list_size(linphone_core_get_proxy_config_list(lc)),proxy_count);*/ if (check_for_proxies && rc_file) /**/ proxy_count=ms_list_size(linphone_core_get_proxy_config_list(mgr->lc)); @@ -545,6 +544,7 @@ int liblinphone_tester_run_tests(const char *suite_name, const char *test_name) } CU_cleanup_registry(); + account_manager_destroy(); return ret; } From 65283e00ee5800160c9fdc9ba31d703b7c13e0fc Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 1 Dec 2014 16:25:13 +0100 Subject: [PATCH 248/249] Add compilation of accountmanager.c when building with CMake. --- tester/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tester/CMakeLists.txt b/tester/CMakeLists.txt index 3131a1054..8f3bd33a8 100644 --- a/tester/CMakeLists.txt +++ b/tester/CMakeLists.txt @@ -21,6 +21,7 @@ ############################################################################ set(SOURCE_FILES + accountmanager.c call_tester.c dtmf_tester.c eventapi_tester.c From 43fe5b0b23ec20cf6356e2ab270f8866870eede5 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 1 Dec 2014 16:32:10 +0100 Subject: [PATCH 249/249] Enable video in unit tests when building with CMake. --- CMakeLists.txt | 5 +++++ coreapi/CMakeLists.txt | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f762ad8e..ac04dc879 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -153,6 +153,11 @@ set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/config.h PROPERTIES GENE add_definitions(-DHAVE_CONFIG_H) +if(ENABLE_VIDEO) + add_definitions(-DVIDEO_ENABLED) +endif() + + add_subdirectory(coreapi) add_subdirectory(share) if(ENABLE_GTK_UI) diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt index e3bae9640..cb417a612 100644 --- a/coreapi/CMakeLists.txt +++ b/coreapi/CMakeLists.txt @@ -110,10 +110,6 @@ add_definitions( -DLIBLINPHONE_EXPORTS ) -if(ENABLE_VIDEO) - add_definitions(-DVIDEO_ENABLED) -endif() - set(LIBS ${LIBGCC} ${LIBMINGWEX}