From 35189535a7ba0f4bdacd0c3e7b2dc26fa55eb918 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 18 Nov 2014 16:41:24 +0100 Subject: [PATCH 001/496] 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 002/496] 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 003/496] 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 004/496] 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 005/496] 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 006/496] 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 007/496] 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 008/496] 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 009/496] 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 010/496] 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 011/496] 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 012/496] 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 013/496] 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 014/496] 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 015/496] 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 016/496] 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 017/496] 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 018/496] 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 019/496] 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 020/496] 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 021/496] 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 022/496] 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 023/496] 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 024/496] 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 025/496] 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 026/496] 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 027/496] 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 028/496] 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 029/496] 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 030/496] 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 031/496] 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 032/496] 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 033/496] 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 034/496] 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 035/496] 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 036/496] 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 037/496] 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 038/496] 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 039/496] 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 040/496] 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 041/496] 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 042/496] 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 043/496] 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 044/496] 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 045/496] 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 046/496] 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 047/496] 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 048/496] 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 049/496] 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 050/496] 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 051/496] 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 052/496] 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 053/496] 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 054/496] 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 055/496] 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 056/496] 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 057/496] 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 058/496] 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 059/496] 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 060/496] 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 061/496] 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 062/496] 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 063/496] 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 064/496] 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 065/496] 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 066/496] 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 067/496] 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 068/496] 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 069/496] 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 070/496] 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 071/496] 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 072/496] 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 073/496] 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 074/496] 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 075/496] 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 076/496] 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 077/496] 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 078/496] 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 079/496] 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 080/496] 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 081/496] 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 082/496] 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 083/496] 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 084/496] 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 085/496] 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 086/496] 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} From 10c057eae4615cd3faa61ce9fe6a4458ebcf48f2 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 1 Dec 2014 17:12:59 +0100 Subject: [PATCH 087/496] Make translatable some GUI text --- coreapi/call_log.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/call_log.c b/coreapi/call_log.c index 7ce488096..1449c1920 100644 --- a/coreapi/call_log.c +++ b/coreapi/call_log.c @@ -215,7 +215,7 @@ char * linphone_call_log_to_str(LinphoneCallLog *cl){ status=_("missed"); break; default: - status="unknown"; + status=_("unknown"); } tmp=ortp_strdup_printf(_("%s at %s\nFrom: %s\nTo: %s\nStatus: %s\nDuration: %i mn %i sec\n"), (cl->dir==LinphoneCallIncoming) ? _("Incoming call") : _("Outgoing call"), From b9b8166ad8aa6ee6b697ff266c7a6ee6f50b4876 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 2 Dec 2014 11:16:00 +0100 Subject: [PATCH 088/496] fix tester, update oRTP for bugfixes --- oRTP | 2 +- tester/rcfiles/pauline_alt_rc | 2 ++ tester/rcfiles/pauline_wild_rc | 2 ++ tester/register_tester.c | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/oRTP b/oRTP index a3debbd39..93607074c 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit a3debbd394fb32ab54ed265d2190711971c890e7 +Subproject commit 93607074c723d6d5181e48d6d7989b1c39b9bb8b diff --git a/tester/rcfiles/pauline_alt_rc b/tester/rcfiles/pauline_alt_rc index 7c1fe55ac..c8e730729 100644 --- a/tester/rcfiles/pauline_alt_rc +++ b/tester/rcfiles/pauline_alt_rc @@ -1,4 +1,6 @@ [sip] +sip_port=-1 +sip_tcp_port=-1 sip_tls_port=-1 default_proxy=0 register_only_when_network_is_up=0 diff --git a/tester/rcfiles/pauline_wild_rc b/tester/rcfiles/pauline_wild_rc index d828c807d..1d0d9b164 100644 --- a/tester/rcfiles/pauline_wild_rc +++ b/tester/rcfiles/pauline_wild_rc @@ -1,4 +1,6 @@ [sip] +sip_port=-1 +sip_tcp_port=-1 sip_tls_port=-1 default_proxy=0 register_only_when_network_is_up=0 diff --git a/tester/register_tester.c b/tester/register_tester.c index 907a10db7..fc778d865 100644 --- a/tester/register_tester.c +++ b/tester/register_tester.c @@ -781,7 +781,7 @@ static void tls_alt_name_register(){ linphone_core_refresh_registers(mgr->lc); CU_ASSERT_TRUE(wait_for(lc,lc,&mgr->stat.number_of_LinphoneRegistrationOk,1)); CU_ASSERT_EQUAL(mgr->stat.number_of_LinphoneRegistrationFailed,0); - linphone_core_destroy(mgr->lc); + linphone_core_manager_destroy(mgr); } static void tls_wildcard_register(){ From f8d7cdfdada17094c8eac9ee529f56d8b2ee1196 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 2 Dec 2014 11:27:43 +0100 Subject: [PATCH 089/496] fix problem when port is set to a TLS port only --- tester/accountmanager.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tester/accountmanager.c b/tester/accountmanager.c index c0fc054cc..3d6875453 100644 --- a/tester/accountmanager.c +++ b/tester/accountmanager.c @@ -133,6 +133,7 @@ void account_create_on_server(Account *account, const LinphoneProxyConfig *refcf server_addr=linphone_address_new(linphone_proxy_config_get_server_addr(refcfg)); linphone_address_set_transport(server_addr,LinphoneTransportTcp); /*use tcp for account creation*/ + linphone_address_set_port(server_addr,0); tmp=linphone_address_as_string(server_addr); linphone_proxy_config_set_server_addr(cfg,tmp); ms_free(tmp); From d8ce5b8904f5bec4f02dc2ad172e9bfa7a53464a Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 2 Dec 2014 12:11:55 +0100 Subject: [PATCH 090/496] fix crash when tunnel mode is compiled but disabled --- coreapi/bellesip_sal/sal_op_impl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/bellesip_sal/sal_op_impl.c b/coreapi/bellesip_sal/sal_op_impl.c index 1f734719f..2e68146a0 100644 --- a/coreapi/bellesip_sal/sal_op_impl.c +++ b/coreapi/bellesip_sal/sal_op_impl.c @@ -313,7 +313,7 @@ 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)){ + if (udplp && 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"); } From 44665fe88a1a22a0fb39a27c2d5a35f8ff2df7b1 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 2 Dec 2014 12:42:57 +0100 Subject: [PATCH 091/496] Added implem of remove_listener in jni layer, fixing crash occuring on second call --- coreapi/linphonecore_jni.cc | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 83d28ef8c..42d22a0e1 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -1032,7 +1032,21 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_addListener(JNIEnv* env, } extern "C" void Java_org_linphone_core_LinphoneCoreImpl_removeListener(JNIEnv* env, jobject thiz, jlong lc, jobject jlistener) { - //TODO + MSList* iterator; + LinphoneCore *core = (LinphoneCore*)lc; + jobject listener = env->NewGlobalRef(jlistener); + for (iterator = core->vtables; iterator != NULL; iterator = iterator->next) { + LinphoneCoreVTable *vTable = (LinphoneCoreVTable*)(iterator->data); + if (vTable) { + LinphoneCoreData *data = (LinphoneCoreData*) linphone_core_v_table_get_user_data(vTable); + if (data && env->IsSameObject(data->listener, listener)) { + linphone_core_remove_listener(core, vTable); + linphone_core_v_table_destroy(vTable); + break; + } + } + } + env->DeleteGlobalRef(listener); } extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_migrateToMultiTransport(JNIEnv* env From d0966f027f2462632c8590e5471616225a564d2d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 2 Dec 2014 13:40:42 +0100 Subject: [PATCH 092/496] Fix android tester build --- build/android/liblinphone_tester.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/android/liblinphone_tester.mk b/build/android/liblinphone_tester.mk index 430f203be..ee2018621 100644 --- a/build/android/liblinphone_tester.mk +++ b/build/android/liblinphone_tester.mk @@ -17,7 +17,8 @@ common_SRC_FILES := \ log_collection_tester.c \ transport_tester.c \ player_tester.c \ - dtmf_tester.c + dtmf_tester.c \ + accountmanager.c common_C_INCLUDES += \ $(LOCAL_PATH) \ From 7ce476ffb084ea6e110fd27f6033e932518234e9 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 2 Dec 2014 15:17:26 +0100 Subject: [PATCH 093/496] fix memory leak in case Message tests are passed in sequence --- tester/message_tester.c | 1 + tester/tester.c | 1 + 2 files changed, 2 insertions(+) diff --git a/tester/message_tester.c b/tester/message_tester.c index a44973227..784acb49b 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -358,6 +358,7 @@ static void text_message_with_ack(void) { 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); + linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } diff --git a/tester/tester.c b/tester/tester.c index 98186c134..b705a8912 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -103,6 +103,7 @@ static void auth_info_requested(LinphoneCore *lc, const char *realm, const char void reset_counters( stats* counters) { + if (counters->last_received_chat_message) linphone_chat_message_unref(counters->last_received_chat_message); memset(counters,0,sizeof(stats)); } From 02ed5338ed1f7cbbd4a1d5d3d49a02ab01ea9273 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 2 Dec 2014 16:02:19 +0100 Subject: [PATCH 094/496] Handle translations when building with CMake. --- CMakeLists.txt | 4 +++- gtk/CMakeLists.txt | 4 ++++ po/CMakeLists.txt | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 po/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index ac04dc879..85a86bf42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,6 +95,7 @@ if(ENABLE_NOTIFY) set(ENABLE_NOTIFY OFF CACHE BOOL "Enable libnotify support." FORCE) endif() endif() +find_package(Gettext) include_directories( @@ -114,7 +115,7 @@ if(MSVC) include_directories(${CMAKE_PREFIX_PATH}/include/MSVC) endif() -add_definitions(-DIN_LINPHONE) +add_definitions("-DIN_LINPHONE") if(MSVC) @@ -163,6 +164,7 @@ add_subdirectory(share) if(ENABLE_GTK_UI) add_subdirectory(gtk) add_subdirectory(pixmaps) + add_subdirectory(po) endif() if(ENABLE_TOOLS) add_subdirectory(tools) diff --git a/gtk/CMakeLists.txt b/gtk/CMakeLists.txt index e5d66561b..89d5805a6 100644 --- a/gtk/CMakeLists.txt +++ b/gtk/CMakeLists.txt @@ -65,6 +65,10 @@ set(SOURCE_FILES videowindow.c ) +if(GETTEXT_FOUND) + add_definitions("-DENABLE_NLS") +endif() + add_executable(linphone-gtk ${SOURCE_FILES}) set_target_properties(linphone-gtk PROPERTIES OUTPUT_NAME linphone) target_include_directories(linphone-gtk PUBLIC ${GTK2_INCLUDE_DIRS}) diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt new file mode 100644 index 000000000..7c39caac6 --- /dev/null +++ b/po/CMakeLists.txt @@ -0,0 +1,33 @@ +############################################################################ +# 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. +# +############################################################################ + +if(GETTEXT_FOUND) + string(REPLACE " " ";" LANGUAGES ${LINPHONE_ALL_LANGS}) + foreach(language ${LANGUAGES}) + GETTEXT_PROCESS_PO_FILES(${language} ALL PO_FILES ${language}.po) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${language}.gmo + DESTINATION ${PACKAGE_LOCALE_DIR}/${language}/LC_MESSAGES + RENAME linphone.mo + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ + ) + endforeach() +endif() From 399e6767071863816625cf19c346bb021025ff92 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 3 Dec 2014 10:28:15 +0100 Subject: [PATCH 095/496] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 06a14487a..22374b292 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 06a14487aa5acc0e3f0d4931c9a974762829d7bd +Subproject commit 22374b2929edfc2a6e18a6101f179f27a49a7be0 From b58f23ecefe22c8c4cfa2d5b2a69411fd3448201 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 3 Dec 2014 10:35:10 +0100 Subject: [PATCH 096/496] Fix tester by adding prefix for files in accountmanager --- tester/accountmanager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/accountmanager.c b/tester/accountmanager.c index 3d6875453..a3086f9cf 100644 --- a/tester/accountmanager.c +++ b/tester/accountmanager.c @@ -121,7 +121,7 @@ void account_create_on_server(Account *account, const LinphoneProxyConfig *refcf 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); + lc=configure_lc_from(&vtable,liblinphone_tester_file_prefix,NULL,account); cfg=linphone_core_create_proxy_config(lc); linphone_address_set_password(tmp_identity,account->password); From b8e643f7b15e611c08be5e0aa6f126b6ec3bd3e1 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 3 Dec 2014 12:29:03 +0100 Subject: [PATCH 097/496] Fix reinvite in case of redirection: we should use the linphone_core_restart_invite function, which correctly handles the streams close/reopen --- coreapi/callbacks.c | 7 +++++-- tester/call_tester.c | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 0cc5bf6fa..c43c84479 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -772,8 +772,11 @@ static void call_failure(SalOp *op){ char* url = linphone_address_as_string(redirection_to); ms_warning("Redirecting call [%p] to %s",call, url); ms_free(url); - linphone_call_create_op(call); - linphone_core_start_invite(lc, call, redirection_to); + if( call->log->to != NULL ) { + linphone_address_unref(call->log->to); + } + call->log->to = linphone_address_ref(redirection_to); + linphone_core_restart_invite(lc, call); return; } } diff --git a/tester/call_tester.c b/tester/call_tester.c index 453c684ad..4e8a323c3 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -1820,6 +1820,7 @@ static void call_waiting_indication_with_param(bool_t enable_caller_privacy) { /*use playfile for callee to avoid locking on capture card*/ linphone_core_use_files (laure->lc,TRUE); + linphone_core_use_files (marie->lc,TRUE); snprintf(hellopath,sizeof(hellopath), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); linphone_core_set_play_file(laure->lc,hellopath); if (enable_caller_privacy) @@ -1844,7 +1845,8 @@ static void call_waiting_indication_with_param(bool_t enable_caller_privacy) { LinphoneCall *call=(LinphoneCall *)iterator->data; if (call != pauline_called_by_marie) { /*fine, this is the call waiting*/ - linphone_core_accept_call(pauline->lc,pauline_called_by_laure=call); + pauline_called_by_laure=call; + linphone_core_accept_call(pauline->lc,pauline_called_by_laure); } } From 601de8ed364b3686d42add71dc2c5ee9be99e821 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 3 Dec 2014 12:36:47 +0100 Subject: [PATCH 098/496] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 22374b292..19cd01c94 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 22374b2929edfc2a6e18a6101f179f27a49a7be0 +Subproject commit 19cd01c941af61b791636ac941f75787884c2e6f From a8f774a24b5bdde76ec4462938c4ee8349ad1c94 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 3 Dec 2014 12:44:37 +0100 Subject: [PATCH 099/496] Add some missing translations --- gtk/audio_assistant.c | 16 +++++------ gtk/propertybox.c | 6 ++-- po/ar.po | 18 ++++++------ po/cs.po | 48 ++++++++++++++++++++++++------- po/de.po | 49 +++++++++++++++++++++++++------- po/es.po | 48 ++++++++++++++++++++++++------- po/fr.po | 51 +++++++++++++++++++++++++-------- po/he.po | 49 +++++++++++++++++++++++++------- po/hu.po | 48 ++++++++++++++++++++++++------- po/it.po | 48 ++++++++++++++++++++++++------- po/ja.po | 60 ++++++++++++++++++++++++++++----------- po/nb_NO.po | 48 ++++++++++++++++++++++++------- po/nl.po | 48 ++++++++++++++++++++++++------- po/pl.po | 48 ++++++++++++++++++++++++------- po/pt_BR.po | 48 ++++++++++++++++++++++++------- po/ru.po | 49 +++++++++++++++++++++++++------- po/sr.po | 66 ++++++++++++++++++++++++++++++++----------- po/sv.po | 48 ++++++++++++++++++++++++------- po/zh_CN.po | 48 ++++++++++++++++++++++++------- po/zh_TW.po | 48 ++++++++++++++++++++++++------- 20 files changed, 689 insertions(+), 203 deletions(-) diff --git a/gtk/audio_assistant.c b/gtk/audio_assistant.c index 7d50fedc2..ad5d95ea4 100644 --- a/gtk/audio_assistant.c +++ b/gtk/audio_assistant.c @@ -180,7 +180,7 @@ static void calibration_finished(LinphoneCore *lc, LinphoneEcCalibratorStatus st GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, - "%s","Did you hear three beeps ?"); + "%s",_("Did you hear three beeps ?")); g_signal_connect(G_OBJECT (dialog), "response", G_CALLBACK (dialog_click),speaker_page); @@ -289,12 +289,12 @@ static void open_mixer(){ #ifdef WIN32 if(!g_spawn_command_line_async("control mmsys.cpl",&error)){ - display_popup(GTK_MESSAGE_WARNING,"Sound preferences not found "); + display_popup(GTK_MESSAGE_WARNING,_("Sound preferences not found ")); g_error_free(error); } #elif __APPLE__ if(!g_spawn_command_line_async("open /System/Library/PreferencePanes/Sound.prefPane",&error)){ - display_popup(GTK_MESSAGE_WARNING,"Sound preferences not found "); + display_popup(GTK_MESSAGE_WARNING,_("Sound preferences not found ")); g_error_free(error); } #else @@ -303,7 +303,7 @@ static void open_mixer(){ if(!g_spawn_command_line_async("kmix",&error)){ if(!g_spawn_command_line_async("mate-volume-control",&error)){ if(!g_spawn_command_line_async("xterm alsamixer",&error)){ - display_popup(GTK_MESSAGE_WARNING,"Cannot launch system sound control "); + display_popup(GTK_MESSAGE_WARNING,_("Cannot launch system sound control ")); g_error_free(error); } } @@ -331,7 +331,7 @@ static GtkWidget *create_mic_page(){ GtkWidget *capture_device=gtk_combo_box_new(); GtkWidget *box = gtk_vbox_new(FALSE,0); GtkWidget *label_audiolevel=gtk_label_new(_("No voice")); - GtkWidget *mixer_button=gtk_button_new_with_label("System sound preferences"); + GtkWidget *mixer_button=gtk_button_new_with_label(_("System sound preferences")); GtkWidget *image; image=gtk_image_new_from_stock(GTK_STOCK_PREFERENCES,GTK_ICON_SIZE_MENU); @@ -370,7 +370,7 @@ static GtkWidget *create_speaker_page(){ GtkWidget *labelSpeakerLevel=gtk_label_new(_("Play three beeps")); GtkWidget *spk_button=gtk_button_new_from_stock(GTK_STOCK_MEDIA_PLAY); GtkWidget *playback_device=gtk_combo_box_new(); - GtkWidget *mixer_button=gtk_button_new_with_label("System sound preferences"); + GtkWidget *mixer_button=gtk_button_new_with_label(_("System sound preferences")); GtkWidget *image; const char **sound_devices; @@ -402,8 +402,8 @@ static GtkWidget *create_play_record_page(){ GtkWidget *vbox=gtk_table_new(2,2,FALSE); GtkWidget *labelRecord=gtk_label_new(_("Press the record button and say some words")); GtkWidget *labelPlay=gtk_label_new(_("Listen to your record voice")); - GtkWidget *rec_button=gtk_toggle_button_new_with_label("Record"); - GtkWidget *play_button=gtk_toggle_button_new_with_label("Play"); + GtkWidget *rec_button=gtk_toggle_button_new_with_label(_("Record")); + GtkWidget *play_button=gtk_toggle_button_new_with_label(_("Play")); GtkWidget *image; image=gtk_image_new_from_stock(GTK_STOCK_MEDIA_RECORD,GTK_ICON_SIZE_MENU); diff --git a/gtk/propertybox.c b/gtk/propertybox.c index 677fe5f06..bdb066616 100644 --- a/gtk/propertybox.c +++ b/gtk/propertybox.c @@ -913,13 +913,13 @@ void linphone_gtk_show_proxy_config(GtkWidget *pb, LinphoneProxyConfig *cfg){ GtkWidget *w=linphone_gtk_create_window("sip_account"); const char *tmp; gboolean is_new=FALSE; - + if (!cfg) { cfg=linphone_core_create_proxy_config(linphone_gtk_get_core()); is_new=TRUE; g_object_set_data(G_OBJECT(w),"is_new",GINT_TO_POINTER(TRUE)); } - + if (!is_new){ linphone_proxy_config_edit(cfg); gtk_entry_set_text(GTK_ENTRY(linphone_gtk_get_widget(w,"identity")), @@ -930,7 +930,7 @@ void linphone_gtk_show_proxy_config(GtkWidget *pb, LinphoneProxyConfig *cfg){ tmp=linphone_proxy_config_get_contact_parameters(cfg); if (tmp) gtk_entry_set_text(GTK_ENTRY(linphone_gtk_get_widget(w,"params")),tmp); } - + gtk_spin_button_set_value(GTK_SPIN_BUTTON(linphone_gtk_get_widget(w,"regperiod")), linphone_proxy_config_get_expires(cfg)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"register")), diff --git a/po/ar.po b/po/ar.po index 455a8df4c..9ffd49675 100644 --- a/po/ar.po +++ b/po/ar.po @@ -10,8 +10,8 @@ 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" +"PO-Revision-Date: 2014-12-01 17:44+0000\n" +"Last-Translator: محيي الدين \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" @@ -768,7 +768,7 @@ msgstr "صاخب" msgid "" "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" @@ -1916,15 +1916,15 @@ msgstr[5] "فاتتك %i مكالمة." #: ../coreapi/call_log.c:209 msgid "aborted" -msgstr "" +msgstr "أُجهِضت" #: ../coreapi/call_log.c:212 msgid "completed" -msgstr "" +msgstr "اكتملت" #: ../coreapi/call_log.c:215 msgid "missed" -msgstr "" +msgstr "فاتت" #: ../coreapi/call_log.c:220 #, c-format @@ -1934,13 +1934,13 @@ msgid "" "To: %s\n" "Status: %s\n" "Duration: %i mn %i sec\n" -msgstr "" +msgstr "%s في %s\nمن : %s\nإلى : %s\nالحالة : %s\nالمدة : %i دقيقة %i ثانية\n" #: ../coreapi/call_log.c:221 msgid "Outgoing call" -msgstr "" +msgstr "المكالمة الصادرة" #: ../gtk/videowindow.c:66 #, c-format msgid "Cannot play %s." -msgstr "" +msgstr "لم يتمكن من تشغيل %s" diff --git a/po/cs.po b/po/cs.po index f7b9c76f2..28b929f6a 100644 --- a/po/cs.po +++ b/po/cs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -205,7 +205,7 @@ msgstr "Lipnhone – internetový videofon" msgid "%s (Default)" msgstr "%s (Výchozí)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "Byly jsme přepojeni na %s" @@ -780,6 +780,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -798,6 +810,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -814,6 +830,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1849,7 +1873,7 @@ msgstr "Hovor přijat kým: %s." msgid "Incompatible, check codecs or security settings..." msgstr "Není slučitelné. Zkontrolujte nastavení kodeků a zabezpečení…" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "Neslučitelné parametry médií." @@ -1892,34 +1916,34 @@ msgstr "Volání odmítnuto." msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "Přesměrováno" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "Volání se nezdařilo." -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "Registrace na %s byla úspěšná." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "Odregistrování z %s hotovo." -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "odpověď nedorazila včas" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrace na %s selhala: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1948,6 +1972,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/de.po b/po/de.po index a97e08884..2cec8ab38 100644 --- a/po/de.po +++ b/po/de.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -209,7 +209,7 @@ msgstr "Linphone - ein Internet-Video-Telefon" msgid "%s (Default)" msgstr "%s (Vorgabe)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "Vermittlung nach %s" @@ -789,6 +789,19 @@ msgstr "gut" msgid "Too loud" msgstr "zu laut" +#: ../gtk/audio_assistant.c:183 +#, fuzzy +msgid "Did you hear three beeps ?" +msgstr "spiele drei Pieptöne ab" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -810,6 +823,10 @@ msgstr "aufgenommene Lautstärke" msgid "No voice" msgstr "Keine Stimme" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "Wiedergabegerät" @@ -826,6 +843,14 @@ msgstr "Drücken Sie den Aufnahmeknopf und sagen Sie etwas" msgid "Listen to your record voice" msgstr "Hören Sie das Aufgenommene" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "Linphone jetzt starten" @@ -1884,7 +1909,7 @@ msgstr "Anruf wird von %s entgegengenommen." msgid "Incompatible, check codecs or security settings..." msgstr "Inkompatibel, prüfe Codecs oder Sicherheitseinstellungen..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "Inkompatible Medienparameter." @@ -1927,34 +1952,34 @@ msgstr "Anruf abgewiesen" msgid "Request timeout." msgstr "Zeitüberschreitung bei der Anfrage" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "Umgeleitet" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "Anruf fehlgeschlagen." -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "Registrierung auf %s erfolgreich." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "Abmeldung von %s ist erfolgt." -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "Zeitüberschreitung bei der Antwort" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrierung auf %s fehlgeschlagen: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "Service nicht verfügbar, versuche erneut" @@ -1982,6 +2007,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/es.po b/po/es.po index f8a5bfba5..23516be7b 100644 --- a/po/es.po +++ b/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -200,7 +200,7 @@ msgstr "Linphone - un video-teléfono a través de Internet" msgid "%s (Default)" msgstr "%s (Opción predeterminada)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "Somos transferidos a %s" @@ -762,6 +762,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -780,6 +792,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -796,6 +812,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1834,7 +1858,7 @@ msgstr "" msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "" @@ -1877,34 +1901,34 @@ msgstr "Llamada rechazada." msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "Redigirida" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "timeout sin respuesta" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1932,6 +1956,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/fr.po b/po/fr.po index c83a84985..6293ef88b 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-12-01 14:27+0100\n" -"PO-Revision-Date: 2014-12-01 13:30+0000\n" +"POT-Creation-Date: 2014-12-03 13:39+0100\n" +"PO-Revision-Date: 2014-12-01 13:41+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: French (http://www.transifex.com/projects/p/linphone-gtk/" "language/fr/)\n" @@ -208,7 +208,7 @@ msgstr "Linphone - un téléphone video pour l'internet" msgid "%s (Default)" msgstr "%s (par défaut)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "Transfert vers %s" @@ -787,6 +787,19 @@ msgstr "Bien" msgid "Too loud" msgstr "Trop bruyant" +#: ../gtk/audio_assistant.c:183 +#, fuzzy +msgid "Did you hear three beeps ?" +msgstr "Joue trois bips" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -808,6 +821,10 @@ msgstr "Volume enregistré" msgid "No voice" msgstr "Silencieux" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "Périphérique d'écoute" @@ -824,6 +841,14 @@ msgstr "Appuyer sur le bouton enregistrer et dites quelques mots" msgid "Listen to your record voice" msgstr "Ecoutez votre voix enregistrée" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "Démarrons Linphone maintenant" @@ -1882,7 +1907,7 @@ msgstr "Appel répondu par %s." msgid "Incompatible, check codecs or security settings..." msgstr "Incompatible, vérfiez les codecs ou les paramètres de sécurité..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "Paramètres media incompatibles." @@ -1925,34 +1950,34 @@ msgstr "Appel décliné." msgid "Request timeout." msgstr "Délai d'attente de la requête dépassé." -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "Redirection" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "L'appel a échoué." -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "Enregistrement sur %s effectué." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "Désenregistrement sur %s effectué." -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "Pas de réponse" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "Echec de l'enregistrement sur %s: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "Service indisponible, nouvelle tentative" @@ -1980,6 +2005,10 @@ msgstr "terminé" msgid "missed" msgstr "manqué" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/he.po b/po/he.po index 594308819..8860ed86d 100644 --- a/po/he.po +++ b/po/he.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -205,7 +205,7 @@ msgstr "‫Linphone - וידאופון אינטרנטי" msgid "%s (Default)" msgstr "‫%s (ברירת מחדל)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "אנחנו מועברים אל %s" @@ -777,6 +777,19 @@ msgstr "טוב" msgid "Too loud" msgstr "חזק מדי" +#: ../gtk/audio_assistant.c:183 +#, fuzzy +msgid "Did you hear three beeps ?" +msgstr "נגן שלושה צפצופים" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -795,6 +808,10 @@ msgstr "" msgid "No voice" msgstr "אין קול" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "התקן השמעה" @@ -811,6 +828,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "הבא נתחיל את Linphone עכשיו" @@ -1845,7 +1870,7 @@ msgstr "קריאה נענתה על ידי %s." msgid "Incompatible, check codecs or security settings..." msgstr "חוסר תאימות, בדוק קודקים או הגדרות אבטחה..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "פרמטריי מדיה חסרי תואמים." @@ -1888,34 +1913,34 @@ msgstr "קריאה סורבה." msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "מכוון מחדש" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "קריאה נכשלה." -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "רישום אצל %s הושלם בהצלחה." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "אי רישום אצל %s סוים." -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "אין היענות תוך זמן מוגדר" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "רישום אצל %s נכשל: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1943,6 +1968,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/hu.po b/po/hu.po index 1fe343f05..314af405f 100644 --- a/po/hu.po +++ b/po/hu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -199,7 +199,7 @@ msgstr "Linphone - internetes videó telefon" msgid "%s (Default)" msgstr "%s (Alapértelmezett)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "Át vagyunk irányítva ide: %s" @@ -775,6 +775,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -793,6 +805,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -809,6 +825,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1848,7 +1872,7 @@ msgid "Incompatible, check codecs or security settings..." msgstr "" "Nem kompatibilis, ellenőrizze a kódek- vagy a biztonsági beállításokat..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "Nem kompatibilis médiajellemzők." @@ -1891,34 +1915,34 @@ msgstr "Hívás elutasítva" msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "Átirányítva" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "Nem sikerült a hívás." -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "A regisztáció a %s -n sikerült." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "A kiregisztrálás kész a következőn: %s ." -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "időtúllépés után nincs válasz" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "A regisztáció a %s -n nem sikerült: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1946,6 +1970,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/it.po b/po/it.po index 29577b62b..53fab0c8b 100644 --- a/po/it.po +++ b/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -196,7 +196,7 @@ msgstr "" msgid "%s (Default)" msgstr "%s (Default)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "" @@ -758,6 +758,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -776,6 +788,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -792,6 +808,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1826,7 +1850,7 @@ msgstr "" msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "" @@ -1869,34 +1893,34 @@ msgstr "Chiamata rifiutata" msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "Registrazione su %s attiva" -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "Unregistrazione su %s" -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "timeout no risposta" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrazione su %s fallita: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1924,6 +1948,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/ja.po b/po/ja.po index 004469d0b..b3cfa7019 100644 --- a/po/ja.po +++ b/po/ja.po @@ -9,9 +9,9 @@ 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" +"POT-Creation-Date: 2014-12-03 13:39+0100\n" +"PO-Revision-Date: 2014-12-01 16:32+0000\n" +"Last-Translator: Alexander\n" "Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/" "language/ja/)\n" "Language: ja\n" @@ -201,7 +201,7 @@ msgstr "Linphone - ビデオインターネット電話" msgid "%s (Default)" msgstr "%s (デフォルト)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "%s に転送しました" @@ -546,7 +546,7 @@ msgstr "エラー" #: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 msgid "Terminating" -msgstr "" +msgstr "終了" #: ../gtk/incall_view.c:70 ../gtk/incall_view.c:94 #, c-format @@ -657,15 +657,15 @@ msgstr "" #: ../gtk/incall_view.c:568 msgid "very poor" -msgstr "" +msgstr "非常にプアな" #: ../gtk/incall_view.c:570 msgid "too bad" -msgstr "" +msgstr "非常にバッドな" #: ../gtk/incall_view.c:571 ../gtk/incall_view.c:587 msgid "unavailable" -msgstr "" +msgstr "利用できません" #: ../gtk/incall_view.c:679 msgid "Secured by SRTP" @@ -762,6 +762,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -780,6 +792,10 @@ msgstr "" msgid "No voice" msgstr "音声なし" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -796,6 +812,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "録音した音声を聞く" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "Linphoneをはじめる" @@ -1837,7 +1861,7 @@ msgstr "" msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "" @@ -1880,34 +1904,34 @@ msgstr "通話は拒否されました。" msgid "Request timeout." msgstr "リクエストは時間切れです。" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1934,6 +1958,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/nb_NO.po b/po/nb_NO.po index fb24b907a..fda1ca808 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -200,7 +200,7 @@ msgstr "Linphone - en video Internet telefon" msgid "%s (Default)" msgstr "%s (Standard)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "Vi er overført til %s" @@ -764,6 +764,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -782,6 +794,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -798,6 +814,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1833,7 +1857,7 @@ msgstr "Samtale besvart av %s." msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "" @@ -1876,34 +1900,34 @@ msgstr "Samtale avvist." msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "Omdirigert" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "Samtale feilet." -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "Registrering hos %s lykkes." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "Avregistrering hos %s lykkes." -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "ingen svar innen angitt tid" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrering hos %s mislykkes: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1931,6 +1955,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/nl.po b/po/nl.po index 8ea8053c2..efa0e6ec5 100644 --- a/po/nl.po +++ b/po/nl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -193,7 +193,7 @@ msgstr "" msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "" @@ -753,6 +753,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -771,6 +783,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -787,6 +803,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1816,7 +1840,7 @@ msgstr "" msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "" @@ -1859,34 +1883,34 @@ msgstr "Oproep geweigerd." msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "Registratie op %s gelukt." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1914,6 +1938,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/pl.po b/po/pl.po index e2bcc91a4..6ab8c39dc 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -196,7 +196,7 @@ msgstr "" msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "" @@ -757,6 +757,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -775,6 +787,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -791,6 +807,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1820,7 +1844,7 @@ msgstr "" msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "" @@ -1863,34 +1887,34 @@ msgstr "Rozmowa odrzucona." msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1919,6 +1943,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/pt_BR.po b/po/pt_BR.po index 26581a852..fde6c49fb 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -193,7 +193,7 @@ msgstr "" msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "" @@ -753,6 +753,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -771,6 +783,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -787,6 +803,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1816,7 +1840,7 @@ msgstr "" msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "" @@ -1859,34 +1883,34 @@ msgstr "" msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1914,6 +1938,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/ru.po b/po/ru.po index 850f002c0..cd9f26fee 100644 --- a/po/ru.po +++ b/po/ru.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -212,7 +212,7 @@ msgstr "Linphone - интернет видео телефон" msgid "%s (Default)" msgstr "%s (по умолчанию)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "Мы передали в %s" @@ -791,6 +791,19 @@ msgstr "Хорошо" msgid "Too loud" msgstr "Слишком громко" +#: ../gtk/audio_assistant.c:183 +#, fuzzy +msgid "Did you hear three beeps ?" +msgstr "Проиграть три сигнала" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -809,6 +822,10 @@ msgstr "Уровень записи" msgid "No voice" msgstr "Нет голоса" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "Устройство воспроизведения" @@ -825,6 +842,14 @@ msgstr "Нажмите кнопку записи и скажите нескол msgid "Listen to your record voice" msgstr "Прослушайте ваш записанный голос" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "Давайте сейчас запустим linphone" @@ -1881,7 +1906,7 @@ msgstr "На звонок ответил %s." msgid "Incompatible, check codecs or security settings..." msgstr "Несовместимость, проверьте кодеки или параметры безопасности..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "Несовместимость медиа-параметров." @@ -1924,34 +1949,34 @@ msgstr "Звонок отклонён." msgid "Request timeout." msgstr "Таймаут запроса." -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "Переадресован" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "Звонок не удался." -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "Регистрация на %s прошла успешно." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "Отмена регистрации на %s завершена." -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "время ожидания истекло" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "Регистрация на %s не удалась: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "Сервис недоступен, повтор" @@ -1980,6 +2005,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/sr.po b/po/sr.po index cc7879209..0b339c65e 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-12-01 14:27+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2014-12-03 13:39+0100\n" +"PO-Revision-Date: 2014-12-02 10:05+0000\n" +"Last-Translator: Мирослав Николић \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/linphone-gtk/" "language/sr/)\n" "Language: sr\n" @@ -208,7 +208,7 @@ msgstr "Линфон — интернет телефон са снимком" msgid "%s (Default)" msgstr "%s (основно)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "Преселили смо се на %s" @@ -786,6 +786,19 @@ msgstr "Добар" msgid "Too loud" msgstr "Сувише гласан" +#: ../gtk/audio_assistant.c:183 +#, fuzzy +msgid "Did you hear three beeps ?" +msgstr "Пусти три писка" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -806,6 +819,10 @@ msgstr "Снимљени волумен" msgid "No voice" msgstr "Нема гласа" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "Уређај за пуштање" @@ -822,6 +839,14 @@ msgstr "Притисните дугме за снимање и реците не msgid "Listen to your record voice" msgstr "Слушајте ваш снимљени глас" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "Хајде сада да покренемо Линфон" @@ -1877,7 +1902,7 @@ msgstr "На позив је одговорио „%s“." msgid "Incompatible, check codecs or security settings..." msgstr "Несагласно, проверите кодеке или безбедносна подешавања..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "Медијски параметри су несагласни." @@ -1920,34 +1945,34 @@ msgstr "Позив је одбијен." msgid "Request timeout." msgstr "Истекло је време захтева." -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "Преусмерен" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "Позив није успео." -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "Уписивање на „%s“ је успело." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "Исписивање са „%s“ је обављено." -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "нема ограничења одговора" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "Уписивање на „%s“ није успело: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "Услуга није доступна, поново покушавам" @@ -1966,14 +1991,18 @@ msgstr[2] "Пропустили сте %i позива." #: ../coreapi/call_log.c:209 msgid "aborted" -msgstr "" +msgstr "прекинут" #: ../coreapi/call_log.c:212 msgid "completed" -msgstr "" +msgstr "завршен" #: ../coreapi/call_log.c:215 msgid "missed" +msgstr "пропуштен" + +#: ../coreapi/call_log.c:218 +msgid "unknown" msgstr "" #: ../coreapi/call_log.c:220 @@ -1985,12 +2014,17 @@ msgid "" "Status: %s\n" "Duration: %i mn %i sec\n" msgstr "" +"%s на %s\n" +"Позивач: %s\n" +"Позивник: %s\n" +"Стање: %s\n" +"Трајање: %i мин. %i сек.\n" #: ../coreapi/call_log.c:221 msgid "Outgoing call" -msgstr "" +msgstr "Одлазни позив" #: ../gtk/videowindow.c:66 #, c-format msgid "Cannot play %s." -msgstr "" +msgstr "Не могу да пустим „%s“." diff --git a/po/sv.po b/po/sv.po index 9c326620c..e4cc62a10 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -199,7 +199,7 @@ msgstr "Linphone - en video Internet telefon" msgid "%s (Default)" msgstr "%s (Default)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "" @@ -761,6 +761,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -779,6 +791,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -795,6 +811,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1829,7 +1853,7 @@ msgstr "" msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "" @@ -1872,34 +1896,34 @@ msgstr "Samtalet avböjdes." msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "Registrering hos %s lyckades." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "Avregistrering hos %s lyckades." -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "Inget svar inom angiven tid" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrering hos %s mislyckades: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1927,6 +1951,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 18a459c64..c7f5f7fd4 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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-" @@ -194,7 +194,7 @@ msgstr "Linphone - 互联网视频电话" msgid "%s (Default)" msgstr "%s (默认)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "" @@ -757,6 +757,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -775,6 +787,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -791,6 +807,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1822,7 +1846,7 @@ msgstr "" msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "" @@ -1865,34 +1889,34 @@ msgstr "呼叫被拒绝。" msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "已重定向" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "呼叫失败。" -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "成功注册到 %s" -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "已在 %s 解除注册。" -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "没有响应,超时" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "注册到 %s 失败: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1919,6 +1943,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" diff --git a/po/zh_TW.po b/po/zh_TW.po index d3dfa7ab7..977249f46 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-12-01 14:27+0100\n" +"POT-Creation-Date: 2014-12-03 13:39+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/" @@ -195,7 +195,7 @@ msgstr "Linphone - 網路視訊電話" msgid "%s (Default)" msgstr "%s (預設值)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "我們被轉接到 %s" @@ -758,6 +758,18 @@ msgstr "" msgid "Too loud" msgstr "" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "" + #: ../gtk/audio_assistant.c:318 msgid "" "Welcome!\n" @@ -776,6 +788,10 @@ msgstr "" msgid "No voice" msgstr "" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "" @@ -792,6 +808,14 @@ msgstr "" msgid "Listen to your record voice" msgstr "" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "" @@ -1824,7 +1848,7 @@ msgstr "通話由 %s 接聽。" msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "" @@ -1867,34 +1891,34 @@ msgstr "通話被拒接。" msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "已重新導向" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "通話失敗。" -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "在 %s 註冊成功。" -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "在 %s 取消註冊完成。" -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "沒有回應逾時" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "在 %s 註冊失敗:%s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "" @@ -1921,6 +1945,10 @@ msgstr "" msgid "missed" msgstr "" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "" + #: ../coreapi/call_log.c:220 #, c-format msgid "" From 15c6f3b8987fbe1958dc2b5cc9a194f7b0892f70 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 3 Dec 2014 17:36:39 +0100 Subject: [PATCH 100/496] Correctly fill ALL_LINGUAS in configure.ac --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 067a13b62..aa93f23e7 100644 --- a/configure.ac +++ b/configure.ac @@ -129,7 +129,7 @@ AC_CONFIG_COMMANDS([libtool-hacking], dnl Add the languages which your application supports here. PKG_PROG_PKG_CONFIG -ALL_LINGUAS="fr it de ja es pl cs nl sv pt_BR hu ru zh_CN nb_NO zh_TW he sr" +ALL_LINGUAS=$(cd po && echo *.po | sed 's/\.po//g') AC_SUBST(ALL_LINGUAS) AC_DEFINE_UNQUOTED(LINPHONE_ALL_LANGS, "$ALL_LINGUAS", [All supported languages]) From 124beb8e559a05da2a8ba6a77c2ada07c5116356 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 4 Dec 2014 10:39:46 +0100 Subject: [PATCH 101/496] Fix linphonecontent when ZLIB is available --- coreapi/linphonecore.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index de0c1228d..f051c7b2d 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -559,8 +559,8 @@ void linphone_core_upload_log_collection(LinphoneCore *core) { core->log_collection_upload_information = (LinphoneContent *)malloc(sizeof(LinphoneContent)); memset(core->log_collection_upload_information, 0, sizeof(LinphoneContent)); #ifdef HAVE_ZLIB - core->log_collection_upload_information->type = "application"; - core->log_collection_upload_information->subtype = "gzip"; + linphone_content_set_type(core->log_collection_upload_information, "application"); + linphone_content_set_subtype(core->log_collection_upload_information, "gzip"); #else linphone_content_set_type(core->log_collection_upload_information, "text"); linphone_content_set_subtype(core->log_collection_upload_information,"plain"); From a3080b65c292a2f7e3ea6d8e70e1fd96ea6d4c41 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 4 Dec 2014 11:05:31 +0100 Subject: [PATCH 102/496] Add .desktop files on Transifex --- .gitignore | 3 +++ .tx/config | 12 ++++++++- share/linphone.desktop.in | 56 ++++++++++++--------------------------- 3 files changed, 31 insertions(+), 40 deletions(-) diff --git a/.gitignore b/.gitignore index 85a6aed1d..2bbd7b4c4 100644 --- a/.gitignore +++ b/.gitignore @@ -78,3 +78,6 @@ Linphone.app *.dmg tester/linphone*.log tester/linphone_log.txt +.tx/linphone-gtk.linphonedesktopin/ +po/linphone.pot +.tx/linphone-gtk.audio-assistantdesktopin/ diff --git a/.tx/config b/.tx/config index 4c2a2acd7..0b35698f1 100644 --- a/.tx/config +++ b/.tx/config @@ -1,10 +1,20 @@ [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 +type = PO + +[linphone-gtk.linphonedesktopin] +source_file = share/linphone.desktop.in +source_lang = en +type = DESKTOP + +[linphone-gtk.audio-assistantdesktopin] +source_file = share/audio-assistant.desktop.in +source_lang = en +type = DESKTOP diff --git a/share/linphone.desktop.in b/share/linphone.desktop.in index c162ed904..725c7e105 100644 --- a/share/linphone.desktop.in +++ b/share/linphone.desktop.in @@ -1,47 +1,25 @@ [Desktop Entry] Name=Linphone Comment=Linphone is a web-phone -Comment[fr]=Linphone est un web-phone. -Comment[de]=Linphone ist ein web-phone. -Comment[af]=Linphone is 'n webtelefoon -Comment[sq]=Linphone është një telefon interneti -Comment[ast]=Linphone ye un teléfonu web -Comment[bn]=Linphone একটি ওয়েব ফোন -Comment[bs]=Linphone je mrežni telefon -Comment[pt_BR]=Linphone é um telefone web -Comment[bg]=Linphone е уеб телефон -Comment[ca@valencia]=El Linphone és un telèfon web -Comment[ca]=El Linphone és un telèfon web -Comment[zh_HK]=Linphone 是網絡電話(web-phone) -Comment[zh_TW]=Linphone 是網路電話(web-phone) -Comment[zh_CN]=Linphone 是一个网络电话程序 -Comment[crh]=Linphone bir web-telefonudur -Comment[nl]=Linphone is een webtelefoon -Comment[da]=Linphone er en nettelefon -Comment[cs]=Linphone webový telefon -Comment[fi]=Linphone on verkkopuhelin -Comment[gl]=Linphone é un teléfono-web -Comment[el]=Το Linphone είναι ένα διαδικτυακό τηλέφωνο -Comment[hu]=A Linphone egy webes telefon -Comment[is]=Linphone er vefsími -Comment[it]=Linphone è un telefono web -Comment[ja]=Linphone はウェブ電話です -Comment[ky]=Linphone - бул веб - телефон -Comment[ms]=Linphone adalah telefon-sesawang -Comment[oc]=Linphone es una aisina de telefonia IP -Comment[pl]=Rozbudowany telefon internetowy z funkcją wideorozmowy -Comment[nb]=Lintelefon er en nett-telefon -Comment[pt]=Linphone é um telefone da internet -Comment[ro]=Linphone este un telefon web -Comment[ru]=Linphone — это веб-телефон -Comment[sl]=Linphone je spletni telefon -Comment[sv]=Webbtelefon -Comment[es]=Linphone es un teléfono web -Comment[vi]=Linphone là một điện thoại web -Comment[uk]=Інтернет-телефон -Comment[tr]=Linphone bir web-telefonudur Type=Application Exec=linphone Icon=@prefix@/share/pixmaps/linphone/linphone.png Terminal=false Categories=Network;Telephony; + + +# Translations +Name[de]=Linphone +Name[he]=Linphone +Name[ar]=لِنْفُونْ +Name[hu]=Linphone +Name[ru]=Linphone +Name[nb_NO]=Linphone +Name[it]=Linphone +Name[ja]=Linphone +Name[cs]=Linphone +Name[sr]=Линфон +Name[sv]=Linphone +Name[zh_CN]=Linphone +Name[fr]=Linphone +Name[zh_TW]=Linphone From 08d1dd066e57d553ec6d937cf3dfad233aa0fcba Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 4 Dec 2014 11:07:20 +0100 Subject: [PATCH 103/496] update po files --- po/ar.po | 165 +++++++++++++++++++++++++++++++++++++++------------- po/cs.po | 2 +- po/de.po | 5 +- po/es.po | 2 +- po/fr.po | 17 +++--- po/he.po | 5 +- po/hu.po | 2 +- po/it.po | 2 +- po/ja.po | 30 +++++----- po/nb_NO.po | 2 +- po/nl.po | 2 +- po/pl.po | 2 +- po/pt_BR.po | 2 +- po/ru.po | 5 +- po/sr.po | 17 +++--- po/sv.po | 2 +- po/zh_CN.po | 2 +- po/zh_TW.po | 2 +- 18 files changed, 174 insertions(+), 92 deletions(-) diff --git a/po/ar.po b/po/ar.po index 9ffd49675..23def9ce8 100644 --- a/po/ar.po +++ b/po/ar.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: # محيي الدين , 2014 # محيي الدين , 2014 @@ -9,15 +9,17 @@ 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 17:44+0000\n" +"POT-Creation-Date: 2014-12-03 13:39+0100\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: محيي الدين \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/linphone-gtk/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/projects/p/linphone-gtk/" +"language/ar/)\n" +"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" +"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 @@ -77,7 +79,9 @@ msgstr[5] "%i ثانية" 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:341 #, c-format @@ -127,9 +131,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" @@ -143,16 +148,22 @@ 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هل تريد السماح له برؤية معلومات حضورك وكذا إضافته إلى جهة اتصالك أيضا ؟ إذا أجبت ب لا، سيُحظَر هذا الشخص مؤقتا." +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:" +msgstr "" +"ادخل كلمة السر ل %s\n" +" في نطاق %s:" #: ../gtk/main.c:1283 msgid "Call error" @@ -201,7 +212,7 @@ msgstr "لِنْفُونْ - الهاتف المرئي عبر الإنترنت" msgid "%s (Default)" msgstr "%s (افتراضي)" -#: ../gtk/main.c:2006 ../coreapi/callbacks.c:983 +#: ../gtk/main.c:2006 ../coreapi/callbacks.c:986 #, c-format msgid "We are transferred to %s" msgstr "التحويل إلى %s" @@ -210,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" @@ -383,7 +396,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." @@ -424,7 +439,9 @@ msgstr[5] "عُثِر على %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" @@ -502,7 +519,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." @@ -510,9 +529,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 "يُرجى تأكيد حسابك وذلك بالضغط على الوصلة التي أرسلناها لك بالبريد الإلكتروني.\nثم ارجع إلى هنا واضغط على زر التالي." +msgstr "" +"يُرجى تأكيد حسابك وذلك بالضغط على الوصلة التي أرسلناها لك بالبريد " +"الإلكتروني.\n" +"ثم ارجع إلى هنا واضغط على زر التالي." #: ../gtk/setupwizard.c:602 msgid "SIP account configuration assistant" @@ -617,7 +640,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 @@ -727,7 +752,9 @@ msgstr "إيقاف مؤقت" msgid "" "Recording into\n" "%s %s" -msgstr "يسجل في\n%s %s" +msgstr "" +"يسجل في\n" +"%s %s" #: ../gtk/incall_view.c:948 msgid "(Paused)" @@ -764,11 +791,25 @@ msgstr "جيد" msgid "Too loud" msgstr "صاخب" +#: ../gtk/audio_assistant.c:183 +msgid "Did you hear three beeps ?" +msgstr "هل سمعت ثلاث رنات ؟" + +#: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 +msgid "Sound preferences not found " +msgstr "لم يعثر على تفضيلات الصوت" + +#: ../gtk/audio_assistant.c:306 +msgid "Cannot launch system sound control " +msgstr "لم يتمكن من تشغيل التحكم في الصوت للنظام" + #: ../gtk/audio_assistant.c:318 msgid "" "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" @@ -782,6 +823,10 @@ msgstr "الحجم المسجَّل" msgid "No voice" msgstr "صامت" +#: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 +msgid "System sound preferences" +msgstr "تفضيلات الصوت للنظام" + #: ../gtk/audio_assistant.c:369 msgid "Playback device" msgstr "جهاز السماع" @@ -798,6 +843,14 @@ msgstr "اضغط على زر التسجيل وانطق ببعض الكلمات" msgid "Listen to your record voice" msgstr "استمع لصوتك المسجَّل" +#: ../gtk/audio_assistant.c:405 +msgid "Record" +msgstr "تسجيل" + +#: ../gtk/audio_assistant.c:406 +msgid "Play" +msgstr "تشغيل" + #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" msgstr "لنُشغِّل لِنْفُونْ الآن" @@ -1008,7 +1061,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 \nar: Muhiyeddine Cherik \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" +"ar: Muhiyeddine Cherik \n" #: ../gtk/contact.ui.h:2 msgid "SIP Address" @@ -1394,7 +1460,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" @@ -1643,9 +1711,16 @@ 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أدخل العنوان أسفله. بعد تأكيد الأمر، ستجري إعادة تشغيل لِنْفُونْ تلقائيا من أجل جلب والأخذ بعين الاعتبار الإعدادات الحديثة." +"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..." @@ -1776,13 +1851,16 @@ msgstr "حالة مجهولة" 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:username@proxydomain، مثلا sip:alice@example.net" +msgstr "" +"هوية SIP التي أدخلت غير صحيحة.\n" +"يجب أن تشبه هذا النمط sip:username@proxydomain، مثلا sip:alice@example.net" #: ../coreapi/proxy.c:1377 #, c-format @@ -1824,7 +1902,7 @@ msgstr "أجاب عن المكالمة %s." msgid "Incompatible, check codecs or security settings..." msgstr "غير موائم، تحقق من المراميز أو إعدادات الأمان..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:826 +#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 msgid "Incompatible media parameters." msgstr "إعدادات الوسائط غير موائمة." @@ -1867,34 +1945,34 @@ msgstr "تم تجاهل المكالمة." msgid "Request timeout." msgstr "انتهت مهلة الطلب." -#: ../coreapi/callbacks.c:780 +#: ../coreapi/callbacks.c:783 msgid "Redirected" msgstr "مُوجَّه" -#: ../coreapi/callbacks.c:835 +#: ../coreapi/callbacks.c:838 msgid "Call failed." msgstr "فشل الاتصال." -#: ../coreapi/callbacks.c:913 +#: ../coreapi/callbacks.c:916 #, c-format msgid "Registration on %s successful." msgstr "تم التسجيل في %s بنجاح." -#: ../coreapi/callbacks.c:914 +#: ../coreapi/callbacks.c:917 #, c-format msgid "Unregistration on %s done." msgstr "أُلغي التسجيل في %s ." -#: ../coreapi/callbacks.c:932 +#: ../coreapi/callbacks.c:935 msgid "no response timeout" msgstr "لا إجابة قبل انتهاء المهلة" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:938 #, c-format msgid "Registration on %s failed: %s" msgstr "فَشِل التسجيل في %s: %s" -#: ../coreapi/callbacks.c:942 +#: ../coreapi/callbacks.c:945 msgid "Service unavailable, retrying" msgstr "خدمة غير متاحة، تجري الإعادة" @@ -1926,6 +2004,10 @@ msgstr "اكتملت" msgid "missed" msgstr "فاتت" +#: ../coreapi/call_log.c:218 +msgid "unknown" +msgstr "مجهول" + #: ../coreapi/call_log.c:220 #, c-format msgid "" @@ -1934,7 +2016,12 @@ msgid "" "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" +msgstr "" +"%s في %s\n" +"من : %s\n" +"إلى : %s\n" +"الحالة : %s\n" +"المدة : %i دقيقة %i ثانية\n" #: ../coreapi/call_log.c:221 msgid "Outgoing call" diff --git a/po/cs.po b/po/cs.po index 28b929f6a..36f3908b2 100644 --- a/po/cs.po +++ b/po/cs.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Czech (http://www.transifex.com/projects/p/linphone-gtk/" "language/cs/)\n" diff --git a/po/de.po b/po/de.po index 2cec8ab38..722a39390 100644 --- a/po/de.po +++ b/po/de.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/" "language/de/)\n" @@ -790,9 +790,8 @@ msgid "Too loud" msgstr "zu laut" #: ../gtk/audio_assistant.c:183 -#, fuzzy msgid "Did you hear three beeps ?" -msgstr "spiele drei Pieptöne ab" +msgstr "" #: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 msgid "Sound preferences not found " diff --git a/po/es.po b/po/es.po index 23516be7b..94034a03e 100644 --- a/po/es.po +++ b/po/es.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-03 12:39+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/linphone-gtk/" "language/es/)\n" diff --git a/po/fr.po b/po/fr.po index 6293ef88b..5e41a459f 100644 --- a/po/fr.po +++ b/po/fr.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:41+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: French (http://www.transifex.com/projects/p/linphone-gtk/" "language/fr/)\n" @@ -788,17 +788,16 @@ msgid "Too loud" msgstr "Trop bruyant" #: ../gtk/audio_assistant.c:183 -#, fuzzy msgid "Did you hear three beeps ?" -msgstr "Joue trois bips" +msgstr "Avez-vous entendu trois bips ?" #: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 msgid "Sound preferences not found " -msgstr "" +msgstr "Préférences son non trouvé" #: ../gtk/audio_assistant.c:306 msgid "Cannot launch system sound control " -msgstr "" +msgstr "Impossible de démarrer le contrôleur système du son" #: ../gtk/audio_assistant.c:318 msgid "" @@ -823,7 +822,7 @@ msgstr "Silencieux" #: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 msgid "System sound preferences" -msgstr "" +msgstr "Préférences son système" #: ../gtk/audio_assistant.c:369 msgid "Playback device" @@ -843,11 +842,11 @@ msgstr "Ecoutez votre voix enregistrée" #: ../gtk/audio_assistant.c:405 msgid "Record" -msgstr "" +msgstr "Enregistrer" #: ../gtk/audio_assistant.c:406 msgid "Play" -msgstr "" +msgstr "Jouer" #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" @@ -2007,7 +2006,7 @@ msgstr "manqué" #: ../coreapi/call_log.c:218 msgid "unknown" -msgstr "" +msgstr "inconnu" #: ../coreapi/call_log.c:220 #, c-format diff --git a/po/he.po b/po/he.po index 8860ed86d..841b4e161 100644 --- a/po/he.po +++ b/po/he.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/linphone-gtk/" "language/he/)\n" @@ -778,9 +778,8 @@ msgid "Too loud" msgstr "חזק מדי" #: ../gtk/audio_assistant.c:183 -#, fuzzy msgid "Did you hear three beeps ?" -msgstr "נגן שלושה צפצופים" +msgstr "" #: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 msgid "Sound preferences not found " diff --git a/po/hu.po b/po/hu.po index 314af405f..e993a1b8a 100644 --- a/po/hu.po +++ b/po/hu.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Hungarian (http://www.transifex.com/projects/p/linphone-gtk/" "language/hu/)\n" diff --git a/po/it.po b/po/it.po index 53fab0c8b..b2f0d2ca6 100644 --- a/po/it.po +++ b/po/it.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Italian (http://www.transifex.com/projects/p/linphone-gtk/" "language/it/)\n" diff --git a/po/ja.po b/po/ja.po index b3cfa7019..a3d453f47 100644 --- a/po/ja.po +++ b/po/ja.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 16:32+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Alexander\n" "Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/" "language/ja/)\n" @@ -645,7 +645,7 @@ msgstr "着信" #: ../gtk/incall_view.c:562 msgid "good" -msgstr "" +msgstr "良い" #: ../gtk/incall_view.c:564 msgid "average" @@ -653,7 +653,7 @@ msgstr "アベレージ" #: ../gtk/incall_view.c:566 msgid "poor" -msgstr "" +msgstr "悪い" #: ../gtk/incall_view.c:568 msgid "very poor" @@ -674,19 +674,19 @@ msgstr "SRTPのセキュリティ" #: ../gtk/incall_view.c:685 #, c-format msgid "Secured by ZRTP - [auth token: %s]" -msgstr "" +msgstr "ZRTP によるセキュリティ - [auth token: %s]" #: ../gtk/incall_view.c:691 msgid "Set unverified" -msgstr "" +msgstr "セット未検証" #: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 msgid "Set verified" -msgstr "" +msgstr "セット検証済" #: ../gtk/incall_view.c:722 msgid "In conference" -msgstr "" +msgstr "会議で" #: ../gtk/incall_view.c:722 msgid "In call" @@ -702,7 +702,7 @@ msgstr "" #: ../gtk/incall_view.c:825 msgid "Transfer in progress" -msgstr "" +msgstr "進行中の転送" #: ../gtk/incall_view.c:828 msgid "Transfer done." @@ -748,31 +748,31 @@ msgstr "" #: ../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:183 msgid "Did you hear three beeps ?" -msgstr "" +msgstr "3回のビープ音が聞こえましたか?" #: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 msgid "Sound preferences not found " -msgstr "" +msgstr "音声の設定が見つかりません" #: ../gtk/audio_assistant.c:306 msgid "Cannot launch system sound control " -msgstr "" +msgstr "音声制御システムを起動できません" #: ../gtk/audio_assistant.c:318 msgid "" diff --git a/po/nb_NO.po b/po/nb_NO.po index fda1ca808..fbf404aa5 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+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" diff --git a/po/nl.po b/po/nl.po index efa0e6ec5..a9b238bc5 100644 --- a/po/nl.po +++ b/po/nl.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-03 12:39+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/linphone-gtk/" "language/nl/)\n" diff --git a/po/pl.po b/po/pl.po index 6ab8c39dc..11376931f 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-03 12:39+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Polish (http://www.transifex.com/projects/p/linphone-gtk/" "language/pl/)\n" diff --git a/po/pt_BR.po b/po/pt_BR.po index fde6c49fb..cafe7bd91 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-03 12:39+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" "linphone-gtk/language/pt_BR/)\n" diff --git a/po/ru.po b/po/ru.po index cd9f26fee..f8fa42081 100644 --- a/po/ru.po +++ b/po/ru.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Russian (http://www.transifex.com/projects/p/linphone-gtk/" "language/ru/)\n" @@ -792,9 +792,8 @@ msgid "Too loud" msgstr "Слишком громко" #: ../gtk/audio_assistant.c:183 -#, fuzzy msgid "Did you hear three beeps ?" -msgstr "Проиграть три сигнала" +msgstr "" #: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 msgid "Sound preferences not found " diff --git a/po/sr.po b/po/sr.po index 0b339c65e..84541289d 100644 --- a/po/sr.po +++ b/po/sr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-02 10:05+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/linphone-gtk/" "language/sr/)\n" @@ -787,17 +787,16 @@ msgid "Too loud" msgstr "Сувише гласан" #: ../gtk/audio_assistant.c:183 -#, fuzzy msgid "Did you hear three beeps ?" -msgstr "Пусти три писка" +msgstr "Да ли сте чули три писка ?" #: ../gtk/audio_assistant.c:292 ../gtk/audio_assistant.c:297 msgid "Sound preferences not found " -msgstr "" +msgstr "Нисам пронашао поставке звука " #: ../gtk/audio_assistant.c:306 msgid "Cannot launch system sound control " -msgstr "" +msgstr "Не могу да покренем управљање звуком система " #: ../gtk/audio_assistant.c:318 msgid "" @@ -821,7 +820,7 @@ msgstr "Нема гласа" #: ../gtk/audio_assistant.c:334 ../gtk/audio_assistant.c:373 msgid "System sound preferences" -msgstr "" +msgstr "Поставке звука система" #: ../gtk/audio_assistant.c:369 msgid "Playback device" @@ -841,11 +840,11 @@ msgstr "Слушајте ваш снимљени глас" #: ../gtk/audio_assistant.c:405 msgid "Record" -msgstr "" +msgstr "Сними" #: ../gtk/audio_assistant.c:406 msgid "Play" -msgstr "" +msgstr "Пусти" #: ../gtk/audio_assistant.c:433 msgid "Let's start Linphone now" @@ -2003,7 +2002,7 @@ msgstr "пропуштен" #: ../coreapi/call_log.c:218 msgid "unknown" -msgstr "" +msgstr "непознато" #: ../coreapi/call_log.c:220 #, c-format diff --git a/po/sv.po b/po/sv.po index e4cc62a10..631dde639 100644 --- a/po/sv.po +++ b/po/sv.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/linphone-gtk/" "language/sv/)\n" diff --git a/po/zh_CN.po b/po/zh_CN.po index c7f5f7fd4..79bd07e81 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/linphone-" "gtk/language/zh_CN/)\n" diff --git a/po/zh_TW.po b/po/zh_TW.po index 977249f46..60fc52aee 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-03 13:39+0100\n" -"PO-Revision-Date: 2014-12-01 13:28+0000\n" +"PO-Revision-Date: 2014-12-04 09:51+0000\n" "Last-Translator: Gautier Pelloux-Prayer \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/" "linphone-gtk/language/zh_TW/)\n" From a2b77426c66fc63b7c60a0209eafd66176e89187 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 4 Dec 2014 15:39:38 +0100 Subject: [PATCH 104/496] Minor README change - should be totally rewrite though --- po/README | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/po/README b/po/README index 19a1dbd53..68c47a874 100644 --- a/po/README +++ b/po/README @@ -1,13 +1,12 @@ How to add a translation file ***************************** To add a translation file in linphone project you should first : - - change the variable ALL_LINGUAS in configure.ac by adding the language (ex: fr) - - then add the file .po in the directory /po + - add the file .po in the directory /po - run ./autogen.sh -Update the translation files +Update the translation files *************************** -To update all the translation files, in the directory /po run the following command +To update all the translation files, in the directory /po run the following command $ make update-po From 570ed0f598e303b29a62ad0e02ad419217cabb95 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 4 Dec 2014 15:55:24 +0100 Subject: [PATCH 105/496] Invert check order in log collection because file checking consumes lot of time --- 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 b9c1835c5..4f18f1224 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -161,7 +161,7 @@ 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)); + CU_ASSERT_EQUAL(check_file(filepath), ms_time(0)); linphone_core_manager_destroy(marie); } @@ -171,7 +171,7 @@ static void collect_files_small_size() { 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)); + CU_ASSERT_EQUAL(check_file(filepath), ms_time(0)); linphone_core_manager_destroy(marie); } @@ -182,7 +182,7 @@ static void collect_files_changing_size() { filepath = linphone_core_compress_log_collection(marie->lc); CU_ASSERT_PTR_NOT_NULL(filepath); - CU_ASSERT_EQUAL(ms_time(0), check_file(filepath)); + CU_ASSERT_EQUAL(check_file(filepath), ms_time(0)); linphone_core_set_log_collection_max_file_size(5000); // Generate some logs @@ -190,7 +190,7 @@ static void collect_files_changing_size() { filepath = linphone_core_compress_log_collection(marie->lc); CU_ASSERT_PTR_NOT_NULL(filepath); - CU_ASSERT_EQUAL(ms_time(0), check_file(filepath)); + CU_ASSERT_EQUAL(check_file(filepath), ms_time(0)); linphone_core_manager_destroy(marie); } From 381744b0f4f2b68bb2c56fbbd7482808a312c830 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 4 Dec 2014 16:25:36 +0100 Subject: [PATCH 106/496] Handle msg storage option when building with CMake. --- CMakeLists.txt | 10 ++++++++++ coreapi/CMakeLists.txt | 3 +++ 2 files changed, 13 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 85a86bf42..390812533 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,6 +86,12 @@ if(ENABLE_TUNNEL) set(ENABLE_TUNNEL OFF CACHE BOOL "Enable tunnel support." FORCE) endif() endif() +if(ENABLE_MSG_STORAGE) + find_package(Sqlite3) + if(NOT SQLITE3_FOUND) + message(FATAL_ERROR "Could not find the sqlite3 library!") + endif() +endif() if(ENABLE_NOTIFY) find_package(Notify) if(NOTIFY_FOUND) @@ -107,6 +113,10 @@ include_directories( ${MS2_INCLUDE_DIRS} ${XML2_INCLUDE_DIRS} ) +if(SQLITE3_FOUND) + include_directories(${SQLITE3_INCLUDE_DIRS}) + add_definitions("-DMSG_STORAGE_ENABLED") +endif() if(ENABLE_TUNNEL) include_directories(${TUNNEL_INCLUDE_DIRS}) endif() diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt index cb417a612..92689dcb8 100644 --- a/coreapi/CMakeLists.txt +++ b/coreapi/CMakeLists.txt @@ -117,6 +117,9 @@ set(LIBS ${MS2_LIBRARIES} ${XML2_LIBRARIES} ) +if(SQLITE3_FOUND) + list(APPEND LIBS ${SQLITE3_LIBRARIES}) +endif() if(ENABLE_TUNNEL) list(APPEND LIBS ${TUNNEL_LIBRARIES}) endif() From 754f4657cda73459969668b338d20def501dc102 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 4 Dec 2014 22:20:30 +0100 Subject: [PATCH 107/496] pass workdir with environment variable, because passing it from arguments doesn't work if the path has a space. --- build/macos/environment.sh | 3 ++- gtk/main.c | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/build/macos/environment.sh b/build/macos/environment.sh index 3b9ff16af..b466fecc4 100644 --- a/build/macos/environment.sh +++ b/build/macos/environment.sh @@ -1,4 +1,5 @@ -export EXTRA_ARGS="--workdir $bundle_res" +#export EXTRA_ARGS="--workdir $bundle_res" +export LINPHONE_WORKDIR="$bundle_res" export GIO_EXTRA_MODULES="$bundle_lib/gio/modules" export PANGO_LIBDIR="$bundle_lib" export PANGO_SYSCONFDIR="$bundle_etc" diff --git a/gtk/main.c b/gtk/main.c index ea3078c9a..1a582ebd8 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -2101,6 +2101,7 @@ int main(int argc, char *argv[]){ LpConfig *factory; const char *db_file; GError *error=NULL; + const char *tmp; #if !GLIB_CHECK_VERSION(2, 31, 0) g_thread_init(NULL); @@ -2110,6 +2111,8 @@ int main(int argc, char *argv[]){ progpath = strdup(argv[0]); config_file=linphone_gtk_get_config_file(NULL); + + workingdir= (tmp=g_getenv("LINPHONE_WORKDIR")) ? g_strdup(tmp) : NULL; #ifdef WIN32 /*workaround for windows: sometimes LANG is defined to an integer value, not understood by gtk */ From b67b596f390767d2e7e294de1e3e327276cb9bc6 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 4 Dec 2014 22:46:41 +0100 Subject: [PATCH 108/496] allow passing of directory prefix where to pickup dependencies when running the mac bundler. --- Makefile.am | 4 +++- build/macos/linphone.bundle | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index dd66874b2..2fd425a0d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -205,7 +205,8 @@ MACAPPZIP=$(PACKAGE)-$(VERSION).app.zip MACAPPDMG=$(PACKAGE)-$(VERSION).dmg BUNDLEPREFIX=./ BUNDLEDIR=$(BUNDLEPREFIX)$(MACAPPNAME) - +#a path prefix where additional libs can be cherry-picked by the bundler. +LINPHONE_ADDITIONAL_DEPENDENCIES_PREFIX=/usr/local bundle: rm -rf $(INSTALLDIR) @@ -215,6 +216,7 @@ bundle: LINPHONE_INSTALL_PREFIX=$(INSTALLDIR_WITH_PREFIX) \ LIBLINPHONE_INSTALL_PREFIX=$(INSTALLDIR_WITH_PREFIX) \ MS2_PLUGINS_INSTALL_PREFIX=$(prefix) \ + LINPHONE_ADDITIONAL_DEPENDENCIES_PREFIX=$(LINPHONE_ADDITIONAL_DEPENDENCIES_PREFIX) \ gtk-mac-bundler $(PACKAGE_BUNDLE_FILE) printf "[Pango]\nModuleFiles=./etc/pango/pango.modules\n" \ > $(BUNDLEDIR)/Contents/Resources/etc/pango/pangorc diff --git a/build/macos/linphone.bundle b/build/macos/linphone.bundle index 8896fa7d3..7a5906e9e 100644 --- a/build/macos/linphone.bundle +++ b/build/macos/linphone.bundle @@ -16,7 +16,7 @@ ${env:LINPHONE_INSTALL_PREFIX} ${env:MS2_PLUGINS_INSTALL_PREFIX} - /usr/local + ${env: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 w;5) zU)wW&TUVJE!*CuFv9mCD6|%*d<|q^m!qX5Cy}msiDAsPq&KxqZ!}t21*DmxaH8Tu0 z^(QX@@60d8cdghtQ3c#uS^CZ?PBXlgVt>U{4*k$!+#W}3y%BW%S?_bAXIE$4=Zvx+ ztj;34*xw6v9;aNS*gAP4u&sB@1ky3i_6}g?5;~Ab8aPAOVOm!wS~N6 zJ*C~%lZVEEFvRh88sk8+x0Amzwwh5Vb7l;hjowyi+VgIrXdCjjyEW4)Q@vcRn6LF6 zdm_D0KQt0sJ!&D^i}jtB;7lRG`CgZ>s!M<=->=(=nN_VDd%@{U^lLBJA>f* zGV1o*B5O8!8%3*-q;YQs9@&IV*;`bw&FVFcZq&XNuYGA9d|EZ@;bum?#v0f@F&AmS z0+=D5;J5PZ6?@>+>91Ld5uJHBa&81VfUMwT*GXy!oPvl`>qBkM8pQZkh=lEz zydPZuw&v`PUiA;>gK_lkjNBMM1|7yWD+jL{YH>~n_4OuTSfN%$QgT`{%rR=(8Im|E zIi{M2)sj_#)vMK`@ym&({f;(k%+FI-&wgWoU2Y!`h3foY&$Qw+R$5!-rKi73V+XK} z`US{q46E^7zIHZF)`HbaI{_WFyc@wr#9)=JY>Z~+Idh9wUd@7LesfWK6btlU>(TrS zMrk*q<1)121kldYIleRf0VJ4?B8BnE$SeQm;T~wTE-;Q8CCwh5Wz6$wP0uIP8qbK7*LX65vpFE&lN*R&JM`fYRpt8))LCh`BxD% zbw_bRnfMrvDl0Q|z7{m%8ZYIs3|;CkZgVnKjHNpba56Ux6syllEXNswb)7bAg(U72 zaxk0bX()mVJ9@K_`9Rs)U5ho0qMoysA}~2eQSSD4#cc8FyH_r}CSepY4%uaS<;L^P z0SR>JHB_&)Iq@msp-m}Gzb|66+8fo1rJP~baR#7W8-288yKdM(x2U6LbHz}54#US;9;ZoCFt3oh%n~Xh8hC{CyO@|vf=k_h24+7H)d Date: Sat, 31 Jan 2015 22:40:56 +0100 Subject: [PATCH 320/496] code cleaning remove useless DTLS debug traces --- coreapi/linphonecall.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 44d64929c..5b2ffe19e 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2241,9 +2241,7 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b snprintf(rtcp_tool,sizeof(rtcp_tool)-1,"%s-%s",linphone_core_get_user_agent_name(),linphone_core_get_user_agent_version()); stream = sal_media_description_find_best_stream(call->resultdesc, SalAudio); - ms_message("DTLS: call_start_audio_stream, stream is %s", stream==NULL?"NULL":"not NULL"); if (stream && stream->dir!=SalStreamInactive && stream->rtp_port!=0){ - ms_message("DTLS: call_start_audio_stream : we have stream and all stuff to start it"); playcard=lc->sound_conf.lsd_card ? lc->sound_conf.lsd_card : lc->sound_conf.play_sndcard; captcard=lc->sound_conf.capt_sndcard; @@ -2252,7 +2250,6 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b call->audio_profile=make_profile(call,call->resultdesc,stream,&used_pt); if (used_pt!=-1){ - ms_message("DTLS: call_start_audio_stream : we made a profile and have used_pt != -1"); call->current_params->audio_codec = rtp_profile_get_payload(call->audio_profile, used_pt); if (playcard==NULL) { ms_warning("No card defined for playback !"); From a98c9df5205494ce4aa2458da91e773aa30467b7 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 2 Feb 2015 12:20:16 +0100 Subject: [PATCH 321/496] Build offeranswer tests with CMake. --- tester/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tester/CMakeLists.txt b/tester/CMakeLists.txt index 8f3bd33a8..015bd579c 100644 --- a/tester/CMakeLists.txt +++ b/tester/CMakeLists.txt @@ -29,6 +29,7 @@ set(SOURCE_FILES liblinphone_tester.c log_collection_tester.c message_tester.c + offeranswer_tester.c player_tester.c presence_tester.c quality_reporting_tester.c From ac2cbd71af94fe30d3e18f241f68bc4e1cc38d27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Mon, 2 Feb 2015 12:23:38 +0100 Subject: [PATCH 322/496] Fix bug #2051 Fix invalid reads due to an unstopped audiostream --- gtk/audio_assistant.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gtk/audio_assistant.c b/gtk/audio_assistant.c index ad5d95ea4..815752a2d 100644 --- a/gtk/audio_assistant.c +++ b/gtk/audio_assistant.c @@ -466,10 +466,17 @@ static void prepare(GtkAssistant *w){ } void linphone_gtk_close_audio_assistant(GtkWidget *w){ - gchar *path = g_object_get_data(G_OBJECT(audio_assistant),"path"); + gchar *path; + AudioStream *stream; + + path = g_object_get_data(G_OBJECT(audio_assistant),"path"); if(path != NULL){ g_unlink(path); } + stream = (AudioStream *)g_object_get_data(G_OBJECT(audio_assistant), "stream"); + if(stream) { + audio_stream_stop(stream); + } gtk_widget_destroy(w); if(linphone_gtk_get_audio_assistant_option()){ gtk_main_quit(); From ecf4ba1b5cb669d419d776d2cb7b8e511d194346 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 2 Feb 2015 14:25:57 +0100 Subject: [PATCH 323/496] Enable setting a different video window id for each call. --- coreapi/linphonecall.c | 25 ++++++++++++++++++++++++- coreapi/linphonecore.h | 13 +++++++++++++ coreapi/private.h | 2 +- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 5b2ffe19e..e6dc3cb56 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2394,7 +2394,9 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu video_stream_set_fps(call->videostream,linphone_core_get_preferred_framerate(lc)); video_stream_set_sent_video_size(call->videostream,linphone_core_get_preferred_video_size(lc)); video_stream_enable_self_view(call->videostream,lc->video_conf.selfview); - if (lc->video_window_id!=0) + if (call->video_window_id != 0) + video_stream_set_native_window_id(call->videostream,call->video_window_id); + else if (lc->video_window_id!=0) video_stream_set_native_window_id(call->videostream,lc->video_window_id); if (lc->preview_window_id!=0) video_stream_set_native_preview_window_id (call->videostream,lc->preview_window_id); @@ -3596,3 +3598,24 @@ void linphone_call_cancel_dtmfs(LinphoneCall *call) { call->dtmf_sequence = NULL; } } + +unsigned long linphone_call_get_native_video_window_id(const LinphoneCall *call) { + if (call->video_window_id) { + /* The video id was previously set by the app. */ + return call->video_window_id; + } +#ifdef VIDEO_ENABLED + else if (call->videostream) { + /* It was not set but we want to get the one automatically created by mediastreamer2 (desktop versions only). */ + return video_stream_get_native_window_id(call->videostream); + } +#endif + return 0; +} + +void linphone_call_set_native_video_window_id(LinphoneCall *call, unsigned long id) { + call->video_window_id = id; + if (call->videostream) { + video_stream_set_native_window_id(call->videostream, id); + } +} diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 8297eb61e..6997c3470 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -757,6 +757,19 @@ LINPHONE_PUBLIC int linphone_call_send_dtmfs(LinphoneCall *call,char *dtmfs); **/ LINPHONE_PUBLIC void linphone_call_cancel_dtmfs(LinphoneCall *call); +/** + * Get the native window handle of the video window, casted as an unsigned long. + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC unsigned long linphone_call_get_native_video_window_id(const LinphoneCall *call); + +/** + * Set the native video window id where the video is to be displayed. + * For MacOS, Linux, Windows: if not set or 0 a window will be automatically created, unless the special id -1 is given. + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC void linphone_call_set_native_video_window_id(LinphoneCall *call, unsigned long id); + /** * Return TRUE if this call is currently part of a conference * @param call #LinphoneCall diff --git a/coreapi/private.h b/coreapi/private.h index 8778f1020..13bc91456 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -226,7 +226,7 @@ struct _LinphoneCall{ StunCandidate ac,vc; /*audio video ip/port discovered by STUN*/ struct _AudioStream *audiostream; /**/ struct _VideoStream *videostream; - + unsigned long video_window_id; MSAudioEndpoint *endpoint; /*used for conferencing*/ char *refer_to; LinphoneCallParams *params; From 639b5dee1d33e9c260f51d3d4df2ef2f90d082cd Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Mon, 2 Feb 2015 14:48:15 +0100 Subject: [PATCH 324/496] Update ms2 for CIF --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 02d311ca6..738fcf99d 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 02d311ca6158ad707edadcd20121de57182e8972 +Subproject commit 738fcf99df2f930fe64bf8e5dc3fb4d65a004a7d From 53bc2cd5a0ad55c2c378d570dd678a79879c4c29 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 2 Feb 2015 18:13:20 +0100 Subject: [PATCH 325/496] add tests to check sips and ipv6 support of flexisip --- coreapi/address.c | 16 ++++ coreapi/bellesip_sal/sal_address_impl.c | 6 ++ coreapi/linphonecore.h | 4 +- include/sal/sal.h | 1 + tester/accountmanager.c | 9 +- tester/flexisip_tester.c | 116 ++++++++++++++++++++++++ tester/liblinphone_tester.h | 1 + tester/rcfiles/marie_sips_rc | 53 +++++++++++ tester/rcfiles/pauline_sips_rc | 50 ++++++++++ tester/tester.c | 6 ++ tester/tester_hosts | 1 + 11 files changed, 260 insertions(+), 3 deletions(-) create mode 100644 tester/rcfiles/marie_sips_rc create mode 100644 tester/rcfiles/pauline_sips_rc diff --git a/coreapi/address.c b/coreapi/address.c index d9d772337..1299a5351 100644 --- a/coreapi/address.c +++ b/coreapi/address.c @@ -154,11 +154,27 @@ char *linphone_address_as_string_uri_only(const LinphoneAddress *u){ /** * Returns true if address refers to a secure location (sips) + * @deprecated use linphone_address_get_secure() **/ bool_t linphone_address_is_secure(const LinphoneAddress *uri){ return sal_address_is_secure(uri); } +/** + * Returns true if address refers to a secure location (sips) +**/ +bool_t linphone_address_get_secure(const LinphoneAddress *uri){ + return sal_address_is_secure(uri); +} + +/** + * Make the address refer to a secure location (sips scheme) + * @param enabled TRUE if address is requested to be secure. +**/ +void linphone_address_set_secure(LinphoneAddress *addr, bool_t enabled){ + sal_address_set_secure(addr, enabled); +} + /** * returns true if address is a routable sip address */ diff --git a/coreapi/bellesip_sal/sal_address_impl.c b/coreapi/bellesip_sal/sal_address_impl.c index 034135f72..2546e7850 100644 --- a/coreapi/bellesip_sal/sal_address_impl.c +++ b/coreapi/bellesip_sal/sal_address_impl.c @@ -49,6 +49,12 @@ const char *sal_address_get_scheme(const SalAddress *addr){ return NULL; } +void sal_address_set_secure(SalAddress *addr, bool_t enabled){ + 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); + if (uri) belle_sip_uri_set_secure(uri,enabled); +} + bool_t sal_address_is_secure(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); diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 6997c3470..a17efa793 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -397,7 +397,9 @@ LINPHONE_PUBLIC void linphone_address_set_domain(LinphoneAddress *uri, const cha LINPHONE_PUBLIC void linphone_address_set_port(LinphoneAddress *uri, int port); /*remove tags, params etc... so that it is displayable to the user*/ LINPHONE_PUBLIC void linphone_address_clean(LinphoneAddress *uri); -LINPHONE_PUBLIC bool_t linphone_address_is_secure(const LinphoneAddress *uri); +LINPHONE_PUBLIC bool_t linphone_address_is_secure(const LinphoneAddress *addr); +LINPHONE_PUBLIC bool_t linphone_address_get_secure(const LinphoneAddress *addr); +LINPHONE_PUBLIC void linphone_address_set_secure(LinphoneAddress *addr, bool_t enabled); LINPHONE_PUBLIC bool_t linphone_address_is_sip(const LinphoneAddress *uri); LINPHONE_PUBLIC LinphoneTransportType linphone_address_get_transport(const LinphoneAddress *uri); LINPHONE_PUBLIC void linphone_address_set_transport(LinphoneAddress *uri,LinphoneTransportType type); diff --git a/include/sal/sal.h b/include/sal/sal.h index f765bf349..95037fe0e 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -92,6 +92,7 @@ const char *sal_address_get_username(const SalAddress *addr); const char *sal_address_get_domain(const SalAddress *addr); int sal_address_get_port(const SalAddress *addr); bool_t sal_address_is_secure(const SalAddress *addr); +void sal_address_set_secure(SalAddress *addr, bool_t enabled); SalTransport sal_address_get_transport(const SalAddress* addr); const char* sal_address_get_transport_name(const SalAddress* addr); diff --git a/tester/accountmanager.c b/tester/accountmanager.c index 2236b2039..93c250135 100644 --- a/tester/accountmanager.c +++ b/tester/accountmanager.c @@ -130,6 +130,7 @@ void account_create_on_server(Account *account, const LinphoneProxyConfig *refcf linphone_core_set_sip_transports(lc,&tr); cfg=linphone_core_create_proxy_config(lc); + linphone_address_set_secure(tmp_identity, FALSE); 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); @@ -138,7 +139,8 @@ void account_create_on_server(Account *account, const LinphoneProxyConfig *refcf 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*/ + linphone_address_set_secure(server_addr, FALSE); + linphone_address_set_transport(server_addr,LinphoneTransportTcp); /*use tcp for account creation, we may not have certificates configured at this stage*/ linphone_address_set_port(server_addr,0); tmp=linphone_address_as_string(server_addr); linphone_proxy_config_set_server_addr(cfg,tmp); @@ -152,8 +154,11 @@ void account_create_on_server(Account *account, const LinphoneProxyConfig *refcf ms_fatal("Account for %s could not be created on server.", linphone_proxy_config_get_identity(refcfg)); } linphone_proxy_config_edit(cfg); - tmp=linphone_address_as_string(account->modified_identity); + tmp_identity=linphone_address_clone(account->modified_identity); + linphone_address_set_secure(tmp_identity, FALSE); + tmp=linphone_address_as_string(tmp_identity); linphone_proxy_config_set_identity(cfg,tmp); /*remove the X-Create-Account header*/ + linphone_address_unref(tmp_identity); ms_free(tmp); linphone_proxy_config_done(cfg); diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index 4b310be88..3e5992988 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -583,6 +583,119 @@ static void early_media_call_forking(void) { linphone_core_manager_destroy(pauline); } +static void call_with_sips(void){ + LinphoneCoreManager* marie = linphone_core_manager_new( "marie_sips_rc"); + LinphoneCoreManager* pauline1 = linphone_core_manager_new( "pauline_sips_rc"); + LinphoneCoreManager* pauline2 = linphone_core_manager_new( "pauline_tcp_rc"); + MSList* lcs=ms_list_append(NULL,marie->lc); + + lcs=ms_list_append(lcs,pauline1->lc); + lcs=ms_list_append(lcs,pauline2->lc); + + linphone_core_set_user_agent(marie->lc,"Natted Linphone",NULL); + linphone_core_set_user_agent(pauline1->lc,"Natted Linphone",NULL); + linphone_core_set_user_agent(pauline2->lc,"Natted Linphone",NULL); + + linphone_core_invite_address(marie->lc,pauline1->identity); + + /*marie should hear ringback*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallOutgoingRinging,1,3000)); + /*Only the sips registered device from pauline should ring*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline1->stat.number_of_LinphoneCallIncomingReceived,1,1000)); + + /*pauline accepts the call */ + linphone_core_accept_call(pauline1->lc,linphone_core_get_current_call(pauline1->lc)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline1->stat.number_of_LinphoneCallConnected,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline1->stat.number_of_LinphoneCallStreamsRunning,1,1000)); + 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)); + + /*pauline2 should not have ring*/ + CU_ASSERT_TRUE(pauline2->stat.number_of_LinphoneCallIncomingReceived==0); + + linphone_core_terminate_call(pauline1->lc,linphone_core_get_current_call(pauline1->lc)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline1->stat.number_of_LinphoneCallEnd,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,3000)); + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline1); + linphone_core_manager_destroy(pauline2); + ms_list_free(lcs); +} + +static void call_with_sips_not_achievable(void){ + LinphoneCoreManager* marie = linphone_core_manager_new( "marie_sips_rc"); + LinphoneCoreManager* pauline1 = linphone_core_manager_new( "pauline_rc"); + LinphoneCoreManager* pauline2 = linphone_core_manager_new( "pauline_tcp_rc"); + MSList* lcs=ms_list_append(NULL,marie->lc); + LinphoneAddress *dest; + LinphoneCall *call; + const LinphoneErrorInfo *ei; + + lcs=ms_list_append(lcs,pauline1->lc); + lcs=ms_list_append(lcs,pauline2->lc); + + + dest=linphone_address_clone(pauline1->identity); + linphone_address_set_secure(dest,TRUE); + call=linphone_core_invite_address(marie->lc,dest); + linphone_call_ref(call); + linphone_address_unref(dest); + + /*Call should be rejected by server with 480*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallError,1,3000)); + ei=linphone_call_get_error_info(call); + CU_ASSERT_PTR_NOT_NULL(ei); + if (ei){ + CU_ASSERT_EQUAL(linphone_error_info_get_reason(ei), LinphoneReasonTemporarilyUnavailable); + } + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline1); + linphone_core_manager_destroy(pauline2); + ms_list_free(lcs); +} + +static void call_with_ipv6(void) { + int begin; + int leaked_objects; + LinphoneCoreManager* marie; + LinphoneCoreManager* pauline; + LinphoneCall *pauline_call; + + /*skipped until sip2 has ipv6 address*/ + return; + + if (!liblinphone_tester_ipv6_available()){ + ms_warning("Call with ipv6 not tested, no ipv6 connectivity"); + return; + } + + belle_sip_object_enable_leak_detector(TRUE); + begin=belle_sip_object_get_object_count(); + + liblinphone_tester_enable_ipv6(TRUE); + marie = linphone_core_manager_new( "marie_rc"); + pauline = linphone_core_manager_new( "pauline_rc"); + + linphone_core_set_user_agent(marie->lc,"Natted Linphone",NULL); + linphone_core_set_user_agent(pauline->lc,"Natted Linphone",NULL); + CU_ASSERT_TRUE(call(marie,pauline)); + pauline_call=linphone_core_get_current_call(pauline->lc); + CU_ASSERT_PTR_NOT_NULL(pauline_call); + + liblinphone_tester_check_rtcp(marie,pauline); + end_call(marie,pauline); + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); + liblinphone_tester_enable_ipv6(FALSE); + + 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(); + } +} test_t flexisip_tests[] = { { "Subscribe forking", subscribe_forking }, @@ -598,6 +711,9 @@ test_t flexisip_tests[] = { { "Call forking with push notification (multiple)", call_forking_with_push_notification_multiple }, { "Call forking not responded", call_forking_not_responded }, { "Early-media call forking", early_media_call_forking }, + { "Call with sips", call_with_sips }, + { "Call with sips not achievable", call_with_sips_not_achievable }, + { "Call with ipv6", call_with_ipv6 } }; diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index b6aca2626..8111015f0 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -307,6 +307,7 @@ 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); +void liblinphone_tester_enable_ipv6(bool_t enabled); #ifdef ANDROID void cunit_android_trace_handler(int level, const char *fmt, va_list args) ; #endif diff --git a/tester/rcfiles/marie_sips_rc b/tester/rcfiles/marie_sips_rc new file mode 100644 index 000000000..0723c13a0 --- /dev/null +++ b/tester/rcfiles/marie_sips_rc @@ -0,0 +1,53 @@ +[sip] +sip_port=-1 +sip_tcp_port=-1 +sip_tls_port=-1 +default_proxy=0 +ping_with_options=0 +register_only_when_network_is_up=0 +composing_idle_timeout=1 + +[auth_info_0] +username=marie +userid=marie +passwd=secret +realm=sip2.linphone.org + + +[proxy_0] +reg_proxy=sips:sip2.linphone.org +reg_route=sips:sip2.linphone.org +reg_identity="Super Marie" +reg_expires=3600 +reg_sendregister=1 +publish=0 +dial_escape_plus=0 +quality_reporting_collector=sip:collector@sip2.linphone.org +quality_reporting_enabled=1 + +[friend_0] +url="Paupoche" +pol=accept +subscribe=0 + + +[rtp] +audio_rtp_port=8070 +video_rtp_port=9072 + +[video] +display=0 +capture=0 +show_local=0 +size=vga +enabled=0 +self_view=0 +automatically_initiate=0 +automatically_accept=0 +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_sips_rc b/tester/rcfiles/pauline_sips_rc new file mode 100644 index 000000000..5d9f3d5ed --- /dev/null +++ b/tester/rcfiles/pauline_sips_rc @@ -0,0 +1,50 @@ +[sip] +sip_port=-1 +sip_tcp_port=-1 +sip_tls_port=-1 +default_proxy=0 +ping_with_options=0 +register_only_when_network_is_up=0 +composing_idle_timeout=1 + +[auth_info_0] +username=pauline +userid=pauline +passwd=secret +realm=sip.example.org + + +[proxy_0] +reg_proxy=sips:sip2.linphone.org +reg_route=sips:sip2.linphone.org +reg_identity=sips:pauline@sip.example.org +reg_expires=3600 +reg_sendregister=1 +publish=0 +dial_escape_plus=0 + +#[friend_0] +#url="Mariette" +#pol=accept +#subscribe=0 + +[rtp] +audio_rtp_port=8090 +video_rtp_port=9092 + +[video] +display=0 +capture=0 +show_local=0 +size=vga +enabled=0 +self_view=0 +automatically_initiate=0 +automatically_accept=0 +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/tester.c b/tester/tester.c index d3a34a375..cbd1bfd44 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -41,6 +41,7 @@ const char* test_password="secret"; const char* test_route="sip2.linphone.org"; int liblinphone_tester_use_log_file=0; static int liblinphone_tester_keep_accounts_flag = 0; +static bool_t liblinphone_tester_ipv6_enabled=FALSE; static int manager_count = 0; static const char* liblinphone_tester_xml_file = NULL; @@ -83,6 +84,10 @@ bool_t liblinphone_tester_clock_elapsed(const MSTimeSpec *start, int value_ms){ return FALSE; } +void liblinphone_tester_enable_ipv6(bool_t enabled){ + liblinphone_tester_ipv6_enabled=enabled; +} + LinphoneAddress * create_linphone_address(const char * domain) { LinphoneAddress *addr = linphone_address_new(NULL); CU_ASSERT_PTR_NOT_NULL_FATAL(addr); @@ -157,6 +162,7 @@ LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, c sal_set_dns_user_hosts_file(lc->sal, dnsuserhostspath); linphone_core_set_static_picture(lc,nowebcampath); + linphone_core_enable_ipv6(lc, liblinphone_tester_ipv6_enabled); ms_free(ringpath); ms_free(ringbackpath); diff --git a/tester/tester_hosts b/tester/tester_hosts index b7056b863..872dd4a63 100644 --- a/tester/tester_hosts +++ b/tester/tester_hosts @@ -1 +1,2 @@ 94.23.19.176 sip2.linphone.org sip.example.org sipopen.example.org auth.example.org auth1.example.org auth2.example.org altname.linphone.org sip.wildcard1.linphone.org altname.wildcard2.linphone.org +2001:41d0:2:14b0::1 sip2.linphone.org sip.example.org sipopen.example.org auth.example.org auth1.example.org auth2.example.org altname.linphone.org sip.wildcard1.linphone.org altname.wildcard2.linphone.org \ No newline at end of file From d2d0458cae8e58fed78993bdc95a540fad7572f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Tue, 3 Feb 2015 14:53:42 +0100 Subject: [PATCH 326/496] Fix bug #1961 Fix crash when receiving an INVITE message with an empty body --- coreapi/bellesip_sal/sal_op_call.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/coreapi/bellesip_sal/sal_op_call.c b/coreapi/bellesip_sal/sal_op_call.c index 4aca82a81..7cf64947e 100644 --- a/coreapi/bellesip_sal/sal_op_call.c +++ b/coreapi/bellesip_sal/sal_op_call.c @@ -389,7 +389,8 @@ static void unsupported_method(belle_sip_server_transaction_t* server_transactio * **/ 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); + const char *body; + belle_sip_header_content_type_t* content_type; if (op&&op->sdp_removal){ ms_error("Removed willingly SDP because sal_call_enable_sdp_removal was set to TRUE."); @@ -397,11 +398,18 @@ static int extract_sdp(SalOp *op, belle_sip_message_t* message,belle_sdp_session *error=SalReasonNotAcceptable; return -1; } - + + body = belle_sip_message_get_body(message); + if(body == NULL) { + *session_desc = NULL; + return 0; + } + + content_type = belle_sip_message_get_header_by_type(message,belle_sip_header_content_type_t); 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) { - *session_desc=belle_sdp_session_description_parse(belle_sip_message_get_body(message)); + *session_desc=belle_sdp_session_description_parse(body); if (*session_desc==NULL) { ms_error("Failed to parse SDP message."); *error=SalReasonNotAcceptable; From ef7413d063de3efbaf08788c8a6ec161eb933b9b Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 3 Feb 2015 14:57:04 +0100 Subject: [PATCH 327/496] enable ipv6 test --- mediastreamer2 | 2 +- oRTP | 2 +- tester/flexisip_tester.c | 3 --- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 738fcf99d..31ec76f3e 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 738fcf99df2f930fe64bf8e5dc3fb4d65a004a7d +Subproject commit 31ec76f3e3955c2521fc770308c39f1de641de67 diff --git a/oRTP b/oRTP index 753a2d67e..8cac6a399 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 753a2d67ee0e4e9a8c2f64f92b598ac11187378a +Subproject commit 8cac6a399755001f5df7a933bc26c7b9629981fc diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index 3e5992988..dc0250eb8 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -662,9 +662,6 @@ static void call_with_ipv6(void) { LinphoneCoreManager* marie; LinphoneCoreManager* pauline; LinphoneCall *pauline_call; - - /*skipped until sip2 has ipv6 address*/ - return; if (!liblinphone_tester_ipv6_available()){ ms_warning("Call with ipv6 not tested, no ipv6 connectivity"); From c7437e6ffc7438eff3b9e7ae685ab424df09d799 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Tue, 3 Feb 2015 16:47:26 +0100 Subject: [PATCH 328/496] Revert LinphoneCoreListener modifications for Android --- .../core/tutorials/TutorialBuddyStatus.java | 4 +- .../core/tutorials/TutorialChatRoom.java | 4 +- .../core/tutorials/TutorialHelloWorld.java | 4 +- .../core/tutorials/TutorialRegistration.java | 4 +- coreapi/linphonecore_jni.cc | 28 +- .../org/linphone/core/LinphoneCore.java | 4 +- .../linphone/core/LinphoneCoreListener.java | 426 +++++++++--------- .../core/LinphoneCoreListenerBase.java | 208 +++++++++ .../org/linphone/core/LinphoneCoreImpl.java | 4 +- 9 files changed, 427 insertions(+), 259 deletions(-) create mode 100644 java/common/org/linphone/core/LinphoneCoreListenerBase.java diff --git a/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java b/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java index ef5dd2fd1..22a850b36 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialBuddyStatus.java @@ -35,7 +35,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.LinphoneListener; +import org.linphone.core.LinphoneCoreListener; import org.linphone.core.LinphoneEvent; import org.linphone.core.LinphoneFriend; import org.linphone.core.LinphoneFriend.SubscribePolicy; @@ -61,7 +61,7 @@ import org.linphone.core.SubscriptionState; * @author Guillaume Beraudo * */ -public class TutorialBuddyStatus implements LinphoneListener { +public class TutorialBuddyStatus implements LinphoneCoreListener { 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 046c23ada..e8a7da936 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialChatRoom.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialChatRoom.java @@ -35,7 +35,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.LinphoneListener; +import org.linphone.core.LinphoneCoreListener; import org.linphone.core.LinphoneEvent; import org.linphone.core.LinphoneFriend; import org.linphone.core.LinphoneInfoMessage; @@ -59,7 +59,7 @@ import org.linphone.core.SubscriptionState; * @author Guillaume Beraudo * */ -public class TutorialChatRoom implements LinphoneListener, LinphoneChatMessage.StateListener { +public class TutorialChatRoom implements LinphoneCoreListener, 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 2e2e50b0b..3fc9b78c5 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialHelloWorld.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialHelloWorld.java @@ -35,7 +35,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.LinphoneListener; +import org.linphone.core.LinphoneCoreListener; import org.linphone.core.LinphoneEvent; import org.linphone.core.LinphoneFriend; import org.linphone.core.LinphoneInfoMessage; @@ -53,7 +53,7 @@ import org.linphone.core.SubscriptionState; * @author Guillaume Beraudo * */ -public class TutorialHelloWorld implements LinphoneListener { +public class TutorialHelloWorld implements LinphoneCoreListener { 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 ce985d288..44c432271 100644 --- a/coreapi/help/java/org/linphone/core/tutorials/TutorialRegistration.java +++ b/coreapi/help/java/org/linphone/core/tutorials/TutorialRegistration.java @@ -35,7 +35,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.LinphoneListener; +import org.linphone.core.LinphoneCoreListener; 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 TutorialRegistration implements LinphoneListener { +public class TutorialRegistration implements LinphoneCoreListener { private boolean running; private TutorialNotifier TutorialNotifier; diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 8dbb4f382..b159050f0 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -273,7 +273,6 @@ public: 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; } @@ -282,7 +281,6 @@ public: 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; } @@ -291,7 +289,6 @@ public: 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; } @@ -304,14 +301,12 @@ public: /*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; } /*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; } @@ -320,7 +315,6 @@ public: 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"); @@ -362,13 +356,11 @@ public: } 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; } @@ -376,7 +368,6 @@ public: 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; } @@ -384,13 +375,11 @@ public: 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; } @@ -398,25 +387,21 @@ public: 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; } @@ -424,12 +409,10 @@ public: logCollectionUploadStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCore$LogCollectionUploadState")); logCollectionUploadStateFromIntId = env->GetStaticMethodID(logCollectionUploadStateClass, "fromInt", "(I)Lorg/linphone/core/LinphoneCore$LogCollectionUploadState;"); logCollectionUploadProgressId = env->GetMethodID(listenerClass, "uploadProgressIndication", "(Lorg/linphone/core/LinphoneCore;II)V"); - env->ExceptionClear(); if (logCollectionUploadProgressId) { vTable->log_collection_upload_progress_indication = logCollectionUploadProgressIndication; } logCollectionUploadStateId = env->GetMethodID(listenerClass, "uploadStateChanged", "(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$LogCollectionUploadState;Ljava/lang/String;)V"); - env->ExceptionClear(); if (logCollectionUploadStateId) { vTable->log_collection_upload_state_changed = logCollectionUploadStateChange; } @@ -1120,19 +1103,20 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_addListener(JNIEnv* env, extern "C" void Java_org_linphone_core_LinphoneCoreImpl_removeListener(JNIEnv* env, jobject thiz, jlong lc, jobject jlistener) { MSList* iterator; LinphoneCore *core = (LinphoneCore*)lc; - jobject listener = env->NewGlobalRef(jlistener); - for (iterator = core->vtables; iterator != NULL; iterator = iterator->next) { + //jobject listener = env->NewGlobalRef(jlistener); + for (iterator = core->vtables; iterator != NULL; ) { LinphoneCoreVTable *vTable = (LinphoneCoreVTable*)(iterator->data); + iterator = iterator->next; //Because linphone_core_remove_listener may change the list if (vTable) { LinphoneCoreData *data = (LinphoneCoreData*) linphone_core_v_table_get_user_data(vTable); - if (data && env->IsSameObject(data->listener, listener)) { + if (data && env->IsSameObject(data->listener, jlistener)) { linphone_core_remove_listener(core, vTable); + delete data; linphone_core_v_table_destroy(vTable); - break; } } } - env->DeleteGlobalRef(listener); + //env->DeleteGlobalRef(listener); } diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 0a50f4f3d..3ff4a3865 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -20,7 +20,7 @@ package org.linphone.core; import java.util.Vector; -import org.linphone.core.LinphoneCoreListener.LinphoneEchoCalibrationListener; +import org.linphone.core.LinphoneCoreListener; import org.linphone.mediastream.video.AndroidVideoWindowImpl; import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration; @@ -1123,7 +1123,7 @@ public interface LinphoneCore { * @param listener the LinphoneEchoCalibrationListener to call when the calibration is done * @throws LinphoneCoreException if operation is still in progress; **/ - void startEchoCalibration(LinphoneEchoCalibrationListener listener) throws LinphoneCoreException; + void startEchoCalibration(LinphoneCoreListener listener) throws LinphoneCoreException; /** * Returns true if echo calibration is recommended. diff --git a/java/common/org/linphone/core/LinphoneCoreListener.java b/java/common/org/linphone/core/LinphoneCoreListener.java index 42a59a4a7..4067380a0 100644 --- a/java/common/org/linphone/core/LinphoneCoreListener.java +++ b/java/common/org/linphone/core/LinphoneCoreListener.java @@ -26,238 +26,214 @@ import java.nio.ByteBuffer; *This interface holds all callbacks that the application should implement. None is mandatory. */ public interface LinphoneCoreListener { - - public interface LinphoneListener extends LinphoneCoreListener, - LinphoneRemoteProvisioningListener, LinphoneMessageListener, LinphoneCallStateListener, - LinphoneCallEncryptionStateListener, LinphoneNotifyListener, LinphoneComposingListener, - LinphoneGlobalStateListener, LinphoneRegistrationStateListener, LinphoneLogCollectionUploadListener { - /**< Ask the application some authentication information - * @return */ - void authInfoRequested(LinphoneCore lc, String realm, String username, String Domain); - /** - * Call stats notification - */ - void callStatsUpdated(LinphoneCore lc, LinphoneCall call, LinphoneCallStats stats); + /**< Ask the application some authentication information + * @return */ + void authInfoRequested(LinphoneCore lc, String realm, String username, String Domain); - /** - * 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); + /** + * Call stats notification + */ + void callStatsUpdated(LinphoneCore lc, LinphoneCall call, LinphoneCallStats stats); - /** - * Report status change for a friend previously added to LinphoneCore. - * @param lc LinphoneCore - * @param lf updated LinphoneFriend - */ - void notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf); + /** + * 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); - /** - * 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); - - /** - * 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); + /** + * Report status change for a friend previously added to LinphoneCore. + * @param lc LinphoneCore + * @param lf updated LinphoneFriend + */ + void notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf); - /** - * 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); + /** + * 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); - /**< @Deprecated Callback to display a message to the user - * @return */ - void displayMessage(LinphoneCore lc,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); - /** @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); - } - - public interface LinphoneGlobalStateListener extends LinphoneCoreListener { - /** General State notification - * @param state LinphoneCore.State - * @return - * */ - void globalState(LinphoneCore lc,LinphoneCore.GlobalState state, String message); - } - - public interface LinphoneRegistrationStateListener extends LinphoneCoreListener { - /** - * Registration state notification - * */ - void registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, LinphoneCore.RegistrationState state, String smessage); - } - - 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, LinphoneCore.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); - } + /** + * 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); - 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); - } - - public interface LinphoneEchoCalibrationListener extends LinphoneCoreListener { - /** - * 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); - } - - public interface LinphoneLogCollectionUploadListener extends LinphoneCoreListener { - /** - * Callback prototype for reporting log collection upload progress indication. - */ - void uploadProgressIndication(LinphoneCore lc, int offset, int total); - - /** - * Callback prototype for reporting log collection upload state change. - * @param lc LinphoneCore object - * @param state The state of the log collection upload - * @param info Additional information: error message in case of error state, URL of uploaded file in case of success. - */ - void uploadStateChanged(LinphoneCore lc, LinphoneCore.LogCollectionUploadState state, String info); - } + /** + * 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); + + /** General State notification + * @param state LinphoneCore.State + * @return + * */ + void globalState(LinphoneCore lc,LinphoneCore.GlobalState state, String message); + + /** + * Registration state notification + * */ + void registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, LinphoneCore.RegistrationState state, String smessage); + + /** + * 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, LinphoneCore.RemoteProvisioningState state, 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); + + + /** Call State notification + * @param state LinphoneCall.State + * @return + * */ + void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message); + + /** + * 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); + + /** + * 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); + + /** + * invoked when a composing notification is received + * @param lc LinphoneCore + * @param room LinphoneChatRoom involved in the conversation. + */ + void isComposingReceived(LinphoneCore lc, LinphoneChatRoom cr); + + /** + * 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); + + /** + * Callback prototype for reporting log collection upload progress indication. + */ + void uploadProgressIndication(LinphoneCore lc, int offset, int total); + + /** + * Callback prototype for reporting log collection upload state change. + * @param lc LinphoneCore object + * @param state The state of the log collection upload + * @param info Additional information: error message in case of error state, URL of uploaded file in case of success. + */ + void uploadStateChanged(LinphoneCore lc, LinphoneCore.LogCollectionUploadState state, String info); } diff --git a/java/common/org/linphone/core/LinphoneCoreListenerBase.java b/java/common/org/linphone/core/LinphoneCoreListenerBase.java new file mode 100644 index 000000000..158a871af --- /dev/null +++ b/java/common/org/linphone/core/LinphoneCoreListenerBase.java @@ -0,0 +1,208 @@ +package org.linphone.core; + +import java.nio.ByteBuffer; + +import org.linphone.core.LinphoneCall.State; +import org.linphone.core.LinphoneCore.EcCalibratorStatus; +import org.linphone.core.LinphoneCore.GlobalState; +import org.linphone.core.LinphoneCore.LogCollectionUploadState; +import org.linphone.core.LinphoneCore.RegistrationState; +import org.linphone.core.LinphoneCore.RemoteProvisioningState; + +public class LinphoneCoreListenerBase implements LinphoneCoreListener { + + @Override + public void authInfoRequested(LinphoneCore lc, String realm, + String username, String Domain) { + // TODO Auto-generated method stub + + } + + @Override + public void callStatsUpdated(LinphoneCore lc, LinphoneCall call, + LinphoneCallStats stats) { + // TODO Auto-generated method stub + + } + + @Override + public void newSubscriptionRequest(LinphoneCore lc, LinphoneFriend lf, + String url) { + // TODO Auto-generated method stub + + } + + @Override + public void notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf) { + // TODO Auto-generated method stub + + } + + @Override + public void textReceived(LinphoneCore lc, LinphoneChatRoom cr, + LinphoneAddress from, String message) { + // TODO Auto-generated method stub + + } + + @Override + public void dtmfReceived(LinphoneCore lc, LinphoneCall call, int dtmf) { + // TODO Auto-generated method stub + + } + + @Override + public void notifyReceived(LinphoneCore lc, LinphoneCall call, + LinphoneAddress from, byte[] event) { + // TODO Auto-generated method stub + + } + + @Override + public void transferState(LinphoneCore lc, LinphoneCall call, + State new_call_state) { + // TODO Auto-generated method stub + + } + + @Override + public void infoReceived(LinphoneCore lc, LinphoneCall call, + LinphoneInfoMessage info) { + // TODO Auto-generated method stub + + } + + @Override + public void subscriptionStateChanged(LinphoneCore lc, LinphoneEvent ev, + SubscriptionState state) { + // TODO Auto-generated method stub + + } + + @Override + public void publishStateChanged(LinphoneCore lc, LinphoneEvent ev, + PublishState state) { + // TODO Auto-generated method stub + + } + + @Override + public void show(LinphoneCore lc) { + // TODO Auto-generated method stub + + } + + @Override + public void displayStatus(LinphoneCore lc, String message) { + // TODO Auto-generated method stub + + } + + @Override + public void displayMessage(LinphoneCore lc, String message) { + // TODO Auto-generated method stub + + } + + @Override + public void displayWarning(LinphoneCore lc, String message) { + // TODO Auto-generated method stub + + } + + @Override + public void fileTransferProgressIndication(LinphoneCore lc, + LinphoneChatMessage message, LinphoneContent content, int progress) { + // TODO Auto-generated method stub + + } + + @Override + public void fileTransferRecv(LinphoneCore lc, LinphoneChatMessage message, + LinphoneContent content, byte[] buffer, int size) { + // TODO Auto-generated method stub + + } + + @Override + public int fileTransferSend(LinphoneCore lc, LinphoneChatMessage message, + LinphoneContent content, ByteBuffer buffer, int size) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void globalState(LinphoneCore lc, GlobalState state, String message) { + // TODO Auto-generated method stub + + } + + @Override + public void registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, + RegistrationState state, String smessage) { + // TODO Auto-generated method stub + + } + + @Override + public void configuringStatus(LinphoneCore lc, + RemoteProvisioningState state, String message) { + // TODO Auto-generated method stub + + } + + @Override + public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, + LinphoneChatMessage message) { + // TODO Auto-generated method stub + + } + + @Override + public void callState(LinphoneCore lc, LinphoneCall call, State state, + String message) { + // TODO Auto-generated method stub + + } + + @Override + public void callEncryptionChanged(LinphoneCore lc, LinphoneCall call, + boolean encrypted, String authenticationToken) { + // TODO Auto-generated method stub + + } + + @Override + public void notifyReceived(LinphoneCore lc, LinphoneEvent ev, + String eventName, LinphoneContent content) { + // TODO Auto-generated method stub + + } + + @Override + public void isComposingReceived(LinphoneCore lc, LinphoneChatRoom cr) { + // TODO Auto-generated method stub + + } + + @Override + public void ecCalibrationStatus(LinphoneCore lc, EcCalibratorStatus status, + int delay_ms, Object data) { + // TODO Auto-generated method stub + + } + + @Override + public void uploadProgressIndication(LinphoneCore lc, int offset, int total) { + // TODO Auto-generated method stub + + } + + @Override + public void uploadStateChanged(LinphoneCore lc, + LogCollectionUploadState state, String info) { + // TODO Auto-generated method stub + + } + +} diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index 4823a2a2b..d69d53ef0 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -24,7 +24,7 @@ import java.io.File; import java.io.IOException; import org.linphone.core.LinphoneCall.State; -import org.linphone.core.LinphoneCoreListener.LinphoneEchoCalibrationListener; +import org.linphone.core.LinphoneCoreListener; import org.linphone.mediastream.Log; import org.linphone.mediastream.video.AndroidVideoWindowImpl; import org.linphone.mediastream.video.capture.hwconf.Hacks; @@ -563,7 +563,7 @@ public class LinphoneCoreImpl implements LinphoneCore { public synchronized boolean isKeepAliveEnabled() { return isKeepAliveEnabled(nativePtr); } - public synchronized void startEchoCalibration(LinphoneEchoCalibrationListener listener) throws LinphoneCoreException { + public synchronized void startEchoCalibration(LinphoneCoreListener listener) throws LinphoneCoreException { startEchoCalibration(nativePtr, listener); } From 54f3cd52db49df0cb6a2a70eae2198db67707976 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 4 Feb 2015 10:38:00 +0100 Subject: [PATCH 329/496] Add video tester that creates its own GTK windows for video display. --- tester/CMakeLists.txt | 8 ++ tester/Makefile.am | 10 +- tester/call_tester.c | 2 +- tester/liblinphone_tester.c | 10 +- tester/liblinphone_tester.h | 2 + tester/tester.c | 11 ++ tester/video_tester.c | 198 ++++++++++++++++++++++++++++++++++++ 7 files changed, 238 insertions(+), 3 deletions(-) create mode 100644 tester/video_tester.c diff --git a/tester/CMakeLists.txt b/tester/CMakeLists.txt index 015bd579c..34e5d122b 100644 --- a/tester/CMakeLists.txt +++ b/tester/CMakeLists.txt @@ -20,6 +20,8 @@ # ############################################################################ +find_package(GTK2 2.18 COMPONENTS gtk) + set(SOURCE_FILES accountmanager.c call_tester.c @@ -40,8 +42,14 @@ set(SOURCE_FILES tester.c transport_tester.c upnp_tester.c + video_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}) +if (GTK2_FOUND) + target_compile_definitions(liblinphone_tester PRIVATE HAVE_GTK) + target_include_directories(liblinphone_tester PUBLIC ${GTK2_INCLUDE_DIRS}) + target_link_libraries(liblinphone_tester linphone ${GTK2_LIBRARIES}) +endif() diff --git a/tester/Makefile.am b/tester/Makefile.am index 6c5ba79bc..5b4328430 100644 --- a/tester/Makefile.am +++ b/tester/Makefile.am @@ -27,7 +27,8 @@ liblinphonetester_la_SOURCES = tester.c \ player_tester.c \ dtmf_tester.c \ accountmanager.c \ - offeranswer_tester.c + offeranswer_tester.c \ + video_tester.c liblinphonetester_la_LDFLAGS= -no-undefined liblinphonetester_la_LIBADD= ../coreapi/liblinphone.la $(CUNIT_LIBS) @@ -35,6 +36,13 @@ liblinphonetester_la_LIBADD= ../coreapi/liblinphone.la $(CUNIT_LIBS) AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/coreapi AM_CFLAGS = $(STRICT_OPTIONS) $(STRICT_OPTIONS_CC) -DIN_LINPHONE $(ORTP_CFLAGS) $(MEDIASTREAMER_CFLAGS) $(CUNIT_CFLAGS) $(BELLESIP_CFLAGS) $(LIBXML2_CFLAGS) $(SQLITE3_CFLAGS) +if BUILD_GTK_UI + +liblinphone_tester_la_LIBADD += $(LIBGTK_LIBS) $(LIBGTKMAC_LIBS) +AM_CFLAGS += $(LIBGTK_CFLAGS) $(LIBGTKMAC_CFLAGS) -DHAVE_GTK + +endif + if !BUILD_IOS noinst_PROGRAMS = liblinphone_tester diff --git a/tester/call_tester.c b/tester/call_tester.c index 96b90f0e8..2d4a662d7 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -740,7 +740,7 @@ void disable_all_audio_codecs_except_one(LinphoneCore *lc, const char *mime, int } #ifdef VIDEO_ENABLED -static void disable_all_video_codecs_except_one(LinphoneCore *lc, const char *mime) { +void disable_all_video_codecs_except_one(LinphoneCore *lc, const char *mime) { const MSList *codecs = linphone_core_get_video_codecs(lc); const MSList *it = NULL; PayloadType *pt = NULL; diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c index f04a5c16d..fbba48218 100644 --- a/tester/liblinphone_tester.c +++ b/tester/liblinphone_tester.c @@ -24,6 +24,9 @@ #if HAVE_CU_CURSES #include "CUnit/CUCurses.h" #endif +#ifdef HAVE_GTK +#include +#endif extern int liblinphone_tester_use_log_file; @@ -167,6 +170,12 @@ int main (int argc, char *argv[]) char *xml_tmp_file=NULL; int xml = 0; FILE* log_file=NULL; + +#ifdef HAVE_GTK + gdk_threads_init(); + gtk_init(&argc, &argv); +#endif + #if defined(ANDROID) linphone_core_set_log_handler(linphone_android_ortp_log_handler); #elif defined(__QNX__) @@ -246,7 +255,6 @@ int main (int argc, char *argv[]) } liblinphone_tester_enable_xml(xml); - ret = liblinphone_tester_run_tests(suite_name, test_name); liblinphone_tester_uninit(); diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 8111015f0..c8ca02436 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -63,6 +63,7 @@ extern test_suite_t transport_test_suite; extern test_suite_t player_test_suite; extern test_suite_t dtmf_test_suite; extern test_suite_t offeranswer_test_suite; +extern test_suite_t video_test_suite; extern int liblinphone_tester_nb_test_suites(void); @@ -295,6 +296,7 @@ bool_t call_with_test_params(LinphoneCoreManager* caller_mgr bool_t call(LinphoneCoreManager* caller_mgr,LinphoneCoreManager* callee_mgr); void end_call(LinphoneCoreManager *m1, LinphoneCoreManager *m2); void disable_all_audio_codecs_except_one(LinphoneCore *lc, const char *mime, int rate); +void disable_all_video_codecs_except_one(LinphoneCore *lc, const char *mime); stats * get_stats(LinphoneCore *lc); LinphoneCoreManager *get_manager(LinphoneCore *lc); const char *liblinphone_tester_get_subscribe_content(void); diff --git a/tester/tester.c b/tester/tester.c index cbd1bfd44..c10dc0c79 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -25,6 +25,9 @@ #if HAVE_CU_CURSES #include "CUnit/CUCurses.h" #endif +#ifdef HAVE_GTK +#include +#endif static test_suite_t **test_suite = NULL; static int nb_test_suites = 0; @@ -201,6 +204,11 @@ bool_t wait_for_list(MSList* lcs,int* counter,int value,int timeout_ms) { liblinphone_tester_clock_start(&start); while ((counter==NULL || *counternext) { +#ifdef HAVE_GTK + gdk_threads_enter(); + gtk_main_iteration_do(FALSE); + gdk_threads_leave(); +#endif linphone_core_iterate((LinphoneCore*)(iterator->data)); } ms_usleep(20000); @@ -442,6 +450,9 @@ void liblinphone_tester_init(void) { add_test_suite(&transport_test_suite); add_test_suite(&player_test_suite); add_test_suite(&dtmf_test_suite); +#if defined(VIDEO_ENABLED) && defined(HAVE_GTK) + add_test_suite(&video_test_suite); +#endif } void liblinphone_tester_uninit(void) { diff --git a/tester/video_tester.c b/tester/video_tester.c new file mode 100644 index 000000000..88518aff9 --- /dev/null +++ b/tester/video_tester.c @@ -0,0 +1,198 @@ +/* + 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 . +*/ + +#if defined(VIDEO_ENABLED) && defined(HAVE_GTK) + +#include +#include "CUnit/Basic.h" +#include "linphonecore.h" +#include "liblinphone_tester.h" +#include "lpconfig.h" +#include "private.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#elif defined(WIN32) +#include +#elif defined(__APPLE__) +extern void *gdk_quartz_window_get_nswindow(GdkWindow *window); +extern void *gdk_quartz_window_get_nsview(GdkWindow *window); +#endif + +#include + + +static unsigned long get_native_handle(GdkWindow *gdkw) { +#ifdef GDK_WINDOWING_X11 + return (unsigned long)GDK_WINDOW_XID(gdkw); +#elif defined(WIN32) + return (unsigned long)GDK_WINDOW_HWND(gdkw); +#elif defined(__APPLE__) + return (unsigned long)gdk_quartz_window_get_nsview(gdkw); +#endif + g_warning("No way to get the native handle from gdk window"); + return 0; +} + +static GtkWidget *create_video_window(LinphoneCall *call) { + GtkWidget *video_window; + GdkColor color; + MSVideoSize vsize = MS_VIDEO_SIZE_CIF; + + video_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_resize(GTK_WINDOW(video_window), vsize.width, vsize.height); + gdk_color_parse("black", &color); + gtk_widget_modify_bg(video_window, GTK_STATE_NORMAL, &color); + gtk_widget_show(video_window); + g_object_set_data(G_OBJECT(video_window), "call", call); + gdk_display_flush(gdk_window_get_display(gtk_widget_get_window(video_window))); + return video_window; +} + +static void show_video_window(LinphoneCall *call) { + GtkWidget *video_window = (GtkWidget *)linphone_call_get_user_data(call); + if (video_window == NULL) { + video_window = create_video_window(call); + linphone_call_set_user_data(call, video_window); + linphone_call_set_native_video_window_id(call, get_native_handle(gtk_widget_get_window(video_window))); + } +} + +static void hide_video_video(LinphoneCall *call) { + GtkWidget *video_window = (GtkWidget *)linphone_call_get_user_data(call); + if (video_window != NULL) { + gtk_widget_destroy(video_window); + linphone_call_set_user_data(call, NULL); + linphone_call_set_native_video_window_id(call, 0); + } +} + +static void video_call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cstate, const char *msg) { + switch (cstate) { + case LinphoneCallConnected: + show_video_window(call); + break; + case LinphoneCallEnd: + hide_video_video(call); + break; + default: + break; + } +} + +static bool_t video_call_with_params(LinphoneCoreManager* caller_mgr, LinphoneCoreManager* callee_mgr, const LinphoneCallParams *caller_params, const LinphoneCallParams *callee_params) { + int retry = 0; + stats initial_caller = caller_mgr->stat; + stats initial_callee = callee_mgr->stat; + bool_t result = FALSE; + bool_t did_received_call; + + CU_ASSERT_PTR_NOT_NULL(linphone_core_invite_address_with_params(caller_mgr->lc, callee_mgr->identity, caller_params)); + did_received_call = wait_for(callee_mgr->lc, caller_mgr->lc, &callee_mgr->stat.number_of_LinphoneCallIncomingReceived, initial_callee.number_of_LinphoneCallIncomingReceived + 1); + 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); + + while (caller_mgr->stat.number_of_LinphoneCallOutgoingRinging != (initial_caller.number_of_LinphoneCallOutgoingRinging + 1) + && caller_mgr->stat.number_of_LinphoneCallOutgoingEarlyMedia != (initial_caller.number_of_LinphoneCallOutgoingEarlyMedia + 1) + && retry++ < 20) { + linphone_core_iterate(caller_mgr->lc); + linphone_core_iterate(callee_mgr->lc); + ms_usleep(100000); + } + + CU_ASSERT_TRUE((caller_mgr->stat.number_of_LinphoneCallOutgoingRinging == initial_caller.number_of_LinphoneCallOutgoingRinging + 1) + || (caller_mgr->stat.number_of_LinphoneCallOutgoingEarlyMedia == initial_caller.number_of_LinphoneCallOutgoingEarlyMedia + 1)); + + 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)) { + return 0; + } + + linphone_core_accept_call_with_params(callee_mgr->lc, linphone_core_get_current_call(callee_mgr->lc), callee_params); + + CU_ASSERT_TRUE(wait_for(callee_mgr->lc, caller_mgr->lc, &callee_mgr->stat.number_of_LinphoneCallConnected, initial_callee.number_of_LinphoneCallConnected + 1)); + CU_ASSERT_TRUE(wait_for(callee_mgr->lc, caller_mgr->lc, &caller_mgr->stat.number_of_LinphoneCallConnected, initial_callee.number_of_LinphoneCallConnected + 1)); + result = wait_for(callee_mgr->lc, caller_mgr->lc, &caller_mgr->stat.number_of_LinphoneCallStreamsRunning, initial_caller.number_of_LinphoneCallStreamsRunning + 1) + && wait_for(callee_mgr->lc, caller_mgr->lc, &callee_mgr->stat.number_of_LinphoneCallStreamsRunning, initial_callee.number_of_LinphoneCallStreamsRunning + 1); + return result; +} + + +static void early_media_video_during_video_call_test(void) { + LinphoneCoreManager *marie; + LinphoneCoreManager *pauline; + LinphoneCallParams *marie_params; + LinphoneCallParams *pauline_params; + LinphoneCoreVTable *marie_vtable; + LinphoneCoreVTable *pauline_vtable; + int dummy = 0; + + marie = linphone_core_manager_new( "marie_rc"); + pauline = linphone_core_manager_new( "pauline_rc"); + marie_vtable = linphone_core_v_table_new(); + marie_vtable->call_state_changed = video_call_state_changed; + linphone_core_add_listener(marie->lc, marie_vtable); + linphone_core_set_video_device(marie->lc, "StaticImage: Static picture"); + //linphone_core_set_video_device(marie->lc, "V4L2: /dev/video0"); + linphone_core_enable_video_capture(marie->lc, TRUE); + linphone_core_enable_video_display(marie->lc, TRUE); + linphone_core_set_avpf_mode(marie->lc, LinphoneAVPFEnabled); + marie_params = linphone_core_create_default_call_parameters(marie->lc); + linphone_call_params_enable_video(marie_params, TRUE); + disable_all_video_codecs_except_one(marie->lc, "VP8"); + pauline_vtable = linphone_core_v_table_new(); + pauline_vtable->call_state_changed = video_call_state_changed; + linphone_core_add_listener(pauline->lc, pauline_vtable); + linphone_core_set_video_device(pauline->lc, "StaticImage: Static picture"); + linphone_core_enable_video_capture(pauline->lc, TRUE); + linphone_core_enable_video_display(pauline->lc, TRUE); + pauline_params = linphone_core_create_default_call_parameters(pauline->lc); + linphone_call_params_enable_video(pauline_params, TRUE); + disable_all_video_codecs_except_one(pauline->lc, "VP8"); + + CU_ASSERT_TRUE(video_call_with_params(marie, pauline, marie_params, pauline_params)); + + /* Wait for 3s. */ + wait_for_until(marie->lc, pauline->lc, &dummy, 1, 3000); + + linphone_core_terminate_all_calls(marie->lc); + CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &marie->stat.number_of_LinphoneCallEnd, 1)); + CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &pauline->stat.number_of_LinphoneCallEnd, 1)); + CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &marie->stat.number_of_LinphoneCallReleased, 1)); + CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &pauline->stat.number_of_LinphoneCallReleased, 1)); + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); +} + +test_t video_tests[] = { + { "Early-media video during video call", early_media_video_during_video_call_test } +}; + +test_suite_t video_test_suite = { + "Video", + NULL, + NULL, + sizeof(video_tests) / sizeof(video_tests[0]), + video_tests +}; + +#endif /* VIDEO_ENABLED */ From 3e1d142b5c87d6bb0c0d6d29ba62ff06044a9cab Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 4 Feb 2015 10:38:49 +0100 Subject: [PATCH 330/496] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 31ec76f3e..93d48f997 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 31ec76f3e3955c2521fc770308c39f1de641de67 +Subproject commit 93d48f9970b0be6966f990792c72160bd4f4934b From 8484642ce274afffc9b0a2007aac1644aa1d4394 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Wed, 4 Feb 2015 10:57:08 +0100 Subject: [PATCH 331/496] Add video ifdef --- coreapi/linphonecall.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index e6dc3cb56..dab82bb9b 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -3615,7 +3615,9 @@ unsigned long linphone_call_get_native_video_window_id(const LinphoneCall *call) void linphone_call_set_native_video_window_id(LinphoneCall *call, unsigned long id) { call->video_window_id = id; +#ifdef VIDEO_ENABLED if (call->videostream) { video_stream_set_native_window_id(call->videostream, id); } +#endif } From ef810b108bc93567193f5ac6849a9b5253d7efad Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 4 Feb 2015 11:05:09 +0100 Subject: [PATCH 332/496] fix compilation errors --- tester/Makefile.am | 2 +- tester/video_tester.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tester/Makefile.am b/tester/Makefile.am index 5b4328430..2eebd36fa 100644 --- a/tester/Makefile.am +++ b/tester/Makefile.am @@ -38,7 +38,7 @@ AM_CFLAGS = $(STRICT_OPTIONS) $(STRICT_OPTIONS_CC) -DIN_LINPHONE $(ORTP_CFLAG if BUILD_GTK_UI -liblinphone_tester_la_LIBADD += $(LIBGTK_LIBS) $(LIBGTKMAC_LIBS) +liblinphonetester_la_LIBADD += $(LIBGTK_LIBS) $(LIBGTKMAC_LIBS) AM_CFLAGS += $(LIBGTK_CFLAGS) $(LIBGTKMAC_CFLAGS) -DHAVE_GTK endif diff --git a/tester/video_tester.c b/tester/video_tester.c index 88518aff9..ac7e8575c 100644 --- a/tester/video_tester.c +++ b/tester/video_tester.c @@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#include "private.h" #if defined(VIDEO_ENABLED) && defined(HAVE_GTK) @@ -23,7 +24,7 @@ #include "linphonecore.h" #include "liblinphone_tester.h" #include "lpconfig.h" -#include "private.h" + #include #ifdef GDK_WINDOWING_X11 @@ -167,7 +168,7 @@ static void early_media_video_during_video_call_test(void) { pauline_params = linphone_core_create_default_call_parameters(pauline->lc); linphone_call_params_enable_video(pauline_params, TRUE); disable_all_video_codecs_except_one(pauline->lc, "VP8"); - + CU_ASSERT_TRUE(video_call_with_params(marie, pauline, marie_params, pauline_params)); /* Wait for 3s. */ From 06fc0526ec0519bbe3aba6331287bfda8db8c631 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 30 Jan 2015 22:34:24 +0100 Subject: [PATCH 333/496] multicast impl --- coreapi/bellesip_sal/sal_sdp.c | 11 +- coreapi/call_params.c | 16 +++ coreapi/call_params.h | 42 +++++++ coreapi/linphonecall.c | 72 ++++++++++-- coreapi/linphonecore.c | 104 +++++++++++++++++ coreapi/linphonecore.h | 99 +++++++++++++++++ coreapi/offeranswer.c | 101 ++++++++++++++++- coreapi/presence.c | 2 + coreapi/private.h | 12 ++ include/sal/sal.h | 10 ++ tester/Makefile.am | 1 + tester/call_tester.c | 21 ++-- tester/liblinphone_tester.h | 5 +- tester/multicast_call_tester.c | 198 +++++++++++++++++++++++++++++++++ tester/presence_tester.c | 79 +++++++++++-- tester/tester.c | 1 + 16 files changed, 740 insertions(+), 34 deletions(-) create mode 100644 tester/multicast_call_tester.c diff --git a/coreapi/bellesip_sal/sal_sdp.c b/coreapi/bellesip_sal/sal_sdp.c index 8bade6e7f..ce780c1cf 100644 --- a/coreapi/bellesip_sal/sal_sdp.c +++ b/coreapi/bellesip_sal/sal_sdp.c @@ -210,10 +210,18 @@ static void stream_description_to_sdp ( belle_sdp_session_description_t *session /*only add a c= line within the stream description if address are differents*/ if (rtp_addr[0]!='\0' && strcmp(rtp_addr,md->addr)!=0){ bool_t inet6; + belle_sdp_connection_t *connection; if (strchr(rtp_addr,':')!=NULL){ inet6=TRUE; }else inet6=FALSE; - belle_sdp_media_description_set_connection(media_desc,belle_sdp_connection_create("IN", inet6 ? "IP6" : "IP4", rtp_addr)); + connection = belle_sdp_connection_create("IN", inet6 ? "IP6" : "IP4", rtp_addr); + if (ms_is_multicast(rtp_addr)) { + /*remove session cline in case of multicast*/ + belle_sdp_session_description_set_connection(session_desc,NULL); + if (inet6 == FALSE) + belle_sdp_connection_set_ttl(connection,stream->ttl); + } + belle_sdp_media_description_set_connection(media_desc,connection); } if ( stream->bandwidth>0 ) @@ -706,6 +714,7 @@ static SalStreamDescription * sdp_to_stream_description(SalMediaDescription *md, } if ( ( cnx=belle_sdp_media_description_get_connection ( media_desc ) ) && belle_sdp_connection_get_address ( cnx ) ) { strncpy ( stream->rtp_addr,belle_sdp_connection_get_address ( cnx ), sizeof ( stream->rtp_addr ) -1 ); + stream->ttl=belle_sdp_connection_get_ttl(cnx); } stream->rtp_port=belle_sdp_media_get_media_port ( media ); diff --git a/coreapi/call_params.c b/coreapi/call_params.c index 255103fb8..a2a378eef 100644 --- a/coreapi/call_params.c +++ b/coreapi/call_params.c @@ -51,6 +51,7 @@ LinphoneCallParams * linphone_call_params_copy(const LinphoneCallParams *cp){ * The management of the custom headers is not optimal. We copy everything while ref counting would be more efficient. */ if (cp->custom_headers) ncp->custom_headers=sal_custom_header_clone(cp->custom_headers); + return ncp; } @@ -158,6 +159,21 @@ bool_t linphone_call_params_video_enabled(const LinphoneCallParams *cp){ return cp->has_video; } +LinphoneCallParamsMediaDirection linphone_call_params_get_audio_direction(const LinphoneCallParams *cp) { + return cp->audio_dir; +} + +LinphoneCallParamsMediaDirection linphone_call_params_get_video_direction(const LinphoneCallParams *cp) { + return cp->video_dir; +} + +void linphone_call_params_set_audio_direction(LinphoneCallParams *cp,LinphoneCallParamsMediaDirection dir) { + cp->audio_dir=dir; +} + +void linphone_call_params_set_video_direction(LinphoneCallParams *cp,LinphoneCallParamsMediaDirection dir) { + cp->video_dir=dir; +} /******************************************************************************* diff --git a/coreapi/call_params.h b/coreapi/call_params.h index 9c942826b..c3362534e 100644 --- a/coreapi/call_params.h +++ b/coreapi/call_params.h @@ -30,6 +30,20 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /******************************************************************************* * Structures and enums * ******************************************************************************/ +/** + * Indicates for a given media the stream direction + * */ +enum _LinphoneCallParamsMediaDirection { + LinphoneCallParamsMediaDirectionInactive, /** No active media not supported yet*/ + LinphoneCallParamsMediaDirectionSendOnly, /** Send only mode*/ + LinphoneCallParamsMediaDirectionRecvOnly, /** recv only mode*/ + LinphoneCallParamsMediaDirectionSendRecv, /*send receive mode not supported yet*/ + +}; +/** + * Typedef for enum +**/ +typedef enum _LinphoneCallParamsMediaDirection LinphoneCallParamsMediaDirection; /** * Private structure definition for LinphoneCallParams. @@ -247,6 +261,34 @@ LINPHONE_PUBLIC void linphone_call_params_set_session_name(LinphoneCallParams *c **/ LINPHONE_PUBLIC bool_t linphone_call_params_video_enabled(const LinphoneCallParams *cp); +/** + * Get the audio stream direction. + * @param[in] cl LinphoneCallParams object + * @return The audio stream direction associated with the call params. +**/ +LINPHONE_PUBLIC LinphoneCallParamsMediaDirection linphone_call_params_get_audio_direction(const LinphoneCallParams *cp); + +/** + * Get the video stream direction. + * @param[in] cl LinphoneCallParams object + * @return The video stream direction associated with the call params. +**/ +LINPHONE_PUBLIC LinphoneCallParamsMediaDirection linphone_call_params_get_video_direction(const LinphoneCallParams *cp); + +/** + * Set the audio stream direction. Only relevant for multicast + * @param[in] cl LinphoneCallParams object + * @param[in] The audio stream direction associated with this call params. +**/ +/*LINPHONE_PUBLIC void linphone_call_params_set_audio_direction(LinphoneCallParams *cp, LinphoneCallParamsMediaDirection dir);*/ + +/** + * Set the video stream direction. Only relevant for multicast + * @param[in] cl LinphoneCallParams object + * @param[in] The video stream direction associated with this call params. +**/ +/*LINPHONE_PUBLIC void linphone_call_params_set_video_direction(LinphoneCallParams *cp, LinphoneCallParamsMediaDirection dir);*/ + /******************************************************************************* * Reference and user data handling functions * diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index dab82bb9b..ea0676b6d 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -546,7 +546,24 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * const char *me; SalMediaDescription *md=sal_media_description_new(); LinphoneAddress *addr; - char* local_ip=call->localip; + const char* local_audio_ip; + const char* local_video_ip; + /*multicast is only set in case of outgoing call*/ + if (call->dir == LinphoneCallOutgoing && linphone_core_audio_multicast_enabled(lc)) { + local_audio_ip=linphone_core_get_audio_multicast_addr(lc); + md->streams[0].ttl=linphone_core_get_audio_multicast_ttl(lc); + md->streams[0].multicast_role = SalMulticastRoleSender; + } else + local_audio_ip=call->localip; + + if (call->dir == LinphoneCallOutgoing && linphone_core_video_multicast_enabled(lc)) { + local_video_ip=linphone_core_get_video_multicast_addr(lc); + md->streams[1].ttl=linphone_core_get_video_multicast_ttl(lc); + md->streams[1].multicast_role = SalMulticastRoleSender; + }else + local_video_ip=call->localip; + + const char *subject=linphone_call_params_get_session_name(call->params); CodecConstraints codec_hints={0}; @@ -562,7 +579,7 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * md->session_ver=(old_md ? (old_md->session_ver+1) : (rand() & 0xfff)); md->nb_streams=(call->biggestdesc ? call->biggestdesc->nb_streams : 1); - strncpy(md->addr,local_ip,sizeof(md->addr)); + strncpy(md->addr,call->localip,sizeof(md->addr)); strncpy(md->username,linphone_address_get_username(addr),sizeof(md->username)); if (subject) strncpy(md->name,subject,sizeof(md->name)); @@ -571,8 +588,8 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * else md->bandwidth=linphone_core_get_download_bandwidth(lc); /*set audio capabilities */ - strncpy(md->streams[0].rtp_addr,local_ip,sizeof(md->streams[0].rtp_addr)); - strncpy(md->streams[0].rtcp_addr,local_ip,sizeof(md->streams[0].rtcp_addr)); + strncpy(md->streams[0].rtp_addr,local_audio_ip,sizeof(md->streams[0].rtp_addr)); + strncpy(md->streams[0].rtcp_addr,local_audio_ip,sizeof(md->streams[0].rtcp_addr)); strncpy(md->streams[0].name,"Audio",sizeof(md->streams[0].name)-1); md->streams[0].rtp_port=call->media_ports[0].rtp_port; md->streams[0].rtcp_port=call->media_ports[0].rtcp_port; @@ -599,8 +616,8 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * nb_active_streams++; if (call->params->has_video){ - strncpy(md->streams[1].rtp_addr,local_ip,sizeof(md->streams[1].rtp_addr)); - strncpy(md->streams[1].rtcp_addr,local_ip,sizeof(md->streams[1].rtcp_addr)); + strncpy(md->streams[1].rtp_addr,local_video_ip,sizeof(md->streams[1].rtp_addr)); + strncpy(md->streams[1].rtcp_addr,local_video_ip,sizeof(md->streams[1].rtcp_addr)); strncpy(md->streams[1].name,"Video",sizeof(md->streams[1].name)-1); md->streams[1].rtp_port=call->media_ports[1].rtp_port; md->streams[1].rtcp_port=call->media_ports[1].rtcp_port; @@ -764,6 +781,9 @@ static void linphone_call_init_common(LinphoneCall *call, LinphoneAddress *from, linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_AUDIO], LINPHONE_CALL_STATS_AUDIO); linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_VIDEO], LINPHONE_CALL_STATS_VIDEO); + /*by default local_audio_ip=local_video_ip=local_ip*/ + strncpy(call->local_audio_ip,call->localip,sizeof(call->local_audio_ip)); + strncpy(call->local_video_ip,call->localip,sizeof(call->local_video_ip)); } void linphone_call_init_stats(LinphoneCallStats *stats, int type) { @@ -935,6 +955,20 @@ void linphone_call_set_compatible_incoming_call_parameters(LinphoneCall *call, c if ((sal_media_description_has_srtp(md) == TRUE) && (ms_srtp_supported() == TRUE)) { call->params->media_encryption = LinphoneMediaEncryptionSRTP; } + + //set both local audio & video + if (ms_is_multicast(md->streams[0].rtp_addr)) { + strncpy(call->local_audio_ip,md->streams[0].rtp_addr,sizeof(call->local_audio_ip)); + ms_message("Disabling audio rtcp on call [%p] because of multicast",call); + call->media_ports[0].rtp_port=md->streams[0].rtp_port; + call->media_ports[0].rtcp_port=0; + } + if (ms_is_multicast(md->streams[1].rtp_addr)) { + strncpy(call->local_video_ip,md->streams[1].rtp_addr,sizeof(call->local_video_ip)); + call->media_ports[1].rtp_port=md->streams[1].rtp_port; + call->media_ports[1].rtcp_port=0; + ms_message("Disabling video rtcp on call [%p] because of multicast",call); + } } LinphoneCall * linphone_call_new_incoming(LinphoneCore *lc, LinphoneAddress *from, LinphoneAddress *to, SalOp *op){ @@ -1767,11 +1801,12 @@ void linphone_call_init_audio_stream(LinphoneCall *call){ int dscp; char rtcp_tool[128]={0}; char* cname; + snprintf(rtcp_tool,sizeof(rtcp_tool)-1,"%s-%s",linphone_core_get_user_agent_name(),linphone_core_get_user_agent_version()); if (call->audiostream != NULL) return; if (call->sessions[0].rtp_session==NULL){ - call->audiostream=audiostream=audio_stream_new(call->media_ports[0].rtp_port,call->media_ports[0].rtcp_port,call->af==AF_INET6); + call->audiostream=audiostream=audio_stream_new2(call->local_audio_ip,call->media_ports[0].rtp_port,call->media_ports[0].rtcp_port); cname = linphone_address_as_string_uri_only(call->me); audio_stream_set_rtcp_information(call->audiostream, cname, rtcp_tool); ms_free(cname); @@ -1876,7 +1911,7 @@ void linphone_call_init_video_stream(LinphoneCall *call){ const char *display_filter=linphone_core_get_video_display_filter(lc); if (call->sessions[1].rtp_session==NULL){ - call->videostream=video_stream_new(call->media_ports[1].rtp_port,call->media_ports[1].rtcp_port, call->af==AF_INET6); + call->videostream=video_stream_new2(call->local_video_ip,call->media_ports[1].rtp_port,call->media_ports[1].rtcp_port); cname = linphone_address_as_string_uri_only(call->me); video_stream_set_rtcp_information(call->videostream, cname, rtcp_tool); ms_free(cname); @@ -2259,7 +2294,9 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b } /*Replace soundcard filters by inactive file players or recorders when placed in recvonly or sendonly mode*/ - if (stream->rtp_port==0 || stream->dir==SalStreamRecvOnly){ + if (stream->rtp_port==0 + || stream->dir==SalStreamRecvOnly + || (stream->multicast_role == SalMulticastRoleReceiver && ms_is_multicast(stream->rtp_addr))){ captcard=NULL; playfile=NULL; }else if (stream->dir==SalStreamSendOnly){ @@ -2315,13 +2352,16 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b } } configure_rtp_session_for_rtcp_xr(lc, call, SalAudio); + if (ms_is_multicast(stream->rtp_addr)) + rtp_session_set_multicast_ttl(call->audiostream->ms.sessions.rtp_session,stream->ttl); + audio_stream_start_full( call->audiostream, call->audio_profile, stream->rtp_addr[0]!='\0' ? stream->rtp_addr : call->resultdesc->addr, stream->rtp_port, stream->rtcp_addr[0]!='\0' ? stream->rtcp_addr : call->resultdesc->addr, - linphone_core_rtcp_enabled(lc) ? (stream->rtcp_port ? stream->rtcp_port : stream->rtp_port+1) : 0, + (linphone_core_rtcp_enabled(lc) && !ms_is_multicast(stream->rtp_addr)) ? (stream->rtcp_port ? stream->rtcp_port : stream->rtp_port+1) : 0, used_pt, linphone_core_get_audio_jittcomp(lc), playfile, @@ -2402,7 +2442,12 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu video_stream_set_native_preview_window_id (call->videostream,lc->preview_window_id); video_stream_use_preview_video_window (call->videostream,lc->use_preview_window); - if (vstream->dir==SalStreamSendOnly && lc->video_conf.capture ){ + if (ms_is_multicast(vstream->rtp_addr)){ + if (vstream->multicast_role == SalMulticastRoleReceiver) + dir=VideoStreamRecvOnly; + else + dir=VideoStreamSendOnly; + } else if (vstream->dir==SalStreamSendOnly && lc->video_conf.capture ){ if (local_st_desc->dir==SalStreamSendOnly){ /* localdesc stream dir to SendOnly is when we want to put on hold, so use nowebcam in this case*/ cam=get_nowebcam_device(); @@ -2440,6 +2485,9 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu ms_message("%s lc rotation:%d\n", __FUNCTION__, lc->device_rotation); video_stream_set_device_rotation(call->videostream, lc->device_rotation); video_stream_set_freeze_on_error(call->videostream, lp_config_get_int(lc->config, "video", "freeze_on_error", 0)); + if (ms_is_multicast(vstream->rtp_addr)) + rtp_session_set_multicast_ttl(call->videostream->ms.sessions.rtp_session,vstream->ttl); + if( lc->video_conf.reuse_preview_source && source ){ ms_message("video_stream_start_with_source kept: %p", source); video_stream_start_with_source(call->videostream, @@ -2452,7 +2500,7 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu video_stream_start(call->videostream, call->video_profile, rtp_addr, vstream->rtp_port, rtcp_addr, - linphone_core_rtcp_enabled(lc) ? (vstream->rtcp_port ? vstream->rtcp_port : vstream->rtp_port+1) : 0, + (linphone_core_rtcp_enabled(lc) && !ms_is_multicast(vstream->rtp_addr)) ? (vstream->rtcp_port ? vstream->rtcp_port : vstream->rtp_port+1) : 0, used_pt, linphone_core_get_video_jittcomp(lc), cam); } } diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index d5a09b404..4a9b9bd1e 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -947,6 +947,8 @@ static void rtp_config_read(LinphoneCore *lc) int nortp_timeout; bool_t rtp_no_xmit_on_audio_mute; bool_t adaptive_jitt_comp_enabled; + const char* tmp; + int tmp_int; if (lp_config_get_range(lc->config, "rtp", "audio_rtp_port", &min_port, &max_port, 7078, 7078) == TRUE) { if (min_port <= 0) min_port = 1; @@ -981,6 +983,26 @@ static void rtp_config_read(LinphoneCore *lc) linphone_core_enable_video_adaptive_jittcomp(lc, adaptive_jitt_comp_enabled); lc->rtp_conf.disable_upnp = lp_config_get_int(lc->config, "rtp", "disable_upnp", FALSE); linphone_core_set_avpf_mode(lc,lp_config_get_int(lc->config,"rtp","avpf",0)); + if ((tmp=lp_config_get_string(lc->config,"rtp","audio_multicast_addr",NULL))) + linphone_core_set_audio_multicast_addr(lc,tmp); + else + lc->rtp_conf.audio_multicast_addr=ms_strdup("224.1.2.3"); + if ((tmp_int=lp_config_get_int(lc->config,"rtp","audio_multicast_enabled",-1)) >-1) + linphone_core_enable_audio_multicast(lc,tmp_int); + if ((tmp_int=lp_config_get_int(lc->config,"rtp","audio_multicast_ttl",-1))>0) + linphone_core_set_audio_multicast_ttl(lc,tmp_int); + else + lc->rtp_conf.audio_multicast_ttl=1;/*local network*/ + if ((tmp=lp_config_get_string(lc->config,"rtp","video_multicast_addr",NULL))) + linphone_core_set_video_multicast_addr(lc,tmp); + else + lc->rtp_conf.video_multicast_addr=ms_strdup("224.1.2.3"); + if ((tmp_int=lp_config_get_int(lc->config,"rtp","video_multicast_ttl",-1))>-1) + linphone_core_set_video_multicast_ttl(lc,tmp_int); + else + lc->rtp_conf.video_multicast_ttl=1;/*local network*/ + if ((tmp_int=lp_config_get_int(lc->config,"rtp","video_multicast_enabled",-1)) >0) + linphone_core_enable_video_multicast(lc,tmp_int); } static PayloadType * find_payload(const MSList *default_list, const char *mime_type, int clock_rate, int channels, const char *recv_fmtp){ @@ -6123,6 +6145,8 @@ void rtp_config_uninit(LinphoneCore *lc) lp_config_set_int(lc->config,"rtp","nortp_timeout",config->nortp_timeout); lp_config_set_int(lc->config,"rtp","audio_adaptive_jitt_comp_enabled",config->audio_adaptive_jitt_comp_enabled); lp_config_set_int(lc->config,"rtp","video_adaptive_jitt_comp_enabled",config->video_adaptive_jitt_comp_enabled); + ms_free(lc->rtp_conf.audio_multicast_addr); + ms_free(lc->rtp_conf.video_multicast_addr); ms_free(config->srtp_suites); } @@ -6878,6 +6902,8 @@ void linphone_core_init_default_params(LinphoneCore*lc, LinphoneCallParams *para params->in_conference=FALSE; params->privacy=LinphonePrivacyDefault; params->avpf_enabled=FALSE; + params->audio_dir=LinphoneCallParamsMediaDirectionSendRecv; + params->video_dir=LinphoneCallParamsMediaDirectionSendRecv; } void linphone_core_set_device_identifier(LinphoneCore *lc,const char* device_id) { @@ -7216,3 +7242,81 @@ void linphone_core_remove_listener(LinphoneCore *lc, const LinphoneCoreVTable *v ms_message("Vtable [%p] unregistered on core [%p]",lc,vtable); lc->vtables=ms_list_remove(lc->vtables,(void*)vtable); } + +int linphone_core_set_audio_multicast_addr(LinphoneCore *lc, const char* ip) { + char* new_value; + if (ip && !ms_is_multicast(ip)) { + ms_error("Cannot set multicast audio addr to core [%p] because [%s] is not multicast",lc,ip); + return -1; + } + new_value = ip?ms_strdup(ip):NULL; + if (lc->rtp_conf.audio_multicast_addr) ms_free(lc->rtp_conf.audio_multicast_addr); + lp_config_set_string(lc->config,"rtp","audio_multicast_addr",lc->rtp_conf.audio_multicast_addr=new_value); + return 0; +} + +int linphone_core_set_video_multicast_addr(LinphoneCore *lc, const char* ip) { + char* new_value; + if (ip && !ms_is_multicast(ip)) { + ms_error("Cannot set multicast video addr to core [%p] because [%s] is not multicast",lc,ip); + return -1; + } + new_value = ip?ms_strdup(ip):NULL; + if (lc->rtp_conf.video_multicast_addr) ms_free(lc->rtp_conf.video_multicast_addr); + lp_config_set_string(lc->config,"rtp","video_multicast_addr",lc->rtp_conf.video_multicast_addr=new_value); + return 0; +} + +const char* linphone_core_get_audio_multicast_addr(const LinphoneCore *lc) { + return lc->rtp_conf.audio_multicast_addr; +} + + +const char* linphone_core_get_video_multicast_addr(const LinphoneCore *lc){ + return lc->rtp_conf.video_multicast_addr; +} + +int linphone_core_set_audio_multicast_ttl(LinphoneCore *lc, int ttl) { + if (ttl>255) { + ms_error("Cannot set multicast audio ttl to core [%p] to [%i] value must be <256",lc,ttl); + return -1; + } + + lp_config_set_int(lc->config,"rtp","audio_multicast_ttl",lc->rtp_conf.audio_multicast_ttl=ttl); + return 0; +} + +int linphone_core_set_video_multicast_ttl(LinphoneCore *lc, int ttl) { + if (ttl>255) { + ms_error("Cannot set multicast video ttl to core [%p] to [%i] value must be <256",lc,ttl); + return -1; + } + + lp_config_set_int(lc->config,"rtp","video_multicast_ttl",lc->rtp_conf.video_multicast_ttl=ttl); + return 0; +} + +int linphone_core_get_audio_multicast_ttl(const LinphoneCore *lc) { + return lc->rtp_conf.audio_multicast_ttl; +} + + +int linphone_core_get_video_multicast_ttl(const LinphoneCore *lc){ + return lc->rtp_conf.video_multicast_ttl; +} + +void linphone_core_enable_audio_multicast(LinphoneCore *lc, bool_t yesno) { + lp_config_set_int(lc->config,"rtp","audio_multicast_enabled",lc->rtp_conf.audio_multicast_enabled=yesno); +} + + bool_t linphone_core_audio_multicast_enabled(const LinphoneCore *lc) { + return lc->rtp_conf.audio_multicast_enabled; +} + +void linphone_core_enable_video_multicast(LinphoneCore *lc, bool_t yesno) { + lp_config_set_int(lc->config,"rtp","video_multicast_enabled",lc->rtp_conf.video_multicast_enabled=yesno); +} + +bool_t linphone_core_video_multicast_enabled(const LinphoneCore *lc) { + return lc->rtp_conf.video_multicast_enabled; +} diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index a17efa793..999bf4823 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -3305,6 +3305,105 @@ LINPHONE_PUBLIC void linphone_core_set_avpf_rr_interval(LinphoneCore *lc, int in LINPHONE_PUBLIC int linphone_core_get_avpf_rr_interval(const LinphoneCore *lc); +/** + * Use to set multicast address to be used for audio stream. + * @param core the core + * @param ip an ipv4/6 multicast address + * @return 0 in case of success + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC int linphone_core_set_audio_multicast_addr(LinphoneCore *core, const char* ip); +/** + * Use to set multicast address to be used for video stream. + * @param core the core + * @param ip an ipv4/6 multicast address + * @return 0 in case of success + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC int linphone_core_set_video_multicast_addr(LinphoneCore *lc, const char *ip); + +/** + * Use to get multicast address to be used for audio stream. + * @param core the core + * @return an ipv4/6 multicast address or default value + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC const char* linphone_core_get_audio_multicast_addr(const LinphoneCore *core); + +/** + * Use to get multicast address to be used for video stream. + * @param core the core + * @return an ipv4/6 multicast address, or default value + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC const char* linphone_core_get_video_multicast_addr(const LinphoneCore *core); + +/** + * Use to set multicast ttl to be used for audio stream. + * @param core the core + * @param ip an ttl or -1 if not used [0..255] default value is 1 + * @return 0 in case of success + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC int linphone_core_set_audio_multicast_ttl(LinphoneCore *core, int ttl); +/** + * Use to set multicast ttl to be used for video stream. + * @param core the core + * @param ip an ttl or -1 if not used [0..255] default value is 1 + * @return 0 in case of success + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC int linphone_core_set_video_multicast_ttl(LinphoneCore *lc, int ttl); + +/** + * Use to get multicast ttl to be used for audio stream. + * @param core the core + * @return an time to leave value or -1 if not set + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC int linphone_core_get_audio_multicast_ttl(const LinphoneCore *core); + +/** + * Use to get multicast ttl to be used for video stream. + * @param core the core + * @return an an time to leave value or -1 if not set + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC int linphone_core_get_video_multicast_ttl(const LinphoneCore *core); + + +/** + * Use to enable multicast rtp for audio stream. + * @param core the core + * @param yesno if yes, subsequent calls propose multicast ip set by #linphone_core_set_audio_multicast_addr + * @return an ipv4/6 multicast address or null + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC void linphone_core_enable_audio_multicast(LinphoneCore *core, bool_t yesno); + +/** + * Use to get multicast state of audio stream. + * @param core the core + * @return true if subsequent calls propose multicast ip set by #linphone_core_set_audio_multicast_addr + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC bool_t linphone_core_audio_multicast_enabled(const LinphoneCore *core); + +/** + * Use to enable multicast rtp for video stream. + * @param core the core + * @param yesno if yes, subsequent calls propose multicast ip set by #linphone_core_set_video_multicast_addr + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC void linphone_core_enable_video_multicast(LinphoneCore *core, bool_t yesno); +/** + * Use to get multicast state of video stream. + * @param core the core + * @return true if subsequent calls propose multicast ip set by #linphone_core_set_audio_multicast_addr + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC bool_t linphone_core_video_multicast_enabled(const LinphoneCore *core); + #ifdef __cplusplus } #endif diff --git a/coreapi/offeranswer.c b/coreapi/offeranswer.c index ef14fad81..531965c86 100644 --- a/coreapi/offeranswer.c +++ b/coreapi/offeranswer.c @@ -296,9 +296,81 @@ static void initiate_outgoing(const SalStreamDescription *local_offer, SalStreamDescription *result){ if (remote_answer->rtp_port!=0) result->payloads=match_payloads(local_offer->payloads,remote_answer->payloads,TRUE,FALSE); + else { + ms_message("Local stream description [%p] rejected by peer",local_offer); + result->rtp_port=0; + return; + } result->proto=remote_answer->proto; result->type=local_offer->type; - result->dir=compute_dir_outgoing(local_offer->dir,remote_answer->dir); + + if (ms_is_multicast(local_offer->rtp_addr)) { + /*6.2 Multicast Streams + ... + If a multicast stream is accepted, the address and port information + in the answer MUST match that of the offer. Similarly, the + directionality information in the answer (sendonly, recvonly, or + sendrecv) MUST equal that of the offer. This is because all + participants in a multicast session need to have equivalent views of + the parameters of the session, an underlying assumption of the + multicast bias of RFC 2327.*/ + if (strcmp(local_offer->rtp_addr,remote_answer->rtp_addr) !=0 ) { + ms_message("Remote answered IP [%s] does not match offered [%s] for local stream description [%p]" + ,remote_answer->rtp_addr + ,local_offer->rtp_addr + ,local_offer); + result->rtp_port=0; + return; + } + if (local_offer->rtp_port!=remote_answer->rtp_port) { + ms_message("Remote answered rtp port [%i] does not match offered [%i] for local stream description [%p]" + ,remote_answer->rtp_port + ,local_offer->rtp_port + ,local_offer); + result->rtp_port=0; + return; + } + if (local_offer->dir!=remote_answer->dir) { + ms_message("Remote answered dir [%s] does not match offered [%s] for local stream description [%p]" + ,sal_stream_dir_to_string(remote_answer->dir) + ,sal_stream_dir_to_string(local_offer->dir) + ,local_offer); + result->rtp_port=0; + return; + } + if (local_offer->bandwidth!=remote_answer->bandwidth) { + ms_message("Remote answered bandwidth [%i] does not match offered [%i] for local stream description [%p]" + ,remote_answer->bandwidth + ,local_offer->bandwidth + ,local_offer); + result->rtp_port=0; + return; + } + if (local_offer->ptime > 0 && local_offer->ptime!=remote_answer->ptime) { + ms_message("Remote answered ptime [%i] does not match offered [%i] for local stream description [%p]" + ,remote_answer->ptime + ,local_offer->ptime + ,local_offer); + result->rtp_port=0; + return; + } + if (local_offer->ttl > 0 && local_offer->ttl!=remote_answer->ttl) { + ms_message("Remote answered ttl [%i] does not match offered [%i] for local stream description [%p]" + ,remote_answer->ttl + ,local_offer->ttl + ,local_offer); + result->rtp_port=0; + return; + } + result->ttl=local_offer->ttl; + result->dir=local_offer->dir; + result->multicast_role = SalMulticastRoleSender; + + } else { + result->dir=compute_dir_outgoing(local_offer->dir,remote_answer->dir); + } + + if (result->payloads && !only_telephone_event(result->payloads)){ strcpy(result->rtp_addr,remote_answer->rtp_addr); @@ -328,16 +400,34 @@ static void initiate_incoming(const SalStreamDescription *local_cap, result->payloads=match_payloads(local_cap->payloads,remote_offer->payloads, FALSE, one_matching_codec); result->proto=remote_offer->proto; result->type=local_cap->type; - result->dir=compute_dir_incoming(local_cap->dir,remote_offer->dir); - if (result->payloads && !only_telephone_event(result->payloads) && (remote_offer->rtp_port!=0 || remote_offer->rtp_port==SalStreamSendOnly)){ + if (!result->payloads || only_telephone_event(result->payloads) || remote_offer->rtp_port==0 || remote_offer->rtp_port==SalStreamSendOnly){ + result->dir=compute_dir_incoming(local_cap->dir,remote_offer->dir); + result->rtp_port=0; + return; + } + if (ms_is_multicast(remote_offer->rtp_addr)) { + if (sal_stream_description_has_srtp(result) == TRUE) { + ms_message("SAVP not supported for multicast address for remote stream [%p]",remote_offer); + result->rtp_port=0; + return; + } + result->dir=remote_offer->dir; + strcpy(result->rtp_addr,remote_offer->rtp_addr); + strcpy(result->rtcp_addr,remote_offer->rtcp_addr); + result->rtp_port=remote_offer->rtp_port; + /*result->rtcp_port=remote_offer->rtcp_port;*/ + result->rtcp_port=0; /* rtcp not supported yet*/ + result->bandwidth=remote_offer->bandwidth; + result->ptime=remote_offer->ptime; + result->ttl=remote_offer->ttl; + result->multicast_role = SalMulticastRoleReceiver; + } else { strcpy(result->rtp_addr,local_cap->rtp_addr); strcpy(result->rtcp_addr,local_cap->rtcp_addr); result->rtp_port=local_cap->rtp_port; result->rtcp_port=local_cap->rtcp_port; result->bandwidth=local_cap->bandwidth; result->ptime=local_cap->ptime; - }else{ - result->rtp_port=0; } if (sal_stream_description_has_srtp(result) == TRUE) { /* select crypto algo */ @@ -358,6 +448,7 @@ static void initiate_incoming(const SalStreamDescription *local_cap, } + /** * Returns a media description to run the streams with, based on a local offer * and the returned response (remote). diff --git a/coreapi/presence.c b/coreapi/presence.c index 53d206ea5..869f723ed 100644 --- a/coreapi/presence.c +++ b/coreapi/presence.c @@ -1796,6 +1796,8 @@ void linphone_notify_convert_presence_to_xml(SalOp *op, SalPresenceModel *presen return; } + xmlTextWriterSetIndent(writer,1); + err = xmlTextWriterStartDocument(writer, "1.0", "UTF-8", NULL); if (err >= 0) { err = xmlTextWriterStartElementNS(writer, NULL, (const xmlChar *)"presence", (const xmlChar *)"urn:ietf:params:xml:ns:pidf"); diff --git a/coreapi/private.h b/coreapi/private.h index 13bc91456..18feea39f 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -79,6 +79,7 @@ extern "C" { #endif #endif + struct _LinphoneCallParams{ belle_sip_object_t base; void *user_data; @@ -105,6 +106,9 @@ struct _LinphoneCallParams{ 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; + LinphoneCallParamsMediaDirection audio_dir; + LinphoneCallParamsMediaDirection video_dir; + }; BELLE_SIP_DECLARE_VPTR(LinphoneCallParams); @@ -217,6 +221,8 @@ struct _LinphoneCall{ SalOp *op; SalOp *ping_op; char localip[LINPHONE_IPADDR_SIZE]; /* our best guess for local ipaddress for this call */ + char local_audio_ip[LINPHONE_IPADDR_SIZE]; /* our best guess for local ipaddress for this call or what proposed in sdp in case of multicast*/ + char local_video_ip[LINPHONE_IPADDR_SIZE]; /* our best guess for local ipaddress for this call or what proposed in sdp in case of multicast*/ LinphoneCallState state; LinphoneCallState prevstate; LinphoneCallState transfer_state; /*idle if no transfer*/ @@ -589,6 +595,12 @@ typedef struct rtp_config bool_t audio_adaptive_jitt_comp_enabled; bool_t video_adaptive_jitt_comp_enabled; bool_t pad; + char* audio_multicast_addr; + bool_t audio_multicast_enabled; + int audio_multicast_ttl; + char* video_multicast_addr; + int video_multicast_ttl; + bool_t video_multicast_enabled; }rtp_config_t; diff --git a/include/sal/sal.h b/include/sal/sal.h index 95037fe0e..75400d4de 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -196,6 +196,14 @@ typedef enum { SalDtlsRoleUnset } SalDtlsRole; +typedef enum { + SalMulticastInative=0, + SalMulticastRoleSender, + SalMulticastRoleReceiver, + SalMulticastSenderReceiver +} SalMulticastRole; + + typedef struct SalStreamDescription{ char name[16]; /*unique name of stream, in order to ease offer/answer model algorithm*/ SalMediaProto proto; @@ -226,6 +234,8 @@ typedef struct SalStreamDescription{ bool_t pad[2]; char dtls_fingerprint[256]; SalDtlsRole dtls_role; + int ttl; /*for multicast -1 to disable*/ + SalMulticastRole multicast_role; } SalStreamDescription; const char *sal_stream_description_get_type_as_string(const SalStreamDescription *desc); diff --git a/tester/Makefile.am b/tester/Makefile.am index 2eebd36fa..c55c992e3 100644 --- a/tester/Makefile.am +++ b/tester/Makefile.am @@ -15,6 +15,7 @@ liblinphonetester_la_SOURCES = tester.c \ register_tester.c \ message_tester.c \ call_tester.c \ + multicast_call_tester.c \ presence_tester.c \ upnp_tester.c \ eventapi_tester.c \ diff --git a/tester/call_tester.c b/tester/call_tester.c index 2d4a662d7..6a134c728 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -127,8 +127,8 @@ void linphone_transfer_state_changed(LinphoneCore *lc, LinphoneCall *transfered, } } -#ifdef VIDEO_ENABLED -static void linphone_call_cb(LinphoneCall *call,void * user_data) { + +void linphone_call_cb(LinphoneCall *call,void * user_data) { 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); stats* counters; @@ -139,7 +139,6 @@ static void linphone_call_cb(LinphoneCall *call,void * user_data) { counters = (stats*)get_stats(lc); counters->number_of_IframeDecoded++; } -#endif void liblinphone_tester_check_rtcp(LinphoneCoreManager* caller, LinphoneCoreManager* callee) { LinphoneCall *c1,*c2; @@ -314,7 +313,7 @@ void end_call(LinphoneCoreManager *m1, LinphoneCoreManager *m2){ CU_ASSERT_TRUE(wait_for(m1->lc,m2->lc,&m2->stat.number_of_LinphoneCallReleased,1)); } -static void simple_call(void) { +void simple_call_base(bool_t enable_multicast_recv_side) { int begin; int leaked_objects; LinphoneCoreManager* marie; @@ -347,6 +346,8 @@ static void simple_call(void) { linphone_address_unref(marie_addr); } + linphone_core_enable_audio_multicast(pauline->lc,enable_multicast_recv_side); + CU_ASSERT_TRUE(call(marie,pauline)); pauline_call=linphone_core_get_current_call(pauline->lc); CU_ASSERT_PTR_NOT_NULL(pauline_call); @@ -375,7 +376,9 @@ static void simple_call(void) { belle_sip_object_dump_active_objects(); } } - +static void simple_call() { + simple_call_base(FALSE); +} static void call_with_timeouted_bye(void) { int begin; int leaked_objects; @@ -1131,12 +1134,14 @@ static void call_with_custom_headers(void) { linphone_core_manager_destroy(pauline); } -static void call_paused_resumed(void) { +void call_paused_resumed_base(bool_t multicast) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); LinphoneCall* call_pauline; const rtp_stats_t * stats; + linphone_core_enable_audio_multicast(pauline->lc,multicast); + CU_ASSERT_TRUE(call(pauline,marie)); call_pauline = linphone_core_get_current_call(pauline->lc); @@ -1170,7 +1175,9 @@ static void call_paused_resumed(void) { linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } - +static void call_paused_resumed(void) { + call_paused_resumed_base(FALSE); +} #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*/ \ diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index c8ca02436..c20f29cc4 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -64,6 +64,7 @@ extern test_suite_t player_test_suite; extern test_suite_t dtmf_test_suite; extern test_suite_t offeranswer_test_suite; extern test_suite_t video_test_suite; +extern test_suite_t multicast_call_test_suite; extern int liblinphone_tester_nb_test_suites(void); @@ -314,7 +315,9 @@ void liblinphone_tester_enable_ipv6(bool_t enabled); void cunit_android_trace_handler(int level, const char *fmt, va_list args) ; #endif int liblinphone_tester_fprintf(FILE * stream, const char * format, ...); - +void linphone_call_cb(LinphoneCall *call,void * user_data); +void call_paused_resumed_base(bool_t multicast); +void simple_call_base(bool_t enable_multicast_recv_side); void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_relay,LinphoneFirewallPolicy policy,bool_t enable_tunnel); #endif /* LIBLINPHONE_TESTER_H_ */ diff --git a/tester/multicast_call_tester.c b/tester/multicast_call_tester.c new file mode 100644 index 000000000..8fe459dba --- /dev/null +++ b/tester/multicast_call_tester.c @@ -0,0 +1,198 @@ +/* + liblinphone_tester - liblinphone test suite + Copyright (C) 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, see . +*/ + + +#include "liblinphone_tester.h" +#include "linphonecore.h" +#include "belle-sip/belle-sip.h" + +static void call_multicast_base(bool_t video) { + LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + int begin; + int leaked_objects; + LinphoneVideoPolicy marie_policy, pauline_policy; + + belle_sip_object_enable_leak_detector(TRUE); + begin=belle_sip_object_get_object_count(); + + if (video) { + linphone_core_enable_video_capture(marie->lc, TRUE); + linphone_core_enable_video_display(marie->lc, TRUE); + linphone_core_enable_video_capture(pauline->lc, TRUE); + linphone_core_enable_video_display(pauline->lc, FALSE); + + marie_policy.automatically_initiate=TRUE; + marie_policy.automatically_accept=TRUE; + pauline_policy.automatically_initiate=TRUE; + pauline_policy.automatically_accept=TRUE; + + linphone_core_set_video_policy(marie->lc,&marie_policy); + linphone_core_set_video_policy(pauline->lc,&pauline_policy); + linphone_core_set_video_multicast_addr(pauline->lc,"224.1.2.3"); + linphone_core_enable_video_multicast(pauline->lc,TRUE); + } + linphone_core_set_audio_multicast_addr(pauline->lc,"224.1.2.3"); + linphone_core_enable_audio_multicast(pauline->lc,TRUE); + + CU_ASSERT_TRUE(call(pauline,marie)); + wait_for_until(marie->lc, pauline->lc, NULL, 1, 3000); + if (linphone_core_get_current_call(marie->lc)) { + CU_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(marie->lc))->download_bandwidth>70); + if (video) { + /*check video path*/ + linphone_call_set_next_video_frame_decoded_callback(linphone_core_get_current_call(marie->lc),linphone_call_cb,marie->lc); + linphone_call_send_vfu_request(linphone_core_get_current_call(marie->lc)); + CU_ASSERT_TRUE( wait_for(marie->lc,pauline->lc,&marie->stat.number_of_IframeDecoded,1)); + } + + end_call(marie,pauline); + } + 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_multicast(void) { + call_multicast_base(FALSE); +} +static void multicast_audio_with_pause_resume() { + call_paused_resumed_base(TRUE); +} +#ifdef VIDEO_ENABLED +static void call_multicast_video(void) { + call_multicast_base(TRUE); +} +#endif +static void early_media_with_multicast_base(bool_t video) { + LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new("pauline_rc"); + MSList* lcs = NULL; + LinphoneCall* marie_call; + int dummy=0; + int leaked_objects; + int begin; + LinphoneVideoPolicy marie_policy, pauline_policy; + + belle_sip_object_enable_leak_detector(TRUE); + begin=belle_sip_object_get_object_count(); + + if (video) { + linphone_core_enable_video_capture(pauline->lc, TRUE); + linphone_core_enable_video_display(pauline->lc, TRUE); + linphone_core_enable_video_capture(marie->lc, TRUE); + linphone_core_enable_video_display(marie->lc, FALSE); + + marie_policy.automatically_initiate=TRUE; + marie_policy.automatically_accept=TRUE; + pauline_policy.automatically_initiate=TRUE; + pauline_policy.automatically_accept=TRUE; + + linphone_core_set_video_policy(marie->lc,&marie_policy); + linphone_core_set_video_policy(pauline->lc,&pauline_policy); + linphone_core_set_video_multicast_addr(marie->lc,"224.1.2.3"); + linphone_core_enable_video_multicast(marie->lc,TRUE); + } + linphone_core_set_audio_multicast_addr(marie->lc,"224.1.2.3"); + linphone_core_enable_audio_multicast(marie->lc,TRUE); + + + lcs = ms_list_append(lcs,marie->lc); + lcs = ms_list_append(lcs,pauline->lc); + /* + Marie calls Pauline, and after the call has rung, transitions to an early_media session + */ + + marie_call = linphone_core_invite_address(marie->lc, pauline->identity); + + 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)); + + + if (linphone_core_inc_invite_pending(pauline->lc)) { + /* send a 183 to initiate the early media */ + if (video) { + /*check video path*/ + linphone_call_set_next_video_frame_decoded_callback(linphone_core_get_current_call(pauline->lc),linphone_call_cb,pauline->lc); + } + linphone_core_accept_early_media(pauline->lc, linphone_core_get_current_call(pauline->lc)); + + CU_ASSERT_TRUE( wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingEarlyMedia,1,2000) ); + CU_ASSERT_TRUE( wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingEarlyMedia,1,2000) ); + + wait_for_list(lcs, &dummy, 1, 3000); + + CU_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline->lc))->download_bandwidth>70); + + if (video) { + CU_ASSERT_TRUE( wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_IframeDecoded,1)); + } + + 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)); + + end_call(marie,pauline); + } + ms_free(lcs); + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); + + leaked_objects=belle_sip_object_get_object_count()-begin; + CU_ASSERT_TRUE(leaked_objects==2/*fixme jehan*/); + if ((leaked_objects)>0){ + belle_sip_object_dump_active_objects(); + } +} + +static void early_media_with_multicast_audio() { + early_media_with_multicast_base(FALSE); +} +static void unicast_incoming_with_multicast_audio_on() { + simple_call_base(TRUE); +} +#ifdef VIDEO_ENABLED +static void early_media_with_multicast_video() { + early_media_with_multicast_base(TRUE); +} +#endif + +test_t multicast_call_tests[] = { + { "Multicast audio call",call_multicast}, + { "Multicast call with pause/resume",multicast_audio_with_pause_resume}, + { "Early media multicast audio call",early_media_with_multicast_audio}, + { "Unicast incoming call with multicast activated",unicast_incoming_with_multicast_audio_on}, +#ifdef VIDEO_ENABLED + { "Multicast video call",call_multicast_video}, + { "Early media multicast video call",early_media_with_multicast_video}, +#endif +}; + +test_suite_t multicast_call_test_suite = { + "Multicast Call", + NULL, + NULL, + sizeof(multicast_call_tests) / sizeof(multicast_call_tests[0]), + multicast_call_tests +}; diff --git a/tester/presence_tester.c b/tester/presence_tester.c index ed39d1b74..6f29658ed 100644 --- a/tester/presence_tester.c +++ b/tester/presence_tester.c @@ -347,7 +347,7 @@ static void presence_information(void) { linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } -#define USE_PRESENCE_SERVER 0 +#define USE_PRESENCE_SERVER 1 #if USE_PRESENCE_SERVER static void test_subscribe_notify_publish(void) { @@ -382,25 +382,87 @@ static void test_subscribe_notify_publish(void) { wait_for_until(pauline->lc,marie->lc,&pauline->stat.number_of_NotifyReceived,2,2000); CU_ASSERT_EQUAL(LinphoneStatusOnline,linphone_friend_get_status(lf)); - presence =linphone_presence_model_new_with_activity(LinphonePresenceActivityOffline,NULL); + presence =linphone_presence_model_new_with_activity(LinphonePresenceActivityBusy,NULL); linphone_core_set_presence_model(marie->lc,presence); /*wait for new status*/ wait_for_until(pauline->lc,marie->lc,&pauline->stat.number_of_NotifyReceived,3,2000); - CU_ASSERT_EQUAL(LinphonePresenceActivityOffline,linphone_friend_get_status(lf)); + CU_ASSERT_EQUAL(LinphoneStatusBusy,linphone_friend_get_status(lf)); /*wait for refresh*/ wait_for_until(pauline->lc,marie->lc,&pauline->stat.number_of_NotifyReceived,4,5000); - CU_ASSERT_EQUAL(LinphonePresenceActivityOffline,linphone_friend_get_status(lf)); + CU_ASSERT_EQUAL(LinphoneStatusBusy,linphone_friend_get_status(lf)); - //linphone_core_remove_friend(pauline->lc,lf); + /*linphone_core_remove_friend(pauline->lc,lf);*/ /*wait for final notify*/ - //wait_for_until(pauline->lc,marie->lc,&pauline->stat.number_of_NotifyReceived,4,5000); - //CU_ASSERT_EQUAL(LinphonePresenceActivityOffline,linphone_friend_get_status(lf)); - + /*wait_for_until(pauline->lc,marie->lc,&pauline->stat.number_of_NotifyReceived,4,5000); + CU_ASSERT_EQUAL(LinphonePresenceActivityOffline,linphone_friend_get_status(lf)); + */ linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } +static void test_forked_subscribe_notify_publish(void) { + + LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); + LinphoneCoreManager* marie2 = linphone_core_manager_new( "marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + LinphoneProxyConfig* proxy; + LinphonePresenceModel* presence; + MSList* lcs=ms_list_append(NULL,pauline->lc); + lcs=ms_list_append(lcs,marie->lc); + lcs=ms_list_append(lcs,marie->lc); + lcs=ms_list_append(lcs,marie2->lc); + + LpConfig *pauline_lp = linphone_core_get_config(pauline->lc); + char* lf_identity=linphone_address_as_string_uri_only(marie->identity); + LinphoneFriend *lf = linphone_core_create_friend_with_address(pauline->lc,lf_identity); + + lp_config_set_int(pauline_lp,"sip","subscribe_expires",5); + + linphone_core_add_friend(pauline->lc,lf); + + /*wait for subscribe acknowledgment*/ + wait_for_list(lcs,&pauline->stat.number_of_NotifyReceived,1,2000); + CU_ASSERT_EQUAL(LinphoneStatusOffline,linphone_friend_get_status(lf)); + + /*enable publish*/ + + linphone_core_get_default_proxy(marie->lc,&proxy); + linphone_proxy_config_edit(proxy); + linphone_proxy_config_enable_publish(proxy,TRUE); + linphone_proxy_config_set_publish_expires(proxy,3); + linphone_proxy_config_done(proxy); + + linphone_core_get_default_proxy(marie2->lc,&proxy); + linphone_proxy_config_edit(proxy); + linphone_proxy_config_enable_publish(proxy,TRUE); + linphone_proxy_config_set_publish_expires(proxy,3); + linphone_proxy_config_done(proxy); + + + /*wait for marie status*/ + wait_for_list(lcs,&pauline->stat.number_of_NotifyReceived,3,2000); + CU_ASSERT_EQUAL(LinphoneStatusOnline,linphone_friend_get_status(lf)); + + presence =linphone_presence_model_new_with_activity(LinphonePresenceActivityBusy,NULL); + linphone_core_set_presence_model(marie->lc,presence); + + /*wait for new status*/ + wait_for_list(lcs,&pauline->stat.number_of_NotifyReceived,4,2000); + CU_ASSERT_EQUAL(LinphoneStatusBusy,linphone_friend_get_status(lf)); + + + presence =linphone_presence_model_new_with_activity( LinphonePresenceActivityMeeting,NULL); + linphone_core_set_presence_model(marie2->lc,presence); + /*wait for new status*/ + wait_for_list(lcs,&pauline->stat.number_of_NotifyReceived,5,2000); + CU_ASSERT_EQUAL(LinphoneStatusBusy,linphone_friend_get_status(lf)); /*because liblinphone compositor is very simple for now (I.E only take first occurence)*/ + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(marie2); + linphone_core_manager_destroy(pauline); +} + #endif @@ -414,6 +476,7 @@ test_t presence_tests[] = { { "App managed presence failure", subscribe_failure_handle_by_app }, #if USE_PRESENCE_SERVER { "Subscribe with late publish", test_subscribe_notify_publish }, + { "Forked subscribe with late publish", test_forked_subscribe_notify_publish }, #endif }; diff --git a/tester/tester.c b/tester/tester.c index c10dc0c79..ce9bb4c7a 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -453,6 +453,7 @@ void liblinphone_tester_init(void) { #if defined(VIDEO_ENABLED) && defined(HAVE_GTK) add_test_suite(&video_test_suite); #endif + add_test_suite(&multicast_call_test_suite); } void liblinphone_tester_uninit(void) { From f6447b3c07060ae43c1bd2d35d353ff79c8746e9 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 2 Feb 2015 11:13:56 +0100 Subject: [PATCH 334/496] update ms2/ortp --- tester/transport_tester.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/tester/transport_tester.c b/tester/transport_tester.c index c44f84547..a291ec0c0 100644 --- a/tester/transport_tester.c +++ b/tester/transport_tester.c @@ -156,26 +156,44 @@ static void call_with_tunnel_auto_without_sip_with_srtp(void) { #ifdef VIDEO_ENABLED static void tunnel_srtp_video_ice_call(void) { - call_base(LinphoneMediaEncryptionSRTP,TRUE,FALSE,LinphonePolicyUseIce,TRUE); + if (linphone_core_tunnel_available()) + call_base(LinphoneMediaEncryptionSRTP,TRUE,FALSE,LinphonePolicyUseIce,TRUE); + else + ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); } static void tunnel_zrtp_video_ice_call(void) { - call_base(LinphoneMediaEncryptionZRTP,TRUE,FALSE,LinphonePolicyUseIce,TRUE); + if (linphone_core_tunnel_available()) + call_base(LinphoneMediaEncryptionZRTP,TRUE,FALSE,LinphonePolicyUseIce,TRUE); + else + ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); } static void tunnel_video_ice_call(void) { - call_base(LinphoneMediaEncryptionNone,TRUE,FALSE,LinphonePolicyUseIce,TRUE); + if (linphone_core_tunnel_available()) + call_base(LinphoneMediaEncryptionNone,TRUE,FALSE,LinphonePolicyUseIce,TRUE); + else + ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); } #endif static void tunnel_srtp_ice_call(void) { - call_base(LinphoneMediaEncryptionSRTP,FALSE,FALSE,LinphonePolicyUseIce,TRUE); + if (linphone_core_tunnel_available()) + call_base(LinphoneMediaEncryptionSRTP,FALSE,FALSE,LinphonePolicyUseIce,TRUE); + else + ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); } static void tunnel_zrtp_ice_call(void) { - call_base(LinphoneMediaEncryptionZRTP,FALSE,FALSE,LinphonePolicyUseIce,TRUE); + if (linphone_core_tunnel_available()) + call_base(LinphoneMediaEncryptionZRTP,FALSE,FALSE,LinphonePolicyUseIce,TRUE); + else + ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); } static void tunnel_ice_call(void) { - call_base(LinphoneMediaEncryptionNone,FALSE,FALSE,LinphonePolicyUseIce,TRUE); + if (linphone_core_tunnel_available()) + call_base(LinphoneMediaEncryptionNone,FALSE,FALSE,LinphonePolicyUseIce,TRUE); + else + ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); } test_t transport_tests[] = { { "Tunnel only", call_with_tunnel }, From 98448654d3eed620a404ea90332d5a6adbce211a Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 2 Feb 2015 12:33:59 +0100 Subject: [PATCH 335/496] add lc default value for call param real_early_media --- coreapi/linphonecore.c | 2 ++ coreapi/private.h | 1 + 2 files changed, 3 insertions(+) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 4a9b9bd1e..f39a1eb20 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1482,6 +1482,7 @@ static void misc_config_read(LinphoneCore *lc) { *//*JOHAN: USELESS? REMOVE IT*/ //const char *user_certificate_config_path = lp_config_get_string(config,"misc","uuid",); // }*/ + lc->real_early_media=lp_config_get_int(config,"misc","real_early_media",FALSE); } static void linphone_core_start(LinphoneCore * lc) { @@ -6904,6 +6905,7 @@ void linphone_core_init_default_params(LinphoneCore*lc, LinphoneCallParams *para params->avpf_enabled=FALSE; params->audio_dir=LinphoneCallParamsMediaDirectionSendRecv; params->video_dir=LinphoneCallParamsMediaDirectionSendRecv; + params->real_early_media=lc->real_early_media; } void linphone_core_set_device_identifier(LinphoneCore *lc,const char* device_id) { diff --git a/coreapi/private.h b/coreapi/private.h index 18feea39f..69b8f233e 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -796,6 +796,7 @@ struct _LinphoneCore 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 + bool_t real_early_media; /*default value for CallParams.real_early_media*/ }; From 5dc7fa8d1a934b577dd5cc348a166b54a8a9b968 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 2 Feb 2015 17:33:49 +0100 Subject: [PATCH 336/496] make sure multicast and unicast eraly media call forking work --- coreapi/callbacks.c | 14 ++++++++-- coreapi/linphonecore.c | 3 +-- coreapi/private.h | 1 - tester/liblinphone_tester.h | 3 +++ tester/multicast_call_tester.c | 49 ++++++++++++++++++++++++++++------ tester/rcfiles/marie_early_rc | 4 +-- tester/rcfiles/pauline_rc | 4 +-- 7 files changed, 61 insertions(+), 17 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index ad425b21c..85217b576 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -380,7 +380,10 @@ static void try_early_media_forking(LinphoneCall *call, SalMediaDescription *md) RtpSession *session=ms->sessions.rtp_session; const char *rtp_addr=new_stream->rtp_addr[0]!='\0' ? new_stream->rtp_addr : md->addr; const char *rtcp_addr=new_stream->rtcp_addr[0]!='\0' ? new_stream->rtcp_addr : md->addr; - rtp_session_add_aux_remote_addr_full(session,rtp_addr,new_stream->rtp_port,rtcp_addr,new_stream->rtcp_port); + if (ms_is_multicast(new_stream->rtp_addr)) + ms_message("Multicast addr [%s/%i] does not need auxiliary rtp's destination for call [%p]",new_stream->rtp_addr,new_stream->rtp_port,call); + else + rtp_session_add_aux_remote_addr_full(session,rtp_addr,new_stream->rtp_port,rtcp_addr,new_stream->rtcp_port); } } } @@ -425,8 +428,15 @@ static void call_ringing(SalOp *h){ if (call->audiostream && audio_stream_started(call->audiostream)){ /*streams already started */ try_early_media_forking(call,md); - return; + #ifdef VIDEO_ENABLED + if (call->videostream){ + /*just request for iframe*/ + video_stream_send_vfu(call->videostream); + } + #endif + return; } + linphone_core_notify_show_interface(lc); linphone_core_notify_display_status(lc,_("Early media.")); linphone_call_set_state(call,LinphoneCallOutgoingEarlyMedia,"Early media"); diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index f39a1eb20..2a951a18c 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1482,7 +1482,6 @@ static void misc_config_read(LinphoneCore *lc) { *//*JOHAN: USELESS? REMOVE IT*/ //const char *user_certificate_config_path = lp_config_get_string(config,"misc","uuid",); // }*/ - lc->real_early_media=lp_config_get_int(config,"misc","real_early_media",FALSE); } static void linphone_core_start(LinphoneCore * lc) { @@ -6905,7 +6904,7 @@ void linphone_core_init_default_params(LinphoneCore*lc, LinphoneCallParams *para params->avpf_enabled=FALSE; params->audio_dir=LinphoneCallParamsMediaDirectionSendRecv; params->video_dir=LinphoneCallParamsMediaDirectionSendRecv; - params->real_early_media=lc->real_early_media; + params->real_early_media=lp_config_get_int(lc->config,"misc","real_early_media",FALSE); } void linphone_core_set_device_identifier(LinphoneCore *lc,const char* device_id) { diff --git a/coreapi/private.h b/coreapi/private.h index 69b8f233e..18feea39f 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -796,7 +796,6 @@ struct _LinphoneCore 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 - bool_t real_early_media; /*default value for CallParams.real_early_media*/ }; diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index c20f29cc4..9dbb63a9a 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -24,6 +24,9 @@ #include "CUnit/Basic.h" #include "linphonecore.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif typedef void (*test_function_t)(void); typedef int (*test_suite_function_t)(const char *name); diff --git a/tester/multicast_call_tester.c b/tester/multicast_call_tester.c index 8fe459dba..963fbe62f 100644 --- a/tester/multicast_call_tester.c +++ b/tester/multicast_call_tester.c @@ -21,15 +21,17 @@ #include "linphonecore.h" #include "belle-sip/belle-sip.h" + static void call_multicast_base(bool_t video) { - LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); - LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + LinphoneCoreManager *marie, *pauline; int begin; int leaked_objects; LinphoneVideoPolicy marie_policy, pauline_policy; 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"); if (video) { linphone_core_enable_video_capture(marie->lc, TRUE); @@ -71,8 +73,10 @@ static void call_multicast_base(bool_t video) { if (leaked_objects>0){ belle_sip_object_dump_active_objects(); } + belle_sip_object_enable_leak_detector(FALSE); } + static void call_multicast(void) { call_multicast_base(FALSE); } @@ -85,21 +89,29 @@ static void call_multicast_video(void) { } #endif static void early_media_with_multicast_base(bool_t video) { - LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); - LinphoneCoreManager* pauline = linphone_core_manager_new("pauline_rc"); + LinphoneCoreManager *marie, *pauline, *pauline2; MSList* lcs = NULL; LinphoneCall* marie_call; int dummy=0; int leaked_objects; int begin; LinphoneVideoPolicy marie_policy, pauline_policy; + LpConfig *marie_lp; 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"); + pauline2 = linphone_core_manager_new("pauline_rc"); + + marie_lp=linphone_core_get_config(marie->lc); + lp_config_set_int(marie_lp,"misc","real_early_media",1); if (video) { - linphone_core_enable_video_capture(pauline->lc, TRUE); + linphone_core_enable_video_capture(pauline->lc, FALSE); linphone_core_enable_video_display(pauline->lc, TRUE); + linphone_core_enable_video_capture(pauline2->lc, FALSE); + linphone_core_enable_video_display(pauline2->lc, TRUE); linphone_core_enable_video_capture(marie->lc, TRUE); linphone_core_enable_video_display(marie->lc, FALSE); @@ -110,6 +122,7 @@ static void early_media_with_multicast_base(bool_t video) { linphone_core_set_video_policy(marie->lc,&marie_policy); linphone_core_set_video_policy(pauline->lc,&pauline_policy); + linphone_core_set_video_policy(pauline2->lc,&pauline_policy); linphone_core_set_video_multicast_addr(marie->lc,"224.1.2.3"); linphone_core_enable_video_multicast(marie->lc,TRUE); } @@ -119,6 +132,7 @@ static void early_media_with_multicast_base(bool_t video) { lcs = ms_list_append(lcs,marie->lc); lcs = ms_list_append(lcs,pauline->lc); + lcs = ms_list_append(lcs,pauline2->lc); /* Marie calls Pauline, and after the call has rung, transitions to an early_media session */ @@ -140,12 +154,29 @@ static void early_media_with_multicast_base(bool_t video) { CU_ASSERT_TRUE( wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingEarlyMedia,1,2000) ); CU_ASSERT_TRUE( wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingEarlyMedia,1,2000) ); + if (linphone_core_inc_invite_pending(pauline2->lc)) { + /* send a 183 to initiate the early media */ + if (video) { + /*check video path*/ + linphone_call_set_next_video_frame_decoded_callback(linphone_core_get_current_call(pauline2->lc),linphone_call_cb,pauline2->lc); + } + linphone_core_accept_early_media(pauline2->lc, linphone_core_get_current_call(pauline2->lc)); + + CU_ASSERT_TRUE( wait_for_list(lcs, &pauline2->stat.number_of_LinphoneCallIncomingEarlyMedia,1,2000) ); + } + wait_for_list(lcs, &dummy, 1, 3000); CU_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline->lc))->download_bandwidth>70); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline->lc))->download_bandwidth<90); + + CU_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline2->lc))->download_bandwidth>70); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline2->lc))->download_bandwidth<90); + if (video) { - CU_ASSERT_TRUE( wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_IframeDecoded,1)); + CU_ASSERT_TRUE( wait_for_list(lcs,&pauline->stat.number_of_IframeDecoded,1,2000)); + CU_ASSERT_TRUE( wait_for_list(lcs,&pauline2->stat.number_of_IframeDecoded,1,2000)); } linphone_core_accept_call(pauline->lc, linphone_core_get_current_call(pauline->lc)); @@ -158,12 +189,14 @@ static void early_media_with_multicast_base(bool_t video) { ms_free(lcs); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); + linphone_core_manager_destroy(pauline2); leaked_objects=belle_sip_object_get_object_count()-begin; - CU_ASSERT_TRUE(leaked_objects==2/*fixme jehan*/); - if ((leaked_objects)>0){ + CU_ASSERT_EQUAL(leaked_objects,0); + if (leaked_objects>0){ belle_sip_object_dump_active_objects(); } + belle_sip_object_enable_leak_detector(FALSE); } static void early_media_with_multicast_audio() { diff --git a/tester/rcfiles/marie_early_rc b/tester/rcfiles/marie_early_rc index 079a81879..f1866026b 100644 --- a/tester/rcfiles/marie_early_rc +++ b/tester/rcfiles/marie_early_rc @@ -30,8 +30,8 @@ subscribe=0 [rtp] -audio_rtp_port=18070 -video_rtp_port=19072 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 [video] display=0 diff --git a/tester/rcfiles/pauline_rc b/tester/rcfiles/pauline_rc index 7322fd99a..35ad8c36f 100644 --- a/tester/rcfiles/pauline_rc +++ b/tester/rcfiles/pauline_rc @@ -29,8 +29,8 @@ dial_escape_plus=0 #subscribe=0 [rtp] -audio_rtp_port=8090 -video_rtp_port=9092 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 [video] display=0 From 3e1a1430f40568ddc51434fa4d572203e6914dbf Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 3 Feb 2015 14:18:25 +0100 Subject: [PATCH 337/496] add Android wifi lock management at LinphoneCall level --- coreapi/linphonecall.c | 8 ++++++++ coreapi/linphonecore.c | 14 ++++++++++++++ coreapi/linphonecore.h | 6 +++++- coreapi/linphonecore_jni.cc | 16 ++++++++++++++++ coreapi/private.h | 14 +++++++++++++- .../impl/org/linphone/core/LinphoneCoreImpl.java | 5 +++++ 6 files changed, 61 insertions(+), 2 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index ea0676b6d..eb6f3ed76 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -784,6 +784,10 @@ static void linphone_call_init_common(LinphoneCall *call, LinphoneAddress *from, /*by default local_audio_ip=local_video_ip=local_ip*/ strncpy(call->local_audio_ip,call->localip,sizeof(call->local_audio_ip)); strncpy(call->local_video_ip,call->localip,sizeof(call->local_video_ip)); +#ifdef ANDROID + ms_message("Call [%p] aquires wifi lock"); + linphone_core_wifi_lock_aquire(call->lc); +#endif } void linphone_call_init_stats(LinphoneCallStats *stats, int type) { @@ -1328,6 +1332,10 @@ static void linphone_call_destroy(LinphoneCall *obj){ } sal_error_info_reset(&obj->non_op_error); + #ifdef ANDROID + ms_message("Call [%p] releases wifi lock"); + linphone_core_wifi_lock_release(obj->lc); + #endif } /** diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 2a951a18c..59209d868 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -7321,3 +7321,17 @@ void linphone_core_enable_video_multicast(LinphoneCore *lc, bool_t yesno) { bool_t linphone_core_video_multicast_enabled(const LinphoneCore *lc) { return lc->rtp_conf.video_multicast_enabled; } +#ifdef ANDROID +void linphone_core_wifi_lock_acquire(LinphoneCore *lc) { + JNIEnv *env=ms_get_jni_env(); + if (env && lc->wifi_lock) + env->CallVoidMethod(lc->wifi_lock,lc->wifi_lock_aquire_id); +} +void linphone_core_wifi_lock_release(LinphoneCore *lc) { + JNIEnv *env=ms_get_jni_env(); + if (env && lc->wifi_lock) + env->CallVoidMethod(lc->wifi_lock,lc->wifi_lock_release_id); + +} +#endif + diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 999bf4823..e8ab365c6 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -3374,6 +3374,8 @@ LINPHONE_PUBLIC int linphone_core_get_video_multicast_ttl(const LinphoneCore *co /** * Use to enable multicast rtp for audio stream. + * * If enable, outgoing calls put a multicast address from #linphone_core_get_video_multicast_addr into audio cline. In case of outgoing call audio stream is sent to this multicast address. + *
For incoming calls behavior is unchanged. * @param core the core * @param yesno if yes, subsequent calls propose multicast ip set by #linphone_core_set_audio_multicast_addr * @return an ipv4/6 multicast address or null @@ -3391,8 +3393,10 @@ LINPHONE_PUBLIC bool_t linphone_core_audio_multicast_enabled(const LinphoneCore /** * Use to enable multicast rtp for video stream. + * If enable, outgoing calls put a multicast address from #linphone_core_get_video_multicast_addr into video cline. In case of outgoing call video stream is sent to this a multicast address. + *
For incoming calls behavior is unchanged. * @param core the core - * @param yesno if yes, subsequent calls propose multicast ip set by #linphone_core_set_video_multicast_addr + * @param yesno if yes, subsequent outgoing calls propose multicast ip set by #linphone_core_set_video_multicast_addr * @ingroup media_parameters **/ LINPHONE_PUBLIC void linphone_core_enable_video_multicast(LinphoneCore *core, bool_t yesno); diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index b159050f0..80c105b37 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -3979,6 +3979,22 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidPowerManager(J #endif } +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidWifiLock(JNIEnv *env, jobject thiz, jlong lc, jobject wifi_lock) { +#ifdef ANDROID + if (lc->wifi_lock) + env->DeleteGlobalRef(lc->wifi_lock); + if(wm != NULL) { + lc->wifi_lock=env->NewGlobalRef(wifi_lock); + jclass wifiLockClass = env->FindClass(env, "android/net/wifi/WifiManager/WifiLock"); + lc->wifi_lock_aquire_id = env->GetMethodID(wifiLockClass, "acquire", "()V"); + lc->wifi_lock_release_id = env->GetMethodID(wifiLockClass, "release", "()V"); + } else { + lc->wifi_manager=NULL; + } + +#endif +} + extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_getAudioDscp(JNIEnv* env,jobject thiz,jlong ptr){ return linphone_core_get_audio_dscp((LinphoneCore*)ptr); } diff --git a/coreapi/private.h b/coreapi/private.h index 18feea39f..83d41ae7f 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -78,7 +78,9 @@ extern "C" { #define ngettext(singular, plural, number) (((number)==1)?(singular):(plural)) #endif #endif - +#ifdef ANDROID +#include +#endif struct _LinphoneCallParams{ belle_sip_object_t base; @@ -796,6 +798,11 @@ struct _LinphoneCore 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 +#ifdef ANDROID + jobject wifi_lock; + jmethodID wifi_lock_acquire_id; + jmethodID wifi_lock_release_id; +#endif }; @@ -1092,6 +1099,11 @@ void linphone_core_notify_log_collection_upload_progress_indication(LinphoneCore void set_mic_gain_db(AudioStream *st, float gain); void set_playback_gain_db(AudioStream *st, float gain); +#ifdef ANDROID +void linphone_core_wifi_lock_acquire(LinphoneCore *lc); +void linphone_core_wifi_lock_release(LinphoneCore *lc); +#endif + #ifdef __cplusplus } #endif diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index d69d53ef0..d210be6fa 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -157,6 +157,7 @@ public class LinphoneCoreImpl implements LinphoneCore { private native boolean isSdp200AckEnabled(long nativePtr); private native void stopRinging(long nativePtr); private native static void setAndroidPowerManager(Object pm); + private native void setAndroidWifiLock(long nativePtr,Object pm); LinphoneCoreImpl(LinphoneCoreListener listener, File userConfig, File factoryConfig, Object userdata) throws IOException { mListener = listener; @@ -184,6 +185,10 @@ public class LinphoneCoreImpl implements LinphoneCore { mContext = (Context)context; mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); setAndroidPowerManager(mContext.getSystemService(Context.POWER_SERVICE)); + if (Version.sdkAboveOrEqual(Version.API12_HONEYCOMB_MR1_31X)) { + WifiManager wifiManager=(WifiManager) getSystemService(Context.WIFI_SERVICE); + setAndroidWifiLock(nativePtr,wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, this.getPackageName()+"-"+nativePtr+"-wifi-call-lock")); + } } public synchronized void addAuthInfo(LinphoneAuthInfo info) { From a08aacea3f1dd21dc9fe00d8af995386fec33f26 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 4 Feb 2015 12:12:46 +0100 Subject: [PATCH 338/496] add android support for multicast rtp --- coreapi/linphonecall.c | 10 +++--- coreapi/linphonecore.c | 34 ++++++++++++++----- coreapi/linphonecore_jni.cc | 27 +++++++++++---- coreapi/private.h | 5 +++ .../core/LinphoneCoreFactoryImpl.java | 4 ++- .../org/linphone/core/LinphoneCoreImpl.java | 19 +++++++++-- 6 files changed, 77 insertions(+), 22 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index eb6f3ed76..a7382b51b 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -785,8 +785,9 @@ static void linphone_call_init_common(LinphoneCall *call, LinphoneAddress *from, strncpy(call->local_audio_ip,call->localip,sizeof(call->local_audio_ip)); strncpy(call->local_video_ip,call->localip,sizeof(call->local_video_ip)); #ifdef ANDROID - ms_message("Call [%p] aquires wifi lock"); - linphone_core_wifi_lock_aquire(call->lc); + ms_message("Call [%p] acquires both wifi and multicast lock",call); + linphone_core_wifi_lock_acquire(call->core); + linphone_core_multicast_lock_acquire(call->core); /*does no affect battery more than regular rtp traffic*/ #endif } @@ -1333,8 +1334,9 @@ static void linphone_call_destroy(LinphoneCall *obj){ sal_error_info_reset(&obj->non_op_error); #ifdef ANDROID - ms_message("Call [%p] releases wifi lock"); - linphone_core_wifi_lock_release(obj->lc); + ms_message("Call [%p] releases wifi/multicast lock",obj); + linphone_core_wifi_lock_release(obj->core); + linphone_core_multicast_lock_release(obj->core); #endif } diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 59209d868..5d567fdee 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -7321,17 +7321,35 @@ void linphone_core_enable_video_multicast(LinphoneCore *lc, bool_t yesno) { bool_t linphone_core_video_multicast_enabled(const LinphoneCore *lc) { return lc->rtp_conf.video_multicast_enabled; } + #ifdef ANDROID -void linphone_core_wifi_lock_acquire(LinphoneCore *lc) { +static int linphone_core_call_void_method(jobject obj, jmethodID id) { JNIEnv *env=ms_get_jni_env(); - if (env && lc->wifi_lock) - env->CallVoidMethod(lc->wifi_lock,lc->wifi_lock_aquire_id); + if (env && obj) { + (*env)->CallVoidMethod(env,obj,id); + if ((*env)->ExceptionCheck(env)) { + (*env)->ExceptionClear(env); + return -1; + } else + return 0; + } else + return -1; +} + +void linphone_core_wifi_lock_acquire(LinphoneCore *lc) { + if (linphone_core_call_void_method(lc->wifi_lock,lc->wifi_lock_acquire_id)) + ms_warning("No wifi lock configured or not usable for core [%p]",lc); } void linphone_core_wifi_lock_release(LinphoneCore *lc) { - JNIEnv *env=ms_get_jni_env(); - if (env && lc->wifi_lock) - env->CallVoidMethod(lc->wifi_lock,lc->wifi_lock_release_id); - + if (linphone_core_call_void_method(lc->wifi_lock,lc->wifi_lock_release_id)) + ms_warning("No wifi lock configured or not usable for core [%p]",lc); +} +void linphone_core_multicast_lock_acquire(LinphoneCore *lc) { + if (linphone_core_call_void_method(lc->multicast_lock,lc->multicast_lock_acquire_id)) + ms_warning("No multicast lock configured or not usable for core [%p]",lc); +} +void linphone_core_multicast_lock_release(LinphoneCore *lc) { + if (linphone_core_call_void_method(lc->multicast_lock,lc->multicast_lock_release_id)) + ms_warning("No wifi lock configured or not usable for core [%p]",lc); } #endif - diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 80c105b37..6bcc51ccc 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -3979,19 +3979,34 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidPowerManager(J #endif } -extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidWifiLock(JNIEnv *env, jobject thiz, jlong lc, jobject wifi_lock) { +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidWifiLock(JNIEnv *env, jobject thiz, jlong ptr, jobject wifi_lock) { #ifdef ANDROID + LinphoneCore *lc=(LinphoneCore*)ptr; if (lc->wifi_lock) env->DeleteGlobalRef(lc->wifi_lock); - if(wm != NULL) { + if (wifi_lock != NULL) { lc->wifi_lock=env->NewGlobalRef(wifi_lock); - jclass wifiLockClass = env->FindClass(env, "android/net/wifi/WifiManager/WifiLock"); - lc->wifi_lock_aquire_id = env->GetMethodID(wifiLockClass, "acquire", "()V"); + jclass wifiLockClass = env->FindClass("android/net/wifi/WifiManager$WifiLock"); + lc->wifi_lock_acquire_id = env->GetMethodID(wifiLockClass, "acquire", "()V"); lc->wifi_lock_release_id = env->GetMethodID(wifiLockClass, "release", "()V"); } else { - lc->wifi_manager=NULL; + lc->wifi_lock=NULL; + } +#endif +} +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidMulticastLock(JNIEnv *env, jobject thiz, jlong ptr, jobject multicast_lock) { +#ifdef ANDROID + LinphoneCore *lc=(LinphoneCore*)ptr; + if (lc->multicast_lock) + env->DeleteGlobalRef(lc->multicast_lock); + if (multicast_lock != NULL) { + lc->multicast_lock=env->NewGlobalRef(multicast_lock); + jclass multicastLockClass = env->FindClass("android/net/wifi/WifiManager$MulticastLock"); + lc->multicast_lock_acquire_id = env->GetMethodID(multicastLockClass, "acquire", "()V"); + lc->multicast_lock_release_id = env->GetMethodID(multicastLockClass, "release", "()V"); + } else { + lc->multicast_lock=NULL; } - #endif } diff --git a/coreapi/private.h b/coreapi/private.h index 83d41ae7f..f5b378008 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -802,6 +802,9 @@ struct _LinphoneCore jobject wifi_lock; jmethodID wifi_lock_acquire_id; jmethodID wifi_lock_release_id; + jobject multicast_lock; + jmethodID multicast_lock_acquire_id; + jmethodID multicast_lock_release_id; #endif }; @@ -1102,6 +1105,8 @@ void set_playback_gain_db(AudioStream *st, float gain); #ifdef ANDROID void linphone_core_wifi_lock_acquire(LinphoneCore *lc); void linphone_core_wifi_lock_release(LinphoneCore *lc); +void linphone_core_multicast_lock_acquire(LinphoneCore *lc); +void linphone_core_multicast_lock_release(LinphoneCore *lc); #endif #ifdef __cplusplus diff --git a/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java b/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java index fb019db3d..03e8f7ef3 100644 --- a/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java @@ -88,7 +88,9 @@ public class LinphoneCoreFactoryImpl extends LinphoneCoreFactory { MediastreamerAndroidContext.setContext(context); File user = userConfig == null ? null : new File(userConfig); File factory = factoryConfig == null ? null : new File(factoryConfig); - return new LinphoneCoreImpl(listener, user, factory, userdata); + LinphoneCore lc = new LinphoneCoreImpl(listener, user, factory, userdata); + 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 d210be6fa..4b35f4780 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -26,11 +26,15 @@ import java.io.IOException; import org.linphone.core.LinphoneCall.State; import org.linphone.core.LinphoneCoreListener; import org.linphone.mediastream.Log; +import org.linphone.mediastream.Version; import org.linphone.mediastream.video.AndroidVideoWindowImpl; import org.linphone.mediastream.video.capture.hwconf.Hacks; import android.content.Context; import android.media.AudioManager; +import android.net.wifi.WifiManager; +import android.net.wifi.WifiManager.MulticastLock; +import android.net.wifi.WifiManager.WifiLock; public class LinphoneCoreImpl implements LinphoneCore { @@ -157,7 +161,8 @@ public class LinphoneCoreImpl implements LinphoneCore { private native boolean isSdp200AckEnabled(long nativePtr); private native void stopRinging(long nativePtr); private native static void setAndroidPowerManager(Object pm); - private native void setAndroidWifiLock(long nativePtr,Object pm); + private native void setAndroidWifiLock(long nativePtr,Object wifi_lock); + private native void setAndroidMulticastLock(long nativePtr,Object multicast_lock); LinphoneCoreImpl(LinphoneCoreListener listener, File userConfig, File factoryConfig, Object userdata) throws IOException { mListener = listener; @@ -186,8 +191,16 @@ public class LinphoneCoreImpl implements LinphoneCore { mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); setAndroidPowerManager(mContext.getSystemService(Context.POWER_SERVICE)); if (Version.sdkAboveOrEqual(Version.API12_HONEYCOMB_MR1_31X)) { - WifiManager wifiManager=(WifiManager) getSystemService(Context.WIFI_SERVICE); - setAndroidWifiLock(nativePtr,wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, this.getPackageName()+"-"+nativePtr+"-wifi-call-lock")); + WifiManager wifiManager=(WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); + WifiLock lock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "linphonecore ["+ nativePtr+"] wifi-lock"); + lock.setReferenceCounted(true); + setAndroidWifiLock(nativePtr,lock); + } + if (Version.sdkAboveOrEqual(Version.API14_ICE_CREAM_SANDWICH_40)) { + WifiManager wifiManager=(WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); + MulticastLock lock = wifiManager.createMulticastLock("linphonecore ["+ nativePtr+"] multicast-lock"); + lock.setReferenceCounted(true); + setAndroidMulticastLock(nativePtr,lock); } } From 8d45f23dfd278eac2462b5974ff57d1c8c977ab1 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 4 Feb 2015 15:31:51 +0100 Subject: [PATCH 339/496] fix regression in offer/answer due to multicast --- coreapi/offeranswer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coreapi/offeranswer.c b/coreapi/offeranswer.c index 531965c86..e0a012ceb 100644 --- a/coreapi/offeranswer.c +++ b/coreapi/offeranswer.c @@ -400,8 +400,8 @@ static void initiate_incoming(const SalStreamDescription *local_cap, result->payloads=match_payloads(local_cap->payloads,remote_offer->payloads, FALSE, one_matching_codec); result->proto=remote_offer->proto; result->type=local_cap->type; - if (!result->payloads || only_telephone_event(result->payloads) || remote_offer->rtp_port==0 || remote_offer->rtp_port==SalStreamSendOnly){ - result->dir=compute_dir_incoming(local_cap->dir,remote_offer->dir); + result->dir=compute_dir_incoming(local_cap->dir,remote_offer->dir); + if (!result->payloads || only_telephone_event(result->payloads) || remote_offer->rtp_port==0 || remote_offer->dir==SalStreamRecvOnly){ result->rtp_port=0; return; } From 60c5f9dbbcf169890341a22bc20941cf58d6965b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 4 Feb 2015 16:18:30 +0100 Subject: [PATCH 340/496] Fix compiation. Backward compatibility with gtk<2.24 --- tester/video_tester.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tester/video_tester.c b/tester/video_tester.c index ac7e8575c..c9f3771ee 100644 --- a/tester/video_tester.c +++ b/tester/video_tester.c @@ -53,6 +53,7 @@ static unsigned long get_native_handle(GdkWindow *gdkw) { static GtkWidget *create_video_window(LinphoneCall *call) { GtkWidget *video_window; + GdkDisplay *display; GdkColor color; MSVideoSize vsize = MS_VIDEO_SIZE_CIF; @@ -62,7 +63,12 @@ static GtkWidget *create_video_window(LinphoneCall *call) { gtk_widget_modify_bg(video_window, GTK_STATE_NORMAL, &color); gtk_widget_show(video_window); g_object_set_data(G_OBJECT(video_window), "call", call); - gdk_display_flush(gdk_window_get_display(gtk_widget_get_window(video_window))); +#if GTK_CHECK_VERSION(2,24,0) + display = gdk_window_get_display(gtk_widget_get_window(video_window)); +#else // backward compatibility with Debian 6 and Centos 6 + display = gdk_drawable_get_display(gtk_widget_get_window(video_window)); +#endif + gdk_display_flush(display); return video_window; } From 2ef0e530b67a3064a059a2611e130005eccd7118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 4 Feb 2015 16:19:33 +0100 Subject: [PATCH 341/496] Fix compilation. Compatibility with C99 --- coreapi/linphonecall.c | 6 ++++-- tester/multicast_call_tester.c | 3 +-- tester/presence_tester.c | 9 ++++++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index a7382b51b..8491c7b12 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -548,6 +548,9 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * LinphoneAddress *addr; const char* local_audio_ip; const char* local_video_ip; + const char *subject; + CodecConstraints codec_hints={0}; + /*multicast is only set in case of outgoing call*/ if (call->dir == LinphoneCallOutgoing && linphone_core_audio_multicast_enabled(lc)) { local_audio_ip=linphone_core_get_audio_multicast_addr(lc); @@ -564,8 +567,7 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * local_video_ip=call->localip; - const char *subject=linphone_call_params_get_session_name(call->params); - CodecConstraints codec_hints={0}; + subject=linphone_call_params_get_session_name(call->params); linphone_core_adapt_to_network(lc,call->ping_time,call->params); diff --git a/tester/multicast_call_tester.c b/tester/multicast_call_tester.c index 963fbe62f..e5a05c11e 100644 --- a/tester/multicast_call_tester.c +++ b/tester/multicast_call_tester.c @@ -91,7 +91,6 @@ static void call_multicast_video(void) { static void early_media_with_multicast_base(bool_t video) { LinphoneCoreManager *marie, *pauline, *pauline2; MSList* lcs = NULL; - LinphoneCall* marie_call; int dummy=0; int leaked_objects; int begin; @@ -137,7 +136,7 @@ static void early_media_with_multicast_base(bool_t video) { Marie calls Pauline, and after the call has rung, transitions to an early_media session */ - marie_call = linphone_core_invite_address(marie->lc, pauline->identity); + linphone_core_invite_address(marie->lc, pauline->identity); 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)); diff --git a/tester/presence_tester.c b/tester/presence_tester.c index 6f29658ed..871aacf4f 100644 --- a/tester/presence_tester.c +++ b/tester/presence_tester.c @@ -408,14 +408,17 @@ static void test_forked_subscribe_notify_publish(void) { LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); LinphoneProxyConfig* proxy; LinphonePresenceModel* presence; + LpConfig *pauline_lp; + char* lf_identity; + LinphoneFriend *lf; MSList* lcs=ms_list_append(NULL,pauline->lc); lcs=ms_list_append(lcs,marie->lc); lcs=ms_list_append(lcs,marie->lc); lcs=ms_list_append(lcs,marie2->lc); - LpConfig *pauline_lp = linphone_core_get_config(pauline->lc); - char* lf_identity=linphone_address_as_string_uri_only(marie->identity); - LinphoneFriend *lf = linphone_core_create_friend_with_address(pauline->lc,lf_identity); + pauline_lp = linphone_core_get_config(pauline->lc); + lf_identity=linphone_address_as_string_uri_only(marie->identity); + lf = linphone_core_create_friend_with_address(pauline->lc,lf_identity); lp_config_set_int(pauline_lp,"sip","subscribe_expires",5); From c2551b2baa2f7e1b1cfd0f5f016bd7bef780ee20 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 4 Feb 2015 16:39:22 +0100 Subject: [PATCH 342/496] fix multicast documentation, add java api --- coreapi/help/doxygen.dox | 5 ++ coreapi/linphonecore.h | 45 +++++----- .../org/linphone/core/LinphoneCore.java | 84 +++++++++++++++++++ mediastreamer2 | 2 +- 4 files changed, 112 insertions(+), 24 deletions(-) diff --git a/coreapi/help/doxygen.dox b/coreapi/help/doxygen.dox index 8831758d6..0f8e094f4 100644 --- a/coreapi/help/doxygen.dox +++ b/coreapi/help/doxygen.dox @@ -53,6 +53,11 @@ /** * @defgroup media_parameters Controlling media parameters + * Multicast + *
Call using rtp multicast addresses are supported for both audio and video with some limitations. Limitations are, no stun, no ice, no encryption. + *
  • Incoming call with multicast address are automatically accepted. The called party switches in a media receive only mode. + *
  • Outgoing call willing to send media to a multicast address can activate multicast using \link linphone_core_enable_video_multicast\endlink or + *\link linphone_core_enable_audio_multicast\endlink . The calling party switches in a media listen send only mode. **/ /** diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index e8ab365c6..8e1efa4cd 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -3307,7 +3307,7 @@ LINPHONE_PUBLIC int linphone_core_get_avpf_rr_interval(const LinphoneCore *lc); /** * Use to set multicast address to be used for audio stream. - * @param core the core + * @param core #LinphoneCore * @param ip an ipv4/6 multicast address * @return 0 in case of success * @ingroup media_parameters @@ -3315,7 +3315,7 @@ LINPHONE_PUBLIC int linphone_core_get_avpf_rr_interval(const LinphoneCore *lc); LINPHONE_PUBLIC int linphone_core_set_audio_multicast_addr(LinphoneCore *core, const char* ip); /** * Use to set multicast address to be used for video stream. - * @param core the core + * @param core #LinphoneCore * @param ip an ipv4/6 multicast address * @return 0 in case of success * @ingroup media_parameters @@ -3324,7 +3324,7 @@ LINPHONE_PUBLIC int linphone_core_set_video_multicast_addr(LinphoneCore *lc, con /** * Use to get multicast address to be used for audio stream. - * @param core the core + * @param core #LinphoneCore * @return an ipv4/6 multicast address or default value * @ingroup media_parameters **/ @@ -3332,7 +3332,7 @@ LINPHONE_PUBLIC const char* linphone_core_get_audio_multicast_addr(const Linphon /** * Use to get multicast address to be used for video stream. - * @param core the core + * @param core #LinphoneCore * @return an ipv4/6 multicast address, or default value * @ingroup media_parameters **/ @@ -3340,16 +3340,16 @@ LINPHONE_PUBLIC const char* linphone_core_get_video_multicast_addr(const Linphon /** * Use to set multicast ttl to be used for audio stream. - * @param core the core - * @param ip an ttl or -1 if not used [0..255] default value is 1 + * @param core #LinphoneCore + * @param ttl value or -1 if not used. [0..255] default value is 1 * @return 0 in case of success * @ingroup media_parameters **/ LINPHONE_PUBLIC int linphone_core_set_audio_multicast_ttl(LinphoneCore *core, int ttl); /** * Use to set multicast ttl to be used for video stream. - * @param core the core - * @param ip an ttl or -1 if not used [0..255] default value is 1 + * @param core #LinphoneCore + * @param ttl value or -1 if not used. [0..255] default value is 1 * @return 0 in case of success * @ingroup media_parameters **/ @@ -3357,16 +3357,16 @@ LINPHONE_PUBLIC int linphone_core_set_video_multicast_ttl(LinphoneCore *lc, int /** * Use to get multicast ttl to be used for audio stream. - * @param core the core - * @return an time to leave value or -1 if not set + * @param core #LinphoneCore + * @return a time to leave value * @ingroup media_parameters **/ LINPHONE_PUBLIC int linphone_core_get_audio_multicast_ttl(const LinphoneCore *core); /** * Use to get multicast ttl to be used for video stream. - * @param core the core - * @return an an time to leave value or -1 if not set + * @param core #LinphoneCore + * @return a time to leave value * @ingroup media_parameters **/ LINPHONE_PUBLIC int linphone_core_get_video_multicast_ttl(const LinphoneCore *core); @@ -3374,36 +3374,35 @@ LINPHONE_PUBLIC int linphone_core_get_video_multicast_ttl(const LinphoneCore *co /** * Use to enable multicast rtp for audio stream. - * * If enable, outgoing calls put a multicast address from #linphone_core_get_video_multicast_addr into audio cline. In case of outgoing call audio stream is sent to this multicast address. + * * If enabled, outgoing calls put a multicast address from #linphone_core_get_video_multicast_addr into audio cline. In case of outgoing call audio stream is sent to this multicast address. *
    For incoming calls behavior is unchanged. - * @param core the core - * @param yesno if yes, subsequent calls propose multicast ip set by #linphone_core_set_audio_multicast_addr - * @return an ipv4/6 multicast address or null + * @param core #LinphoneCore + * @param yesno if yes, subsequent calls will propose multicast ip set by #linphone_core_set_audio_multicast_addr * @ingroup media_parameters **/ LINPHONE_PUBLIC void linphone_core_enable_audio_multicast(LinphoneCore *core, bool_t yesno); /** * Use to get multicast state of audio stream. - * @param core the core - * @return true if subsequent calls propose multicast ip set by #linphone_core_set_audio_multicast_addr + * @param core #LinphoneCore + * @return true if subsequent calls will propose multicast ip set by #linphone_core_set_audio_multicast_addr * @ingroup media_parameters **/ LINPHONE_PUBLIC bool_t linphone_core_audio_multicast_enabled(const LinphoneCore *core); /** * Use to enable multicast rtp for video stream. - * If enable, outgoing calls put a multicast address from #linphone_core_get_video_multicast_addr into video cline. In case of outgoing call video stream is sent to this a multicast address. + * If enabled, outgoing calls put a multicast address from #linphone_core_get_video_multicast_addr into video cline. In case of outgoing call video stream is sent to this multicast address. *
    For incoming calls behavior is unchanged. - * @param core the core - * @param yesno if yes, subsequent outgoing calls propose multicast ip set by #linphone_core_set_video_multicast_addr + * @param core #LinphoneCore + * @param yesno if yes, subsequent outgoing calls will propose multicast ip set by #linphone_core_set_video_multicast_addr * @ingroup media_parameters **/ LINPHONE_PUBLIC void linphone_core_enable_video_multicast(LinphoneCore *core, bool_t yesno); /** * Use to get multicast state of video stream. - * @param core the core - * @return true if subsequent calls propose multicast ip set by #linphone_core_set_audio_multicast_addr + * @param core #LinphoneCore + * @return true if subsequent calls will propose multicast ip set by #linphone_core_set_video_multicast_addr * @ingroup media_parameters **/ LINPHONE_PUBLIC bool_t linphone_core_video_multicast_enabled(const LinphoneCore *core); diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 3ff4a3865..9c2a0f34e 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -1879,4 +1879,88 @@ public interface LinphoneCore { * Upload the log collection to the configured server url. */ public void uploadLogCollection(); + + + /** + * Use to set multicast address to be used for audio stream. + * @param ip an ipv4/6 multicast address + * @thow LinphoneCoreException + **/ + public setAudioMulticastAddr(String ip) throw LinphoneCoreException; + /** + * Use to set multicast address to be used for video stream. + * @param ip an ipv4/6 multicast address + * @thow LinphoneCoreException + **/ + public void setVideoMulticastAddr(String ip); + + /** + * Use to get multicast address to be used for audio stream. + * @return an ipv4/6 multicast address or default value + **/ + public String getAudioMulticastAddr(); + + /** + * Use to get multicast address to be used for video stream. + * @return an ipv4/6 multicast address, or default value + **/ + public String getVideoMulticastAddr(); + + /** + * Use to set multicast ttl to be used for audio stream. + * @param ttl value or -1 if not used. [0..255] default value is 1 + * @thow LinphoneCoreException + **/ + public void setAudioMulticastTtl(int ttl); + /** + * Use to set multicast ttl to be used for video stream. + * @param ttl value or -1 if not used. [0..255] default value is 1 + * @thow LinphoneCoreException + **/ + public void setVideoMulticastTtl(int ttl); + + /** + * Use to get multicast ttl to be used for audio stream. + * @return a time to leave value + * @thow LinphoneCoreException + * **/ + public void getAudioMulticastTtl(); + + /** + * Use to get multicast ttl to be used for video stream. + * @return a time to leave value + * @thow LinphoneCoreException + **/ + public void getVideoMulticastTtl(const LinphoneCore *core); + + + /** + * Use to enable multicast rtp for audio stream. + * * If enabled, outgoing calls put a multicast address from {@link linphone_core_get_video_multicast_addr} into audio cline. In case of outgoing call audio stream is sent to this multicast address. + *
    For incoming calls behavior is unchanged. + * @param yesno if yes, subsequent calls will propose multicast ip set by {@link linphone_core_set_audio_multicast_addr} + **/ + public void enableAudioMulticast(boolean yesno); + + /** + * Use to get multicast state of audio stream. + * @return true if subsequent calls will propose multicast ip set by {@link linphone_core_set_audio_multicast_addr} + **/ + public boolean audioMulticastEnabled(); + + /** + * Use to enable multicast rtp for video stream. + * If enabled, outgoing calls put a multicast address from {@link linphone_core_get_video_multicast_addr} into video cline. In case of outgoing call video stream is sent to this multicast address. + *
    For incoming calls behavior is unchanged. + * @param yesno if yes, subsequent outgoing calls will propose multicast ip set by {@link linphone_core_set_video_multicast_addr} + **/ + public void enableVideoMulticast(boolean yesno); + /** + * Use to get multicast state of video stream. + * @return true if subsequent calls will propose multicast ip set by {@link linphone_core_set_video_multicast_addr} + **/ + public boolean videoMulticastEnabled(); + + + } diff --git a/mediastreamer2 b/mediastreamer2 index 93d48f997..0ebccd5f6 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 93d48f9970b0be6966f990792c72160bd4f4934b +Subproject commit 0ebccd5f6f844ecfae865c7d2ef1133405b4ecde From eb82b8abc791274411d9875549e82cf9aa67908b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 4 Feb 2015 17:27:49 +0100 Subject: [PATCH 343/496] Initialize a tm structur --- tester/log_collection_tester.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index 3b05a6346..3fbbd43c2 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -154,7 +154,7 @@ time_t check_file(LinphoneCoreManager* mgr) { char *line = NULL; size_t line_size = 256; #ifndef WIN32 - struct tm tm_curr; + struct tm tm_curr = {0}; time_t time_prev = -1; #endif From ca9738f673d397e1e94f6d217881318ab84b30f7 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 4 Feb 2015 17:38:14 +0100 Subject: [PATCH 344/496] prepare multicast control api java binding --- coreapi/linphonecore_jni.cc | 139 ++++++++++++++++++ .../org/linphone/core/LinphoneCore.java | 13 +- .../org/linphone/core/LinphoneCoreImpl.java | 68 +++++++++ 3 files changed, 214 insertions(+), 6 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 6bcc51ccc..fb01e6dbe 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -5603,3 +5603,142 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_createLocalPlayer(JNIEn return (jlong)player; } } + + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: setAudioMulticastAddr + * Signature: (JLjava/lang/String;)I + */ +extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_setAudioMulticastAddr + (JNIEnv * env , jobject, jlong ptr, jstring value) { + const char *char_value = value ? env->GetStringUTFChars(value, NULL) : NULL; + LinphoneCore *lc=(LinphoneCore*)ptr; + int result = linphone_core_set_audio_multicast_addr(lc,char_value); + if (char_value) env->ReleaseStringUTFChars(value, char_value); + return result; +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: setVideoMulticastAddr + * Signature: (JLjava/lang/String;)I + */ +extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_setVideoMulticastAddr + (JNIEnv * env, jobject, jlong ptr, jstring value) { + const char *char_value = value ? env->GetStringUTFChars(value, NULL) : NULL; + LinphoneCore *lc=(LinphoneCore*)ptr; + int result = linphone_core_set_video_multicast_addr(lc,char_value); + if (char_value) env->ReleaseStringUTFChars(value, char_value); + return result; +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: getAudioMulticastAddr + * Signature: (J)Ljava/lang/String; + */ +extern "C" jstring JNICALL Java_org_linphone_core_LinphoneCoreImpl_getAudioMulticastAddr + (JNIEnv *, jobject, jlong) { + ms_error("Java_org_linphone_core_LinphoneCoreImpl_getAudioMulticastAddr not implemented yet"); + return NULL; +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: getVideoMulticastAddr + * Signature: (J)Ljava/lang/String; + */ +extern "C" jstring JNICALL Java_org_linphone_core_LinphoneCoreImpl_getVideoMulticastAddr + (JNIEnv *, jobject, jlong) { + ms_error("Java_org_linphone_core_LinphoneCoreImpl_getVideoMulticastAddr not implemented yet"); + return NULL; +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: setAudioMulticastTtl + * Signature: (JI)I + */ +extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_setAudioMulticastTtl + (JNIEnv *, jobject, jlong, jint) { + ms_error("Java_org_linphone_core_LinphoneCoreImpl_setAudioMulticastTtl not implemented yet"); + return -1; +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: setVideoMulticastTtl + * Signature: (JI)I + */ +extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_setVideoMulticastTtl + (JNIEnv *, jobject, jlong, jint) { + ms_error("Java_org_linphone_core_LinphoneCoreImpl_setVideoMulticastTtl not implemented yet"); + return -1; +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: getAudioMulticastTtl + * Signature: (J)I + */ +extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_getAudioMulticastTtl + (JNIEnv *, jobject, jlong) { + ms_error("Java_org_linphone_core_LinphoneCoreImpl_getAudioMulticastTtl not implemented yet"); + return -1; +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: getVideoMulticastTtl + * Signature: (J)I + */ +extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_getVideoMulticastTtl + (JNIEnv *, jobject, jlong) { + ms_error("Java_org_linphone_core_LinphoneCoreImpl_getVideoMulticastTtl not implemented yet"); + return -1; +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: enableAudioMulticast + * Signature: (JZ)V + */ +extern "C" void JNICALL Java_org_linphone_core_LinphoneCoreImpl_enableAudioMulticast + (JNIEnv *, jobject, jlong, jboolean) { + ms_error("Java_org_linphone_core_LinphoneCoreImpl_enableAudioMulticast not implemented yet"); +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: audioMulticastEnabled + * Signature: (J)Z + */ +extern "C" jboolean JNICALL Java_org_linphone_core_LinphoneCoreImpl_audioMulticastEnabled + (JNIEnv *, jobject, jlong) { + ms_error("Java_org_linphone_core_LinphoneCoreImpl_audioMulticastEnabled not implemented yet"); + return false; +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: enableVideoMulticast + * Signature: (JZ)V + */ +extern "C" void JNICALL Java_org_linphone_core_LinphoneCoreImpl_enableVideoMulticast + (JNIEnv *, jobject, jlong, jboolean) { + ms_error("Java_org_linphone_core_LinphoneCoreImpl_enableVideoMulticast not implemented yet"); +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: videoMulticastEnabled + * Signature: (J)Z + */ +extern "C" jboolean JNICALL Java_org_linphone_core_LinphoneCoreImpl_videoMulticastEnabled + (JNIEnv *, jobject, jlong) { + ms_error("Java_org_linphone_core_LinphoneCoreImpl_videoMulticastEnabled not implemented yet"); + return false; +} + + diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 9c2a0f34e..98e9226eb 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -1884,15 +1884,16 @@ public interface LinphoneCore { /** * Use to set multicast address to be used for audio stream. * @param ip an ipv4/6 multicast address + * @return * @thow LinphoneCoreException **/ - public setAudioMulticastAddr(String ip) throw LinphoneCoreException; + public void setAudioMulticastAddr(String ip) throws LinphoneCoreException; /** * Use to set multicast address to be used for video stream. * @param ip an ipv4/6 multicast address * @thow LinphoneCoreException **/ - public void setVideoMulticastAddr(String ip); + public void setVideoMulticastAddr(String ip) throws LinphoneCoreException; /** * Use to get multicast address to be used for audio stream. @@ -1911,27 +1912,27 @@ public interface LinphoneCore { * @param ttl value or -1 if not used. [0..255] default value is 1 * @thow LinphoneCoreException **/ - public void setAudioMulticastTtl(int ttl); + public void setAudioMulticastTtl(int ttl) throws LinphoneCoreException; /** * Use to set multicast ttl to be used for video stream. * @param ttl value or -1 if not used. [0..255] default value is 1 * @thow LinphoneCoreException **/ - public void setVideoMulticastTtl(int ttl); + public void setVideoMulticastTtl(int ttl) throws LinphoneCoreException; /** * Use to get multicast ttl to be used for audio stream. * @return a time to leave value * @thow LinphoneCoreException * **/ - public void getAudioMulticastTtl(); + public int getAudioMulticastTtl(); /** * Use to get multicast ttl to be used for video stream. * @return a time to leave value * @thow LinphoneCoreException **/ - public void getVideoMulticastTtl(const LinphoneCore *core); + public int getVideoMulticastTtl(); /** diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index 4b35f4780..11f62619c 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -1364,4 +1364,72 @@ public class LinphoneCoreImpl implements LinphoneCore { public float getPreferredFramerate() { return getPreferredFramerate(nativePtr); } + + + private native int setAudioMulticastAddr(long nativePtr, String ip); + @Override + public void setAudioMulticastAddr(String ip) throws LinphoneCoreException { + if (setAudioMulticastAddr(nativePtr, ip)!=0) + throw new LinphoneCoreException("bad ip address ["+ip+"]"); + } + private native int setVideoMulticastAddr(long nativePtr, String ip); + @Override + public void setVideoMulticastAddr(String ip) throws LinphoneCoreException { + if (setVideoMulticastAddr(nativePtr, ip)!=0) + throw new LinphoneCoreException("bad ip address ["+ip+"]"); + } + private native String getAudioMulticastAddr(long ptr); + @Override + public String getAudioMulticastAddr() { + return getAudioMulticastAddr() ; + } + private native String getVideoMulticastAddr(long ptr); + @Override + public String getVideoMulticastAddr() { + return getVideoMulticastAddr(); + } + private native int setAudioMulticastTtl(long ptr,int ttl); + @Override + public void setAudioMulticastTtl(int ttl) throws LinphoneCoreException { + if (setAudioMulticastTtl(nativePtr, ttl)!=0) + throw new LinphoneCoreException("bad ttl value ["+ttl+"]"); + + } + private native int setVideoMulticastTtl(long ptr,int ttl); + @Override + public void setVideoMulticastTtl(int ttl) throws LinphoneCoreException { + if (setVideoMulticastTtl(nativePtr, ttl)!=0) + throw new LinphoneCoreException("bad ttl value ["+ttl+"]"); + } + private native int getAudioMulticastTtl(long ptr); + @Override + public int getAudioMulticastTtl() { + return getAudioMulticastTtl(nativePtr); + } + private native int getVideoMulticastTtl(long ptr); + @Override + public int getVideoMulticastTtl() { + return getVideoMulticastTtl(nativePtr); + } + private native void enableAudioMulticast(long ptr,boolean yesno); + @Override + public void enableAudioMulticast(boolean yesno) { + enableAudioMulticast(nativePtr,yesno); + } + private native boolean audioMulticastEnabled(long ptr); + @Override + public boolean audioMulticastEnabled() { + return audioMulticastEnabled(nativePtr); + } + private native void enableVideoMulticast(long ptr,boolean yesno); + + @Override + public void enableVideoMulticast(boolean yesno) { + enableVideoMulticast(nativePtr,yesno); + } + private native boolean videoMulticastEnabled(long ptr); + @Override + public boolean videoMulticastEnabled() { + return videoMulticastEnabled(nativePtr); + } } From c2116983d51eb3fa4ec0ada10b87077d36f25a3e Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Wed, 4 Feb 2015 18:17:36 +0100 Subject: [PATCH 345/496] Remove clear exceptions --- coreapi/linphonecore_jni.cc | 8 -------- 1 file changed, 8 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index fb01e6dbe..d093a3e30 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -264,7 +264,6 @@ 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; } @@ -294,7 +293,6 @@ public: } 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; } @@ -318,39 +316,33 @@ 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"); - 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; } From 0009864a696425d4e1279ce06c7a877993179c25 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 4 Feb 2015 22:25:13 +0100 Subject: [PATCH 346/496] make remote offered fmtp appended to local ones, instead of replacing --- coreapi/offeranswer.c | 9 ++++++--- mediastreamer2 | 2 +- oRTP | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/coreapi/offeranswer.c b/coreapi/offeranswer.c index e0a012ceb..4c7147db4 100644 --- a/coreapi/offeranswer.c +++ b/coreapi/offeranswer.c @@ -127,7 +127,9 @@ static PayloadTypeMatcher matchers[]={ }; - +/* + * Returns a PayloadType from the local list that matches a PayloadType offered or answered in the remote list +*/ static PayloadType * find_payload_type_best_match(const MSList *l, const PayloadType *refpt){ PayloadTypeMatcher *m; for(m=matchers;m->mime_type!=NULL;++m){ @@ -162,8 +164,9 @@ static MSList *match_payloads(const MSList *local, const MSList *remote, bool_t } newp=payload_type_clone(matched); - if (p2->send_fmtp) - payload_type_set_send_fmtp(newp,p2->send_fmtp); + if (p2->send_fmtp){ + payload_type_append_send_fmtp(newp,p2->send_fmtp); + } newp->flags|=PAYLOAD_TYPE_FLAG_CAN_RECV|PAYLOAD_TYPE_FLAG_CAN_SEND; if (p2->flags & PAYLOAD_TYPE_RTCP_FEEDBACK_ENABLED) { newp->flags |= PAYLOAD_TYPE_RTCP_FEEDBACK_ENABLED; diff --git a/mediastreamer2 b/mediastreamer2 index 0ebccd5f6..bf2d8b08e 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 0ebccd5f6f844ecfae865c7d2ef1133405b4ecde +Subproject commit bf2d8b08ec0200175580ce94404e52dae266bf69 diff --git a/oRTP b/oRTP index 8cac6a399..327cec466 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 8cac6a399755001f5df7a933bc26c7b9629981fc +Subproject commit 327cec466a5d39e716664325ae6d604e228b3fed From 9b95f24fc31e17cb7e2bbcc8818fd46a61394aed Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 5 Feb 2015 00:09:46 +0100 Subject: [PATCH 347/496] avoid multiple warnings due to ms_is_multicast() not used correctly, make code stream type agnostic --- coreapi/callbacks.c | 5 ++-- coreapi/linphonecall.c | 63 ++++++++++++++++++++++++------------------ coreapi/offeranswer.c | 4 +-- coreapi/private.h | 3 +- 4 files changed, 42 insertions(+), 33 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 85217b576..99e23f777 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -380,8 +380,9 @@ static void try_early_media_forking(LinphoneCall *call, SalMediaDescription *md) RtpSession *session=ms->sessions.rtp_session; const char *rtp_addr=new_stream->rtp_addr[0]!='\0' ? new_stream->rtp_addr : md->addr; const char *rtcp_addr=new_stream->rtcp_addr[0]!='\0' ? new_stream->rtcp_addr : md->addr; - if (ms_is_multicast(new_stream->rtp_addr)) - ms_message("Multicast addr [%s/%i] does not need auxiliary rtp's destination for call [%p]",new_stream->rtp_addr,new_stream->rtp_port,call); + if (ms_is_multicast(rtp_addr)) + ms_message("Multicast addr [%s/%i] does not need auxiliary rtp's destination for call [%p]", + rtp_addr,new_stream->rtp_port,call); else rtp_session_add_aux_remote_addr_full(session,rtp_addr,new_stream->rtp_port,rtcp_addr,new_stream->rtcp_port); } diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 8491c7b12..713dd9f44 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -538,6 +538,14 @@ static void transfer_already_assigned_payload_types(SalMediaDescription *old, Sa } } +static const char *linphone_call_get_bind_ip_for_stream(LinphoneCall *call, int stream_index){ + const char *bind_ip=call->af==AF_INET6 ? "::0" : "0.0.0.0"; + + if (stream_index<2 && call->media_ports[stream_index].multicast_ip[0]!='\0') + bind_ip=call->media_ports[stream_index].multicast_ip; + return bind_ip; +} + void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall *call){ MSList *l; SalMediaDescription *old_md=call->localdesc; @@ -783,9 +791,7 @@ static void linphone_call_init_common(LinphoneCall *call, LinphoneAddress *from, linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_AUDIO], LINPHONE_CALL_STATS_AUDIO); linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_VIDEO], LINPHONE_CALL_STATS_VIDEO); - /*by default local_audio_ip=local_video_ip=local_ip*/ - strncpy(call->local_audio_ip,call->localip,sizeof(call->local_audio_ip)); - strncpy(call->local_video_ip,call->localip,sizeof(call->local_video_ip)); + #ifdef ANDROID ms_message("Call [%p] acquires both wifi and multicast lock",call); linphone_core_wifi_lock_acquire(call->core); @@ -945,6 +951,7 @@ static void linphone_call_incoming_select_ip_version(LinphoneCall *call){ * Fix call parameters on incoming call to eg. enable AVPF if the incoming call propose it and it is not enabled locally. */ void linphone_call_set_compatible_incoming_call_parameters(LinphoneCall *call, const SalMediaDescription *md) { + int i; call->params->has_video &= linphone_core_media_description_contains_video_stream(md); /* Handle AVPF, SRTP and DTLS. */ @@ -963,18 +970,14 @@ void linphone_call_set_compatible_incoming_call_parameters(LinphoneCall *call, c call->params->media_encryption = LinphoneMediaEncryptionSRTP; } - //set both local audio & video - if (ms_is_multicast(md->streams[0].rtp_addr)) { - strncpy(call->local_audio_ip,md->streams[0].rtp_addr,sizeof(call->local_audio_ip)); - ms_message("Disabling audio rtcp on call [%p] because of multicast",call); - call->media_ports[0].rtp_port=md->streams[0].rtp_port; - call->media_ports[0].rtcp_port=0; - } - if (ms_is_multicast(md->streams[1].rtp_addr)) { - strncpy(call->local_video_ip,md->streams[1].rtp_addr,sizeof(call->local_video_ip)); - call->media_ports[1].rtp_port=md->streams[1].rtp_port; - call->media_ports[1].rtcp_port=0; - ms_message("Disabling video rtcp on call [%p] because of multicast",call); + /* set both local audio & video multicast ip address if any*/ + for (i=0;i<2;++i){ + if (md->streams[i].rtp_addr[i]!='\0' && ms_is_multicast(md->streams[i].rtp_addr)) { + strncpy(call->media_ports[i].multicast_ip,md->streams[i].rtp_addr,sizeof(call->media_ports[i].multicast_ip)); + ms_message("Disabling rtcp on call [%p], stream [%i] because of multicast",call,i); + call->media_ports[i].rtp_port=md->streams[i].rtp_port; + call->media_ports[i].rtcp_port=0; + } } } @@ -1806,6 +1809,8 @@ int linphone_call_prepare_ice(LinphoneCall *call, bool_t incoming_offer){ return 0; } + + void linphone_call_init_audio_stream(LinphoneCall *call){ LinphoneCore *lc=call->core; AudioStream *audiostream; @@ -1818,7 +1823,8 @@ void linphone_call_init_audio_stream(LinphoneCall *call){ if (call->audiostream != NULL) return; if (call->sessions[0].rtp_session==NULL){ - call->audiostream=audiostream=audio_stream_new2(call->local_audio_ip,call->media_ports[0].rtp_port,call->media_ports[0].rtcp_port); + call->audiostream=audiostream=audio_stream_new2(linphone_call_get_bind_ip_for_stream(call,0), + call->media_ports[0].rtp_port, call->media_ports[0].rtcp_port); cname = linphone_address_as_string_uri_only(call->me); audio_stream_set_rtcp_information(call->audiostream, cname, rtcp_tool); ms_free(cname); @@ -1923,7 +1929,8 @@ void linphone_call_init_video_stream(LinphoneCall *call){ const char *display_filter=linphone_core_get_video_display_filter(lc); if (call->sessions[1].rtp_session==NULL){ - call->videostream=video_stream_new2(call->local_video_ip,call->media_ports[1].rtp_port,call->media_ports[1].rtcp_port); + call->videostream=video_stream_new2(linphone_call_get_bind_ip_for_stream(call,1), + call->media_ports[1].rtp_port,call->media_ports[1].rtcp_port); cname = linphone_address_as_string_uri_only(call->me); video_stream_set_rtcp_information(call->videostream, cname, rtcp_tool); ms_free(cname); @@ -2289,13 +2296,15 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b stream = sal_media_description_find_best_stream(call->resultdesc, SalAudio); if (stream && stream->dir!=SalStreamInactive && stream->rtp_port!=0){ + const char *rtp_addr=stream->rtp_addr[0]!='\0' ? stream->rtp_addr : call->resultdesc->addr; + bool_t is_multicast=ms_is_multicast(rtp_addr); playcard=lc->sound_conf.lsd_card ? lc->sound_conf.lsd_card : lc->sound_conf.play_sndcard; captcard=lc->sound_conf.capt_sndcard; playfile=lc->play_file; recfile=lc->rec_file; call->audio_profile=make_profile(call,call->resultdesc,stream,&used_pt); - + if (used_pt!=-1){ call->current_params->audio_codec = rtp_profile_get_payload(call->audio_profile, used_pt); if (playcard==NULL) { @@ -2308,7 +2317,7 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b when placed in recvonly or sendonly mode*/ if (stream->rtp_port==0 || stream->dir==SalStreamRecvOnly - || (stream->multicast_role == SalMulticastRoleReceiver && ms_is_multicast(stream->rtp_addr))){ + || (stream->multicast_role == SalMulticastRoleReceiver && is_multicast)){ captcard=NULL; playfile=NULL; }else if (stream->dir==SalStreamSendOnly){ @@ -2364,16 +2373,16 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b } } configure_rtp_session_for_rtcp_xr(lc, call, SalAudio); - if (ms_is_multicast(stream->rtp_addr)) + if (is_multicast) rtp_session_set_multicast_ttl(call->audiostream->ms.sessions.rtp_session,stream->ttl); - + audio_stream_start_full( call->audiostream, call->audio_profile, - stream->rtp_addr[0]!='\0' ? stream->rtp_addr : call->resultdesc->addr, + rtp_addr, stream->rtp_port, stream->rtcp_addr[0]!='\0' ? stream->rtcp_addr : call->resultdesc->addr, - (linphone_core_rtcp_enabled(lc) && !ms_is_multicast(stream->rtp_addr)) ? (stream->rtcp_port ? stream->rtcp_port : stream->rtp_port+1) : 0, + (linphone_core_rtcp_enabled(lc) && !is_multicast) ? (stream->rtcp_port ? stream->rtcp_port : stream->rtp_port+1) : 0, used_pt, linphone_core_get_audio_jittcomp(lc), playfile, @@ -2425,7 +2434,7 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu const char *rtp_addr=vstream->rtp_addr[0]!='\0' ? vstream->rtp_addr : call->resultdesc->addr; const char *rtcp_addr=vstream->rtcp_addr[0]!='\0' ? vstream->rtcp_addr : call->resultdesc->addr; const SalStreamDescription *local_st_desc=sal_media_description_find_stream(call->localdesc,vstream->proto,SalVideo); - + bool_t is_multicast=ms_is_multicast(rtp_addr); call->video_profile=make_profile(call,call->resultdesc,vstream,&used_pt); if (used_pt!=-1){ @@ -2454,7 +2463,7 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu video_stream_set_native_preview_window_id (call->videostream,lc->preview_window_id); video_stream_use_preview_video_window (call->videostream,lc->use_preview_window); - if (ms_is_multicast(vstream->rtp_addr)){ + if (is_multicast){ if (vstream->multicast_role == SalMulticastRoleReceiver) dir=VideoStreamRecvOnly; else @@ -2497,7 +2506,7 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu ms_message("%s lc rotation:%d\n", __FUNCTION__, lc->device_rotation); video_stream_set_device_rotation(call->videostream, lc->device_rotation); video_stream_set_freeze_on_error(call->videostream, lp_config_get_int(lc->config, "video", "freeze_on_error", 0)); - if (ms_is_multicast(vstream->rtp_addr)) + if (is_multicast) rtp_session_set_multicast_ttl(call->videostream->ms.sessions.rtp_session,vstream->ttl); if( lc->video_conf.reuse_preview_source && source ){ @@ -2512,7 +2521,7 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu video_stream_start(call->videostream, call->video_profile, rtp_addr, vstream->rtp_port, rtcp_addr, - (linphone_core_rtcp_enabled(lc) && !ms_is_multicast(vstream->rtp_addr)) ? (vstream->rtcp_port ? vstream->rtcp_port : vstream->rtp_port+1) : 0, + (linphone_core_rtcp_enabled(lc) && !is_multicast) ? (vstream->rtcp_port ? vstream->rtcp_port : vstream->rtp_port+1) : 0, used_pt, linphone_core_get_video_jittcomp(lc), cam); } } diff --git a/coreapi/offeranswer.c b/coreapi/offeranswer.c index 4c7147db4..b3fde6b3c 100644 --- a/coreapi/offeranswer.c +++ b/coreapi/offeranswer.c @@ -307,7 +307,7 @@ static void initiate_outgoing(const SalStreamDescription *local_offer, result->proto=remote_answer->proto; result->type=local_offer->type; - if (ms_is_multicast(local_offer->rtp_addr)) { + if (local_offer->rtp_addr[0]!='\0' && ms_is_multicast(local_offer->rtp_addr)) { /*6.2 Multicast Streams ... If a multicast stream is accepted, the address and port information @@ -408,7 +408,7 @@ static void initiate_incoming(const SalStreamDescription *local_cap, result->rtp_port=0; return; } - if (ms_is_multicast(remote_offer->rtp_addr)) { + if (remote_offer->rtp_addr[0]!='\0' && ms_is_multicast(remote_offer->rtp_addr)) { if (sal_stream_description_has_srtp(result) == TRUE) { ms_message("SAVP not supported for multicast address for remote stream [%p]",remote_offer); result->rtp_port=0; diff --git a/coreapi/private.h b/coreapi/private.h index f5b378008..9abdd9ee6 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -202,6 +202,7 @@ typedef struct StunCandidate{ typedef struct _PortConfig{ + char multicast_ip[LINPHONE_IPADDR_SIZE]; int rtp_port; int rtcp_port; }PortConfig; @@ -223,8 +224,6 @@ struct _LinphoneCall{ SalOp *op; SalOp *ping_op; char localip[LINPHONE_IPADDR_SIZE]; /* our best guess for local ipaddress for this call */ - char local_audio_ip[LINPHONE_IPADDR_SIZE]; /* our best guess for local ipaddress for this call or what proposed in sdp in case of multicast*/ - char local_video_ip[LINPHONE_IPADDR_SIZE]; /* our best guess for local ipaddress for this call or what proposed in sdp in case of multicast*/ LinphoneCallState state; LinphoneCallState prevstate; LinphoneCallState transfer_state; /*idle if no transfer*/ From 7798932b93a04fe0b190824a0120f463f8ff6344 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 5 Feb 2015 01:16:05 +0100 Subject: [PATCH 348/496] fix to previous commit: a real local interface must be decided and bound to to send multicast. For unicast calls, continue to bind to 0.0.0.0 as we need it for multi-homed environments. --- coreapi/linphonecall.c | 57 ++++++++++++++++++++++++++++-------------- coreapi/offeranswer.c | 4 +-- include/sal/sal.h | 6 ++--- 3 files changed, 43 insertions(+), 24 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 713dd9f44..226b9e9b9 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -541,11 +541,26 @@ static void transfer_already_assigned_payload_types(SalMediaDescription *old, Sa static const char *linphone_call_get_bind_ip_for_stream(LinphoneCall *call, int stream_index){ const char *bind_ip=call->af==AF_INET6 ? "::0" : "0.0.0.0"; - if (stream_index<2 && call->media_ports[stream_index].multicast_ip[0]!='\0') - bind_ip=call->media_ports[stream_index].multicast_ip; + if (stream_index<2 && call->media_ports[stream_index].multicast_ip[0]!='\0'){ + if (call->dir==LinphoneCallOutgoing){ + /*as multicast sender, we must decide a local interface to use to send multicast, and bind to it*/ + bind_ip=call->localip; + }else{ + /*as receiver, just bind to the multicast address*/ + bind_ip=call->media_ports[stream_index].multicast_ip; + } + } return bind_ip; } +static const char *linphone_call_get_public_ip_for_stream(LinphoneCall *call, int stream_index){ + const char *public_ip=call->localip; + + if (stream_index<2 && call->media_ports[stream_index].multicast_ip[0]!='\0') + public_ip=call->media_ports[stream_index].multicast_ip; + return public_ip; +} + void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall *call){ MSList *l; SalMediaDescription *old_md=call->localdesc; @@ -554,26 +569,19 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * const char *me; SalMediaDescription *md=sal_media_description_new(); LinphoneAddress *addr; - const char* local_audio_ip; - const char* local_video_ip; const char *subject; CodecConstraints codec_hints={0}; /*multicast is only set in case of outgoing call*/ if (call->dir == LinphoneCallOutgoing && linphone_core_audio_multicast_enabled(lc)) { - local_audio_ip=linphone_core_get_audio_multicast_addr(lc); md->streams[0].ttl=linphone_core_get_audio_multicast_ttl(lc); - md->streams[0].multicast_role = SalMulticastRoleSender; - } else - local_audio_ip=call->localip; + md->streams[0].multicast_role = SalMulticastSender; + } if (call->dir == LinphoneCallOutgoing && linphone_core_video_multicast_enabled(lc)) { - local_video_ip=linphone_core_get_video_multicast_addr(lc); md->streams[1].ttl=linphone_core_get_video_multicast_ttl(lc); - md->streams[1].multicast_role = SalMulticastRoleSender; - }else - local_video_ip=call->localip; - + md->streams[1].multicast_role = SalMulticastSender; + } subject=linphone_call_params_get_session_name(call->params); @@ -598,8 +606,8 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * else md->bandwidth=linphone_core_get_download_bandwidth(lc); /*set audio capabilities */ - strncpy(md->streams[0].rtp_addr,local_audio_ip,sizeof(md->streams[0].rtp_addr)); - strncpy(md->streams[0].rtcp_addr,local_audio_ip,sizeof(md->streams[0].rtcp_addr)); + strncpy(md->streams[0].rtp_addr,linphone_call_get_public_ip_for_stream(call,0),sizeof(md->streams[0].rtp_addr)); + strncpy(md->streams[0].rtcp_addr,linphone_call_get_public_ip_for_stream(call,0),sizeof(md->streams[0].rtcp_addr)); strncpy(md->streams[0].name,"Audio",sizeof(md->streams[0].name)-1); md->streams[0].rtp_port=call->media_ports[0].rtp_port; md->streams[0].rtcp_port=call->media_ports[0].rtcp_port; @@ -626,8 +634,8 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * nb_active_streams++; if (call->params->has_video){ - strncpy(md->streams[1].rtp_addr,local_video_ip,sizeof(md->streams[1].rtp_addr)); - strncpy(md->streams[1].rtcp_addr,local_video_ip,sizeof(md->streams[1].rtcp_addr)); + strncpy(md->streams[1].rtp_addr,linphone_call_get_public_ip_for_stream(call,1),sizeof(md->streams[1].rtp_addr)); + strncpy(md->streams[1].rtcp_addr,linphone_call_get_public_ip_for_stream(call,1),sizeof(md->streams[1].rtcp_addr)); strncpy(md->streams[1].name,"Video",sizeof(md->streams[1].name)-1); md->streams[1].rtp_port=call->media_ports[1].rtp_port; md->streams[1].rtcp_port=call->media_ports[1].rtcp_port; @@ -788,6 +796,17 @@ static void linphone_call_init_common(LinphoneCall *call, LinphoneAddress *from, linphone_core_get_video_port_range(call->core, &min_port, &max_port); port_config_set(call,1,min_port,max_port); + + if (call->dir==LinphoneCallOutgoing){ + if ( linphone_core_audio_multicast_enabled(call->core)){ + strncpy(call->media_ports[0].multicast_ip, + linphone_core_get_audio_multicast_addr(call->core), sizeof(call->media_ports[0].multicast_ip)); + } + if ( linphone_core_video_multicast_enabled(call->core)){ + strncpy(call->media_ports[1].multicast_ip, + linphone_core_get_video_multicast_addr(call->core), sizeof(call->media_ports[1].multicast_ip)); + } + } linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_AUDIO], LINPHONE_CALL_STATS_AUDIO); linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_VIDEO], LINPHONE_CALL_STATS_VIDEO); @@ -2317,7 +2336,7 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b when placed in recvonly or sendonly mode*/ if (stream->rtp_port==0 || stream->dir==SalStreamRecvOnly - || (stream->multicast_role == SalMulticastRoleReceiver && is_multicast)){ + || (stream->multicast_role == SalMulticastReceiver && is_multicast)){ captcard=NULL; playfile=NULL; }else if (stream->dir==SalStreamSendOnly){ @@ -2464,7 +2483,7 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu video_stream_use_preview_video_window (call->videostream,lc->use_preview_window); if (is_multicast){ - if (vstream->multicast_role == SalMulticastRoleReceiver) + if (vstream->multicast_role == SalMulticastReceiver) dir=VideoStreamRecvOnly; else dir=VideoStreamSendOnly; diff --git a/coreapi/offeranswer.c b/coreapi/offeranswer.c index b3fde6b3c..9baedd158 100644 --- a/coreapi/offeranswer.c +++ b/coreapi/offeranswer.c @@ -367,7 +367,7 @@ static void initiate_outgoing(const SalStreamDescription *local_offer, } result->ttl=local_offer->ttl; result->dir=local_offer->dir; - result->multicast_role = SalMulticastRoleSender; + result->multicast_role = SalMulticastSender; } else { result->dir=compute_dir_outgoing(local_offer->dir,remote_answer->dir); @@ -423,7 +423,7 @@ static void initiate_incoming(const SalStreamDescription *local_cap, result->bandwidth=remote_offer->bandwidth; result->ptime=remote_offer->ptime; result->ttl=remote_offer->ttl; - result->multicast_role = SalMulticastRoleReceiver; + result->multicast_role = SalMulticastReceiver; } else { strcpy(result->rtp_addr,local_cap->rtp_addr); strcpy(result->rtcp_addr,local_cap->rtcp_addr); diff --git a/include/sal/sal.h b/include/sal/sal.h index 75400d4de..666671674 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -197,9 +197,9 @@ typedef enum { } SalDtlsRole; typedef enum { - SalMulticastInative=0, - SalMulticastRoleSender, - SalMulticastRoleReceiver, + SalMulticastInactive=0, + SalMulticastSender, + SalMulticastReceiver, SalMulticastSenderReceiver } SalMulticastRole; From cc5928e7bba273e479bf4311d1def1909c42f450 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 5 Feb 2015 01:20:14 +0100 Subject: [PATCH 349/496] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index bf2d8b08e..034131e3b 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit bf2d8b08ec0200175580ce94404e52dae266bf69 +Subproject commit 034131e3b566438df8445ca7f97c19f3c3774f28 From ee1c644b5b3a73c43fc1b6470dfd1440d9b97366 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 5 Feb 2015 01:41:32 +0100 Subject: [PATCH 350/496] update ortp --- oRTP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oRTP b/oRTP index 327cec466..d7b7f8af7 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 327cec466a5d39e716664325ae6d604e228b3fed +Subproject commit d7b7f8af70c7a40c55f6b026833b21e177c88eea From 8f3844b4b62f3c6af6f7471a01343e8056f8cc03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 5 Feb 2015 10:24:16 +0100 Subject: [PATCH 351/496] Fix an invalid read in the "Call/Call with custom header" test --- tester/call_tester.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 6a134c728..52dd68da1 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -1110,7 +1110,7 @@ static void call_with_custom_headers(void) { pauline_remote_contact_header = ms_strdup(linphone_call_params_get_custom_header(linphone_call_get_remote_params(call_pauline), "Contact")); marie_remote_contact = ms_strdup(linphone_call_get_remote_contact(call_marie)); - marie_remote_contact_header = ms_strdup(linphone_call_params_get_custom_header(marie_remote_params, "Contact")); + marie_remote_contact_header = ms_strdup(linphone_call_params_get_custom_header(linphone_call_get_remote_params(call_marie), "Contact")); CU_ASSERT_PTR_NOT_NULL(pauline_remote_contact); CU_ASSERT_PTR_NOT_NULL(pauline_remote_contact_header); From 485c8678f6c2dabd569329cb0e946cff631769e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 5 Feb 2015 13:28:30 +0100 Subject: [PATCH 352/496] Fix bad initialization order of GTK+ --- tester/liblinphone_tester.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c index fbba48218..23b5a8652 100644 --- a/tester/liblinphone_tester.c +++ b/tester/liblinphone_tester.c @@ -172,8 +172,8 @@ int main (int argc, char *argv[]) FILE* log_file=NULL; #ifdef HAVE_GTK - gdk_threads_init(); gtk_init(&argc, &argv); + gdk_threads_init(); #endif #if defined(ANDROID) From 10ebac867d4e6e811eab1bd66670da2932767193 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 5 Feb 2015 14:33:44 +0100 Subject: [PATCH 353/496] fix function that searches soundcard --- coreapi/linphonecore.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 5d567fdee..5f0a6b5e0 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -4411,15 +4411,13 @@ static MSSndCard *get_card_from_string_id(const char *devid, unsigned int cap){ } } if (sndcard==NULL) { - /* get a card that has read+write capabilities */ - sndcard=ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()); - /* otherwise refine to the first card having the right capability*/ - if (sndcard==NULL){ - const MSList *elem=ms_snd_card_manager_get_list(ms_snd_card_manager_get()); - for(;elem!=NULL;elem=elem->next){ - sndcard=(MSSndCard*)elem->data; - if (ms_snd_card_get_capabilities(sndcard) & cap) break; - } + if ((cap & MS_SND_CARD_CAP_CAPTURE) && (cap & MS_SND_CARD_CAP_PLAYBACK)){ + sndcard=ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()); + }else if (cap & MS_SND_CARD_CAP_CAPTURE){ + sndcard=ms_snd_card_manager_get_default_capture_card(ms_snd_card_manager_get()); + } + else if (cap & MS_SND_CARD_CAP_PLAYBACK){ + sndcard=ms_snd_card_manager_get_default_playback_card(ms_snd_card_manager_get()); } if (sndcard==NULL){/*looks like a bug! take the first one !*/ const MSList *elem=ms_snd_card_manager_get_list(ms_snd_card_manager_get()); From 2b7f2fd1cb82b2c36014f03914f02e3325990da4 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 5 Feb 2015 14:40:20 +0100 Subject: [PATCH 354/496] Finilize multicast api java binding --- build/android/liblinphone_tester.mk | 3 +- coreapi/linphonecore_jni.cc | 50 ++++++++----------- .../org/linphone/core/LinphoneCoreImpl.java | 4 +- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/build/android/liblinphone_tester.mk b/build/android/liblinphone_tester.mk index d92bb60b5..9f1ab7408 100644 --- a/build/android/liblinphone_tester.mk +++ b/build/android/liblinphone_tester.mk @@ -19,7 +19,8 @@ common_SRC_FILES := \ player_tester.c \ dtmf_tester.c \ accountmanager.c \ - offeranswer_tester.c + offeranswer_tester.c \ + multicast_call_tester.c common_C_INCLUDES += \ $(LOCAL_PATH) \ diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index d093a3e30..7c5736705 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -5631,9 +5631,9 @@ extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_setVideoMulticas * Signature: (J)Ljava/lang/String; */ extern "C" jstring JNICALL Java_org_linphone_core_LinphoneCoreImpl_getAudioMulticastAddr - (JNIEnv *, jobject, jlong) { - ms_error("Java_org_linphone_core_LinphoneCoreImpl_getAudioMulticastAddr not implemented yet"); - return NULL; + (JNIEnv *env , jobject, jlong ptr) { + const char *tmp=linphone_core_get_audio_multicast_addr((LinphoneCore*)ptr); + return tmp ? env->NewStringUTF(tmp) : NULL; } /* @@ -5642,9 +5642,9 @@ extern "C" jstring JNICALL Java_org_linphone_core_LinphoneCoreImpl_getAudioMulti * Signature: (J)Ljava/lang/String; */ extern "C" jstring JNICALL Java_org_linphone_core_LinphoneCoreImpl_getVideoMulticastAddr - (JNIEnv *, jobject, jlong) { - ms_error("Java_org_linphone_core_LinphoneCoreImpl_getVideoMulticastAddr not implemented yet"); - return NULL; + (JNIEnv * env, jobject, jlong ptr) { + const char *tmp=linphone_core_get_video_multicast_addr((LinphoneCore*)ptr); + return tmp ? env->NewStringUTF(tmp) : NULL; } /* @@ -5653,9 +5653,8 @@ extern "C" jstring JNICALL Java_org_linphone_core_LinphoneCoreImpl_getVideoMulti * Signature: (JI)I */ extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_setAudioMulticastTtl - (JNIEnv *, jobject, jlong, jint) { - ms_error("Java_org_linphone_core_LinphoneCoreImpl_setAudioMulticastTtl not implemented yet"); - return -1; + (JNIEnv *, jobject, jlong ptr, jint value) { + return linphone_core_set_audio_multicast_ttl((LinphoneCore*)ptr,value); } /* @@ -5664,9 +5663,8 @@ extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_setAudioMulticas * Signature: (JI)I */ extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_setVideoMulticastTtl - (JNIEnv *, jobject, jlong, jint) { - ms_error("Java_org_linphone_core_LinphoneCoreImpl_setVideoMulticastTtl not implemented yet"); - return -1; + (JNIEnv *, jobject, jlong ptr, jint value) { + return linphone_core_set_video_multicast_ttl((LinphoneCore*)ptr,value); } /* @@ -5675,9 +5673,8 @@ extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_setVideoMulticas * Signature: (J)I */ extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_getAudioMulticastTtl - (JNIEnv *, jobject, jlong) { - ms_error("Java_org_linphone_core_LinphoneCoreImpl_getAudioMulticastTtl not implemented yet"); - return -1; + (JNIEnv *, jobject, jlong ptr) { + return linphone_core_get_audio_multicast_ttl((LinphoneCore*)ptr); } /* @@ -5686,9 +5683,8 @@ extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_getAudioMulticas * Signature: (J)I */ extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_getVideoMulticastTtl - (JNIEnv *, jobject, jlong) { - ms_error("Java_org_linphone_core_LinphoneCoreImpl_getVideoMulticastTtl not implemented yet"); - return -1; + (JNIEnv *, jobject, jlong ptr) { + return linphone_core_get_video_multicast_ttl((LinphoneCore*)ptr); } /* @@ -5697,8 +5693,8 @@ extern "C" jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_getVideoMulticas * Signature: (JZ)V */ extern "C" void JNICALL Java_org_linphone_core_LinphoneCoreImpl_enableAudioMulticast - (JNIEnv *, jobject, jlong, jboolean) { - ms_error("Java_org_linphone_core_LinphoneCoreImpl_enableAudioMulticast not implemented yet"); + (JNIEnv *, jobject, jlong ptr, jboolean yesno) { + return linphone_core_enable_audio_multicast((LinphoneCore*)ptr,yesno); } /* @@ -5707,9 +5703,8 @@ extern "C" void JNICALL Java_org_linphone_core_LinphoneCoreImpl_enableAudioMulti * Signature: (J)Z */ extern "C" jboolean JNICALL Java_org_linphone_core_LinphoneCoreImpl_audioMulticastEnabled - (JNIEnv *, jobject, jlong) { - ms_error("Java_org_linphone_core_LinphoneCoreImpl_audioMulticastEnabled not implemented yet"); - return false; + (JNIEnv *, jobject, jlong ptr) { + return linphone_core_audio_multicast_enabled((LinphoneCore*)ptr); } /* @@ -5718,8 +5713,8 @@ extern "C" jboolean JNICALL Java_org_linphone_core_LinphoneCoreImpl_audioMultica * Signature: (JZ)V */ extern "C" void JNICALL Java_org_linphone_core_LinphoneCoreImpl_enableVideoMulticast - (JNIEnv *, jobject, jlong, jboolean) { - ms_error("Java_org_linphone_core_LinphoneCoreImpl_enableVideoMulticast not implemented yet"); + (JNIEnv *, jobject, jlong ptr, jboolean yesno) { + return linphone_core_enable_video_multicast((LinphoneCore*)ptr,yesno); } /* @@ -5728,9 +5723,8 @@ extern "C" void JNICALL Java_org_linphone_core_LinphoneCoreImpl_enableVideoMulti * Signature: (J)Z */ extern "C" jboolean JNICALL Java_org_linphone_core_LinphoneCoreImpl_videoMulticastEnabled - (JNIEnv *, jobject, jlong) { - ms_error("Java_org_linphone_core_LinphoneCoreImpl_videoMulticastEnabled not implemented yet"); - return false; + (JNIEnv *, jobject, jlong ptr) { + return linphone_core_video_multicast_enabled((LinphoneCore*)ptr); } diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index 11f62619c..fd1796102 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -1381,12 +1381,12 @@ public class LinphoneCoreImpl implements LinphoneCore { private native String getAudioMulticastAddr(long ptr); @Override public String getAudioMulticastAddr() { - return getAudioMulticastAddr() ; + return getAudioMulticastAddr(nativePtr) ; } private native String getVideoMulticastAddr(long ptr); @Override public String getVideoMulticastAddr() { - return getVideoMulticastAddr(); + return getVideoMulticastAddr(nativePtr); } private native int setAudioMulticastTtl(long ptr,int ttl); @Override From 1d080cb1f5ed4eceb311f5bbc33f0c16ebde9ea2 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 5 Feb 2015 17:54:03 +0100 Subject: [PATCH 355/496] Add default_max_bandwidth parameter and apply it to video when no bandwidth is specified in the signalling. --- coreapi/linphonecall.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 226b9e9b9..ec0dd70b6 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2175,6 +2175,8 @@ static int get_video_bw(LinphoneCall *call, const SalMediaDescription *md, const else if (md->bandwidth>0) { /*case where b=AS is given globally, not per stream*/ remote_bw=get_remaining_bandwidth_for_video(md->bandwidth,call->audio_bw); + } else { + remote_bw = lp_config_get_int(call->core->config, "net", "default_max_bandwidth", 1500); } bw=get_min_bandwidth(get_remaining_bandwidth_for_video(linphone_core_get_upload_bandwidth(call->core),call->audio_bw),remote_bw); return bw; From ad5e0316f677934ed6ef6111c98417cecfb52882 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 5 Feb 2015 19:11:26 +0100 Subject: [PATCH 356/496] Add early-media call to the video tester. --- tester/liblinphone_tester.h | 2 + tester/video_tester.c | 151 ++++++++++++++++++++++++++---------- 2 files changed, 111 insertions(+), 42 deletions(-) diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 9dbb63a9a..22dbcd6f6 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -239,6 +239,8 @@ typedef struct _stats { int number_of_rtcp_sent; int number_of_rtcp_received; + int number_of_video_windows_created; + }stats; typedef struct _LinphoneCoreManager { diff --git a/tester/video_tester.c b/tester/video_tester.c index c9f3771ee..37848b542 100644 --- a/tester/video_tester.c +++ b/tester/video_tester.c @@ -51,13 +51,20 @@ static unsigned long get_native_handle(GdkWindow *gdkw) { return 0; } -static GtkWidget *create_video_window(LinphoneCall *call) { +static GtkWidget *create_video_window(LinphoneCall *call, LinphoneCallState cstate) { GtkWidget *video_window; GdkDisplay *display; GdkColor color; MSVideoSize vsize = MS_VIDEO_SIZE_CIF; - + const char *cstate_str; + char *title; + stats* counters = get_stats(call->core); + + cstate_str = linphone_call_state_to_string(cstate); + title = g_strdup_printf("%s", cstate_str); video_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(video_window), title); + g_free(title); gtk_window_resize(GTK_WINDOW(video_window), vsize.width, vsize.height); gdk_color_parse("black", &color); gtk_widget_modify_bg(video_window, GTK_STATE_NORMAL, &color); @@ -69,13 +76,14 @@ static GtkWidget *create_video_window(LinphoneCall *call) { display = gdk_drawable_get_display(gtk_widget_get_window(video_window)); #endif gdk_display_flush(display); + counters->number_of_video_windows_created++; return video_window; } -static void show_video_window(LinphoneCall *call) { +static void show_video_window(LinphoneCall *call, LinphoneCallState cstate) { GtkWidget *video_window = (GtkWidget *)linphone_call_get_user_data(call); if (video_window == NULL) { - video_window = create_video_window(call); + video_window = create_video_window(call, cstate); linphone_call_set_user_data(call, video_window); linphone_call_set_native_video_window_id(call, get_native_handle(gtk_widget_get_window(video_window))); } @@ -92,8 +100,10 @@ static void hide_video_video(LinphoneCall *call) { static void video_call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cstate, const char *msg) { switch (cstate) { + case LinphoneCallIncomingEarlyMedia: + case LinphoneCallOutgoingEarlyMedia: case LinphoneCallConnected: - show_video_window(call); + show_video_window(call, cstate); break; case LinphoneCallEnd: hide_video_video(call); @@ -103,18 +113,45 @@ static void video_call_state_changed(LinphoneCore *lc, LinphoneCall *call, Linph } } -static bool_t video_call_with_params(LinphoneCoreManager* caller_mgr, LinphoneCoreManager* callee_mgr, const LinphoneCallParams *caller_params, const LinphoneCallParams *callee_params) { +static void early_media_video_call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cstate, const char *msg) { + LinphoneCallParams *params; + + video_call_state_changed(lc, call, cstate, msg); + switch (cstate) { + case LinphoneCallIncomingReceived: + params = linphone_core_create_default_call_parameters(lc); + linphone_call_params_enable_video(params, TRUE); + linphone_core_accept_early_media_with_params(lc, call, params); + linphone_call_params_unref(params); + break; + default: + break; + } +} + +bool_t wait_for_three_cores(LinphoneCore *lc1, LinphoneCore *lc2, LinphoneCore *lc3, int timeout) { + MSList *lcs = NULL; + bool_t result; + int dummy = 0; + if (lc1) lcs = ms_list_append(lcs, lc1); + if (lc2) lcs = ms_list_append(lcs, lc2); + if (lc3) lcs = ms_list_append(lcs, lc3); + result = wait_for_list(lcs, &dummy, 1, timeout); + ms_list_free(lcs); + return result; +} + +static bool_t video_call_with_params(LinphoneCoreManager* caller_mgr, LinphoneCoreManager* callee_mgr, const LinphoneCallParams *caller_params, const LinphoneCallParams *callee_params, bool_t automatically_accept) { int retry = 0; stats initial_caller = caller_mgr->stat; stats initial_callee = callee_mgr->stat; - bool_t result = FALSE; + bool_t result = TRUE; bool_t did_received_call; CU_ASSERT_PTR_NOT_NULL(linphone_core_invite_address_with_params(caller_mgr->lc, callee_mgr->identity, caller_params)); did_received_call = wait_for(callee_mgr->lc, caller_mgr->lc, &callee_mgr->stat.number_of_LinphoneCallIncomingReceived, initial_callee.number_of_LinphoneCallIncomingReceived + 1); 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); while (caller_mgr->stat.number_of_LinphoneCallOutgoingRinging != (initial_caller.number_of_LinphoneCallOutgoingRinging + 1) @@ -133,61 +170,91 @@ static bool_t video_call_with_params(LinphoneCoreManager* caller_mgr, LinphoneCo return 0; } - linphone_core_accept_call_with_params(callee_mgr->lc, linphone_core_get_current_call(callee_mgr->lc), callee_params); + if (automatically_accept == TRUE) { + linphone_core_accept_call_with_params(callee_mgr->lc, linphone_core_get_current_call(callee_mgr->lc), callee_params); - CU_ASSERT_TRUE(wait_for(callee_mgr->lc, caller_mgr->lc, &callee_mgr->stat.number_of_LinphoneCallConnected, initial_callee.number_of_LinphoneCallConnected + 1)); - CU_ASSERT_TRUE(wait_for(callee_mgr->lc, caller_mgr->lc, &caller_mgr->stat.number_of_LinphoneCallConnected, initial_callee.number_of_LinphoneCallConnected + 1)); - result = wait_for(callee_mgr->lc, caller_mgr->lc, &caller_mgr->stat.number_of_LinphoneCallStreamsRunning, initial_caller.number_of_LinphoneCallStreamsRunning + 1) - && wait_for(callee_mgr->lc, caller_mgr->lc, &callee_mgr->stat.number_of_LinphoneCallStreamsRunning, initial_callee.number_of_LinphoneCallStreamsRunning + 1); + CU_ASSERT_TRUE(wait_for(callee_mgr->lc, caller_mgr->lc, &callee_mgr->stat.number_of_LinphoneCallConnected, initial_callee.number_of_LinphoneCallConnected + 1)); + CU_ASSERT_TRUE(wait_for(callee_mgr->lc, caller_mgr->lc, &caller_mgr->stat.number_of_LinphoneCallConnected, initial_callee.number_of_LinphoneCallConnected + 1)); + result = wait_for(callee_mgr->lc, caller_mgr->lc, &caller_mgr->stat.number_of_LinphoneCallStreamsRunning, initial_caller.number_of_LinphoneCallStreamsRunning + 1) + && wait_for(callee_mgr->lc, caller_mgr->lc, &callee_mgr->stat.number_of_LinphoneCallStreamsRunning, initial_callee.number_of_LinphoneCallStreamsRunning + 1); + } return result; } +static LinphoneCallParams * _configure_for_video(LinphoneCoreManager *manager, LinphoneCoreCallStateChangedCb cb) { + LinphoneCallParams *params; + LinphoneCoreVTable *vtable = linphone_core_v_table_new(); + vtable->call_state_changed = cb; + linphone_core_add_listener(manager->lc, vtable); + linphone_core_set_video_device(manager->lc, "StaticImage: Static picture"); + linphone_core_enable_video_capture(manager->lc, TRUE); + linphone_core_enable_video_display(manager->lc, TRUE); + params = linphone_core_create_default_call_parameters(manager->lc); + linphone_call_params_enable_video(params, TRUE); + disable_all_video_codecs_except_one(manager->lc, "VP8"); + return params; +} + +static LinphoneCallParams * configure_for_video(LinphoneCoreManager *manager) { + return _configure_for_video(manager, video_call_state_changed); +} + +static LinphoneCallParams * configure_for_early_media_video_sending(LinphoneCoreManager *manager) { + LinphoneCallParams *params = _configure_for_video(manager, video_call_state_changed); + linphone_call_params_enable_early_media_sending(params, TRUE); + return params; +} + +static LinphoneCallParams * configure_for_early_media_video_receiving(LinphoneCoreManager *manager) { + return _configure_for_video(manager, early_media_video_call_state_changed); +} + static void early_media_video_during_video_call_test(void) { LinphoneCoreManager *marie; LinphoneCoreManager *pauline; + LinphoneCoreManager *laure; LinphoneCallParams *marie_params; LinphoneCallParams *pauline_params; - LinphoneCoreVTable *marie_vtable; - LinphoneCoreVTable *pauline_vtable; - int dummy = 0; + LinphoneCallParams *laure_params; - marie = linphone_core_manager_new( "marie_rc"); - pauline = linphone_core_manager_new( "pauline_rc"); - marie_vtable = linphone_core_v_table_new(); - marie_vtable->call_state_changed = video_call_state_changed; - linphone_core_add_listener(marie->lc, marie_vtable); - linphone_core_set_video_device(marie->lc, "StaticImage: Static picture"); - //linphone_core_set_video_device(marie->lc, "V4L2: /dev/video0"); - linphone_core_enable_video_capture(marie->lc, TRUE); - linphone_core_enable_video_display(marie->lc, TRUE); - linphone_core_set_avpf_mode(marie->lc, LinphoneAVPFEnabled); - marie_params = linphone_core_create_default_call_parameters(marie->lc); - linphone_call_params_enable_video(marie_params, TRUE); - disable_all_video_codecs_except_one(marie->lc, "VP8"); - pauline_vtable = linphone_core_v_table_new(); - pauline_vtable->call_state_changed = video_call_state_changed; - linphone_core_add_listener(pauline->lc, pauline_vtable); - linphone_core_set_video_device(pauline->lc, "StaticImage: Static picture"); - linphone_core_enable_video_capture(pauline->lc, TRUE); - linphone_core_enable_video_display(pauline->lc, TRUE); - pauline_params = linphone_core_create_default_call_parameters(pauline->lc); - linphone_call_params_enable_video(pauline_params, TRUE); - disable_all_video_codecs_except_one(pauline->lc, "VP8"); - - CU_ASSERT_TRUE(video_call_with_params(marie, pauline, marie_params, pauline_params)); + marie = linphone_core_manager_new("marie_rc"); + pauline = linphone_core_manager_new("pauline_rc"); + laure = linphone_core_manager_new("laure_rc"); + marie_params = configure_for_early_media_video_receiving(marie); + pauline_params = configure_for_video(pauline); + laure_params = configure_for_early_media_video_sending(laure); - /* Wait for 3s. */ - wait_for_until(marie->lc, pauline->lc, &dummy, 1, 3000); + /* Normal automatically accepted video call from marie to pauline. */ + CU_ASSERT_TRUE(video_call_with_params(marie, pauline, marie_params, pauline_params, TRUE)); + + /* Wait for 2s. */ + wait_for_three_cores(marie->lc, pauline->lc, NULL, 2000); + + /* Early media video call from laure to marie. */ + CU_ASSERT_TRUE(video_call_with_params(laure, marie, laure_params, NULL, FALSE)); + + /* Wait for 2s. */ + wait_for_three_cores(marie->lc, pauline->lc, laure->lc, 2000); linphone_core_terminate_all_calls(marie->lc); CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &marie->stat.number_of_LinphoneCallEnd, 1)); CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &pauline->stat.number_of_LinphoneCallEnd, 1)); CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &marie->stat.number_of_LinphoneCallReleased, 1)); CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &pauline->stat.number_of_LinphoneCallReleased, 1)); + CU_ASSERT_TRUE(wait_for(marie->lc, laure->lc, &marie->stat.number_of_LinphoneCallEnd, 1)); + CU_ASSERT_TRUE(wait_for(marie->lc, laure->lc, &laure->stat.number_of_LinphoneCallEnd, 1)); + CU_ASSERT_EQUAL(marie->stat.number_of_video_windows_created, 2); + CU_ASSERT_EQUAL(pauline->stat.number_of_video_windows_created, 1); + CU_ASSERT_EQUAL(laure->stat.number_of_video_windows_created, 1); + + linphone_call_params_unref(marie_params); + linphone_call_params_unref(pauline_params); + linphone_call_params_unref(laure_params); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); + linphone_core_manager_destroy(laure); } test_t video_tests[] = { From e6f1364782d56122959cb381891e5fa93a928e7b Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 5 Feb 2015 19:35:01 +0100 Subject: [PATCH 357/496] Add multicast call tester when building with CMake. --- tester/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tester/CMakeLists.txt b/tester/CMakeLists.txt index 34e5d122b..3dfe85142 100644 --- a/tester/CMakeLists.txt +++ b/tester/CMakeLists.txt @@ -31,6 +31,7 @@ set(SOURCE_FILES liblinphone_tester.c log_collection_tester.c message_tester.c + multicast_call_tester.c offeranswer_tester.c player_tester.c presence_tester.c From 59758df62d907d8b48b743cfdc5c50826cf1e07c Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 5 Feb 2015 20:34:12 +0100 Subject: [PATCH 358/496] add custom header API to proxy config --- coreapi/bellesip_sal/sal_op_registration.c | 3 +++ coreapi/linphonecore.h | 15 +++++++++++++++ coreapi/private.h | 1 + coreapi/proxy.c | 14 +++++++++++++- mediastreamer2 | 2 +- tester/register_tester.c | 20 ++++++++++++++++++++ 6 files changed, 53 insertions(+), 2 deletions(-) diff --git a/coreapi/bellesip_sal/sal_op_registration.c b/coreapi/bellesip_sal/sal_op_registration.c index b51435a4f..f6b6547a3 100644 --- a/coreapi/bellesip_sal/sal_op_registration.c +++ b/coreapi/bellesip_sal/sal_op_registration.c @@ -33,6 +33,9 @@ static void register_refresher_listener (belle_sip_refresher_t* refresher op->auth_info=sal_auth_info_create((belle_sip_auth_event_t*)(belle_sip_refresher_get_auth_events(refresher)->data)); } sal_error_info_set(&op->error_info,SalReasonUnknown,status_code,reason_phrase,NULL); + if (status_code>=200){ + sal_op_assign_recv_headers(op,(belle_sip_message_t*)response); + } if(status_code == 200) { /*check service route rfc3608*/ belle_sip_header_service_route_t* service_route; diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 8e1efa4cd..bd83671e9 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -1148,6 +1148,21 @@ LINPHONE_PUBLIC LinphoneAVPFMode linphone_proxy_config_get_avpf_mode(const Linph **/ LINPHONE_PUBLIC void linphone_proxy_config_set_avpf_mode(LinphoneProxyConfig *cfg, LinphoneAVPFMode mode); +/** + * Obtain the value of a header sent by the server in last answer to REGISTER. + * @param cfg the proxy config object + * @param header_name the header name for which to fetch corresponding value + * @return the value of the queried header. +**/ +LINPHONE_PUBLIC const char *linphone_proxy_config_get_custom_header(LinphoneProxyConfig *cfg, const char *header_name); + +/** + * Set the value of a custom header sent to the server in REGISTERs request. + * @param cfg the proxy config object + * @param header_name the header name + * @param header_value the header's value +**/ +LINPHONE_PUBLIC void linphone_proxy_config_set_custom_header(LinphoneProxyConfig *cfg, const char *header_name, const char *header_value); /** * @} **/ diff --git a/coreapi/private.h b/coreapi/private.h index 9abdd9ee6..166448fe8 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -476,6 +476,7 @@ struct _LinphoneProxyConfig int expires; int publish_expires; SalOp *op; + SalCustomHeader *sent_headers; char *type; struct _SipSetupContext *ssctx; int auth_failures; diff --git a/coreapi/proxy.c b/coreapi/proxy.c index beed88ce3..19b362b6e 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -182,6 +182,7 @@ void _linphone_proxy_config_destroy(LinphoneProxyConfig *obj){ if (obj->contact_uri_params) ms_free(obj->contact_uri_params); if (obj->saved_proxy!=NULL) linphone_address_destroy(obj->saved_proxy); if (obj->saved_identity!=NULL) linphone_address_destroy(obj->saved_identity); + if (obj->sent_headers!=NULL) sal_custom_header_free(obj->sent_headers); _linphone_proxy_config_release_ops(obj); } @@ -467,7 +468,7 @@ static void linphone_proxy_config_register(LinphoneProxyConfig *obj){ sal_op_release(obj->op); obj->op=sal_op_new(obj->lc->sal); - linphone_configure_op(obj->lc, obj->op, to, NULL, FALSE); + linphone_configure_op(obj->lc, obj->op, to, obj->sent_headers, FALSE); linphone_address_destroy(to); if ((contact=guess_contact_for_register(obj))) { @@ -1147,6 +1148,17 @@ struct _LinphoneCore * linphone_proxy_config_get_core(const LinphoneProxyConfig return obj->lc; } +const char *linphone_proxy_config_get_custom_header(LinphoneProxyConfig *cfg, const char *header_name){ + const SalCustomHeader *ch; + if (!cfg->op) return NULL; + ch = sal_op_get_recv_custom_header(cfg->op); + return sal_custom_header_find(ch, header_name); +} + +void linphone_proxy_config_set_custom_header(LinphoneProxyConfig *cfg, const char *header_name, const char *header_value){ + cfg->sent_headers=sal_custom_header_append(cfg->sent_headers, header_name, header_value); +} + /** * Add a proxy configuration. * This will start registration on the proxy, if registration is enabled. diff --git a/mediastreamer2 b/mediastreamer2 index 034131e3b..f6ed42c03 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 034131e3b566438df8445ca7f97c19f3c3774f28 +Subproject commit f6ed42c031d3df9d2ccb3b5ec7bfd8f8023c73f6 diff --git a/tester/register_tester.c b/tester/register_tester.c index fc778d865..b0687352d 100644 --- a/tester/register_tester.c +++ b/tester/register_tester.c @@ -190,6 +190,25 @@ static void simple_register(){ linphone_core_manager_destroy(lcm); } +static void register_with_custom_headers(void){ + LinphoneCoreManager *marie=linphone_core_manager_new("marie_rc"); + LinphoneProxyConfig *cfg=linphone_core_get_default_proxy_config(marie->lc); + int initial_register_ok=marie->stat.number_of_LinphoneRegistrationOk; + const char *value; + + linphone_core_set_network_reachable(marie->lc, FALSE); + linphone_proxy_config_set_custom_header(cfg, "ah-bah-ouais", "...mais bon."); + /*unfortunately it is difficult to programmatically check that sent custom headers are actually sent. + * A server development would be required here.*/ + + linphone_core_set_network_reachable(marie->lc, TRUE); + wait_for(marie->lc, NULL, &marie->stat.number_of_LinphoneRegistrationOk,initial_register_ok+1); + value=linphone_proxy_config_get_custom_header(cfg, "Server"); + CU_ASSERT_PTR_NOT_NULL(value); + if (value) CU_ASSERT_TRUE(strstr(value, "Flexisip")!=NULL); + linphone_core_manager_destroy(marie); +} + static void simple_unregister(){ LinphoneCoreManager* lcm = create_lcm(); stats* counters = &lcm->stat; @@ -814,6 +833,7 @@ test_t register_tests[] = { { "Simple register", simple_register }, { "Simple register unregister", simple_unregister }, { "TCP register", simple_tcp_register }, + { "Register with custom headers", register_with_custom_headers }, { "TCP register compatibility mode", simple_tcp_register_compatibility_mode }, { "TLS register", simple_tls_register }, { "TLS register with alt. name certificate", tls_alt_name_register }, From 9357c20551c04c595f89c776a763f46d124f4ccd Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 6 Feb 2015 12:07:30 +0100 Subject: [PATCH 359/496] fix tests not passing when the entire suite is run. enhance ipv6 test --- tester/accountmanager.c | 4 +++- tester/flexisip_tester.c | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/tester/accountmanager.c b/tester/accountmanager.c index 93c250135..80bc7942e 100644 --- a/tester/accountmanager.c +++ b/tester/accountmanager.c @@ -194,7 +194,9 @@ LinphoneAddress *account_manager_check_account(AccountManager *m, LinphoneProxyC create_account=TRUE; m->accounts=ms_list_append(m->accounts,account); } - tmp=linphone_address_as_string(account->modified_identity); + /*modify the username of the identity of the proxy config*/ + linphone_address_set_username(id_addr, linphone_address_get_username(account->modified_identity)); + tmp=linphone_address_as_string(id_addr); linphone_proxy_config_set_identity(cfg,tmp); ms_free(tmp); diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index dc0250eb8..0f8d5457c 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -680,6 +680,22 @@ static void call_with_ipv6(void) { CU_ASSERT_TRUE(call(marie,pauline)); pauline_call=linphone_core_get_current_call(pauline->lc); CU_ASSERT_PTR_NOT_NULL(pauline_call); + if (pauline_call){ + /*check that the remote contact is IPv6*/ + const char *contact=linphone_call_get_remote_contact(pauline_call); + LinphoneAddress *ct_addr; + + CU_ASSERT_PTR_NOT_NULL(contact); + if (contact){ + ct_addr=linphone_address_new(contact); + CU_ASSERT_PTR_NOT_NULL(ct_addr); + if (ct_addr){ + CU_ASSERT_TRUE(linphone_address_get_domain(ct_addr)[0]=='['); + } + linphone_address_destroy(ct_addr); + } + + } liblinphone_tester_check_rtcp(marie,pauline); end_call(marie,pauline); From 1a9adcd1ca699fc21249bf127fc670267b40a966 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 6 Feb 2015 12:17:34 +0100 Subject: [PATCH 360/496] fix ipv6 test --- tester/flexisip_tester.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index 0f8d5457c..06d8200cf 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -690,7 +690,7 @@ static void call_with_ipv6(void) { ct_addr=linphone_address_new(contact); CU_ASSERT_PTR_NOT_NULL(ct_addr); if (ct_addr){ - CU_ASSERT_TRUE(linphone_address_get_domain(ct_addr)[0]=='['); + CU_ASSERT_TRUE(strchr(linphone_address_get_domain(ct_addr),':')!=NULL); } linphone_address_destroy(ct_addr); } From 23a51c7e6d671631bf044831f6d8772bc5e62bd0 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Fri, 6 Feb 2015 14:24:53 +0100 Subject: [PATCH 361/496] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index f6ed42c03..625547016 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit f6ed42c031d3df9d2ccb3b5ec7bfd8f8023c73f6 +Subproject commit 625547016a09f0bde3a1ff6b35e29d71506174d0 From 0f12a36b67d40e00260c0b663a5bdc92a241f2bb Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 6 Feb 2015 15:30:05 +0100 Subject: [PATCH 362/496] Allow queuing several incoming calls instead of declining all of them except the first. --- coreapi/callbacks.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 99e23f777..f18976476 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -232,17 +232,13 @@ static bool_t already_a_call_with_remote_address(const LinphoneCore *lc, const L return FALSE; } -static bool_t already_a_call_pending(LinphoneCore *lc){ +static bool_t already_an_outgoing_call_pending(LinphoneCore *lc){ MSList *elem; for(elem=lc->calls;elem!=NULL;elem=elem->next){ LinphoneCall *call=(LinphoneCall*)elem->data; - if (call->state==LinphoneCallIncomingReceived - || call->state==LinphoneCallIncomingEarlyMedia - || call->state==LinphoneCallOutgoingInit + if (call->state==LinphoneCallOutgoingInit || call->state==LinphoneCallOutgoingProgress - || call->state==LinphoneCallOutgoingEarlyMedia - || call->state==LinphoneCallOutgoingRinging - || call->state==LinphoneCallIdle){ /*case of an incoming call for which ICE candidate gathering is pending.*/ + || call->state==LinphoneCallOutgoingRinging){ return TRUE; } } @@ -312,8 +308,8 @@ static void call_received(SalOp *h){ 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."); + if ((already_a_call_with_remote_address(lc,from_addr) && prevent_colliding_calls) || already_an_outgoing_call_pending(lc)){ + ms_warning("Receiving a call while one is initiated, refusing this one with busy message."); sal_call_decline(h,SalReasonBusy,NULL); sal_op_release(h); linphone_address_destroy(from_addr); From bbb87a177171ebc5781fe4fca27578b4c70bdbb7 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 6 Feb 2015 15:31:07 +0100 Subject: [PATCH 363/496] Add test with several incoming early-media video calls. --- tester/video_tester.c | 50 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/tester/video_tester.c b/tester/video_tester.c index 37848b542..cb4ea132f 100644 --- a/tester/video_tester.c +++ b/tester/video_tester.c @@ -257,8 +257,56 @@ static void early_media_video_during_video_call_test(void) { linphone_core_manager_destroy(laure); } +static void two_incoming_early_media_video_calls_test(void) { + LinphoneCoreManager *marie; + LinphoneCoreManager *pauline; + LinphoneCoreManager *laure; + LinphoneCallParams *marie_params; + LinphoneCallParams *pauline_params; + LinphoneCallParams *laure_params; + + marie = linphone_core_manager_new("marie_rc"); + pauline = linphone_core_manager_new("pauline_rc"); + laure = linphone_core_manager_new("laure_rc"); + marie_params = configure_for_early_media_video_receiving(marie); + pauline_params = configure_for_early_media_video_sending(pauline); + laure_params = configure_for_early_media_video_sending(laure); + + /* Early media video call from pauline to marie. */ + CU_ASSERT_TRUE(video_call_with_params(pauline, marie, pauline_params, NULL, FALSE)); + + /* Wait for 2s. */ + wait_for_three_cores(marie->lc, pauline->lc, NULL, 2000); + + /* Early media video call from laure to marie. */ + CU_ASSERT_TRUE(video_call_with_params(laure, marie, laure_params, NULL, FALSE)); + + /* Wait for 2s. */ + wait_for_three_cores(marie->lc, pauline->lc, laure->lc, 2000); + + linphone_core_terminate_all_calls(marie->lc); + CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &marie->stat.number_of_LinphoneCallEnd, 1)); + CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &pauline->stat.number_of_LinphoneCallEnd, 1)); + CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &marie->stat.number_of_LinphoneCallReleased, 1)); + CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &pauline->stat.number_of_LinphoneCallReleased, 1)); + CU_ASSERT_TRUE(wait_for(marie->lc, laure->lc, &marie->stat.number_of_LinphoneCallEnd, 1)); + CU_ASSERT_TRUE(wait_for(marie->lc, laure->lc, &laure->stat.number_of_LinphoneCallEnd, 1)); + + CU_ASSERT_EQUAL(marie->stat.number_of_video_windows_created, 2); + CU_ASSERT_EQUAL(pauline->stat.number_of_video_windows_created, 1); + CU_ASSERT_EQUAL(laure->stat.number_of_video_windows_created, 1); + + linphone_call_params_unref(marie_params); + linphone_call_params_unref(pauline_params); + linphone_call_params_unref(laure_params); + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); + linphone_core_manager_destroy(laure); +} + test_t video_tests[] = { - { "Early-media video during video call", early_media_video_during_video_call_test } + { "Early-media video during video call", early_media_video_during_video_call_test }, + { "Two incoming early-media video calls", two_incoming_early_media_video_calls_test } }; test_suite_t video_test_suite = { From fae682d42a0dc9e49739d26c6adc72b2d5943634 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Fri, 6 Feb 2015 14:29:06 +0100 Subject: [PATCH 364/496] Check exceptions on JNI listeners --- coreapi/linphonecore_jni.cc | 64 +++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 7c5736705..b4a929a07 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -620,6 +620,10 @@ public: ,lcData->core ,env->CallStaticObjectMethod(lcData->globalStateClass,lcData->globalStateFromIntId,(jint)gstate), msg); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } if (msg) { env->DeleteLocalRef(msg); } @@ -641,6 +645,10 @@ public: ,(jproxy=getProxy(env,proxy,lcData->core)) ,env->CallStaticObjectMethod(lcData->registrationStateClass,lcData->registrationStateFromIntId,(jint)state), msg); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } if (msg) { env->DeleteLocalRef(msg); } @@ -663,6 +671,10 @@ public: ,(jcall=getCall(env,call)) ,env->CallStaticObjectMethod(lcData->callStateClass,lcData->callStateFromIntId,(jint)state), msg); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } if (state==LinphoneCallReleased) { linphone_call_set_user_pointer(call,NULL); env->DeleteGlobalRef(jcall); @@ -686,6 +698,10 @@ public: ,getCall(env,call) ,encrypted ,authentication_token ? env->NewStringUTF(authentication_token) : NULL); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void notify_presence_received(LinphoneCore *lc, LinphoneFriend *my_friend) { JNIEnv *env = 0; @@ -700,6 +716,10 @@ public: ,lcData->notifyPresenceReceivedId ,lcData->core ,env->NewObject(lcData->friendClass,lcData->friendCtrId,(jlong)my_friend)); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void new_subscription_requested(LinphoneCore *lc, LinphoneFriend *my_friend, const char* url) { JNIEnv *env = 0; @@ -715,6 +735,10 @@ public: ,lcData->core ,env->NewObject(lcData->friendClass,lcData->friendCtrId,(jlong)my_friend) ,url ? env->NewStringUTF(url) : NULL); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void dtmf_received(LinphoneCore *lc, LinphoneCall *call, int dtmf) { JNIEnv *env = 0; @@ -730,6 +754,10 @@ public: ,lcData->core ,getCall(env,call) ,dtmf); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message) { JNIEnv *env = 0; @@ -746,6 +774,10 @@ public: ,env->NewObject(lcData->chatRoomClass,lcData->chatRoomCtrId,(jlong)room) ,env->NewObject(lcData->addressClass,lcData->addressCtrId,(jlong)from) ,message ? env->NewStringUTF(message) : NULL); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage *msg) { JNIEnv *env = 0; @@ -763,6 +795,10 @@ public: ,lcData->core ,env->NewObject(lcData->chatRoomClass,lcData->chatRoomCtrId,(jlong)room) ,(jmsg = getChatMessage(env, msg))); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void is_composing_received(LinphoneCore *lc, LinphoneChatRoom *room) { JNIEnv *env = 0; @@ -777,6 +813,10 @@ public: ,lcData->isComposingReceivedId ,lcData->core ,env->NewObject(lcData->chatRoomClass,lcData->chatRoomCtrId,(jlong)room)); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void ecCalibrationStatus(LinphoneCore *lc, LinphoneEcCalibratorStatus status, int delay_ms, void *data) { JNIEnv *env = 0; @@ -822,6 +862,10 @@ public: else env->CallVoidMethod(callobj, lcData->callSetVideoStatsId, statsobj); env->CallVoidMethod(lcData->listener, lcData->callStatsUpdatedId, lcData->core, callobj, statsobj); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void transferStateChanged(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState remote_call_state){ JNIEnv *env = 0; @@ -839,6 +883,10 @@ public: ,(jcall=getCall(env,call)) ,env->CallStaticObjectMethod(lcData->callStateClass,lcData->callStateFromIntId,(jint)remote_call_state) ); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void infoReceived(LinphoneCore *lc, LinphoneCall*call, const LinphoneInfoMessage *info){ JNIEnv *env = 0; @@ -856,6 +904,10 @@ public: ,getCall(env,call) ,env->NewObject(lcData->infoMessageClass,lcData->infoMessageCtor,(jlong)copy_info) ); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void subscriptionStateChanged(LinphoneCore *lc, LinphoneEvent *ev, LinphoneSubscriptionState state){ JNIEnv *env = 0; @@ -876,6 +928,10 @@ public: ,jevent ,jstate ); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } if (state==LinphoneSubscriptionTerminated){ /*loose the java reference */ linphone_event_set_user_data(ev,NULL); @@ -901,6 +957,10 @@ public: ,jevent ,jstate ); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void notifyReceived(LinphoneCore *lc, LinphoneEvent *ev, const char *evname, const LinphoneContent *content){ JNIEnv *env = 0; @@ -920,6 +980,10 @@ public: ,env->NewStringUTF(evname) ,content ? create_java_linphone_content(env,content) : NULL ); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void configuringStatus(LinphoneCore *lc, LinphoneConfiguringState status, const char *message) { From 5d19161059c07a2bf116fd0c50525c6505e028ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 6 Feb 2015 10:47:07 +0100 Subject: [PATCH 365/496] Fix crash with CentOS 6 --- tester/liblinphone_tester.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c index 23b5a8652..fc3f315e5 100644 --- a/tester/liblinphone_tester.c +++ b/tester/liblinphone_tester.c @@ -173,6 +173,9 @@ int main (int argc, char *argv[]) #ifdef HAVE_GTK gtk_init(&argc, &argv); +#if !GLIB_CHECK_VERSION(2,32,0) // backward compatibility with Debian 6 and CentOS 6 + g_thread_init(NULL); +#endif gdk_threads_init(); #endif From 083b34008df90db95f9e8eedc942c7657a2db902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 6 Feb 2015 15:47:01 +0100 Subject: [PATCH 366/496] Makes linphonecsh to handle arguments passed to init --- console/shell.c | 48 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/console/shell.c b/console/shell.c index 016992397..7a502ecd4 100644 --- a/console/shell.c +++ b/console/shell.c @@ -22,7 +22,8 @@ #include #include - +#include +#include #ifdef WIN32 #include @@ -125,11 +126,36 @@ static void print_usage(void){ exit(-1); } +#ifdef WIN32 +static char *argv_to_line(int argc, char *argv[]) { + int i; + int line_length; + char *line; + + assert( argc>=0 ); + + if(argc == 0) return NULL; + + line_length = strlen(argv[0]); + for(i=1; i Date: Fri, 6 Feb 2015 19:03:03 +0100 Subject: [PATCH 367/496] Add parameter and API to allow ringing while in the incoming early media call state. --- coreapi/callbacks.c | 4 +++- coreapi/linphonecore.c | 17 +++++++++-------- coreapi/linphonecore.h | 29 ++++++++++++++++++++++++++++- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index f18976476..3eacb34ea 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -120,7 +120,9 @@ void linphone_core_update_streams(LinphoneCore *lc, LinphoneCall *call, SalMedia bool_t all_muted=FALSE; bool_t send_ringbacktone=FALSE; - linphone_core_stop_ringing(lc); + if (!((call->state == LinphoneCallIncomingEarlyMedia) && (linphone_core_get_ring_during_incoming_early_media(lc)))) { + linphone_core_stop_ringing(lc); + } if (!new_md) { ms_error("linphone_core_update_streams() called with null media description"); return; diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 5f0a6b5e0..537ff51d9 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -3258,7 +3258,6 @@ void linphone_core_notify_incoming_call(LinphoneCore *lc, LinphoneCall *call){ char *tmp; LinphoneAddress *from_parsed; 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); from_parsed=linphone_address_new(sal_op_get_from(call->op)); linphone_address_clean(from_parsed); @@ -3298,7 +3297,7 @@ void linphone_core_notify_incoming_call(LinphoneCore *lc, LinphoneCall *call){ /*try to be best-effort in giving real local or routable contact address for 100Rel case*/ linphone_call_set_contact_op(call); - if (propose_early_media || ringback_tone!=NULL){ + if (propose_early_media){ linphone_core_accept_early_media(lc,call); }else sal_call_notify_ringing(call->op,FALSE); @@ -6500,9 +6499,6 @@ int linphone_core_del_call( LinphoneCore *lc, LinphoneCall *call) return 0; } -/** - * Specifies a ring back tone to be played to far end during incoming calls. -**/ void linphone_core_set_remote_ringback_tone(LinphoneCore *lc, const char *file){ if (lc->sound_conf.ringback_tone){ ms_free(lc->sound_conf.ringback_tone); @@ -6512,13 +6508,18 @@ void linphone_core_set_remote_ringback_tone(LinphoneCore *lc, const char *file){ lc->sound_conf.ringback_tone=ms_strdup(file); } -/** - * Returns the ring back tone played to far end during incoming calls. -**/ const char *linphone_core_get_remote_ringback_tone(const LinphoneCore *lc){ return lc->sound_conf.ringback_tone; } +void linphone_core_set_ring_during_incoming_early_media(LinphoneCore *lc, bool_t enable) { + lp_config_set_int(lc->config, "sound", "ring_during_incoming_early_media", (int)enable); +} + +bool_t linphone_core_get_ring_during_incoming_early_media(const LinphoneCore *lc) { + return (bool_t)lp_config_get_int(lc->config, "sound", "ring_during_incoming_early_media", 0); +} + LinphonePayloadType* linphone_core_find_payload_type(LinphoneCore* lc, const char* type, int rate, int channels) { LinphonePayloadType* result = find_payload_type_from_list(type, rate, channels, linphone_core_get_audio_codecs(lc)); if (result) { diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index bd83671e9..5a6b7f108 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -2672,9 +2672,36 @@ LINPHONE_PUBLIC const char *linphone_core_get_root_ca(LinphoneCore *lc); LINPHONE_PUBLIC void linphone_core_set_ringback(LinphoneCore *lc, const char *path); LINPHONE_PUBLIC const char * linphone_core_get_ringback(const LinphoneCore *lc); -LINPHONE_PUBLIC void linphone_core_set_remote_ringback_tone(LinphoneCore *lc,const char *); +/** + * Specify a ring back tone to be played to far end during incoming calls. + * @param[in] lc #LinphoneCore object + * @param[in] ring The path to the ring back tone to be played. + * @ingroup media_parameters +**/ +LINPHONE_PUBLIC void linphone_core_set_remote_ringback_tone(LinphoneCore *lc, const char *ring); + +/** + * Get the ring back tone played to far end during incoming calls. + * @param[in] lc #LinphoneCore object + * @ingroup media_parameters +**/ LINPHONE_PUBLIC const char *linphone_core_get_remote_ringback_tone(const LinphoneCore *lc); +/** + * Enable or disable the ring play during an incoming early media call. + * @param[in] lc #LinphoneCore object + * @param[in] enable A boolean value telling whether to enable ringing during an incoming early media call. + * @ingroup media_parameters + */ +LINPHONE_PUBLIC void linphone_core_set_ring_during_incoming_early_media(LinphoneCore *lc, bool_t enable); + +/** + * Tells whether the ring play is enabled during an incoming early media call. + * @param[in] lc #LinphoneCore object + * @ingroup media_paramaters + */ +LINPHONE_PUBLIC bool_t linphone_core_get_ring_during_incoming_early_media(const LinphoneCore *lc); + LINPHONE_PUBLIC int linphone_core_preview_ring(LinphoneCore *lc, const char *ring,LinphoneCoreCbFunc func,void * userdata); LINPHONE_PUBLIC int linphone_core_play_local(LinphoneCore *lc, const char *audiofile); LINPHONE_PUBLIC void linphone_core_enable_echo_cancellation(LinphoneCore *lc, bool_t val); From 0d94ad277f6b2cb58e5f837f27656039c377cab4 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 6 Feb 2015 19:04:11 +0100 Subject: [PATCH 368/496] Handle media direction when creating the local media description according to the call params. --- coreapi/call_params.c | 22 ++++++++++++++++++++++ coreapi/call_params.h | 4 ++-- coreapi/linphonecall.c | 2 ++ coreapi/private.h | 2 ++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/coreapi/call_params.c b/coreapi/call_params.c index a2a378eef..b2eea131a 100644 --- a/coreapi/call_params.c +++ b/coreapi/call_params.c @@ -33,6 +33,28 @@ SalMediaProto get_proto_from_call_params(const LinphoneCallParams *params) { return SalProtoRtpAvp; } +static SalStreamDir sal_dir_from_call_params_dir(LinphoneCallParamsMediaDirection cpdir) { + switch (cpdir) { + default: + case LinphoneCallParamsMediaDirectionInactive: + return SalStreamInactive; + case LinphoneCallParamsMediaDirectionSendOnly: + return SalStreamSendOnly; + case LinphoneCallParamsMediaDirectionRecvOnly: + return SalStreamRecvOnly; + case LinphoneCallParamsMediaDirectionSendRecv: + return SalStreamSendRecv; + } +} + +SalStreamDir get_audio_dir_from_call_params(const LinphoneCallParams *params) { + return sal_dir_from_call_params_dir(linphone_call_params_get_audio_direction(params)); +} + +SalStreamDir get_video_dir_from_call_params(const LinphoneCallParams *params) { + return sal_dir_from_call_params_dir(linphone_call_params_get_video_direction(params)); +} + /******************************************************************************* * Public functions * diff --git a/coreapi/call_params.h b/coreapi/call_params.h index c3362534e..8d728c22c 100644 --- a/coreapi/call_params.h +++ b/coreapi/call_params.h @@ -280,14 +280,14 @@ LINPHONE_PUBLIC LinphoneCallParamsMediaDirection linphone_call_params_get_video * @param[in] cl LinphoneCallParams object * @param[in] The audio stream direction associated with this call params. **/ -/*LINPHONE_PUBLIC void linphone_call_params_set_audio_direction(LinphoneCallParams *cp, LinphoneCallParamsMediaDirection dir);*/ +LINPHONE_PUBLIC void linphone_call_params_set_audio_direction(LinphoneCallParams *cp, LinphoneCallParamsMediaDirection dir); /** * Set the video stream direction. Only relevant for multicast * @param[in] cl LinphoneCallParams object * @param[in] The video stream direction associated with this call params. **/ -/*LINPHONE_PUBLIC void linphone_call_params_set_video_direction(LinphoneCallParams *cp, LinphoneCallParamsMediaDirection dir);*/ +LINPHONE_PUBLIC void linphone_call_params_set_video_direction(LinphoneCallParams *cp, LinphoneCallParamsMediaDirection dir); /******************************************************************************* diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index ec0dd70b6..4f8b9d7e7 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -612,6 +612,7 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * md->streams[0].rtp_port=call->media_ports[0].rtp_port; md->streams[0].rtcp_port=call->media_ports[0].rtcp_port; md->streams[0].proto=get_proto_from_call_params(call->params); + md->streams[0].dir=get_audio_dir_from_call_params(call->params); md->streams[0].type=SalAudio; if (call->params->down_ptime) md->streams[0].ptime=call->params->down_ptime; @@ -640,6 +641,7 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * md->streams[1].rtp_port=call->media_ports[1].rtp_port; md->streams[1].rtcp_port=call->media_ports[1].rtcp_port; md->streams[1].proto=md->streams[0].proto; + md->streams[1].dir=get_video_dir_from_call_params(call->params); md->streams[1].type=SalVideo; codec_hints.bandwidth_limit=0; codec_hints.max_codecs=-1; diff --git a/coreapi/private.h b/coreapi/private.h index 166448fe8..56ddf2dc8 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -298,6 +298,8 @@ LinphonePlayer *linphone_call_build_player(LinphoneCall*call); LinphoneCallParams * linphone_call_params_new(void); SalMediaProto get_proto_from_call_params(const LinphoneCallParams *params); +SalStreamDir get_audio_dir_from_call_params(const LinphoneCallParams *params); +SalStreamDir get_video_dir_from_call_params(const LinphoneCallParams *params); void linphone_auth_info_write_config(struct _LpConfig *config, LinphoneAuthInfo *obj, int pos); From b20e1de36241a7904dd8282f45152c20a7dbf33f Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 6 Feb 2015 19:05:12 +0100 Subject: [PATCH 369/496] Improve "two incoming early-media video calls" test. --- tester/video_tester.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tester/video_tester.c b/tester/video_tester.c index cb4ea132f..bd034310c 100644 --- a/tester/video_tester.c +++ b/tester/video_tester.c @@ -121,6 +121,8 @@ static void early_media_video_call_state_changed(LinphoneCore *lc, LinphoneCall case LinphoneCallIncomingReceived: params = linphone_core_create_default_call_parameters(lc); linphone_call_params_enable_video(params, TRUE); + linphone_call_params_set_audio_direction(params, LinphoneCallParamsMediaDirectionSendOnly); + linphone_call_params_set_video_direction(params, LinphoneCallParamsMediaDirectionRecvOnly); linphone_core_accept_early_media_with_params(lc, call, params); linphone_call_params_unref(params); break; @@ -258,12 +260,15 @@ static void early_media_video_during_video_call_test(void) { } static void two_incoming_early_media_video_calls_test(void) { + char *ringback_path; LinphoneCoreManager *marie; LinphoneCoreManager *pauline; LinphoneCoreManager *laure; LinphoneCallParams *marie_params; LinphoneCallParams *pauline_params; LinphoneCallParams *laure_params; + LinphoneCall *call; + const MSList *calls_list; marie = linphone_core_manager_new("marie_rc"); pauline = linphone_core_manager_new("pauline_rc"); @@ -272,6 +277,12 @@ static void two_incoming_early_media_video_calls_test(void) { pauline_params = configure_for_early_media_video_sending(pauline); laure_params = configure_for_early_media_video_sending(laure); + /* Configure early media audio to play ring during early-media and send remote ring back tone. */ + linphone_core_set_ring_during_incoming_early_media(marie->lc, TRUE); + ringback_path = ms_strdup_printf("%s/sounds/ringback.wav", liblinphone_tester_file_prefix); + linphone_core_set_remote_ringback_tone(marie->lc, ringback_path); + ms_free(ringback_path); + /* Early media video call from pauline to marie. */ CU_ASSERT_TRUE(video_call_with_params(pauline, marie, pauline_params, NULL, FALSE)); @@ -284,6 +295,22 @@ static void two_incoming_early_media_video_calls_test(void) { /* Wait for 2s. */ wait_for_three_cores(marie->lc, pauline->lc, laure->lc, 2000); + CU_ASSERT_EQUAL(linphone_core_get_calls_nb(marie->lc), 2); + if (linphone_core_get_calls_nb(marie->lc) == 2) { + calls_list = linphone_core_get_calls(marie->lc); + call = (LinphoneCall *)ms_list_nth_data(calls_list, 0); + CU_ASSERT_PTR_NOT_NULL(call); + if (call != NULL) { + LinphoneCallParams *params = linphone_call_params_copy(linphone_call_get_current_params(call)); + linphone_call_params_set_audio_direction(params, LinphoneCallParamsMediaDirectionSendRecv); + linphone_call_params_set_video_direction(params, LinphoneCallParamsMediaDirectionSendRecv); + linphone_core_accept_call_with_params(marie->lc, call, params); + + /* Wait for 5s. */ + wait_for_three_cores(marie->lc, pauline->lc, laure->lc, 5000); + } + } + linphone_core_terminate_all_calls(marie->lc); CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &marie->stat.number_of_LinphoneCallEnd, 1)); CU_ASSERT_TRUE(wait_for(marie->lc, pauline->lc, &pauline->stat.number_of_LinphoneCallEnd, 1)); From 589d3cd5402f0d9fdc8c59974683e8687319b688 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 6 Feb 2015 19:30:12 +0100 Subject: [PATCH 370/496] appnaping improvements - take a background task during the ice gatethering for incoming call - add timestamps to gtk debug window, which was required to investigate the issue. Requires up to date belle-sip --- README.macos.md | 3 +-- coreapi/bellesip_sal/sal_impl.c | 10 +++++++++ coreapi/callbacks.c | 2 ++ coreapi/linphonecore.c | 6 ++++++ coreapi/private.h | 1 + gtk/logging.c | 36 +++++++++++++++++---------------- include/sal/sal.h | 6 ++++++ 7 files changed, 45 insertions(+), 19 deletions(-) diff --git a/README.macos.md b/README.macos.md index 4028bb40a..20660a5a0 100644 --- a/README.macos.md +++ b/README.macos.md @@ -5,8 +5,7 @@ * Xcode (download from apple or using appstore application) * [Java SE](http://www.oracle.com/technetwork/java/javase/downloads/index.html) or openJDK This is required to generate a C sourcefile from SIP grammar using [antlr3](http://www.antlr3.org/) generator. - * [HomeBrew](http://brew.sh) or [Macports](http://www.macports.org/). - * [XQuartz](https://xquartz.macosforge.org) for GTK version. +* [HomeBrew](http://brew.sh) or [Macports](http://www.macports.org/). ### Dependencies diff --git a/coreapi/bellesip_sal/sal_impl.c b/coreapi/bellesip_sal/sal_impl.c index 84964ecf1..3b3c24955 100644 --- a/coreapi/bellesip_sal/sal_impl.c +++ b/coreapi/bellesip_sal/sal_impl.c @@ -1135,6 +1135,16 @@ void sal_cancel_timer(Sal *sal, belle_sip_source_t *timer) { belle_sip_main_loop_t *ml = belle_sip_stack_get_main_loop(sal->stack); belle_sip_main_loop_remove_source(ml, timer); } + +unsigned long sal_begin_background_task(const char *name, void (*max_time_reached)(void *), void *data){ + return belle_sip_begin_background_task(name, max_time_reached, data); +} + +void sal_end_background_task(unsigned long id){ + belle_sip_end_background_task(id); +} + + void sal_enable_sip_update_method(Sal *ctx,bool_t value) { ctx->enable_sip_update=value; } diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 3eacb34ea..47032e22e 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -336,6 +336,8 @@ static void call_received(SalOp *h){ linphone_core_add_call(lc,call); linphone_call_ref(call); /*prevent the call from being destroyed while we are notifying, if the user declines within the state callback */ + call->bg_task_id=sal_begin_background_task("liblinphone call notification", NULL, NULL); + if ((linphone_core_get_firewall_policy(lc) == LinphonePolicyUseIce) && (call->ice_session != NULL)) { /* Defer ringing until the end of the ICE candidates gathering process. */ ms_message("Defer ringing to gather ICE candidates"); diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 537ff51d9..923731619 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -3292,6 +3292,12 @@ void linphone_core_notify_incoming_call(LinphoneCore *lc, LinphoneCall *call){ } linphone_call_set_state(call,LinphoneCallIncomingReceived,"Incoming call"); + /*from now on, the application is aware of the call and supposed to take background task or already submitted notification to the user. + We can then drop our background task.*/ + if (call->bg_task_id!=0) { + sal_end_background_task(call->bg_task_id); + call->bg_task_id=0; + } if (call->state==LinphoneCallIncomingReceived){ /*try to be best-effort in giving real local or routable contact address for 100Rel case*/ diff --git a/coreapi/private.h b/coreapi/private.h index 56ddf2dc8..36fc09b1b 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -257,6 +257,7 @@ struct _LinphoneCall{ LinphoneCall *transfer_target;/*if this call received a transfer request, then transfer_target points to the new call created to the refer target */ int localdesc_changed;/*not a boolean, contains a mask representing changes*/ LinphonePlayer *player; + unsigned long bg_task_id; /*used to prevent device to suspend app while a call is received in background*/ 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*/ diff --git a/gtk/logging.c b/gtk/logging.c index 26027251f..c5eb883c0 100644 --- a/gtk/logging.c +++ b/gtk/logging.c @@ -164,7 +164,6 @@ static FILE *linphone_gtk_log_init() static void linphone_gtk_log_file(OrtpLogLevel lev, const char *msg) { - time_t now; FILE *outlog; outlog = linphone_gtk_log_init(); @@ -176,12 +175,11 @@ static void linphone_gtk_log_file(OrtpLogLevel lev, const char *msg) logfile_date_format in the GtkUi section of the config file, but it defaults to something compact, but yet readable. */ const char *lname="undef"; - char date[256]; /* Convert level constant to text */ switch(lev){ case ORTP_DEBUG: - lname="debug"; + lname="debug "; break; case ORTP_MESSAGE: lname="message"; @@ -190,23 +188,16 @@ static void linphone_gtk_log_file(OrtpLogLevel lev, const char *msg) lname="warning"; break; case ORTP_ERROR: - lname="error"; + lname="error "; break; case ORTP_FATAL: - lname="fatal"; + lname="fatal "; break; default: - lname="undef"; + lname="undef "; break; } - /* Get current time and format it properly */ - now = time(NULL); - strftime(date, sizeof(date), dateformat, localtime(&now)); - /* Now print out the message to the logfile. We don't flush, - maybe we should do to ensure that we have all the messages in - case of a crash (which is one of the main reasons we have a - log facility in the first place). */ - fprintf(outlog, "[%s] [%s] %s\n", date, lname, msg); + fprintf(outlog, "[%s] %s\n", lname, msg); fflush(outlog); } } @@ -335,13 +326,24 @@ gboolean linphone_gtk_check_logs(){ * Called from any linphone thread. */ void linphone_gtk_log_push(OrtpLogLevel lev, const char *fmt, va_list args){ - gchar *msg=g_strdup_vprintf(fmt,args); LinphoneGtkLog *lgl=g_new(LinphoneGtkLog,1); + gchar *msg=g_strdup_vprintf(fmt,args); + gchar *dated_msg; + struct timeval tp; + struct tm *lt; + time_t tt; + + ortp_gettimeofday(&tp, NULL); + tt = (time_t)tp.tv_sec; + lt = localtime((const time_t*)&tt); + dated_msg=g_strdup_printf("%i-%.2i-%.2i %.2i:%.2i:%.2i:%.3i %s", + 1900 + lt->tm_year, lt->tm_mon + 1, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec, (int)(tp.tv_usec / 1000), msg); + g_free(msg); lgl->lev=lev; - lgl->msg=msg; + lgl->msg=dated_msg; + linphone_gtk_log_file(lev, dated_msg); g_static_mutex_lock(&log_mutex); log_queue=g_list_append(log_queue,lgl); - linphone_gtk_log_file(lev, msg); g_static_mutex_unlock(&log_mutex); } diff --git a/include/sal/sal.h b/include/sal/sal.h index 666671674..4eedb23ab 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -811,4 +811,10 @@ int sal_lines_get_value(const char *data, const char *key, char *value, size_t v belle_sip_stack_t *sal_get_belle_sip_stack(Sal *sal); char* sal_op_get_public_uri(SalOp *sal); + +unsigned long sal_begin_background_task(const char *name, void (*max_time_reached)(void *), void *data); +void sal_end_background_task(unsigned long id); + #endif + + From 72bf8d52897df82fda2039e935c80054a9eb65fe Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 7 Feb 2015 11:44:09 +0100 Subject: [PATCH 371/496] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 625547016..0598ca6db 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 625547016a09f0bde3a1ff6b35e29d71506174d0 +Subproject commit 0598ca6db0c1e32bf11f6382a204c78460416ce7 From 7b62f3313d0e3a876a61689cfb6ec2e04c4b0cc5 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 7 Feb 2015 13:23:33 +0100 Subject: [PATCH 372/496] repair linphone, broken by previous commit implementing stream directions. --- coreapi/call_params.c | 23 ++++++++++++++++++++--- coreapi/linphonecall.c | 7 +++++++ coreapi/private.h | 3 +++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/coreapi/call_params.c b/coreapi/call_params.c index b2eea131a..39412b99e 100644 --- a/coreapi/call_params.c +++ b/coreapi/call_params.c @@ -33,9 +33,8 @@ SalMediaProto get_proto_from_call_params(const LinphoneCallParams *params) { return SalProtoRtpAvp; } -static SalStreamDir sal_dir_from_call_params_dir(LinphoneCallParamsMediaDirection cpdir) { +SalStreamDir sal_dir_from_call_params_dir(LinphoneCallParamsMediaDirection cpdir) { switch (cpdir) { - default: case LinphoneCallParamsMediaDirectionInactive: return SalStreamInactive; case LinphoneCallParamsMediaDirectionSendOnly: @@ -47,6 +46,19 @@ static SalStreamDir sal_dir_from_call_params_dir(LinphoneCallParamsMediaDirectio } } +LinphoneCallParamsMediaDirection media_direction_from_sal_stream_dir(SalStreamDir dir){ + switch (dir) { + case SalStreamInactive: + return LinphoneCallParamsMediaDirectionInactive; + case SalStreamSendOnly: + return LinphoneCallParamsMediaDirectionSendOnly; + case SalStreamRecvOnly: + return LinphoneCallParamsMediaDirectionRecvOnly; + case SalStreamSendRecv: + return LinphoneCallParamsMediaDirectionSendRecv; + } +} + SalStreamDir get_audio_dir_from_call_params(const LinphoneCallParams *params) { return sal_dir_from_call_params_dir(linphone_call_params_get_audio_direction(params)); } @@ -91,6 +103,8 @@ void linphone_call_params_enable_low_bandwidth(LinphoneCallParams *cp, bool_t en void linphone_call_params_enable_video(LinphoneCallParams *cp, bool_t enabled){ cp->has_video=enabled; + if (cp->video_dir==LinphoneCallParamsMediaDirectionInactive) + cp->video_dir=LinphoneCallParamsMediaDirectionSendRecv; } const char *linphone_call_params_get_custom_header(const LinphoneCallParams *params, const char *header_name){ @@ -229,7 +243,10 @@ static void _linphone_call_params_destroy(LinphoneCallParams *cp){ } LinphoneCallParams * linphone_call_params_new(void) { - return belle_sip_object_new(LinphoneCallParams); + LinphoneCallParams *cp=belle_sip_object_new(LinphoneCallParams); + cp->audio_dir=LinphoneCallParamsMediaDirectionSendRecv; + cp->video_dir=LinphoneCallParamsMediaDirectionSendRecv; + return cp; } /* DEPRECATED */ diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 4f8b9d7e7..8ff489c25 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -1384,6 +1384,7 @@ void linphone_call_unref(LinphoneCall *obj){ * Returns current parameters associated to the call. **/ const LinphoneCallParams * linphone_call_get_current_params(LinphoneCall *call){ + SalMediaDescription *md=call->resultdesc; #ifdef VIDEO_ENABLED VideoStream *vstream; #endif @@ -1419,6 +1420,12 @@ const LinphoneCallParams * linphone_call_get_current_params(LinphoneCall *call){ } else { call->current_params->avpf_rr_interval = 0; } + if (md){ + SalStreamDescription *sd=sal_media_description_find_best_stream(md,SalAudio); + call->current_params->audio_dir=sd ? media_direction_from_sal_stream_dir(sd->dir) : LinphoneCallParamsMediaDirectionInactive; + sd=sal_media_description_find_best_stream(md,SalVideo); + call->current_params->video_dir=sd ? media_direction_from_sal_stream_dir(sd->dir) : LinphoneCallParamsMediaDirectionInactive; + } return call->current_params; } diff --git a/coreapi/private.h b/coreapi/private.h index 36fc09b1b..0cdc16dc7 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -1105,6 +1105,9 @@ void linphone_core_notify_log_collection_upload_progress_indication(LinphoneCore void set_mic_gain_db(AudioStream *st, float gain); void set_playback_gain_db(AudioStream *st, float gain); +LinphoneCallParamsMediaDirection media_direction_from_sal_stream_dir(SalStreamDir dir); +SalStreamDir sal_dir_from_call_params_dir(LinphoneCallParamsMediaDirection cpdir); + #ifdef ANDROID void linphone_core_wifi_lock_acquire(LinphoneCore *lc); void linphone_core_wifi_lock_release(LinphoneCore *lc); From 5dbc66938c2e4eb97fd1e5ca1576a1a241ae6378 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 7 Feb 2015 13:30:30 +0100 Subject: [PATCH 373/496] rename LinphoneCallParamsMediaDirection into LinphoneMediaDirection, as it has no reason to be attached to LinphoneCallParams and could be re-used in other contexts. --- coreapi/call_params.c | 38 ++++++++++++++++++++------------------ coreapi/call_params.h | 20 ++++++++++---------- coreapi/linphonecall.c | 4 ++-- coreapi/linphonecore.c | 4 ++-- coreapi/private.h | 8 ++++---- tester/video_tester.c | 8 ++++---- 6 files changed, 42 insertions(+), 40 deletions(-) diff --git a/coreapi/call_params.c b/coreapi/call_params.c index 39412b99e..a6731f28b 100644 --- a/coreapi/call_params.c +++ b/coreapi/call_params.c @@ -33,30 +33,32 @@ SalMediaProto get_proto_from_call_params(const LinphoneCallParams *params) { return SalProtoRtpAvp; } -SalStreamDir sal_dir_from_call_params_dir(LinphoneCallParamsMediaDirection cpdir) { +SalStreamDir sal_dir_from_call_params_dir(LinphoneMediaDirection cpdir) { switch (cpdir) { - case LinphoneCallParamsMediaDirectionInactive: + case LinphoneMediaDirectionInactive: return SalStreamInactive; - case LinphoneCallParamsMediaDirectionSendOnly: + case LinphoneMediaDirectionSendOnly: return SalStreamSendOnly; - case LinphoneCallParamsMediaDirectionRecvOnly: + case LinphoneMediaDirectionRecvOnly: return SalStreamRecvOnly; - case LinphoneCallParamsMediaDirectionSendRecv: + case LinphoneMediaDirectionSendRecv: return SalStreamSendRecv; } + return SalStreamSendRecv; } -LinphoneCallParamsMediaDirection media_direction_from_sal_stream_dir(SalStreamDir dir){ +LinphoneMediaDirection media_direction_from_sal_stream_dir(SalStreamDir dir){ switch (dir) { case SalStreamInactive: - return LinphoneCallParamsMediaDirectionInactive; + return LinphoneMediaDirectionInactive; case SalStreamSendOnly: - return LinphoneCallParamsMediaDirectionSendOnly; + return LinphoneMediaDirectionSendOnly; case SalStreamRecvOnly: - return LinphoneCallParamsMediaDirectionRecvOnly; + return LinphoneMediaDirectionRecvOnly; case SalStreamSendRecv: - return LinphoneCallParamsMediaDirectionSendRecv; + return LinphoneMediaDirectionSendRecv; } + return LinphoneMediaDirectionSendRecv; } SalStreamDir get_audio_dir_from_call_params(const LinphoneCallParams *params) { @@ -103,8 +105,8 @@ void linphone_call_params_enable_low_bandwidth(LinphoneCallParams *cp, bool_t en void linphone_call_params_enable_video(LinphoneCallParams *cp, bool_t enabled){ cp->has_video=enabled; - if (cp->video_dir==LinphoneCallParamsMediaDirectionInactive) - cp->video_dir=LinphoneCallParamsMediaDirectionSendRecv; + if (cp->video_dir==LinphoneMediaDirectionInactive) + cp->video_dir=LinphoneMediaDirectionSendRecv; } const char *linphone_call_params_get_custom_header(const LinphoneCallParams *params, const char *header_name){ @@ -195,19 +197,19 @@ bool_t linphone_call_params_video_enabled(const LinphoneCallParams *cp){ return cp->has_video; } -LinphoneCallParamsMediaDirection linphone_call_params_get_audio_direction(const LinphoneCallParams *cp) { +LinphoneMediaDirection linphone_call_params_get_audio_direction(const LinphoneCallParams *cp) { return cp->audio_dir; } -LinphoneCallParamsMediaDirection linphone_call_params_get_video_direction(const LinphoneCallParams *cp) { +LinphoneMediaDirection linphone_call_params_get_video_direction(const LinphoneCallParams *cp) { return cp->video_dir; } -void linphone_call_params_set_audio_direction(LinphoneCallParams *cp,LinphoneCallParamsMediaDirection dir) { +void linphone_call_params_set_audio_direction(LinphoneCallParams *cp,LinphoneMediaDirection dir) { cp->audio_dir=dir; } -void linphone_call_params_set_video_direction(LinphoneCallParams *cp,LinphoneCallParamsMediaDirection dir) { +void linphone_call_params_set_video_direction(LinphoneCallParams *cp,LinphoneMediaDirection dir) { cp->video_dir=dir; } @@ -244,8 +246,8 @@ static void _linphone_call_params_destroy(LinphoneCallParams *cp){ LinphoneCallParams * linphone_call_params_new(void) { LinphoneCallParams *cp=belle_sip_object_new(LinphoneCallParams); - cp->audio_dir=LinphoneCallParamsMediaDirectionSendRecv; - cp->video_dir=LinphoneCallParamsMediaDirectionSendRecv; + cp->audio_dir=LinphoneMediaDirectionSendRecv; + cp->video_dir=LinphoneMediaDirectionSendRecv; return cp; } diff --git a/coreapi/call_params.h b/coreapi/call_params.h index 8d728c22c..beecc9791 100644 --- a/coreapi/call_params.h +++ b/coreapi/call_params.h @@ -33,17 +33,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** * Indicates for a given media the stream direction * */ -enum _LinphoneCallParamsMediaDirection { - LinphoneCallParamsMediaDirectionInactive, /** No active media not supported yet*/ - LinphoneCallParamsMediaDirectionSendOnly, /** Send only mode*/ - LinphoneCallParamsMediaDirectionRecvOnly, /** recv only mode*/ - LinphoneCallParamsMediaDirectionSendRecv, /*send receive mode not supported yet*/ +enum _LinphoneMediaDirection { + LinphoneMediaDirectionInactive, /** No active media not supported yet*/ + LinphoneMediaDirectionSendOnly, /** Send only mode*/ + LinphoneMediaDirectionRecvOnly, /** recv only mode*/ + LinphoneMediaDirectionSendRecv, /*send receive mode not supported yet*/ }; /** * Typedef for enum **/ -typedef enum _LinphoneCallParamsMediaDirection LinphoneCallParamsMediaDirection; +typedef enum _LinphoneMediaDirection LinphoneMediaDirection; /** * Private structure definition for LinphoneCallParams. @@ -266,28 +266,28 @@ LINPHONE_PUBLIC bool_t linphone_call_params_video_enabled(const LinphoneCallPara * @param[in] cl LinphoneCallParams object * @return The audio stream direction associated with the call params. **/ -LINPHONE_PUBLIC LinphoneCallParamsMediaDirection linphone_call_params_get_audio_direction(const LinphoneCallParams *cp); +LINPHONE_PUBLIC LinphoneMediaDirection linphone_call_params_get_audio_direction(const LinphoneCallParams *cp); /** * Get the video stream direction. * @param[in] cl LinphoneCallParams object * @return The video stream direction associated with the call params. **/ -LINPHONE_PUBLIC LinphoneCallParamsMediaDirection linphone_call_params_get_video_direction(const LinphoneCallParams *cp); +LINPHONE_PUBLIC LinphoneMediaDirection linphone_call_params_get_video_direction(const LinphoneCallParams *cp); /** * Set the audio stream direction. Only relevant for multicast * @param[in] cl LinphoneCallParams object * @param[in] The audio stream direction associated with this call params. **/ -LINPHONE_PUBLIC void linphone_call_params_set_audio_direction(LinphoneCallParams *cp, LinphoneCallParamsMediaDirection dir); +LINPHONE_PUBLIC void linphone_call_params_set_audio_direction(LinphoneCallParams *cp, LinphoneMediaDirection dir); /** * Set the video stream direction. Only relevant for multicast * @param[in] cl LinphoneCallParams object * @param[in] The video stream direction associated with this call params. **/ -LINPHONE_PUBLIC void linphone_call_params_set_video_direction(LinphoneCallParams *cp, LinphoneCallParamsMediaDirection dir); +LINPHONE_PUBLIC void linphone_call_params_set_video_direction(LinphoneCallParams *cp, LinphoneMediaDirection dir); /******************************************************************************* diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 8ff489c25..b6b6a3230 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -1422,9 +1422,9 @@ const LinphoneCallParams * linphone_call_get_current_params(LinphoneCall *call){ } if (md){ SalStreamDescription *sd=sal_media_description_find_best_stream(md,SalAudio); - call->current_params->audio_dir=sd ? media_direction_from_sal_stream_dir(sd->dir) : LinphoneCallParamsMediaDirectionInactive; + call->current_params->audio_dir=sd ? media_direction_from_sal_stream_dir(sd->dir) : LinphoneMediaDirectionInactive; sd=sal_media_description_find_best_stream(md,SalVideo); - call->current_params->video_dir=sd ? media_direction_from_sal_stream_dir(sd->dir) : LinphoneCallParamsMediaDirectionInactive; + call->current_params->video_dir=sd ? media_direction_from_sal_stream_dir(sd->dir) : LinphoneMediaDirectionInactive; } return call->current_params; diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 923731619..bcf017da0 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -6907,8 +6907,8 @@ void linphone_core_init_default_params(LinphoneCore*lc, LinphoneCallParams *para params->in_conference=FALSE; params->privacy=LinphonePrivacyDefault; params->avpf_enabled=FALSE; - params->audio_dir=LinphoneCallParamsMediaDirectionSendRecv; - params->video_dir=LinphoneCallParamsMediaDirectionSendRecv; + params->audio_dir=LinphoneMediaDirectionSendRecv; + params->video_dir=LinphoneMediaDirectionSendRecv; params->real_early_media=lp_config_get_int(lc->config,"misc","real_early_media",FALSE); } diff --git a/coreapi/private.h b/coreapi/private.h index 0cdc16dc7..15083943e 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -108,8 +108,8 @@ struct _LinphoneCallParams{ 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; - LinphoneCallParamsMediaDirection audio_dir; - LinphoneCallParamsMediaDirection video_dir; + LinphoneMediaDirection audio_dir; + LinphoneMediaDirection video_dir; }; @@ -1105,8 +1105,8 @@ void linphone_core_notify_log_collection_upload_progress_indication(LinphoneCore void set_mic_gain_db(AudioStream *st, float gain); void set_playback_gain_db(AudioStream *st, float gain); -LinphoneCallParamsMediaDirection media_direction_from_sal_stream_dir(SalStreamDir dir); -SalStreamDir sal_dir_from_call_params_dir(LinphoneCallParamsMediaDirection cpdir); +LinphoneMediaDirection media_direction_from_sal_stream_dir(SalStreamDir dir); +SalStreamDir sal_dir_from_call_params_dir(LinphoneMediaDirection cpdir); #ifdef ANDROID void linphone_core_wifi_lock_acquire(LinphoneCore *lc); diff --git a/tester/video_tester.c b/tester/video_tester.c index bd034310c..c1807f3fe 100644 --- a/tester/video_tester.c +++ b/tester/video_tester.c @@ -121,8 +121,8 @@ static void early_media_video_call_state_changed(LinphoneCore *lc, LinphoneCall case LinphoneCallIncomingReceived: params = linphone_core_create_default_call_parameters(lc); linphone_call_params_enable_video(params, TRUE); - linphone_call_params_set_audio_direction(params, LinphoneCallParamsMediaDirectionSendOnly); - linphone_call_params_set_video_direction(params, LinphoneCallParamsMediaDirectionRecvOnly); + linphone_call_params_set_audio_direction(params, LinphoneMediaDirectionSendOnly); + linphone_call_params_set_video_direction(params, LinphoneMediaDirectionRecvOnly); linphone_core_accept_early_media_with_params(lc, call, params); linphone_call_params_unref(params); break; @@ -302,8 +302,8 @@ static void two_incoming_early_media_video_calls_test(void) { CU_ASSERT_PTR_NOT_NULL(call); if (call != NULL) { LinphoneCallParams *params = linphone_call_params_copy(linphone_call_get_current_params(call)); - linphone_call_params_set_audio_direction(params, LinphoneCallParamsMediaDirectionSendRecv); - linphone_call_params_set_video_direction(params, LinphoneCallParamsMediaDirectionSendRecv); + linphone_call_params_set_audio_direction(params, LinphoneMediaDirectionSendRecv); + linphone_call_params_set_video_direction(params, LinphoneMediaDirectionSendRecv); linphone_core_accept_call_with_params(marie->lc, call, params); /* Wait for 5s. */ From e4cd4380070e47a8e7caf63530bead5128ba2f88 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 7 Feb 2015 13:44:19 +0100 Subject: [PATCH 374/496] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 0598ca6db..73338e9d9 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 0598ca6db0c1e32bf11f6382a204c78460416ce7 +Subproject commit 73338e9d908f105683f45f86a3003c9fee60da5c From 70e66a5b433fbb62cfdc94ef6ed829cae0ad7ef6 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 7 Feb 2015 18:20:56 +0100 Subject: [PATCH 375/496] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 73338e9d9..a92d90999 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 73338e9d908f105683f45f86a3003c9fee60da5c +Subproject commit a92d909993d0f4fc3e8656e4f5ff4f51a4cfe8ca From b97cb51e58a18a62d87629296ebe02d3abad7d18 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 7 Feb 2015 23:57:27 +0100 Subject: [PATCH 376/496] repair liblinphone again --- coreapi/call_params.c | 2 +- coreapi/linphonecore.c | 2 +- mediastreamer2 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/coreapi/call_params.c b/coreapi/call_params.c index a6731f28b..8acc33b19 100644 --- a/coreapi/call_params.c +++ b/coreapi/call_params.c @@ -105,7 +105,7 @@ void linphone_call_params_enable_low_bandwidth(LinphoneCallParams *cp, bool_t en void linphone_call_params_enable_video(LinphoneCallParams *cp, bool_t enabled){ cp->has_video=enabled; - if (cp->video_dir==LinphoneMediaDirectionInactive) + if (enabled && cp->video_dir==LinphoneMediaDirectionInactive) cp->video_dir=LinphoneMediaDirectionSendRecv; } diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index bcf017da0..848f25761 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -3587,7 +3587,7 @@ int _linphone_core_accept_call_update(LinphoneCore *lc, LinphoneCall *call, cons return 0; } if (params==NULL){ - call->params->has_video=lc->video_policy.automatically_accept || call->current_params->has_video; + linphone_call_params_enable_video(call->params, lc->video_policy.automatically_accept || call->current_params->has_video); }else linphone_call_set_new_params(call,params); diff --git a/mediastreamer2 b/mediastreamer2 index a92d90999..ac4fc4a44 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit a92d909993d0f4fc3e8656e4f5ff4f51a4cfe8ca +Subproject commit ac4fc4a447e73e50a044c2c9113ea00f72dd441a From 5f7da2c9cad262b2f37d6027776f3fa9a647d0ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Mon, 9 Feb 2015 16:55:56 +0100 Subject: [PATCH 377/496] Fix bug #1987: crash when pulseaudio is down --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index ac4fc4a44..87329a0a0 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit ac4fc4a447e73e50a044c2c9113ea00f72dd441a +Subproject commit 87329a0a0fc3dedd29885ff892b2c79ea66be833 From 5a79ebff2e211823ef3d9da2c1524efcee974e97 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 9 Feb 2015 17:35:23 +0100 Subject: [PATCH 378/496] disable advanced presence test for now --- tester/presence_tester.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/presence_tester.c b/tester/presence_tester.c index 871aacf4f..3b711e52e 100644 --- a/tester/presence_tester.c +++ b/tester/presence_tester.c @@ -347,7 +347,7 @@ static void presence_information(void) { linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } -#define USE_PRESENCE_SERVER 1 +#define USE_PRESENCE_SERVER 0 #if USE_PRESENCE_SERVER static void test_subscribe_notify_publish(void) { From cd00cc8355afcca86926c1b5beb68ea0cae121ff Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Mon, 9 Feb 2015 16:57:14 +0100 Subject: [PATCH 379/496] Add LinphoneCore.setPrimaryContact() with address --- coreapi/linphonecore_jni.cc | 12 ++++++++++++ java/common/org/linphone/core/LinphoneCore.java | 10 ++++++++++ java/common/org/linphone/core/VideoSize.java | 8 ++++++++ java/impl/org/linphone/core/LinphoneCoreImpl.java | 10 ++++++++++ 4 files changed, 40 insertions(+) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index b4a929a07..8448e56fc 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -1220,6 +1220,18 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setChatDatabasePath(JNIE env->ReleaseStringUTFChars(jpath, path); } +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setPrimaryContact2(JNIEnv* env, jobject thiz, jlong lc, jstring jcontact) { + const char* contact = env->GetStringUTFChars(jcontact, NULL); + linphone_core_set_primary_contact((LinphoneCore*)lc, contact); + env->ReleaseStringUTFChars(jcontact, contact); +} + +extern "C" jstring Java_org_linphone_core_LinphoneCoreImpl_getPrimaryContact(JNIEnv* env, jobject thiz, jlong lc) { + LinphoneAddress* identity = linphone_core_get_primary_contact_parsed((LinphoneCore*)lc); + return identity ? env->NewStringUTF(linphone_address_as_string(identity)) : NULL; +} + + extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setPrimaryContact(JNIEnv* env, jobject thiz, jlong lc, jstring jdisplayname, jstring jusername) { const char* displayname = jdisplayname ? env->GetStringUTFChars(jdisplayname, NULL) : NULL; const char* username = jusername ? env->GetStringUTFChars(jusername, NULL) : NULL; diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 98e9226eb..7c23cb9bb 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -1576,6 +1576,16 @@ public interface LinphoneCore { **/ void setMicrophoneGain(float gain); + /** + * Set address to use if no LinphoneProxyConfig configured + */ + void setPrimaryContact(String address); + + /** + * Returns the address used if no LinphoneProxyConfig configured + */ + String getPrimaryContact(); + /** * Set username and display name to use if no LinphoneProxyConfig configured */ diff --git a/java/common/org/linphone/core/VideoSize.java b/java/common/org/linphone/core/VideoSize.java index 6bba95e74..7685e20a0 100644 --- a/java/common/org/linphone/core/VideoSize.java +++ b/java/common/org/linphone/core/VideoSize.java @@ -26,6 +26,13 @@ public final class VideoSize { public static final int CIF = 1; public static final int HVGA = 2; public static final int QVGA = 3; + public static final VideoSize VIDEO_SIZE_QCIF = new VideoSize(176,144); + public static final VideoSize VIDEO_SIZE_CIF = new VideoSize(352,288); + public static final VideoSize VIDEO_SIZE_QVGA = new VideoSize(320,240); + public static final VideoSize VIDEO_SIZE_HVGA = new VideoSize(320,480); + public static final VideoSize VIDEO_SIZE_VGA = new VideoSize(640,480); + public static final VideoSize VIDEO_SIZE_720P = new VideoSize(1280,720); + public static final VideoSize VIDEO_SIZE_1020P = new VideoSize(1920,1080); public int width; public int height; @@ -36,6 +43,7 @@ public final class VideoSize { this.height = height; } + @Deprecated public static final VideoSize createStandard(int code, boolean inverted) { switch (code) { case QCIF: diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index fd1796102..2773189e8 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -150,6 +150,8 @@ public class LinphoneCoreImpl implements LinphoneCore { private native void setVideoPortRange(long nativePtr, int minPort, int maxPort); private native void setIncomingTimeout(long nativePtr, int timeout); private native void setInCallTimeout(long nativePtr, int timeout); + private native void setPrimaryContact2(long nativePtr, String contact); + private native String getPrimaryContact(long nativePtr); private native void setPrimaryContact(long nativePtr, String displayName, String username); private native String getPrimaryContactUsername(long nativePtr); private native String getPrimaryContactDisplayName(long nativePtr); @@ -977,6 +979,14 @@ public class LinphoneCoreImpl implements LinphoneCore { setMicrophoneGain(nativePtr, gain); } + public synchronized void setPrimaryContact(String address) { + setPrimaryContact2(nativePtr, address); + } + + public synchronized String getPrimaryContact() { + return getPrimaryContact(nativePtr); + } + public synchronized void setPrimaryContact(String displayName, String username) { setPrimaryContact(nativePtr, displayName, username); } From a27e9ecbbc756cc3a4604900d14effe2a22ba139 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 10 Feb 2015 12:15:03 +0100 Subject: [PATCH 380/496] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 87329a0a0..b044ee467 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 87329a0a0fc3dedd29885ff892b2c79ea66be833 +Subproject commit b044ee4679348d68142ec0f753dce5f4caeaaf6d From f248cde16a94b5d7ddf8019c7a5d2542932edaca Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 10 Feb 2015 14:04:20 +0100 Subject: [PATCH 381/496] Disable ms_audio_diff on ios simulator too because it locks the main loop --- tester/call_tester.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 52dd68da1..1ec6d71f6 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2096,8 +2096,6 @@ static void call_with_file_player(void) { LinphonePlayer *player; 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); @@ -2129,16 +2127,22 @@ static void call_with_file_player(void) { 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)); -#ifndef __arm__ - CU_ASSERT_TRUE(ms_audio_diff(hellopath,recordpath,&similar,NULL,NULL)==0); - CU_ASSERT_TRUE(similar>threshold); - CU_ASSERT_TRUE(similar<=1.0); - if(similar > threshold && similar <=1.0) { - remove(recordpath); + /*cannot run on iphone simulator because locks main loop beyond permitted time (should run + on another thread) */ +#if !defined(__arm__) && !defined(__arm64__) && TARGET_IPHONE_SIMULATOR + { + double similar; + const double threshold = 0.9; + CU_ASSERT_TRUE(ms_audio_diff(hellopath,recordpath,&similar,NULL,NULL)==0); + CU_ASSERT_TRUE(similar>threshold); + CU_ASSERT_TRUE(similar<=1.0); + if(similar > threshold && similar <=1.0) { + remove(recordpath); + } } #else remove(recordpath); -#endif +#endif linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); ms_free(recordpath); @@ -3447,9 +3451,9 @@ static void call_with_paused_no_sdp_on_resume() { wait_for_until(pauline->lc, marie->lc, NULL, 5, 2000); ms_message("== Call paused, marie call: %p ==", call_marie); - + linphone_core_enable_sdp_200_ack(marie->lc,TRUE); - + linphone_core_resume_call(marie->lc,call_marie); CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,2)); @@ -3478,13 +3482,13 @@ static void call_with_generic_cn(void) { LinphoneCall *pauline_call; char *audio_file_with_silence=ms_strdup_printf("%s/%s",liblinphone_tester_file_prefix,"sounds/ahbahouaismaisbon.wav"); char *recorded_file=ms_strdup_printf("%s/%s",liblinphone_tester_writable_dir_prefix,"result.wav"); - + 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"); - + remove(recorded_file); linphone_core_use_files(marie->lc,TRUE); @@ -3501,7 +3505,7 @@ static void call_with_generic_cn(void) { const rtp_stats_t *rtps; struct stat stbuf; int err; - + wait_for_until(marie->lc, pauline->lc, NULL, 0, 8000); rtps=rtp_session_get_stats(pauline_call->audiostream->ms.sessions.rtp_session); CU_ASSERT_TRUE(rtps->packet_recv<=300 && rtps->packet_recv>=200); From e9f89d162ffd44c8e16e0b9f547db39885c6697e Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 10 Feb 2015 15:11:32 +0100 Subject: [PATCH 382/496] do not unregister event queue while msticker is still running with the RtpSession. The stream must be first stopped, then queue can be destroyed safely --- coreapi/linphonecall.c | 14 ++++++-------- coreapi/linphonecore.c | 1 + 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index b6b6a3230..1535dc957 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2763,10 +2763,6 @@ static void linphone_call_stop_audio_stream(LinphoneCall *call) { if (call->audiostream!=NULL) { linphone_reporting_update_media_info(call, LINPHONE_CALL_STATS_AUDIO); media_stream_reclaim_sessions(&call->audiostream->ms,&call->sessions[0]); - rtp_session_unregister_event_queue(call->audiostream->ms.sessions.rtp_session,call->audiostream_app_evq); - ortp_ev_queue_flush(call->audiostream_app_evq); - ortp_ev_queue_destroy(call->audiostream_app_evq); - call->audiostream_app_evq=NULL; if (call->audiostream->ec){ const char *state_str=NULL; @@ -2782,6 +2778,9 @@ static void linphone_call_stop_audio_stream(LinphoneCall *call) { linphone_call_remove_from_conf(call); } audio_stream_stop(call->audiostream); + ortp_ev_queue_flush(call->audiostream_app_evq); + ortp_ev_queue_destroy(call->audiostream_app_evq); + call->audiostream_app_evq=NULL; call->audiostream=NULL; call->current_params->audio_codec = NULL; } @@ -2792,13 +2791,12 @@ static void linphone_call_stop_video_stream(LinphoneCall *call) { if (call->videostream!=NULL){ linphone_reporting_update_media_info(call, LINPHONE_CALL_STATS_VIDEO); media_stream_reclaim_sessions(&call->videostream->ms,&call->sessions[1]); - rtp_session_unregister_event_queue(call->videostream->ms.sessions.rtp_session,call->videostream_app_evq); - ortp_ev_queue_flush(call->videostream_app_evq); - ortp_ev_queue_destroy(call->videostream_app_evq); - call->videostream_app_evq=NULL; linphone_call_log_fill_stats(call->log,(MediaStream*)call->videostream); video_stream_stop(call->videostream); call->videostream=NULL; + ortp_ev_queue_flush(call->videostream_app_evq); + ortp_ev_queue_destroy(call->videostream_app_evq); + call->videostream_app_evq=NULL; call->current_params->video_codec = NULL; } #endif diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 848f25761..ffa2a6b32 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1075,6 +1075,7 @@ static bool_t get_codec(LinphoneCore *lc, SalStreamType type, int index, Payload pt->mime_type=ortp_strdup(mime); pt->clock_rate=rate; pt->channels=channels; + payload_type_set_number(pt,-1); /*dynamic assignment*/ payload_type_set_recv_fmtp(pt,fmtp); *default_list=ms_list_append(*default_list, pt); } From e04eaf9b2f3c8875605ce86fda12ed9ac7da6da1 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 10 Feb 2015 15:48:36 +0100 Subject: [PATCH 383/496] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index b044ee467..0df389ab8 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit b044ee4679348d68142ec0f753dce5f4caeaaf6d +Subproject commit 0df389ab84246c9b1135cf9f3379fca528e47983 From b305c8861301675d82d3e92743e20e1a0e102fb7 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 10 Feb 2015 16:09:02 +0100 Subject: [PATCH 384/496] Fix Python unit tests. --- tools/python/unittests/test_message.py | 6 ++++++ tools/python/unittests/test_register.py | 22 ++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/tools/python/unittests/test_message.py b/tools/python/unittests/test_message.py index 8cfb05c87..1cc60c32d 100644 --- a/tools/python/unittests/test_message.py +++ b/tools/python/unittests/test_message.py @@ -147,6 +147,8 @@ class TestMessage: assert_equals(filecmp.cmp(send_filepath, receive_filepath, shallow=False), True) if os.path.exists(receive_filepath): os.remove(receive_filepath) + marie.stop() + pauline.stop() def test_small_file_transfer_message(self): send_buf = "small file" @@ -183,6 +185,8 @@ class TestMessage: assert_equals(pauline.stats.number_of_LinphoneMessageDelivered, 1) assert_equals(marie.stats.number_of_LinphoneMessageExtBodyReceived, 1) assert_equals(send_buf, marie.stats.last_received_chat_message.user_data) + marie.stop() + pauline.stop() def test_file_transfer_message_upload_cancelled(self): send_buf = "big file" @@ -214,3 +218,5 @@ class TestMessage: assert_equals(CoreManager.wait_for(pauline, marie, lambda pauline, marie: pauline.stats.number_of_LinphoneMessageNotDelivered == 1), True) assert_equals(pauline.stats.number_of_LinphoneMessageNotDelivered, 1) assert_equals(marie.stats.number_of_LinphoneMessageExtBodyReceived, 0) + marie.stop() + pauline.stop() diff --git a/tools/python/unittests/test_register.py b/tools/python/unittests/test_register.py index abfa6fa17..03a5d2e05 100644 --- a/tools/python/unittests/test_register.py +++ b/tools/python/unittests/test_register.py @@ -81,6 +81,7 @@ class TestRegister: cm = RegisterCoreManager() cm.register_with_refresh(False, None, None) assert_equals(cm.stats.number_of_auth_info_requested, 0) + cm.stop() def test_simple_unregister(self): cm = RegisterCoreManager() @@ -93,18 +94,22 @@ class TestRegister: pc.register_enabled = False pc.done() assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationCleared == 1), True) + cm.stop() def test_simple_tcp_register(self): cm = RegisterCoreManager() cm.register_with_refresh(False, test_domain, "sip:{route};transport=tcp".format(route=test_route)) + cm.stop() def test_simple_tcp_register_compatibility_mode(self): cm = RegisterCoreManager() cm.register_with_refresh(False, test_domain, "sip:{route}".format(route=test_route), transport=linphone.SipTransports(0, 5070, 0, 0)) + cm.stop() def test_simple_tls_register(self): cm = RegisterCoreManager() cm.register_with_refresh(False, test_domain, "sip:{route};transport=tls".format(route=test_route)) + cm.stop() def test_tls_register_with_alt_name(self): cm = CoreManager('pauline_alt_rc', False) @@ -112,6 +117,7 @@ class TestRegister: cm.lc.refresh_registers() assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationOk == 1), True) assert_equals(cm.stats.number_of_LinphoneRegistrationFailed, 0) + cm.stop() def test_tls_wildcard_register(self): cm = CoreManager('pauline_wild_rc', False) @@ -119,6 +125,7 @@ class TestRegister: cm.lc.refresh_registers() assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationOk == 2), True) assert_equals(cm.stats.number_of_LinphoneRegistrationFailed, 0) + cm.stop() def test_tls_certificate_failure(self): cm = CoreManager('pauline_rc', False) @@ -132,6 +139,7 @@ class TestRegister: cm.lc.refresh_registers() assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationOk == 1), True) assert_equals(cm.stats.number_of_LinphoneRegistrationFailed, 2) + cm.stop() def test_tls_with_non_tls_server(self): cm = CoreManager('marie_rc', False) @@ -145,6 +153,7 @@ class TestRegister: pc.server_addr = "sip:{domain}:{port};transport=tls".format(domain=addr.domain, port=port) pc.done() assert_equals(CoreManager.wait_for_until(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationFailed == 1, 5000), True) + cm.stop() def test_simple_authenticated_register(self): cm = RegisterCoreManager() @@ -152,36 +161,40 @@ class TestRegister: cm.lc.add_auth_info(info) cm.register_with_refresh(False, auth_domain, "sip:{route}".format(route=test_route)) assert_equals(cm.stats.number_of_auth_info_requested, 0) + cm.stop() def test_digest_auth_without_initial_credentials(self): cm = RegisterCoreManager(with_auth=True) cm.register_with_refresh(False, auth_domain, "sip:{route}".format(route=test_route)) assert_equals(cm.stats.number_of_auth_info_requested, 1) + cm.stop() def test_authenticated_register_with_late_credentials(self): cm = RegisterCoreManager() cm.register_with_refresh(False, auth_domain, "sip:{route}".format(route=test_route), True, linphone.SipTransports(5070, 5070, 5071, 0)) assert_equals(cm.stats.number_of_auth_info_requested, 1) + cm.stop() def test_simple_register_with_refresh(self): cm = RegisterCoreManager() cm.register_with_refresh(True, None, None) assert_equals(cm.stats.number_of_auth_info_requested, 0) + cm.stop() def test_simple_auth_register_with_refresh(self): cm = RegisterCoreManager(with_auth=True) cm.register_with_refresh(True, auth_domain, "sip:{route}".format(route=test_route)) assert_equals(cm.stats.number_of_auth_info_requested, 1) + cm.stop() def test_multiple_accounts(self): - cm = CoreManager('multi_account_rc', False) - assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationOk == len(cm.lc.proxy_config_list)), True) + cm = CoreManager('multi_account_rc', True) + cm.stop() def test_transport_change(self): - cm = CoreManager('multi_account_rc', False) + cm = CoreManager('multi_account_rc', True) number_of_udp_proxies = reduce(lambda x, y: x + int(y.transport == "udp"), cm.lc.proxy_config_list, 0) total_number_of_proxies = len(cm.lc.proxy_config_list) - assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationOk == total_number_of_proxies), True) register_ok = cm.stats.number_of_LinphoneRegistrationOk # Keep only UDP tr = linphone.SipTransports(0, 0, 0, 0) @@ -189,3 +202,4 @@ class TestRegister: cm.lc.sip_transports = tr assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationOk == (register_ok + number_of_udp_proxies)), True) assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationFailed == (total_number_of_proxies - number_of_udp_proxies)), True) + cm.stop() From f06f93a76c7fb8e43fe99c16b00b80e393f69079 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 10 Feb 2015 17:07:20 +0100 Subject: [PATCH 385/496] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 0df389ab8..ce80feec0 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 0df389ab84246c9b1135cf9f3379fca528e47983 +Subproject commit ce80feec091c75bcb69c4adf42fada7b7f0ffacc From e797f7063fb77aae906d008791429c4798a22c36 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Tue, 10 Feb 2015 18:12:07 +0100 Subject: [PATCH 386/496] Add logcollection methods in linphoneFactory --- coreapi/linphonecore_jni.cc | 34 +++++++++++++------ .../linphone/core/LinphoneCoreFactory.java | 13 ++++++- .../core/LinphoneCoreFactoryImpl.java | 6 ++++ .../org/linphone/core/LinphoneCoreImpl.java | 13 +------ 4 files changed, 42 insertions(+), 24 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 8448e56fc..6b6556116 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -161,6 +161,21 @@ extern "C" void Java_org_linphone_core_LinphoneCoreFactoryImpl_setDebugMode(JNIE linphone_core_disable_logs(); } } + +extern "C" void Java_org_linphone_core_LinphoneCoreFactoryImpl_enableLogCollection(JNIEnv* env + ,jobject thiz + ,jboolean enable) { + linphone_core_enable_log_collection(enable ? LinphoneLogCollectionEnabledWithoutPreviousLogHandler : LinphoneLogCollectionDisabled); +} + +extern "C" void Java_org_linphone_core_LinphoneCoreFactoryImpl_setLogCollectionPath(JNIEnv* env + ,jobject thiz + ,jstring jpath) { + + const char* path = env->GetStringUTFChars(jpath, NULL); + linphone_core_set_log_collection_path(path); + env->ReleaseStringUTFChars(jpath, path); +} // LinphoneCore /* @@ -1073,6 +1088,10 @@ public: ,lcData->core ,(jlong)offset ,(jlong)total); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } } static void logCollectionUploadStateChange(LinphoneCore *lc, LinphoneCoreLogCollectionUploadState state, const char *info) { JNIEnv *env = 0; @@ -1089,6 +1108,10 @@ public: ,lcData->core ,env->CallStaticObjectMethod(lcData->logCollectionUploadStateClass,lcData->logCollectionUploadStateFromIntId,(jint)state), msg); + if (env->ExceptionCheck()) { + ms_error("Listener %p raised an exception",lcData->listener); + env->ExceptionClear(); + } if (msg) { env->DeleteLocalRef(msg); } @@ -1175,22 +1198,11 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_removeListener(JNIEnv* e //env->DeleteGlobalRef(listener); } - extern "C" void Java_org_linphone_core_LinphoneCoreImpl_uploadLogCollection(JNIEnv* env, jobject thiz, jlong lc) { LinphoneCore *core = (LinphoneCore*)lc; linphone_core_upload_log_collection(core); } -extern "C" void Java_org_linphone_core_LinphoneCoreImpl_enableLogCollection(JNIEnv* env, jclass cls, jboolean enable) { - linphone_core_enable_log_collection(enable ? LinphoneLogCollectionEnabledWithoutPreviousLogHandler : LinphoneLogCollectionDisabled); -} - -extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setLogCollectionPath(JNIEnv* env, jclass cls, jstring jpath) { - const char* path = env->GetStringUTFChars(jpath, NULL); - linphone_core_set_log_collection_path(path); - env->ReleaseStringUTFChars(jpath, path); -} - extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_migrateToMultiTransport(JNIEnv* env ,jobject thiz ,jlong lc) { diff --git a/java/common/org/linphone/core/LinphoneCoreFactory.java b/java/common/org/linphone/core/LinphoneCoreFactory.java index a26f95b9a..f7d5ccd66 100644 --- a/java/common/org/linphone/core/LinphoneCoreFactory.java +++ b/java/common/org/linphone/core/LinphoneCoreFactory.java @@ -109,7 +109,18 @@ abstract public class LinphoneCoreFactory { * @param enable true to enable debug mode, false to disable it * @param tag Tag which prefixes each log message. */ - abstract public void setDebugMode(boolean enable, String tag); + abstract public void setDebugMode(boolean enable, String tag); + + /** + * Enable the linphone core log collection to upload logs on a server. + */ + abstract public void enableLogCollection(boolean enable); + + /** + * Set the path where the log files will be written for log collection. + * @param path The path where the log files will be written. + */ + abstract public void setLogCollectionPath(String path); abstract public void setLogHandler(LinphoneLogHandler handler); diff --git a/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java b/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java index 03e8f7ef3..90fd5a0f6 100644 --- a/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java @@ -127,6 +127,12 @@ public class LinphoneCoreFactoryImpl extends LinphoneCoreFactory { public LinphoneFriend createLinphoneFriend() { return createLinphoneFriend(null); } + + @Override + public native void enableLogCollection(boolean enable); + + @Override + public native void setLogCollectionPath(String path); public static boolean isArmv7() { diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index 2773189e8..bd361daca 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -36,7 +36,7 @@ import android.net.wifi.WifiManager; import android.net.wifi.WifiManager.MulticastLock; import android.net.wifi.WifiManager.WifiLock; -public class LinphoneCoreImpl implements LinphoneCore { +class LinphoneCoreImpl implements LinphoneCore { private final LinphoneCoreListener mListener; //to make sure to keep a reference on this object protected long nativePtr = 0; @@ -1353,17 +1353,6 @@ public class LinphoneCoreImpl implements LinphoneCore { uploadLogCollection(nativePtr); } - /** - * Enable the linphone core log collection to upload logs on a server. - */ - public native static void enableLogCollection(boolean enable); - - /** - * Set the path where the log files will be written for log collection. - * @param path The path where the log files will be written. - */ - public native static void setLogCollectionPath(String path); - private native void setPreferredFramerate(long nativePtr, float fps); @Override public void setPreferredFramerate(float fps) { From 90ee807c7e3470ada0a0ebbb62b73dfd64dd54d8 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 11 Feb 2015 09:30:30 +0100 Subject: [PATCH 387/496] event queue needs to be unregistered since RtpSession is kept --- coreapi/linphonecall.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 1535dc957..164beb5ca 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2778,6 +2778,7 @@ static void linphone_call_stop_audio_stream(LinphoneCall *call) { linphone_call_remove_from_conf(call); } audio_stream_stop(call->audiostream); + rtp_session_unregister_event_queue(call->sessions[0].rtp_session, call->audiostream_app_evq); ortp_ev_queue_flush(call->audiostream_app_evq); ortp_ev_queue_destroy(call->audiostream_app_evq); call->audiostream_app_evq=NULL; @@ -2794,6 +2795,7 @@ static void linphone_call_stop_video_stream(LinphoneCall *call) { linphone_call_log_fill_stats(call->log,(MediaStream*)call->videostream); video_stream_stop(call->videostream); call->videostream=NULL; + rtp_session_unregister_event_queue(call->sessions[1].rtp_session, call->videostream_app_evq); ortp_ev_queue_flush(call->videostream_app_evq); ortp_ev_queue_destroy(call->videostream_app_evq); call->videostream_app_evq=NULL; From 4157c07fdf7a564640cc192a464d48afab26c0c0 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 11 Feb 2015 10:36:14 +0100 Subject: [PATCH 388/496] Use weakref from Core to CoreManager in the Python module tester. --- tools/python/unittests/linphonetester.py | 30 +++++++++++------------- tools/python/unittests/test_call.py | 14 ----------- tools/python/unittests/test_message.py | 18 ++++---------- tools/python/unittests/test_presence.py | 2 -- tools/python/unittests/test_register.py | 19 +-------------- 5 files changed, 19 insertions(+), 64 deletions(-) diff --git a/tools/python/unittests/linphonetester.py b/tools/python/unittests/linphonetester.py index bc7392832..366f22a82 100644 --- a/tools/python/unittests/linphonetester.py +++ b/tools/python/unittests/linphonetester.py @@ -6,6 +6,7 @@ import logging import os import sys import time +import weakref test_domain = "sipopen.example.org" @@ -93,13 +94,13 @@ class AccountManager: @classmethod def account_created_on_server_cb(cls, lc, cfg, state, message): if state == linphone.RegistrationState.Ok: - lc.user_data.created = True + lc.user_data().created = True elif state == linphone.RegistrationState.Cleared: - lc.user_data.done = True + lc.user_data().done = True @classmethod def account_created_auth_requested_cb(cls, lc, realm, username, domain): - lc.user_data.auth_requested = True + lc.user_data().auth_requested = True def check_account(self, cfg): create_account = False @@ -142,7 +143,7 @@ class AccountManager: cfg.server_addr = server_addr.as_string() cfg.expires = 3600 lc.add_proxy_config(cfg) - if AccountManager.wait_for_until(lc, None, lambda lc: lc.user_data.auth_requested == True, 10000) != True: + if AccountManager.wait_for_until(lc, None, lambda lc: lc.user_data().auth_requested == True, 10000) != True: linphonetester_logger.critical("[TESTER] Account for {identity} could not be created on server.".format(identity=refcfg.identity)) sys.exit(-1) cfg.edit() @@ -150,11 +151,11 @@ class AccountManager: cfg.done() ai = linphone.AuthInfo.new(account.modified_identity.username, None, account.password, None, None, account.modified_identity.domain) lc.add_auth_info(ai) - if AccountManager.wait_for_until(lc, None, lambda lc: lc.user_data.created == True, 3000) != True: + if AccountManager.wait_for_until(lc, None, lambda lc: lc.user_data().created == True, 3000) != True: linphonetester_logger.critical("[TESTER] Account for {identity} is not working on server.".format(identity=refcfg.identity)) sys.exit(-1) lc.remove_proxy_config(cfg) - if AccountManager.wait_for_until(lc, None, lambda lc: lc.user_data.done == True, 3000) != True: + if AccountManager.wait_for_until(lc, None, lambda lc: lc.user_data().done == True, 3000) != True: linphonetester_logger.critical("[TESTER] Account creation could not clean the registration context.") sys.exit(-1) @@ -287,7 +288,7 @@ class CoreManager: lc.ring = os.path.join(resources_path, 'sounds', 'oldphone.wav') lc.ringback = os.path.join(resources_path, 'sounds', 'ringback.wav') lc.static_picture = os.path.join(resources_path, 'images', 'nowebcamCIF.jpg') - lc.user_data = user_data + lc.user_data = weakref.ref(user_data) return lc @classmethod @@ -389,7 +390,7 @@ class CoreManager: @classmethod def registration_state_changed(cls, lc, cfg, state, message): - manager = lc.user_data + manager = lc.user_data() linphonetester_logger.info("[TESTER] New registration state {state} for user id [{identity}] at proxy [{addr}]".format( state=linphone.RegistrationState.string(state), identity=cfg.identity, addr=cfg.server_addr)) if state == linphone.RegistrationState.None: @@ -407,14 +408,14 @@ class CoreManager: @classmethod def auth_info_requested(cls, lc, realm, username, domain): - manager = lc.user_data + manager = lc.user_data() linphonetester_logger.info("[TESTER] Auth info requested for user id [{username}] at realm [{realm}]".format( username=username, realm=realm)) manager.stats.number_of_auth_info_requested +=1 @classmethod def call_state_changed(cls, lc, call, state, msg): - manager = lc.user_data + manager = lc.user_data() to_address = call.call_log.to_address.as_string() from_address = call.call_log.from_address.as_string() direction = "Outgoing" @@ -463,7 +464,7 @@ class CoreManager: @classmethod def message_received(cls, lc, room, message): - manager = lc.user_data + manager = lc.user_data() from_str = message.from_address.as_string() text_str = message.text external_body_url = message.external_body_url @@ -478,7 +479,7 @@ class CoreManager: @classmethod def new_subscription_requested(cls, lc, lf, url): - manager = lc.user_data + manager = lc.user_data() linphonetester_logger.info("[TESTER] New subscription request: from [{from_str}], url [{url}]".format( from_str=lf.address.as_string(), url=url)) manager.stats.number_of_NewSubscriptionRequest += 1 @@ -486,7 +487,7 @@ class CoreManager: @classmethod def notify_presence_received(cls, lc, lf): - manager = lc.user_data + manager = lc.user_data() linphonetester_logger.info("[TESTER] New notify request: from [{from_str}]".format( from_str=lf.address.as_string())) manager.stats.number_of_NotifyReceived += 1 @@ -600,9 +601,6 @@ class CoreManager: self.identity = linphone.Address.new(self.lc.default_proxy_config.identity) self.identity.clean() - def stop(self): - self.lc = None - def enable_audio_codec(self, mime, rate): codecs = self.lc.audio_codecs for codec in codecs: diff --git a/tools/python/unittests/test_call.py b/tools/python/unittests/test_call.py index 4357f245c..db8446b4a 100644 --- a/tools/python/unittests/test_call.py +++ b/tools/python/unittests/test_call.py @@ -22,8 +22,6 @@ class TestCall: out_call_log = pauline.lc.call_logs[0] assert out_call_log is not None assert_equals(out_call_log.status, linphone.CallStatus.Aborted) - marie.stop() - pauline.stop() def test_declined_call(self): marie = CoreManager('marie_rc') @@ -40,8 +38,6 @@ class TestCall: assert_equals(pauline.stats.number_of_LinphoneCallEnd, 1) assert_equals(in_call.reason, linphone.Reason.Declined) assert_equals(out_call.reason, linphone.Reason.Declined) - marie.stop() - pauline.stop() def test_cancelled_call(self): marie = CoreManager('marie_rc') @@ -53,8 +49,6 @@ class TestCall: assert_equals(pauline.stats.number_of_LinphoneCallEnd, 1) assert_equals(marie.stats.number_of_LinphoneCallIncomingReceived, 0) assert_equals(CoreManager.wait_for(pauline, marie, lambda pauline, marie: pauline.stats.number_of_LinphoneCallReleased == 1), True) - marie.stop() - pauline.stop() def test_early_cancelled_call(self): marie = CoreManager('marie_rc') @@ -72,8 +66,6 @@ class TestCall: # Now the CANCEL should have been sent and the the call at marie's side should terminate assert_equals(CoreManager.wait_for(pauline, marie, lambda pauline, marie: marie.stats.number_of_LinphoneCallEnd == 1), True) assert_equals(CoreManager.wait_for(pauline, marie, lambda pauline, marie: pauline.stats.number_of_LinphoneCallReleased == 1), True) - marie.stop() - pauline.stop() def test_cancelled_ringing_call(self): marie = CoreManager('marie_rc') @@ -84,8 +76,6 @@ class TestCall: assert_equals(CoreManager.wait_for(pauline, marie, lambda pauline, marie: (pauline.stats.number_of_LinphoneCallReleased == 1) and (marie.stats.number_of_LinphoneCallReleased == 1)), True) assert_equals(marie.stats.number_of_LinphoneCallEnd, 1) assert_equals(pauline.stats.number_of_LinphoneCallEnd, 1) - marie.stop() - pauline.stop() def test_call_failed_because_of_codecs(self): marie = CoreManager('marie_rc') @@ -100,8 +90,6 @@ class TestCall: assert_equals(out_call.reason, linphone.Reason.NotAcceptable) assert_equals(marie.stats.number_of_LinphoneCallIncomingReceived, 0) assert_equals(marie.stats.number_of_LinphoneCallReleased, 0) - marie.stop() - pauline.stop() def test_simple_call(self): marie = CoreManager('marie_rc') @@ -109,5 +97,3 @@ class TestCall: assert_equals(CoreManager.call(pauline, marie), True) #liblinphone_tester_check_rtcp(marie,pauline); CoreManager.end_call(marie, pauline) - marie.stop() - pauline.stop() diff --git a/tools/python/unittests/test_message.py b/tools/python/unittests/test_message.py index 1cc60c32d..12495cc84 100644 --- a/tools/python/unittests/test_message.py +++ b/tools/python/unittests/test_message.py @@ -12,7 +12,7 @@ class TestMessage: @classmethod def msg_state_changed(cls, msg, state): - stats = msg.chat_room.core.user_data.stats + stats = msg.chat_room.core.user_data().stats linphonetester_logger.info("[TESTER] Message [{text}] [{state}]".format(text=msg.text, state=linphone.ChatMessageState.string(state))) if state == linphone.ChatMessageState.Delivered: stats.number_of_LinphoneMessageDelivered += 1 @@ -27,7 +27,7 @@ class TestMessage: @classmethod def file_transfer_progress_indication(cls, msg, content, offset, total): - stats = msg.chat_room.core.user_data.stats + stats = msg.chat_room.core.user_data().stats progress = int((offset * 100) / total) direction = 'received' tofrom = 'from' @@ -57,7 +57,7 @@ class TestMessage: @classmethod def file_transfer_recv(cls, msg, content, buf): receive_filepath = msg.user_data - stats = msg.chat_room.core.user_data.stats + stats = msg.chat_room.core.user_data().stats if buf.empty: # Transfer complete stats.number_of_LinphoneMessageExtBodyReceived += 1 else: # Store content @@ -77,7 +77,7 @@ class TestMessage: @classmethod def memory_file_transfer_recv(cls, msg, content, buf): - stats = msg.chat_room.core.user_data.stats + stats = msg.chat_room.core.user_data().stats if buf.empty: # Transfer complete stats.number_of_LinphoneMessageExtBodyReceived += 1 else: # Store content @@ -98,8 +98,6 @@ class TestMessage: chat_room.send_chat_message(msg) assert_equals(CoreManager.wait_for(pauline, marie, lambda pauline, marie: marie.stats.number_of_LinphoneMessageReceived == 1), True) assert marie.lc.get_chat_room(pauline.identity) is not None - marie.stop() - pauline.stop() def test_text_message_within_dialog(self): marie = CoreManager('marie_rc') @@ -112,8 +110,6 @@ class TestMessage: chat_room.send_chat_message(msg) assert_equals(CoreManager.wait_for(pauline, marie, lambda pauline, marie: marie.stats.number_of_LinphoneMessageReceived == 1), True) assert marie.lc.get_chat_room(pauline.identity) is not None - marie.stop() - pauline.stop() def test_file_transfer_message(self): marie = CoreManager('marie_rc') @@ -147,8 +143,6 @@ class TestMessage: assert_equals(filecmp.cmp(send_filepath, receive_filepath, shallow=False), True) if os.path.exists(receive_filepath): os.remove(receive_filepath) - marie.stop() - pauline.stop() def test_small_file_transfer_message(self): send_buf = "small file" @@ -185,8 +179,6 @@ class TestMessage: assert_equals(pauline.stats.number_of_LinphoneMessageDelivered, 1) assert_equals(marie.stats.number_of_LinphoneMessageExtBodyReceived, 1) assert_equals(send_buf, marie.stats.last_received_chat_message.user_data) - marie.stop() - pauline.stop() def test_file_transfer_message_upload_cancelled(self): send_buf = "big file" @@ -218,5 +210,3 @@ class TestMessage: assert_equals(CoreManager.wait_for(pauline, marie, lambda pauline, marie: pauline.stats.number_of_LinphoneMessageNotDelivered == 1), True) assert_equals(pauline.stats.number_of_LinphoneMessageNotDelivered, 1) assert_equals(marie.stats.number_of_LinphoneMessageExtBodyReceived, 0) - marie.stop() - pauline.stop() diff --git a/tools/python/unittests/test_presence.py b/tools/python/unittests/test_presence.py index 59ac3e1f9..c2db852dd 100644 --- a/tools/python/unittests/test_presence.py +++ b/tools/python/unittests/test_presence.py @@ -35,5 +35,3 @@ class TestPresence: marie = PresenceCoreManager('marie') pauline = PresenceCoreManager('pauline') assert_equals(self.subscribe_to_callee_presence(marie, pauline), True) - marie.stop() - pauline.stop() diff --git a/tools/python/unittests/test_register.py b/tools/python/unittests/test_register.py index 03a5d2e05..0ce9bdf2f 100644 --- a/tools/python/unittests/test_register.py +++ b/tools/python/unittests/test_register.py @@ -70,7 +70,6 @@ class RegisterCoreManager(CoreManager): def register_with_refresh(self, refresh, domain, route, late_auth_info = False, transport = linphone.SipTransports(5070, 5070, 5071, 0), expected_final_state = linphone.RegistrationState.Ok): self.register_with_refresh_base(refresh, domain, route, late_auth_info, expected_final_state = expected_final_state) - self.stop() # Not testable as the callbacks can not be called once the core destruction has started #assert_equals(self.stats.number_of_LinphoneRegistrationCleared, 1) @@ -81,7 +80,6 @@ class TestRegister: cm = RegisterCoreManager() cm.register_with_refresh(False, None, None) assert_equals(cm.stats.number_of_auth_info_requested, 0) - cm.stop() def test_simple_unregister(self): cm = RegisterCoreManager() @@ -94,22 +92,18 @@ class TestRegister: pc.register_enabled = False pc.done() assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationCleared == 1), True) - cm.stop() def test_simple_tcp_register(self): cm = RegisterCoreManager() cm.register_with_refresh(False, test_domain, "sip:{route};transport=tcp".format(route=test_route)) - cm.stop() def test_simple_tcp_register_compatibility_mode(self): cm = RegisterCoreManager() cm.register_with_refresh(False, test_domain, "sip:{route}".format(route=test_route), transport=linphone.SipTransports(0, 5070, 0, 0)) - cm.stop() def test_simple_tls_register(self): cm = RegisterCoreManager() cm.register_with_refresh(False, test_domain, "sip:{route};transport=tls".format(route=test_route)) - cm.stop() def test_tls_register_with_alt_name(self): cm = CoreManager('pauline_alt_rc', False) @@ -117,7 +111,6 @@ class TestRegister: cm.lc.refresh_registers() assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationOk == 1), True) assert_equals(cm.stats.number_of_LinphoneRegistrationFailed, 0) - cm.stop() def test_tls_wildcard_register(self): cm = CoreManager('pauline_wild_rc', False) @@ -125,7 +118,6 @@ class TestRegister: cm.lc.refresh_registers() assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationOk == 2), True) assert_equals(cm.stats.number_of_LinphoneRegistrationFailed, 0) - cm.stop() def test_tls_certificate_failure(self): cm = CoreManager('pauline_rc', False) @@ -139,7 +131,6 @@ class TestRegister: cm.lc.refresh_registers() assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationOk == 1), True) assert_equals(cm.stats.number_of_LinphoneRegistrationFailed, 2) - cm.stop() def test_tls_with_non_tls_server(self): cm = CoreManager('marie_rc', False) @@ -153,7 +144,6 @@ class TestRegister: pc.server_addr = "sip:{domain}:{port};transport=tls".format(domain=addr.domain, port=port) pc.done() assert_equals(CoreManager.wait_for_until(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationFailed == 1, 5000), True) - cm.stop() def test_simple_authenticated_register(self): cm = RegisterCoreManager() @@ -161,35 +151,29 @@ class TestRegister: cm.lc.add_auth_info(info) cm.register_with_refresh(False, auth_domain, "sip:{route}".format(route=test_route)) assert_equals(cm.stats.number_of_auth_info_requested, 0) - cm.stop() def test_digest_auth_without_initial_credentials(self): cm = RegisterCoreManager(with_auth=True) cm.register_with_refresh(False, auth_domain, "sip:{route}".format(route=test_route)) assert_equals(cm.stats.number_of_auth_info_requested, 1) - cm.stop() def test_authenticated_register_with_late_credentials(self): cm = RegisterCoreManager() cm.register_with_refresh(False, auth_domain, "sip:{route}".format(route=test_route), True, linphone.SipTransports(5070, 5070, 5071, 0)) assert_equals(cm.stats.number_of_auth_info_requested, 1) - cm.stop() def test_simple_register_with_refresh(self): cm = RegisterCoreManager() cm.register_with_refresh(True, None, None) assert_equals(cm.stats.number_of_auth_info_requested, 0) - cm.stop() def test_simple_auth_register_with_refresh(self): cm = RegisterCoreManager(with_auth=True) cm.register_with_refresh(True, auth_domain, "sip:{route}".format(route=test_route)) assert_equals(cm.stats.number_of_auth_info_requested, 1) - cm.stop() def test_multiple_accounts(self): - cm = CoreManager('multi_account_rc', True) - cm.stop() + CoreManager('multi_account_rc', True) def test_transport_change(self): cm = CoreManager('multi_account_rc', True) @@ -202,4 +186,3 @@ class TestRegister: cm.lc.sip_transports = tr assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationOk == (register_ok + number_of_udp_proxies)), True) assert_equals(CoreManager.wait_for(cm, cm, lambda cm1, cm2: cm1.stats.number_of_LinphoneRegistrationFailed == (total_number_of_proxies - number_of_udp_proxies)), True) - cm.stop() From 1f5fd52128e933907d5785dd268086cc4626409b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 11 Feb 2015 15:08:04 +0100 Subject: [PATCH 389/496] Enable to build linphone with SRTP support by using the packages provided by GNU/Linux distributions --- NEWS | 1 + README | 7 +------ TODO | 2 +- mediastreamer2 | 2 +- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index bb1d573a0..dce0e0824 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,7 @@ linphone-3.8.0 -- Date to be defined * Support for RTP/AVPF (RFCxxxx) for video streams, allowing fast transmission error recovery with VP8 codec only. * API enhancements, most objects can be ref-counted. * Call video recording feature, in mkv format (H264 streams only for the moment) + * Support of SRTP by using packages from GNU/Linux distributions linphone-3.7.0 -- February 20th, 2014 Application level improvements: diff --git a/README b/README index 30666070a..0de3185c3 100644 --- a/README +++ b/README @@ -39,12 +39,7 @@ libglew1.6-dev libv4l-dev libxml2-dev + for optional library $ sudo apt-get install libreadline-dev libgsm1-dev libtheora-dev \ -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 +libsoup2.4-dev libsqlite3-dev libupnp4-dev libsrtp-dev + Install zrtp (optional), for unbreakable call encryption $ git clone git://git.linphone.org:bzrtp diff --git a/TODO b/TODO index 1452a7c00..8e18e5491 100644 --- a/TODO +++ b/TODO @@ -3,7 +3,7 @@ hot stuff: * ice support * run a user given command upon incoming calls -* SIP/TLS and SRTP +* SIP/TLS low priority: ------------- diff --git a/mediastreamer2 b/mediastreamer2 index ce80feec0..44fe332ef 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit ce80feec091c75bcb69c4adf42fada7b7f0ffacc +Subproject commit 44fe332ef7a4527397c4474f1f7d0d88491d31f1 From 43e9761452ce69370bc2d22c3023a966206ef5b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 11 Feb 2015 16:15:34 +0100 Subject: [PATCH 390/496] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 44fe332ef..0ff566694 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 44fe332ef7a4527397c4474f1f7d0d88491d31f1 +Subproject commit 0ff5666945399dd55739c17d7d72e6f1fe6ee128 From 533b80c1c5daa264bbea203477e2bf175cd7da31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 11 Feb 2015 16:18:26 +0100 Subject: [PATCH 391/496] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 0ff566694..210991b7e 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 0ff5666945399dd55739c17d7d72e6f1fe6ee128 +Subproject commit 210991b7e3b560ef58b322a4951b0d24bb500653 From 1f0d74ce26d6faeb9a3b6db13e2a602f9e6ed1b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 11 Feb 2015 16:22:24 +0100 Subject: [PATCH 392/496] Fix build issue --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 210991b7e..2b0343ba1 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 210991b7e3b560ef58b322a4951b0d24bb500653 +Subproject commit 2b0343ba1659a496b06c61240b5b68b1251de762 From fd86ba4138739847b953bd66ff713f043d6aa0bd Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 9 Feb 2015 16:51:48 +0100 Subject: [PATCH 393/496] Better use 2 lines instead of doing code within CU macros --- tester/call_tester.c | 3 ++- tester/player_tester.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 1ec6d71f6..624a90fca 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -3509,7 +3509,8 @@ static void call_with_generic_cn(void) { wait_for_until(marie->lc, pauline->lc, NULL, 0, 8000); rtps=rtp_session_get_stats(pauline_call->audiostream->ms.sessions.rtp_session); CU_ASSERT_TRUE(rtps->packet_recv<=300 && rtps->packet_recv>=200); - CU_ASSERT_EQUAL((err=stat(recorded_file,&stbuf)), 0); + err=stat(recorded_file,&stbuf); + CU_ASSERT_EQUAL(err, 0); if (err==0){ CU_ASSERT_TRUE(stbuf.st_size>120000); } diff --git a/tester/player_tester.c b/tester/player_tester.c index 8f0c5af43..beb6e9d19 100644 --- a/tester/player_tester.c +++ b/tester/player_tester.c @@ -57,7 +57,8 @@ static void play_file(const char *filename, bool_t unsupported_format, const cha } if(res == -1) goto fail; - CU_ASSERT_EQUAL((res = linphone_player_start(player)), 0); + res = linphone_player_start(player); + CU_ASSERT_EQUAL(res, 0); if(res == -1) goto fail; CU_ASSERT_TRUE(wait_for_eof(&eof, &time, 100, 13000)); From 807bcbbfa3da40cca5a042a9158570f372396bda Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 9 Feb 2015 17:01:48 +0100 Subject: [PATCH 394/496] Fix memory leak --- tester/tester.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tester/tester.c b/tester/tester.c index ce9bb4c7a..52f01d304 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -491,8 +491,12 @@ static void test_complete_message_handler(const CU_pTest pTest, 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()); + char * results = CU_get_run_results_string(); + if (liblinphone_tester_use_log_file) { + ms_warning("\n\n %s", results); + } + liblinphone_tester_fprintf(stdout,"\n\n %s",results); + ms_free(results); } static void test_suite_init_failure_message_handler(const CU_pSuite pSuite) { @@ -556,7 +560,7 @@ int liblinphone_tester_run_tests(const char *suite_name, const char *test_name) CU_pTest test=CU_get_test_by_name(test_name, suite); if (!test) { ms_error("Could not find test '%s' in suite '%s'. Available tests are:", test_name, suite_name); - // do not use suite_name here, since this method is case sentisitive + // do not use suite_name here, since this method is case sensitive liblinphone_tester_list_suite_tests(suite->pName); return -2; } else { From 5074658a6fe39c5616e83a23a922f0620035b988 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 11 Feb 2015 16:30:42 +0100 Subject: [PATCH 395/496] Fix testers --- mediastreamer2 | 2 +- tester/call_tester.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 2b0343ba1..13f6a7884 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 2b0343ba1659a496b06c61240b5b68b1251de762 +Subproject commit 13f6a78846b8cfe2e75e0298751e1ba57d66232c diff --git a/tester/call_tester.c b/tester/call_tester.c index 624a90fca..93ef7170a 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2129,7 +2129,7 @@ static void call_with_file_player(void) { CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); /*cannot run on iphone simulator because locks main loop beyond permitted time (should run on another thread) */ -#if !defined(__arm__) && !defined(__arm64__) && TARGET_IPHONE_SIMULATOR +#if !defined(__arm__) && !defined(__arm64__) && !TARGET_IPHONE_SIMULATOR { double similar; const double threshold = 0.9; From ea80131389c23acd5c9e4bbcd57b74cc8355598e Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 11 Feb 2015 16:34:05 +0100 Subject: [PATCH 396/496] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 13f6a7884..813284328 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 13f6a78846b8cfe2e75e0298751e1ba57d66232c +Subproject commit 813284328b2a7af01299c29d441ed0a34af82df7 From 7942e7e60ac68e1c2019f2c5d9156d63dae55efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 11 Feb 2015 17:32:06 +0100 Subject: [PATCH 397/496] Fix distcheck --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 813284328..4ad81eb51 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 813284328b2a7af01299c29d441ed0a34af82df7 +Subproject commit 4ad81eb516a242bb7f236c2ba0cc8d60182b772f From d107a069ede8c5c4d49ea75e2180af5911ae52bf Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 11 Feb 2015 17:50:08 +0100 Subject: [PATCH 398/496] avoid log handler removal in case of subsequence call to linphone_core_set_log_handler --- coreapi/linphonecore.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index ffa2a6b32..91b3d060b 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -154,7 +154,11 @@ const LinphoneAddress *linphone_core_get_current_call_remote_address(struct _Lin } void linphone_core_set_log_handler(OrtpLogFunc logfunc) { - ortp_set_log_handler(logfunc); + if (ortp_logv_out == linphone_core_log_collection_handler) { + ms_message("There is already a log collection handler, keep it"); + liblinphone_log_func = logfunc; + } else + ortp_set_log_handler(logfunc); } void linphone_core_set_log_file(FILE *file) { @@ -645,7 +649,7 @@ void linphone_core_enable_logs(FILE *file){ **/ void linphone_core_enable_logs_with_cb(OrtpLogFunc logfunc){ ortp_set_log_level_mask(ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL); - ortp_set_log_handler(logfunc); + linphone_core_set_log_handler(logfunc); sal_enable_logs(); } From 358950e13502e12f8e0a82a39df3b6f80893af54 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 11 Feb 2015 18:01:36 +0100 Subject: [PATCH 399/496] fix compilation issue --- coreapi/linphonecore.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 91b3d060b..63899e9e0 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -153,6 +153,8 @@ const LinphoneAddress *linphone_core_get_current_call_remote_address(struct _Lin return linphone_call_get_remote_address(call); } +static void linphone_core_log_collection_handler(OrtpLogLevel level, const char *fmt, va_list args); + void linphone_core_set_log_handler(OrtpLogFunc logfunc) { if (ortp_logv_out == linphone_core_log_collection_handler) { ms_message("There is already a log collection handler, keep it"); From 5adec0c55a43fc5ea1ab9beddd91489f510cfacf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 12 Feb 2015 09:16:42 +0100 Subject: [PATCH 400/496] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 4ad81eb51..fee844054 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 4ad81eb516a242bb7f236c2ba0cc8d60182b772f +Subproject commit fee844054d5e9e537a51484132d121cc97d53891 From e60b9ab23dc8f59258a086f186141a0cace2157a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 12 Feb 2015 10:17:52 +0100 Subject: [PATCH 401/496] Fix bash mistake in the mediastreamer2's configure.ac --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index fee844054..0362ac7d1 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit fee844054d5e9e537a51484132d121cc97d53891 +Subproject commit 0362ac7d17269e5e9dc4187324b052d43933d82b From 71204d66cded74d88b5831cc859fc250f19a00fc Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 12 Feb 2015 10:08:04 +0100 Subject: [PATCH 402/496] Fix compilation warnings on android --- coreapi/linphonecore.c | 26 +++++++++++++------------- coreapi/linphonecore_jni.cc | 3 --- mediastreamer2 | 2 +- oRTP | 2 +- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 63899e9e0..ef108df18 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1015,7 +1015,7 @@ static PayloadType * find_payload(const MSList *default_list, const char *mime_t PayloadType *candidate=NULL; PayloadType *it; const MSList *elem; - + for(elem=default_list;elem!=NULL;elem=elem->next){ it=(PayloadType*)elem->data; if (it!=NULL && strcasecmp(mime_type,it->mime_type)==0 @@ -1096,7 +1096,7 @@ static bool_t get_codec(LinphoneCore *lc, SalStreamType type, int index, Payload static MSList *add_missing_codecs(const MSList *default_list, MSList *l){ const MSList *elem; MSList *newlist; - + for(elem=default_list; elem!=NULL; elem=elem->next){ MSList *elem2=ms_list_find(l,elem->data); if (!elem2){ @@ -1134,10 +1134,10 @@ static void codecs_config_read(LinphoneCore *lc) PayloadType *pt; MSList *audio_codecs=NULL; MSList *video_codecs=NULL; - + lc->codecs_conf.dyn_pt=96; lc->codecs_conf.telephone_event_pt=lp_config_get_int(lc->config,"misc","telephone_event_pt",101); - + for (i=0;get_codec(lc,SalAudio,i,&pt);i++){ if (pt){ audio_codecs=codec_append_if_new(audio_codecs, pt); @@ -1434,8 +1434,8 @@ static void linphone_core_register_payload_type(LinphoneCore *lc, const PayloadT and the payload type number will be determined dynamically later, at call time.*/ payload_type_set_number(pt, (number=rtp_profile_find_payload_number(&av_profile, pt->mime_type, pt->clock_rate, pt->channels)) - ); - ms_message("Codec %s/%i fmtp=[%s] number=%i, enabled=%i) added to default capabilities.", pt->mime_type, pt->clock_rate, + ); + ms_message("Codec %s/%i fmtp=[%s] number=%i, enabled=%i) added to default capabilities.", pt->mime_type, pt->clock_rate, pt->recv_fmtp ? pt->recv_fmtp : "", number, (int)payload_type_enabled(pt)); *codec_list=ms_list_append(*codec_list,pt); } @@ -1557,7 +1557,7 @@ static void linphone_core_register_default_codecs(LinphoneCore *lc){ linphone_core_register_payload_type(lc,&payload_type_speex_nb,"vbr=on",TRUE); linphone_core_register_payload_type(lc,&payload_type_pcmu8000,NULL,TRUE); linphone_core_register_payload_type(lc,&payload_type_pcma8000,NULL,TRUE); - + /*other audio codecs, not enabled by default, in order of preference*/ linphone_core_register_payload_type(lc,&payload_type_gsm,NULL,FALSE); linphone_core_register_payload_type(lc,&payload_type_g722,NULL,FALSE); @@ -1593,8 +1593,8 @@ static void linphone_core_register_default_codecs(LinphoneCore *lc){ linphone_core_register_payload_type(lc,&payload_type_aal2_g726_24,NULL,FALSE); linphone_core_register_payload_type(lc,&payload_type_aal2_g726_32,NULL,FALSE); linphone_core_register_payload_type(lc,&payload_type_aal2_g726_40,NULL,FALSE); - - + + #ifdef VIDEO_ENABLED /*default enabled video codecs, in order of preference*/ @@ -1623,9 +1623,9 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab linphone_core_set_state(lc,LinphoneGlobalStartup,"Starting up"); ortp_init(); linphone_core_activate_log_serialization_if_needed(); - + ms_init(); - + linphone_core_register_default_codecs(lc); /* create a mediastreamer2 event queue and set it as global */ /* This allows to run event's callback in linphone_core_iterate() */ @@ -6100,7 +6100,7 @@ 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 */ @@ -7137,7 +7137,7 @@ void linphone_core_v_table_destroy(LinphoneCoreVTable* 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);\ diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 6b6556116..b562cf31a 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -60,9 +60,6 @@ extern "C" void libmswebrtc_init(); #include #endif /*ANDROID*/ -/*force linking of ms_audio_diff symbol because the tester requires it.*/ -static void *audiodiff=(void*)&ms_audio_diff; - #define RETURN_USER_DATA_OBJECT(javaclass, funcprefix, cobj) \ { \ jclass jUserDataObjectClass; \ diff --git a/mediastreamer2 b/mediastreamer2 index 0362ac7d1..804b927a0 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 0362ac7d17269e5e9dc4187324b052d43933d82b +Subproject commit 804b927a08cfeec0840a0994f7e9bd71206c5f19 diff --git a/oRTP b/oRTP index d7b7f8af7..7822737d9 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit d7b7f8af70c7a40c55f6b026833b21e177c88eea +Subproject commit 7822737d9cce52a956594d9466cb6419595ed7a8 From 49e10b2ee34b7338071ac922d5256869ec7b72bd Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 12 Feb 2015 11:19:09 +0100 Subject: [PATCH 403/496] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 804b927a0..b36b27e44 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 804b927a08cfeec0840a0994f7e9bd71206c5f19 +Subproject commit b36b27e44806abb88454b3f82627994e503eee76 From 0e22f1b6ccef75089a8d015fe0fbe05226f8966f Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 13 Feb 2015 10:32:22 +0100 Subject: [PATCH 404/496] Fix Android liblinphone_tester compilation --- tester/call_tester.c | 4 ++-- tester/liblinphone_tester.c | 2 ++ tester/tester.c | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 93ef7170a..be6e4a29c 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2129,7 +2129,7 @@ static void call_with_file_player(void) { CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); /*cannot run on iphone simulator because locks main loop beyond permitted time (should run on another thread) */ -#if !defined(__arm__) && !defined(__arm64__) && !TARGET_IPHONE_SIMULATOR +#if !defined(__arm__) && !defined(__arm64__) && !TARGET_IPHONE_SIMULATOR && !defined(ANDROID) { double similar; const double threshold = 0.9; @@ -2205,7 +2205,7 @@ static void call_with_mkv_file_player(void) { 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)); -#ifndef __arm__ +#if !defined(__arm__) && !defined(__arm64__) && !TARGET_IPHONE_SIMULATOR && !defined(ANDROID) CU_ASSERT_TRUE(ms_audio_diff(hellowav,recordpath,&similar,NULL,NULL)==0); CU_ASSERT_TRUE(similar>threshold); CU_ASSERT_TRUE(similar<=1.0); diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c index fc3f315e5..11e31e13b 100644 --- a/tester/liblinphone_tester.c +++ b/tester/liblinphone_tester.c @@ -41,6 +41,8 @@ static JNIEnv *current_env = NULL; static jobject current_obj = 0; static const char* LogDomain = "liblinphone_tester"; +int main(int argc, char** argv); + void linphone_android_log_handler(int prio, const char *fmt, va_list args) { char str[4096]; char *current; diff --git a/tester/tester.c b/tester/tester.c index 52f01d304..741fc8938 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -614,7 +614,7 @@ int liblinphone_tester_fprintf(FILE * stream, const char * format, ...) { #else /*used by liblinphone tester to retrieve suite list*/ result = 0; - cunit_android_trace_handler(stream, format, args); + cunit_android_trace_handler(stream == stderr, format, args); #endif va_end(args); return result; From abcadf9c9ab70c9a76d82ee947dda059c7be2def Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Fri, 13 Feb 2015 10:40:29 +0100 Subject: [PATCH 405/496] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index b36b27e44..394858138 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit b36b27e44806abb88454b3f82627994e503eee76 +Subproject commit 3948581385b9521c17a54c05c05d613add95e631 From fd0a7cfd739a29b69451609ef86cbce0c78eb6fc Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 13 Feb 2015 18:01:45 +0100 Subject: [PATCH 406/496] add more DTLS tests --- coreapi/callbacks.c | 2 +- coreapi/linphonecall.c | 106 ++++++++++++++++++++++------------------- tester/call_tester.c | 91 ++++++++++++++++++++++++++++++----- 3 files changed, 138 insertions(+), 61 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 47032e22e..7e0254b99 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -221,7 +221,7 @@ static bool_t is_duplicate_call(LinphoneCore *lc, const LinphoneAddress *from, c static bool_t already_a_call_with_remote_address(const LinphoneCore *lc, const LinphoneAddress *remote) { MSList *elem; - ms_warning(" searching for already_a_call_with_remote_address."); + ms_message("Searching for already_a_call_with_remote_address."); for(elem=lc->calls;elem!=NULL;elem=elem->next){ const LinphoneCall *call=(LinphoneCall*)elem->data; diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 164beb5ca..f5aff970d 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2430,6 +2430,30 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b setup_ring_player(lc,call); } + if (sal_stream_description_has_dtls(stream) == TRUE) { + /* DTLS engine was already initialised during stream init. Before starting it we must be sure that the role(client or server) is set. + * Role may have already been set to server if we initiate the call and already received a packet from peer, in that case do nothing */ + SalDtlsRole salRole = stream->dtls_role; + if (salRole==SalDtlsRoleInvalid) { /* it's invalid in streams[0] but check also at session level */ + salRole = call->resultdesc->dtls_role; + } + + if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ + /* give the peer certificate fingerprint to dtls context */ + SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); + ms_dtls_srtp_set_peer_fingerprint(call->audiostream->ms.sessions.dtls_context, remote_desc->streams[0].dtls_fingerprint); + } else { + ms_warning("unable to start DTLS engine on audiostream, Dtls role in resulting media description is invalid\n"); + } + if (salRole == SalDtlsRoleIsClient) { /* local endpoint is client */ + ms_dtls_srtp_set_role(call->audiostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsClient); /* set the role to client */ + ms_dtls_srtp_start(call->audiostream->ms.sessions.dtls_context); /* then start the engine, it will send the DTLS client Hello */ + } else if (salRole == SalDtlsRoleIsServer) { /* local endpoint is server */ + ms_dtls_srtp_set_role(call->audiostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsServer); /* this may complete the server setup */ + /* no need to start engine, we are waiting for DTLS Client Hello */ + } + } + if (call->params->in_conference){ /*transform the graph to connect it to the conference filter */ mute=stream->dir==SalStreamRecvOnly; @@ -2555,6 +2579,28 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu used_pt, linphone_core_get_video_jittcomp(lc), cam); } } + if (sal_stream_description_has_dtls(vstream) == TRUE) { + /*DTLS*/ + SalDtlsRole salRole = vstream->dtls_role; + if (salRole==SalDtlsRoleInvalid) { /* it's invalid in streams[0] but check also at session level */ + salRole = call->resultdesc->dtls_role; + } + + if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ + /* give the peer certificate fingerprint to dtls context */ + SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); + ms_dtls_srtp_set_peer_fingerprint(call->videostream->ms.sessions.dtls_context, remote_desc->streams[1].dtls_fingerprint); + } else { + ms_warning("unable to start DTLS engine on videostream, Dtls role in resulting media description is invalid\n"); + } + if (salRole == SalDtlsRoleIsClient) { /* local endpoint is client */ + ms_dtls_srtp_set_role(call->videostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsClient); /* set the role to client */ + ms_dtls_srtp_start(call->videostream->ms.sessions.dtls_context); /* then start the engine, it will send the DTLS client Hello */ + } else if (salRole == SalDtlsRoleIsServer) { /* local endpoint is server */ + ms_dtls_srtp_set_role(call->videostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsServer); /* this may complete the server setup */ + /* no need to start engine, we are waiting for DTLS Client Hello */ + } + } }else ms_warning("No video stream accepted."); }else{ ms_message("No valid video stream defined."); @@ -2605,6 +2651,7 @@ void linphone_call_start_media_streams(LinphoneCall *call, bool_t all_inputs_mut call->playing_ringbacktone=send_ringbacktone; call->up_bw=linphone_core_get_upload_bandwidth(lc); + /*might be moved in audio/video stream_start*/ if (call->params->media_encryption==LinphoneMediaEncryptionZRTP) { MSZrtpParams params; memset(¶ms,0,sizeof(MSZrtpParams)); @@ -2618,52 +2665,7 @@ void linphone_call_start_media_streams(LinphoneCall *call, bool_t all_inputs_mut video_stream_enable_zrtp(call->videostream,call->audiostream,¶ms); } #endif - } else if (call->params->media_encryption==LinphoneMediaEncryptionDTLS) { - /* DTLS engine was already initialised during stream init. Before starting it we must be sure that the role(client or server) is set. - * Role may have already been set to server if we initiate the call and already received a packet from peer, in that case do nothing */ - SalDtlsRole salRole = call->resultdesc->streams[0].dtls_role; /* TODO: is streams[0] necessary the audiostream in the media description ? */ - if (salRole==SalDtlsRoleInvalid) { /* it's invalid in streams[0] but check also at session level */ - salRole = call->resultdesc->dtls_role; - } - - if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ - /* give the peer certificate fingerprint to dtls context */ - SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); - ms_dtls_srtp_set_peer_fingerprint(call->audiostream->ms.sessions.dtls_context, remote_desc->streams[0].dtls_fingerprint); - } else { - ms_warning("unable to start DTLS engine on audiostream, Dtls role in resulting media description is invalid\n"); - } - if (salRole == SalDtlsRoleIsClient) { /* local endpoint is client */ - ms_dtls_srtp_set_role(call->audiostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsClient); /* set the role to client */ - ms_dtls_srtp_start(call->audiostream->ms.sessions.dtls_context); /* then start the engine, it will send the DTLS client Hello */ - } else if (salRole == SalDtlsRoleIsServer) { /* local endpoint is server */ - ms_dtls_srtp_set_role(call->audiostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsServer); /* this may complete the server setup */ - /* no need to start engine, we are waiting for DTLS Client Hello */ - } -#ifdef VIDEO_ENABLED - salRole = call->resultdesc->streams[1].dtls_role; /* TODO: is streams[1] necessary the videostream in the media description ? */ - if (salRole==SalDtlsRoleInvalid) { /* it's invalid in streams[0] but check also at session level */ - salRole = call->resultdesc->dtls_role; - } - - if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ - /* give the peer certificate fingerprint to dtls context */ - SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); - ms_dtls_srtp_set_peer_fingerprint(call->videostream->ms.sessions.dtls_context, remote_desc->streams[1].dtls_fingerprint); - } else { - ms_warning("unable to start DTLS engine on videostream, Dtls role in resulting media description is invalid\n"); - } - if (salRole == SalDtlsRoleIsClient) { /* local endpoint is client */ - ms_dtls_srtp_set_role(call->videostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsClient); /* set the role to client */ - ms_dtls_srtp_start(call->videostream->ms.sessions.dtls_context); /* then start the engine, it will send the DTLS client Hello */ - } else if (salRole == SalDtlsRoleIsServer) { /* local endpoint is server */ - ms_dtls_srtp_set_role(call->videostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsServer); /* this may complete the server setup */ - /* no need to start engine, we are waiting for DTLS Client Hello */ - } - -#endif - - } else { + }else if (call->params->media_encryption==LinphoneMediaEncryptionSRTP){ call->current_params->media_encryption=linphone_call_all_streams_encrypted(call) ? LinphoneMediaEncryptionSRTP : LinphoneMediaEncryptionNone; } @@ -3269,10 +3271,18 @@ static void handle_ice_events(LinphoneCall *call, OrtpEvent *ev){ if (evt == ORTP_EVENT_ICE_SESSION_PROCESSING_FINISHED) { LinphoneCallParams *params = linphone_call_params_copy(call->current_params); - if (call->params->media_encryption == LinphoneMediaEncryptionZRTP) { - /* preserve media encryption param because at that time ZRTP negociation may still be ongoing*/ + switch (call->params->media_encryption) { + case LinphoneMediaEncryptionZRTP: + case LinphoneMediaEncryptionDTLS: + /* preserve media encryption param because at that time ZRTP/SRTP-DTLS negociation may still be ongoing*/ params->media_encryption=call->params->media_encryption; + break; + case LinphoneMediaEncryptionSRTP: + case LinphoneMediaEncryptionNone: + /*keep all values to make sure a warning will be generated by compiler if new enum value is added*/ + break; } + switch (ice_session_state(call->ice_session)) { case IS_Completed: ice_session_select_candidates(call->ice_session); diff --git a/tester/call_tester.c b/tester/call_tester.c index be6e4a29c..3dcc2a270 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -1350,18 +1350,33 @@ static bool_t add_video(LinphoneCoreManager* caller,LinphoneCoreManager* callee) CU_ASSERT_TRUE(linphone_call_params_video_enabled(linphone_call_get_current_params(linphone_core_get_current_call(caller->lc)))); if (linphone_core_get_media_encryption(caller->lc) != LinphoneMediaEncryptionNone && linphone_core_get_media_encryption(callee->lc) != LinphoneMediaEncryptionNone) { - /*wait for encryption to be on, in case of zrtp, it can take a few seconds*/ - if (linphone_core_get_media_encryption(caller->lc) == LinphoneMediaEncryptionZRTP) - wait_for(callee->lc,caller->lc,&caller->stat.number_of_LinphoneCallEncryptedOn,initial_caller_stat.number_of_LinphoneCallEncryptedOn+1); - if (linphone_core_get_media_encryption(callee->lc) == LinphoneMediaEncryptionZRTP) - wait_for(callee->lc,caller->lc,&callee->stat.number_of_LinphoneCallEncryptedOn,initial_callee_stat.number_of_LinphoneCallEncryptedOn+1); + const LinphoneCallParams* call_param; - { - const LinphoneCallParams* call_param = linphone_call_get_current_params(linphone_core_get_current_call(callee->lc)); + switch (linphone_core_get_media_encryption(caller->lc)) { + case LinphoneMediaEncryptionZRTP: + case LinphoneMediaEncryptionDTLS: + /*wait for encryption to be on, in case of zrtp/dtls, it can take a few seconds*/ + wait_for(callee->lc,caller->lc,&caller->stat.number_of_LinphoneCallEncryptedOn,initial_caller_stat.number_of_LinphoneCallEncryptedOn+1); + break; + case LinphoneMediaEncryptionNone: + case LinphoneMediaEncryptionSRTP: + break; + } + switch (linphone_core_get_media_encryption(callee->lc)) { + case LinphoneMediaEncryptionZRTP: + case LinphoneMediaEncryptionDTLS: + wait_for(callee->lc,caller->lc,&callee->stat.number_of_LinphoneCallEncryptedOn,initial_callee_stat.number_of_LinphoneCallEncryptedOn+1); + break; + case LinphoneMediaEncryptionNone: + case LinphoneMediaEncryptionSRTP: + break; + } + + call_param = linphone_call_get_current_params(linphone_core_get_current_call(callee->lc)); CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(caller->lc)); call_param = linphone_call_get_current_params(linphone_core_get_current_call(caller->lc)); CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(caller->lc)); - } + } linphone_call_set_next_video_frame_decoded_callback(call_obj,linphone_call_cb,callee->lc); @@ -1548,7 +1563,7 @@ static void call_with_declined_video_using_policy(void) { call_with_declined_video_base(TRUE); } -static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* marie, bool_t using_policy) { +static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* marie, bool_t using_policy,LinphoneMediaEncryption mode) { LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; LinphoneCall* marie_call; LinphoneCall* pauline_call; @@ -1569,6 +1584,9 @@ static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* ma linphone_core_set_video_policy(pauline->lc,&pauline_policy); } + linphone_core_set_media_encryption(marie->lc,mode); + linphone_core_set_media_encryption(pauline->lc,mode); + caller_test_params.base=linphone_core_create_default_call_parameters(pauline->lc); if (!using_policy) linphone_call_params_enable_video(caller_test_params.base,TRUE); @@ -1605,15 +1623,38 @@ static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* ma static void video_call(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - video_call_base(marie,pauline,FALSE); + video_call_base(marie,pauline,FALSE,LinphoneMediaEncryptionNone); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } +static void video_call_zrtp(void) { + LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + if (linphone_core_media_encryption_supported(marie->lc,LinphoneMediaEncryptionDTLS)) { + video_call_base(marie,pauline,FALSE,LinphoneMediaEncryptionZRTP); + } else + ms_message("Skipping video_call_zrtp"); + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); +} + +static void video_call_dtls(void) { + LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + if (linphone_core_media_encryption_supported(pauline->lc,LinphoneMediaEncryptionDTLS)) { + video_call_base(marie,pauline,FALSE,LinphoneMediaEncryptionDTLS); + } else + ms_message("Skipping video_call_dtls"); + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); + +} + static void video_call_using_policy(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - video_call_base(marie,pauline,TRUE); + video_call_base(marie,pauline,TRUE,LinphoneMediaEncryptionNone); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } @@ -1622,7 +1663,7 @@ static void video_call_no_sdp(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); linphone_core_enable_sdp_200_ack(pauline->lc,TRUE); - video_call_base(pauline,marie,FALSE); + video_call_base(pauline,marie,FALSE,LinphoneMediaEncryptionNone); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } @@ -2066,6 +2107,21 @@ static void dtls_srtp_call() { call_base(LinphoneMediaEncryptionDTLS,FALSE,FALSE,LinphonePolicyNoFirewall,FALSE); } +static void dtls_srtp_ice_call() { + call_base(LinphoneMediaEncryptionDTLS,FALSE,FALSE,LinphonePolicyUseIce,FALSE); +} +#ifdef VIDEO_ENABLED +static void dtls_srtp_video_call() { + call_base(LinphoneMediaEncryptionDTLS,TRUE,FALSE,LinphonePolicyNoFirewall,FALSE); +} + +static void dtls_srtp_ice_video_call() { + call_base(LinphoneMediaEncryptionDTLS,TRUE,FALSE,LinphonePolicyUseIce,FALSE); +} +static void dtls_srtp_ice_video_call_with_relay() { + call_base(LinphoneMediaEncryptionDTLS,TRUE,TRUE,LinphonePolicyUseIce,FALSE); +} +#endif static void call_with_declined_srtp(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -2342,6 +2398,10 @@ static void zrtp_ice_call_with_relay(void) { call_base(LinphoneMediaEncryptionZRTP,FALSE,TRUE,LinphonePolicyUseIce,FALSE); } +static void dtls_ice_call_with_relay(void) { + call_base(LinphoneMediaEncryptionDTLS,FALSE,TRUE,LinphonePolicyUseIce,FALSE); +} + static void early_media_call(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_early_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -3568,6 +3628,8 @@ test_t call_tests[] = { { "Audio call with ICE no matching audio codecs", audio_call_with_ice_no_matching_audio_codecs }, #ifdef VIDEO_ENABLED { "Simple video call",video_call}, + { "Simple ZRTP video call",video_call_zrtp}, + { "Simple DTLS video call",video_call_dtls}, { "Simple video call using policy",video_call_using_policy}, { "Video call without SDP",video_call_no_sdp}, { "SRTP ice video call", srtp_video_ice_call }, @@ -3584,10 +3646,15 @@ test_t call_tests[] = { { "Video call recording", video_call_recording_test }, { "Snapshot", video_call_snapshot }, { "Video call with early media and no matching audio codecs", video_call_with_early_media_no_matching_audio_codecs }, + { "DTLS SRTP video call",dtls_srtp_video_call}, + { "DTLS SRTP ice video call",dtls_srtp_ice_video_call}, + { "DTLS SRTP ice video call with relay",dtls_srtp_ice_video_call_with_relay}, #endif { "SRTP ice call", srtp_ice_call }, { "ZRTP ice call", zrtp_ice_call }, { "ZRTP ice call with relay", zrtp_ice_call_with_relay}, + { "DTLS SRTP ice call",dtls_srtp_ice_call}, + { "DTLS ice call with relay", dtls_ice_call_with_relay}, { "Call with privacy", call_with_privacy }, { "Call with privacy 2", call_with_privacy2 }, { "Call rejected because of wrong credential", call_rejected_because_wrong_credentials}, From 9b364df8f4c371a349ac4303b1662886aeff803d Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 14 Feb 2015 10:21:33 +0100 Subject: [PATCH 407/496] fix mkv file player test (was broken due to hello8000 changed) and fix assert not working on windows --- mediastreamer2 | 2 +- oRTP | 2 +- tester/call_tester.c | 13 +++++++++---- tester/sounds/hello8000_mkv_ref.wav | Bin 0 -> 183200 bytes 4 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 tester/sounds/hello8000_mkv_ref.wav diff --git a/mediastreamer2 b/mediastreamer2 index 394858138..a9e3a9844 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 3948581385b9521c17a54c05c05d613add95e631 +Subproject commit a9e3a984485ef8d22394d06fa75497296daa4c66 diff --git a/oRTP b/oRTP index 7822737d9..22b81144d 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 7822737d9cce52a956594d9466cb6419595ed7a8 +Subproject commit 22b81144d313b58cfe53c1c9aa71dcf22e1f43c2 diff --git a/tester/call_tester.c b/tester/call_tester.c index 3dcc2a270..bddffa0b1 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2230,7 +2230,7 @@ static void call_with_mkv_file_player(void) { /*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(hellowav,sizeof(hellowav), "%s/sounds/hello8000_mkv_ref.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*/ @@ -3563,19 +3563,24 @@ static void call_with_generic_cn(void) { CU_ASSERT_PTR_NOT_NULL(pauline_call); if (pauline_call){ const rtp_stats_t *rtps; - struct stat stbuf; - int err; wait_for_until(marie->lc, pauline->lc, NULL, 0, 8000); rtps=rtp_session_get_stats(pauline_call->audiostream->ms.sessions.rtp_session); CU_ASSERT_TRUE(rtps->packet_recv<=300 && rtps->packet_recv>=200); + } + end_call(marie,pauline); + + if (pauline_call){ + struct stat stbuf; + int err; + err=stat(recorded_file,&stbuf); CU_ASSERT_EQUAL(err, 0); if (err==0){ CU_ASSERT_TRUE(stbuf.st_size>120000); } } - end_call(marie,pauline); + linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); diff --git a/tester/sounds/hello8000_mkv_ref.wav b/tester/sounds/hello8000_mkv_ref.wav new file mode 100644 index 0000000000000000000000000000000000000000..f91203cd8ebbc27ca270f148e6b8f1f7523196d2 GIT binary patch literal 183200 zcmeFaJ&aq)w(m!>DXC|MGoyDe@4d23!-By;0RsgL6cC0C&<|sPfnX4}0tWK{!cag1 z3K%Hpz<~k<3=}X>z(4^51q>80n1F$T4g{Ei0tN~gOhCZ$yL|8IoZ-xLtNG#IuU7BV zJ?A_}PHfT%Pjq zzscqP_x~=JE97qHy8o{K?_P7w-~axOz~2%0I|6@4;O_|h9f7|i@OK3Mj=5l-s#`l)LHURdMaTv~?$)^K2CFh?;M+btko!-4iWK&F4fZ2il$(XEhb zhHWO1EQ5YqIPAXdhSd&bHL2ph8W%qE?D-Cmge*a;gr0 zO1iIRzB}B>sr~o){*aD~p5lx7ri?|PVe*DgU!xM$}U&q+HEZ&*fU08!hLP}TG z5w@FAEGHfbD#gnqVf~pt#a{65cW7AVIl_yCx5#SEu8JByB(yUG)iztRtxVs;x5OC{ z3#3F#ew2OCmz@jGkYNzqhd1$_%uk5RgWN+tUJ~FvIEN<<;I3B`jCu#3uHoLLuw0 zn7}T+QuUd)QibF2gp?2TqwZ;+pLG>^D0b6ok|Q=?p{B3p)MIXbwa(Ts?ZF zZ=w|_#_=osGK@nD-HUTq*JZ~7%h=0W50rxn?~CIh@$e+scJ>>Zmth(l1(IQ7*|xvI z_4VT!0)M>k>Pn9*9kaB#B%jbjbv5Y8ex*aKGETxExMtYK@84p29p8-i zzsAJvbe+#YAw%T<{cnbyzgO+4h3;LaNep8@ z+sf#_;_f;s*SFQkKq~vqj%51zx4&MWUH#WunxP!O86DCUdYI8I#n-vI&h3@w6UA&V z+s=>;?eo64CXPovacyj8HD7NnL(AXzlhP~A3%cbYu*rV^TBkC576tp^=yUCH1DEJ~ zv+sywvc0$>!!h*skLdk1h8cF(f8{FUGeaiR#6ZZSS%h;Huf*0>OcVFom;bS3b^k4j z*QpS@tltYsXOh3p(chvMnv@}NgmfmahHTZmpfW=*(~Cc%B0Ab&9KG7QLNT-AOcO=dvsZc- zxMltzL+(0ynJhDjW@ujFCpXs-%rq^2#XQ>PCGTH`V*Cb{nRR8l={b*OxW`uD5U53qls&f|^D&=spKt5TY7Osv4_-4p$}kK)(;6eIAReE=RsFQQCkytD zZ-0-e{p=tT51~@|dUtqFsSY2Zo>)sDZbnRg{60Il<&|+vULyx~cJR0w?G@G#UM;rd z#$G9UrjTY>g1Nnrw-Pot7y1*qx%Y>k673(7rbK^`X^cF|mHYChMS7P$nOam>-94xXjZl_SmC@(#F?Y&`b=;wjxK`a0S6lo*J5j&i zYQJq+yV{WBTbh*E+aw)jV7)(IB4_R1nZ<}wEe%1rwOkdoSPDY}ttBw`xD?5^ZT)<( z)xagZSkS5lC~I*Hs|jqqGIS-=Liv(Tx%`mojeFjqW9s-DxKZaaZIip#hga--g`9?- zg|@!qNYrNAO5ZxpQvG5G@lfxzXS5bJ;QgL6;~h47m#aR)v$_-d=C9X;{)&z0WP8@1 z^(SH`R`=2sO7oa(yZoIcO1x8yL^f(w7py&(uJxRVdMxxp4n$k)@|w8Q+O$E>{mgG@ zq}PS5#r5ym)1uYSkXqpEJ?fKEl6$eY)o4rXyf4~y&ssl#n{5XQQXKXpM`4?{;ViT& z^vYI)hhsGLcEThyNqqF)T8jOTJ&S#?`h3h$u@Bu2OR=V~>_ApIIcxD5nFadlb=Ym- z`Z;O6eB4el40JOO8oCxTmFvJ%M3wtze%~jagL8RSR{}vbPqh6#4iK-|oN9k3I9>KkO7}_UqQWP3x4qraw^B}dNMaxx=bDkB$AGk(O z7hX=}^dli7ulD}1XEi*$qdW%fA+w-ad1hJ~+93*ZqgDkj>X1c$5NG6ByA7l~`ss4p zYos$S8rp@eaRgU>0NCO}O1fmu&9?-)c`_r>p`erDLI;VlM?=W2<4efs*veznlffL7(`F zk97yy9uWnvx<_>NnC~c|jiP%$op&BdWFq478hfI^-#9GORV_LCDRtE2;We%0N+zL; zQj$@xZG;X=j}{hZ!dk>FY)Ku`0>x6EMMI5JBlHd7-_^m7>6(z4_;`g}U+L{Twr$66 zY4e=A5wqvg9lkD;w`jPn*NUyMuFyXDeZcX+&lpx+5-&AWB;p?LwS+GWMB{9n3BA>l zbLo!owCb8PTC$q%BD$T>rXK+go5?5sB+><^j%Pcb652^#d>)-M&q8SFFp$>X9v?${~&SWU6it0j)j(8p&Qs=p`P98bz**nde&;R6?lnM zY=w5Y9iBO~A#@}xHNG<({SE8PbS*m*`QqRQ^YcyJRefAZMUM$>)%0J(4@Wvihf%%^t|edrz?$& z9wNT=T4EI%=vG*Fpc(phg>=*rNM6;Pp&9L6w}Y?;DVJ7xiE_nN;1>wUd8T!NQif{m zg^q=G{ZSLM>#|?34_y5YU5q1Hdzn>a6#1LU*zM?9JeJvXww2jkc&*@8jk($v5BCE7 zkVqzzz$&X##QgJUNH1$8q+lZ0OLztzomx>J88}`gv zyyD}pTQ3hU4kw2mrE_Re8kEYRMA`1I%6h*{Wxk*7C#j6~mciwBf8XD?DdqiUx7jUH z8SaL={;s{NQ_7UhcCnpOhLmplc6-XvO)BMdWt}_v+_|8h^1e>J6I!l7-+M+uPjb^- zIp5Du^7DMDFet1GwWHcm?`U+iOr=t^EZMj8j#`(cbhIwaQyCO`sk92ULMv?z3KPz( zDPFNIl#cvFtx-#lT5743j^b=~?VK7~lu}_1O_TgOUt-%*OUDNJLB5$^k+WXpR+LSy zm@ntsd}3?Eu?0u#`8vm%Ts^0Fm%kH!t#h6BtkW&qu=Wz|4k%LKZ;jGQpHgAYRjoup zDIHnUW|jJj`Dt#PsF|khhPiCBQSY(N&uGgDI`J0$(x*6%JZ7HjC(fveYN^>nM_OjO zpO8m4A8&qrj9jK{n~(S0!_?Di1&%Myl23h|^h^!wAkCN5`!a2H(6{A&jkbl()eg0! zed~RuZL_o$8n{hYs+r#5Jr#=g)Tp_J*3Kzj>+g)>UTEzoX>K2#>Z7^w9mi(WwoZ3> zr(2VB|9oGfPTOduRyxT_r2iH4`w_Q@NYu_}prADSNpf=})k-oMd#rD{N7s{OEI8LsnqS9`w15ScFy*(7ZS}FW?Y=?VJ*4!IcKXzh{MGzo=SJn` z=w{_s=T_xbt5E$?-HtE1Unm#wUKrh|6njUVV(sY1+;m(0GX65Ym|}&qeW}nXdc0QX z=kMhfyXpl63j5gHA~(UlN`-0eO`@`Eor%Uabd|xVydNg3rB2FlTTZrH2Jg~go=~1a zbB(_FG>7gMMn~8ulvZwbD9am_8{Pc)d<8Y*FIDQU9VP|N6``1RPY%*r{j$2CwcW{~ zRj3q4@G;1rl2@4Sx)Pz>$d%ikfU9@)%H1{4l-Z|h+ zz_|>jeJFYade{@_b)aZ@qjPh1Yj!;Qs_|9hc#|7{0Uc^top&#``%$rSE3R1{HS^^i zHBFZU*|{~k(J8(^ zfDm;<@0aqfbr>C0ZjEk^Kx%nZ&u{l&1Q%s}@cua0Lf(~Pt*`|Rq?stIo}&%BHniQx zlHY(-8Kn9+K}z+Rx`iZ zRzYcXUPa%kUtS+-c;w~L2z{fj;-lPD-9`%+=v8&wIy}XKo`Be5hi2`j=o8wu+oEN4 zw6TIm`Wb6{b8uE~h~F$?Wi9;Qq|iF5U;!NvncZ66m_zLZZT|UChR5+m9Zgvv`PD@W zYyA-(2l*}@QcY^(dG&=)axEmH^$*aFHM;xZFeIP%kTWmQ<@O#lu+r*wg`Qg55Ucc# z4t^|$7kp07)TFja^1ZdhX(b`nxz(aKnxmbkxi<2sLeUBf?QX|k%KI1G{oycxig~_L z)OQc?)6a6v{7WdB*)ldX*iUyAJn~z7^T}a=g+bG90Y+7*62&PJQ@8bcFQ9vfhp?}y z(W|wRk67NA-D-R_JMP?2JF&<7aSnvOEU2S;frfqQZs+^kxt|W3TpJrhR!0MRk#!zV zfKQv_fo8~Jwil~12t_Wnzu)YZd=}uMPD_{HBGdrO8j@Y%6%%iTqyaZZAR{dmG+XWV6TVm4RNeQi^ zRYT;|xmvIs_%cMwr+j`5?G2} z=j&N%`~B?O(UFl|_k2p*&0kJ`we90v>F7R^z#ANQZZ41B9=cofVyh>pV%Njm1idO@ zom$882CD!-Hy??0o>PjdBr^+H?dgIDL!&UbFizOwD@KW_hd`%jIp zy0-kM<}b}Z7yr}gpT=K0H)mgOZ#TZ3eKW(}ONH+F=`Wo5^Xc#7v(?2q-?`QJcKdy! zRJl1ix|}(?xoV-CHc9M*lb8gJ`0+`lWh4{!-r$@@RoNaEu@MZhL$C z58Hoed|%FY&zrv%KR17EZccx#p5y1fZg3Vac&l?`kRN|J{k8e$)6b{B4R>f~v2on^ zx>2I_Tb~cr?dk8Qzn$V|Pk-%xneWvb^k13aubXES{M2GwhVOMA{l6iijc=rX`){`Y zIQwq7r-ol>{kP_Cr@yVvIz@Qr-0bURu~c|*7@u?e&qZ1<;bY+(?d9`z=VlELEX_^s zqFhWtcYq(5?N@kZXgZVo6>{xh=Sw`*@@C_!hMd##_8%MHEVie=6+crqb%<=|X5$;q z{hP)&^dg7uMf3OOucv=*{;Byp{^ka#l=vJsj+aN1{rLQJ!?|B=VMPx^WRx!*eZ-nT z6Fj=~h5G5|xz-W#RNua#<=eFUPmS+Oht%?aIQ^yhTb1i7#l}}~U7mf{x!J=KK;u^m zGS$D&zG{3o`*wD`yovSf#}}u+o&Je)zjn_TJ7c}qcn&iqOi6s+g;_wmJ(T;(P@a(h;4d_6Bzw`25(bH6ly zZT^NO;SoxOr^HQTe8%eRG-QoePxejRAljEL|MT{CH&4s|q4<9l{}b~1ve{O!0cuD4 zXQky)^`iMFX!q$W^fGRKnue0uUy+5IiQ@ja1w30x_R!F*yzaHc}MP!xi7DWGf`!BQaCi&*? z#eYxR>*l6=zR7iNE)%BU{axd$iEV#I9-o`PSGP}dL=bqy#<#QYW>{XI_yVd#1$o$W zj`kCJF5*e_ucXn!l+jWqLmQv)*Bfu8s98pgz9X;E&dY zk(_H=|3KUS#TI|s-xog@|4%tT-HgA~=yl;uO}xDY*^@(4tN&ND0grihsHiWu8YSq% z+m4P_7w`-+@UL~lV;}1tlmFbJ>qrIUS7+TX8*IBr>y^MgTL0(SH;njxLD!PZ$7ch) z9=O9Bt>12Z*SS&MHaCfPq`ukC=?#|l2Sj(2<9Pvm@y7UjEWAozG^9tb9Zu+zKhwjl z;2&!^8-MBV?&jvk!L*-hFK_Q`|9Ms#9dZA^+CCioewTh5OA}qa&-b&hTJ$H>{~zK1 zm+|>>-y&{H2+$vb!13s4v2EgePSMMz(oZqLy951Qp`5QBQWSMQKCfPEwmA^!1OoD> z&i~8y`{m8*7g|_r>&;(>+sa|h_@ZH-moS(eKf(*4TS>wqc`sKZEdGKp{Anw?!n;#_~KR#b!%_S&f{9>H^RU@OK-1xS0V~kJ1zK|qHei>i9A{JH_ zXu|gmY=E9s8~f!HFWjWJ=pyS!xe>m2Mx@>NW_gpy#C{AP(8MP~i?(=P--0W`m!MgRJbjqhj2HGA;Qss4=~qj`oW0QCyJeB;{&y?o=ibhO#6 z)GYcyD1w^tm&I+--6(0;}(;M)lAE-h0R2 zLs0G9L_6&B>~Dz~8pn+NE>7v$K=;=sR!j_vZPTxZ4${MQip_*@mAHW`@vbZM@SRe` zjw_CHZY+x};zxSP?O4yh0UdhL>Uoz)t8!=@h|BineV<}vJmdT2VT#`#DW?>BHSAgN zHlv%5bKUJK#R{kR74V_87P1-{sW38J5@C&wT7~EMKJ~xJwO#aKy6Z4n9;6ZO(virG z<-8<^%TZbufp_TI$eL?pN+ZW~Ce815@a4nJ{4g`;1&1BeaQ%tCS7;F<}HDYAs@Mc^L7j9o6$MwCsy6 z<0NW^gB3NlLCdJ_HshKiQMyz)GO3~c>2CeHxH+b{RUuMdGXm@#uo_3?U&KQ$+h}Ev z(SMs(CzKu|ic|7b^d9>mv<(w=L+Be4$*<9sr(gglg*juXd*m1TDUuKBg1+ij`jn^H zj>yoMi>e)3_{t~X34&?dGs43zl@k%BV!my)C#pi>+%!ZJ&>6c=8SYoN429CrI$2d=~xiFuSy5pua^;$ z7;#>08Bpg0&dG_;>I0B+6@&AhG3OhzKW6!UU=-~NjmKQ)%G|59u+EN~QFM*NTe4;+ z^q-EYY6mmTk;QXtmSyr9;MU<9E#n2{Wy(s%oVNKk=ba*7Z$2_|kxyvvAxF=cvw6cE zC)8lBG1`c_t-rz%>$mn7&|-c(W**JsMa?mL?+jK@?dm>jlf_8PNkxJHHU=cKbFgNWFODi$2Z~wC~T8WD1oDE z5T8-EQg{SK&hNa02DP|?<;az@F#Ua-8m8QNONRDHJbKk02i-sC9ne=feY}S_Q{> zz6M_SP4icbc?X4Mv7E)56?O;5EXzPp7KWLW(T_H z70DcT7~2!0U%W@h#zciSO8?J)H>z9J{q$?)@?K)@KY<^r_A>vH>ai1kuqN5&qu{p z;T3qy_s|7mU1ZVaw+fa+>Unk0dg}10-#26VkY02~z5RU|O3g?*>$lwNUG(2zyO-87 zr3*#s-VnO#N&hxbHNooiz#X(!Kd&cxi;tYrv##?4w6Ft;6nY_}xqg0%KFw3D^-F0O znY=)Qr3||P!`jiDU$&sLjn&t&d+mRatZ#y>25EbN{T#!CNcU4IBk3~Sh?ksb)5c%# z_`CwOM_g~5;f&paNMW5X(GGU24yNd?!h8y{w_j!aUqj0VNjIbnjKjXUmg_Fd^0H6$ zzW-do8z7xIy49jSONm<76nSf>DBw}@0zVy`q3VI7`a1!oHbu?Jiu#6ipgVQ6LfO>e zHMmw>Pw~|c`S^^_eW-nRU>t#`sN;pmAd;)@qX`4Fc!Ew0I5JPVU=%tp4A7rmVUk~i zZ;P$DNFUYoh3t!ci)*}sbKKYBx*8v^Zl+`Fe2ufE^qJF!TWfyZUZZ7!h$T&vEi!*kBsTC_c&#U5pXPEDY5g3kA#bD=U`IHU) z=~IrqVs!b2y<>XKB4e*UG5ebXT;t=6dGR`oOlyp2?&l`^B3njN+dU(9?CUdj_8c$$ z13lj-{6LGXPiWhHW?JsxjqebRd)0fc`-s#}u*ex>$T({B{(?y1C+_^2o+4IV+oL}u zCu9`lx`!4u^tk&&I^N^j?fw(~W3vAd>YdFde@V;EZZj8_?=#Q!7HuCgqPfczZ@Ff+ zXOy3O)snl`d)M_kQ>RY8KGgS&BGA^?Xljmn87E?qpAMVdJ6fONf9LcbFR9c1Odm6& zhB?0Q11-Lx-cNAWgWD1JYiZ<3q2dKw&vJwP4`BF``|Z&jmDRYi1In*CLT+IH5Cl&W zr|)R_Bb43YF5`k3_YHSFDAej5RZMqttV^3RR;WYkaJS}Mg=>bp3VUU)!MZs%r5C7k z)iizg@imUTESud4v~Bkv;X-LVLb}Wu<14hkLH<$lmZv#KRNA0phACUdMCDXGvf|1g za{B8P=ceox(Z(_UwpVzJ=507K&CSumZeBYgdx)NTyv+8LE2e0swXbsM8P{n~Ue)F5 zImPP+{Cc;)UCvv_no>pITLo*K=WB(q2Cif)vkWcNsKI$by~!gq{72d{+8h&&xn|-s zygTb}lzSJwF)lkp#(GRg3hVt(d_P3LJ|k6EI^5%`A@Sr}Y{Gckag_5w6(p;k8JL>QU(*+xCsLd_t=~P?Hu^ z%|FRG(oi2nU;EzB``g>wzeZ2&eRU`=Bi9M2HK0WQdzV^PDe9U)OOM{7cT^!RF{Y6o zwvTGiGe#pv)Le&x1(94AET-_QE*O=sus^M*R#@}9#@^AmlEKE=|^ z_d)3iw)GlmwZUeXq9g80F}SgbT(#k5fn1FM%VoZ1{&*03M)(Bz^;w5C(LWlSUDX~Is9M8H{E43WjE~u+J9vT~cB`g@m6xEX!l%Jq zb9iZ_yJ}F_p)T_o%=aezK5*S_TIdlgR;a_(5|8jMZ-_2f{emZu+q)_2Vms!3^gi#C zhq{C2$l*`W@tThaJm4-pwm$bK_8m*SrG^?UyrFK_V-DGxVqcHY9OX9V_dR30*F-`K z@M`CCVD+3c{d|XL=|`?@=09=vGxt6RRc&rcM0>^@!drCkQHrr{b8bwlll&`uz!cgS zwB!uPYpyX$ujbFFVajz2q;tyt8|L+04^_^8Wb0{a^AoiEz|{kyGe*v6*M=6%Oe#tB zy_~-X6-8upkK+qu`;_DM%KA=wzEf)2uxFoskF!SK&*6jFPbeJID;oE8z)zj>iJ>u^ zoAol6@(JYMf!ZU`bM@9odIB>z>eQ3O%}3-ir6w~f@4(enh-!;b#$Aq?eadlU3T9G$ zk6KnB@&GFCK<6DSv9ctxLSJS%=rKw8O|HJnnj*`nwrT*W8n zpRvMcP+<(~HJ{mXP2@CD>yv0txnD}|CrZwci1LcO)IF|$N=s&N><6DARimZITs`IN zNBq`nblz;5{_qXxIJ4#~`eV+&;(jw>4>|8TRiCNRE3C)tlJ@)~XT9FlPU17=sBcp+AL?k>?3jqDO>g=B zfCQu|ms)*KZTGP=*H-oT)-G;yrC!4*=`E90l}}Pq8O(&2)n+e!`RJUn(5YJHMg!Ez!Q-%Ta}1$n0^4t6Y)Ufd}IQTd@uM z?av&2$&t5gceuvylXUJj5z+~Awbl>ZDaLxCCs@!K#ayb-2#4?0CwYxtTwQs__Z_hJ z3B~7ZYgg*leXbDy`y5w?Tq|b=^BG7va()E|4`|b<%=p1kh3&PVnfavs`?UQA+$yy8 zk)vivJBg8|Yz!Yjb=n$B&$Ira=0Xn(?2O@3tQG1?c_6 zo>>?7wG-n(rT75qwYCm4-iK~8t#7$X8+n8lxc2N7A6r-dL^0$n{?aJ!a_JNFzHdN2 zT+iI&diiChmtVJyqFbDcxZPewZ||K(DfY>FXk%D)?k-2P{K%3#W^0AbJ;q-2`i>GF z;}f*3$9ztc?Tpzk=Iyl?L|kEf zVVRiONO5(E{MnkwXhM9{BI>B|-AeIC@ACYb-vLL~)Zx~e62D&A;*NFR7|Xld^E2^U z+ezOg+I6jBl|IydDdg}D#Ff#{=$szl1pe0`W)a~v7;RJ3S5I+YnMih;c#R0TOO(7y zS+ZfkXG5!L*1E|$hLt(^iy?PyXvw@>_kwINne?jL9BUJ!8g&hGbE3H(ZB>|c zpSddGyGAMH99e^N%G$KkUrslUa$JKmBO5-t>H3w`IU^F!|GGLKZr7YEF>~L!wY=%t z)9Q9i_P@)zx+W`shT9Q1$syT-{TRwPM{y)k!RA|NavLhwK3LQeBW~o^`Vo54VV%U5U>6I!0aaJp}JMNYoC_ zXM8%8(bhg%T6JB;MH?*pJ0(yiYW{$|l^DIviNh;FNvtIN-c?-X-HLU9aCKJw(kd{6 z&)mug+&aZ}TJf;@vZ1B+evxC0!?{keNS$ZcjP_99J;)8vy>-4;V4V$CF?Mc)THB0w zI)@1;^*M?L?G{jUAD@Co$NaLhIIJ3PuySiwVpi+un0Oa%k`9H<>kI9Y=Al#lg{-xgawd4f2XDv+YOg!Xvy| zH~$nn`$Wv6v>_&T^Nl{}QhWJE#pJU|Z3|#B55l5{CzL0y8%wk)Hk_}#UvmK(v zj+*a+%p8=Lu8vGPGb^DrU)@E5cXQl-UPVfaoqbh1?-;Y1|B0T2@iKHwxBcA*TC;cR z6-1>3MQeUf=>Z=?&m6ypO=|zlFLe_wNM=9XF3=t7poRss)bN?ZoVGMVMzd=xU$7*Q zukTjr>4pWUo*d|>(Th2_ySkuGPtv9)N6?dfk9gi};2K&==!vvQN#mebL^jNwb@6#1 zgC2L0ixw?1eQJRg?CJ+(%1X9NN@iatOujCmiR(O`07|&m8N}UoPYVUxJ4FJ{FfORY zk^LN6j`7i(9MVQ>2GBBrVzYtOt&*uC=ju7%N(wIv9^ALt)%iBl=Ga%uQ&X0%Jkra3 z+bDJLRwFEQxRVQNV%=MR=d1`+Ly4mn+nLZ`&(PcscsY-{0hd6f1Rq7@xS_{^6A)Rk zqN+<>YKn9$!O;lSSx@sk$n;V+%bR#p=ZC+Njx}68V%=*UU9h*dr)lr&>3;kD_wewB z`0FnE6YqKPy=+=!#63R}Pc;tC_rNu}X)RTJc$IHyQ6hD)G!DB5#z6_*){F{)eQK|DNTxTmXQ&(rx`RQ)Wwc1)omHw z(32R+j~Tny=zW~6tT5+WVSc>BN~2MtVV-w{*QXX+HUG6r87JjiruG?}e1?;ISZg)k zr>B$(Gt|ZspFpCIR@9u&|LspwM60xYIzXNUWTxh^!Ukx0jR$V5X08Ulw&{yC!x zX(;d7&|qCd(3nC|oBFrdy)o!BWYABos~6^L+IW(miCWa+a+2uk5(822{wX!o(4{dH zlt3Y)paTlvkYv#*nj15hIiwblOT0+IkQ(ay0g^C>?V1gBOGzjPbPNif5(hWv-KMm! zHeef8FIL4o56XB1jsuuL9fiT9eJ3n7Qzk#kn`AhfSmspUwN-|2RkFsR{a9qF6j zR|0{+ob6^_O&IO#=%X~N31jfLbZOuFE65<)uNiwKO`OrMbU+|U;b?+1?HB9tuSVIr zWrKA&H{Sun$5=wF@v?Qj)f!5gME@@jYjg#)LCp3u1iZhGb(Y{?J#5h-txzRi7<7rr(nfRYl2fD;}6)p7s0qvV%F)QtSU+_QYw~r>8Ih^b_$W4ktj-n3o zNw!o*gWjWq1KO|Ae&q%{r}mdVdvaq`EYV{~+(R#b{*UlT4Ob%`S8guxjDv!a*=#TE8O{A9hdPvh zg6}iXe+dOzKow7Dv@*b=YK1}m1*o-=*vd5)sjO08p)c{-q6hen7A<#*SiD+CoHcWe zFzb}j39NTYyV&h{^`gBy&Y59TqieJ_#_mP74+r{HvqY>s#U zlE2BS(iQb|FVs8zV2PR@qO&!v9|~r!^-im48{f@tm3YQx2%SibRif1|^_?qjYX!5k zV%=p-xlyZj^Zgy{-{*Yobz4WhqgJ6wUsWf@o6^HIT~W_-G^{a&g6QiO&`{pnKbrj- z7;6?mAbWb|_Uzl`4O&uTwpGv@pRIVtr-g;uD{1X@{7WASt7zeR|0B4x7%P_Z6a2`! z(9gThWJO$s|8q?$;{hocpH=B0MPFMU;)(mn!O?P!xN+%<saNZs zPq)mj5w}Rg6Z+F?{^g;)TWQOCb0}tNe4=ZFCAX0OhHJ|BfW=l0TvMbh#%E(k2Jl~3 zFB1;-C`34Ud>~Qf6%GxanJM$sF=hZLm)eMoWtjJ3=&A_e9z(B&~2wL+JX z$8M1C5sS3*&H)rbyh0mYbf&#;F>+TUo+OQEA(06h<27&bhxkGwl`dK}KC2Qzb?Mjo zA^{Ek-G;J2Ls|2bTZ72bRn^Hh8s9QToDW_6ZGh1dh|2B0+Cm~&NYvqn5)1=E2|Q{bn(nm(WZ7Ii5PL0&@J<>df1ZD z7xL9x;Gb?%@KWq!8+F?6z+ZpgrtJ+JwW+JjxBS>!)`-NM1^9&Ro5?9dhouOH=Ese> zZ>M^v(I<;Ec42;j{IhuI9mRv#85-T3zzbW|6CDHzxx?khJ+ECM1 z!t?@N$^ywR;Ic;6>Ssp6=Hl@k)K$WBl_+!MWgOvLnYq6=&}1$8vnoZJ?1dLl)K8kz zPJOX67iE0^I$>>eHG--R&*yYNs&gaLTxa&``zbVS5=B+Mr%*M8sx5uWTkv*GvR+-f z)_g*TPLZ)FnU8t_Rb^`F>t*p3XlLr3u}Es}C!|K`^b4$WoLk^ECe+lz(buh0UE(EedVe!`t{6TcQXV9_@Sv$k z-6EkiO;o8{W;>k+(37;OVR9);^{Yc)EM6nYO5U-R{@pvA9el{$ktvRM{l)yPZ<%pS_8D5DxCYR?vFP~yE+OS_?0@9^ zd-(AxB_%gz)SYdKt;jVy8)Gr||1q8Qei8RQGir&m92mPnipdHk? zT6t;V)g-MANA)F5>`MEnVW$J)!6*alR$sNgw48Oiro_?SU#{wL#Tt70sa|`f=TM;k zcUI9Hp7vnA%DH-rZ&)z1=REg2?6n2b>xA?Yi|-(_z`~s1F}TuSTCcag{ z`Pq9|%@P?-@uDlFz4AFI;-V(;2vi~KvYJ6nZ?ITva_&Vwoe>QmRXX(PB^Kz-IQ7r^ z_x7$1*FN8~LCUke-oMM3qYCZQZF%q9()GKuJPvA&S9YKt9t`99G8P4^|^cofWT1Jn{)OXa5lzfXTdWAVMHyU(i z$~hJ1SzJ-}2wk1$y?aTi*iYYZ%WVt&BOeP9hI{0EJG_l#O)ON>`!jls7Syj2S~Q4b zaM~jaTI1K!qg05N)puS7W((en4@Z)hYJ#1nsleyoX%1wV%;C zy^4NAImZ(oZ#br(^5`RG@@kY4-avlsXZV#k^ayA$(05x$~0#mWfWAx;(C-4d`Fajr+qxRMD(zUa!1D_WlO~XY_nCiC$jabdI$HW#-JBam=B)`W=1ICRa{= zLqym47Ie)irAsO*$aLf=I7yf-Mi9M%YmFYzquHzLJDt^Q(1Pm-w0Zvy zs?kxxa{r3f%|aO67|EOvzfte6Y_%XPL7@ig#|f)B7fgQ)fP1 zzf#9`O31F1bXE#MiWu7*)f7q84)uMsU@Oz@6fVtBHRzd~TW2(k9P}c_Vp$K>K}sjd zYnn40(QX-DhY71XJySjL*-zZmIX{DAdoz1_*X`Vn6mZynp*XG*C87qzXEI?~ zO5(XT<00c9qndXddzJ3*K$|!#XMcMX&qO3;?DR9Tu=v*U93NMvc-%EAuI;!BKlasn zB;&P5e8lEK;?k8l#v^);h)wihuBS1IJLb469O5H37Ij!JW2_cYnlZM$zHy$P4{VG3 zXSTdXT#Zr9Qb+AZh@U9NeXg%Cu8Z%8{NzL`q(Cg=SI_3k4cFC0B$!2x@@-45#>no? zLAQKlytw|u=q0eaM@_~vUL)snYGh?g8J~BdHqLm~t)R(Tq{@3e62F0*&w7fyD?W{B zt=SHR8SX()UR;h0vK+!Rdd?+;~ z{fT?5?IqVs!)Lba4c>!<)P7(;Rz|&|1@juNeRK_tZAUA%VQptz{~*cPao_`xcI4z} zN!*SZ4Y@k)O=?M-d5=wK<1aXFKkQm4SMbQMxcm$~Z)r!(xSQI+>{X)kSm zxZ=~~JECa6tI4XXL`rqMP#?cK;dhSL(!bgZ&=0U}4?p25eN~@g58bD(Iv@S9Bd8*^ z=_}kaGB~BxQ;OS0uKup@F$+A1<1)vjj)Z@JcQd+LZ(t!xj!7NQ*lYAIzx5AB-S+sF zO8TxPuhHUaJ%=*a3eSi?^^x-LoU@Vbf}$sr-zFc6+{llg31yvl?%}T|DQ>ByK5%(7 zAwn%3Ig_UMYaR5nb@~>2zRk`!se%lg9~maDZA*WuZ+Zu1je`+|y^uX#R)*|NQ}0x! zwpcY(f}huD%3Ua*f?H&(YV>MrV$kUAM)b)o=;;(6o^;OB9SpSCF+w|3a zC|~fs*p)%S{(4SLYUD%sFQY>>5VUtT)>@`Q_WfvH_{ciaIemYf+9C>F(882@8qnZO zgELI_q^^_I*J#;B5qg1F=(<*CHsNj34eu&Jw|$R1J6E7=`cSn(O7#og2*msBxco!f&KYW*WLog^)lN9$3+x;6nzyoCM z>RIhhE7a~qUZ3-tkJQ?;by6>FY(AkrW1v1|15M(wfzEoumiocjZQ4tv%yk1ee32~u zIhIt1>Kb~wMl+YtDb*dGQPfsYveZPqmCO9IXl`;dLfNcE2aHJv27Z`PT=h&`sIr2F&LY34$I5pOi`vl z@w(viP@iaLf+VNZBi>~`16nlFd`EG{&L?t>uErESu_GEIEHft3ZR}v5;%KG@?Ir4r zVyro(&hlP5%V1+G{&EBf^g-At%XOVUfQVk+=)G2G5pTBeU1~!b>!fkk90@pESE5X) zvrY{gFs{>%+j>}Q`w@!uKjx)}(7K>zY1VhUqR27nM|8tp$a@-4yaqob?#)iUp6<%* zFZgy(Z0FRkMtHrwoa;mNl^b+b&1j_cjP>q>2zQ_0cLK^%u3xwI8Aw&AG4imE9K?B*aE{)80}nng@HpAwC#+Dd(A!L? zCrUZhWqtirv^PEWlA24zsFQM&mbki1V2&cJ3% z&24J++x-&9^>5A^ko#$f$osK+^YllerU9Rv6ox(X(Vbp zTyO09mOC8>Itq;OlN#8@)+T6nXi0{735^cA)kt%8HCn74<_U=zZ7ji}1|4s~+t~X) z_1aHOpQ(mbd%(K#@*(m8^~C#%w!mJJ1)Ckr)Zxh+Mm;omgsoQmGAN| zrn5x*jNdtXp%Yu`6&=e-YR_-Sls`eWE2Lu1L*J@YtDr9BL3;_Dd+2owy5}6L=40-~ zHqEHpZYi~`?m0$wG~sCKPSO=e^!h(7QO%ZSeYG*>E3U7=x%jFpgM{)VQ6C)WH$+>l z&Jd4Lcw`K;A@P=Oy|%GvhItK|rFzYgcD|T5|7Awjv4CSIb z&&wz`!nS`jBGF@qzgBJ`J2hGvSlp6!sgEKDO4^vlk*=s4O^S}VuaZ5PjSsC+M_dzh z%K3XK`t4EM7T>?7<`T6wsP6^!IhK!+XN*2?L%-tyEz(~7AuTz+6?4ad(xXSQSD*2n z(YoDNsQ0P_@?!7U(dW~gjf-Ba3T+}iPaZ`bY2i}_g-N1Xt8%TrXxL8eFy|xxYM|p- zM|vO8631LIM%4lxFRPLIkk_=TJvJ^e6isy??9C@)YV66woR8i`d-XfB+pt{EE%$O& zNr>rX951Su(aQzqlfT$$4K4-5N;&(llphHQXg+iSk961CaaVReyWe)CAmrt*6of5!OiV-ifs~e%;T&0A(UW^olK0@(BVMZ~ z^Njo9!$J-jy5VE4-=AIW{Yo~=9cQg(wT4AYt#pb~#zWX~E^*;`i@1r2+jsai;~ad( zd3DXLxWc-!{I#Qt7YAple51^B{F?cmQ~IJA{bLF5V+?7pWv_CE2Ax2;$L>S@9ek>N ziny8;c*K@HvROqvkv-lCJ}-;jJ9xk7l{*}@cQZPBlRkQ^kLb^XDd zy5h=^b)ILpn1OBZjFGe&sZ4XO6jj3Qz5g}g&7ltUC*+LQ9RCTF?5}%={+?A9+cwcv z4XPbQmk#}u+jQ)I!u?Q89ev7{=*cy>tAtORzSVI)86eg%SJL|Z^zLz1+YYymHhKkC zI+Fu<=95idcr!cC5IVo-^XSGsptRfUa%7fVVO#^h$H?FfZEkk+y`woPG81F`?vtX+ z{nT~UtkqcTKBCX&QKn?ChT9>T$jRQG?k6;3x$l7MkJRjn*b4c}3TqJq*UF9Iw&{wC zi)Ma+T+s~p=;lujtk?L`-)%t7nO*)nLav|ZO>tnt^H8}~p`Uj|?EhVnnmV+#(D&BC zY(oPYoiRrS%vpDtWp;hA^OYwDqFJP~*_M&~98C2sCvfu?e#`J~E_j*NOG06K_w4d! zoBtxv1W8te5Rp&7ntXAd$cAU3e6xBNP4+EV$M85M2VX`;told(kDy#C)lPFQW-MAn zJ&wvgrZwcePs`QSU&=^$&K0gu!K|7IBJDEvYNn{3_g#Rz;fgrz#UV)$ zD|VbQgOUckbX`BQ9YXtJHv~0#(4zX#y5*W06#6uJ9h+X~(KPf>`jj#2m%pBUUAZ;g zHCcn+JwHyiMb-qIdq+L!tFrcIivIXCRSB=@s+(s1E$xo>ckl*2|KbQmkLUA1^<5o3 zogicAXBC073Q}gqzRWqcplq{SV%26YTtV~@Z5SZi333}H4U{(4c>7+=ub5rp|2drg zzSup;seuE~>wz(O>Ro8J&*wQJsU5VANnXD{-@oMv!!A^tAH9cs@46b^^$k!r+q2>v zy({n5U^GmtSkXEVn?lHLh~#?|JeNZ64Dn>7!pJjq8IEcu~d|{aqXRx1lU% zI>c_c8|}4&*Ys^~u?k!4At!U8a-?~u(#lfX6K^ITZp{cvUe$CMZ^8y=avd=Ap z+8U1R;h$qk1Nlr^woKlRCkA}CIB)tc`(GrmCDx|w_5Z$QqQ$kfBRDxYS5)3Dc8)&n zzk1~VUAfiAcF*A1{wjwpq-Q#4zs~h|N<5tFk`_sJLyl9&7Fi25+jtKvwz$ChXK3mcsjTrzPoZoM zZQZ;vge&`8{f(E~bwLWRgV&{}xU6lCHum>*yhj_E>Tf@$^)ezgf%^*m!YI)sRt;!s z9o^^usOYQP$i1KJTIu@?S05kd>a-<(phmm)_EP04wJEaf(*NntjGr9E_4n#xmvw|{ zR(Bh9wvnQJt@>Btsva~s2U+C)IlPNh=4YXbXUkdZR2bv4>)N<1AMqI2OM{t*1y}!S`d%*jLpKAkB;;5=`rhhSWrzpk$O{zT_h|dpGG*84Z{u z`OTS`5UVBq{?ezPn9Cd#*4UjhBK8uZT*ihMP$kypVzzi1bJ}L$pQkd!Z6OBW~B4IfuT8KPB|I+O)Y190*kAX8-4hLS;|N1WQ=bP7)9B-+rlxTHyn z{74fu!kKGf1E=Rn!-J+CvU5fNiP7s+lI)hmU>v9B`$*6JNlweD<~kG&LCWZ~gvRF* zO~#Sy%a2%@FW!KZ9#o`;>3*d*2+r#arMRhXk2#r$I|s0YU*EN}rvL&}u0Na%}~ zV=mv)qOM<2)ug^hli7Dzyj@i9+I2~ZY4bV1w_8iSr3;GGIsKs$mwlBAH$|SX* z98U2J_T{yMKDZ2RQ;@UR#s;4CIkn^=90@u`ThPje&uQ{2zS-;q>PpmL^lC9aoZ!_< zcn#Ol+{NFSTb*)`er`%J4$sDA<`&I)FW|mTsZxr0uk;;QImW9!DAZe7dpor-qQ_aM z7F?g=jPPB0^5@jzSZzgJWA>gf0&{NREjD62Si_rJ^y?kyHs@z{&9U@-yze7)z*QZt zZgJJ3PYRmZ^VeB%smyYo54p!T61kenaZ=P>0trjBQscPonBR?-BF`UrH2a{>v~S+n z)p;k>la-Tn*Q?9>BA4J;(LBkcM5lDQm6f0~XqWQGU}v7i`5;#@nfo>CYn?9-&JjAZ zsW-a9!BM^xn)mpK^~Jo1bahgZn;zH8QH;*z%Dl)&T5x5Xc?xs4p()DKox zi}0NcpQ+vcxdT?EB#*bq!L=Tl6yt7tZ2Rpldfd#bu@9ior{C1WVqROW=UpZ8ggvhs z(3ZA1!5RlxWw!19BpqF2r8PW<(V?TEr@0N*J|>!9@oeIlmHgH8w5zdG8#|a`Wv}4R z86ro*>fz$jN7(DE(m0L#i6Hc@nI~J|K^Dme=^1^#=AJ!KftWP?r&^c?c4zxv zZvX3(yOjU-7SeYr?ykhQuyCE?D-#Qcn8jDdakv}Q=MI&rtGGt zDe%NQqJCmeyem{zZnnq|h)vi3_LKgb%_(os8DF$_^i26uiiCWAam)zU=UF+&a}dz)o({eLE#qON{*57`>{^X4Cs3x} zb+*YIrMZxZ9~RuZNih+UgwrWyldzReJ=_}PUgGcm8+(D#rYp>{B{T1G?5DF#_2 zirUu7@mZ3C8ProWMDM7cmlA4vsM-+{r9=$T<4hOZe~45ni8?uM@9J<}<~wK_;h!AK zNmCh3&3Ie0WppZS&r;rN4I-N)%W|qgse&LjIDs!`vmT@E*_fh-B&Dd8bOoE*oX=>wt#%M|_$#4NZp#>{EyJfoVqoZ}An-}y4V`@-xlO#2Jlcn){()ggtrxE6$ z?-MTOt;FYw$1+F_l7_x#)I3FYbNI7NK)zKFDI?|;(mUaP#{uPCMv5g&qgoqCq&zkiX9peZok(O~9i7S8gdcA*%H#SZgz?r27LM0^ah|Tw%R^X<*?tma7Q90rG`Wjf%(jvv>Virg zms|c9|2ip}9f_k#pkq5s)ZUF>KN6q~Eg9w$e{`zjX^(_j}!AFlVDLi6C z^}zq(P9}FH<-XnNteSMh)(4=VO|6Z+YX_K6&Eg%V*#bxwx6{dEq@X$c6X3JjvCL zhW;m5@EAkKjDAQ>QlH7H@Q%l+bbxLZ4u?7ON~J;tFVs7lBcnADQ5zkY?7O@RvAU%e zG4YvRsMzetOYcNwp^k7B|8oVstE9J!%={mb-_O3A9rJ#Y;$SZpNCj;-$6mpfoR8@g zdxbty5sw9WxIrq;bq(?rY+WkU*xSTqbt1Ut*$P|X8!K6TDbsd&S3C5POz8Lqbi(S8 zC{)bSn-8Hy682Zr1=@ zf51{iyy{!sr~!$5siH+wtpiJ~K*xyIm-_~Ob%7>UumEiKYoy`-kL5q(j&8F49QqRn z=lZ@1`I||;LqE_ux`&sQ53N|Uswf`Rljc8#d6Z{BSzU@?hhiz1~*YwVvGU)4V zI{5r0e#@Tb4VJBDR*XI4|0sVy`x+~_wc>vzSCJ+>fM)lihs4G?@FFIEPJHCrz9|%x zcg%<&d)|9nDAA|8^1GjJ?>A5|CYGjs>gcMK%mXe!ZbmG3l8WzwwD)aMYsYvTUD)!U zi91Mr#Q%})BE>2rmMR{zap>Vc=E%EJETQ|(wSf}IuJ^_r{8#MUI$wjfDU|$l=%f8Z zyvZ0Itbz8iiw*v10S2z7^NrJk`~=Oh{ZSeZMEgtMRdQp4jK}x~?nRaZ-aPb~cj=1O z1RpSG-h(lY{Sx@2o7nDv_WeILKO&(%df2^Kad#6bNC8~n^M+Vr8w)UUsoFZZ)e3UO zA{`z1zmfUhoRwS6e0^X2veM7v<5piDv2JZh-7O_t@G1HMGYVyNx=p{@I{4iyl^8xOmcy&?b?%Cd~ z@B@08HE1p98wdEFGqk`+*csjB-WBn_tHLZ2)`k96E%K1;aD^5vwj1=t_i=Xf!HKWsiN{MQ(GnrgCU7LhKcMQ@l?M`%bhz=sy4rb8BWZ#AJh| z;j8eO)k_(O;+Wco$bZgg&6!rURqV0rG*{BFr}}z!3;u6ZibT6u3wDkcQxo>v-nY^7 z8uo4`$#>Q*C}w5Mm-~Q_K%{(w^#pn=(GkXAyhQ;N1&)qW9F~x*BC>e%k+B zavwc;%8?D)fHguvHbpK@ zl^OM%kc}~Ravf6RP~MFb9#uSaH+i`+^-Phk+3+nIR>G$BCTsZlnHYOO?V}_iJro{; zRWWEQ|4Vz2cXp+`Us>Zt9}V}v;J(BXUwzq|LU=SdIfPsL)1qK%w2p9+$2p9+$2p9+$Buro+U?5;1P(Z*yAb~)F3k)tuAYc%) zUas{t>($KY&3Im`yWQ2%)%l^2=J(r2VP#fT&zb>q&$^*dDB_%b{`=$Xv(HC>x8w0z zi%yi_z5yG4S5oBB7+HZbD>pOv)oV@g$!1M?*9&dR z?rqz?DcIhH<4M|2b+fBJQU3Ro?XLe<$cg(izCf4M;}O><9PQyRjvGp}UL|yt6+Eiu ze0Gn0u63bVJG}V`sGBD`e>gxiuDJEcO$8 z>nAau=?v`=)+K`mxo`kCJr+lJ^;*2Fi-0_}Pfn})FuJc>xRZ)<4&5?y-&)oH$*dpT6=8KD$vT%`q4RUK~Il6 z(Istz<{o@gOvZ@Ym(Za-yapNhsyy{ULwro);<;C5;Hh?IAT)x~@3C5G=A-k>=2!vS z<`vxQQO*j=R)IyLad3{}OrU0u-Ryx?k2C|@4qTmaZx8DF4ZRSh?+dU|s_e-Y)eu`+ zpk;HcM}D@d=-oNxScCl6^P~ysw_WIFK?^VqZm&67pKjEsgSKssjxeRQ?7fpw4u79U zsY-|vJFmLvn8{CD73m;vl3KUq^Fl$o>J@+8p^@HSKtsv%ed?kjXs4k$u_of&p zb7a|AVTwnuz;gqy+YR3d<9xk@j1uz{KBN|VN`B_)|1`9%2$Zz6mfPi*IluIy?BTEX z6-a+SaL`gDz1^S%hof)8xPzmPIQcn*25HF~&#)d7`Yl^5$E>*uU6gVoiQ~pMSWtDW zbJDXd$h{lr^(j43(5*`7=|}Q&7&J?}XKN@LLW$#dw{Su}B>uQg&v7Bgnx$udrXtDs z7J4!?GeaM@Xk~T}Err5;$ki&O(Q`d~$L|a3HIHQ5XPc}4rS;Gw)lQ_bGp&LDBfe|Z z?KP>5PvDc*Q!kejjq^N5pC3~nTZayuEwJvkJTr8Dghl*}8f&}Kn=+)!-5a!0+K>KG z4i1mbx*ME^@Lo>J#}1O}91iaqVC|Ib8T{*@@kkJ~O~S@YRnVh9=^noKuGm9W&-;(W zF}zd$x%d7pSd`WF_!#?4Zv&~cJ~A{nLMSxy`-N~9x{9{WOkFy0zhaDqzyVujI-%t)0Eg~b0 zIem{IzL3atj~`!QeZjYc2B@ue^uKnmmv85lzV0Vrjt2)_>TCh__NtU($6sdfvV)9| zLbevk$8q-J?-uum)y->0{r-(QUh%se=Dsc3+2xJZ#P-S?=IA}ULObr`c{KOX^$oVJ zTjlh?jN0t3HsronR;r=vt5qO1LhG`i=r-mo z-u|}N8Xs={!boMAzhSmh3!2aX{_ic?o#tA4OZfY`B-RL3^r(|bqxU$Bn8_T=1;t1!=`cs8Y()x?S{=W|w=dE4C5e%ZW(G`b3wuLzJ zS+cG7B5czwed}9d3X>)rBldb{^!1%KWPP>As=-?|^WLCIY?U~{4L*H-SR)7f<5TR= ztfBQavO@2{IKu03#IB1b(k>)ji2KzgJ| zKJ}{(Js&N{;8Y+}{mS{6$!4x71DhnL+_tQt%O2KK`ghKc`3mhLiiKWwuv+{0L|-XoQO6^G zbNgV#yKa6sO|__4IqDt=<540R$Qfhf3nY4RZ%fNKXssITZ+KjTI(h~@?);M0Guj_k zf9)+3gF>^>ELxKd(lVg+FfOBYPSgyV6KrW{6%w(fH;f#+CqBFyosgZw61i9!-^7;W z@8%UaG$vX(p4;<@{50GHdag{o9S1MKlqcumLw3>Yaqvq%jk)K{Rq8k94kb$Z_Sk9r zd`qO+5(Y#ownj`JY^n3OaSb(;L63S&kN6IK&EG1~M(pfE&ze1~&7d`Fw%LifwASz; zm26aHigYfpb<;@69(RvZ?kdnFsp!)7=?7%U&L`pVq}E?r(3fPJ=?^d9!m0_KU~8SA zBeWw&e%v3sFQ3DYS_H4K)I{u@?c6`pG)K?o(Bu5C0~W;=_?>!L0H9X@BIo&DTS*@77LP9T)Bubo&0bUA_%ket z{T0!WhIF>T!gY|65kAI*&mI!3Pxr^@Kcy9?#=wk56;RY}bjj-`=vqY?NJH>p6g4+i z>h6)&-adAL-#ibbZz(7FKR=yJ?h@U#_mC3hK+bd`Npom8N`zW49|$$Uz9HWc;|V! zO73H{-1%WIp=iXjdflSrnl1apQs(SB_vol+z^RAp576p^))X#^RtJuVm$H&1*EbXm zPWDIUP*otm)z5345^So8aox~=fDM<6KH_A2eiP2t!8gpw`5CWY^BbnKQ@325QHN%JKVRZ!L#?K6Uz z5lP=PYjyOt26&rqroO|)+<^s|B%@VQCjTkF31X7g=Ca^hbF2ZZ*c|!|P*o zdiN&B1`m%){9`!YN6tVBoi5?`v~s;)o98qA=2+=P+wbV`Z{f#r$(kU&Kl~&7$7!`` zK+A(|w6+VPi`gkZd#pFFmw05z4BpBJ^s@Vl_6lt186D&jwPKFo@-=)1zY(o$fz~B# zcf`WG)f{wscqsa(*Tbc1z5E1c-J-_O0-8~TH-bGJcgfT)x$3Ak6rX&isa?UyZ+J!uVEhYxh3LDKKLUE zA-px#CG}d};}Xwri6o9`;Y25MBo}H%_qNnNJB{_8;nb3HI`n;eH9hTKllO68F{CGl znr_8PLar?7B@eL%@CiPnbx^g2Qw3*hddVx={sp?C>}27Q+@{g|-)8Ni$|*0=lfNks ztLDfziGWXbZ_(c1$u8d^8UL|-Gd|eEA}9KB(z|H;Zcd-yp<6rXogTlY?vv&a?{^%C zfGxVxMgE~1)btlhBsoX(lin}Tn2|n`qgcPY{ml$-KX>F1eu2T8VFlfeC_DhkHZ4tK zdY1Pc6pcW;*Mw4PHM-YnfqvjKKI1cDE$NCjVMr~oY-*zx;7xu|w?GM<+Z=r-_IG&w zo5l=llsK0;x~>)C{a*Xy4u9kZil7O7{`hL)xF;Ab@Dkdr4qQ4LlzF@G<<9_a02OoLqCN}*ir&;kxfMly`o4+E?#=qZe5u9)8#O{Ax9wSzRf0&h6v17jz)A!q!69l5%%%t?#}u z3JK5d55NlCL1T&ZFW>g7XQ8>>Jm@PXE^e_-%Cejq-CH$>NKQ`4)~kQ~<_hYuOxXji(sw5< zb`Cd|aF}|6*Mc^3g#DZ}zh?eK{0dq{)u9#JAiw+q()r;=F2KJX`OYi6YP>^Mr^(yH z6d7AX+fzoFCbTHqRt927mlize!W#(0z%1q#6<3`Wcwje1_XZ%cu5vVNjD+L|sAy~* zOA5Mr%`c&A4Y$UW)I~dYXhW~nYwf^mZqF)syu&8+;o6^&sSK;7HWp}T$uk3FtgY_^ zC()y5U2d^QpmJ}*cv=27N500$=DK=vH4E+E-p}rJno4g;+29qFQNKWJ(%LtB&1YxI z#G^{@3lI#HqLyeo%#3t%^WnRSOxCJd-{a+->EKBbaRT0#XAqosBcKWm@V!r z!Ru-qR??aenHR7CGk)E&goMJotm zrW^?@pxe>fIbO3~ZTE=%qQ=8YPwg7qjC%Cor?@RrzX2zreeX=n*-pr~jq)V1|tEZT!@`wQODy2Nt80q7VWSB(X&O@=J4@B~X_0?vhP?;o+d>XQCT zbAUbVoYq>FcU=%4F@`#({+(72RFOSeq#c@_hrOGk!LE1u0^i0cY@b?>Ng}v7W+!_g zFJct7*VO)uz)=1|A^p^S6U+K$`Ff1huX*Al^mS|OC%9XJL4kCs73G1I&+uRbca^*x zKTGbaO(oXtYiR5>XOuAm!O;mCL)WBaUS-%aM;2b5rblEBX)P&_V|75&-KDs=+B85k`3i(Sj{1)KYK{LDXxTdgAyn2156m3KS zKN~Ivca+Wo8F2ptXNQN6M2=j8Yu##kyy7~3TyQ|?PWau1pR;ZA_FCk4jK@%*ANaWq z5DG4%0Y@-}7jOzYJi|8(8D`F2r`cy5?DjbKw|7HOND?@Mx>d8&{3tYM=R1%8eff5K zbUw$Q(0#ni6Eckj%_*-JV*|7ia+O+-z>OAyNaO9p(S4#gc%Av1-PNZY(Xm_W!KCrVV{E5k{PJXw}iGacQc2nwFpmkac|lvk>H#< zk~_MyXU>-rNe*yTTU=ISd`6x;OtE+~EJ_c`7A@!f<=WzZyZg)Xt;lzgOGhFnr#{b+ zptghkv)`pH?)Y4iwd6xG+vJWpcjQ6cpx|8>pL5%Wa-yY+dpAhUu*wg)lJh!$cR0?P zBeW^Q7G)qe#ac_7+%B<(IU2D6Is2ny=E~muML7W>Xm=jy%hT;~N^Q{uY|tKmWCFc| zrh0@PM9WIa%v8PYTt9qqx=|kfvJ78x_wM;=+k!H82;iOD*Vv^sI(HYijt^g6ZSmVc zjkKk;V5Sb3?&ve+wCyGG@N@WxpV6y0U+32``~Wvv)#0(I=9M$*oNeLW70zdvg%#fF zi#S(}xvRIoA3Z3Tw|Yked6(jD^tM*b+Xwvq+wFZUDw?S0?XTSPW?t!!WFQ7zP`7G6 zq~9lQIb7W#t7ELTR8FyAi{rd1;Ut_;Dv+-H(5KCMdUCeYG&CBGX>GMk(NDx1apn++ zeQ}j14LJL7V|D~UB9XMwgRG6U!BV}zOWVC2V*{6O^23JFqi0yE8Eu6e?cps=k5H8Q zZ(yH;owzu^$l2-rf9cO;<--`6_WcoEek-w4W00|p=~BKF ztb-QldE|Iw?OC8{B94M~2e_gGRgR!j-JOwv7+PS5lu+W}hskG-u z7I1A5zNBxp>%*ZnhzySqGhLMMjp4=jgRT&_26iB z_LHvdyZAoNm`#6RhA=vj=xC!|q#hJb!V2_S(2A|T!Mcu48#JnmhABPWY91(!gQ781 zjrlG*d0bcO@KZ$O(! z>2o59lT(Mbxr?L}RTp#$@-Hc8ea6UAKiWu1@(iWOBVhDp%iVQy`7wJp8KN4aSELmE>}$-dHt@-H;jR3=)dU~C#fZ=y8ODxE#@NpvPE6P>OZ zc1FZcL};CTm-Y!utC*eVWbF8xpf$yhjoL1u+1RGLCmDD3KGzOg3!~LWon15R&SmbM z<{VXH)Mn26Uv5jOqPs;r|-7CqsXMq(du}HSCMSSy0yRnONe@n^lcl;Y6 z&ExJnp8gt|jF=}Hq{7w9DNgQD9(_m6)2@lWufZJ=owG3j>jQX+w5>rO`7Oe(^g}YI zXozVTn$iVnF zj;!vXc*-+VJRvL*_bnsk+NO8wiv6c(jn$-1YjCDkO0@t|DV?0*nGEnfhDUrRY}=C7 z=Ej&owA170rSGuuOVXG`?szudV_S`{;plX%Fuq}Rar>9{zqJ3k{ZH+GZ2yn;|JDAv z{eQOqkM@6W?;`zozWvPgefwW-{_K2%<(v88K$J#*0XmF+^S}5N!7UcNhlSj0zuSzz zV-@W?zc{TxYQcQ*4z<%REbwe=wB^$PFVNkLj8%%ONeQTJSUUGxl8Py^F%RUsVQoun zSb>G}xTDQkp3wzkcmNk@b9ZmJ{%+~`d&Fvqvx3CUUzTrn^eV=OVP&5q$xJUKMGtg_ zy{G?(jUVD!IF_Sro*)|&?#+@X>=Djv`P_20;9Th%flr2wzQuCihNnyfD#d$U5A=Jy zDST)DNB0*k^V?FMrOX-|WO)(NoPqR~ww!;`R>WzwxgY7?gw5AtxOd>E=47opA?;0ebEJ?pk2SQ^$=xPj^6d0)-p?XJ?5Y1fAqjV;HqQBS#B7LjD&- zmS@c=e$-Pe20n>xTh+x9WL#m7J2YrQe!X*DGbD1*QkQ!nVb9Ur4YE~+{3uUdzNwvQ z^v4wq+P@rb6F~t5b6fM>JsRr zJ`X*I42n8UR$S<7UTdgka>!ncpr z>W9ANc*ST~cro+C9Qqv7P-1)3Y@nRMzwF|*;QelpmQIT`g7NIqUIG8hch;Gfy|EDs z<0Y+GbKh`{sxeD+)pDQ(>j*7#$}bOH>_Q1b!)hM>6uQlQ(o}%C^o-~~q!=r?!L>xu z2yM(l))&b278}|-^|_yCp=B4gq09G=uQrVpxGtauUV*W*42N)a8s(SNxqz!(TB#}Y zQ)cbiL4~wvP0EA5ZV$P)*RVo{Hc+A-j>1-CLCdWY1Xg=?YM35Na$DMBP}}jLk7Q+In04Y+SjK*}u5OR|GOjXDEq}l91#SInYUm#7 z-}0L~eww5u$x=@1x1)7aT9)KA1+6aH@Lj}jz@)Lq$_=1IiCN(1N=KlAU0GoXpOT-F zko;96RC8$Q9}id}SLN)mM^iL!j$K~j=Nb2ZOzg})(f(-Ln_9_TNYeN$xn7@FQ+y5Q zBj`J<8Z$VwM}D_~#w*%tt?3ZUC2tGleo9`_GebIWvHZ?PaL)S+XnP4B z&rf@vFwLR7M9xd_^nXq&!Koh{o`p?*MXc^Cc-x0VJ)~B1Z$1OSaXd7HH;JPinemV96x~}O{>y-_mrwgVgpDL(9NlsIq?tz`V zM?HhT36sH@l5Nl;E*Unr)7qn1zMbVU)J%_hJpG`kBtPjAtt|-a_5OgwB%ksX-=790 zdvy9kO6I>(BQ46wh-aPCDv#}jb*O)`EmE_9OIcew&~Y@`-PUfY*N~^d0v=7z`1UEu z-0TV1Q;(NtU^(UAlyXsWx6mW9?mHqy ze?4EuqV~)-NHW+&b$=iK0~;u#5oFSdu`h?{Sh9)kJKd#F4*(b z_H4ro(7sMcBY5P0@6>@)dwyR)d7?^A)hY2SQ6>mL2=e5O567Y}gCw#2%8 z3zw5+a6Qv&xaX=Q_t|oV(#O%KRiDxthSaaMXPeTWkd^wWzur~br`@qp-#GP?UBmeq zx!O-oJ^o8?e-PA5S3*?m{bnRUI!DydIw}dy_;SZm^~AgP)GBf4aO}i0-shdp#oG*n*2dV15+cQ)AO|T5WUY;3Dfub3lA;{##vL;5_>1-|NAlI#8J5kIG*|7N z@ZUN2VJ3WTxM#&3tI%(CeE;h+d#-h`fByHdJRSbcEhV40iBfJTFGtTz##z>ArgQ6z zSA9nMn6-kBsDrJSHIc)gbB{egCHga>E+Sz>$M^BbX;JJUpGsJgRQ2B(dA9P8cy^9f zJI`en^mMdB(Y6in$|j_3qy<*W{-*XyiWG zNKW))sW<<2jF&a%&SA6=_E9EyhIiBy#HnEi55{^-Xq^VZ%YNf?+5;(A)4G)5qvga` z@<_XLOec?+%9!KwZ63ZpbZ~EuN4PW^Lp&yr`7Vr6kccrbOKtatoZj`T>G88G^;2rZS*7-c&gcbo`ttVR`v|J*H*FQ-=3NK3EaSg4bKcn z9quyk0!jDXplZAlJL8Ey{^VGHn^B7#RP*3%LSn#}+QdGZvx$h;UlXmr{sZYBu9-`B zOGIT06`j_w@dY$%o1R@wL-#Dtc5O#(Y?qxiJX0z-n$-Kx(4+yf02czcDfpF#Zb)M~ zmUyatWUJ3T(@J^V!GCBYE#dVzMp|;^fiw<@%tM-X?EOOAiM{`by%~4=nRwg(_Uyks z`>)Ub%d`KP^k1I+*Y^M3{vS903LlA6-Gub450ew)u8y}7E9$h?)!kos{vV0f{jbmd z7oIi!H==g?yFcHtE~tNed^Lo}Aaoxzet&p$_@79Bxc%Me!J@TeWmOkF8`6W=LDf!) z{mV^xmm-2`N5VfNNihO7ubwj&Y@eCDB9cYSig*?&t)}RJzPsBP(K@4l8~wP;F?%oy znaaXr?;*DZ7Rz@_Y0Fcq>W;r{Bx8kSB0(`yY8ergat@%eDL9)w;5Tf~1aEH8G=}0X zX`doL_QF0!%i-oZkIWIUvwR%bYXuA*Atk>jC+5Xjo9l?oU9+nEmfCRLy$Fa|jF=N= z-u9O_%^q6NJA02CWTe|zQ=)y70=epO2S}p*!+;VYfyi0A4AW9k*}v z&aDVJ)U^tv#d*;#9Yx1>-7#97A0A)DY$|MsX@OlFG?`a%$cf+P*uh~%-zxDoC>pd_ z<3u!YO^g67b8M4R9jkG6K&~EQH@CEU!z0m^xKbRp%qtpTKTU~qqKynVU*JsDm^F4c zM9c5~BY)dv#!Rm@qUG9>Mo_hHmaMoK6Fa)0?ODFceOkiY`$ z-tOKF!RHsezCv254Jf}Y4#o#dEXx=@)Ly&a{|b5Qw0h*xfkN_(l|t8yy=M>h%=17N zh+#_`IiQ`rCfW(7z?VMpqQ%UQV}6h}sC%io8frZ;e#A8A9e?V!A*1kDucA8OgJ5y3q?D)Z`%^OPIEwLx?^gqUM zY{JODC}$v(B&pY$H3p~RfMo=S-J2bAKiT^v^0gftpw)de>=kIOp>cWU(=y#M*(Wi~<(t^!N1y_>y z(&tKf;7IE^A*OJ5HEzskd-lKDknKIt#4cr6pji`1eV4~9i<{SD=5a8R4^AtjcEfSc zvD4xoX&j*gd7v^TTGloqvl2q*WurgGYQGmTLQ^EXtxGCzAaNb zcIZ}XXx-CxKSz39MLujOmD{k<3*wkiN?W^WK4M-)j$|*Lt)eVf!~*emCeTp-&zb{x zTOeoZqb23w(IxjKJnL~^kKa@4Y~1PzRDX*UOpgU<&cn}2l$KyzR3%BAkz-N;%0^u> z>ZvDePskOLs|FMx{TbSuo$bn|`3+-edC1^c8GI{h&fA(%zX3F_KzASbPSBS%u|+j? zPAV(cxUI4L@~s2Kwg?6O#4~($;~e@ANDH(TK^d9^y~CrHXh3}yw7=_fUQ_7(4s6|5 z+V>4SqBUa=wg>N1Oqu> zl;|gp>PVa2RsnR{s*Tmv>RRj7Kzw_ zZo4t3Eay5%^8|j1kZA!*nJp^v-D%C4;k$f?e7w%17nh^aaj@TtTBVMU{#P{k$Qmdo)KsMa5hX zA^$1T^9p3t0e2NjZxc0E=l=S}Wb_VADYBDdUA_2jD?TLWIXD$a&s_e-=lp!FOIa(* zGDfK6yE4!IyV@=XXVBj}+Zknc(wZQ%v&J{rj;BbV^!6#CtUNO}(HLP>#9~QaCAg>7 zcXO7F6?~Y2vC`g#6Gl9ft(8UIr+je3f{veb#b%@0J# zjAuG#yXMI{3Tz!F)M5h%22l_7xYO!2jfu>OTBW|W`ANUENto=h1;zo52Z_p@WYkJ} zO;W5)O7nr7*_5J=_O*PfN_>pf z5Iwx#v$k#EM(@{}^ss0htj8WCZ>Ytekb>*eZD2Aa=al-v4dYVoh2jh(qmhnli?UdM zL%oc2Jwg{8ov;R@kR#)=89E{E*5yFnd#w5tc@in*DwR}Hm-O98^d?Hvayyevo}`tY zYjEp^ZJQwl`>4$z>a)T^&y+NDqEB6vX5d6^NNb7S&$PvJGq!ceV zPUkEw>tmEPMJ$cb?a8A@o@(ocT9{{&BC(hIS|;f~khBIpp0XCUkiN;?IJc2NTSViS zU8vO}&Pc1UE7oemxiu+3*xk<6&TEi7fSuB7P0U?{^qh?B8jCmLX#COEqK=z?&pqks z&S}q+N|01qgB0O6s%>6L;+}GUT9s^c($?4bvibY&>@T2QeN?mLgm!$44oLqc*%s+z z%|Z7Ga-~!oKNiEf6nFoUc5`+cgxXDEywfrzFA``FcNJWBG~t zm(c&Gu&QaS!Ww)H`g3X_&#g&H>SV2#cl@F(xcgd?1!L$+gJUShs8TZaZwZ%_t~h3B zTkW{m_mPbIoBXCO*T^Q?Uh`d?(-_GkxR_$eT8mmTrT31MzI&{t)yQ+=`A2X`i*6KM zO#O2l#{XB8P}Aib*i)*b`hLEj*VFr1FZW;ayX2jIP51sk9a9i3l(6=jxTkOF%%eO>-#km->a)vdy6^JcF}n2alGEiZl~i;1?{m54PvT|GgA3Ai zot5U4E@$OudK?YhB+{=aN3(&%c(& z3so0t>w4BT)gmToOOkPsuv&VOEZGb7%+K^*WRGfReI=d0e=TWmy5k~|=6fl{QkC^2 zj~*`w*Yu}P<*`oUdcpBh_Y2<1O885<_j339_Mm>UzUTetJx`WSiY)npnYtyCNi+Qv z8LgD#pY>U)v-7USrq)Y8MJCzdglNLl`?P&Es(<~P*OOM8TPi7)m1q&W#LXJRM0w)= zMdNLwYD|41wdnc`Vxy1vKF)rB$iIk+fk?hDVaZPTn~0g8G}IinR4KK`k?=~``FoNl zYi+76zb#+F=T)>MwqfagSDsy3#niUh66!tpe8SEaD7A8aPrv%z|6k%W;aImaUNgBv ziTOOF79T;KpQ-N3Yrt8bzh(vp~oDYdk#{8UHl^3V-I@nH3^YOPLZU zbxGFzCff4jRY;iJGcS23SHw1o!VC5+5Ns({5U9=zGTtdcjifOL=Jq! zeI9+c+*N#&(_$))_F9#i#03$wh6zz|6xk%JFZtB-`7v-y&n8KC$DO)lah8KGDMMr* z2Ct>(lXIQqr&!C6$6PgkfA?PHBuS06^6U{u{j!9RSg5%PTP5|Az(<^w*~AAqp?~T% zk+U>Y;z2_BbFP2N9dguvc_QtW=X1&W$z`P^Nrw4bPw{vN_AmH+iFc=-D%D9s?geM!YyFiu^YM!MWk1KWmz;UOXXc%BUhNfQ?@&vVL|b2z8tyUm zFyx)Ju}q(;CC{B7t%F>*C$3yrgM^KEi?jJ92~vNoy^`;zwM=u4lC*q$M#fnwpYWS9 zYMozEhIy)Smi7_X%-x(5mmiYnD`>EMxo9~Fv5zYSxk5)ETzKl2{ZTb_KwduDxryYsYNiySCOwAsx|&o?n`=ZPI5+TCaQAJ zUqm@+ymix>Bzq=}a@v1e9cfewUQ-v3FZs9D=Ib>vdJ$Uf^QIar^OREWm#^umq#IB8 z=A9y`pkWrDssVN;)i$3+k}_Md3VZBr2Q?G@N<;vozh}?ww%8N1=3?qV(QcW zW-YCs)avUgU(e&aHINpO5Gyfz0jAo!A366~lXFJXb!+aq5klJ@?=pX}NjX`HIB5yJ zmZ(-f(wVgttwd#AE88`b6#A4DNWD6!+$sA?gYuJ5@Og3dnikRfyjy8eSG?12={|8x zx?_p{OOF_dT|(Y`lb)oK5}n?gYMA6jITA6Y$hs#CjLJx}HMa)!RS|y4{YtB~@~-Ec zi;wvFdyTSJ5}pZDe|sIjUr$~b_|Fh4!ob;J!`Rij%ZC!)9R({qsO<1J* zU!qm-$MQUPj`bJxR#N(ksCP+mdZ%SOZkbW%lG%s zj5}UvzMR#uOs{xebN9o~4~H^53sScum*3ObMjcZF(TR{;?)~>dA>3gzSK9Q_bs=HIH%%FFEf|AMqu$r&F+Rt295KXr=TJCz zf`8_$Y+KG&eaM_cMnYpofHRMVbxw>xL;a3!*=tUj1@QWG2tE~1V;xM;1vTYi9{idy>Y2e$$5B0|8A8r7`idC_E9haT z9p?i<&nV_aZ>8;C2kBuZFBGMEG82y(UDDKrXWz3IqBFRyORNNCj=+j1rj2>baw%F;CoDFoR{m{5>#YW;ZkVp!HMc^AyY~ zfezO_FrU`^m+z+47Jjob7>qitJveQ_3F^>+o5mHparI8!R3q!k4)?CcZNdVGmwQVgf&)n|1(F?P6bjhq!4^X;R&G)tYitj-h7n75s=d(@zr zH+ToeX-1u zj$6w)ICwu;I3GJGk(Qg7;pc2`R%S3$KXyp@w^$AF=bJyb>m5@5iG5H~`p5Y6_|LI- z%D-?A>4w!4H~)IaGk5>W>W+Uo@2uio|3q@1m4D_K_ui#k{l#nk7QgT$B{R3%ndh$m zh`n0K({(-n28FB#xrrH+)SKF%t8kXuyjE&*vDJ#8v3W>ux=ZPvBF9?0KK7|8Wgr}di7d3Z+aH;Flq zx5y|@yPtLE);+Xbv%&iVy~50Tc8}w#yQR4Y3Ts99{|D}Jzd7$yV~?(R8%B0- zK?|}#nmX7$rO8=M1*N$+Qn$fd7Lkz^y1(GwjM?2IHPRd+H;zz22~iHE_$}zV=JzyP zJwBcB&whLS*U23XOD@R7ygE)poT*Q2GuDQY^ELY$avo9wgtEPShmS5wCzQV#Y6CP_NKtoi&5$@9&xpW-`xkH_&x za`=W7gA?*|2GB?3dN{tOb)U211S*e@SQU3o-mbX#iaJ@!ceH^ppI{io!XP&VOz5UxNA&p19wsbEo=^kHBq*KL3J$@hNSi zb4l4bopnF1hfj%}QG&~Z(;9x?LdP{y;at)I_b%baL(00tV%s*18zSloz9;1WGkbd! zaJnS-0XvR-g}36GM)siPxu4*MKE^Zrp6&5x>N*I|VWYoO=?|D1X00#xwqZ#P0qaeo5U&bB7N7{0y%C04DZIdU(Rur!8eKD80}BkaFhGuAi4v zo0L-RN)Q-Qmleo5=lNr}u}2d2jRErPx+*jun}99Q4|Uy}`%Yo?JFRDM^yvwon-+6S zJ90xSv!pG_-{v6ZY~2NGh)Sf!9vg@R4f%Pl_AXl9oK<5xJVw!8AEwoiI#1|H;k{uI zR`_Y^%m@lHR}sd0Tr=pHHryZS^(p7=2RrB6$GXQm=G;re_@FhqWnb1AlHEpkhU|Mf z#4_c~&ZpHjxvLqiH|;mOyh1e`FOUi`+u}iKDLw}cSAa5mJ5k_{qQA{t6~x=m?GrAq zc5iK8Dfi!L{dtqw(v>XCp8pCC#Ap`y>DL6p`a5OSnjng1T8Hs#Dh(PS;XviYi*XU^}`Fec|E2z2g~CO8wB0$ z5pCm$6@kv6#~V8=^<-RY^$teLha(&I&t1OBl^0gEihvv#!-Fo; zZ!hsPti&C9@2;-yVA{d{KSLr0NW;k0yZQ_NaEP^%x3sp~`|K2pEy`mDTM#APx$g08 zh8@{7daaCSM&Tt~^R7c%E>}q{d2d?qA$d+n5|WG*OyR*(^vyWHx0J3%FVLtNE!P}t zi9K&`U0)Y(V!vfiUe11#-Al8Hcka#`{FS$G_s#a`4DL=-PKX8Epf%n%X{l%<tQBF!su zIj;iCk%;k|`N1`yvj!T)b6IeO9FR{i(oTkU1`_byP^A3?HzxpY$$2dz$0057;DX=gx4O#>$qIR&Uefzv24` zH|XFTYdywZX&2U5sWq~p6xip+IyEQF0X?-%Scw_OS!2cZ9@l5&WQ(ii$f(^`UypWm zKw33tw4Prf*^|?rQr1;bmE=9;e|U6O_4m}(RS#Y6OLhGkeRz%iO|d3FUA^GkLuVnU znde3yzvkOlTy@n%y7~;9Qu4cJ-jQONMkb9&+P0R|N7IMCLg3rX@7h6;hle-SDn-4^Kyrgw0h2O zqEC9$++^ua$!pG9PIb9ltAE!zdxvqidMq!ER;1XWU9;MXzkL>?Nr+|2io(x)~V)} zW~y_$eE#iK?b-XOro?)@I@i;>CP}ZyQtHnXBlVb~$d{3{db}ZxK{&SH*(LV;pN+(% zk(-o{x&FPBs7d%=xFEH4gu4FpTFt>rq`KzO<+GNC`t$P3hiB%Ma53K`2Y)RMNiq^< z@8gzgazV(m3raOQ_2^29Q`g_#kJ_j6gyrSBImrV{dpRAQ*plP;% z+%Vqg+!b3p$0yT>yCq41bfhs2(M@Qi(e97P$tN5G@w#W9gjMyko&oYXXP@)kaVjJ9 zTH_^l8NVGLcy@dWF2)+|H_k!kn!3Bw)kFG%BdGh~G_1z7*2UqP+S|ig(Sof(MF0Q5 z^VfI^1uf<+-rFtS{FL0Zm51=JGkkO7m$UFC7M!J(I(j^=AW5rY_MChFlr%dZhmn_8 zhO}AT`0rAFN$a)d*yp;fn5~)ZSvq>%r1z4}T^BTs=clxFMpUK6I@4Qr^DF#oM9B#(x<;?#4vnjOD{zK)i!(|?Y=F)y-DLbzQcY39rj<`_sAVWen483 zRVDFx$c^t5ox@q)4iVnN4C<1nFra@v!Iv2DebwwW?d8v?gZTZpEO?L{Inc$IoRB>gbcl9WEjc;h+udR)@q z%n!Thb$00sl=Rq&!yJxwgNt3bcQ_8ncaRg8HAy0$QkED67@cRZN)UQW;>UB60 zYb>nYXj6maMRl6{;FUF>QS%P}VzL5@Uf{9Elj^lPpbkc7PU=~ixSnBk;4ky zp234HGB>2hM{VAv`tRuJnZ#iXCf3?|Tk~;XwFH6rVOlx*^dt7E-_YZS_u*UK+Vkk# zK3w3xv-+6c+>YKKK6bpN!<_@x^tTqi{VMvY8DkWiCjFOc`7XD2|`VGdl z#*IyLL=TDk@qQPrS>sR0M1EN6g-4HMiD!>LTW#p!7z6nlx$Pg}FMK9PrG>J8JRyC} zjM&`Bn#4{t*YtJ{k8bJdOq$c<_%H^+$kQESs=Sfu zzKLUk&O9QnKuXTo^M>e2^NxFl;!00y{6={iVqw3hEtyfe(aiN(FUHcR{8M||A9jpw z%+Rz&^jx;@apBtNvG052t)a9+_893okKdFB-tKeNK}SZ?O5e8E^t}>BV0VmDjNj0o zt%gVE2pY@$hStA8bMlaN%ZEbxc|*8k|7r~d1Nu-CY`_AWJtFdRYmD63G&>Wa>%<%2 zoIPja9XU@8kZ6u>Q3o-vWsBQJzhhl ztJdj{g4C+f!LDpUR~nE-Y54u^g9&zqsO@2Atie5!(3|o=J7rv-e(jdgG^`de2}((} z1_|4}Rr>A8EzmeIkwWXgg9hl}(|ihS?E>rIO7C_fhl)XS-=u!TKNhu4{ASVaHGPBG zlzQYuGT=x^ara0}3Legyj^Y}#)q5}&wjuSg-yQ6=`wOgsin2m4sxHzvKloXqgF~)? z5GWZz+k%Syryrtqy8|1nLt{eei8a+KxuVYD`YjPY%0)JvVLwGPf z-a>`zr+>mHvsG|yfO{V7DX*a9^88dD?GSb2Q%#{wtCZpqZT+XTht_TYcd(GO%_HQW zbZ-ki3y?RKza_{1aS9#lbDrySJ~Q%hExOVD9XZX&%QQtg+!d#Dno)ycppl-H2IBzT zK<1Vjyu@ck&p<*d2ES6Vh5w`b3$%C9-Zwk6<=>q))Vg~tjc)}dU2+y-d;2f(PL0&{ zvBpR?3BERmw2GGJXmr4K3vPl`ptLrUhAJk>9BgxsemLCIEK4BN52zYTwfan|OF z9DCGjhFvPiZ5=i8OiETr#2-P{oVpFA-;^lH8*4la$3Ea6loLaQio_XlDdA0t_0SJ{ z45GH|9ok}1kruduZ5ES^l(@4dn!ZA|*3_)a{~UTeTf^fm=>CY;^9)+rcsNqBCr9V3 z-{65S zj#H4fc5A4apQ+K4?jiesBroYfvqDlf9B+`8CDQvE>Fx8ZPs^P|k<`q8rDjGh?()5+ zMoBLRP}BpTQNjmmGBjz@>NKri^4N#eu@5E%xDWa4L!+LrUa|WQ=us9SzcZ*Y&TPcU znJ8nZDEMF60%FDR)&qFUKh{Yay2$OE8m-{+ zA*@S}&nd}09$(O}>B8#?($i~+2>9^7ZRPM#jgk+x-;TV@D|;?|a_fN!k!bRJiVO}Z zc>*Q3!9C9sed5^-Jm<(fufMTImZGC zEDuxa2$hkWR=b1eJ)o}A=Ug3UL;nKmuc8n93sUO3DQ62hVm9J#(G?ew+CbSMJ~!v@ zdl2%vbAYtWsZV$tHLwo;PoZ7POL#2pYmO$V(w^L+`6l14?i_P>6jDlTDW*ufBN$_( zNzLgrd!U!_Tft*7T!gP7r$=bymZY7)YQ*`1s~IVI`yxIA@lLDL>V@1c;`yzuV7E< ziB_raTIpn`wUA3}Q+*tB?zj4=9S!RlEla`kL-Lv<`+cN;LwOnHtCP+$9N|?>h)yUo zuaTN3Q1}s2pdNNk_{~9+w2(u!)+*C-VHLHI(L>+i1Ez%CK6|GAvWz}z&YfD(@tMLz z<&tmd+A?gseu}BUe)!p?-s`X?^Y}id)bXzvh=eVJ$-B!#KkU(v<2348gx#{fN#B!A z&{}AXjJ>=-@6{P~!&XwMSaUQ=QSfh+%T!$DNX8VokeBkb$Nvn@&fxS036STTxH4(( zks#Z(8)Qv++QWPA>x4WnLY~i_Cvww?{|&$PTIRAR=T1n>?EI`xZz2u2rx#LYiL9tN`V+YMGrBu~m)hcFEk#2)SYbg|$l&&DGxc=0Na7xpR@`Hs zqri6d;YJB>ia>iEpL3*A?9;b&miVFPTfjkiQH0Iak_<`RV+nVLq>?-2+EA(DdjI^N z&Pup9<(iVJtfra7j_pI5oVe)_G8yed=)Vr zcU0Pu!cTxp{YH9g$4}g$HaLpzc!}{?qprq9wWzK&{E6>=GeYzu*3dTx3`l!gqdiIK z+Jj$)gk6)=Eou3VJB{}mQ~H|n@lfE|CajH?R4-_ErG3yZ8k06i%^rDMk>q*@`?3#d z+raBFzTZo9brq;3EY%JF)%;`$)U%`~Nmu4)#HaETv>ln8o31_rKI%+hC9Pps;9VLB-Zy0_{t7PtUW5WpyU@5IOBrj#8yeDL)-} z@B`StLRt=RrF&dca<`I_HIzul8u=Vj3w;PJv9d20ZSmX*?d~e|QEZJeTA5MwQAV+E z=+@pF^Y)x2d3_=;^3|^GA|^DiZt*gCTR1tWp*M{?G_iM@9@CxjM-HXFh;;P9Ysh~e zOig~f#drRmSgJFb?3vK&*)K`4I%n{;Zy);pb!T{KbFry!#>smI;qUO6d(Bm&hx81Z z#%4cZKk9iPkQ-kNtDJnvlJbY7E=aEB(4h}jedy9=KB5)_C|HOA<);|a?Qg+^_*r@A zoCNo+tm%F14^Z$@U8YLnR}*(`Q!5&$hK8zA}LW zDQ}S%`!40qj?ZcNM(FDRt*Xl}K%l6GM)+lSkhrSb0YcXxk5|Ka`kK!5paPu+=!-rMr7`3~*IocNknY6s@) z&_uKa8O=`9qpK%3&~ac_u!@Mf1GVB;N0v&sN z>R&G~l=FeS^EW|$f-EjTULLOH{2TqAAvAw>HNj#?0mwJ$N6{*x9n`1GaUFSgk5lqL z90#Ye>Vv`hTyN!4>ZaI(A7eM=m33F@Lh8?TN9RWOw{7LDOHJVW+kz+Ecc0m^*oqDo zbVTVy-1IGvQDg3$L+unR*QM6_>3z;NM@zTdIk@v#*-|r~1KfMs9i&bQMqzcVea3sC z7xxFvoG7gb+`JyY>sQli5WPSBi$1MO59??h8EvbqwKavO97iXjYSr}k^d!H#RhK-* zO0HOPr*EGB6x8J40?k>R5y;?ul>gwSv7q;_tQXurW?ZHV^3GVKH!bcBC~;Z zNZpV!=9K811y{0c=!fs#4y#93ODu*Zo7WP_=z>naddcqWGulP4r1jYvMPxMNRs@J> z-u^CQ|Mby=NppvnsXpznIbCqmPCmLqTaY{3vmSl#IVJbOc*uWQeRMU%Px=@;lz|qs zQ+96c(VQLU1!-D6WpwH%M@AZ0J$Q*6fdiCa@1Vk%J@bk?t$icA$4=4IpL~d2FW=5V zk9av!&u_$3nJ0?Xxjqp$1>5zZMCXQRb&hoyg3^+nfBu$d-|b@7lNM};78Tt26aGVH zWE6^raI}LDpmae;8m|c~M)!)VMGKFHeYW#A)FLoh5x1XkZ+Nb)P4i=B>)Pt~kp=Qb z3T^X!O9YyNe)RdZ)PCU0kD(`zwxJKTTkOKO*uXX|*cW)lMtAq5m3oYv%An)**l5O5X%jnD*Bm@cln%tO6d440~5=k9k{jqlq``T01 z8+`%#`(s%ZRZ0Fs^6#CL)@N5!WbYY!%u)lS5_;Y(&+VELB7$qEw*T-wty~(xHEN)@ z;H<+;jg59fTeWQuX?aJd;SoKz-6a)=jG7GaP`|xz{*_Imno`r9S zhtJVcOE!UzRH1tXGCjnGWcZj*@GndFWDi{)4VoL|Hfy6pwA!IRw45VGWF}Z-#viEd z@YqK?`;m)f+beV|*jkCQy&~fS_9sgIm!xm74vqlMc)H}tvckeZ$vV!vP`-g~`;*3- z+th4>><+NV$)YWw3E7F(d~|7kVA8wS6yna#5|{#&!}e(9Xmen0x?<-^rnBDBjY}+l^TbI zx5esHt0DLqVRdBjLJut$_In$)W`Wh0o)M8GTeL1R`zLs|rapc2*!&788Cqiy(_8fY zuLW&RA8eH3F16@39OKAN2k2Q>P!9b?JZ&BY)XaHaDf$j?8A}mQBgtWJ2Fc=_xs?Sy zlhzDgJ)>8|ymm?-g7!Gjv2N?b^o)*CakcCY4|WVS?f5UTBLn2eS>94#fXy8) z2k|}p`WkeUpdNNuY!-pd2yC{r%3E!6tjQWSKBdp*oXmnet=Sr+&AlJBTO3FDvF>eL zpdZT46d70{39fN*1O@Ae)C~h2pHKKk9<*KZ`lpa+Wv>(R+=H5$S0lVL#h{rQ^KkE;={RA~ju-(!7G2;c*Hzl+V+7(BiSLM8U6&cK21xeYFLZ zU#s`%*+P%p8X-NMR&95R;7k#9E6K~;3epf>rP(^hgZj`THBzO{e~QJj??|aoQv@ZV zBgS2>t)b>X4!#@7-v26Oc>^_DWLb2iCcD4oobRm-h`S1>OOE}c-q{*#=HxdFYV_cY zM?8U7;-NGq0jD>#5*_HEY})cH^=;zK zEb@*%BRz{TZQ%HAPD`94gLBa6l7D%%Vf?_6+dZDax5$obm0r-QJqLGp9J@YEp}q?h zJ6gOQ$y_*^ACwhv`2e4l8FA?ak3y%QW)z;*wY@Cbi0r|h846QsuD>~cHw2aCyKW_y zSI1Y3-#EhZ_{tXHBe1h|A7S%;roDJfYxN85?5h)$F!y4~$aTN5uY0j+}eW~6-yTCQWJ#uh(xbpH`r`|89T8R`Om-iGH2Z`A5Pu^PZt78`WPH9B|n zdTpJrurbajaQ5K{YcsF#C8~tS*s*jdS>l6Qvl5AU3X-c^L*`2I za=rHwYvB&r?$Y6G?9K^kftE4+*dZw*0y0pwqo*~jX3>Jr$zj?+R`BAK+bmiFxWf!0 z5gGAjh{6n-iBEz&LZatESWj%=<|MrD zEmVx6_bwF~eb@yn7vTz8HAcrk60TCCz@n&b!NT?bMq($;L9^GKan{GqE2Ym^N!UOB z1d2#NB?qj(DEMhE*k|NxfAl@sH`W6xM!}Co@Pi%zD^0Qo_U?BPdEpuLO-U!GIdU;X zDt;kyvIzKR2oLu6`?rW$$cG_^V+F@_r@Qt2#J{Z4vGRY6(Gk>y)^Q84wZ zDJbY;IU{mIk9-RXi4)q2BoEv61`4i`n?%8m7HWLvgjUPGLJtm1=($jb=8BvgLv&1_ zcUo7>*QES1G(ldZv<~f@S8#$_*jp8Yz45Tn&QU~iv{u=JNoxkSMue79A8ll+Nm0$9 z-Z)GT1ZI|wOiqzb=g;;|_9qLZb_fQR2nM8eB&}4R^3|*iJE9N0Z)m%f1i3Iu3CZlW zlymzk2?OW=!!?pA0=~m?*cgDmJV+Fbk;Gq+-otTtEGdO@D6h-W&pv4iRcmZl|7f3b zf`wm_3z}`~ahAme{yYC5vIkdW4GgS>IE>+Fmpoik_A^nyVFL?B`AXsn4rrO|?M;uC z-lya~C=?v~&@l~~3Toen!UeVXmRy!-!=^C{uWNxMY$Gl1W!Q;cvyYE!{Ih@pq!~_@ z2kWqb2amDJLpewdJZhEP7hwx#-J>OTqwakvj(T$y+EKn?y#>0gGG-c!CU`6zn7 z3&#`aPi>KbF?G^knv%ynp-(N;0@og|k)Rog=dn%tctl#byR?qKra5JoJY${h?e@55 zgwOFaQlxc`=aF~YO(ano@HQ8%RZ|=H{N$V%%A_vEq0iYG`R$OyD|9H$7O-#fBYug! z6Zt!hvZrw`ltjsUp6MYS-%@XVRNuVQ#&)bgZxW?1C_lsR-eVOytu{6K6w5lprkJOw zi|Y()oZ=A9!+wU$KjN-y?C*kd`lM8%I2$p&hOVdhpRS>>m+uVjB_5Bh^a}YIphFv4 zrygn0+Ca+yxxXW_;aXtFJ%^F6w#|6Th}`s!cHOsBsl@2czSXryb69A|Vl zrB7(VmvF6wZ^I~G&dtJl=j*g6(>hZ-9 z&lwAIMU(plx|YLv4bLd~4t|xSHheXCzT=wnJ#5Kbapzcn8sV(h9Jx}&H8=Gt8CRUx zR=SEMt((#-@w;n&UQwz@yH3gdDn6l3Uy!rw_-v`He@eFC>1-LlJmZdM+~*Eu?md=f z|2PB4h?7T?(MjjDxbj3wT?13^&gCi?lb&PRr^?^covxd4{fc?HR?z*=q^VBQmXdVV zS1+Gl`+L`=_``I0CY|}~`)7W)^tzU*p4Kd_y0JcK7cJLlxo%2q6WaCqwY18wUj3Io z(|EYj{{K%he^V;${dI=*N;!bRoCVFhi8e? zj>cb-@~PyRT+L;&Y)em{m!s>^-cQn6r+O`0U5EPm-~W6+7wekpTbESR;b%>obh?5q ztz!GIUTNK0lHU5L4A-fa<@9;kxh|dkzdOF4N1d-)RHwhUcJ4xDV$=ooWEU>TzmNX= zwg3NeenBen^!?HjYKe*qRrT40_V>@~nx)T6ozvNezkc}b{aorY>Q80xZ_#)kiA$Yp zdHBCMdsk?ux-?NcH!f9Qx{Iz#ck`bSfrvmvAR-VEh%FEihzLXkA_5Wdi3r4&2t))T z0uh0TKtv!S5D|zi5D|za5D|z7#yA<{&{gTK4Xm~DKhK<5Up7_Meg5(9IrhrB&iT&w zKHqt}`g`J>pE*mu`=3*M|NqXPrxLDmE{!WKUcKY{SFbJestiXMBCL@b1*X0F8QZ5?7iTA&T&2O!*el-s?|=O^ z;_+(PC*IJ?{fy1x>MCDd#in&G@aAvf1r&b3RgCt93P(;;VS?>eY!xVp)n7xb{3kRp9gLZ^Z3YuC?A`6e2!cxdn0hv5l+>5`_<1w~xQeQ<(85b?m-%E7iS;SwT zi_w@v{3?2+@jQO-8&`20ZH#vcNFu%pE);%wHF9fF=g5B%QxQ*BvEX@uy~w2nZVK)y z@NEu8U(Gk-K>8I{?nFn=BF+lfV=X)uZ~NpbzD`*D$CxW{?0dz(-$#!#dUE0~KKq#p z5zoaF*K3Wqk2sXhSM5W*vW{|6p{XLqtiL!axGwtX#cI8_A3TqKzej!em`?AU-iW!x zHiGAo3dNb%u6JIP=hH$K3a+*FBkb|l^MdxCmAEe8j*v%+MsD#*kx%huq+vYzbu2ID z;j!STBA>_!QBsP$PB6xD;(g09hX|i7Oz)qb#p^=mVm%6I3JHz*S+B@fS7ktc^L_P> z|AqW`Cgr0f$$jyw$WM_c@mTOgJU_{CT{B$SSxGznR;uREvPLd!r?Px8kZbBi`p*!Mu>~A;~O8tH|Ay?3Y=PdzdzyD zGwV=1i8a6Et5}M;iVL9^pO!0rW3EL$LN9lT5oP%GM0^w&6<-lAeiO?Q-|;PTi<}hmjrvHH}A~i8FaA zCNUSk^=_fh3N2WCTkulM(Jy?vC@VrH&SLU9p2-2?#QKy%eIo`U4y=Dn*3vWiCi0RczXNvz0Zt|nat03igF{?3;aha6uLlZEx0ODUW`Vp7Bnw7QOy;(NBnsn@fgn{ zmLk7KDJ<@b-{SqqY4JC;qb5QR)i*iX0X1davL&&*F9Q=HEZN%9SVl zpK$D1L4i|!uhzYwg!g{NPsGvR--~w&Ui>+)qKvD!jQkyO8aea?ag?7^ zUH<+$J}YW`mFuqZWy~?=ek!9l69YvO4xx+?7V!T38*vfwQE0}38|BC1Jo2AcSML>1 zi{B{sSFf((v?%$+e+8uf`1gdnzvaoFdF6CfXx6LTTHK2^Hgd9@9l1N6osRK&JVsk) z?vZy3tr|6R)T>dqs+0e=@8Q(nU|-dUo~oFf{bp}fOl^9mnxTg(_E)9!j-AqmzBAMM zze&!FDQ3djdueZA>}#`EE~d_JXYsn|i<^Z0&IR9_yYumyp${$gLB6Nf`l5GfPuf3L z^wAW3RQ8oQ9;rdUZqZw}4t>3&&||m@eTF?o(b!jN-(~E*v zqr+mF(Ysxo$6uc|ug8Apc=W45=mlwLeW;8!_u!TI9Ik$w8687DwLdxIWm&*&$o*F0h5 zfTLf+NF2vdkXnxH`QGB!YezOr(+0ie^m4QsT7d89`E|ysQdd9hfX)7JVHuP9q)vco8ODReu_2BRX^EBdq0 zrSUf&3qAXP|BZV2>hWsNusyj~dvxvBwO7}=MQMN&t4zC@iQ}M39#d*x(zx$#n&ygCYtI)*p58gS| z!Ly>Kj%g4h#Tbr=ok$DMJrkpmJ`v-E#`Y?v_`G-;pGP`LtJ7Je?NwU)uGjva&f*=Z zQrwM@Xe}bd@!fd$^j(DD#0k+7dN-bVjN?&^ppkg8&t~}udHZzeb@*D;op;iGmgaAQp1BVsEqn&N1V$1L!g})Ee@g$5{xSWx^#4i!WpjPP z%KjIu9ErVUzoG4AC!f{2zofU)KXmI|<`OioO)88>bk%!S(Qp003IKB)^Si(UVZG9< z#jL@zP`-BCF}2L5tl(jVF@po^6X!g-!lWhtuk_znzn_*^vvPm2XErir55Fbpq_X;5 z_Ydj6tXKzeQCZ}S{$?g2EAY9`&|h2WMM*zu&RE7y&RFxb^_^8G_ZNR5kN;|Yn==*_ zYNvJ9OB^{vBl?D}SjpZu)aXx?{IA_#&dT#|7w(1h=TLKIp|g74wbd`_A6Ea|W%eO^ zuuv{}Uy|=%sP$j>Df9WOBkG#wiQ^qvG3$bL0a+Q474^5@xYk-{BW6o(!WjFFqc*Qo zn|})B{=4O_%dKx`?#1-y3wLy))@yL>JKg&1I$T4p73XbvuY!6u?oVLIRuW~>|`zK*T@EpE@wH0kl;p!%?egHPhxzw$_Jw&HUy%Kw z-d>oK?7j(G_bXtQ{1BQB!8VwN62M7awaA~DH$13O2j{oDvr{bhPpkT-wr7SrkX||u zVu;4sLZ3}Ot8Tzgugd6NYMEs2)U+$lOA~l$oV`0NkgG;cd71nuxn53}a_4Z{FqGS(w$%FD79Qgqz4@p_ z+rl;#W-bQP?f}NvE6G~Rs+5+BZ z!NdMBr>;Z38b+A8+QOmBjMc8o^=i`=9#Vw-I&)jC#R{q2o11HlM5WxJJVm)fRw~^> zp9G5{rq0Tbf(3hmWw+JlJf|*ocCOX zNK$sbSfLB+%##_CLrX~o({p5U_O*#`HPa{&Rbyq<-xZ39_sp?n6|_r zHJvLDaF{$g%MgO=$1-g8lq(SO)4+GpQ1G2jNV<3iBmeSub}OicCS{tm5#G6mfLw18=?Umg9f3# ze?m+D5iX;~{d_K_U2)nx{>=Y>&3{~!kbL-Y#8UqRjQib$49YEfP%o1$Z;=uGR_BF%qvGUh^8Hms}DWrrLrfqvD$ zcmFWE-Y5@QW#$b2seN^)#fv|0zp={dHF3#5D-Cy9Z@G!(AO4^eR(98NxOTN?-r@vd(!D@pV{xAItwbR^vpZ1iutNm}V`q$B61}?g;aP7Ou zbn_asccOJwKHM2{KmRt(v`Koy&i>fIhiBr7+KXq`3rA+y4~jhWDx~ATtZpzDfmMvo z{&MjZjIy8P*?yX?%QJ96?X(n>x4FieB3cN!>n|67CjBQm6K;#p~ksaPp zzqn7+4=7uK7h(-#iT~F9=X!OOx6+HhUdS^$F!~?cZ%<0D9Mb*WD%yv7^G3VUJ0w}_ zyS1YRA?JA?g6sp5x(?4u#uMZvhCf4!) zoc(!zInHmDCY3I4LcxFP{xZ1HWW|bIP96V~8X^s6tgoY%OR@zTW6Z4J4w`rvHJN*I zp&NWo1Vm0PtlPg(W@Gh>bLj9vzn}d@$v6XFVq_Y;W6E@=N>cO2x-!nU>P8dZ(b;8! z1jwb%!}@UOa6W`jx8GZOZm#x(#^2=&B%69h%VwGXx~k96Fth4DB^UhDv*0cA#gBGH z`RHno*e|ln`bo5u4%pG?3x@r#$o+DQ4=vXF8Ca&>H2**Vgkja+Y)H!oZ0$@%4+x-~MaFXheIfl`zibY#gK9&W4WjUmW}9NVtdGHS*wj5kre3MvOzmScI{* zI5H=;$YZR|2wogn5c_pvM9qKR+DA^e4QEJxw_knXAq-jEo zw@=c09`kEGJoDRi_})9lX`6=~`P!E8{5<>$nNjzz!0XJdkJQ4p+gr|DOVPdQUvlq~ zJH{*GIEXls$v&vttS9r9h>g8~pWsa2b6rVsBE7`U1Nh)3eBf?7kKm^*oHgaxC>!-t z4&+69TRe8SZr~~7hg}=ztsl;&OQ6S?^%;W)Q+{z6vm)D~EIs5@R}_56oVWI&A25E!}}b)KMhwMWZ&mW>QkThd2@)5nxxxc z>(xzj{D3)nR86`KNA;iQJPY@?-&(xQvtZ$d<$!kZ$u+k&I4{E`#Yq+S8Z3< zoMR&^?zL$H~P?fkqsQVsxh1~M6Ws;spF~gg&-e%=j{oQ4>qXd)nrB)qEYsN~-&rrL+%oIHhp&mK86Q()p|5~M|(2_^DSzhqj5oGxtnUUhSsP5uveV` zySjHm>X-M#1LK@owfztpw!j@FlIE5TKIdQn8%-M~fiH&mEWS51@g|rK-wb&>JmFm_ ze&jMJKMge*QkxdvnpZqCPdPC`$`^SZnvTJ7Kez63rD++`Fx~Rq{FqwgKPA^a-x*^a zL6us0!mQ*C5dk~{TZ?f=NcYJmt=Ktq6;jtdr$fT~4k^X|42k#w9@f9m`fx|;e_H9$ zxO*sZ!WlMqX1=tou>PbK|2~`16O1JXyUh^SbpOals zKOeSm%NhQ=+}!%s$NODSZZ||zx^-|41_n1qtaZ`P=IRxA|Ln4bKQ+!)`IAx``PuOe z<)b$*@jBYrocqXS8xAwd1(cK{`g z8_&TBW$M4uPN(j0Y=ZY1M+9pbC;1e8vxEzm=(NxJh1HEQu;cEmluPV%bz@c|My*du z>qnVABVwo5c}Cj+3vi2@m4e7#+9GuK$W3KL7EK*xMT4nUcYA6R&SwX+YsvV>BKm zZ_zZZ@7o`ZEXkq;>4e%+X3!49BRYnkEYtnCJM9iJ+>&l|HifeZ}r*$1Hq z1MX!l&DHOl*V>f7&xW+M=OG3H2FPKUwy{Z@>I_Y_0Y95-BVt%PFg*OhyV$rEwqpyN z#MQ9}t@NB4Qd4yMFg;TWY*~PXA+3M?A0o$9^JyA=wGCzz=9lj8cF5nNGS0TZytTy- z+%3MDX6*S>Zt?{b3&(oJmHs+docXscX?U!^yQ}oGQHAJUW*kKbTgWZt2i};&l~dr< zQ-TK6W`?E(vr*gsZoq2N&1Bfu#zKGXrgDKX~4qD{lY?QvUy_&{iqZARVk2n z=HF;b<&*Ln-8DmIn!wP!wqcc{PuRUFP=IYx3s~^Bvi4z&RO-YN# zOuu$gwobD`m#A;+UE*Qg-!*IYYVOmyt$#RZ9<;4%-ni%G0LiiZfwE9le?O-!N!e(Y zA-YdEw!-pbjP0J1ki=9!XwR_)PkFC_{e4d_N%^fS-+&8H>_)@rTCar>sGqutAz5l->2CWh=$}a#Yr<%f(^Uw!!0Z-16Le-8vxv=n_fx#N?^cy#S*Gx{LvC1aDc>NnJF zM=Nxh&E+3t=}fQf+Yqj5rCq)x<^(SR2f7n%&>N&xT(Z6`wT0uM{CEG)F1LJRif~|; z0w(%UVoeKxy~t@@07byY22Mvlg+rg^mjPH7A954lgWU`IC#e;A8abCYc383*@Cpao ztUALpKcf|5+YBtiA4v-Q>J@C2a8L_!OR&z3ObfjL8}1+PIDtA3ScOkbTM!jDQLdF; zgQrurFRfO-O&iwMdk^fbDXl{(lS<8+Rn&^+Vo48JwVAgO@(nZ^BRluQ`JGZHzl3JSG2AD@2u3Hv!_JItjNrQVVUv$Dr6I{?$iFtB59K#d z-O*;9tVvl(*2n&ic}JcwmeS{&B$IEA8jSg7$5-;qjxYPj`7|5D)B9`>*SV_JihG@W zNgnmXGX2b#`>erwg?+I0k@6qYdz%75y|T<472|qY@2E{bXG8`*!5hcoGyOYgA`R_jNP9+f2RQQubjf%@*#Ilg#@RoM2_Ye%i105)%*K_%pg+_I09 zpyqo?eH`zSq<4voVE53qTJcYZY4#fXFlIe@U|{UcEq>dFIx(7kw&E&?!lo)E(s7lV2!H{X#&QQl=a0^-UYMbbb|&R)3Vru`Ehx| zSFX+Gs+v>2nw0fJKcNTeP>0pg(Q&V!_JBT)HhQW9*81dpe$Z+fkxKCWjhq?%81dCJ z%6FIQX%^aAygx2uso)^n0<6*op3cg&sqnWFaC||3tMYBEZvs?Xbk8zdz`u@gT62HE zeOfb=f17tdQd4&ga!2dOV9WKIrr8;kZi7oB*B!pzQ{x66&ZvU!CZ@Sh7xXhcVqK>* zdQFyDy=pG4GMELH=frPbq50|u<2arC9r;i;_{J*+i|522_UUsZMGlbzH`HRr^8t6n z${S!CfqmDd2h*It0;BKAr-2Ojz+Mw>dvS2h)Jw3o1rm1yi>o=!Da9!3SDs(M9q)l` zMvbS)U?1%#+|U#(v@3VWb%CTCIW}JXk#+Fv;BN>9j3B#~+#PCiA1ky0+S}01UGJ0y z;zHziNe$3@K=v8!e3u*&q`}s52g*F)PM15YyskEao9k8g5U5u+)N&1fynrvDDZH{I z?_t?J`5cG+h?t|#J9uhyAbEtB@|hZ~i43l}w<|y5tsS0=E9K$8py_T>>od-uP#0t8 zt_~LC=jZSToWN7@U=#?>qC|J6tykWGlR4+Eh|Opg;CTto++W$5Rdp~fzuf0*Id@$C z3Lb{wsLy`5Z+UA`cI2EGH_|F!?aJfq&7sHmh+VF<)AB<8M^Nqjka9=52tU$BBtgzZ z7NOvld%t3<{7s=*tNa+M*2?#RY*7~PeKatmbjV>1eh0_WjgL0UV29{Jot&P7i7mPB zkv=F~?j0Nn_msMeW7>wmHU{V0(p%_{v{Z&buz;HN${Xlar?uE-#mPSQ4P8vBw9_b4 zEW$_7#j>Y?E1pnV3dfDHDJ4pE9H1jEHu)0Ro7mjX)VWV2cYwF`3dtM;kNYXS<{kRt z(Ze;k@f~@(E_u5mz7xKk2MV5pDfPt@Xk{FIkAzInqbc9bD0i8?CAS%#kKRC<%b!ik za!mBiQXkHHfzK|5ZV^A0gYN|lD+wKN(JCiEq7`ePHQjxpjaNDP##rzWPed7KONkMXX8_H%Ye#euPA>Uqg0j8f&<_5Sr8L(#!&Q@>oGUwq6p;r)4syO)&*KyIh}AJet~7ZSXXkYGRC8tv3c@y`mO42yFy^L+fXm^?A#-XwlcY zgRAtB@mpzctU~)IKzi*N_#Wp&+F;wzvRqQzCYnbdcNXIG^{UaaK9sVpIZYec3@l9K zQ#|wm7+6%+TvM+@&b zmQKvA`Cmdq+k$PhVuv(A1H484U9GjoduM2|r)c;Ne)Sw)5N;zmz?kpB?h?KjgWo>T z+aeIZbL!fL8-#cOj++t3#EfSlZreWS`$jA;;oK>@u3mXWc{MzWo5AMIkbe7!olQ~$ zV$+a+;eL+o!unC#0(hg(`w6S0_1C0K^njxg`hdasaR z^_YAyLpqv7FNAtP+Fa+1ordt0^A0r}l1l?>y+Bg?wBatG&vR_DdPxgZ2kN){J5KWq zdJn-MHWrv4p}Qi)!n}ZL1E~8LY}wyunqwi{4=M?qET&sQcE#)-j_3p|TL)#;6{6>S zC9b2M7zDUC#>9XcUa8i~j3|cseZKBf^97P)DUN`6RRht5XV;uBcfeg$pk2VDgi);R;{O_ql9}KOKn>W}Fv8HUb z(eLWlL2Vh>ttep+$+>d+G$W2u=u_}U9c%Fj@6I@kakx(2pe&)@2Z%j(j&LjSFR*xbpxJZs z@07K9Bj88x!Rv!#+EjPesp5_qdQX$Uqm7VrBgmLFQ8RovdchvG68gv7#x}5d6jw2~vbI*3@1l;xmo)VxpSqtmY;fYf1I2frWXVT(8YoXDO zHakL(egXD+wO(KJnd`&rQTD9Cl2V-C<<6t} z5>iaKBjp_b@E)3d3^i&WRsnW-+%o)K2JDM@wO5nx-T?b;a3#l|A*uCB?}+&gxHrwJ zYwrO2LvThriWGC3l3V1zHC*h76lctc^=a_4=))>2fBJW}XvDkoD_v1XyhqIYI{@oK z@A#TQ!2Ft0#({4l?BdEZVV?zTb@|3|9(M!RV7bw|C%%bxP@hET*Ff+D%x{pBN#K<| zG>rMp!21ThBj?@&c3WV=+#+o`+j1?}+zni#4;Q(n7vPN0zkmncP=Cj$NRK+WR~reh zrHFeuM(E|571UPRU&DjWQ8gw|16z6$ZMbI#@9SY&i#q-fsqBspAHn}xy%X{k_vW~Q z3)PRd10MuTFUhR|{2jDS4H_iS*IgK#HFz7|`AjYJnQf^!8p*cFSH8DJeiykGw!vWm ztXeNIJ`RwpUspgN^i9700M^{$R4;o@DOxt^&_+&`fmjRszbD=SpU=@7%9XJM^DJ;; z9hyM%3CWFAn37-Q9^qe-|F3Y+T{L2Z-w{=|B7{^c9A{z1mPMDm)My)ERlmwH^6i9Q zYp|gPme&rvr_8^hF1EeyQHB=pg0gKP$WuM=zlJ6|>eRz`T7y@|zkZ<9F6FF33FaMh z?s8vCFI}}l+mf`f%@S#`1PhOO>R6?Z;66r^x#MkO&^@@(*`YB#qFq~ur{teq?ntSxXw5j*PMu~9 zN3DH_()`Zas0WwSrbu$JBl_e5*ITgcINSCOXK#V`9rxr)v19rQe~M+f+p%Jc{)9}t<;}Rt#23EOa(o~kb5##p(~rEXrF4e8^}YuG$uz~|dlo73zvjH9RXDm&ge@PCGYZCge zl=B|>vqZ7-mG-ZG{!`8!>*nzx{PCQ7_c&^$o`7XBe242h;L>-aRT27!&#U- ztnEYaaGMewJsL;ez2zOH-&Ny32fTj{ycsch8%m2|u^KVzJ71}Rm=z;(?mOydtb;;1 zMvBVIa@=jo(L)vc%DW?0BPHV+A0NoS6kvM(?vZkJOB&7Py z2+Lc_zsvIpdPj}onqTH_XH;z&Lg62~7J z6P6pic2?^{etq*cCCV@6>^s&@Ec+|Wmg9TxiAt$Qj85O<8|&ptNJ^I__>Q&w%)hm= z{8(otNy=F}aeI@e?kgzPjM6GOLM#XS>m4!UbGiOkz7QcUpQJ=TneYukm6!k{8*AaV7=53 z`VV5zB#ifXODZV6w|Ljlugb36rWa`K+?!7AewPT^Cu*e5(g%@SmBOem-tmU~`7X%j z7xao8;ydPMZG9?7nwvbVy)~CRfq&#C^_Ez$HaDqP^h1@vC)|CE_ENj4{asf>Jl^L? zDd5o=(b6>L;@i;{Ig;8D%SM~!1!Y$Wm8+z)xDhjVfkI1AI%4`J82bo}Z^7}~PqA`7kalYL0-M^bD9InWXW1p*jZ!W))D%jM7!%jdR~Kse z_CDV};%&K7Ix6k=IcnYRp=TdMYiVy^!Bg%y9$nk0?UuR^!`Z{Y7t&K5B6aU^M=6Os z<0yCS{8Rpoay|}MdZ>dWdN^9s3+!u5`fuJzg1436wQR$g zc`o@vJFF+{JN{~)O~PURdS_Y_c~$OLPQ`lT?)+)?9q(Z?$Nv8I4*WlQAs4tzUURws_ijK>BuiS1-s{on|{V;xTFj zEs!m6z1l9RN%E`0C$wFvXK1qZ5tDC6e2F3DRLLp4L-|tfvm|-o5j>@Rh`y&~=#ks9 zh)FL^Kh4O1@gP%#pc%^U0lzT`}FtK54I%q z#_hR$LmnTotnyuguWI{8ZoL4b`Uq;G=-a6$q_tdi8`yt6*2G^qOBst_D4UT=N{&1z zrIjH0&vW0?3zPTcKI!gJPAHNb8u`I@)EP0!2XaEe4PyA}d-2KXeKl6pTBk3}G3qqA z&a=~Rgv;Y830rY>6-FV9sdy@H#<~@EB6LFd8D7)R?;UIj>0hpL`R6rHZi2rkm zCsi!fx)(_p-cjOBFlTRyt$3rslOW0U$}Y5l8=>`T@3E_YsTray8+nXndsP8FY(FnZ?PFYF&F`qX2Fh{S z5dl3o)4CgzYUIY~#zB7#;JbT)3v3H_;O#y&iT2B#zRrQ82Yrlbr~!9qCSiLC71S2` zuD?=)*oO7V*Mlv6byx!2d;X2@hz)TewR>P$i>B^~9;n`L)b!e4ZD^#XShZ%IaIBU0 zV9n^j6Uvo?;!0~m7ilY9jUTC>H$dD(Qsmp0p*&?wEuaS~=M-@a<4Wrgl{BJiOnAn~ zE#rGT?w)~@f))ue_$g7szEN>XndP=kwfOX{kcZgbaqRPrklqLLO1s>b28_%C?h~jm zC5MFnen`SU1Lnw+a*RCqB51(7!MoU(&F1+G^Xi?pn1N5o#0P>H(YZ?s(Fn99s;%!v@^-17CFVJvfkNYvjZ+GHP7? zy~qdRR^LgTQKHvhz1-)U2H!8km&&pBUZ3Y9byOl8f8qDP0_U&5sfO4FDn-tk19_Cd zJ!ir%hh6ZF`bpl9PvlQMduJl5%jMaqr?s5=uxirBK?kXalm!1D@Nc^%wo&x%qUWn# z*PGGT(3de%qt~HdsHN7P_=etxcH4BDe@oLJ(?TmRg`Z}8OiilKrf%2k7Vc;V_51YB z^&?|z#{0#a=4A3WdZICJBPP)&RGUYSKq$0=Uft*4y8G+_c|Q#2O0Rd-kHc~)Tg%Pjbq>A zTs@^$6cdkmL)$7Jh(B9S_jtodg7|#`A3WsQW1fk5pWh1HRGj(ECDP#@#KzsEsu(vq zU`{b!Ans%P&T@n=(!wZ;G_lnu*BJTn+ScM@>ZN@&y6}d)#D_I_&0T#fsr8OGKY$B& zPc;^E$(?tciBmO?*2G9kY)R^&`TkwXdJ9Jy2eTz=YftzuIddNA7a~Bf`SL-KS0hT1 zdmjR=_5MhIsGfq*`)`fJr+Z>LBFUMNZ+QNYt7qhAK1N>7xo?EyA*FpGe`_E;m9qOl zq~G@;yr-^mq=7xLj_5O@_=bGm@g_4CfZDo8`hTIW^5aeN7mIrAZ#er(NzdsGw=74V z`700K=RG5J=JJ9&w(8}lH(dM9C+vgtkUzh`hb7)p;(gB%63Y81;7uOB3~w8ckS;Iz z;sf8@p?CNbdETb1&s@ExZtVRGY|{TD_%+@q){F=|1J)-%?z%@8fnEuaeC93r@)>vL z;M&%jI_y5ba-_QZDOb19#?rFf~lrq%u_6^_W%lq8_NLg~(l#v8?$i>l) z@2HQ_oma%)gysSNcPS@EnBqRodKAy8i*bZE!1|iAx71F}6Zu)sK~19OF%RQ#@1U_y z?Pb-v-RA2@9G~%qWAHu(PLK<~a_xTZUx8lupYeU{t+=4nggXPCy8p3J)u(V)0zPYH zV-m&)+>>1?RAW8>a@(Ab!FEDA9r2vvZp~sYCNc?pr;QdQX2X_GvpSJB|#MyY5rs#M=H-sZSF9S4=<+1TZ|f} z>_xER6Y`rJ{TjdO^L!n=lLau^+w&`)i|361&$OiHr0>EAVeak9uF~r`RK0Wkkh8MX z*+RL;+>zg>;6`2hK1j|N@OB63Ro0Xxd+Y1q)&2;_a@)uMiYxn2-+}czVD*x>K5(}S zC-mSbHLmR&=a<>edj+lDaVE9Z7{=*d^Z$Z-`n>P(gUt5@`FtTy*8|X|IZpU>$m=HD zKP6AcOh15MJ_Tu+bM}?@m32L1*Kc(Gg`+xOlHZ8@+TjgbdiDp~7HacUD`)QSIPTyo zM+w;)ajel2Z)}f8yVo9HsVO%U{V%(a2=3gDC9k~PElx{V!Hn>D?pTLv)Urng)*N5@>N8XBl#p^&bTVzt= z1?Aa)_mZRiR6R;L=imA_`5hsV-cwHXT zJhpJm)7q)sKk#pzN?^d&uU7gFvKk|s&*9-E|N6X+5>iIiaQzzj(r+Jyw6I5=)UHf; zN3I!B;uw1GX$#n%>p8SL>8f zr_JRk9LGKlu5TPOTH6C{N}i6OVjR_R%-WdTk}QSu)p^?Lr%-DEHb%g<01n&6#^dTh zYq|Yw{)2zU0M5U+7-8wCtT|&z_q1#J;cYz_b+j#jh>H>Jt9F2B#$5Cnv&n4_wyS#Q z9m)qH#!)&(%2`%P)}e;lbjNZzGU+*1LYaLDeMUgng(?Gh;ylolmRUL_k1g;FnT5tE zN79tm)--c`P95yn;&GH*(0=r)$5B3vs|q99R$lE2rc$ro=WJ8^_PVJ8_gEqbdXCuGw~P z9~!wM2OXv9NZlzEThL}?1_*d*k%u-!Y&-xb+V?GV)CxC%Ra)F+Ce)H7#el?lhn$() zK24xnN|KAr(a6v`V95xAIBFh8dJdd1dVNuGsRibENM{pr2IKCf!4t7dc!^9&$FAauy;mIg7AC{fs0u!BUAljO!?ABRENj2ES2l z1wRXgj0v7DJ$Y6W-_AnF83xw0_PwA48vQzz~oC z)ex#BKs3%K@O2vrnDc%DC&@=q&YDQOoV{{BG_x#cjKphKYvuF942?1b8b<(|rsTdR zpO;W*NP;h_N0qHT$ zYBMDd@wDe3*vM&t?y-fYht`1uCPBv=pBk5qbU50~d0UNq5685Sj$+K}P#H^i`BNu@q3s!Wekj9JD?TZv%!9}tGn_P zd^f>&_!4}Jn>~1zViUBQ{=a%ZMsn-ezBRcnf;PB-pVVUkJ3%7E%~rin+NV=$DBWK| z^*zumpp=|*!puNR1}x41tyeDa7W9dx;HD93HwD8>aNNi{Na`z~QR}Nc938d`kQA^y zpl1lIAfI9*;su@tKQTI&WNWDO7Ej7=g`^k8g-W9)SlRGDbJjd_Ul-uz!(j!LmcX(k zmt{zufZtXA0#D&SeB6LSa!eb%)GNX>EUOKBhcUV($&$Z;M9VVloX}EkXibfTUSlSH?i{lH3x$5+~Nk|2rhEJawqu0vf+Y-x!q@C+#Cnz(l|aybFCC?|W8$MjNvqAlZj{iRURbT0$Sa zc4J}}Xo+!vBjSWSfy*|ZQD8CRSMo=Z5^4gL14f+P7BR9zel}=fN)M2T5&2|SF@F0F zt+x*tiJDk?FVjBxbdaFe=!OUA7O7)yCVBP@IGj7x=UZ!V!pHoG5pg=poeQP)o$%cx zNb&|hN9hT$1UO~^Bfkbp@1beTPdKK?5Z8e=`fz&QQf3E!#mSEIVc-$RMNZ)^>mWs9 zlD5z~NT2O}+hz5j;gsS*&~ZWnh0t(HalO(i$C(5T@@tS|gku@Fq(Lc7xWs6}_Q-Js zw@%KRB8+jwh%{E{{Xw0JlKKfV_qb(ODwNbq?I%>Ds5gNDyx;P7GP2C#h$IyBW zj`=D+gJb(l2OBZLi zf#xAl>Ba5wA6xhj;!}u}A@$3BYUFr#BU55xm)ow>+ZNgpcWuuLqj-7E6RECU_K9Rs%-u`gyM-Lv?s*Hgjln(ucg}I$B3BncY`IgCUgkYuRW|P)aT>8}WY?&$ zkyImS(ymK6b*Qw+NAO*pyEF8)+$=}6xsscNvke97p-#qcKah<78)^44uiG&*T4 z^*Ok4T%4@}BWwwG#nrg1SEkR9fVBoTOlmsExWWGgxV^vwT7t)?#4L;(s=rt-gZefp zu@0x~Xtg-b#F0c_fjvh5#Eo%kBbiBvB8i(`h-zL2SjFIyJHNuKMqH$palkFm3f~+U zmcSzC)yge?g|Jo@de0Lu>}-iSxHVEd=l=n9HuCy~T#bT03U!wY909SV1ii8g-nWD$ z7?FR5Wx2dnwpC%Ntb+y?w%idL9m<}U7L;6r=7~gzMyVSV9v-lmIB!*rFj#E<@;d#TaJxz64{&PaL7?-{9AX@n>L?+0c}0Y%~FaA(Y#Ln=`Pp z19N(oHO_5w+~$jylx;l7w9nLKYBPIc~OA-pMmfWGWY_WVf@W#z(Xjx1VhGVCqdt@%M02>QSa}d?;ac(O%wtwBEDarG!0r` z`(y6*wHYyxGv~l>{HYFB^;5JzT8JsB5j3(eNnbUdeQA%Nj%iEMw(AGhE5S}<1@RW} zBAfhcAGJxgkK2ba@GOC3kG<{SM@_MEEA&7Q?l6L>t=B`)iyXqOMm}Efw2`;cem=#c zodzEx;rlV)3aPPVd!gizIj|^AXJ9~Vj6yq6e}T3T{?h>OWx?GE@SKC4C6FXod|M4m zJO(fopm|EI7C>F+-355v0nr5N8$XqMfW`8iIjqM(3wj#z=>U^?Ou$wX`FM*COQ^ZD z(h8qqL<9Wo=JgqokWH;#IfI@h=H)I!E<>XQ#0Zjfob~fxsTrCEZ)1jUp`YBVwkyK3 zrw%)~g{TMEoKkiIOh5$f^yxZzg7?wM*8KLNqk6arwqomdf*rO^1f6InZio?enIWv7 zxw$r}JS5WCJKz<%c9L_OzqP0-RLe)S?nZE%@XUhuwV+;$vUa5orS#{dZ<6+TTZ=iy zzgmG2VvawA18J45QV%biob2y?qP;CF+cxG4XM zHG^}YvGumaoPZxK&=6YoD*f^j3O0D774q5=y&_kzKTK_3s!JQlMjf8?e+LDc)EB;v z^UNcm|Dd(!dS0NnY+L;QgddV zpOFiY0n<3AFQXD_fOJAV%G<+t@^DM|p$P4Xj3@!MZdc{~5xB&k1m8orV9RQvrtLQ< z2lisSAwf&W=)5yqw!qgfkL0VkqMU2Wv6|cF+M>exEE)J^%`w-t8-8o0ll*yU0!%Zo zx-mvjn^Y3?;xRfcPLYFgUJ5)XHchi?uX2mEDz{-}VrwXLLtrwd@)nQEHiYrF5i+Rf z^8gNMD?_zeSog9U*4kSERlSnt!?gANEUXsk+H#GoR2l(OGe~Lk2EWw~E0V~!!y}cq zKa%WrseY6mY1{7%e%4eG2Aay@4LrM|_Aq3Vu}9$oAddN0qxl9$LKDVokSYy3U`KeM6wyenVg9NG@D83p!b-CKWtF-r1s?hVETOn)BugnQ)$v)~KINvvDR& zOY~s_j~ZX8(nN<+io2o2RYqB7bjH3zo!@A5c?Nf*76KJGfaDU?U#5iWAKFb%{rt$|I5s^e0F7J z5R4yrOOEHC)o0%v=B#80mm)XAz&AVAK5DWuaO5rGb=bUd-TEtbU z?}@AXN+HUeRAvFL6}o{v(aQBh0yhg6PzC;@?O$mERr4CP1zT$WbF|+aoI=6CTib8S zMh`EO^{e3aKAK^C#Mm-h<*clx99ld2Zwl@LTfb{wrwx(Kk1OD|pitCD>&nKJl%b<= zp$UL1^f`TRk-$Rsf;Evg!Qum3uwLV`yE4LG?wVn`9DW~Xv)uM+3RGjHQP>(_z9BWy zrfBF2WkrcDbOdWuZ>}#Ytb}{i%UkS3)ZY8j48CvD2Q`Dg7Ff(3HBFHJt=#i{4rJ%7 z(4to%zOeLY_%m83?hdn+yWFGd68{71bPl#Uz@zW3pFf78dw9Q(HAMr1vmTa9tPKj- z*jr^*CAu9fBK)ANfsbWM|ISfg4z3T7$X=y}Ox6#3>bm_g{L%U`NB_+7$7nF>23++j z`liyWj9G08*n)g>vGpfv9_koL*iXFF%Hs_DxE1ESKX2 z@jU$1yp>D`NEj+cD1fKOKvF{Eg)}{>3D& z#jLpfM@dLc1x~GjHH)dJpLmaSI30}#UQOD~6D=b3JeHuLPvX0$?@u(1_x}F5_X`LL zh>G6`=ieS6@BVEvVsT1W zudaS677Gjt$5jY_KL1;M74m8K6zX%YjD7gMH8j)+#il{ROsyh6(u zi&F!=<7g~jz4JEU<73G04UqyPgAXX-9l6=ETIGFgcaqwgb_`mKGwp!e=%r%}^%+LM z?f6Z#{VU>4j*4(hs-tc0Q=f!fy?RePcw0KdIy@j^)yJmovp%(c4NP@x`yP*DhmU64 zz=(>G4I}aPk{CZT_UXuxJ^t4gPeP1h?P9beonrU64mMSb+6wlyg@yH8YpcC&@udl$ zfYj1gI;OeaNl2&X#U0`rsU-x)S18P<)kMP*EoK507gX20{%^RGBgco#eKr{gR zkDoKZ2jibN@r%N^DttG+b$9o(-4*vI2tG3YsJkb6kJfaT7DO|&183y8Ia=xsIW=u# z(UJ~Fp3Opprd{1(k&U7zaEtLxxu<^Efz5ib#?eN8gfr!OM-n}U&!qfksB{j-^}426 z2cAvvDe!&pjZ6`f%M?E+KPPhDGAeZ%`oj# z*V^Cn%@(hyen`o)4Hu6odrWELJSFFD;3mBie6G+o9frD*Q>fuGK(@~s_)uf8c8+8i zv+9@iq-fXSaSj3{o5vO3W;MK+d%s7E-ND^fO=~`ZC9BmEWdNpbsQ7ATb&9wr{{WT6^-Z2M<$tnt`w21$Ik#aRByA zXok?P1-6sS^^QLxgFVV=gBdZg2oNRYZ$0g2Q{KABaTna!3SPnmtrSR()ZZfk9qKpX z>5Ok^xls>CeJbhpd#tIm)N1122W|~xQik|=_lSz5e76tyS;7lqYAQy6ZbEK7AkY`G zr_9mp&WpD{>LGsH7qo;UoKrMT0t{pQVeqr(e+fpXUQ?3}b!n1|y@EnC0irs7d>sxw z$)XW4;Dk>u(JA#qKi~7Mc?i##V*}1yg`6C1X&;^5>KR_>m}B%&^;+$}W7T0wHIELd z0bEJiCodr~-$}^lGd&F#$V`N21eV&!P19CTNMH;Z8X>!_@>8^a8;3Vu zTPH!DH%GVz=#&u}g}dZz?|b(!`){H8fIhK@Njy!+FD84z&hY3Ho;;@C!QT4_RRUD| zK)vM==VS2Lrgrx0Zjoc5+5wmC6e%da#Ml7MDqIU79+#K!hcW3HsRI>al78tC^NvC_ zzy42f^?^!T<;<}g#~0`zxnfCDYjwb}$1RwOP}xW0x27fhG$wg$ zP|F6m+E7E~x&&qHuS^0h%|)(Q1m5pKy){&=hZgM!T(&EY)OE~S4{9{2c|Rm^rzC3C z?K{xoKB5lJYcw8h?sB{%JsoZCm*c<(nmFQKDjnSQ0DW%%0f_s3-GE?(83 zLZr+Zi2LyGv(Tz@UWmFnrH*TADt+yb+>o?n!uL9OF!pGxM;(W7AHH`^nSReXRJDy2 z(|N$RGYh^T(f26BF_hEa(sRnSMQK0iosft6(iW3Gl^&`7hqHMc&0$$4dt9Bh=Dez( zTU&Z%`lNmn{Y|~(=#hHYGd;DRTb?5{ueMMv9oxetfpuD-=l_K!k4e9k@h{- zbHw}IkfI*f#~XyFufS80e0RiK>f&9%>I$5$z^+GA#Pyo9MZmcBSey%&a2xm5|0XVs8blNvxN zi&_)SdDQCa&K~C@WUmf)M|*>>m`#zFJ$i4+e+S*?*%-N2&P@p%-^9~CD=#W&l^BI| zrzUp8>#_%4%C6>N&$~am>s`uj@;v$dD#UeXL1P0my3LUTj``4PlE1!yUTW|*x7hMw z@I71f_sxj_6GL_HEq7V`^98&1Ua(*IMcnb67_1|YjnuWmzTOw^K>fdKUqWJMXx?PU zTXq(&t#05Yx~G_X8Q1X_i7@FaZtw~54}(Y8tM)33V3&7ztnGk3wfd&ot}cQma5u$q zfO$@gcN?I)aL+{d^bI?cUxeMsxw2n@y@Af?5!f104xShKD3_|Yu|;)qY@=y5q&E6y z1XV&QfufU&T5>=`um#vZ9#gp93vM|LmF=@q+LH=?P5}MsKFhrWZALISZah#7^F@7 z6=Ks{N_JGl2aak>ON#ol1kTm?_WBvkv;R*UUGKkj(4+Nv4PJ! zXdSgMx+ie{Iv)f`ojWQXj5E}*ta=9hqofJVD9BnJ*=nOXCtU02Y2)8R!4*8O-;u!o z39_I^wSkiFuToNp-XlIurXa z3oZQ>TDB=<)pfav_H5*>)F?sJ@<2u|U3#19;Ftc%pu_Z7N0nCDXb8RkS)Y`oQ>>CD zuX5XUuMR@EK;w{~_2W3FRXPNBed@Z%-xD)hg0B&}v|d%8Z)p7uLi=w;dvtJPK(9I4 z*FH}2PP9Xz-^g~L`($2}pgge5LLUr$4QQB2*f=e@jOoThS-PHI!M>n{A!Q$NoL6$dX)| z@M@h}sp~i4Sg*{H#r6TXXuHToLbe18?6slAE-!!`no+NPI;0%tG(v%DF&bZB%8&{@mJarKNpGKRVeicb_UafapW>TBPNq za)=g-M^Qn7W^ z=YI$OhRP%qEg-|wAOh5+*JxB>hHcscCh+eb6ZF82=`*q}$cHwcUM;El80^Y7TO$bg z9mBMr-$Ocfvq`|d%^`RpzkmMmWqXyrnyybXQ{3K&yK!sJ|jrOLWfyh>hEQ0J;U-K_16(1OYZ=Vph8YPUu-a_Sw&YZkRUV zgm$RQ2Iw~E-FB5xrkQbJo(mfz(Hh9ZntahSXs1ZmVc8wqmRObfH>nE;$O*`VW4LXH z)(`7kFQ=c6(LrrSKp9zIlxIORY(gJz;5=Ig*Lzj>uN{VdWBBB9h)gu#-!<5qQJd!V zS>W~_dRl8Hd~*{TXOX+tmi_Kf7u#1y!j_Bx*@yR9_PVoQX^Y6-78&nk#-~C zpeck<435xv3%soj?=7(-Eogl4S85z=V?T4AQhqbo-brOgT34K(*~wdA85&=r^)Kh&IOj@< zXkyo1!MXON7+W%SW?Sh372DQywkUB(vH!ba*M|Q%Fjw%kN1M7i{-Y5 z)_GC3ob)e@4mY{d)7YU`7hs~pnK<)2$>b<&WQ%6ac^7$f@1g-M+8Un99W=1>Tg8U$O2a0~EuleW)-<1Omribal^vENDQnuc1PLH8Q(IO6AdX#%F-VXYtIIl5EO0JvV$ zhOGmet=T^M%F;)~&|d=6lrP3;*h$%SD7SFmV@fuDGJzV7qrKqV^`E5WD}2yC_xAzf zIvA0@y-K^X=Y1&59a|5h$`Y8`m34W6R)E$>fOy7^sgtYip!dAnL~`0e;`b$mEoYIcgSN{S`eX!taUiHd2m)5)df_gN;QN7|m zS|cE%1;Z2k6=1wgeJ(;hjbrt(X3wC8dn0~H?Q+^{Eg8e z$!KG7PaV?ZE^A!C{|P(8O|fBp{Gsy$(vT^ut<*I^rm0qKnI-AHQa|&n240Ts;XP8+ zL0|Q;h)K{|eI%=uPPy**&l^j=?(@FBaD(d!T-M-DpL~?fSw7%bZk!1VHtH?3v_8Kg z74M+6k!oAKcfpyXRcmEd?5x~{+LOv08shy!KQt$Jw2i@zs%35W7ESb-FYkff9=z&0 zM*0i4!El{%!1$ct;5FrTfTn@8PE*IC4%62MBp}nH6nn;&95W~6XnJhlC%$<|?!iX| zej|mS!7REB4&CJY>^;8cgc{mf7GEncX#60_;Jehl@J3+N@fx<{pJ2cA_m#Ff*w|(u&by$r5j77<;<3*63rZ2w{HE8gbC{kicbmg|o;#8;p~XvT zdI)Alhi|}SgC5pbV8ht6oHIpQ?1B1wTmByG5X@k~foE~(fuG4?2Bqfv4YRbzK>q@2 z(GQ|r$G!%)&Z*pRHoD1L3^T>#nl{`V2^4QKx%4jmgnQ@>ylK zm(M5E?K;NZVFc$d;BcdX&eEHK57+s~B|Az`%f2Va1?60zl^WwTcAz#iYL&}KX4z{+zGuLU_=Y0ge9Y?-Ei~K^Hel8re1G6`j z=MH16^96q=czH^#^K+(ng5RJ+jJ#dJlWperIxghebn5E0tJ*Vie!b6F$PhCrNAaVy~RzP)4YqjIbxO-(ifmUi$*Mho}ntbn$aF<~A5hV}6=reFg zJHhJ(R&vc(uBfzBS3(e-ygDgN8k z{19$=M{V-t7EEbjZfIo#?fn`YT=GQ!e+mvT<6d1asoD8f&q+#09~x?N>zvyh{WrS3JLtKnS60aNh;xouj<`dQm!s!J$=T#f zadkp%?kOO=L+s0$ICd5T5CHl45Z)A8mPwE;G%2e;3Qrf%()_-{j~qa}6sL1*ZG zf&L9RCTRB-x_r#>YB%QGJ&wJ72gr7Z-_W`XtX=6zL=VtDH?gtn&nBM? z@LKdU=X}%Hk9Q5ex`1~a(bpEblaV8#@PJ!c{kgp{~5k4PhDlUq#X@#(cAY9u61)~ zN#{&Er%5Whp1uo?g#`@(7sw4mO1?yP{k@zKT4PNw26*)D>0!=y;#Up#0J$Y%1)n{k zRO}QuSY@>BZWdDivnIW_`q>Z~Y{AN$7A<#^gJTR$WV2KI8p^tV(HiV1ZI9r6_mmVG zM=Cd@PVEJ?I76lfe%8P-rFVc2&Y8B+&K)K8;G%cX*wsYyLMyRjpQRstg0kL3A98c5 zv`XVKNsnHO=5HIj$E2Q>5Pc4{jP(5kpA$6%}-o<`MwFoTHvO)Z_!V&N3h*V z!6tgUcW7XNo8b2m`L`#VQ`&-uwKA#_@rJU}gkBO9yMPiyXf4k*_Tqhr9Q=$Gb)Ozr zkgvgjqr&={V^R-FT|p_abY62c_Lpe00j0G59PX#3XVRh{BY%(gcv*144(;V$gzhY% z9Mz$j94(fb@N@ICl~F%@!P%)2Go%&s{csPiNL#piMhVVoat@?kj2gkQCH0iN+yXmm zO1D4o71(=&j_4eqe8D!n4L1(qN}e5r$karGC?Rw7lM>!O4PKJ7C-#@5A#~FxJ%<-Q zM^DfAZb?bw^1r0K(LrtV5yr>hcMnVgMId$nh9uGY2#JRMSl{~p*+B(6X--(^W!Nc%U9(jw)4BX1X80+tdl z6GNNR8J74f?5Z3DehWN8G=_TigD#MD=Yxz-&TC5hqF_jvdIh2z-aJE7=s8010#EA> zLjljcw9J^xH?(PnK5n0mfTxS}e~6*MnPWQsLQ}{CQ0yA~dz=H&2p+#c-W@Hp-=rN{ z6l%%Ya?%tob1ZKKy_U2?Sd{xUoDFYNl5G>$U3f^}M0(eOD0xVlt?r^>_IF0W^PuRG ztuXACq&X?d2^=~1*Bvs%(WuaC#Q73A3yQh_?GXGf_e-F;DllnpglAZAJ%NW_Cy;IR)2l}ZfYn1_bYOmAdJ8-*xfT2j*dj<5TarR|@?0ZP0usi_+^`-bl1;SO73 z2k+SdL_q`ql{2=3{-D)-a=CoApQX{%=6eG5KXlw}!~ z<$b5fn6tU(XuwA82A-C$Z{Q{SBG0fc(U)Z$ll)7fnJsMnx%>vH~h`2r9w9EbV;W;|U{-=-(!N?Vo)dQMN z;pT6kwR_-pC1sf|DuKSIXv;I_8Of{#*D$YF#4@VnYlUI&oYVdV%LVj_x9- z`l~%?wjt&*gKlkjXoaLTL-L8$%ija|xYNgl7TedOy!Pz{=_xpOTsthr93FRe$B(yKb7J;~AzvaBeAg2P8XM;C~Znq@Ht{f8;yoG(EoSAsZz! z`f6nG1+YDXx>Np_NY!Oct}=DNrn+zhv`U&*)#&VR$k=nFOnh7)CLHbM*jKxtwwJU& zdeN@bu^09W&%{ih_W_k~NoTS3eaZcrJYUks{t0gT5!|^OjCDQ3|9JuaoQE>yIOpgL z<`?`M!#}S%U;l=GA#Byew7T*u=;nHxm!%eKw*MqHjQKbR5|Q?A-@6~`{nyIW7RLw)<4HZ91#L!#7q&%v#0?48T6 zhHL__qxr@P9?~}BeM-)k;Kf~DUUBsWaJ~bUn0sq1@oVtze)W&=yM6>Vt-chJgWR9w zJ#e_L$sN#~y(^Bo+{yhHCB40!0k!RU$-U7a;}}iOuD|jNAsG`9vnGGxK;PmCJtB89 zeF%kr#(#dtzcW9bi|_&}8|(Dln5R>oOJ(<*Qg1BbvoWoD%p1oGoYiZ@;Q?(>2A|Sa ze~sfQ?bU<*uGB9l+~7UGLq44C>^d#`v+mybilgfQ>b>k-%AQQ{3X8Chx| zD{2&FLpf3VY|uVhlwrA!bNzI|(;?3<`M=?Nx%nxj*$;9)oI7X9AI^VsXFX&5Z-L_n z@a7y)Ini;+pYNWyzwG-$729pR%RSn*K&q~9A+hRfwcw_v7F-nDriY|`8=w!nSm9pn z1+8sT^5#yftq#pnvp82rT>-BxJFk6}!)L_c?mrC6e$?M3y_iw%xL&R%WN zU8Y$nRjYk-az(jXkVUbzO?=u39!dX`F50<%`iyv}_SN3-oYdJf{&_O0wb9?eZp;SQ zX%ATJ-wqFBAXx%K4+vI=*T|l8h1)=>2RX#Lbx4f@=^SV_2lvxmpUfyxtca0Sv0r`r zLXQ8D7(qQBoz7}+Zt+0yW!ArIt2@-gJUPZhfg&s(qmyHF>JW@*fAuu9ThjoFviT}Bxz4g<_#Ido;j@2_C zdChDQy^+pAed<2d?mnh1>cSbjgVNQdmo_=0o-zx_*;9;>ep)|$L(A4>9znp=+kbIV z#)9lO6_~oG&VXw;%A$;iJ>$Eqxj5V|K$OB^)THPv9-eMiz&_*o3C9N#hgbxy<{K zKFuT&B#xmbUT=rI#v`5YtG!W^hMu1TS(o;$?!51Q>7_LBy=UNKhcwUs zk}>MtYd^k411rfhXeL$`_$&5@{RNE$ROv{i!vbD09<0vX9kyt$vdv}gP5ru zGvZ%^)34&e|I#87WijU9A5%+%oF$O?^3?abL0s) zql_rcax+=Cu$uyYVHXb%!N8Z`T^~XlZIS{eXQNjssaiex4mvxkCA~6t+&#N1$v*Sf zlpJfEV(*N=xfu6PtOxGi0%4|rH|_%JfIL^a9?)^A#g|EPr7>Xnm0a?K6F)(IZOu?yQE^+t1aAK|u z6OWlHto_|p;yHQZLrljvSyr55_1W=JDpV=u;rJ|tg;tm!a9y2!E(Zq8YGZ#FMc-+S z=j^!OGx{DsV)yJ{zM&p_4!?1whv@jl%fdNw{BKB+t5!nJ^@EjT*B82*=_C3Bu0R~{ z#n*6zqZE!T+v_!oBEReXVsQ`p{sX-4{%z||XB%Dp+1Ni~6uYy3hn8LL9Tj~}`Su9Z zF{{IKw3>GNx@g4(dUeLLuYuqN7TfvHTk5dS(m?O_4omcAlW&|6s2=$WSl)1S-D$9|WqEjE-KdvXAK58c1TuFkPv zopP^DXmCH?;TduCf6lXcu@76U#e6@;c2EZ8I`SZF_S%g1+Ye}Cf9hDUE~#HU8$1Bg z#F!1%Y=ymTGD^~PEdlA8|9GM$o-lecAvOO>tMXm{ulpwcR3<#0l7Cgow3H~p+*o!; zJxD9!Sp5Qn*Ar3`4{(KVqebs(&(CJq&Cw~Am;Y$N46omqial-l#{F>ZhYaAsda+tN zT7Ln>R?uJt?q{SCnC^fVqXCohe8SVf{;<%%Sb>x>`KCwyEjaC!Bt05XVhR42U|sx6 zg{u;qYH?hb_+6_!yCRRd=kP{{(%Qgg892{cSg8<6uqj} zZi;Vd8Qc91NZR;CU&3#Wfj4h^cp6*YnG1iO^L#g_ra8PbDjc@uY7Q@q%Tqb44t|`U zwLQ^$ZvlV{MOXNmRY5@$R!i%fG0^VN#{P9Wue0nmZ%Bo$iLbrR;gZ!&*<=ulR0EY7|Mb_9gGdr1_RW$Tv{e_Bj5( z1`;GfpAbyw*-emy_9-)@&lU&27}KA*0?V|LHcSrR@`drw8U9tH_ANT8ecL!Rkk+WD zN3JdTjL`~)n<>!h+i+j*_@^Wf8fW@RsiUhqg?7W`5=y^|KL8B$LZoxH(6mZtVhHb54? zGtnUDnD&p!Wqin)gbk>81s2^ea|M1HU{AOklSe$AN=Cogl7Bczo zJu@ei!UZ}2i~+s7skfm|;FbJHvb$-^8|S6nSK#ahoID5q5hc=J0WLK_2Mjuk%~)cr zFMnTbtt;|=fi6ZhhSWBLk^!I4HJJxl=UE-DS<*gbXbBb67C&IoM{*Y};{UXJdR3d# zlenPn26fM&QsWO}tp^sz^W+D53K?6oh(e!Yz;n9(!PNa&VRg(g^Ow_6S zhWw9;=5fz`qZhVp!8bi@$PJ#{>jJ?J=d$ zp27iRYQLhaHkjN%%@r8#lbWOrbakI@Em052>`~@;zlFA|!yCSy7hPO0`o}n21B>Rb z**3}VtPOjHJ9Pi|=>4Zf64Vkcpx*NBGjz|pV)wKyTD&^#SWr*sff;Rvt{luUZ}G|Ecu*r!!C%&cCiZ+=isvg_5D|4XwMw`w=X&apBw&1 z(0@&NU%&&#U4^MhZN^xQ9zG*~^az)?G@)!UZIoEMZvQaW@Alz8 zb*d#^(AMvPz+X>vmkK3NIw(~G_+U}e49<1j!dUz-K(Q&c$P+_qsq@4bxllz9b<25< z2KXB3wr475wo851*d>2J^zyEk7CSiDZ?0(ue(IRU8tUjpiy=Lk6)@ZKSCsUG64Y91M&Y(s{gkqefkwPuzA#D0|1|QHz*-YtQ->^@wdpwuI7O zIFHywz&Zz_fVBf|dqoq>z`YvbvdEM%e8&`?gB7usG=E9S@8J|F7k%SLK>VKCUQxFg z4J^htew8VnNCo+}ew5_mW3X=4IHDvuc9H>FfXL?`;I_F1FX>V53O zXDhfY&jS*p3(;4P8jYVstiZl~BqIh!1sp?(R9)p0c}Yzc+DwXkn0#|Xno~}sh%`jm z$8m<^2t;)qaR?(f-vVRAWFiLgq+lknBW^N9>?GnRf$?Z*bqsup2~(Bd91&xQ$V$*8 zYpdv$->0-z@w14VMMNy3TlZsKsZHb~xh8Z=T>DOm&!iOOwLGVO&E!rD>ZiC*eWv`V zT~fm+eJP8f14I78dK@1^B6rvuQ{07xiSM$MkmsmD?G;*5XoNN;B3d5DY+6cNsH{cxjfNa7US;`vdmaUn`>A;vn=~aDH&R93R*d zpVggQ@11W`Ci1R&=aY&KnLo>m{N6=f+Te)n`Xn@LYF=TAeDSWj^G#?>--N#PZI+%n z^FH7WSUe`TB&5fj6c#QmUBz`?g|F#3cr>n#b&StLg7aL-bHgv# z(1)~VTYa8*iMHom;w#5*jF_c|bU%upIK7We%gM5`f|UbsdbED;qYzHUMz`&JO@6a_2Q*^D>k%S_5{RIO6sv}%W1Bx z5c7#YdC@!jenB0-w&xT072>GXZ>2z#P}vvz0*-V#7tCIgu*cDI#Mdw7oj9{)?g=fd zw%RYek6b~aJO)l3cMduP9+PhaOHrfp5Ht+@3qi_GNQ-dWifF0Vfu(G7v^;Y-qf0CW zR{Ta>`z+*BjEUdCvL%J@A9OO07_b&wn>0_&Cv3hCyjq7}2L^-sw%9g{u^ff6WsXYO zr_m=3seQ%MNap^n!l1@^;Uqz94qSF8sXqs+ihl##d!Zj2sk(q8H(@7a#Poh=Lw%QnYZ z3}uQwgm+>p^x*yPeHY(lX{jyESK%t~BOH~CRFL1l@=l5In08bi3wcgVes~u+3miwD z>KK%W`zSl;5*kF@{ap&G2K9sT(I$^ovb~uCpUF%4G|z$e_%bjPr6!h+xho|z;1cG* zikx!XnrvgVUMz{H^ytGf=mUnY=efGl+Ye7a{Qk=O&s_1n$0#v;$GEPzvZ6$2$ACE~ zUg0%p9Mt#Sv22Nf;0>RL=1fkByw%&tX+E#A{NR<4x5P*tGC6mpKe^= z$3Wbf?|wum>~7*heVAT$;w_(f@7(5$m_%Kc8@&vpVD>?>SK^#r*Rfff5)9AIU@K? z=?zK+`+2U+eg;Q6JI<;&np#}1?-Q|Ny<*r=#U}-8&M^;)I(nrvJ1!-p@A>`-yy5W#-g-!F-|=4F zeh5#jf%P%mCl4xnO4GM|Cl@{{d0g2kH6Ic+b*+Ot$;5Az+hQ^Bg#6mNw}lptd_4v# zBZt4yGFOrGIXm0&g7XDqsdd`t2)w^#H6VYJmUek(Y%t<^v%|&him{*=-}AUBcaD}h zO6NQf-}cJ$4rfQchK$WE4sAvX7u-2AV?D;)cZVkBtvLGq;xHiI??{<>e7iaPOwQH8 zQDo;MX^Vv36(3I+Cv-in`1l-bY{7&p5YB5)!J(^2T8yu3PZ()Cb+l+i8ZgS$WpsOR z)@A&$eKzBnV_pkJkQQZBX;^cFvQb7CUqFW!NSq_E&f!=AyCb?6z}E+^=Iw}U$KD3z zcmZr}AQH2#2zPYZ@#n`t^8y{VKIt$PIV#Cf%u#Jnj%~)=M%3P@IW~J)yCL7YXb!pc zDgU2ylxvg(`NB2eTiPvuIHtiI@lwL&U*n1k?){G$|HjqV{Kq(sb;T&8BT$aysGHSX z>J?=!s4lIX0nuX&bIgeOk`dV+GY00&gqS`y(WZd>*REpl|m(MiXd7I!0*ZKxE~T5vWEq$Hz$EwH8> z%fUUMom1<))VFfYYcjd+qJj~#XZs7vw_Am~8H?!;dvlS!h&CfQD zi`JeXW3+@>APwj1Glw8%(2VzTf-~mYr_L^E1CitD+5vxEbI3Q$h+ww#v?OOuI|E?} zcEBba@2VTMfR<)@;@FhyDZ9+jc0|8f=0z|z&ML|_ZPrHZ4qy~I#GI$U=A|4a;Pow| z`_j06x~a{8WCToW^i~_L9YZ1KN?id>iz8=dFl={ou(UwtAHt&zzL*t^kHE>IjL%P~ zeI*>uA2}Z|C&Jkg19*Q4p6ASbidi3p6QFj3HpMEr8D)u)Sq%)s)vhIX_FrS~94xR1 z4E_g3dVITpGu*4CRUogQ4hm)3P^QVOhCWbCz(m5)0Ma)|p7Q`3`xb2xhB0XgcDH-= zg;v@&wZVuO6cWehCkJMhL5B|e!BKx%T_H}S@OY;d`vI%1#E4739F_SB&IDYMnx6s> z^T0;Vl{r19bvxkLQm+(AjLgAq2mW_Ol(PyQMU^UT^i7PTHqcgbY3Cpwrp~K}Q{)rr z)7e9{{ROsa3M2)Ow18HW83*!5zt9GpFdJ-k+C1-plb7(MEm#6chuI%xz8g3hgOdT8 zR7u|ehfoOrfEIT7zXUJM+xecIBdMDNEG>_64cP5Lac6U$Bb)64$D-&`XK@6V^go4D z&R5{Z-7Q!Laq6%2IDcqaWap}Ii*v)q@XiG|`5H;t0CS!43WiS?T)VHvdo;v$*Em2O zAZW42=oNSg>4VmM@0yk+&;*}Ahco9BHP2Vj1xTD{`APq?3H$j?&Ng6gb8wbTp%8Oy zpi`N_BVHy*&JA3*J*l5q;h|dD;gs(uw4@JBH_*FL`vICZZ-@I9)D$0AtXBaJ z*T2vTZNeDcrd4#`j0HI90tY-wDXX$O?X|xq%Z|wG?)w?DD8cjRCsSl^S}=R*4$wu% zj`tfR#(7w)GIx#dE#s_*R+}Sn%TilQ`Q@8wSxGhhopRuqF}$zzIJ3=l_U?Ee72~KYOG{L%CCUo%9U+G&I+)r0#A$j zwW+r#bK^`Fr5_e*xYp0e)BcJ<)% zR;?~~Lq|9XeDptYtr4?2_u~B$tX=u59kCm=5J8LKeuai!?iN^@2HL=K9+f@~5`%Pt zS^2_W6Zv0Yf?w;n_`LtgBdl(#tU0>mH#RQeG269751rS#Xp3f0FI;!VuG6&av;L>e zPrd|-HQKP{{>eZw1&*uVoi+Ib{{8l3R&(B$656Xd55KV|H?3Y5qYLv%TEj*O~tW^nZk>!SWz6}g`{qfo1> zHvO~@&-F|4&gXqCkou*};#-|H%ZkJ<7#ScRi_Q+3oEi&|V_->iY&I**E_Njr|?88=s6g&uDR{_JES@ z8`?|V9G)XdJ1k+n;OZe<>a5HgIL{v13szzDZ+GN+2j+jp^Zg1R=o#L1qc*2J|7T!k z1{KyP=t?l`tXjQoBL^?2sn53;Sa*9fMJvKp&a+g`^s7ej*$`bnJ1qCU8F4q^zX#=f zzv9V=YyD&M+DrQJc7*P{KG^5cMzYr-t7sp?-`}GDpWn`q;5N{<@f`=i?YeMx&T}uM zW`SdK=+h$GKA}WsMfUhcuiH7Y?vvr_6Z^pSrSxuZSbKQMzQJp7H^-Zv(<8NqZ12il zHh;z&G7j+*nxkDX=j!Sy?YI9q##*~p`!V$So^o6VxW%I#)wD$Vl`jgXB(F4=!06FAW?z+6&K$9jR+n-avzgwAmO=L~2}F^8)O-9!Kt;^2UhJm;9?So`YleSu{4|uNl4t z?jK9bnqb_%raM2fH#ToC`0r9evry|bM|;4o`?-KZectG|8yoonj12fn4dU|!^0UD1 z*>iryd)LmpcXPM=k2xDXdH@uU_;(%B3!r!hEUq~Cjl18V>I2IDhC1zaz5=?pw8y=` z-1Eq}*6xz>h7yc*eMK2l^1I982~zYmG<^lFjJvr5yqZTI(mOGl;Y?JcR%!y*2T6U` z6#YQC!r{8^E|59j)xAO0c+$%GzI7-%;i_I}D&7{{O`y*JN=r9qO50=i8+E~eFZ-Ok zynO}j*zKLxsDEC7qo?rO8oV`X_?*DxDthBg4}r{hk*#rLNcgv0xmQ7}rVlcQlUp?- zg6dQIqBpcyE%k`!>@-_@jMjL_dCF5I%61$5twWdJ;L#lt`3jml2mB%2?8=b=d?3tS zV3#+%69X&SwK!a$Bjn&ZXC>RS^OkMDI}N^v#>UjJl3?9EHr!E4&%@p2)g}*s(iI3= z0cod%HfmoYuQ%v9_3NDL9?!PqY;mRLGs1F1d&khdQ47A3zq@etkJO~za6g9Ev_(m} zKDggolYc3)IjGgT!1s_E)erW7E~&{~#HM#c#lSxMUUm&3|8M!||RrhwtGL`+@^(*#L{Y!B%d0qNR`q`V_;%7=Ld| z`B!*dYdp|7@HgPQXD8(=Y+)VP+t~6^t;^MhCsud>GT#82X#dx>cAy1?6{Z!{^E zdU7_PmMPflV4Hfy8<~Tb4r?|elm!@C<+!bmJ;R9vl5pozlBfTJhSA?AfuKE3m`q`7RlB_{{ z@!I}$hv}_q)RjB*h-e1b?Yt)`9;i+}WzdCD{ekS<(&x`uSzxsG)whPT<&(hr>{9PS>;Y1FZ?_aVi zj9OTm1h0Y3-)`|)OV5Q`_#Hcack6=p{#@?6=pTLu0o*O9&sKt&&#uca$3QXqFh+#n zdHRA=c2j^`|GV}36z(7H*-g5(I9)+yIlFyEDM)v#^b$&4{F0wFO~FEEzd5)kOADS_ z6j>LaD}PC%v}#4aE9;v6d8KDJ8GkKYkQ1D5yrb6eXC0-uqrW><|h;Kxle5GFfFYEhmphu^^NxpMzD^4SmN0VId6*bmR2eh%z_e~`1u8rk4Gn$_)P9O4nOKaLVrN${` ztbuyFH-^P`YF>Ib@C>bN)PA`gBblwjoqx;LnomyWbv+V+F!7jD7&x|cM4#W#f?1Hw+H%O7SYI&C6cZK$H z{7y^WL4ytohNE71)xPp)6F8%OO792h;#<-h3R#Nlo3`lxh+M*FXwfD(-au7iA_pYb z7K7(?Y3&sHw9sx_YykQd>gtn!N4kL%H&9BMzgE}$3++}ocXO(*v4*y^6;86nYxuaa zuhVAhhQ8n$8c}zhR_lXo4&yuR-TLDyV5aWrpI1e9Z^8K%9lM01^@yH=b64dd+sH!U zE_badygWg({Bny{MkloHO1eVQd;0;N%1G^uooT{dDP@9^8V9c8ac<@ORJKjMyMg^CY#;@>*1t`Gp1T{ZpACXgbq~EU#e_zSte{lWh zaL*2*1#{GmWUSC*E97ByHp0^T+aC58x22{T9QHlF)O((dsCT>Xky^WHvFcMIv0kac zTut~nUKExUob=HtD|wN)R{ygVIBwP4_jwIJ7p_7_kf6;JUL2xpUAI4@HR{^gX&nl> zqkH#uQCe%e?LWSP>x#BRt~)hHX4`moi^CAokVpysW1u_U{+8w$9r@ zNp&D^LrdfWtGWatcmUoV@1)uaO)=qr1E#uo(=V}P+LuLbK%4u)$AA5j5>x@UC4Q)0 zR11!To8U%t)UJUq>)7oS7{;{H9-F=`w&WVJZ6X4E!Ru;UD!s?E~fD)ZfyW!Ieu| zJcL7rd=Czwm?P2l6kP-591Q*Yueow=g=2|d(7SpCj}4&Y4$WeZc0)2Yc1@a<^90C; zz%DL@v;|(V7M#7(k5~fz7%Yz{L)>b+w`d6H0fi>g9u5~)c`JVLw+FnI6*63 z>?GH1kxT~ zxRTRVm`iwRh7A}Y%kt?8PVMWr6%TB7YShA=hPQAwUjy}$HqW8cP^>`n9nijlT2FxR zhW=BmGqu0;f)u~!5pkg=<%m@!T3(p}hnP1SVdO_1Z9vN{P!9QD7KnvDp>`zx3re+* zIl|_FQ!u$S1UbgxmnhoIZNJaA<>)JLTUs$1vdxQjbDyP=njro zwCfzmmq6;Q8)v~dH^sPsv7uK$hOL2bXoYI4fWf%BU&IYE%~?n&B54|Ggq7oBv$p< zI^fj4_9bU$1K2Rh2O>Gkix(FL{1Iku?BQT%z9 z_ZHB^5}d2zsxapUIS9d~r$juHBN1cwA~v}$80Ze(&rX%kA0G^Beq^_?7aV`BKfnGm7MDRB6(MZ+7s>?k}FH^Tasi1~@$~NJ@^S_ex7_O}5DT z%ptFt)Mh5R@!}3s(%s}LxSy!knW4^!aekk%Q|E!cA~`e0Rdj)8V@&ErOBVv;wvnt; zN%kyn1h)sjN9}&+ew@oN z49uuycj%TD{!m(Dc`?Hgc0h+2*M7&*^yaRW-( zyAgMm`UZ%ci6dOj1^b?(a%ODOI#0;!iX?5&H+OROl=I_K&I8_t-Y~+JGeLc79nJ~U z&oCLYlunju8{Xd0>kU`F5mNbH{@2c#o)l~6JVfh`WV}%iR?Vyh9~X(!x~Sjc>Bq+^ zmpRRA^6N<6#T)v+MRwNZ?DZ1Loui4)kz;AvAzhL@_KJ*O6)LN_BB{MTPD65C6|ELu zs~6O7QIoOrn*y2h7>$@qC#e=b8A*54Fp=NfD>DPBjA4bh2hPOpJ#Gn`v zGvY>UW{T$@VzI(t=ZG4uqGQFT_!Og&q@7sxm^8mn_vD!1qvVF; z;~Y9#UHs2Ue=$<#$@@I}Jg#SGcGK~j_$r)X7BOVSR++<7g5^JjCObZ9zte)w`~3pIV{a-|}5bR`G!a&UE} zoh$tunnXQP>6j1o$??5jXO$LsxBqUczWV#C<6689eOK9ofK+RuWeDq_mC=Vx-KOmc znNE2QNlrNqO{cEQEAjO4eLT(Mv3~jRT6||Z)`UTk)P|wMLZhkOTvKpg1BO4VEz>7R zKS9c?N%RKPByvZLh=w1RzFcrn_;vD=Tva7`Ej%9mJ$W!}qFkA_F!fQ|#mYkFlQ`=` zrLELjMw0g{4W>QJRLROeU41A+l^jJqRs9KTSkI8D`*6qIhsVfy+-jfb6;$a*FcUb6 zW5{RVu#(lpbINNyN(;{d$};YDkTn-gjWmV^A^rO^L;0yhRT$@OIq#^vgd! z>mwYe3VR{_;_UcYUgy(eY9xM-HO6t@BD|2GdGKCx-u-j7uj1Qm_wo7uH;D~7I=Lz^ zQyqi1JRb8?v?y_4r1S4mzK?Ta!E<0BIW{$A))loUMA>#_FLdZ}E3$Py%j-M`4`_i+ z;lJ58%M>;`j`B~%NpY1=@|^GUTybF~yLsh1ud6)ORqBVRIiLv`D{jp;+;7)$%PUP3 znE5;G9OtjDv+U%Vs3YD7hOHj&>aGZ|gD%np>uUzjjy-I!1>}SR~ zeO4nWda}k*{yv4@`%lMX-?;LRKP)L~h~s^qSvV@lKJ=Z1KfU1ed^1XvZLi`0*+UMW zx9TNFyheFV>m+ALnPVRyD4t%Jeoy7U>c1U(sp*yeollzHsOQQL%|2t*(>v}rX3z0{ z|M9rrSoK@I`nZ2vJ#Ck;^hFaVl_za)R8QER zfRW*pB4s6#auU7Il-0`Khh8;u8Ft-cdM7C%l|>IZ$^Op$s7@8#sbWR;Wg~iIzc%jT zZ9LDnnJ@Al-+h=b-$f~T7vJ5_>z%!|`;vVBF1h>v-}$)w=qmKh3 zRMnRh^Of%u^oZlJ=U919;XfUFknu#T8a`F!&*igtl5aCEkser{kL$?mka+Kop*hyE z6(?0!!k_uGEm1<=9s7h{XMJ%_i0+?lg}fZC@yfs8?#gO;l{zV`#IdFN*j^pmuDDK_ zO6ybEp-R?{zY5(~l^j>c$Iy^r!BRfs9MI;o*E%De4RM(O2Y*JrH>RR!z) zc4hnSpHnW6rLelLWL8N&{<5kiwa zne5|McuQ=GZMA)1z0&)6RoP*m#9hA2bCwbJdFQ#(z**nN=ZfR+)A)YQfG>|(bDo7O zBB5c&DxV>2oFhRw0^~XU0>_xbf~O7DDtmowo$ucrzqx;1l~Gw?YdEgC+MzP7Z@`{o zKheU<{z$#BGQrEKc|)HC56d0dtFa%G+@z-)Tozt#a%;vy@B4KThxJ+dzQ^Z?&3=5; zSG*s!J@y{|?rl{@d|BOBS5-Xt7zRf~@;+fVj-2f|K1W-RBeM~y4X^cB_CoqX;;W;* zh3pficblUtA&nu6p-X}ql{E?5kvcQwF?D1W%~BpK8IhaA_e!Y?iK}?Jx=QXj=Jfl1 zU5*drH(BOCd3Py&m5xZATJd0|S3lIOmF=(WYg`3xQe&kC{xH{lJ6zc(ap>QDy%svI z!lzdi+=12m`op`_9(hjf5qK9r$4~zGI=|0zYR|ZjdXKLwNbbYv=ijmqo=bjj+sNc;1$OuG4 z5n|Lm$Jlc=n&+G+_3xak@2YuTIddiEc^Qi^@(?ix=dq+si1F?4hNOi1*+_%XoyxPG ziTD@y+Uek~YIHiHVD}?nRrD*bVxCIg{ZA38h(|>x3g)7m>D*KYLHXhv|QW1XdiG5~y8HdtF&@EqP_}?_ULv=pX!(kC1*qo~!aJ zFCcvF^tN+kRvRBupY}X0d1aIIs*nBXV@vZPb%FytR$AGspjYa%igw3zJf>%8!qnb+ ztRK!_s|^_p6UfO9{)FQ2O2eJ9FAO zQSOT9{5)5I%c0Twz*y+U#JT$}e&{iWzEsN8CzZuW|0DW;8B5T9M5=r}c_dTi7s}mv z7bEClN2=@UeORO8d%ukQSw{85x;}jBw^4Gw$*+$~&1ab>zll8geVp?cJzDRwZ+rio z{f6qCzO+w{ud5s%U)?XWx=ScLS5POmD;mUAQYL8>`o_EP#62p*`j{!pmDd?p(eF>{ zSCW2w6)~;Ki?4jr{L3d(o~_ls{88d{+sICxKaZi*HBroN;(tT<967#xX)JRIc;cQ=VRRE zlfYq0`^Q-PSeGXp_pz4HM|eS4Y7CzRx_jT@l%^P=-JH5oJ6tB|ehIY$-NJ3Lt iV4<#N!ib&w{jlK4 Date: Sat, 14 Feb 2015 15:31:41 +0100 Subject: [PATCH 408/496] update ms2, add message processing loop for windows --- mediastreamer2 | 2 +- tester/tester.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index a9e3a9844..07a8b5693 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit a9e3a984485ef8d22394d06fa75497296daa4c66 +Subproject commit 07a8b569317d23e9442882be267d6640498a7b5e diff --git a/tester/tester.c b/tester/tester.c index 741fc8938..b046c065e 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -211,6 +211,15 @@ bool_t wait_for_list(MSList* lcs,int* counter,int value,int timeout_ms) { #endif linphone_core_iterate((LinphoneCore*)(iterator->data)); } +#ifdef WIN32 + { + MSG msg; + while (PeekMessage(&msg, NULL, 0, 0,1)){ + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } +#endif ms_usleep(20000); } if(counter && *counter Date: Sat, 14 Feb 2015 17:14:05 +0100 Subject: [PATCH 409/496] don't force using vp8 --- tester/video_tester.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tester/video_tester.c b/tester/video_tester.c index c1807f3fe..7e3809e31 100644 --- a/tester/video_tester.c +++ b/tester/video_tester.c @@ -193,7 +193,12 @@ static LinphoneCallParams * _configure_for_video(LinphoneCoreManager *manager, L linphone_core_enable_video_display(manager->lc, TRUE); params = linphone_core_create_default_call_parameters(manager->lc); linphone_call_params_enable_video(params, TRUE); - disable_all_video_codecs_except_one(manager->lc, "VP8"); + if (linphone_core_find_payload_type(manager->lc,"VP8", 90000, -1)!=NULL){ + disable_all_video_codecs_except_one(manager->lc, "VP8"); + }else{ + ms_warning("VP8 codec not available, will use MP4V-ES instead"); + disable_all_video_codecs_except_one(manager->lc, "MP4V-ES"); + } return params; } From 52e9e229bea2d20053f349c1250966710af4cb0b Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 14 Feb 2015 17:38:04 +0100 Subject: [PATCH 410/496] relax tests --- tester/call_tester.c | 16 ++++++++-------- tester/flexisip_tester.c | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index bddffa0b1..44e1a54c8 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -226,7 +226,7 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr CU_ASSERT_TRUE((caller_mgr->stat.number_of_LinphoneCallOutgoingRinging==initial_caller.number_of_LinphoneCallOutgoingRinging+1) - |(caller_mgr->stat.number_of_LinphoneCallOutgoingEarlyMedia==initial_caller.number_of_LinphoneCallOutgoingEarlyMedia+1)); + ||(caller_mgr->stat.number_of_LinphoneCallOutgoingEarlyMedia==initial_caller.number_of_LinphoneCallOutgoingEarlyMedia+1)); CU_ASSERT_PTR_NOT_NULL(linphone_core_get_current_call_remote_address(callee_mgr->lc)); @@ -271,10 +271,10 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr if ((linphone_core_get_media_encryption(callee_mgr->lc) == LinphoneMediaEncryptionZRTP) || (linphone_core_get_media_encryption(callee_mgr->lc) == LinphoneMediaEncryptionDTLS)) wait_for(callee_mgr->lc,caller_mgr->lc,&callee_mgr->stat.number_of_LinphoneCallEncryptedOn,initial_callee.number_of_LinphoneCallEncryptedOn+1); { - const LinphoneCallParams* call_param = linphone_call_get_current_params(linphone_core_get_current_call(callee_mgr->lc)); - CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(caller_mgr->lc)); - call_param = linphone_call_get_current_params(linphone_core_get_current_call(caller_mgr->lc)); - CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(callee_mgr->lc)); + const LinphoneCallParams* call_param = linphone_call_get_current_params(linphone_core_get_current_call(callee_mgr->lc)); + CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(caller_mgr->lc)); + call_param = linphone_call_get_current_params(linphone_core_get_current_call(caller_mgr->lc)); + CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(callee_mgr->lc)); } } return result; @@ -1983,9 +1983,9 @@ static void call_waiting_indication_with_param(bool_t enable_caller_privacy) { wait_for_list(lcs,NULL,0,1000); linphone_core_terminate_all_calls(pauline->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,10000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,10000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,10000)); linphone_core_manager_destroy(marie); diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index 06d8200cf..9f624572c 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -146,7 +146,7 @@ static void message_forking_with_all_recipients_unreachable(void) { linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneMessageInProgress,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneMessageInProgress,1,5000)); /*flexisip will accept the message with 202 after 16 seconds*/ CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneMessageDelivered,1,18000)); CU_ASSERT_TRUE( marie->stat.number_of_LinphoneMessageReceived==0); @@ -195,9 +195,9 @@ static void call_forking(void){ /*pauline should hear ringback*/ CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingRinging,1,3000)); /*all devices from Marie should be ringing*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallIncomingReceived,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie2->stat.number_of_LinphoneCallIncomingReceived,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie3->stat.number_of_LinphoneCallIncomingReceived,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallIncomingReceived,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie2->stat.number_of_LinphoneCallIncomingReceived,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie3->stat.number_of_LinphoneCallIncomingReceived,1,3000)); /*marie accepts the call on its first device*/ linphone_core_accept_call(marie->lc,linphone_core_get_current_call(marie->lc)); From 3b15ef89cf924719bc04bbc6e459d639d757d2ee Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 14 Feb 2015 19:10:09 +0100 Subject: [PATCH 411/496] relax tests again --- tester/call_tester.c | 6 +++--- tester/flexisip_tester.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 44e1a54c8..e0badd199 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2056,9 +2056,9 @@ static void simple_conference_base(LinphoneCoreManager* marie, LinphoneCoreManag linphone_core_terminate_conference(marie->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,10000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,10000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,10000)); diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index 9f624572c..3a4069857 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -396,7 +396,7 @@ static void call_forking_with_push_notification_single(void){ /*marie accepts the call*/ linphone_core_accept_call(marie->lc,linphone_core_get_current_call(marie->lc)); - 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_LinphoneCallConnected,1,5000)); CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallStreamsRunning,1,1000)); 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)); @@ -404,8 +404,8 @@ static void call_forking_with_push_notification_single(void){ liblinphone_tester_check_rtcp(pauline,marie); linphone_core_terminate_call(pauline->lc,linphone_core_get_current_call(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)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,5000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,5000)); linphone_core_manager_destroy(pauline); linphone_core_manager_destroy(marie); From 97c2607ec7f17c8df2079ff9d97835e5f5549867 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 14 Feb 2015 22:05:12 +0100 Subject: [PATCH 412/496] relax tests, ms2 and ortp must appear first in the link command to make sure that they are taken for inner directories. --- coreapi/Makefile.am | 4 ++-- tester/call_tester.c | 38 ++++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/coreapi/Makefile.am b/coreapi/Makefile.am index 85f65bcf1..40a26ccab 100644 --- a/coreapi/Makefile.am +++ b/coreapi/Makefile.am @@ -131,9 +131,9 @@ endif endif liblinphone_la_LIBADD= \ - $(SIPSTACK_LIBS) \ $(MEDIASTREAMER_LIBS) \ - $(ORTP_LIBS) $(OPENSSL_LIBS) \ + $(ORTP_LIBS) \ + $(SIPSTACK_LIBS) \ $(TUNNEL_LIBS) \ $(LIBSOUP_LIBS) \ $(SQLITE3_LIBS) \ diff --git a/tester/call_tester.c b/tester/call_tester.c index e0badd199..d19161460 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2900,32 +2900,34 @@ static void call_redirect(void){ marie_call = linphone_core_invite_address(marie->lc, pauline->identity); - CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingReceived,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingReceived,1,6000)); - margaux_url = linphone_address_as_string(laure->identity); - linphone_core_redirect_call(pauline->lc, linphone_core_get_current_call(pauline->lc), margaux_url); - ms_free(margaux_url); + if (linphone_core_get_current_call(pauline->lc)){ + margaux_url = linphone_address_as_string(laure->identity); + linphone_core_redirect_call(pauline->lc, linphone_core_get_current_call(pauline->lc), margaux_url); + ms_free(margaux_url); - /* laure should be ringing now */ - CU_ASSERT_TRUE(wait_for_list(lcs, &laure->stat.number_of_LinphoneCallIncomingReceived,1,6000)); - /* pauline should have ended the call */ - CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallEnd,1,1000)); - /* the call should still be ringing on marie's side */ - CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingRinging, 1,1000)); + /* laure should be ringing now */ + CU_ASSERT_TRUE(wait_for_list(lcs, &laure->stat.number_of_LinphoneCallIncomingReceived,1,6000)); + /* pauline should have ended the call */ + CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallEnd,1,1000)); + /* the call should still be ringing on marie's side */ + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingRinging, 1,1000)); - linphone_core_accept_call(laure->lc, linphone_core_get_current_call(laure->lc)); + linphone_core_accept_call(laure->lc, linphone_core_get_current_call(laure->lc)); - CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs, &laure->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &laure->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); - CU_ASSERT_EQUAL(marie_call, linphone_core_get_current_call(marie->lc)); + CU_ASSERT_EQUAL(marie_call, linphone_core_get_current_call(marie->lc)); - liblinphone_tester_check_rtcp(marie, laure); + liblinphone_tester_check_rtcp(marie, laure); - linphone_core_terminate_all_calls(laure->lc); + linphone_core_terminate_all_calls(laure->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,5000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,5000)); + } ms_list_free(lcs); From 847713bb82969a3c9890b7d90751778b5121f38f Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 14 Feb 2015 22:44:37 +0100 Subject: [PATCH 413/496] fix beautiful bug in getline() implementation, causing crash on windows --- tester/log_collection_tester.c | 44 ++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index 3fbbd43c2..96531422a 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -35,7 +35,7 @@ /*getline is POSIX 2008, not available on many systems.*/ #if defined(ANDROID) || defined(WIN32) /* This code is public domain -- Will Hartung 4/9/09 */ -size_t getline(char **lineptr, size_t *n, FILE *stream) { +static size_t getline(char **lineptr, size_t *n, FILE *stream) { char *bufptr = NULL; char *p = bufptr; size_t size; @@ -66,9 +66,12 @@ size_t getline(char **lineptr, size_t *n, FILE *stream) { } p = bufptr; while(c != EOF) { - if ((p - bufptr) > (size - 1)) { + size_t curpos = p-bufptr; + + if (curpos > (size - 1)) { size = size + 128; bufptr = realloc(bufptr, size); + p = bufptr + curpos; if (bufptr == NULL) { return -1; } @@ -89,19 +92,19 @@ size_t getline(char **lineptr, size_t *n, FILE *stream) { #endif static LinphoneLogCollectionState old_collection_state; -void collect_init() { +static void collect_init() { old_collection_state = linphone_core_log_collection_enabled(); linphone_core_set_log_collection_path(liblinphone_tester_writable_dir_prefix); } -void collect_cleanup(LinphoneCoreManager *marie) { +static void collect_cleanup(LinphoneCoreManager *marie) { linphone_core_manager_destroy(marie); linphone_core_enable_log_collection(old_collection_state); linphone_core_reset_log_collection(); } -LinphoneCoreManager* setup(bool_t enable_logs) { +static LinphoneCoreManager* setup(bool_t enable_logs) { LinphoneCoreManager *marie; int timeout = 300; @@ -119,27 +122,28 @@ LinphoneCoreManager* setup(bool_t enable_logs) { } #if HAVE_ZLIB + /*returns uncompressed log file*/ -FILE* gzuncompress(const char* filepath) { +static FILE* gzuncompress(const char* filepath) { gzFile file = gzopen(filepath, "rb"); FILE *output = NULL; + FILE *ret; char *newname = ms_strdup_printf("%s.txt", filepath); - char buffer[512]; - output = fopen(newname, "w+"); + char buffer[512]={0}; + output = fopen(newname, "wb"); while (gzread(file, buffer, 511) > 0) { fputs(buffer, output); memset(buffer, 0, strlen(buffer)); } - + fclose(output); CU_ASSERT_EQUAL(gzclose(file), Z_OK); + ret=fopen(newname, "rb"); ms_free(newname); - - fseek(output, 0, SEEK_SET); - return (FILE*)output; + return ret; } #endif -time_t check_file(LinphoneCoreManager* mgr) { +static time_t check_file(LinphoneCoreManager* mgr) { time_t last_log = ms_time(NULL); char* filepath = linphone_core_compress_log_collection(mgr->lc); @@ -162,9 +166,10 @@ time_t check_file(LinphoneCoreManager* mgr) { // 0) if zlib is enabled, we must decompress the file first file = gzuncompress(filepath); #else - file = fopen(filepath, "r"); + file = fopen(filepath, "rb"); #endif - + CU_ASSERT_PTR_NOT_NULL(file); + if (!file) return 0; // 1) expect to find folder name in filename path CU_ASSERT_PTR_NOT_NULL(strstr(filepath, liblinphone_tester_writable_dir_prefix)); @@ -183,8 +188,6 @@ time_t check_file(LinphoneCoreManager* mgr) { time_prev = time_curr; } } -#else - ms_warning("strptime() not available for this platform, test is incomplete."); #endif } CU_ASSERT_TRUE(line_count > 25); @@ -192,12 +195,17 @@ time_t check_file(LinphoneCoreManager* mgr) { fclose(file); ms_free(filepath); - timediff = labs((long int)time_curr - (long int)last_log); + timediff = labs((long int)time_curr - (long int)last_log); + (void)timediff; +#ifndef WIN32 CU_ASSERT_TRUE( timediff <= 1 ); if( !(timediff <= 1) ){ ms_error("time_curr: %ld, last_log: %ld timediff: %u", (long int)time_curr, (long int)last_log, timediff ); } +#else + ms_warning("strptime() not available for this platform, test is incomplete."); +#endif } // return latest time in file return time_curr; From 7a2ca89183fa9fbc3ffdc9ce272e8d827c30bbdf Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sun, 15 Feb 2015 15:01:13 +0100 Subject: [PATCH 414/496] increase tester's timeouts --- tester/eventapi_tester.c | 12 ++++++------ tester/flexisip_tester.c | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tester/eventapi_tester.c b/tester/eventapi_tester.c index abd8c0a30..fbe48f9a4 100644 --- a/tester/eventapi_tester.c +++ b/tester/eventapi_tester.c @@ -247,11 +247,11 @@ static void subscribe_test_with_args2(bool_t terminated_by_subscriber, RefreshTe 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"); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionActive,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionActive,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionActive,1,5000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionActive,1,5000)); /*make sure marie receives first notification before terminating*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_NotifyReceived,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_NotifyReceived,1,5000)); if (refresh_type==AutoRefresh){ wait_for_list(lcs,NULL,0,6000); @@ -259,7 +259,7 @@ static void subscribe_test_with_args2(bool_t terminated_by_subscriber, RefreshTe }else if (refresh_type==ManualRefresh){ CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionExpiring,1,4000)); linphone_event_update_subscribe(lev,NULL); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionActive,2,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionActive,2,5000)); } if (terminated_by_subscriber){ @@ -269,8 +269,8 @@ static void subscribe_test_with_args2(bool_t terminated_by_subscriber, RefreshTe 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)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionTerminated,1,5000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionTerminated,1,5000)); linphone_content_unref(content); linphone_core_manager_destroy(marie); diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index 3a4069857..7f4680639 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -574,8 +574,8 @@ static void early_media_call_forking(void) { && linphone_call_get_audio_stats(marie1_call)->download_bandwidth<99 ); 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,&marie1->stat.number_of_LinphoneCallEnd,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,5000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallEnd,1,5000)); ms_list_free(lcs); linphone_core_manager_destroy(marie1); @@ -643,7 +643,7 @@ static void call_with_sips_not_achievable(void){ linphone_address_unref(dest); /*Call should be rejected by server with 480*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallError,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallError,1,6000)); ei=linphone_call_get_error_info(call); CU_ASSERT_PTR_NOT_NULL(ei); if (ei){ From 009fe8afc943d2c9f457f2f34f0224ffd41c0045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Mon, 16 Feb 2015 15:09:22 +0100 Subject: [PATCH 415/496] Add an appdata file for Linphone --- share/Makefile.am | 3 +++ share/linphone.appdata.xml | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 share/linphone.appdata.xml diff --git a/share/Makefile.am b/share/Makefile.am index f0df44261..ca8f2e233 100644 --- a/share/Makefile.am +++ b/share/Makefile.am @@ -32,6 +32,9 @@ pkgconfig_DATA=linphone.pc linphonedir=$(datadir)/linphone linphone_DATA=rootca.pem +appdatadir=$(datadir)/appdata +appdata_DATA=linphone.appdata.xml + #download root ca from mozilla using script from curl (mk-ca-bundle.pl). #if that fails (no connection, no perl SSL...) , then a rootca bundle archived in the source tree is taken instead. rootca.pem: diff --git a/share/linphone.appdata.xml b/share/linphone.appdata.xml new file mode 100644 index 000000000..db660b614 --- /dev/null +++ b/share/linphone.appdata.xml @@ -0,0 +1,36 @@ + + + + linphone.desktop + CC0-1.0 + GPL-2.0 + Linphone + SIP video soft-phone + +
      +
    • Make audio and video calls in HD
    • +
    • Create audio conferences
    • +
    • Record and store calls
    • +
    • View real-time presence status
    • +
    • Manage your address book
    • +
    • Communicate securely
    • +
    • Free subscription
    • +
    +
    + + + http://www.linphone.org/uploads/images/desktop_main_window.png + Main window + + + http://www.linphone.org/uploads/images/desktop_call_view.png + Call view + + + http://www.linphone.org/uploads/images/desktop_chat_view.png + Chat view + + + http://www.linphone.org + contact@belledonne-communications.com +
    From ccb890ad9431f62617d761c9b0bd601fe1340e02 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 16 Feb 2015 17:50:28 +0100 Subject: [PATCH 416/496] simplify dtls session/media description attributes mgt --- coreapi/bellesip_sal/sal_sdp.c | 59 +++++++++------------------ coreapi/linphonecall.c | 33 ++++++++------- coreapi/offeranswer.c | 74 +++++++++++++--------------------- include/sal/sal.h | 2 - mediastreamer2 | 2 +- 5 files changed, 64 insertions(+), 106 deletions(-) diff --git a/coreapi/bellesip_sal/sal_sdp.c b/coreapi/bellesip_sal/sal_sdp.c index ce780c1cf..ed34c634a 100644 --- a/coreapi/bellesip_sal/sal_sdp.c +++ b/coreapi/bellesip_sal/sal_sdp.c @@ -389,23 +389,6 @@ belle_sdp_session_description_t * media_description_to_sdp ( const SalMediaDescr if (desc->ice_pwd[0] != '\0') belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("ice-pwd",desc->ice_pwd)); if (desc->ice_ufrag[0] != '\0') belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("ice-ufrag",desc->ice_ufrag)); - /* insert DTLS session attribute if needed */ - if ((desc->dtls_role != SalDtlsRoleInvalid) && (strlen(desc->dtls_fingerprint)>0)) { - switch(desc->dtls_role) { - case SalDtlsRoleIsClient: - belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("setup","active")); - break; - case SalDtlsRoleIsServer: - belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("setup","passive")); - break; - case SalDtlsRoleUnset: - default: - belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("setup","actpass")); - break; - } - belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("fingerprint",desc->dtls_fingerprint)); - } - if (desc->rtcp_xr.enabled == TRUE) { belle_sdp_session_description_add_attribute(session_desc, create_rtcp_xr_attribute(&desc->rtcp_xr)); } @@ -777,20 +760,10 @@ static SalStreamDescription * sdp_to_stream_description(SalMediaDescription *md, } else if (strncmp(value, "passive", 7) == 0) { stream->dtls_role = SalDtlsRoleIsServer; } - - if (stream->dtls_role != SalDtlsRoleInvalid || md->dtls_role != SalDtlsRoleInvalid) { + if (stream->dtls_role != SalDtlsRoleInvalid) { attribute=belle_sdp_media_description_get_attribute(media_desc,"fingerprint"); - if (attribute && (value=belle_sdp_attribute_get_value(attribute))!=NULL){ - strncpy(stream->dtls_fingerprint, value, sizeof(stream->dtls_fingerprint)-1); - } else { - /* no valid stream attributes, get them from session */ - if (stream->dtls_role == SalDtlsRoleInvalid) stream->dtls_role = md->dtls_role; - strncpy(stream->dtls_fingerprint, md->dtls_fingerprint, strlen(md->dtls_fingerprint)+1); - } + strncpy(stream->dtls_fingerprint, belle_sdp_attribute_get_value(attribute),sizeof(stream->dtls_fingerprint)); } - } else { /* no setup attribute found in the stream, get the one from the session */ - stream->dtls_role = md->dtls_role; - strncpy(stream->dtls_fingerprint, md->dtls_fingerprint, strlen(md->dtls_fingerprint)+1); } } @@ -849,26 +822,30 @@ int sdp_to_media_description ( belle_sdp_session_description_t *session_desc, S desc->dir=SalStreamInactive; } - /* Read dtls specific session attributes if any (setup and fingerprint - rfc5763) */ - /* Presence of a valid dtls offer(setup and fingerprint attribute) is set in media Description by a dtls_fingerprint string longer than 0 - * and a dtls_role != SalDtlsRoleInvalid */ - desc->dtls_role = SalDtlsRoleInvalid; - desc->dtls_fingerprint[0] = '\0'; + /*DTLS attributes can be defined at session level.*/ value=belle_sdp_session_description_get_attribute_value(session_desc,"setup"); if (value){ + SalDtlsRole session_role; if (strncmp(value, "actpass", 7) == 0) { - desc->dtls_role = SalDtlsRoleUnset; + session_role = SalDtlsRoleUnset; } else if (strncmp(value, "active", 6) == 0) { - desc->dtls_role = SalDtlsRoleIsClient; + session_role = SalDtlsRoleIsClient; } else if (strncmp(value, "passive", 7) == 0) { - desc->dtls_role = SalDtlsRoleIsServer; + session_role = SalDtlsRoleIsServer; } + value=belle_sdp_session_description_get_attribute_value(session_desc,"fingerprint"); + if (value){ + int i; + /*copy dtls attributes to every streams, might be overwritten stream by stream*/ + for (i=0;istreams[i].dtls_fingerprint, value, sizeof(desc->streams[i].dtls_fingerprint)); + desc->streams[i].dtls_role=session_role; + } + } + } - value=belle_sdp_session_description_get_attribute_value(session_desc,"fingerprint"); - if (value){ - strncpy(desc->dtls_fingerprint, value, sizeof(desc->dtls_fingerprint)-1); - } + /* Get ICE remote ufrag and remote pwd, and ice_lite flag */ value=belle_sdp_session_description_get_attribute_value(session_desc,"ice-ufrag"); diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index f5aff970d..8cd0c1352 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -438,7 +438,22 @@ static int setup_encryption_key(SalSrtpCryptoAlgo *crypto, MSCryptoSuite suite, } return 0; } +static void setup_dtls_keys(LinphoneCall *call, SalMediaDescription *md){ + int i; + for(i=0; inb_streams; i++) { + if (!sal_stream_description_active(&md->streams[i])) continue; + /* if media encryption is set to DTLS check presence of fingerprint in the call which shall have been set at stream init but it may have failed when retrieving certificate resulting in no fingerprint present and then DTLS not usable */ + if (sal_stream_description_has_dtls(&md->streams[i]) == TRUE) { + strncpy(md->streams[i].dtls_fingerprint, call->dtls_certificate_fingerprint, sizeof(md->streams[i].dtls_fingerprint)); /* get the self fingerprint from call(it's computed at stream init) */ + md->streams[i].dtls_role = SalDtlsRoleUnset; /* if we are offering, SDP will have actpass setup attribute when role is unset, if we are responding the result mediadescription will be set to SalDtlsRoleIsClient */ + } else { + md->streams[i].dtls_fingerprint[0] = '\0'; + md->streams[i].dtls_role = SalDtlsRoleInvalid; + } + } + +} static void setup_encryption_keys(LinphoneCall *call, SalMediaDescription *md){ LinphoneCore *lc=call->core; int i,j; @@ -675,16 +690,8 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * l = make_codec_list(lc, &codec_hints, lc->codecs_conf.video_codecs); md->streams[i].payloads = l; } - setup_encryption_keys(call,md); - /* if media encryption is set to DTLS check presence of fingerprint in the call which shall have been set at stream init but it may have failed when retrieving certificate resulting in no fingerprint present and then DTLS not usable */ - if ((call->params->media_encryption==LinphoneMediaEncryptionDTLS) && (call->dtls_certificate_fingerprint!= NULL)) { - memcpy(md->dtls_fingerprint, call->dtls_certificate_fingerprint, strlen((const char *)(call->dtls_certificate_fingerprint))); /* get the self fingerprint from call(it's computed at stream init) */ - md->dtls_role = SalDtlsRoleUnset; /* if we are offering, SDP will have actpass setup attribute when role is unset, if we are responding the result mediadescription will be set to SalDtlsRoleIsClient */ - } else { - md->dtls_fingerprint[0] = '\0'; - md->dtls_role = SalDtlsRoleInvalid; - } + setup_dtls_keys(call,md); setup_rtcp_fb(call, md); setup_rtcp_xr(call, md); @@ -2434,10 +2441,6 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b /* DTLS engine was already initialised during stream init. Before starting it we must be sure that the role(client or server) is set. * Role may have already been set to server if we initiate the call and already received a packet from peer, in that case do nothing */ SalDtlsRole salRole = stream->dtls_role; - if (salRole==SalDtlsRoleInvalid) { /* it's invalid in streams[0] but check also at session level */ - salRole = call->resultdesc->dtls_role; - } - if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ /* give the peer certificate fingerprint to dtls context */ SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); @@ -2582,10 +2585,6 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu if (sal_stream_description_has_dtls(vstream) == TRUE) { /*DTLS*/ SalDtlsRole salRole = vstream->dtls_role; - if (salRole==SalDtlsRoleInvalid) { /* it's invalid in streams[0] but check also at session level */ - salRole = call->resultdesc->dtls_role; - } - if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ /* give the peer certificate fingerprint to dtls context */ SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); diff --git a/coreapi/offeranswer.c b/coreapi/offeranswer.c index 9baedd158..a74105963 100644 --- a/coreapi/offeranswer.c +++ b/coreapi/offeranswer.c @@ -394,6 +394,21 @@ static void initiate_outgoing(const SalStreamDescription *local_offer, result->rtp_ssrc=local_offer->rtp_ssrc; strncpy(result->rtcp_cname,local_offer->rtcp_cname,sizeof(result->rtcp_cname)); + // Handle dtls session attribute: if both local and remote have a dtls fingerprint and a dtls setup, get the remote fingerprint into the result + if ((local_offer->dtls_role!=SalDtlsRoleInvalid) && (remote_answer->dtls_role!=SalDtlsRoleInvalid) + &&(strlen(local_offer->dtls_fingerprint)>0) && (strlen(remote_answer->dtls_fingerprint)>0)) { + strncpy(result->dtls_fingerprint, remote_answer->dtls_fingerprint,sizeof(result->dtls_fingerprint)); + if (remote_answer->dtls_role==SalDtlsRoleIsClient) { + result->dtls_role = SalDtlsRoleIsServer; + } else { + result->dtls_role = SalDtlsRoleIsClient; + } + } else { + result->dtls_fingerprint[0] = '\0'; + result->dtls_role = SalDtlsRoleInvalid; + } + + } @@ -449,6 +464,20 @@ static void initiate_incoming(const SalStreamDescription *local_cap, result->rtp_ssrc=local_cap->rtp_ssrc; strncpy(result->rtcp_cname,local_cap->rtcp_cname,sizeof(result->rtcp_cname)); + // Handle dtls stream attribute: if both local and remote have a dtls fingerprint and a dtls setup, add the local fingerprint to the answer + // Note: local description usually stores dtls config at session level which means it apply to all streams, check this too + if (((local_cap->dtls_role!=SalDtlsRoleInvalid)) && (remote_offer->dtls_role!=SalDtlsRoleInvalid) + && (strlen(local_cap->dtls_fingerprint)>0) && (strlen(remote_offer->dtls_fingerprint)>0)) { + strncpy(result->dtls_fingerprint, local_cap->dtls_fingerprint,sizeof(result->dtls_fingerprint)); + if (remote_offer->dtls_role==SalDtlsRoleUnset) { + result->dtls_role = SalDtlsRoleIsClient; + } + } else { + result->dtls_fingerprint[0] = '\0'; + result->dtls_role = SalDtlsRoleInvalid; + } + + } @@ -484,21 +513,6 @@ int offer_answer_initiate_outgoing(const SalMediaDescription *local_offer, result->rtcp_xr.enabled = FALSE; } - // Handle dtls session attribute: if both local and remote have a dtls fingerprint and a dtls setup, get the remote fingerprint into the result - if ((local_offer->dtls_role!=SalDtlsRoleInvalid) && (remote_answer->dtls_role!=SalDtlsRoleInvalid) - &&(strlen(local_offer->dtls_fingerprint)>0) && (strlen(remote_answer->dtls_fingerprint)>0)) { - strcpy(result->dtls_fingerprint, remote_answer->dtls_fingerprint); - if (remote_answer->dtls_role==SalDtlsRoleIsClient) { - result->dtls_role = SalDtlsRoleIsServer; - } else { - result->dtls_role = SalDtlsRoleIsClient; - } - } else { - result->dtls_fingerprint[0] = '\0'; - result->dtls_role = SalDtlsRoleInvalid; - } - - return 0; } @@ -553,24 +567,6 @@ int offer_answer_initiate_incoming(const SalMediaDescription *local_capabilities }else ms_warning("Unknown protocol for mline %i, declining",i); if (ls){ initiate_incoming(ls,rs,&result->streams[i],one_matching_codec); - - // Handle dtls stream attribute: if both local and remote have a dtls fingerprint and a dtls setup, add the local fingerprint to the answer - // Note: local description usually stores dtls config at session level which means it apply to all streams, check this too - if (((ls->dtls_role!=SalDtlsRoleInvalid) || (local_capabilities->dtls_role!=SalDtlsRoleInvalid)) && (rs->dtls_role!=SalDtlsRoleInvalid) - && ((strlen(ls->dtls_fingerprint)>0) || (strlen(local_capabilities->dtls_fingerprint)>0)) && (strlen(rs->dtls_fingerprint)>0)) { - if (strlen(ls->dtls_fingerprint)>0) { /* get the fingerprint in stream description */ - strcpy(result->streams[i].dtls_fingerprint, ls->dtls_fingerprint); - } else { /* get the fingerprint in session description */ - strcpy(result->streams[i].dtls_fingerprint, local_capabilities->dtls_fingerprint); - } - if (rs->dtls_role==SalDtlsRoleUnset) { - result->streams[i].dtls_role = SalDtlsRoleIsClient; - } - } else { - result->streams[i].dtls_fingerprint[0] = '\0'; - result->streams[i].dtls_role = SalDtlsRoleInvalid; - } - // Handle media RTCP XR attribute memset(&result->streams[i].rtcp_xr, 0, sizeof(result->streams[i].rtcp_xr)); if (rs->rtcp_xr.enabled == TRUE) { @@ -611,18 +607,6 @@ int offer_answer_initiate_incoming(const SalMediaDescription *local_capabilities strcpy(result->name,local_capabilities->name); - // Handle dtls session attribute: if both local and remote have a dtls fingerprint and a dtls setup, add the local fingerprint to the answer - if ((local_capabilities->dtls_role!=SalDtlsRoleInvalid) && (remote_offer->dtls_role!=SalDtlsRoleInvalid) - &&(strlen(local_capabilities->dtls_fingerprint)>0) && (strlen(remote_offer->dtls_fingerprint)>0)) { - strcpy(result->dtls_fingerprint, local_capabilities->dtls_fingerprint); - if (remote_offer->dtls_role==SalDtlsRoleUnset) { - result->dtls_role = SalDtlsRoleIsClient; - } - } else { - result->dtls_fingerprint[0] = '\0'; - result->dtls_role = SalDtlsRoleInvalid; - } - // Handle session RTCP XR attribute memset(&result->rtcp_xr, 0, sizeof(result->rtcp_xr)); if (remote_offer->rtcp_xr.enabled == TRUE) { diff --git a/include/sal/sal.h b/include/sal/sal.h index 4eedb23ab..0b7775b9b 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -260,8 +260,6 @@ typedef struct SalMediaDescription{ bool_t ice_lite; bool_t ice_completed; bool_t pad[2]; - char dtls_fingerprint[256]; - SalDtlsRole dtls_role; } SalMediaDescription; typedef struct SalMessage{ diff --git a/mediastreamer2 b/mediastreamer2 index 07a8b5693..8d120b3c1 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 07a8b569317d23e9442882be267d6640498a7b5e +Subproject commit 8d120b3c118625b827834d1e53b93185d335c3df From d060f4bd650cfe88c8a423356bcc56ff3abf6469 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 16 Feb 2015 18:33:00 +0100 Subject: [PATCH 417/496] fix warning --- coreapi/bellesip_sal/sal_sdp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/bellesip_sal/sal_sdp.c b/coreapi/bellesip_sal/sal_sdp.c index ed34c634a..1504b25c6 100644 --- a/coreapi/bellesip_sal/sal_sdp.c +++ b/coreapi/bellesip_sal/sal_sdp.c @@ -825,7 +825,7 @@ int sdp_to_media_description ( belle_sdp_session_description_t *session_desc, S /*DTLS attributes can be defined at session level.*/ value=belle_sdp_session_description_get_attribute_value(session_desc,"setup"); if (value){ - SalDtlsRole session_role; + SalDtlsRole session_role=SalDtlsRoleInvalid; if (strncmp(value, "actpass", 7) == 0) { session_role = SalDtlsRoleUnset; } else if (strncmp(value, "active", 6) == 0) { From 796f3f086b3123475ed62c7f819812907af41eec Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 16 Feb 2015 19:49:45 +0100 Subject: [PATCH 418/496] fix make distcheck --- share/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share/Makefile.am b/share/Makefile.am index ca8f2e233..0b3fb0119 100644 --- a/share/Makefile.am +++ b/share/Makefile.am @@ -52,7 +52,8 @@ EXTRA_DIST = $(LINPHONE_SOUNDS) \ audio-assistant.desktop.in \ linphone.pc.in \ Makefile.inc \ - archived-rootca.pem + archived-rootca.pem \ + $(appdata_DATA) CLEANFILES=rootca.pem From e142a42d6b85ccad6fa11222721c5cc66740124b Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 16 Feb 2015 22:30:53 +0100 Subject: [PATCH 419/496] add appdata to specfile --- linphone.spec.in | 1 + 1 file changed, 1 insertion(+) diff --git a/linphone.spec.in b/linphone.spec.in index eb8c65b51..9e10c35c1 100644 --- a/linphone.spec.in +++ b/linphone.spec.in @@ -90,6 +90,7 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/linphone %{_datadir}/pixmaps/linphone.png %{_datadir}/sounds/linphone +%{_datadir}/appdata/linphone.appdata.xml %files devel %defattr(-,root,root) From f5e0bc58de8cdd124864798076f888632ca7863f Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 17 Feb 2015 09:04:43 +0100 Subject: [PATCH 420/496] configure cert path for dtls --- coreapi/linphonecore.c | 16 +++++++--------- tester/call_tester.c | 5 +++++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index ef108df18..0fe68a0ae 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1484,11 +1484,7 @@ static void misc_config_read(LinphoneCore *lc) { }else if (strcmp(uuid,"0")!=0) /*to allow to disable sip.instance*/ sal_set_uuid(lc->sal, uuid); - /* DTLS: if media_encryption DTLS SRTP is available, get or create the certificate directory */ - /*if (ms_dtls_srtp_available()){ - *//*JOHAN: USELESS? REMOVE IT*/ - //const char *user_certificate_config_path = lp_config_get_string(config,"misc","uuid",); -// }*/ + lc->user_certificates_path=ms_strdup(lp_config_get_string(config,"misc","user_certificates_path",".")); } static void linphone_core_start(LinphoneCore * lc) { @@ -1617,6 +1613,7 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab lc->data=userdata; lc->ringstream_autorelease=TRUE; + memcpy(local_vtable,vtable,sizeof(LinphoneCoreVTable)); lc->vtables=ms_list_append(lc->vtables,local_vtable); @@ -6760,10 +6757,11 @@ const char *linphone_core_get_zrtp_secrets_file(LinphoneCore *lc){ } void linphone_core_set_user_certificates_path(LinphoneCore *lc, const char* path){ - if (lc->user_certificates_path != NULL) { - ms_free(lc->user_certificates_path); - } - lc->user_certificates_path = path ? ms_strdup(path) : NULL; + char* new_value; + new_value = path?ms_strdup(path):NULL; + if (lc->user_certificates_path) ms_free(lc->user_certificates_path); + lp_config_set_string(lc->config,"misc","user_certificates_path",lc->user_certificates_path=new_value); + return ; } const char *linphone_core_get_user_certificates_path(LinphoneCore *lc){ diff --git a/tester/call_tester.c b/tester/call_tester.c index d19161460..9fe4c5913 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -1584,6 +1584,11 @@ static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* ma linphone_core_set_video_policy(pauline->lc,&pauline_policy); } + if (mode==LinphoneMediaEncryptionDTLS) { /* for DTLS we must access certificates or at least have a directory to store them */ + marie->lc->user_certificates_path = ms_strdup_printf("%s/certificates/marie", liblinphone_tester_file_prefix); + pauline->lc->user_certificates_path = ms_strdup_printf("%s/certificates/pauline", liblinphone_tester_file_prefix); + } + linphone_core_set_media_encryption(marie->lc,mode); linphone_core_set_media_encryption(pauline->lc,mode); From e7d685e9b004a67e101d42f2e737c9428c8ac85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Tue, 17 Feb 2015 11:33:08 +0100 Subject: [PATCH 421/496] Update mediastreamer2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 8d120b3c1..b1acdb3a5 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 8d120b3c118625b827834d1e53b93185d335c3df +Subproject commit b1acdb3a58f34e1b333ed1dbfaa6ae0aab09861f From a149f36615d7c95b8207852ef90e4b985f1aacb3 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 17 Feb 2015 12:47:08 +0100 Subject: [PATCH 422/496] Add getter API for play_file and record_file. --- coreapi/linphonecore.c | 7 +++++++ coreapi/linphonecore.h | 25 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 0fe68a0ae..ae7a22222 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -5747,6 +5747,10 @@ void linphone_core_set_use_files(LinphoneCore *lc, bool_t yesno){ lc->use_files=yesno; } +const char * linphone_core_get_play_file(const LinphoneCore *lc) { + return lc->play_file; +} + /** * Sets a wav file to be played when putting somebody on hold, * or when files are used instead of soundcards (see linphone_core_set_use_files()). @@ -5769,6 +5773,9 @@ void linphone_core_set_play_file(LinphoneCore *lc, const char *file){ } } +const char * linphone_core_get_record_file(const LinphoneCore *lc) { + return lc->rec_file; +} /** * Sets a wav file where incoming stream is to be recorded, diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 5a6b7f108..a909bb644 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -3006,7 +3006,32 @@ void linphone_core_show_video(LinphoneCore *lc, bool_t show); #define linphone_core_use_files(lc, yesno) linphone_core_set_use_files(lc, yesno) /*play/record support: use files instead of soundcard*/ LINPHONE_PUBLIC void linphone_core_set_use_files(LinphoneCore *lc, bool_t yesno); + +/** + * Get the wav file that is played when putting somebody on hold, + * or when files are used instead of soundcards (see linphone_core_set_use_files()). + * + * The file is a 16 bit linear wav file. + * @ingroup media_parameters + * @param[in] lc LinphoneCore object + * @return The path to the file that is played when putting somebody on hold. + */ +LINPHONE_PUBLIC const char * linphone_core_get_play_file(const LinphoneCore *lc); + LINPHONE_PUBLIC void linphone_core_set_play_file(LinphoneCore *lc, const char *file); + +/** + * Get the wav file where incoming stream is recorded, + * when files are used instead of soundcards (see linphone_core_set_use_files()). + * + * This feature is different from call recording (linphone_call_params_set_record_file()) + * The file is a 16 bit linear wav file. + * @ingroup media_parameters + * @param[in] lc LinphoneCore object + * @return The path to the file where incoming stream is recorded. +**/ +LINPHONE_PUBLIC const char * linphone_core_get_record_file(const LinphoneCore *lc); + LINPHONE_PUBLIC void linphone_core_set_record_file(LinphoneCore *lc, const char *file); LINPHONE_PUBLIC void linphone_core_play_dtmf(LinphoneCore *lc, char dtmf, int duration_ms); From c041745cf54cda7256da0224cde549ddc60a1181 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 17 Feb 2015 12:04:50 +0100 Subject: [PATCH 423/496] Added wp8 project without tunnel --- build/wp8/LibLinphone_no_tunnel.vcxproj | 216 ++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 build/wp8/LibLinphone_no_tunnel.vcxproj diff --git a/build/wp8/LibLinphone_no_tunnel.vcxproj b/build/wp8/LibLinphone_no_tunnel.vcxproj new file mode 100644 index 000000000..1bc745f52 --- /dev/null +++ b/build/wp8/LibLinphone_no_tunnel.vcxproj @@ -0,0 +1,216 @@ + + + + + Debug + Win32 + + + Debug + ARM + + + Release + Win32 + + + Release + ARM + + + + {08dd0d38-d9b5-4626-b60d-b4d76b571142} + LibLinphone + en-US + 11.0 + + + + DynamicLibrary + true + v110_wp80 + false + + + DynamicLibrary + false + true + v110_wp80 + false + + + + + + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\$(TargetName)\ + + + false + + + + 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\;$(ProjectDir);%(AdditionalIncludeDirectories) + __STDC_CONSTANT_MACROS;_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;_USRDLL;WINDOW_NATIVE;_TRUE_TIME;IN_LINPHONE;USE_BELLESIP;VIDEO_ENABLED;LINPHONE_PACKAGE_NAME="linphone";LIBLINPHONE_EXPORTS;LINPHONE_PLUGINS_DIR=".";UNICODE;_XKEYCHECK_H;HAVE_ZLIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + Default + NotUsing + false + $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) + + + Console + false + false + belle-sip.lib;mediastreamer2.lib;ws2_32.lib;ortp.lib;gsm.lib;speex.lib;speexdsp.lib;%(AdditionalDependencies) + $(SolutionDir)$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + $(TargetDir)$(TargetName).lib + + + version.bat + + + Batch script to get the git version + + + + + _DEBUG;MSG_STORAGE_ENABLED;%(PreprocessorDefinitions) + + + true + + + + + NDEBUG;MSG_STORAGE_ENABLED;%(PreprocessorDefinitions) + MaxSpeed + true + true + true + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + false + + + + + {1db09afe-fc9b-472e-a746-0e33f8ef8883} + + + {4c225a82-800b-427b-ba7b-61686a9b347f} + + + {9924ac72-f96c-4e56-94d9-2b025da43c6b} + + + {072fad20-7007-4da2-b2e7-16ce2b219f67} + + + {36b528f9-fb79-4078-a16b-0a7442581bb7} + + + {d22bd217-d0f8-4274-9b3a-f3f35f46482c} + + + {b16b81a9-bef2-44c9-b603-1065183ae844} + + + {0565952a-ea62-46a2-8261-f5b4b490da42} + + + {a45d63b9-60de-476c-8836-f8eedbe139d0} + + + {027bad0e-9179-48c1-9733-7aa7e2c2ec70} + + + {ffc7b532-0502-4d88-ac98-9e89071cbc97} + + + {5dfa07b4-0be9-46a9-ba32-fdf5a55c580b} + + + {7afac3bb-d97b-4578-b9fe-5e1d2b94ea2f} + + + + + \ No newline at end of file From 7c1934783983dbdda2e5aee787dd15ea0ad59f30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Tue, 17 Feb 2015 12:33:46 +0100 Subject: [PATCH 424/496] Update translations --- po/ar.po | 186 +++++++++++++++++++++++++++------------------------ po/cs.po | 186 +++++++++++++++++++++++++++------------------------ po/de.po | 186 +++++++++++++++++++++++++++------------------------ po/es.po | 186 +++++++++++++++++++++++++++------------------------ po/fr.po | 187 +++++++++++++++++++++++++++------------------------ po/he.po | 186 +++++++++++++++++++++++++++------------------------ po/hu.po | 186 +++++++++++++++++++++++++++------------------------ po/it.po | 186 +++++++++++++++++++++++++++------------------------ po/ja.po | 188 ++++++++++++++++++++++++++++------------------------ po/nb_NO.po | 186 +++++++++++++++++++++++++++------------------------ po/nl.po | 186 +++++++++++++++++++++++++++------------------------ po/pl.po | 186 +++++++++++++++++++++++++++------------------------ po/pt_BR.po | 186 +++++++++++++++++++++++++++------------------------ po/ru.po | 186 +++++++++++++++++++++++++++------------------------ po/sr.po | 186 +++++++++++++++++++++++++++------------------------ po/sv.po | 186 +++++++++++++++++++++++++++------------------------ po/zh_CN.po | 186 +++++++++++++++++++++++++++------------------------ po/zh_TW.po | 186 +++++++++++++++++++++++++++------------------------ 18 files changed, 1767 insertions(+), 1584 deletions(-) diff --git a/po/ar.po b/po/ar.po index c93c03c58..97b57e7b5 100644 --- a/po/ar.po +++ b/po/ar.po @@ -9,9 +9,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-13 16:34+0000\n" -"Last-Translator: محيي الدين \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/linphone-gtk/" "language/ar/)\n" "Language: ar\n" @@ -148,7 +149,7 @@ msgstr "ابدأ مرشد الصوت" msgid "Run self test and exit 0 if succeed" msgstr "شغِّل الاختبار الذاتي ثم اخرِجْ 0 إذا نجح" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -160,7 +161,7 @@ msgstr "" "هل تريد السماح له برؤية معلومات حضورك وكذا إضافته إلى جهة اتصالك أيضا ؟ إذا " "أجبت ب لا، سيُحظَر هذا الشخص مؤقتا." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -169,59 +170,59 @@ msgstr "" "ادخل كلمة السر ل %s\n" " في نطاق %s:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "خطأ في المكالمة" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "إنتهت المكالمة" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "مكالمة واردة" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "أجِبْ" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "ارفضْ" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "المكالمة متوقفة" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "بواسطة %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "يود %s تشغيل الفيديو. هل تقبل ذلك ؟" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "وصلة إلى الموقع وِبْ" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "لِنْفُونْ - الهاتف المرئي عبر الإنترنت" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (افتراضي)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "التحويل إلى %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -229,7 +230,7 @@ msgstr "" "لا وجود للوحة الصوت على هذا الحاسوب.\n" "لن تتمكن من تلقي أو إجراء أي مكالمة." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "هاتف SIP المرئي الحر" @@ -383,15 +384,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "يجب إعادة تشغيل لِنْفُونْ لكي تٌفعَّل اللغة المختارة." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "بدون" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -573,7 +578,7 @@ msgstr "تأكيد (المرحلة 2/2)" msgid "Error" msgstr "خطأ" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "في طور الإنهاء" @@ -666,7 +671,7 @@ msgstr "ضع السماعة" msgid "Calling..." msgstr "يجري الاتصال..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -703,55 +708,59 @@ msgid "Secured by SRTP" msgstr "آمن بواسطة SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "آمن بواسطة ZRTP - [شارة الهوية : %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "أكِّدْ عدم تحقُّقك" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "أكِّدْ تحقُّقَك" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "في اجتماع" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "المكالمة جارية" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "المكالمة متوقفة مؤقتا" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "إنتهت المكالمة." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "يجري الإرسال" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "انتهى الإرسال." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "فَشِل الإرسال." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "استأنِفْ" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "إيقاف مؤقت" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -760,7 +769,7 @@ msgstr "" "يسجل في\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(متوقف)" @@ -859,23 +868,23 @@ msgstr "تشغيل" msgid "Let's start Linphone now" msgstr "لنُشغِّل لِنْفُونْ الآن" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "مرشد الصوت" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "مرشد الصوت" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "معايرة كسب الميكروفون" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "معايرة شدة مكبر الصوت" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "سَجِّل واقرأ " @@ -1742,68 +1751,68 @@ msgstr "تجري التهيئة..." msgid "Please wait while fetching configuration from server..." msgstr "رجاءً انتظر ريثما ينتهي من جلب الإعدادات من الخادم..." -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "جاهز" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "تجري التهيئة" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "يجري البحث عن وجهة رقم الهاتف..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "لم يتمكن من إيجاد هذا الرقم." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "يتصل ب" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "لم يتمكن من الاتصال" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "آسف، وصل عدد المكالمات الآنية إلى حده الأقصى" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "يتصل بك" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "ويطلب ردا تلقائيا." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "يجري تعديل إعدادات المكالمة..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "متصل." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "أُلغيت المكالمة" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "لم يتمكن من توقيف المكالمة مؤقتا" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "وضع المكالمة قيد الانتظار..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "يجري بحث STUN..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "يجري جلب مرشَّحي ICE المحلين..." @@ -1859,14 +1868,14 @@ msgstr "في عطلة" msgid "Unknown status" msgstr "حالة مجهولة" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" "عنوان SIP الذي أدخلت غير صالح، يجب أن يبدأ ب \"sip:\" متبوعا بإسم النطاق." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1874,126 +1883,127 @@ msgstr "" "هوية SIP التي أدخلت غير صحيحة.\n" "يجب أن تشبه هذا النمط sip:username@proxydomain، مثلا sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "تعذر الولوج بالهوية %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "يرن الجرس عن بعد..." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "يرن الجرس عن بعد..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "أخذ المكالمة مبكرا." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "المكاملة مع %s متوقفة." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "يجيب %s عن المكالمة - في وضع الانتظار." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "استُعيدت المكالمة." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "أجاب عن المكالمة %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "غير موائم، تحقق من المراميز أو إعدادات الأمان..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "إعدادات الوسائط غير موائمة." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "استُأنِفت المكالمة." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "وُقِّفت المكالمة مؤقتا من طرف آخر." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "حُدِّث الاتصال من البعيد." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "أُنهيت المكالمة." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "المستخدم مشغول." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "المستخدم غير متاح مؤقتا." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "لا يريد المستخدم أي إزعاج." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "تم تجاهل المكالمة." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "انتهت مهلة الطلب." -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "مُوجَّه" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "فشل الاتصال." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "تم التسجيل في %s بنجاح." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "أُلغي التسجيل في %s ." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "لا إجابة قبل انتهاء المهلة" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "فَشِل التسجيل في %s: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "خدمة غير متاحة، تجري الإعادة" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "شارة التحقق من الهوية هي %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/cs.po b/po/cs.po index 1df2c980c..79d5e0344 100644 --- a/po/cs.po +++ b/po/cs.po @@ -9,9 +9,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Czech (http://www.transifex.com/projects/p/linphone-gtk/" "language/cs/)\n" "Language: cs\n" @@ -142,7 +143,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -155,66 +156,66 @@ msgstr "" "do svého adresáře?\n" "Odpovíte-li ne, tato osobo bude dočasně blokována." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Chyba hovoru" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Hovor ukončen" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Příchozí hovor" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Odpovědět" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Odmítnout" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Hovor odložen" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "kým: %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s navrhuje začít videohovor. Přijímáte?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Odkaz na webovou stránku" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Lipnhone – internetový videofon" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Výchozí)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Byly jsme přepojeni na %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -222,7 +223,7 @@ 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:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Volný SIP videofon" @@ -376,15 +377,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "Aby se projevil výběr nového jazyka, je nutné znovu spustit linphone." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Žádné" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -562,7 +567,7 @@ msgstr "Ověření (krok 2/2)" msgid "Error" msgstr "Chyba" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "Ukončuje se" @@ -655,7 +660,7 @@ msgstr "Zavěsit" msgid "Calling..." msgstr "Volá se…" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00:00:00" @@ -692,55 +697,59 @@ msgid "Secured by SRTP" msgstr "Zabezpečeno pomocí SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Zabezpečeno pomocí ZRTP – [ověřovací klíč: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Nastavit na neověřeno" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Nastavit na ověřeno" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "Probíhá konference" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "Probíhá hovor" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Odložený hovor" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Hovor skončil." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Probíhá přepojení" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Přepojení dokončeno." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Přepojení selhalo." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Obnovit" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Odložit" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -749,7 +758,7 @@ msgstr "" "Nahrává se do\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(Odloženo)" @@ -846,23 +855,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1712,68 +1721,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Připraven." -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Vyhledává se umístění čísla…" -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Toto číslo nelze vyhledat." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Navazuje se spojení" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Nelze volat" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 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:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "vás volá" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " a požaduje automatickou zvednutí." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Upravují se parametry hovoru…" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Připojeno." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Hovor přerušen" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Hovor nebylo možné odložit" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Současný hovor se odkládá…" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Hledá se adresa pomocí STUN…" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "Shromažďují se místní kandidáti ICE…" @@ -1829,7 +1838,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1837,7 +1846,7 @@ msgstr "" "Adresa SIP proxy, kterou jste zadali, není platná. Musí začínat na „sip:“ a " "pak musí následovat jméno stroje." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1845,126 +1854,127 @@ 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:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Nelze se přihlásit jako %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Vyzvání na druhé straně." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Vyzvání na druhé straně…" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Časná média." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "Hovor s %s je odložen." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Hovor přijat kým: %s – odložen." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Hovor obnoven." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "Hovor přijat kým: %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "Není slučitelné. Zkontrolujte nastavení kodeků a zabezpečení…" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Neslučitelné parametry médií." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Byli jsme obnoveni." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "Byli jsme odloženi protistranou." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "Hovor byl aktualizován protistranou." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Hovor ukončen." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Uživatel je zaneprázdněn." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Uživatel je dočasně nedostupný." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Uživatel si nepřeje být rušen." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Volání odmítnuto." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Přesměrováno" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Volání se nezdařilo." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registrace na %s byla úspěšná." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Odregistrování z %s hotovo." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "odpověď nedorazila včas" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrace na %s selhala: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Klíč k ověření totožnosti je %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/de.po b/po/de.po index 229f60c71..204117b52 100644 --- a/po/de.po +++ b/po/de.po @@ -11,9 +11,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-13 16:34+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/" "language/de/)\n" "Language: de\n" @@ -144,7 +145,7 @@ msgstr "Starte den Audio-Assistent" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -157,7 +158,7 @@ msgstr "" "Ihrer Kontaktliste hinzufügen?\n" "Wenn Sie mit Nein antworten, wird diese Person vorläufig blockiert." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -166,59 +167,59 @@ msgstr "" "Bitte geben Sie Ihr Passwort für den Benutzernamen %s\n" " für Bereich %s ein:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Anruf fehlgeschlagen" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Anruf beendet" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Eingehender Anruf" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Annehmen" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Abweisen" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Anruf wird gehalten" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "von %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, 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:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Website-Verknüpfung" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - ein Internet-Video-Telefon" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Vorgabe)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Vermittlung nach %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -226,7 +227,7 @@ msgstr "" "Auf diesem Rechner können keine Soundkarten gefunden werden.\n" "Sie können keine Audio-Anrufe tätigen oder entgegennehmen." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Ein freies SIP-Video-Telefon" @@ -382,15 +383,19 @@ msgstr "" "Linphone muss neu gestartet werden, damit die neue Spracheinstellung wirksam " "wird." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Keinen" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -571,7 +576,7 @@ msgstr "Bestätigung (Schritt 2/2)" msgid "Error" msgstr "Fehler" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "Fertigstellen" @@ -664,7 +669,7 @@ msgstr "Auflegen" msgid "Calling..." msgstr "Verbindungsaufbau..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -701,55 +706,59 @@ msgid "Secured by SRTP" msgstr "Gesichert durch SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Gesichert durch ZRTP - [Auth.-Token: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Auf „Ungeprüft“ setzen" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Auf „Geprüft“ setzen" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "In Konferenz" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "Im Gespräch" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Gehaltener Anruf" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Anruf beendet." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Vermittlung läuft" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Vermittlung abgeschlossen." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Vermittlung fehlgeschlagen." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Fortsetzen" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Halten" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -758,7 +767,7 @@ msgstr "" "Recording into\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(pausiert)" @@ -858,23 +867,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "Linphone jetzt starten" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "Audio-Assistant" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "Audio-Assistant" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "Einrichtung MIkrofonverstärker" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "Einrichtung Lautstärke" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "aufnehmen und abspielen" @@ -1746,68 +1755,68 @@ msgid "Please wait while fetching configuration from server..." msgstr "" "Bitte warten Sie während die Einstellungen vom Server abgerufen werden..." -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Bereit" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "Einstellen" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Telefonnummernziel wird gesucht..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Diese Nummer kann nicht aufgelöst werden." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Verbindungsaufbau" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Anruf kann nicht getätigt werden." -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Die maximale Anzahl der gleichzeitigen Anrufe ist erreicht." -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "ruft Sie an" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " und fragt nach automatischer Antwort." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Die Anrufparameter werden verändert..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Verbunden." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Anruf abgebrochen" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Anruf kann nicht gehalten werden" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Aktueller Anruf wird gehalten..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "STUN-Ermittlung läuft..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "Lokale Kandidaten für ICE werden zusammengestellt..." @@ -1863,7 +1872,7 @@ msgstr "Urlaub" msgid "Unknown status" msgstr "Unbekannter Status" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1871,7 +1880,7 @@ msgstr "" "Die von Ihnen eingegebene SIP-Proxy-Adresse ist ungültig, sie muss mit " "„sip:“ gefolgt vom Hostnamen beginnen." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1880,126 +1889,127 @@ msgstr "" "Sie sollte wie sip:benutzername@proxydomain aussehen, also z.B. sip:" "alice@beispiel.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Anmeldung als %s fehlgeschlagen" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Klingeln bei der Gegenseite." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Klingeln bei der Gegenseite..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "nicht kompatibel, prüfe Codecs oder Sicherheitseinstellungen..." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "Anruf mit %s wird gehalten." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Der von %s entgegengenommene Anruf wird gehalten." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Anruf fortgesetzt." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "Anruf wird von %s entgegengenommen." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "Inkompatibel, prüfe Codecs oder Sicherheitseinstellungen..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Inkompatible Medienparameter." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Anruf wird fortgesetzt." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 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 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "Anruf ist von der Gegenseite aktualisiert worden." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Anruf beendet." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Teilnehmer ist besetzt." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Teilnehmer zur Zeit nicht verfügbar." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Teilnehmer möchte nicht gestört werden." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Anruf abgewiesen" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "Zeitüberschreitung bei der Anfrage" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Umgeleitet" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Anruf fehlgeschlagen." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registrierung auf %s erfolgreich." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Abmeldung von %s ist erfolgt." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "Zeitüberschreitung bei der Antwort" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrierung auf %s fehlgeschlagen: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "Service nicht verfügbar, versuche erneut" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Authentifizierungs-Token ist %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/es.po b/po/es.po index 6a133760e..db3d1dd72 100644 --- a/po/es.po +++ b/po/es.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/linphone-gtk/" "language/es/)\n" "Language: es\n" @@ -137,7 +138,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -150,66 +151,66 @@ msgstr "" "contactos?\n" "Si responde no, esta persona será bloqueada temporalmente." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Llamada entrante" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Contestar" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Enlace a la Web" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - un video-teléfono a través de Internet" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Opción predeterminada)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Somos transferidos a %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -217,7 +218,7 @@ 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:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Un video-teléfono SIP gratuito" @@ -371,15 +372,19 @@ 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:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -548,7 +553,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -639,7 +644,7 @@ msgstr "" msgid "Calling..." msgstr "" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -676,62 +681,66 @@ msgid "Secured by SRTP" msgstr "Cifrada con SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Cifrada con ZRTP - [token de autenticación: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Set sin verificar" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Set verificado" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "En conferencia" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Reanudar" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Pausar" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -828,23 +837,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1696,68 +1705,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Buscando el número de teléfono del destinatario…" -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "No se ha podido resolver este número." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 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:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "y ha solicitado auto respuesta." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Modificando parámetros de llamada…" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Conectado." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "No se pudo pausar la llamada" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Pausando la llamada actual..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Búsqueda STUN en proceso…" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1813,7 +1822,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1821,7 +1830,7 @@ msgstr "" "La dirección del Proxy SIP que ha introducido no es válida, debe empezar con " "\"sip:\" seguido del hostname." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1830,126 +1839,127 @@ msgstr "" "Debe ser del tipo sip:username@proxydomain, como por ejemplo sip:" "alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Medios iniciales." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "La llamada con %s está puesta en pausa." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Llamada respondida por %s - en espera." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "El usuario está ocupado." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "El usuario no está disponible temporalmente." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "El usuario no quiere que le molesten." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Llamada rechazada." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Redigirida" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "timeout sin respuesta" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/fr.po b/po/fr.po index aff7882d6..33fa26d57 100644 --- a/po/fr.po +++ b/po/fr.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Belledonne Communications , 2015 # Gautier Pelloux-Prayer , 2014 # Gautier Pelloux-Prayer , 2014 # Gautier Pelloux-Prayer , 2014-2015 @@ -11,9 +12,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-13 16:34+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:30+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: French (http://www.transifex.com/projects/p/linphone-gtk/" "language/fr/)\n" "Language: fr\n" @@ -142,7 +144,7 @@ msgstr "Démarre l'assistant audio" msgid "Run self test and exit 0 if succeed" msgstr "Exécuter le test local et retourner 0 en cas de succès" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -156,7 +158,7 @@ msgstr "" "Si vous répondez non, cette personne sera mise temporairement sur liste " "noire." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -165,59 +167,59 @@ msgstr "" "Entrez le mot de passe pour %s\n" " sur le domaine %s:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Erreur lors de l'appel" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Appel terminé." -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Appel entrant" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Répondre" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Refuser" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Appel en pause" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "b>par %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, 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:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Lien site web" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - un téléphone video pour l'internet" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (par défaut)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Transfert vers %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -225,7 +227,7 @@ 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:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Un visiophone libre" @@ -381,15 +383,19 @@ msgstr "" "La nouvelle selection de langue prendra effet au prochain démarrage de " "linphone." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Aucun" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "DTLS" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -569,7 +575,7 @@ msgstr "Validation (étape 2/2)" msgid "Error" msgstr "Erreur" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "En cours d’arrêt." @@ -662,7 +668,7 @@ msgstr "Raccrocher" msgid "Calling..." msgstr "Tentative d'appel..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -699,55 +705,59 @@ msgid "Secured by SRTP" msgstr "Sécurisé par SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "Sécurisé par DTLS" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Sécurisé par ZRTP- [jeton: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Marquer comme non vérifié" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Marquer comme vérifié" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "En conférence" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "Appel en cours" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Appel en attente" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Appel terminé." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Transfert en cours" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Transfert terminé" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Transfert échoué" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Reprendre" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Pause" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -756,7 +766,7 @@ msgstr "" "Enregistrement dans\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(en attente)" @@ -856,23 +866,23 @@ msgstr "Jouer" msgid "Let's start Linphone now" msgstr "Démarrons Linphone maintenant" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "Assistant audio" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "Assistant audio" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "Calibration du gain du microphone" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "Calibration du volume du haut parleur" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "Enregistrer et joue" @@ -1744,68 +1754,68 @@ msgstr "" "Veuillez patenter un instant pendant le chargement de la configuration " "distante..." -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Prêt." -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "Configuration en cours" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Recherche de la destination du numéro de téléphone..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "La destination n'a pu être trouvée." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Appel de" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Echec de l'appel" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 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:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "vous appelle" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "et sollicite un décrochage automatique." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Modifications des paramètres d'appels..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "En ligne." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Appel abandonné" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "La mise en attente a échoué" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Mise en attente de l'appel..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Découverte STUN en cours" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "Collection des candidats locaux ICE en cours..." @@ -1861,7 +1871,7 @@ msgstr "En congé" msgid "Unknown status" msgstr "Status inconnu" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1869,7 +1879,7 @@ msgstr "" "L'adresse SIP du proxy est invalide. Elle doit commencer par \"sip:\" suivie " "par un nom de domaine." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1878,126 +1888,127 @@ msgstr "" "Elle doit être de la forme sip:username@domain, comme par example sip:" "alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Echec de la connexion en tant que %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Sonnerie distante." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Sonnerie distante..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Prise d'appel anticipée." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "%s est maintenant en attente." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Appel répondu par %s - en attente" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Appel repris." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "Appel répondu par %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "Incompatible, vérfiez les codecs ou les paramètres de sécurité..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Paramètres media incompatibles." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Appel repris." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "L'appel a été mis en attente." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "L'appel est modifié par la partie distante." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Appel terminé." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Occupé..." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "L'usager est temporairement indisponible." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "L'usager ne souhaite pas être dérangé" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Appel décliné." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "Délai d'attente de la requête dépassé." -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Redirection" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "L'appel a échoué." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Enregistrement sur %s effectué." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Désenregistrement sur %s effectué." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "Pas de réponse" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Echec de l'enregistrement sur %s: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "Service indisponible, nouvelle tentative" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Le jeton d'authentification est %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/he.po b/po/he.po index 4feae78d6..553b97f58 100644 --- a/po/he.po +++ b/po/he.po @@ -11,9 +11,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/linphone-gtk/" "language/he/)\n" "Language: he\n" @@ -140,7 +141,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -153,7 +154,7 @@ msgstr "" "שלך ?\n" "היה ותשובתך תהיה לא, אדם זה יהיה מסומן באופן זמני ברשימה השחורה." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -162,59 +163,59 @@ msgstr "" "אנא הזן סיסמה עבור משתמש %s\n" "במתחם %s:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "שגיאת קריאה" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "שיחה הסתיימה" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "קריאה נכנסת" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "לענות" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "לדחות" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "שיחה הושהתה" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "על ידי %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "‏%s רוצה להתחיל וידאו. האם אתה מסכים ?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "קישור אתר רשת" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "‫Linphone - וידאופון אינטרנטי" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "‫%s (ברירת מחדל)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "אנחנו מועברים אל %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -222,7 +223,7 @@ msgstr "" "לא אותרו כרטיסי קול במחשב זה.\n" "לא תהיה ביכולתך לשלוח או לקבל שיחות אודיו." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "וידאופון SIP חופשי" @@ -376,15 +377,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "עליך לאתחל את לינפון כדי שהשפה החדשה תיכנס לתוקף." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "ללא" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -559,7 +564,7 @@ msgstr "אימות (צעד 2/2)" msgid "Error" msgstr "שגיאה" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "מסיים כעת" @@ -652,7 +657,7 @@ msgstr "נתק" msgid "Calling..." msgstr "מתקשר כעת..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "‭00::00::00" @@ -689,55 +694,59 @@ msgid "Secured by SRTP" msgstr "מאובטחת על ידי SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "מאובטחת על ידי ZRTP - [אות אימות: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "הגדר כלא מאומתת" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "הגדר כמאומתת" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "בשיחת ועידה" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "בשיחה כעת" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "שיחה מושהית" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "שיחה הסתיימה." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "העברה מצויה כעת בעיצומה" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "העברה הסתיימה." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "העברה נכשלה." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "חזור" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "השהה" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -746,7 +755,7 @@ msgstr "" "מקליט אל תוך\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(מושהה)" @@ -843,23 +852,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "הבא נתחיל את Linphone עכשיו" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1709,68 +1718,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "מוכן" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "מחפש כעת עבור יעד מספר טלפון..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "לא ניתן לפתור את מספר זה." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "מתקשר כעת" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "לא ניתן להתקשר" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "הגענו אל המספר המרבי של שיחות מקבילות, עמך הסליחה" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "מתקשר/ת אליך" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " ומבקש/ת מענה אוטומטי." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "מתאים כעת פרמטרים של שיחה..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "מקושר." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "קריאה בוטלה" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "לא ניתן להשהות את השיחה" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "משהה כעת שיחה נוכחית..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "בדיקת STUN מצויה כעת בעיצומה..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "צבירת מועמדים מקומיים של ICE מצויה כעת בעיצומה..." @@ -1826,14 +1835,14 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" "כתובת sip proxy שהזנת הינה שגויה, זו צריכה להתחיל עם‭\"sip:\" ‬ לאחר שם מארח." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1841,126 +1850,127 @@ msgstr "" "זהות sip שהוזנה הינה שגויה.\n" "זו צריכה להיראות כמו sip:username@proxydomain, למשל sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "לא ניתן להתחבר בזהות %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "צלצול מרוחק." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "צלצול מרוחק..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "מדיה מוקדמת." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "שיחה עם %s מושהית." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "קריאה נענתה על ידי %s - בהמתנה." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "קריאה חודשה." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "קריאה נענתה על ידי %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "חוסר תאימות, בדוק קודקים או הגדרות אבטחה..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "פרמטריי מדיה חסרי תואמים." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "חזרנו." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "אנו מושהים על ידי צד אחר." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "שיחה עודכנה מרחוק." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "קריאה הסתיימה." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "משתמש עסוק כעת." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "משתמש לא זמין זמנית." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "משתמש לא מעוניין שיפריעו לו." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "קריאה סורבה." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "מכוון מחדש" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "קריאה נכשלה." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "רישום אצל %s הושלם בהצלחה." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "אי רישום אצל %s סוים." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "אין היענות תוך זמן מוגדר" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "רישום אצל %s נכשל: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "אות האימות הינה %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/hu.po b/po/hu.po index e9b61953f..1ff87b778 100644 --- a/po/hu.po +++ b/po/hu.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Hungarian (http://www.transifex.com/projects/p/linphone-gtk/" "language/hu/)\n" "Language: hu\n" @@ -136,7 +137,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -149,66 +150,66 @@ msgstr "" "szeretné adni a partnerlistához?\n" "Ha nemmel válaszol, ez a személy átmenetileg tiltólistára kerül." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Hiba a hívás közben" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Hívás vége" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Beérkező hívás" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Hívás fogadása" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Elutasítás" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Hívás várakoztatva" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "a következő által: %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s szerené elidítani a videót. Elfogadja?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Internetes oldal" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - internetes videó telefon" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Alapértelmezett)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Át vagyunk irányítva ide: %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -216,7 +217,7 @@ 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:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Egy ingyenes SIP video-telefon" @@ -372,15 +373,19 @@ msgstr "" "Újra kell indítania a linphone-t, hogy az új nyelv kiválasztása érvényre " "jusson. " -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Nincs" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -557,7 +562,7 @@ msgstr "Érvényesítés (2/2 lépés)" msgid "Error" msgstr "Hiba" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "Befejezés" @@ -650,7 +655,7 @@ msgstr "Befejezés" msgid "Calling..." msgstr "Hívás folyamatban..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -687,55 +692,59 @@ msgid "Secured by SRTP" msgstr "SRTP-vel titkosítva" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "ZRTP-vel titkosítva - [hitelesítési jel: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Beállítás ellenőrizetlenként" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Beállítás ellenőrzöttként" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "Konferencián" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "vonalban" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Várakoztatott hívás" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Hívás vége." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Átvitel folyamatban" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Átvitel befejezve." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Az átvitel sikertelen." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Visszatérés" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Várakoztatás" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -744,7 +753,7 @@ msgstr "" "Felvétel a következőbe\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(Várakoztatva)" @@ -841,23 +850,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1709,68 +1718,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Kész" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Telefonszám-cél keresése..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Nem sikkerült értelmezni a számot." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Kapcsolódás" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Nem sikerült hívni" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 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:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "kapcsolatba lépett veled." -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "és automatikus választ kért." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "A hívási jellemzők módosítása..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Kapcsolódva." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Hívás megszakítva" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Nem sikerült várakoztatni a hívást" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Jelenlegi hívás várakoztatásának aktiválása..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Stun keresés folyamatban..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "ICE helyi jelentkezők begyűjtése folyamatban..." @@ -1826,7 +1835,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1834,7 +1843,7 @@ 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:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1843,127 +1852,128 @@ msgstr "" "Így kéne kinéznie: sip:felhasznalonev@proxytartomany, például sip:" "aladar@pelda.hu" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Nem sikerült belépni ezzel: %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Távoli csengés." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Távoli csengés..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Korai médiák." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "A hívás a következővel: %s várakoztatva" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "%s fogadta a hívást - várakoztatva." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Hívás visszatért" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "%s válaszolt a hívásra." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" "Nem kompatibilis, ellenőrizze a kódek- vagy a biztonsági beállításokat..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Nem kompatibilis médiajellemzők." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Visszatértünk." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "Megállítva a másik fél által." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "A hívás távolról frissítve." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "A hívás befejezve." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "A felhasználó foglalt." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "A felhasználó ideiglenesen nem elérhető" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "A felhasználó nem akarja, hogy zavarják." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Hívás elutasítva" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Átirányítva" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Nem sikerült a hívás." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "A regisztáció a %s -n sikerült." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "A kiregisztrálás kész a következőn: %s ." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "időtúllépés után nincs válasz" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "A regisztáció a %s -n nem sikerült: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Hitelesítési jel: %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/it.po b/po/it.po index 111737c48..7561f7f0d 100644 --- a/po/it.po +++ b/po/it.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Italian (http://www.transifex.com/projects/p/linphone-gtk/" "language/it/)\n" "Language: it\n" @@ -134,7 +135,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -146,72 +147,72 @@ msgstr "" "veda il tuo stato o aggiungerlo alla tua lista dei contatti Se rispondi no " "questo utente sarà momentaneamente bloccato." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Chiamata terminata" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Chimata in entrata" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Rifiuta" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Default)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 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:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "" @@ -365,15 +366,19 @@ 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:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -544,7 +549,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -635,7 +640,7 @@ msgstr "" msgid "Calling..." msgstr "" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "" @@ -672,62 +677,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Chiamata terminata." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -824,23 +833,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1689,68 +1698,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Pronto" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Ricerca numero destinazione..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Impossibile risolvere il numero." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "In connessione" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Connessione" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Ricerca Stun in progresso ..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1806,7 +1815,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1814,7 +1823,7 @@ msgstr "" "L'indirizzo sip proxy utilizzato è invalido, deve iniziare con \"sip:\" " "seguito dall' hostaname." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1822,126 +1831,127 @@ msgstr "" "L'identità sip utilizza è invalida.\n" "Dovrebbre essere sip:username@proxydomain, esempio: sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "impossibile login come %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Chiamata terminata." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Utente occupato" -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Utente non disponibile" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "L'utente non vuole essere disturbato" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Chiamata rifiutata" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registrazione su %s attiva" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Unregistrazione su %s" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "timeout no risposta" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrazione su %s fallita: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/ja.po b/po/ja.po index e998ee25c..e4420706b 100644 --- a/po/ja.po +++ b/po/ja.po @@ -9,9 +9,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-13 16:34+0000\n" -"Last-Translator: Alexander\n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/" "language/ja/)\n" "Language: ja\n" @@ -138,7 +139,7 @@ msgstr "オーディオアシスタントを実行" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -151,72 +152,72 @@ msgstr "" "す。\n" "あなたが拒否すると、この人は一時的にブラックリストへ登録されます。" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "呼出エラー" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "呼出終了" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "着信" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "応答" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "拒否" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "呼び出しの一時停止" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "%s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "ウェブサイトリンク" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - ビデオインターネット電話" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (デフォルト)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "%s に転送しました" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 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:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "無料 SIP ビデオ-電話" @@ -370,15 +371,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "言語の選択を有効にするには、 Linphoneを再起動する必要があります。" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "なし" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -426,6 +431,8 @@ 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" @@ -552,7 +559,7 @@ msgstr "検証します (2/2)" msgid "Error" msgstr "エラー" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "終了" @@ -645,7 +652,7 @@ msgstr "" msgid "Calling..." msgstr "かけています…" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -682,62 +689,66 @@ msgid "Secured by SRTP" msgstr "SRTPのセキュリティ" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "ZRTP によるセキュリティ - [auth token: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "セット未検証" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "セット検証済" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "会議で" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "呼び出し中" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "呼び出し停止" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "呼び出し終了" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "進行中の転送" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "転送完了。" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "転送失敗。" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "レジューム" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "一時停止" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(停止中)" @@ -834,23 +845,23 @@ msgstr "再生" msgid "Let's start Linphone now" msgstr "Linphoneをはじめる" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "音声アシスタント" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "音声アシスタント" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "マイクのゲイン測定" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "スピーカーの音量測定" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "録音して再生" @@ -1712,68 +1723,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "準備" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "" -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "" #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "と自動応答を尋ねる" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "コールパラメーターの変更..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "接続しました。" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "呼び出しを打ち切る" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "呼び出しを一時停止できませんでした" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "現在の通話を一時停止..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Stunによるルックアップの進行中…" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1829,138 +1840,139 @@ msgstr "休暇中" msgid "Unknown status" msgstr "不明なステータス" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 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:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Early media." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "呼び出し終了。" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "相手はビジーです。" -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "相手は、今出られません。" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "相手は手が離せないようです。" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "通話は拒否されました。" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "リクエストは時間切れです。" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/nb_NO.po b/po/nb_NO.po index fb7035231..e6bb13dc7 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -8,9 +8,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/" "p/linphone-gtk/language/nb_NO/)\n" "Language: nb_NO\n" @@ -137,7 +138,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -150,66 +151,66 @@ msgstr "" "din kontaktliste?\n" "Hvis du svarer nei vil personen bli svartelyst midlertidig." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Samtale avsluttet" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Innkommende samtale" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Svarer" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Avvis" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Peker til nettsted" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - en video Internet telefon" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Standard)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Vi er overført til %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -217,7 +218,7 @@ msgstr "" "Klarte ikke å finne noe lydkort på denne datamaskinen.\n" "Du vil ikke kunne sende eller motta lydsamtaler." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "En gratis SIP video-telefon" @@ -371,15 +372,19 @@ 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:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -550,7 +555,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -641,7 +646,7 @@ msgstr "" msgid "Calling..." msgstr "Ringer..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00:00:00" @@ -678,62 +683,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "I samtale med" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Pauset samtale" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Samtale avsluttet." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Fortsett" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Pause" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -830,23 +839,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1696,68 +1705,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Klar" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Ser etter telefonnummer for destinasjonen..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Kan ikke tilkoble dette nummeret." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Tilknytter" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Kunne ikke ringe" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Beklager, du har nådd maksimalt antall samtidige samtaler" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "Kontakter deg." -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " og ba om autosvar." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Endrer ringeparametre..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Tilkoblet" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Samtale avbrutt" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Kunne ikke pause samtalen" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Pauser nåværende samtale" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "STUN oppslag pågår..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1813,7 +1822,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1821,7 +1830,7 @@ msgstr "" "SIP proxy adressen du har angitt er ugyldig, den må begynne med \"sip:\" " "etterfult av vertsnavn." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1829,126 +1838,127 @@ 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:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Ikke ikke logge inn som %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Ringer hos motparten." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Tidlig media" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "Samtalen med %s er pauset." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Samtale besvart av %s - på vent." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Samtale gjenopptatt." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "Samtale besvart av %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Samtale avsluttet." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Brukeren er opptatt." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Brukeren er midlertidig ikke tilgjengelig." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Brukeren vil ikke bli forstyrret." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Samtale avvist." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Omdirigert" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Samtale feilet." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registrering hos %s lykkes." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Avregistrering hos %s lykkes." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "ingen svar innen angitt tid" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrering hos %s mislykkes: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/nl.po b/po/nl.po index cfda5add0..9724098a7 100644 --- a/po/nl.po +++ b/po/nl.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/linphone-gtk/" "language/nl/)\n" "Language: nl\n" @@ -134,7 +135,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -143,72 +144,72 @@ msgid "" "If you answer no, this person will be temporarily blacklisted." msgstr "" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Oproep beeindigd" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Inkomende oproep" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 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:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Een Vrije SIP video-telefoon" @@ -362,15 +363,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Geen" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -539,7 +544,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -630,7 +635,7 @@ msgstr "" msgid "Calling..." msgstr "" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "" @@ -667,62 +672,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -819,23 +828,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1683,68 +1692,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Gereed." -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Zoekt de lokatie van het telefoonnummer..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Kon dit nummer niet vinden." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Verbinden" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Verbonden." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "STUN adres wordt opgezocht..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1800,138 +1809,139 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 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:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Oproep beeindigd." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Gebruiker is bezet." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Gebruiker is tijdelijk niet beschikbaar." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "De gebruiker wenst niet gestoord te worden." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Oproep geweigerd." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registratie op %s gelukt." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/pl.po b/po/pl.po index f83b391c4..595a29b8d 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Polish (http://www.transifex.com/projects/p/linphone-gtk/" "language/pl/)\n" "Language: pl\n" @@ -137,7 +138,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -146,72 +147,72 @@ msgid "" "If you answer no, this person will be temporarily blacklisted." msgstr "" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 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:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "" @@ -365,15 +366,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -543,7 +548,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -634,7 +639,7 @@ msgstr "" msgid "Calling..." msgstr "" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "" @@ -671,62 +676,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -823,23 +832,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1687,68 +1696,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "" -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "" #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Połączony" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1804,138 +1813,139 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 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:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Osoba jest zajęta." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Osoba jest tymczasowo niedostępna." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Osoba nie chce, aby jej przeszkadzać." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Rozmowa odrzucona." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/pt_BR.po b/po/pt_BR.po index 8f7a8c319..3c74b566d 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" "linphone-gtk/language/pt_BR/)\n" "Language: pt_BR\n" @@ -134,7 +135,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -143,72 +144,72 @@ msgid "" "If you answer no, this person will be temporarily blacklisted." msgstr "" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Camadas recebidas" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 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:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "" @@ -362,15 +363,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Nenhum" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -539,7 +544,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -630,7 +635,7 @@ msgstr "" msgid "Calling..." msgstr "" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "" @@ -667,62 +672,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -819,23 +828,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1683,68 +1692,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Procurando por telefone de destino..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 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:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Conectado." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1800,138 +1809,139 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 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:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Usuário está ocupado." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Usuário está temporáriamente indisponível." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/ru.po b/po/ru.po index b3e312070..aeb106fc5 100644 --- a/po/ru.po +++ b/po/ru.po @@ -12,9 +12,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-14 09:11+0000\n" -"Last-Translator: AlexL \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Russian (http://www.transifex.com/projects/p/linphone-gtk/" "language/ru/)\n" "Language: ru\n" @@ -148,7 +149,7 @@ msgstr "Запустить помощника аудио" msgid "Run self test and exit 0 if succeed" msgstr "Запустить самотест и выйти при успехе со статусом 0" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -161,7 +162,7 @@ msgstr "" "контактный лист?\n" "Если вы ответите Нет, эта персона будет временно в чёрном списке." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -170,59 +171,59 @@ msgstr "" "Пожалуйста, введите пароль для пользователя %s\n" " для реалм (рилм) %s:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Ошибка звонка" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Звонок окончен" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Входящий звонок" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Ответ" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Отклонить" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Звонок приостановлен" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "%s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s предложил запустить видео. Вы принимаете?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Домашняя страница" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - интернет видео телефон" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (по умолчанию)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Мы передали в %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -230,7 +231,7 @@ msgstr "" "Звуковые карты не были обнаружены на этом компьютере.\n" "Вы не сможете отправлять или получать аудио звонки." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Свободный SIP видео-телефон" @@ -386,15 +387,19 @@ msgstr "" "Вы должны перезагрузить linphone для того, чтобы языковые настройки вступили " "в силу." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Нет" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -576,7 +581,7 @@ msgstr "Подтверждение (шаг 2/2)" msgid "Error" msgstr "Ошибка" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "Прерывание" @@ -669,7 +674,7 @@ msgstr "Повесить трубку" msgid "Calling..." msgstr "Звоним..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -706,55 +711,59 @@ msgid "Secured by SRTP" msgstr "Защищённые с помощью SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Защищённые с помощью ZRTP - [знак аутентификации: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Установить непроверенный" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Установить проверенный" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "В конференции" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "Звоним" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Звонок приостановлен" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Звонок закончен." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Передача в прогрессе" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Передача завершена." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Передача неудачна." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Продолжить" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Пауза" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -763,7 +772,7 @@ msgstr "" "Записывается в\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(Пауза)" @@ -862,23 +871,23 @@ msgstr "Воспроизведение" msgid "Let's start Linphone now" msgstr "Давайте сейчас запустим linphone" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "Помощник аудио" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "Помощник аудио" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "Калибровка усиления микрофона" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "Калибровка громкости динамика" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "Записать и проиграть" @@ -1747,69 +1756,69 @@ msgstr "Конфигурирование..." msgid "Please wait while fetching configuration from server..." msgstr "Пожалуйста, подождите пока получается конфигурация с сервера..." -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Готов" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "Конфигурирование" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Поиск назначения для телефонного номера.." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Не получилось принять решение по этому номеру." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Соединение" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Невозможно позвонить" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" "К сожалению, мы достигли максимального количества одновременных звонков" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "контактирует с вами" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "и спросил автоматический ответ." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Изменение параметров звонка..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Соединён." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Звонок отменён" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Невозможно приостановить звонок" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Приостановка текущего звонка..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Идет поиск STUN..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "Сбор локальных кандидатов ICE в прогрессе..." @@ -1865,7 +1874,7 @@ msgstr "Отдых" msgid "Unknown status" msgstr "Неизвестный статус" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1873,7 +1882,7 @@ msgstr "" "Введённый SIP-адрес прокси является недействительным, он должен начинаться с " "\"sip:имя_хоста\"" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1882,126 +1891,127 @@ msgstr "" "Должно выглядеть как sip:имя_пользователя@домен_прокси, как например, sip:" "alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Невозможно зайти как: %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Дистанционный звонок." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Дистанционный звонок..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Предответное проключение." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "Звонок с %s приостановлен." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "На звонок ответил %s - на удержании." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Звонок возобновлён." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "На звонок ответил %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "Несовместимость, проверьте кодеки или параметры безопасности..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Несовместимость медиа-параметров." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Мы возобновили." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "Мы приостановлены другой стороной." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "Звонок был дистанционно обновлён." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Звонок прерван." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Пользователь занят." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Пользователь временно недоступен." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Пользователь не хочет чтобы его беспокоили." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Звонок отклонён." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "Таймаут запроса." -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Переадресован" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Звонок не удался." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Регистрация на %s прошла успешно." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Отмена регистрации на %s завершена." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "время ожидания истекло" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Регистрация на %s не удалась: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "Сервис недоступен, повтор" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Маркер проверки подлинности: %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/sr.po b/po/sr.po index 56f9e5f19..c27c803ee 100644 --- a/po/sr.po +++ b/po/sr.po @@ -8,9 +8,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-13 16:34+0000\n" -"Last-Translator: Мирослав Николић \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/linphone-gtk/" "language/sr/)\n" "Language: sr\n" @@ -142,7 +143,7 @@ msgstr "Покреће помоћника звука" msgid "Run self test and exit 0 if succeed" msgstr "Покреће самоиспробавање и излази 0 ако је успешно" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -156,7 +157,7 @@ msgstr "" "Ако одговорите са не, ова особа ће привремено бити стављена на списак " "забрана." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -165,59 +166,59 @@ msgstr "" "Унесите вашу лозинку за корисничко име %s\n" " на подручју %s:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Грешка позива" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Позив је завршен" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Долазни позив" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Јави се" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Одбиј" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Позив је заустављен" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "од %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s предлаже да започнете видео. Да ли прихватате ?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Веза веб сајта" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Линфон — интернет телефон са снимком" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (основно)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Преселили смо се на %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -225,7 +226,7 @@ msgstr "" "Ниједна звучна картица није откривена на овом рачунару.\n" "Нећете бити у могућности да шаљете или да примате звучне позиве." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Слободан СИП телефон са снимком" @@ -380,15 +381,19 @@ msgid "" msgstr "" "Треба поново да покренете линфон да би нови изабрани језик ступио у дејство." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Ништа" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "СРТП" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ЗРТП" @@ -568,7 +573,7 @@ msgstr "Потврђивање (корак 2/2)" msgid "Error" msgstr "Грешка" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "Завршавам" @@ -661,7 +666,7 @@ msgstr "Прекини" msgid "Calling..." msgstr "Позивам..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -698,55 +703,59 @@ msgid "Secured by SRTP" msgstr "Осигурано СРТП-ом" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Осигурано ЗРТП-ом [потврђивање идентитета: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Непроверено подешавање" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Проверено подешавање" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "На конференцији" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "У позиву" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Заустављен позив" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Позив је завршен." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Пренос је у току" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Пренос је обављен." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Пренос није успео." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Настави" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Застани" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -755,7 +764,7 @@ msgstr "" "Снимам у\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(Паузирано)" @@ -854,23 +863,23 @@ msgstr "Пусти" msgid "Let's start Linphone now" msgstr "Хајде сада да покренемо Линфон" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "Помоћник звука" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "Помоћник звука" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "Дотеривање појачања микрофона" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "Дотеривање јачине звука звучника" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "Снимите и пустите" @@ -1739,68 +1748,68 @@ msgstr "Подешавам..." msgid "Please wait while fetching configuration from server..." msgstr "Сачекајте док довучем подешавања са сервера..." -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Спреман" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "Подешавам" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Тражим одредиште телефонског броја..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Не могу да решим овај број." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Ступам у везу" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Не могу да позовем" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Извините, достигли смо највећи број истовремених позива" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "вам се обраћа" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " и затражени само-одговор." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Мењам параметре позива..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Повезан сам." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Позив је прекинут" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Не могу да зауставим позив" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Заустављам тренутни позив..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "У току је тражење стуна..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "Прикупљање месних ИЦЕ кандидата је у току..." @@ -1856,7 +1865,7 @@ msgstr "На одмору" msgid "Unknown status" msgstr "Непознато стање" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1864,7 +1873,7 @@ msgstr "" "Адреса сип посредника коју сте унели је неисправна, мора почети на „sip:“ за " "којим следи назив домаћина." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1873,126 +1882,127 @@ msgstr "" "Треба да изгледа као „sip:корисник@домен-посредника, као што је „sip:" "alice@example.net“" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Не могу да се пријавим као %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Удаљено звоњење." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Удаљено звоњење..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Ранији медиј." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "Позив са „%s“ је заустављен." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Позив на који је одговорио „%s“ — на чекању." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Позив је настављен." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "На позив је одговорио „%s“." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "Несагласно, проверите кодеке или безбедносна подешавања..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Медијски параметри су несагласни." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Наставили смо." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "Друга страна нас је паузирала." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "Позив је освежен удаљеним." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Позив је завршен." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Корисник је заузет." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Корисник је привремено недоступан." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Корисник не жели да буде узнемираван." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Позив је одбијен." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "Истекло је време захтева." -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Преусмерен" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Позив није успео." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Уписивање на „%s“ је успело." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Исписивање са „%s“ је обављено." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "нема ограничења одговора" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Уписивање на „%s“ није успело: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "Услуга није доступна, поново покушавам" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Симбол потврђивања идентитета је „%s“" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/sv.po b/po/sv.po index b43407cf6..ddee3cf70 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/linphone-gtk/" "language/sv/)\n" "Language: sv\n" @@ -136,7 +137,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -149,72 +150,72 @@ msgstr "" "henne till din kontaktlista?\n" "Om du svarar nej, personen kommer att vara bannlyst." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Samtalet slut" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Inkommande samtal" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Avböj" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Webbsajt" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - en video Internet telefon" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Default)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 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:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "En gratis SIP video-telefon" @@ -368,15 +369,19 @@ 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:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -547,7 +552,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -638,7 +643,7 @@ msgstr "" msgid "Calling..." msgstr "Ringer..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00:00:00" @@ -675,62 +680,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Samtalet slut." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -827,23 +836,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1692,68 +1701,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Redo" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Leta efter telefonnummer för destinationen..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Kan inte nå dett nummer." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Kontaktar" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Kopplad" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "STUN uppslagning pågår..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1809,7 +1818,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1817,7 +1826,7 @@ msgstr "" "SIP proxy adressen som du matade in är inte rätt, adressen måste starta med " "\"sip:\", följd av ett hostnamn" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1825,126 +1834,127 @@ 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:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Kunde inte logga in som %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Ringer hos motparten." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Tidig media" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Samtalet slut." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Användare upptagen." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Användaren temporärt inte tillgänglig." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Användaren vill inte bli störd." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Samtalet avböjdes." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registrering hos %s lyckades." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Avregistrering hos %s lyckades." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "Inget svar inom angiven tid" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrering hos %s mislyckades: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/zh_CN.po b/po/zh_CN.po index 44b01c13b..30e05bb15 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/linphone-" "gtk/language/zh_CN/)\n" "Language: zh_CN\n" @@ -132,7 +133,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -144,66 +145,66 @@ msgstr "" "您是否允许他看到您的在线状态或者将它加为您的联系人允许?\n" "如果您回答否,则会将该人临时性的放入黑名单" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "呼叫结束" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "呼入" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "拒绝" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "网站" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - 互联网视频电话" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (默认)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -211,7 +212,7 @@ msgstr "" "未在此计算机上检测到声卡。\n" "您无法发送或接收音频呼叫。" -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "免费的 SIP 视频电话" @@ -365,15 +366,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "您需要重启 linphone 以使语言选择生效。" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -543,7 +548,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -634,7 +639,7 @@ msgstr "" msgid "Calling..." msgstr "正在呼叫..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -671,62 +676,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "通话结束。" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -823,23 +832,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1687,68 +1696,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "就绪" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "查询电话号码目的地..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "该号码无法解析。" #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "联系中" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "正在联系您" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " 并询问了自动回答。" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "已连接。" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "正在进行 Stun 查找..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1804,13 +1813,13 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "您输入的 SIP 代理地址无效,它必须是以“sip:”开头,并紧随一个主机名。" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1818,126 +1827,127 @@ msgstr "" "您输入的地址无效。\n" "它应具有“sip:用户名@代理域”的形式,例如 sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "无法登录为 %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "响铃。" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "通话结束。" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "被叫正忙。" -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "您呼叫的用户暂时无法接通。" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "用户已开启免打扰功能。" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "呼叫被拒绝。" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "已重定向" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "呼叫失败。" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "成功注册到 %s" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "已在 %s 解除注册。" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "没有响应,超时" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "注册到 %s 失败: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/zh_TW.po b/po/zh_TW.po index cf24e3fc7..598b7acf3 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/" "linphone-gtk/language/zh_TW/)\n" "Language: zh_TW\n" @@ -133,7 +134,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -145,66 +146,66 @@ msgstr "" "您是否要允許他看見您的上線狀態或將他加入您的連絡人清單?\n" "如果您回答否,這個人會被暫時列入黑名單。" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "通話已結束" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "來電" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "接聽" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "拒接" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "網站連結" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - 網路視訊電話" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (預設值)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "我們被轉接到 %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -212,7 +213,7 @@ msgstr "" "在這臺電腦中偵測不到音效卡。\n" "您將無法傳送或接收語音電話。" -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "自由的 SIP 視訊電話" @@ -366,15 +367,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "您需要重新啟動 linphone 才能讓新選擇的語言生效。" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -544,7 +549,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -635,7 +640,7 @@ msgstr "" msgid "Calling..." msgstr "播打..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -672,62 +677,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "通話中" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "暫停通話" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "通話結束。" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "繼續" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "暫停" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -824,23 +833,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1688,68 +1697,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "準備就緒" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "尋找電話號碼目的端..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "無法解析這個號碼。" #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "正在連絡" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "無法通話" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "抱歉,我們已達瀏同步通話的最大數目" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "正在連絡您" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "並要求自動接聽。" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "修改通話參數..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "已連線。" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "通話已放棄" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "無法暫停通話" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "暫停目前的通話..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "正在進行 Stun 搜尋..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1805,14 +1814,14 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" "您輸入的 sip 代理位址是無效的,它必須要以「sip:」開頭,後面接主機名稱。" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1820,126 +1829,127 @@ msgstr "" "您輸入的 sip 身分是無效的。\n" "它應該看起來像 sip:使用者名稱@代理網域,像是 sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "無法以 %s 登入" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "遠端響鈴。" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "遠端響鈴..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "早期媒體。" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "和 %s 的通話已暫停。" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "通話由 %s 接聽 - 保留中。" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "通話已繼續。" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "通話由 %s 接聽。" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "通話已終止。" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "使用者現正忙碌。" -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "使用者暫時無法聯繫。" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "使用者不想要被打擾。" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "通話被拒接。" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "已重新導向" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "通話失敗。" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "在 %s 註冊成功。" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "在 %s 取消註冊完成。" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "沒有回應逾時" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "在 %s 註冊失敗:%s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." From dda9ac6827416fd6e25189db0027c10c24ec3425 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 17 Feb 2015 13:06:21 +0100 Subject: [PATCH 425/496] Updated oRTP and ms2 --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index b1acdb3a5..7c9ff4ca0 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit b1acdb3a58f34e1b333ed1dbfaa6ae0aab09861f +Subproject commit 7c9ff4ca0e597cc36e1ddf14dacfb4bf7a239d74 diff --git a/oRTP b/oRTP index 22b81144d..3413234be 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 22b81144d313b58cfe53c1c9aa71dcf22e1f43c2 +Subproject commit 3413234be817074e276eb9157b5e756f3e4d6fd0 From b4d95b057f0723c10b28ce4526d55fb6bbd4174d Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 17 Feb 2015 14:06:37 +0100 Subject: [PATCH 426/496] Add pull-transifex and push-transifex --- Makefile.am | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Makefile.am b/Makefile.am index 4f3f46860..b392c23e9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -168,6 +168,15 @@ filelist: zip fi \ done +### LOCALIZATION + +pull-transifex: + tx pull -af + $(MAKE) -C po update-po + +push-transifex: + tx push -s -t -f + ### WINDOWS From 3d99556b61936acc56bb797c0d5bf964c2c00fd3 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 17 Feb 2015 14:16:38 +0100 Subject: [PATCH 427/496] Fix WP8 no tunnel project --- build/wp8/LibLinphone_no_tunnel.vcxproj | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build/wp8/LibLinphone_no_tunnel.vcxproj b/build/wp8/LibLinphone_no_tunnel.vcxproj index 1bc745f52..f6e3ac7bd 100644 --- a/build/wp8/LibLinphone_no_tunnel.vcxproj +++ b/build/wp8/LibLinphone_no_tunnel.vcxproj @@ -1,3 +1,4 @@ +wbelle_sip  @@ -64,7 +65,7 @@ Console false false - belle-sip.lib;mediastreamer2.lib;ws2_32.lib;ortp.lib;gsm.lib;speex.lib;speexdsp.lib;%(AdditionalDependencies) + belle-sip_no_tunnel.lib;mediastreamer2.lib;ws2_32.lib;ortp.lib;gsm.lib;speex.lib;speexdsp.lib;%(AdditionalDependencies) $(SolutionDir)$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib @@ -213,4 +214,4 @@ - \ No newline at end of file + From cae4fe4e069755a4d2ab708017f8e4bc99a8dbfb Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 17 Feb 2015 14:19:19 +0100 Subject: [PATCH 428/496] Fix typo in WP8 project --- build/wp8/LibLinphone_no_tunnel.vcxproj | 1 - 1 file changed, 1 deletion(-) diff --git a/build/wp8/LibLinphone_no_tunnel.vcxproj b/build/wp8/LibLinphone_no_tunnel.vcxproj index f6e3ac7bd..339b301f2 100644 --- a/build/wp8/LibLinphone_no_tunnel.vcxproj +++ b/build/wp8/LibLinphone_no_tunnel.vcxproj @@ -1,4 +1,3 @@ -wbelle_sip  From 62a2dd1e84ba7c922dbb29baecffec8e29172dda Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 17 Feb 2015 15:31:43 +0100 Subject: [PATCH 429/496] Fix issue using _no_tunnel prefix --- build/wp8/LibLinphone_no_tunnel.vcxproj | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/build/wp8/LibLinphone_no_tunnel.vcxproj b/build/wp8/LibLinphone_no_tunnel.vcxproj index 339b301f2..3c88f6b05 100644 --- a/build/wp8/LibLinphone_no_tunnel.vcxproj +++ b/build/wp8/LibLinphone_no_tunnel.vcxproj @@ -64,7 +64,7 @@ Console false false - belle-sip_no_tunnel.lib;mediastreamer2.lib;ws2_32.lib;ortp.lib;gsm.lib;speex.lib;speexdsp.lib;%(AdditionalDependencies) + belle-sip_no_tunnel.lib;mediastreamer2.lib;ws2_32.lib;ortp.lib;gsm.lib;speex.lib;speexdsp.lib;libxml2.lib;sqlite.lib;zlib.lib;%(AdditionalDependencies) $(SolutionDir)$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib @@ -82,6 +82,9 @@ true + + false + @@ -213,4 +216,4 @@ - + \ No newline at end of file From a29ccb43e2b226fd53475957b3b09ebf8e2025e2 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Tue, 17 Feb 2015 15:44:18 +0100 Subject: [PATCH 430/496] Link android project with zlib --- build/android/Android.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build/android/Android.mk b/build/android/Android.mk index 9cf269871..fbdeff652 100755 --- a/build/android/Android.mk +++ b/build/android/Android.mk @@ -85,7 +85,8 @@ LOCAL_CFLAGS += \ -DHAVE_CONFIG_H \ -DLIBLINPHONE_VERSION=\"$(LIBLINPHONE_VERSION)\" \ -DLINPHONE_PLUGINS_DIR=\"\\tmp\" \ - -DUSE_BELLESIP + -DUSE_BELLESIP \ + -DHAVE_ZLIB LOCAL_CFLAGS += -DIN_LINPHONE @@ -118,7 +119,7 @@ LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/../../externals/libxml2/include \ $(LOCAL_PATH)/../../externals/build/libxml2 -LOCAL_LDLIBS += -llog -ldl +LOCAL_LDLIBS += -llog -ldl -lz LOCAL_STATIC_LIBRARIES := \ cpufeatures \ From d4670976dfd6880949acfd8d03591fb722285831 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Tue, 17 Feb 2015 15:44:56 +0100 Subject: [PATCH 431/496] Add JNI function mediaInProgress --- coreapi/linphonecore_jni.cc | 6 ++++++ java/common/org/linphone/core/LinphoneCall.java | 11 +++++++++++ java/impl/org/linphone/core/LinphoneCallImpl.java | 4 ++++ 3 files changed, 21 insertions(+) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index b562cf31a..3e895a6ce 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -2747,6 +2747,12 @@ extern "C" jlong Java_org_linphone_core_LinphoneCallImpl_getPlayer(JNIEnv *env, return (jlong)linphone_call_get_player((LinphoneCall *)callPtr); } +extern "C" jboolean Java_org_linphone_core_LinphoneCallImpl_mediaInProgress( JNIEnv* env + ,jobject thiz + ,jlong ptr) { + return (jboolean) linphone_call_media_in_progress((LinphoneCall*)ptr); +} + //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 404fdbcf0..cd74b6d07 100644 --- a/java/common/org/linphone/core/LinphoneCall.java +++ b/java/common/org/linphone/core/LinphoneCall.java @@ -268,6 +268,16 @@ public interface LinphoneCall { void setAuthenticationTokenVerified(boolean verified); boolean isInConference(); + + /** + * 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. + * @return TRUE if media is busy in establishing the connection, FALSE otherwise. + **/ + boolean mediaInProgress(); float getPlayVolume(); @@ -349,4 +359,5 @@ public interface LinphoneCall { * @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 b2cad202c..de9e25364 100644 --- a/java/impl/org/linphone/core/LinphoneCallImpl.java +++ b/java/impl/org/linphone/core/LinphoneCallImpl.java @@ -43,6 +43,7 @@ class LinphoneCallImpl implements LinphoneCall { private native int getDuration(long nativePtr); private native float getCurrentQuality(long nativePtr); private native float getAverageQuality(long nativePtr); + private native boolean mediaInProgress(long nativePtr); /* * This method must always be called from JNI, nothing else. @@ -167,6 +168,8 @@ class LinphoneCallImpl implements LinphoneCall { return params.localConferenceMode(); } + public boolean mediaInProgress() { return mediaInProgress(nativePtr);} + @Override public String toString() { return "Call " + nativePtr; @@ -251,4 +254,5 @@ class LinphoneCallImpl implements LinphoneCall { public LinphonePlayer getPlayer() { return new LinphonePlayerImpl(getPlayer(nativePtr)); } + } From 835978a333b63f1e61c4b56fe495769e52095d27 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 17 Feb 2015 16:16:37 +0100 Subject: [PATCH 432/496] Removed yet another reference to belle_sip with tunnel in wp8 no tunnel project --- build/wp8/LibLinphone_no_tunnel.vcxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/wp8/LibLinphone_no_tunnel.vcxproj b/build/wp8/LibLinphone_no_tunnel.vcxproj index 3c88f6b05..447253440 100644 --- a/build/wp8/LibLinphone_no_tunnel.vcxproj +++ b/build/wp8/LibLinphone_no_tunnel.vcxproj @@ -177,7 +177,7 @@ {1db09afe-fc9b-472e-a746-0e33f8ef8883} - + {4c225a82-800b-427b-ba7b-61686a9b347f} From db99a3b71cad85ff996cf642d959f083ff75a004 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 17 Feb 2015 16:48:15 +0100 Subject: [PATCH 433/496] update ortp --- oRTP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oRTP b/oRTP index 3413234be..cd468445a 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 3413234be817074e276eb9157b5e756f3e4d6fd0 +Subproject commit cd468445a4f276f54ee9f9948712855f3cd1a0dc From e1291ba3ea39d45ec565b3072242e4878ab441d8 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 17 Feb 2015 17:04:57 +0100 Subject: [PATCH 434/496] rework a bit dtls --- coreapi/linphonecall.c | 69 +++++++++++++++++++----------------------- coreapi/sal.c | 5 +++ 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 8cd0c1352..afcd516e5 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2313,7 +2313,20 @@ static void configure_rtp_session_for_rtcp_xr(LinphoneCore *lc, LinphoneCall *ca } rtp_session_configure_rtcp_xr(session, ¤tconfig); } - +void static start_dtls( MSMediaStreamSessions *sessions, const SalStreamDescription *sd,const SalStreamDescription *remote) { + if (sal_stream_description_has_dtls(sd) == TRUE) { + /*DTLS*/ + SalDtlsRole salRole = sd->dtls_role; + if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ + /* give the peer certificate fingerprint to dtls context */ + ms_dtls_srtp_set_peer_fingerprint(sessions->dtls_context, remote->dtls_fingerprint); + ms_dtls_srtp_set_role(sessions->dtls_context, (salRole == SalDtlsRoleIsClient)?MSDtlsSrtpRoleIsClient:MSDtlsSrtpRoleIsServer); /* set the role to client */ + ms_dtls_srtp_start(sessions->dtls_context); /* then start the engine, it will send the DTLS client Hello */ + } else { + ms_warning("unable to start DTLS engine on stream session [%p], Dtls role in resulting media description is invalid",sessions); + } + } +} static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, bool_t send_ringbacktone, bool_t use_arc){ LinphoneCore *lc=call->core; LpConfig* conf; @@ -2436,25 +2449,9 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b if (send_ringbacktone){ setup_ring_player(lc,call); } - - if (sal_stream_description_has_dtls(stream) == TRUE) { - /* DTLS engine was already initialised during stream init. Before starting it we must be sure that the role(client or server) is set. - * Role may have already been set to server if we initiate the call and already received a packet from peer, in that case do nothing */ - SalDtlsRole salRole = stream->dtls_role; - if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ - /* give the peer certificate fingerprint to dtls context */ - SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); - ms_dtls_srtp_set_peer_fingerprint(call->audiostream->ms.sessions.dtls_context, remote_desc->streams[0].dtls_fingerprint); - } else { - ms_warning("unable to start DTLS engine on audiostream, Dtls role in resulting media description is invalid\n"); - } - if (salRole == SalDtlsRoleIsClient) { /* local endpoint is client */ - ms_dtls_srtp_set_role(call->audiostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsClient); /* set the role to client */ - ms_dtls_srtp_start(call->audiostream->ms.sessions.dtls_context); /* then start the engine, it will send the DTLS client Hello */ - } else if (salRole == SalDtlsRoleIsServer) { /* local endpoint is server */ - ms_dtls_srtp_set_role(call->audiostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsServer); /* this may complete the server setup */ - /* no need to start engine, we are waiting for DTLS Client Hello */ - } + { + SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); + start_dtls(&call->audiostream->ms.sessions,stream,&remote_desc->streams[0]); } if (call->params->in_conference){ @@ -2582,24 +2579,11 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu used_pt, linphone_core_get_video_jittcomp(lc), cam); } } - if (sal_stream_description_has_dtls(vstream) == TRUE) { - /*DTLS*/ - SalDtlsRole salRole = vstream->dtls_role; - if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ - /* give the peer certificate fingerprint to dtls context */ - SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); - ms_dtls_srtp_set_peer_fingerprint(call->videostream->ms.sessions.dtls_context, remote_desc->streams[1].dtls_fingerprint); - } else { - ms_warning("unable to start DTLS engine on videostream, Dtls role in resulting media description is invalid\n"); - } - if (salRole == SalDtlsRoleIsClient) { /* local endpoint is client */ - ms_dtls_srtp_set_role(call->videostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsClient); /* set the role to client */ - ms_dtls_srtp_start(call->videostream->ms.sessions.dtls_context); /* then start the engine, it will send the DTLS client Hello */ - } else if (salRole == SalDtlsRoleIsServer) { /* local endpoint is server */ - ms_dtls_srtp_set_role(call->videostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsServer); /* this may complete the server setup */ - /* no need to start engine, we are waiting for DTLS Client Hello */ - } + { + SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); + start_dtls(&call->videostream->ms.sessions,vstream,&remote_desc->streams[1]); } + }else ms_warning("No video stream accepted."); }else{ ms_message("No valid video stream defined."); @@ -2710,6 +2694,10 @@ void linphone_call_update_crypto_parameters(LinphoneCall *call, SalMediaDescript if (call->audiostream && local_st_desc && old_stream && new_stream && update_stream_crypto_params(call,local_st_desc,old_stream,new_stream,&call->audiostream->ms)){ } + if (call->audiostream) { + SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); + start_dtls(&call->audiostream->ms.sessions,&new_md->streams[0],&remote_desc->streams[0]); + } #ifdef VIDEO_ENABLED local_st_desc = sal_media_description_find_secure_stream_of_type(call->localdesc, SalVideo); @@ -2718,6 +2706,10 @@ void linphone_call_update_crypto_parameters(LinphoneCall *call, SalMediaDescript if (call->videostream && local_st_desc && old_stream && new_stream && update_stream_crypto_params(call,local_st_desc,old_stream,new_stream,&call->videostream->ms)){ } + if (call->videostream) { + SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); + start_dtls(&call->videostream->ms.sessions,&new_md->streams[1],&remote_desc->streams[1]); + } #endif } @@ -3285,7 +3277,8 @@ static void handle_ice_events(LinphoneCall *call, OrtpEvent *ev){ switch (ice_session_state(call->ice_session)) { case IS_Completed: ice_session_select_candidates(call->ice_session); - if (ice_session_role(call->ice_session) == IR_Controlling) { + if (ice_session_role(call->ice_session) == IR_Controlling + && lp_config_get_int(call->core->config, "sip", "update_call_when_ice_completed", TRUE)) { linphone_core_update_call(call->core, call, params); } change_ice_media_destinations(call); diff --git a/coreapi/sal.c b/coreapi/sal.c index ea26b25d8..11934f572 100644 --- a/coreapi/sal.c +++ b/coreapi/sal.c @@ -318,6 +318,11 @@ int sal_stream_description_equals(const SalStreamDescription *sd1, const SalStre if (sd1->ptime != sd2->ptime) result |= SAL_MEDIA_DESCRIPTION_CODEC_CHANGED; if (sd1->dir != sd2->dir) result |= SAL_MEDIA_DESCRIPTION_CODEC_CHANGED; + /*DTLS*/ + if (sd1->dtls_role != sd2->dtls_role) result |= SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED; + if (strcmp(sd1->dtls_fingerprint, sd2->dtls_fingerprint) != 0) result |= SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED; + + return result; } From 097cae673a4a8abd554d6ad58aa89999689b57b4 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 17 Feb 2015 17:23:27 +0100 Subject: [PATCH 435/496] robustize tests for windows --- coreapi/remote_provisioning.c | 4 ++-- tester/call_tester.c | 10 +++++----- tester/flexisip_tester.c | 8 ++++++-- tester/setup_tester.c | 14 +++++++------- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/coreapi/remote_provisioning.c b/coreapi/remote_provisioning.c index fd5d2eb92..901170eac 100644 --- a/coreapi/remote_provisioning.c +++ b/coreapi/remote_provisioning.c @@ -62,9 +62,9 @@ static void linphone_remote_provisioning_apply(LinphoneCore *lc, const char *xml int linphone_remote_provisioning_load_file( LinphoneCore* lc, const char* file_path){ int status = -1; - FILE* f = fopen(file_path, "r"); + FILE* f = fopen(file_path, "rb"); - if( f ){ + if ( f ){ long fsize; char* provisioning; diff --git a/tester/call_tester.c b/tester/call_tester.c index 9fe4c5913..237ec04ff 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -3072,7 +3072,7 @@ static void multiple_early_media(void) { marie2_call=linphone_core_get_current_call(marie2->lc); /*wait a bit that streams are established*/ - wait_for_list(lcs,&dummy,1,3000); + wait_for_list(lcs,&dummy,1,6000); CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>70); CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>70); CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie2_call)->download_bandwidth>70); @@ -3085,18 +3085,18 @@ static void multiple_early_media(void) { CU_ASSERT_TRUE(wait_for_list(lcs,&marie2->stat.number_of_LinphoneCallEnd,1,1000)); /*wait a bit that streams are established*/ - wait_for_list(lcs,&dummy,1,1000); + wait_for_list(lcs,&dummy,1,3000); CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>71); CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>71); /*send an INFO in reverse side to check that dialogs are properly established*/ info=linphone_core_create_info_message(marie1->lc); linphone_call_send_info_message(marie1_call,info); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_inforeceived,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_inforeceived,1,3000)); linphone_core_terminate_all_calls(pauline->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallEnd,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallEnd,1,3000)); ms_list_free(lcs); linphone_core_manager_destroy(marie1); diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index 7f4680639..948df8fba 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -464,7 +464,7 @@ static void call_forking_with_push_notification_multiple(void){ linphone_core_manager_destroy(marie2); } -void call_forking_not_responded(void){ +static void call_forking_not_responded(void){ LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_tcp_rc"); LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* marie2 = linphone_core_manager_new( "marie_rc"); @@ -551,7 +551,7 @@ static void early_media_call_forking(void) { marie2_call=linphone_core_get_current_call(marie2->lc); /*wait a bit that streams are established*/ - wait_for_list(lcs,&dummy,1,3000); + wait_for_list(lcs,&dummy,1,6000); CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>60 && linphone_call_get_audio_stats(pauline_call)->download_bandwidth<99); CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>60 @@ -663,6 +663,9 @@ static void call_with_ipv6(void) { LinphoneCoreManager* pauline; LinphoneCall *pauline_call; + /*calling ortp_init() here is done to have WSAStartup() done, otherwise liblinphone_tester_ipv6_available() will not work.*/ + ortp_init(); + if (!liblinphone_tester_ipv6_available()){ ms_warning("Call with ipv6 not tested, no ipv6 connectivity"); return; @@ -708,6 +711,7 @@ static void call_with_ipv6(void) { if (leaked_objects>0){ belle_sip_object_dump_active_objects(); } + ortp_exit(); } test_t flexisip_tests[] = { diff --git a/tester/setup_tester.c b/tester/setup_tester.c index bab077623..06d734d6a 100644 --- a/tester/setup_tester.c +++ b/tester/setup_tester.c @@ -96,9 +96,8 @@ static void linphone_interpret_url_test() } static void linphone_lpconfig_from_buffer(){ - - static const char* buffer = "[buffer]\ntest=ok"; - static const char* buffer_linebreaks = "[buffer_linebreaks]\n\n\n\r\n\n\r\ntest=ok"; + const char* buffer = "[buffer]\ntest=ok"; + const char* buffer_linebreaks = "[buffer_linebreaks]\n\n\n\r\n\n\r\ntest=ok"; LpConfig* conf; conf = lp_config_new_from_buffer(buffer); @@ -112,7 +111,7 @@ static void linphone_lpconfig_from_buffer(){ static void linphone_lpconfig_from_buffer_zerolen_value(){ /* parameters that have no value should return NULL, not "". */ - static const char* zerolen = "[test]\nzero_len=\nnon_zero_len=test"; + const char* zerolen = "[test]\nzero_len=\nnon_zero_len=test"; LpConfig* conf; conf = lp_config_new_from_buffer(zerolen); @@ -128,7 +127,7 @@ static void linphone_lpconfig_from_buffer_zerolen_value(){ static void linphone_lpconfig_from_file_zerolen_value(){ /* parameters that have no value should return NULL, not "". */ - static const char* zero_rc_file = "zero_length_params_rc"; + const char* zero_rc_file = "zero_length_params_rc"; char* rc_path = ms_strdup_printf("%s/rcfiles/%s", liblinphone_tester_file_prefix, zero_rc_file); LpConfig* conf; @@ -144,11 +143,12 @@ static void linphone_lpconfig_from_file_zerolen_value(){ lp_config_set_string(conf, "test", "non_zero_len", ""); /* should remove "non_zero_len" */ CU_ASSERT_STRING_EQUAL(lp_config_get_string(conf,"test","non_zero_len","LOL"), "LOL"); + ms_free(rc_path); lp_config_destroy(conf); } static void linphone_lpconfig_from_xml_zerolen_value(){ - static const char* zero_xml_file = "remote_zero_length_params_rc"; + const char* zero_xml_file = "remote_zero_length_params_rc"; char* xml_path = ms_strdup_printf("%s/rcfiles/%s", liblinphone_tester_file_prefix, zero_xml_file); LpConfig* conf; @@ -165,7 +165,7 @@ static void linphone_lpconfig_from_xml_zerolen_value(){ CU_ASSERT_STRING_EQUAL(lp_config_get_string(conf,"test","non_zero_len","LOL"), "LOL"); linphone_core_manager_destroy(mgr); - + ms_free(xml_path); } void linphone_proxy_config_address_equal_test() { From 006e1ead57498ef488b53eb0988fde8b8ef9dd3c Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Tue, 17 Feb 2015 17:44:02 +0100 Subject: [PATCH 436/496] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 7c9ff4ca0..ef83b7a28 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 7c9ff4ca0e597cc36e1ddf14dacfb4bf7a239d74 +Subproject commit ef83b7a2899bc838fe9a490afbb31ae017c7d810 From 5c30b4d6c091ae044b1e3b1e0b2d6d3270e548d1 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 17 Feb 2015 18:21:52 +0100 Subject: [PATCH 437/496] skip call forking with multicast tests on windows, as it is not possible on this platform --- tester/multicast_call_tester.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tester/multicast_call_tester.c b/tester/multicast_call_tester.c index e5a05c11e..356cf3e74 100644 --- a/tester/multicast_call_tester.c +++ b/tester/multicast_call_tester.c @@ -96,6 +96,15 @@ static void early_media_with_multicast_base(bool_t video) { int begin; LinphoneVideoPolicy marie_policy, pauline_policy; LpConfig *marie_lp; + +#ifdef WIN32 + /* + * "Do not call IP_ADD_MEMBERSHIP with the same group more than once on the same network interface." + * https://msdn.microsoft.com/en-us/library/windows/desktop/ms739174%28v=vs.85%29.aspx + */ + ms_warning("Call forking with multicast can't be tested on windows, test skipped"); + return; +#endif belle_sip_object_enable_leak_detector(TRUE); begin=belle_sip_object_get_object_count(); From 41a3e1e06db3268eeee713fc4a06b57c1b2b2a38 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 17 Feb 2015 23:43:20 +0100 Subject: [PATCH 438/496] rework multicast. It is not necessary to bind to the multicast address. 0.0.0.0 just works while the binding to the multicast address is rejected on windows fixes reading provisionning config file from disk on windows. --- coreapi/linphonecall.c | 27 ++++++++++++------- coreapi/private.h | 2 ++ coreapi/remote_provisioning.c | 49 +++++++++++++++++++---------------- mediastreamer2 | 2 +- oRTP | 2 +- tester/call_tester.c | 2 +- 6 files changed, 49 insertions(+), 35 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index afcd516e5..cbf2d4362 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -555,14 +555,11 @@ static void transfer_already_assigned_payload_types(SalMediaDescription *old, Sa static const char *linphone_call_get_bind_ip_for_stream(LinphoneCall *call, int stream_index){ const char *bind_ip=call->af==AF_INET6 ? "::0" : "0.0.0.0"; - + if (stream_index<2 && call->media_ports[stream_index].multicast_ip[0]!='\0'){ if (call->dir==LinphoneCallOutgoing){ - /*as multicast sender, we must decide a local interface to use to send multicast, and bind to it*/ + /*as multicast sender, we must decide a local interface to use to send multicast, and bind to it*/ bind_ip=call->localip; - }else{ - /*as receiver, just bind to the multicast address*/ - bind_ip=call->media_ports[stream_index].multicast_ip; } } return bind_ip; @@ -1003,8 +1000,8 @@ void linphone_call_set_compatible_incoming_call_parameters(LinphoneCall *call, c if (md->streams[i].rtp_addr[i]!='\0' && ms_is_multicast(md->streams[i].rtp_addr)) { strncpy(call->media_ports[i].multicast_ip,md->streams[i].rtp_addr,sizeof(call->media_ports[i].multicast_ip)); ms_message("Disabling rtcp on call [%p], stream [%i] because of multicast",call,i); - call->media_ports[i].rtp_port=md->streams[i].rtp_port; - call->media_ports[i].rtcp_port=0; + call->media_ports[i].mcast_rtp_port=md->streams[i].rtp_port; + call->media_ports[i].mcast_rtcp_port=0; } } } @@ -1844,7 +1841,12 @@ int linphone_call_prepare_ice(LinphoneCall *call, bool_t incoming_offer){ return 0; } - +/*eventually join to a multicast group if told to do so*/ +static void linphone_call_join_multicast_group(LinphoneCall *call, int stream_index, MediaStream *ms){ + if (call->media_ports[stream_index].multicast_ip[stream_index]!='\0' && call->media_ports[stream_index].mcast_rtp_port!=0){ + media_stream_join_multicast_group(ms, call->media_ports[stream_index].multicast_ip); + } +} void linphone_call_init_audio_stream(LinphoneCall *call){ LinphoneCore *lc=call->core; @@ -1859,7 +1861,10 @@ void linphone_call_init_audio_stream(LinphoneCall *call){ if (call->audiostream != NULL) return; if (call->sessions[0].rtp_session==NULL){ call->audiostream=audiostream=audio_stream_new2(linphone_call_get_bind_ip_for_stream(call,0), - call->media_ports[0].rtp_port, call->media_ports[0].rtcp_port); + call->media_ports[0].mcast_rtp_port ? call->media_ports[0].mcast_rtp_port : call->media_ports[0].rtp_port, + call->media_ports[0].mcast_rtcp_port ? call->media_ports[0].mcast_rtcp_port : call->media_ports[0].rtcp_port); + linphone_call_join_multicast_group(call, 0, &audiostream->ms); + cname = linphone_address_as_string_uri_only(call->me); audio_stream_set_rtcp_information(call->audiostream, cname, rtcp_tool); ms_free(cname); @@ -1965,7 +1970,9 @@ void linphone_call_init_video_stream(LinphoneCall *call){ if (call->sessions[1].rtp_session==NULL){ call->videostream=video_stream_new2(linphone_call_get_bind_ip_for_stream(call,1), - call->media_ports[1].rtp_port,call->media_ports[1].rtcp_port); + call->media_ports[1].mcast_rtp_port>0 ? call->media_ports[1].mcast_rtp_port : call->media_ports[1].rtp_port, + call->media_ports[1].mcast_rtcp_port>0 ? call->media_ports[1].mcast_rtcp_port : call->media_ports[1].rtcp_port); + linphone_call_join_multicast_group(call, 1, &call->videostream->ms); cname = linphone_address_as_string_uri_only(call->me); video_stream_set_rtcp_information(call->videostream, cname, rtcp_tool); ms_free(cname); diff --git a/coreapi/private.h b/coreapi/private.h index 15083943e..d5a59d85f 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -203,6 +203,8 @@ typedef struct StunCandidate{ typedef struct _PortConfig{ char multicast_ip[LINPHONE_IPADDR_SIZE]; + int mcast_rtp_port; + int mcast_rtcp_port; int rtp_port; int rtcp_port; }PortConfig; diff --git a/coreapi/remote_provisioning.c b/coreapi/remote_provisioning.c index fd5d2eb92..5562f65db 100644 --- a/coreapi/remote_provisioning.c +++ b/coreapi/remote_provisioning.c @@ -60,33 +60,38 @@ static void linphone_remote_provisioning_apply(LinphoneCore *lc, const char *xml , error_msg); } +static char *load_file_content(const char *path){ + FILE *f=fopen(path,"rb"); + size_t bufsize=2048; + size_t step=bufsize; + size_t pos=0; + size_t count; + char *buffer=ms_malloc(bufsize+1); + if (!f) { + ms_error("load_file_content(): could not open [%s]",path); + return NULL; + } + while((count=fread(buffer+pos, 1, step, f))>0){ + pos+=count; + if (pos+step>=bufsize){ + bufsize*=2; + buffer=ms_realloc(buffer, bufsize+1); + } + } + buffer[pos]='\0'; + fclose(f); + return buffer; +} + int linphone_remote_provisioning_load_file( LinphoneCore* lc, const char* file_path){ int status = -1; - FILE* f = fopen(file_path, "r"); + char* provisioning=load_file_content(file_path); - if( f ){ - long fsize; - char* provisioning; - - fseek(f, 0, SEEK_END); - fsize = ftell(f); - fseek(f, 0, SEEK_SET); - - provisioning = ms_malloc(fsize + 1); - provisioning[fsize]='\0'; - if (fread(provisioning, fsize, 1, f)==0){ - ms_error("Could not read xml provisioning file from %s",file_path); - status=-1; - }else{ - linphone_remote_provisioning_apply(lc, provisioning); - status = 0; - } + if (provisioning){ + linphone_remote_provisioning_apply(lc, provisioning); + status = 0; ms_free(provisioning); - fclose(f); - } else { - ms_error("Couldn't open file %s for provisioning", file_path); } - return status; } diff --git a/mediastreamer2 b/mediastreamer2 index ef83b7a28..acca89ed2 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit ef83b7a2899bc838fe9a490afbb31ae017c7d810 +Subproject commit acca89ed2e726ac53eddce9ffbfd378ea0c9bf9f diff --git a/oRTP b/oRTP index cd468445a..cd3f64ec0 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit cd468445a4f276f54ee9f9948712855f3cd1a0dc +Subproject commit cd3f64ec021534413f247b2f0185d9e934348529 diff --git a/tester/call_tester.c b/tester/call_tester.c index 9fe4c5913..ced4de373 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -3272,7 +3272,7 @@ static void call_with_in_dialog_codec_change_base(bool_t no_sdp) { CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallUpdatedByRemote,1)); CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); CU_ASSERT_STRING_EQUAL("PCMA",linphone_payload_type_get_mime_type(linphone_call_params_get_used_audio_codec(linphone_call_get_current_params(linphone_core_get_current_call(marie->lc))))); - wait_for_until(marie->lc, pauline->lc, &dummy, 1, 3000); + wait_for_until(marie->lc, pauline->lc, &dummy, 1, 5000); CU_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(marie->lc))->download_bandwidth>70); CU_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline->lc))->download_bandwidth>70); From 338f0339b7554bb3b2e8a85472ea94f50f89cbc4 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 17 Feb 2015 23:48:10 +0100 Subject: [PATCH 439/496] restore correct version of ms2 and ortp after git bug --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 7c9ff4ca0..acca89ed2 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 7c9ff4ca0e597cc36e1ddf14dacfb4bf7a239d74 +Subproject commit acca89ed2e726ac53eddce9ffbfd378ea0c9bf9f diff --git a/oRTP b/oRTP index cd468445a..cd3f64ec0 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit cd468445a4f276f54ee9f9948712855f3cd1a0dc +Subproject commit cd3f64ec021534413f247b2f0185d9e934348529 From 56f89bbbaa20d5f911c631a6151beb74ab670539 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 18 Feb 2015 00:16:46 +0100 Subject: [PATCH 440/496] update ms2 and ortp. All multicast tests are passed on windows --- mediastreamer2 | 2 +- oRTP | 2 +- tester/multicast_call_tester.c | 9 --------- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index acca89ed2..d1684034e 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit acca89ed2e726ac53eddce9ffbfd378ea0c9bf9f +Subproject commit d1684034e44781ca71a107d7d2b6db626a3ab993 diff --git a/oRTP b/oRTP index cd3f64ec0..908c31ca7 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit cd3f64ec021534413f247b2f0185d9e934348529 +Subproject commit 908c31ca7f5f251e7d2d3db0318a41ef4d66e1fb diff --git a/tester/multicast_call_tester.c b/tester/multicast_call_tester.c index 356cf3e74..e5a05c11e 100644 --- a/tester/multicast_call_tester.c +++ b/tester/multicast_call_tester.c @@ -96,15 +96,6 @@ static void early_media_with_multicast_base(bool_t video) { int begin; LinphoneVideoPolicy marie_policy, pauline_policy; LpConfig *marie_lp; - -#ifdef WIN32 - /* - * "Do not call IP_ADD_MEMBERSHIP with the same group more than once on the same network interface." - * https://msdn.microsoft.com/en-us/library/windows/desktop/ms739174%28v=vs.85%29.aspx - */ - ms_warning("Call forking with multicast can't be tested on windows, test skipped"); - return; -#endif belle_sip_object_enable_leak_detector(TRUE); begin=belle_sip_object_get_object_count(); From d69838771a0396c3b390e4768c8e5a717b9952af Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 18 Feb 2015 00:20:01 +0100 Subject: [PATCH 441/496] avoid unnecessary computations in call with file player --- tester/call_tester.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index ce68337aa..42068f327 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2182,7 +2182,7 @@ static void call_with_file_player(void) { } /* This assert should be modified to be at least as long as the hello8000.wav file */ - CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&marie->stat.number_of_player_eof,1,30000)); + CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&marie->stat.number_of_player_eof,1,23000)); /*just to sleep*/ linphone_core_terminate_all_calls(marie->lc); From d80ed0f2a3f1dba5014f98a683e61a721424b50f Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Wed, 18 Feb 2015 10:51:05 +0100 Subject: [PATCH 442/496] Fix liblinphone tester --- build/android/liblinphone_tester.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/android/liblinphone_tester.mk b/build/android/liblinphone_tester.mk index 9f1ab7408..d62f055d8 100644 --- a/build/android/liblinphone_tester.mk +++ b/build/android/liblinphone_tester.mk @@ -37,10 +37,10 @@ LOCAL_MODULE_FILENAME := liblinphone_tester-$(TARGET_ARCH_ABI) LOCAL_SRC_FILES += $(common_SRC_FILES) LOCAL_C_INCLUDES = $(common_C_INCLUDES) LOCAL_CFLAGS = -DIN_LINPHONE -LOCAL_LDLIBS := -llog +LOCAL_LDLIBS := -llog -lz ifeq ($(BUILD_MATROSKA), 1) -LOCAL_CFLAGS += -DHAVE_MATROSKA +LOCAL_CFLAGS += -DHAVE_MATROSKA -DHAVE_ZLIB endif LOCAL_SHARED_LIBRARIES := cunit liblinphone From 35d9b8086c7915afd9308d103761bbc36cf94a02 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 18 Feb 2015 10:59:23 +0100 Subject: [PATCH 443/496] Updated oRTP and ms2 wp8 projects --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index d1684034e..7b759e6fc 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit d1684034e44781ca71a107d7d2b6db626a3ab993 +Subproject commit 7b759e6fcb38edb60b10aad3640cd933a2b9680e diff --git a/oRTP b/oRTP index 908c31ca7..fa091e035 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 908c31ca7f5f251e7d2d3db0318a41ef4d66e1fb +Subproject commit fa091e0350afaa2a26348ed0ca678135184d628c From 8a4b7272db11cd8fd0511b0cf3454d8beceecb0e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 18 Feb 2015 11:44:05 +0100 Subject: [PATCH 444/496] Updated ms2 to fix crash on wp8 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 7b759e6fc..f029557ca 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 7b759e6fcb38edb60b10aad3640cd933a2b9680e +Subproject commit f029557ca053bc3571131f9dd186d0f355d8f143 From b0ba3b1f1df06b817e182ea094c0c6eef044497d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 18 Feb 2015 13:45:22 +0100 Subject: [PATCH 445/496] Updated ms2 with fix for loading wp8 plugins --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index f029557ca..6924f3396 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit f029557ca053bc3571131f9dd186d0f355d8f143 +Subproject commit 6924f33961f54aa8ddb58a5cc0a0c8aaa624cdce From ec3e9365dd431725f80e4549bfa54eb869a0aeab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 18 Feb 2015 13:39:15 +0100 Subject: [PATCH 446/496] Update changelog for release 3.8.0 --- NEWS | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index dce0e0824..acdbf2e45 100644 --- a/NEWS +++ b/NEWS @@ -2,12 +2,26 @@ linphone-3.8.0 -- Date to be defined Application level improvements: * The video window has now controls in order to switch fullscreen mode and terminate call. * The out of call video preview feature (to test camera) is moved into the settings and is no longer linked to the in-call video preview feature. - * Lots of updated translations. + * Add an assistant to help users to set audio/video parameters + * Some ergonomics improvments (checkbox to set random port for UDP and TCP, ...) + * Lots of updated translations. Arabic translation has been added + * Experimental feature: play an MKV file by drag-and-dropping it on the video call window Liblinphone level improvements: - * Support for RTP/AVPF (RFCxxxx) for video streams, allowing fast transmission error recovery with VP8 codec only. + * Support for RTP/AVPF (RFC4585) for video streams, allowing fast transmission error recovery with VP8 codec only. * API enhancements, most objects can be ref-counted. + * Add some getter funtctions to the call information API + * Add a function in the API to accept early-media calls + * Add a function to set the SIP transport timeout + * Add a function to change adaptive rate algorithm at runtime + * Add support of file transfer * Call video recording feature, in mkv format (H264 streams only for the moment) + * Call playing feature: play an MKV file and send the audio/video stream through a call + * Local player API. Play WAV and MKV file and display video on a specified window display + * A wrapper for Python has been made + * Support of Wake Locks on Android + * Support of multicast IP addresses + * Support of incoming UPDATEs within dialog (RFC3311) * Support of SRTP by using packages from GNU/Linux distributions linphone-3.7.0 -- February 20th, 2014 From 209219b8cf06d82f49d48e3bb5924243e92bd71f Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 18 Feb 2015 14:21:30 +0100 Subject: [PATCH 447/496] Use false linphone_plugins_dir in wp8 to not load plugins twice --- build/wp8/LibLinphone.vcxproj | 4 ++-- build/wp8/LibLinphone_no_tunnel.vcxproj | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/wp8/LibLinphone.vcxproj b/build/wp8/LibLinphone.vcxproj index 7e692e325..93900b840 100644 --- a/build/wp8/LibLinphone.vcxproj +++ b/build/wp8/LibLinphone.vcxproj @@ -54,7 +54,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;$(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) + __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="\\linphone\\plugins";UNICODE;_XKEYCHECK_H;HAVE_ZLIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) Default NotUsing false @@ -220,4 +220,4 @@ - \ No newline at end of file + diff --git a/build/wp8/LibLinphone_no_tunnel.vcxproj b/build/wp8/LibLinphone_no_tunnel.vcxproj index 447253440..6d8167046 100644 --- a/build/wp8/LibLinphone_no_tunnel.vcxproj +++ b/build/wp8/LibLinphone_no_tunnel.vcxproj @@ -54,7 +54,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;$(ProjectDir)..\..\..\sqlite\;$(ProjectDir);%(AdditionalIncludeDirectories) - __STDC_CONSTANT_MACROS;_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;_USRDLL;WINDOW_NATIVE;_TRUE_TIME;IN_LINPHONE;USE_BELLESIP;VIDEO_ENABLED;LINPHONE_PACKAGE_NAME="linphone";LIBLINPHONE_EXPORTS;LINPHONE_PLUGINS_DIR=".";UNICODE;_XKEYCHECK_H;HAVE_ZLIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + __STDC_CONSTANT_MACROS;_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;_USRDLL;WINDOW_NATIVE;_TRUE_TIME;IN_LINPHONE;USE_BELLESIP;VIDEO_ENABLED;LINPHONE_PACKAGE_NAME="linphone";LIBLINPHONE_EXPORTS;LINPHONE_PLUGINS_DIR="\\linphone\\plugins";UNICODE;_XKEYCHECK_H;HAVE_ZLIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) Default NotUsing false @@ -216,4 +216,4 @@ - \ No newline at end of file + From 56e58d0cee2e970822ba460dc6f8f8c3936f4552 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 18 Feb 2015 14:52:34 +0100 Subject: [PATCH 448/496] Change the SDP removal mechanism for something a bit more tunable. There is now an "SDP handling mode": you can choose between normal, simulate removal of SDP or simulate SDP error. This allows for simulating 200 OK without SDP, for instance (a unit test is coming for this). --- coreapi/bellesip_sal/sal_impl.c | 6 ++-- coreapi/bellesip_sal/sal_impl.h | 6 ++-- coreapi/bellesip_sal/sal_op_call.c | 22 ++++++++++---- coreapi/bellesip_sal/sal_op_impl.c | 8 ++--- include/sal/sal.h | 22 +++++++++++--- tester/call_tester.c | 48 +++++++++++++++++------------- tester/liblinphone_tester.h | 9 +++--- 7 files changed, 76 insertions(+), 45 deletions(-) diff --git a/coreapi/bellesip_sal/sal_impl.c b/coreapi/bellesip_sal/sal_impl.c index 3b3c24955..9829d22b3 100644 --- a/coreapi/bellesip_sal/sal_impl.c +++ b/coreapi/bellesip_sal/sal_impl.c @@ -1149,7 +1149,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; +void sal_default_set_sdp_handling(Sal *sal, SalOpSDPHandling sdp_handling_method) { + if (sdp_handling_method != SalOpSDPNormal ) ms_message("Enabling special SDP handling for all new SalOp in Sal[%p]!", sal); + sal->default_sdp_handling = sdp_handling_method; } diff --git a/coreapi/bellesip_sal/sal_impl.h b/coreapi/bellesip_sal/sal_impl.h index 21aeadc74..a2ec659f7 100644 --- a/coreapi/bellesip_sal/sal_impl.h +++ b/coreapi/bellesip_sal/sal_impl.h @@ -24,8 +24,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "belle-sip/belle-sip.h" #include "belle-sip/belle-sdp.h" - - struct Sal{ SalCallbacks callbacks; MSList *pending_auths;/*MSList of SalOp */ @@ -52,7 +50,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; + SalOpSDPHandling default_sdp_handling; }; typedef enum SalOpState { @@ -107,7 +105,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 */ + SalOpSDPHandling sdp_handling; 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 7cf64947e..9b1bfeb5a 100644 --- a/coreapi/bellesip_sal/sal_op_call.c +++ b/coreapi/bellesip_sal/sal_op_call.c @@ -392,19 +392,23 @@ static int extract_sdp(SalOp *op, belle_sip_message_t* message,belle_sdp_session const char *body; belle_sip_header_content_type_t* content_type; - if (op&&op->sdp_removal){ - ms_error("Removed willingly SDP because sal_call_enable_sdp_removal was set to TRUE."); + if (op&&op->sdp_handling == SalOpSDPSimulateError){ + ms_error("Simulating SDP parsing error for op %p", op); *session_desc=NULL; *error=SalReasonNotAcceptable; return -1; + } else if( op && op->sdp_handling == SalOpSDPSimulateRemove){ + ms_error("Simulating no SDP for op %p", op); + *session_desc = NULL; + return 0; } - + body = belle_sip_message_get_body(message); if(body == NULL) { *session_desc = NULL; return 0; } - + content_type = belle_sip_message_get_header_by_type(message,belle_sip_header_content_type_t); if (content_type){ if (strcmp("application",belle_sip_header_content_type_get_type(content_type))==0 @@ -735,8 +739,14 @@ static void handle_offer_answer_response(SalOp* op, belle_sip_response_t* respon set_sdp_from_desc(BELLE_SIP_MESSAGE(response),op->base.local_media); }else{ - if (op->sdp_answer==NULL) - sdp_process(op); + if ( op->sdp_answer==NULL ) + { + if( op->sdp_handling == SalOpSDPSimulateRemove ){ + ms_warning("Simulating SDP removal in answer for op %p", op); + } else { + sdp_process(op); + } + } if (op->sdp_answer){ set_sdp(BELLE_SIP_MESSAGE(response),op->sdp_answer); diff --git a/coreapi/bellesip_sal/sal_op_impl.c b/coreapi/bellesip_sal/sal_op_impl.c index 5c953ffc5..bdd120ae9 100644 --- a/coreapi/bellesip_sal/sal_op_impl.c +++ b/coreapi/bellesip_sal/sal_op_impl.c @@ -25,7 +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; + op->sdp_handling=sal->default_sdp_handling; sal_op_ref(op); return op; } @@ -799,7 +799,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; +void sal_call_set_sdp_handling(SalOp *h, SalOpSDPHandling handling) { + if (handling != SalOpSDPNormal) ms_message("Enabling special SDP handling for SalOp[%p]!", h); + h->sdp_handling = handling; } diff --git a/include/sal/sal.h b/include/sal/sal.h index 0b7775b9b..e1a0c3e66 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -203,6 +203,11 @@ typedef enum { SalMulticastSenderReceiver } SalMulticastRole; +typedef enum { + SalOpSDPNormal = 0, /** No special handling for SDP */ + SalOpSDPSimulateError, /** Will simulate an SDP parsing error */ + SalOpSDPSimulateRemove /** Will simulate no SDP in the op */ +} SalOpSDPHandling; typedef struct SalStreamDescription{ char name[16]; /*unique name of stream, in order to ease offer/answer model algorithm*/ @@ -682,11 +687,20 @@ 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) ; + + +/** + * @brief Invoking this on the SAL will modify every subsequent SalOp to have a special handling for SDP. + * @details This is especially useful while testing, to simulate some specific behaviors, like missing SDP or an error in parsing. + * + * @warning Don't forget to reset the handling method to SalOpSDPNormal afterwards. + * + * @param h the Sal instance + * @param handling_method Could be SalOpSDPNormal, SalOpSDPSimulateError, SalOpSDPSimulateRemoval (\ref SalOpSDPHandling) + */ +void sal_default_set_sdp_handling(Sal* h, SalOpSDPHandling handling_method) ; /* Second version: for a specific call*/ -void sal_call_enable_sdp_removal(SalOp *h, bool_t enable) ; +void sal_call_set_sdp_handling(SalOp *h, SalOpSDPHandling handling) ; /*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 42068f327..2d1e93e1d 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -178,6 +178,14 @@ void liblinphone_tester_check_rtcp(LinphoneCoreManager* caller, LinphoneCoreMana linphone_call_unref(c2); } +static void setup_sdp_handling(const LinphoneCallTestParams* params, LinphoneCoreManager* mgr ){ + if( params->sdp_removal ){ + sal_default_set_sdp_handling(mgr->lc->sal, SalOpSDPSimulateRemove); + } else if( params->sdp_simulate_error ){ + sal_default_set_sdp_handling(mgr->lc->sal, SalOpSDPSimulateError); + } +} + bool_t call_with_params2(LinphoneCoreManager* caller_mgr ,LinphoneCoreManager* callee_mgr , const LinphoneCallTestParams *caller_test_params @@ -189,10 +197,10 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr bool_t result=FALSE; LinphoneCallParams *caller_params = caller_test_params->base; LinphoneCallParams *callee_params = callee_test_params->base; - bool_t did_received_call; + bool_t did_receive_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); + setup_sdp_handling(caller_test_params, caller_mgr); + setup_sdp_handling(callee_test_params, callee_mgr); if (!caller_params){ CU_ASSERT_PTR_NOT_NULL(linphone_core_invite_address(caller_mgr->lc,callee_mgr->identity)); @@ -200,16 +208,16 @@ 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)); } - did_received_call = wait_for(callee_mgr->lc + did_receive_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); + CU_ASSERT_EQUAL(did_receive_call, !callee_test_params->sdp_simulate_error); - sal_default_enable_sdp_removal(caller_mgr->lc->sal, FALSE); - sal_default_enable_sdp_removal(callee_mgr->lc->sal, FALSE); + sal_default_set_sdp_handling(caller_mgr->lc->sal, SalOpSDPNormal); + sal_default_set_sdp_handling(callee_mgr->lc->sal, SalOpSDPNormal); - if (!did_received_call) return 0; + if (!did_receive_call) return 0; CU_ASSERT_TRUE(linphone_core_inc_invite_pending(callee_mgr->lc)); @@ -913,7 +921,7 @@ static void call_with_no_sdp_ack_without_sdp(void){ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallIncomingReceived,1)); call=linphone_core_get_current_call(pauline->lc); if (call){ - sal_call_enable_sdp_removal(call->op, TRUE); /*this will have the effect that the SDP received in the ACK will be ignored*/ + sal_call_set_sdp_handling(call->op, SalOpSDPSimulateRemove); /*this will have the effect that the SDP received in the ACK will be ignored*/ linphone_core_accept_call(pauline->lc, call); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallError,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); @@ -3371,7 +3379,7 @@ static void incoming_invite_without_sdp() { LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; - callee_test_params.sdp_removal = TRUE; + callee_test_params.sdp_simulate_error = 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)); @@ -3388,7 +3396,7 @@ static void outgoing_invite_without_sdp() { LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; - caller_test_params.sdp_removal = TRUE; + caller_test_params.sdp_simulate_error = 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)); @@ -3415,8 +3423,8 @@ static void incoming_reinvite_without_ack_sdp() { 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)); + sal_call_set_sdp_handling(inc_call->op, SalOpSDPSimulateRemove); /*this will have the effect that the SDP received in the ACK will be ignored*/ + 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)); @@ -3431,7 +3439,7 @@ static void incoming_reinvite_without_ack_sdp() { 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); + sal_call_set_sdp_handling(inc_call->op, SalOpSDPNormal); } linphone_core_terminate_all_calls(caller->lc); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallEnd,1)); @@ -3456,8 +3464,8 @@ static void outgoing_reinvite_without_ack_sdp() { 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)); + sal_call_set_sdp_handling(out_call->op, SalOpSDPSimulateRemove); /*this will have the effect that the SDP received in the ACK will be ignored*/ + 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)); @@ -3470,7 +3478,7 @@ static void outgoing_reinvite_without_ack_sdp() { 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); + sal_call_set_sdp_handling(out_call->op, SalOpSDPNormal); } linphone_core_terminate_all_calls(caller->lc); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallEnd,1)); @@ -3576,18 +3584,18 @@ static void call_with_generic_cn(void) { CU_ASSERT_TRUE(rtps->packet_recv<=300 && rtps->packet_recv>=200); } end_call(marie,pauline); - + if (pauline_call){ struct stat stbuf; int err; - + err=stat(recorded_file,&stbuf); CU_ASSERT_EQUAL(err, 0); if (err==0){ CU_ASSERT_TRUE(stbuf.st_size>120000); } } - + linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 22dbcd6f6..c25f61d6c 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -93,12 +93,12 @@ extern const char* liblinphone_tester_get_xml_output(void); /** * @brief Tells the tester whether or not to clean the accounts it has created between runs. * @details Setting this to 1 will not clear the list of created accounts between successive - * calls to liblinphone_run_tests(). Some testing APIs call this function for *each* test, + * calls to liblinphone_run_tests(). Some testing APIs call this function for *each* test, * in which case we should keep the accounts that were created for further testing. - * - * You are supposed to manually call liblinphone_tester_clear_account when all the tests are + * + * You are supposed to manually call liblinphone_tester_clear_account when all the tests are * finished. - * + * * @param keep 1 to keep the accounts in-between runs, 0 to clear them after each run. */ extern void liblinphone_tester_keep_accounts( int keep ); @@ -255,6 +255,7 @@ typedef struct _LinphoneCoreManager { typedef struct _LinphoneCallTestParams { LinphoneCallParams *base; bool_t sdp_removal; + bool_t sdp_simulate_error; } LinphoneCallTestParams; LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, int check_for_proxies); From 93486c97e019fc79699cd158a03f2092d65b7dc5 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 18 Feb 2015 14:52:54 +0100 Subject: [PATCH 449/496] Cosmetics --- coreapi/bellesip_sal/sal_op_call.c | 2 +- include/sal/sal.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/coreapi/bellesip_sal/sal_op_call.c b/coreapi/bellesip_sal/sal_op_call.c index 9b1bfeb5a..428c27bff 100644 --- a/coreapi/bellesip_sal/sal_op_call.c +++ b/coreapi/bellesip_sal/sal_op_call.c @@ -94,7 +94,7 @@ static int set_sdp(belle_sip_message_t *msg,belle_sdp_session_description_t* ses /* 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); + error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,bufLen,&length); if( error != BELLE_SIP_OK ){ bufLen *= 2; length = 0; diff --git a/include/sal/sal.h b/include/sal/sal.h index e1a0c3e66..7d0ae1eb7 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -556,7 +556,7 @@ void sal_signing_key_parse_file(SalAuthInfo* auth_info, const char* path, const * @param[in] generate_certificate if true, if matching certificate and key can't be found, generate it and store it into the given dir, filename will be subject.pem * @param[in] generate_dtls_fingerprint if true and we have a certificate, generate the dtls fingerprint as described in rfc4572 */ -void sal_certificates_chain_parse_directory(char **certificate_pem, char **key_pem, char **fingerprint, const char* path, const char *subject, SalCertificateRawFormat format, bool_t generate_certificate, bool_t generate_dtls_fingerprint); +void sal_certificates_chain_parse_directory(char **certificate_pem, char **key_pem, char **fingerprint, const char* path, const char *subject, SalCertificateRawFormat format, bool_t generate_certificate, bool_t generate_dtls_fingerprint); void sal_certificates_chain_delete(SalCertificatesChain *chain); void sal_signing_key_delete(SalSigningKey *key); @@ -824,7 +824,7 @@ int sal_lines_get_value(const char *data, const char *key, char *value, size_t v belle_sip_stack_t *sal_get_belle_sip_stack(Sal *sal); char* sal_op_get_public_uri(SalOp *sal); -unsigned long sal_begin_background_task(const char *name, void (*max_time_reached)(void *), void *data); +unsigned long sal_begin_background_task(const char *name, void (*max_time_reached)(void *), void *data); void sal_end_background_task(unsigned long id); #endif From a971445719530f649533c7091e62d0bdcf4b0c80 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 18 Feb 2015 14:53:48 +0100 Subject: [PATCH 450/496] Fix problem with missing SDP in 200 OK when the call is in early-media. We should recover correctly, we were not. Also introduced the corresponding unit test. --- coreapi/callbacks.c | 8 +++++ tester/call_tester.c | 72 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 7e0254b99..7de84e19f 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -494,6 +494,14 @@ static void call_accepted(SalOp *op){ break; } + if( (call->prevstate == LinphoneCallOutgoingEarlyMedia) && (md == NULL || sal_media_description_empty(md)) ){ + /* media description is null or empty because no SDP was received in the 200 OK, we can possibly use the early-media SDP. */ + if( call->resultdesc != NULL){ + ms_message("Using early media SDP since none were received with the 200 OK"); + md = call->resultdesc; + } + } + 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) || diff --git a/tester/call_tester.c b/tester/call_tester.c index 2d1e93e1d..3fcf3da1a 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -3549,6 +3549,77 @@ static void call_with_paused_no_sdp_on_resume() { } } + +static void call_with_183_and_no_sdp_in_200(){ +LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new("pauline_rc"); + MSList* lcs = NULL; + LinphoneCall* marie_call; + LinphoneCallParams* params = NULL; + LinphoneCallLog *marie_call_log; + uint64_t connected_time=0; + uint64_t ended_time=0; + int dummy=0; + + lcs = ms_list_append(lcs,marie->lc); + lcs = ms_list_append(lcs,pauline->lc); + /* + Marie calls Pauline, and after the call has rung, transitions to an early_media session + */ + params = linphone_core_create_default_call_parameters(marie->lc); + linphone_call_params_enable_video(params, TRUE); + + linphone_core_enable_video_capture(pauline->lc, TRUE); + linphone_core_enable_video_display(pauline->lc, TRUE); + linphone_core_enable_video_capture(marie->lc, TRUE); + linphone_core_enable_video_display(marie->lc, FALSE); + + marie_call = linphone_core_invite_address_with_params(marie->lc, pauline->identity, params); + 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)); + + if (linphone_core_inc_invite_pending(pauline->lc)) { + LinphoneCall* pauline_call = linphone_core_get_current_call(pauline->lc); + + /* send a 183 to initiate the early media */ + linphone_core_accept_early_media(pauline->lc, pauline_call); + + CU_ASSERT_TRUE( wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingEarlyMedia,1,2000) ); + CU_ASSERT_TRUE( wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingEarlyMedia,1,2000) ); + + liblinphone_tester_check_rtcp(marie, pauline); + + // will send the 200OK _without_ SDP + sal_call_set_sdp_handling(pauline_call->op, SalOpSDPSimulateRemove); + linphone_core_accept_call(pauline->lc, pauline_call); + + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallConnected, 1,1000)); + connected_time=ms_get_cur_time_ms(); + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallStreamsRunning, 1,3000)); + + ms_error("Streams running= %d", marie->stat.number_of_LinphoneCallStreamsRunning); + + 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=ms_get_cur_time_ms(); + CU_ASSERT_TRUE( labs((linphone_call_log_get_duration(marie_call_log)*1000) - (int64_t)(ended_time - connected_time)) <=1000 ); + ms_list_free(lcs); + } + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); +} + static void call_with_generic_cn(void) { int begin; int leaked_objects; @@ -3704,6 +3775,7 @@ 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 pause no SDP on resume", call_with_paused_no_sdp_on_resume }, + { "Call with 183 and no SDP on 200", call_with_183_and_no_sdp_in_200 }, { "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}, From 7fef3b08f75f132b0a9a225ca21b5944bd2106ce Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 18 Feb 2015 15:10:24 +0100 Subject: [PATCH 451/496] Rename and fix "no SDP" tests --- tester/call_tester.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 3fcf3da1a..95aca9d45 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -921,7 +921,7 @@ static void call_with_no_sdp_ack_without_sdp(void){ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallIncomingReceived,1)); call=linphone_core_get_current_call(pauline->lc); if (call){ - sal_call_set_sdp_handling(call->op, SalOpSDPSimulateRemove); /*this will have the effect that the SDP received in the ACK will be ignored*/ + sal_call_set_sdp_handling(call->op, SalOpSDPSimulateError); /*this will have the effect that the SDP received in the ACK will be ignored*/ linphone_core_accept_call(pauline->lc, call); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallError,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); @@ -3374,7 +3374,7 @@ static void call_log_from_taken_from_p_asserted_id(void) { linphone_core_manager_destroy(pauline); } -static void incoming_invite_without_sdp() { +static void incoming_invite_with_invalid_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}; @@ -3391,7 +3391,7 @@ static void incoming_invite_without_sdp() { linphone_core_manager_destroy(caller); } -static void outgoing_invite_without_sdp() { +static void outgoing_invite_with_invalid_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}; @@ -3410,7 +3410,7 @@ static void outgoing_invite_without_sdp() { linphone_core_manager_destroy(caller); } -static void incoming_reinvite_without_ack_sdp() { +static void incoming_reinvite_with_invalid_ack_sdp(){ #ifdef VIDEO_ENABLED LinphoneCoreManager* caller = linphone_core_manager_new( "pauline_rc"); LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); @@ -3423,7 +3423,7 @@ static void incoming_reinvite_without_ack_sdp() { const LinphoneCallParams *caller_params; stats initial_caller_stat=caller->stat; stats initial_callee_stat=callee->stat; - sal_call_set_sdp_handling(inc_call->op, SalOpSDPSimulateRemove); /*this will have the effect that the SDP received in the ACK will be ignored*/ + sal_call_set_sdp_handling(inc_call->op, SalOpSDPSimulateError); /* will force a parse error for the ACK SDP*/ 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)); @@ -3452,7 +3452,7 @@ static void incoming_reinvite_without_ack_sdp() { #endif } -static void outgoing_reinvite_without_ack_sdp() { +static void outgoing_reinvite_with_invalid_ack_sdp() { #ifdef VIDEO_ENABLED LinphoneCoreManager* caller = linphone_core_manager_new( "pauline_rc"); LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); @@ -3464,7 +3464,7 @@ static void outgoing_reinvite_without_ack_sdp() { if (out_call) { stats initial_caller_stat=caller->stat; stats initial_callee_stat=callee->stat; - sal_call_set_sdp_handling(out_call->op, SalOpSDPSimulateRemove); /*this will have the effect that the SDP received in the ACK will be ignored*/ + sal_call_set_sdp_handling(out_call->op, SalOpSDPSimulateError); /* will force a parse error for the ACK SDP*/ 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)); @@ -3778,10 +3778,10 @@ test_t call_tests[] = { { "Call with 183 and no SDP on 200", call_with_183_and_no_sdp_in_200 }, { "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 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}, + { "Incoming INVITE with invalid SDP",incoming_invite_with_invalid_sdp}, + { "Outgoing INVITE with invalid ACK SDP",outgoing_invite_with_invalid_sdp}, + { "Incoming REINVITE with invalid SDP in ACK",incoming_reinvite_with_invalid_ack_sdp}, + { "Outgoing REINVITE with invalid SDP in ACK",outgoing_reinvite_with_invalid_ack_sdp}, { "Call with generic CN", call_with_generic_cn } }; From 229f662b9f0404d2f5f6acf8fc572e9e4315cb08 Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Wed, 18 Feb 2015 15:10:43 +0100 Subject: [PATCH 452/496] Rename test for early media without SDP in 200 Ok --- 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 95aca9d45..644727618 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -3550,7 +3550,7 @@ static void call_with_paused_no_sdp_on_resume() { } -static void call_with_183_and_no_sdp_in_200(){ +static void call_with_early_media_and_no_sdp_in_200(){ LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new("pauline_rc"); MSList* lcs = NULL; @@ -3591,7 +3591,7 @@ LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); liblinphone_tester_check_rtcp(marie, pauline); - // will send the 200OK _without_ SDP + /* will send the 200OK _without_ SDP. We expect the early-media SDP to be used instead */ sal_call_set_sdp_handling(pauline_call->op, SalOpSDPSimulateRemove); linphone_core_accept_call(pauline->lc, pauline_call); @@ -3775,7 +3775,7 @@ 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 pause no SDP on resume", call_with_paused_no_sdp_on_resume }, - { "Call with 183 and no SDP on 200", call_with_183_and_no_sdp_in_200 }, + { "Call with early media and no SDP on 200 Ok", call_with_early_media_and_no_sdp_in_200 }, { "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 with invalid SDP",incoming_invite_with_invalid_sdp}, From 5c8e2ad4ca4caa5d242c4bf61a859b857b6e0f92 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 18 Feb 2015 15:36:10 +0100 Subject: [PATCH 453/496] Document linphone_call_get_core() function. --- coreapi/linphonecore.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index a909bb644..7e3994706 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -676,7 +676,14 @@ LINPHONE_PUBLIC void *linphone_call_get_user_data(const LinphoneCall *call); **/ LINPHONE_PUBLIC void linphone_call_set_user_data(LinphoneCall *call, void *ud); +/** + * Get the core that has created the specified call. + * @param[in] call LinphoneCall object + * @return The LinphoneCore object that has created the specified call. + * @ingroup call_control + */ LINPHONE_PUBLIC LinphoneCore *linphone_call_get_core(const LinphoneCall *call); + LINPHONE_PUBLIC LinphoneCallState linphone_call_get_state(const LinphoneCall *call); LINPHONE_PUBLIC bool_t linphone_call_asked_to_autoanswer(LinphoneCall *call); From dad967eac82a72c0b180f2b2e190add5af69faab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 18 Feb 2015 15:47:19 +0100 Subject: [PATCH 454/496] Display the liblinphone core version instead of linphone version in the about dialog --- gtk/main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gtk/main.c b/gtk/main.c index 8162927fa..b59c3ea3b 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -49,6 +49,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #endif +#include "coreapi/liblinphone_gitversion.h" + const char *this_program_ident_string="linphone_ident_string=" LINPHONE_VERSION; @@ -561,7 +563,7 @@ void linphone_gtk_show_about(){ } g_free(license); } - gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about),LINPHONE_VERSION); + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about),LIBLINPHONE_GIT_VERSION); gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(about),linphone_gtk_get_ui_config("title","Linphone")); gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(about),linphone_gtk_get_ui_config("home","http://www.linphone.org")); if (logo) gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about),logo); From 55d666da49c65b7afdce2b1a4917a783c28edb30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 18 Feb 2015 15:48:17 +0100 Subject: [PATCH 455/496] Transparent background for the linphone banner --- pixmaps/linphone-banner.png | Bin 9187 -> 8708 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pixmaps/linphone-banner.png b/pixmaps/linphone-banner.png index 0abff3ebfed30f2189dc1459c62c0785f950e565..6fe99ab776cc3efb84701439fd675e049a376cfe 100644 GIT binary patch literal 8708 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 From 23ba230da6b2c84160b79aa3f4fc5e2dbdf2834e Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 18 Feb 2015 16:59:10 +0100 Subject: [PATCH 456/496] Implement cancellation of file transfer for chat messages. --- coreapi/chat.c | 62 ++++++++++++++++++++++---------------------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index 72660e011..8d987417c 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -281,7 +281,6 @@ static void linphone_chat_message_process_response_from_post_file(void *data, co belle_http_request_listener_callbacks_t cbs={0}; belle_http_request_listener_t *l; belle_generic_uri_t *uri; - belle_http_request_t *req; belle_sip_multipart_body_handler_t *bh; char* ua; char *first_part_header; @@ -311,26 +310,24 @@ static void linphone_chat_message_process_response_from_post_file(void *data, co /* 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()); uri=belle_generic_uri_parse(linphone_core_get_file_transfer_server(msg->chat_room->lc)); - req=belle_http_request_create("POST", + if (msg->http_request) belle_sip_object_unref(msg->http_request); + msg->http_request=belle_http_request_create("POST", uri, belle_sip_header_create("User-Agent",ua), NULL); + belle_sip_object_ref(msg->http_request); /* keep a reference to the http request to be able to cancel it during upload */ ms_free(ua); - belle_sip_message_set_body_handler(BELLE_SIP_MESSAGE(req),BELLE_SIP_BODY_HANDLER(bh)); + belle_sip_message_set_body_handler(BELLE_SIP_MESSAGE(msg->http_request),BELLE_SIP_BODY_HANDLER(bh)); cbs.process_response=linphone_chat_message_process_response_from_post_file; cbs.process_io_error=process_io_error_upload; cbs.process_auth_requested=process_auth_requested_upload; l=belle_http_request_listener_create_from_callbacks(&cbs,msg); - msg->http_request=req; /* update the reference to the http request to be able to cancel it during upload */ - belle_http_provider_send_request(msg->chat_room->lc->http_provider,req,l); + belle_http_provider_send_request(msg->chat_room->lc->http_provider,msg->http_request,l); } if (code == 200 ) { /* file has been uploaded correctly, get server reply and send it */ - const char *body; - /* TODO Check that the transfer has not been cancelled, note this shall be removed once the belle sip API will provide a cancel request as we shall never reach this part if the transfer is actually cancelled */ - if (msg->http_request == NULL) { - return; - } - body = belle_sip_message_get_body((belle_sip_message_t *)event->response); + const char *body = belle_sip_message_get_body((belle_sip_message_t *)event->response); + belle_sip_object_unref(msg->http_request); + msg->http_request = NULL; msg->message = ms_strdup(body); msg->content_type = ms_strdup("application/vnd.gsma.rcs-ft-http+xml"); if (msg->cb) { @@ -588,7 +585,6 @@ static void _linphone_chat_room_send_message(LinphoneChatRoom *cr, LinphoneChatM belle_http_request_listener_callbacks_t cbs={0}; belle_http_request_listener_t *l; belle_generic_uri_t *uri; - belle_http_request_t *req; const char *transfer_server = linphone_core_get_file_transfer_server(cr->lc); if (transfer_server == NULL) { @@ -597,17 +593,17 @@ static void _linphone_chat_room_send_message(LinphoneChatRoom *cr, LinphoneChatM } uri=belle_generic_uri_parse(transfer_server); - req=belle_http_request_create("POST", + msg->http_request=belle_http_request_create("POST", uri, NULL, NULL, NULL); + belle_sip_object_ref(msg->http_request); /* keep a reference on the request to be able to cancel it */ cbs.process_response=linphone_chat_message_process_response_from_post_file; cbs.process_io_error=process_io_error_upload; cbs.process_auth_requested=process_auth_requested_upload; l=belle_http_request_listener_create_from_callbacks(&cbs,msg); /* give msg to listener to be able to start the actual file upload when server answer a 204 No content */ - msg->http_request = req; /* keep a reference on the request to be able to cancel it */ - belle_http_provider_send_request(cr->lc->http_provider,req,l); + belle_http_provider_send_request(cr->lc->http_provider,msg->http_request,l); linphone_chat_message_unref(msg); return; } @@ -1216,10 +1212,7 @@ const LinphoneContent *linphone_chat_message_get_file_transfer_information(const static void on_recv_body(belle_sip_user_body_handler_t *bh, belle_sip_message_t *msg, void *data, size_t offset, const uint8_t *buffer, size_t size){ LinphoneChatMessage* chatMsg=(LinphoneChatMessage *)data; LinphoneCore *lc = chatMsg->chat_room->lc; - /* TODO: while belle sip doesn't implement the cancel http request method, test if a request is still linked to the message before forwarding the data to callback */ - if (chatMsg->http_request == NULL) { - return; - } + if (linphone_chat_message_cbs_get_file_transfer_recv(chatMsg->callbacks)) { LinphoneBuffer *lb = linphone_buffer_new_from_data(buffer, size); linphone_chat_message_cbs_get_file_transfer_recv(chatMsg->callbacks)(chatMsg, chatMsg->file_transfer_information, lb); @@ -1228,7 +1221,6 @@ static void on_recv_body(belle_sip_user_body_handler_t *bh, belle_sip_message_t /* Legacy: call back given by application level */ linphone_core_notify_file_transfer_recv(lc, chatMsg, chatMsg->file_transfer_information, (char *)buffer, size); } - return; } @@ -1323,17 +1315,16 @@ 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; - belle_http_request_t *req; const char *url=message->external_body_url; char* ua = ms_strdup_printf("%s/%s", linphone_core_get_user_agent_name(), linphone_core_get_user_agent_version()); uri=belle_generic_uri_parse(url); - req=belle_http_request_create("GET", + message->http_request=belle_http_request_create("GET", uri, belle_sip_header_create("User-Agent",ua), NULL); - + belle_sip_object_ref(message->http_request); /* keep a reference on the request to be able to cancel the download */ ms_free(ua); cbs.process_response_headers=linphone_chat_process_response_headers_from_get_file; @@ -1341,10 +1332,9 @@ void linphone_chat_message_download_file(LinphoneChatMessage *message) { cbs.process_io_error=process_io_error_download; cbs.process_auth_requested=process_auth_requested_download; 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 */ + belle_sip_object_data_set(BELLE_SIP_OBJECT(message->http_request),"message",(void *)message,NULL); message->state = LinphoneChatMessageStateInProgress; /* start the download, status is In Progress */ - belle_http_provider_send_request(message->chat_room->lc->http_provider,req,l); + belle_http_provider_send_request(message->chat_room->lc->http_provider,message->http_request,l); } /** @@ -1365,15 +1355,17 @@ void linphone_chat_message_start_file_download(LinphoneChatMessage *message, Lin * @param msg #LinphoneChatMessage */ 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 */ - msg->http_request = NULL; - 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); + if (!belle_http_request_is_cancelled(msg->http_request)) { + 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); + belle_http_provider_cancel_request(msg->chat_room->lc->http_provider, msg->http_request); + belle_sip_object_unref(msg->http_request); + msg->http_request = NULL; + 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); + } } } From 20a5c21ee7649e5416fcb7a15cb2e9cc07ba5a3a Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 18 Feb 2015 17:49:33 +0100 Subject: [PATCH 457/496] Fix memory leak of some strings extracted from XML documents. --- coreapi/chat.c | 4 ++++ coreapi/presence.c | 14 +++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/coreapi/chat.c b/coreapi/chat.c index 8d987417c..269af03e6 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -845,6 +845,10 @@ static void process_im_is_composing_notification(LinphoneChatRoom *cr, xmlparsin cr->remote_is_composing = state; linphone_core_notify_is_composing_received(cr->lc, cr); + linphone_free_xml_text_content(state_str); + } + if (refresh_str != NULL) { + linphone_free_xml_text_content(refresh_str); } } diff --git a/coreapi/presence.c b/coreapi/presence.c index 869f723ed..e944d3a45 100644 --- a/coreapi/presence.c +++ b/coreapi/presence.c @@ -1211,19 +1211,15 @@ static int process_pidf_xml_presence_services(xmlparsing_context_t *xml_ctx, Lin service_id_str = linphone_get_xml_text_content(xml_ctx, xpath_str); service = presence_service_new(service_id_str, basic_status); if (service != NULL) { - if (timestamp_str != NULL) { - presence_service_set_timestamp(service, parse_timestamp(timestamp_str)); - linphone_free_xml_text_content(timestamp_str); - } - if (contact_str != NULL) { - linphone_presence_service_set_contact(service, contact_str); - linphone_free_xml_text_content(contact_str); - } + if (timestamp_str != NULL) presence_service_set_timestamp(service, parse_timestamp(timestamp_str)); + if (contact_str != NULL) linphone_presence_service_set_contact(service, contact_str); process_pidf_xml_presence_service_notes(xml_ctx, service, i); linphone_presence_model_add_service(model, service); } - linphone_free_xml_text_content(basic_status_str); + if (timestamp_str != NULL) linphone_free_xml_text_content(timestamp_str); + if (contact_str != NULL) linphone_free_xml_text_content(contact_str); if (service_id_str != NULL) linphone_free_xml_text_content(service_id_str); + linphone_free_xml_text_content(basic_status_str); } } if (service_object != NULL) xmlXPathFreeObject(service_object); From 213206027f078d2e0640ac4a80528f6e8b82b2e5 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 18 Feb 2015 17:56:41 +0100 Subject: [PATCH 458/496] rework dtls start --- coreapi/linphonecall.c | 38 +++++++++++++++++++++----------------- coreapi/sal.c | 1 - mediastreamer2 | 2 +- oRTP | 2 +- tester/transport_tester.c | 9 +++++++++ 5 files changed, 32 insertions(+), 20 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index cbf2d4362..ecd68f76f 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2334,6 +2334,21 @@ void static start_dtls( MSMediaStreamSessions *sessions, const SalStreamDescrip } } } +void static start_dtls_on_all_streams(LinphoneCall *call) { + SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); + SalMediaDescription *result_desc = sal_call_get_final_media_description(call->op); + if (call->audiostream && (media_stream_get_state((const MediaStream *)call->audiostream) == MSStreamStarted))/*dtls must start at the end of ice*/ + start_dtls(&call->audiostream->ms.sessions + ,sal_media_description_find_best_stream(result_desc,SalAudio) + ,sal_media_description_find_best_stream(remote_desc,SalAudio)); +#if VIDEO_ENABLED + if (call->videostream && (media_stream_get_state((const MediaStream *)call->videostream) == MSStreamStarted))/*dtls must start at the end of ice*/ + start_dtls(&call->videostream->ms.sessions + ,sal_media_description_find_best_stream(result_desc,SalVideo) + ,sal_media_description_find_best_stream(remote_desc,SalVideo)); +#endif + return; +} static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, bool_t send_ringbacktone, bool_t use_arc){ LinphoneCore *lc=call->core; LpConfig* conf; @@ -2456,10 +2471,6 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, b if (send_ringbacktone){ setup_ring_player(lc,call); } - { - SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); - start_dtls(&call->audiostream->ms.sessions,stream,&remote_desc->streams[0]); - } if (call->params->in_conference){ /*transform the graph to connect it to the conference filter */ @@ -2586,11 +2597,6 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu used_pt, linphone_core_get_video_jittcomp(lc), cam); } } - { - SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); - start_dtls(&call->videostream->ms.sessions,vstream,&remote_desc->streams[1]); - } - }else ms_warning("No video stream accepted."); }else{ ms_message("No valid video stream defined."); @@ -2662,6 +2668,9 @@ void linphone_call_start_media_streams(LinphoneCall *call, bool_t all_inputs_mut if ((call->ice_session != NULL) && (ice_session_state(call->ice_session) != IS_Completed)) { ice_session_start_connectivity_checks(call->ice_session); + } else { + /*should not start dtls until ice is completed*/ + start_dtls_on_all_streams(call); } } @@ -2701,10 +2710,8 @@ void linphone_call_update_crypto_parameters(LinphoneCall *call, SalMediaDescript if (call->audiostream && local_st_desc && old_stream && new_stream && update_stream_crypto_params(call,local_st_desc,old_stream,new_stream,&call->audiostream->ms)){ } - if (call->audiostream) { - SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); - start_dtls(&call->audiostream->ms.sessions,&new_md->streams[0],&remote_desc->streams[0]); - } + + start_dtls_on_all_streams(call); #ifdef VIDEO_ENABLED local_st_desc = sal_media_description_find_secure_stream_of_type(call->localdesc, SalVideo); @@ -2713,10 +2720,6 @@ void linphone_call_update_crypto_parameters(LinphoneCall *call, SalMediaDescript if (call->videostream && local_st_desc && old_stream && new_stream && update_stream_crypto_params(call,local_st_desc,old_stream,new_stream,&call->videostream->ms)){ } - if (call->videostream) { - SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); - start_dtls(&call->videostream->ms.sessions,&new_md->streams[1],&remote_desc->streams[1]); - } #endif } @@ -3289,6 +3292,7 @@ static void handle_ice_events(LinphoneCall *call, OrtpEvent *ev){ linphone_core_update_call(call->core, call, params); } change_ice_media_destinations(call); + start_dtls_on_all_streams(call); break; case IS_Failed: if (ice_session_has_completed_check_list(call->ice_session) == TRUE) { diff --git a/coreapi/sal.c b/coreapi/sal.c index 11934f572..a5a0755d1 100644 --- a/coreapi/sal.c +++ b/coreapi/sal.c @@ -322,7 +322,6 @@ int sal_stream_description_equals(const SalStreamDescription *sd1, const SalStre if (sd1->dtls_role != sd2->dtls_role) result |= SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED; if (strcmp(sd1->dtls_fingerprint, sd2->dtls_fingerprint) != 0) result |= SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED; - return result; } diff --git a/mediastreamer2 b/mediastreamer2 index 6924f3396..4bb21da47 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 6924f33961f54aa8ddb58a5cc0a0c8aaa624cdce +Subproject commit 4bb21da476acd45b6f12ef3149d45fbdd49e71d2 diff --git a/oRTP b/oRTP index fa091e035..39a807584 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit fa091e0350afaa2a26348ed0ca678135184d628c +Subproject commit 39a807584c9b176eb01c391aa43f6c49a8fe518c diff --git a/tester/transport_tester.c b/tester/transport_tester.c index a291ec0c0..e847e0fe8 100644 --- a/tester/transport_tester.c +++ b/tester/transport_tester.c @@ -167,6 +167,14 @@ static void tunnel_zrtp_video_ice_call(void) { else ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); } + +static void tunnel_dtls_video_ice_call(void) { + if (linphone_core_tunnel_available()) + call_base(LinphoneMediaEncryptionDTLS,TRUE,FALSE,LinphonePolicyUseIce,TRUE); + else + ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); +} + static void tunnel_video_ice_call(void) { if (linphone_core_tunnel_available()) call_base(LinphoneMediaEncryptionNone,TRUE,FALSE,LinphonePolicyUseIce,TRUE); @@ -207,6 +215,7 @@ test_t transport_tests[] = { #ifdef VIDEO_ENABLED { "Tunnel ice video call", tunnel_video_ice_call }, { "Tunnel SRTP ice video call", tunnel_srtp_video_ice_call }, + { "Tunnel DTLS ice video call", tunnel_dtls_video_ice_call }, { "Tunnel ZRTP ice video call", tunnel_zrtp_video_ice_call }, #endif }; From 8f3ff2dbd95873709c0a6024aca0805273c7465c Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 18 Feb 2015 17:59:57 +0100 Subject: [PATCH 459/496] fix bug about authentication When ha1 password storage is enabled (the default), the lookup of LinphoneAuthInfo must be done with realm, otherwise the password will not work. --- coreapi/authentication.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/coreapi/authentication.c b/coreapi/authentication.c index de7248316..0306803f8 100644 --- a/coreapi/authentication.c +++ b/coreapi/authentication.c @@ -200,7 +200,7 @@ static char * remove_quotes(char * input){ return input; } -static int realm_match(const char *realm1, const char *realm2){ +static bool_t realm_match(const char *realm1, const char *realm2){ if (realm1==NULL && realm2==NULL) return TRUE; if (realm1!=NULL && realm2!=NULL){ if (strcmp(realm1,realm2)==0) return TRUE; @@ -226,7 +226,7 @@ static const LinphoneAuthInfo *find_auth_info(LinphoneCore *lc, const char *user LinphoneAuthInfo *pinfo = (LinphoneAuthInfo*)elem->data; if (username && pinfo->username && strcmp(username,pinfo->username)==0) { if (realm && domain){ - if (pinfo->realm && strcmp(realm,pinfo->realm)==0 + if (pinfo->realm && realm_match(realm,pinfo->realm) && pinfo->domain && strcmp(domain,pinfo->domain)==0) { return pinfo; } @@ -238,9 +238,9 @@ static const LinphoneAuthInfo *find_auth_info(LinphoneCore *lc, const char *user } ret=pinfo; } - } else if (domain && pinfo->domain && strcmp(domain,pinfo->domain)==0) { + } else if (domain && pinfo->domain && strcmp(domain,pinfo->domain)==0 && pinfo->ha1==NULL) { return pinfo; - } else if (!domain) { + } else if (!domain && pinfo->ha1==NULL) { return pinfo; } } @@ -271,6 +271,7 @@ const LinphoneAuthInfo *linphone_core_find_auth_info(LinphoneCore *lc, const cha if (ai==NULL){ ai=find_auth_info(lc,username,NULL,NULL); } + /*if (ai) ms_message("linphone_core_find_auth_info(): returning auth info username=%s, realm=%s", ai->username, ai->realm);*/ return ai; } From 0b086009e947deb016ec9aca610c1e6031070af1 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 18 Feb 2015 18:14:54 +0100 Subject: [PATCH 460/496] Fix memory leak when cloning LinphoneContent objects. --- coreapi/content.c | 1 + 1 file changed, 1 insertion(+) diff --git a/coreapi/content.c b/coreapi/content.c index 332789d2a..36ebbb0a7 100644 --- a/coreapi/content.c +++ b/coreapi/content.c @@ -33,6 +33,7 @@ static void linphone_content_destroy(LinphoneContent *content) { } static void linphone_content_clone(LinphoneContent *obj, const LinphoneContent *ref) { + obj->owned_fields = TRUE; 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)); From 40ffaa6c432e7cf514004cd5e1779cd0df4f6274 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 18 Feb 2015 18:35:42 +0100 Subject: [PATCH 461/496] disable tunnel_dtls_video_ice_call until feature is available --- tester/transport_tester.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tester/transport_tester.c b/tester/transport_tester.c index e847e0fe8..921e03467 100644 --- a/tester/transport_tester.c +++ b/tester/transport_tester.c @@ -169,9 +169,9 @@ static void tunnel_zrtp_video_ice_call(void) { } static void tunnel_dtls_video_ice_call(void) { - if (linphone_core_tunnel_available()) +/* if (linphone_core_tunnel_available()) call_base(LinphoneMediaEncryptionDTLS,TRUE,FALSE,LinphonePolicyUseIce,TRUE); - else + else*/ ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); } From 147d600cc824dd509becec454741d077614dc4a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 19 Feb 2015 11:19:10 +0100 Subject: [PATCH 462/496] Prevent liblinphone_gitversion.h from cleaning when building the distribution archive --- coreapi/Makefile.am | 16 +++++++--------- gtk/main.c | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/coreapi/Makefile.am b/coreapi/Makefile.am index 40a26ccab..116530afa 100644 --- a/coreapi/Makefile.am +++ b/coreapi/Makefile.am @@ -207,15 +207,13 @@ make_gitversion_h: else \ $(ECHO) -n "" > $(builddir)/$(GITVERSION_FILE_TMP) ; \ fi ; \ - else \ - $(ECHO) -n "" > $(builddir)/$(GITVERSION_FILE_TMP) ; \ + if ! test -f $(builddir)/$(GITVERSION_FILE) ; then \ + cp -f $(builddir)/$(GITVERSION_FILE_TMP) $(builddir)/$(GITVERSION_FILE) ; \ + fi ; \ + if test "`cat $(builddir)/$(GITVERSION_FILE_TMP)`" != "`cat $(builddir)/$(GITVERSION_FILE)`" ; then \ + cp -f $(builddir)/$(GITVERSION_FILE_TMP) $(builddir)/$(GITVERSION_FILE) ; \ + fi ; \ + rm -f $(builddir)/$(GITVERSION_FILE_TMP) ; \ fi - if ! test -f $(builddir)/$(GITVERSION_FILE) ; then \ - cp -f $(builddir)/$(GITVERSION_FILE_TMP) $(builddir)/$(GITVERSION_FILE) ; \ - fi - if test "`cat $(builddir)/$(GITVERSION_FILE_TMP)`" != "`cat $(builddir)/$(GITVERSION_FILE)`" ; then \ - cp -f $(builddir)/$(GITVERSION_FILE_TMP) $(builddir)/$(GITVERSION_FILE) ; \ - fi - rm -f $(builddir)/$(GITVERSION_FILE_TMP) ; $(GITVERSION_FILE): make_gitversion_h diff --git a/gtk/main.c b/gtk/main.c index b59c3ea3b..f840435cc 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "linphone.h" #include "lpconfig.h" +#include "liblinphone_gitversion.h" #include @@ -49,7 +50,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #endif -#include "coreapi/liblinphone_gitversion.h" const char *this_program_ident_string="linphone_ident_string=" LINPHONE_VERSION; From 1066d925acf82ad56eed38cb15a3fc7a90917ecd Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 19 Feb 2015 11:44:38 +0100 Subject: [PATCH 463/496] update ortp, ms2 and set port ranges for all tester rc files to avoid port conflicts. --- mediastreamer2 | 2 +- oRTP | 2 +- tester/rcfiles/laure_rc | 6 +++--- tester/rcfiles/marie_h264_rc | 4 ++-- tester/rcfiles/marie_rc | 4 ++-- tester/rcfiles/marie_rc_rtcp_xr | 4 ++-- tester/rcfiles/marie_sips_rc | 4 ++-- tester/rcfiles/pauline_h264_rc | 4 ++-- tester/rcfiles/pauline_rc_rtcp_xr | 4 ++-- tester/rcfiles/pauline_sips_rc | 4 ++-- tester/rcfiles/pauline_tcp_rc | 4 ++-- 11 files changed, 21 insertions(+), 21 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 4bb21da47..2aef0fddf 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 4bb21da476acd45b6f12ef3149d45fbdd49e71d2 +Subproject commit 2aef0fddfbb3d39690d562f0d12138a843f21bae diff --git a/oRTP b/oRTP index 39a807584..f64cfa994 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 39a807584c9b176eb01c391aa43f6c49a8fe518c +Subproject commit f64cfa9944327ac707a1e9adade2a9c7d017e91e diff --git a/tester/rcfiles/laure_rc b/tester/rcfiles/laure_rc index 7f4d099f5..9156afc39 100644 --- a/tester/rcfiles/laure_rc +++ b/tester/rcfiles/laure_rc @@ -23,8 +23,8 @@ dial_escape_plus=0 [rtp] -audio_rtp_port=9010 -video_rtp_port=9012 +audio_rtp_port=9010-9390 +video_rtp_port=9410-9910 [video] display=0 @@ -41,4 +41,4 @@ device=StaticImage: Static picture 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 +dns_srv_enabled=0 #no srv needed in general diff --git a/tester/rcfiles/marie_h264_rc b/tester/rcfiles/marie_h264_rc index f2ab26190..dc89fceb4 100644 --- a/tester/rcfiles/marie_h264_rc +++ b/tester/rcfiles/marie_h264_rc @@ -32,8 +32,8 @@ subscribe=0 [rtp] -audio_rtp_port=8070 -video_rtp_port=9072 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 [video] display=1 diff --git a/tester/rcfiles/marie_rc b/tester/rcfiles/marie_rc index 367353d06..536725564 100644 --- a/tester/rcfiles/marie_rc +++ b/tester/rcfiles/marie_rc @@ -32,8 +32,8 @@ subscribe=0 [rtp] -audio_rtp_port=8070 -video_rtp_port=9072 +audio_rtp_port=18070-28000 +video_rtp_port=28070-38000 [video] display=0 diff --git a/tester/rcfiles/marie_rc_rtcp_xr b/tester/rcfiles/marie_rc_rtcp_xr index 93f8e5bd0..06f0b5b63 100644 --- a/tester/rcfiles/marie_rc_rtcp_xr +++ b/tester/rcfiles/marie_rc_rtcp_xr @@ -32,8 +32,8 @@ subscribe=0 [rtp] -audio_rtp_port=8070 -video_rtp_port=9072 +audio_rtp_port=20070-22070 +video_rtp_port=24000-25000 rtcp_xr_enabled=1 rtcp_xr_rcvr_rtt_mode=all rtcp_xr_rcvr_rtt_max_size=10000 diff --git a/tester/rcfiles/marie_sips_rc b/tester/rcfiles/marie_sips_rc index 0723c13a0..7a935d4cb 100644 --- a/tester/rcfiles/marie_sips_rc +++ b/tester/rcfiles/marie_sips_rc @@ -32,8 +32,8 @@ subscribe=0 [rtp] -audio_rtp_port=8070 -video_rtp_port=9072 +audio_rtp_port=18070-28000 +video_rtp_port=28070-38000 [video] display=0 diff --git a/tester/rcfiles/pauline_h264_rc b/tester/rcfiles/pauline_h264_rc index d11c7d071..8f30cf020 100644 --- a/tester/rcfiles/pauline_h264_rc +++ b/tester/rcfiles/pauline_h264_rc @@ -29,8 +29,8 @@ dial_escape_plus=0 #subscribe=0 [rtp] -audio_rtp_port=8090 -video_rtp_port=9092 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 [video] display=0 diff --git a/tester/rcfiles/pauline_rc_rtcp_xr b/tester/rcfiles/pauline_rc_rtcp_xr index 331f942ef..94c0314ea 100644 --- a/tester/rcfiles/pauline_rc_rtcp_xr +++ b/tester/rcfiles/pauline_rc_rtcp_xr @@ -29,8 +29,8 @@ dial_escape_plus=0 #subscribe=0 [rtp] -audio_rtp_port=8090 -video_rtp_port=9092 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 rtcp_xr_enabled=1 rtcp_xr_rcvr_rtt_mode=all rtcp_xr_rcvr_rtt_max_size=10000 diff --git a/tester/rcfiles/pauline_sips_rc b/tester/rcfiles/pauline_sips_rc index 5d9f3d5ed..f248cffc1 100644 --- a/tester/rcfiles/pauline_sips_rc +++ b/tester/rcfiles/pauline_sips_rc @@ -29,8 +29,8 @@ dial_escape_plus=0 #subscribe=0 [rtp] -audio_rtp_port=8090 -video_rtp_port=9092 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 [video] display=0 diff --git a/tester/rcfiles/pauline_tcp_rc b/tester/rcfiles/pauline_tcp_rc index 809c1ace6..73fd469d7 100644 --- a/tester/rcfiles/pauline_tcp_rc +++ b/tester/rcfiles/pauline_tcp_rc @@ -29,8 +29,8 @@ dial_escape_plus=0 #subscribe=0 [rtp] -audio_rtp_port=8090 -video_rtp_port=9092 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 [video] display=0 From 6cbac7f1c2ed9031a97d9e683ddc1bc99d585f8f Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 19 Feb 2015 13:54:22 +0100 Subject: [PATCH 464/496] update ms2 and ortp --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 2aef0fddf..13476e604 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 2aef0fddfbb3d39690d562f0d12138a843f21bae +Subproject commit 13476e604ce3e40a0caa525babdc5dbb88683685 diff --git a/oRTP b/oRTP index f64cfa994..6cb41fa39 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit f64cfa9944327ac707a1e9adade2a9c7d017e91e +Subproject commit 6cb41fa39470d23f8c028044e3a4ef2be28beae9 From 00ef85317014acd849fef65cf0b4cc9c1d406813 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Thu, 19 Feb 2015 14:02:13 +0100 Subject: [PATCH 465/496] Give DTLS fingerprint to context as soon as possible(do not wait for ice) --- coreapi/linphonecall.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index ecd68f76f..1b678fea3 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2349,6 +2349,36 @@ void static start_dtls_on_all_streams(LinphoneCall *call) { #endif return; } + +void static set_dtls_fingerprint( MSMediaStreamSessions *sessions, const SalStreamDescription *sd,const SalStreamDescription *remote) { + if (sal_stream_description_has_dtls(sd) == TRUE) { + /*DTLS*/ + SalDtlsRole salRole = sd->dtls_role; + if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ + /* give the peer certificate fingerprint to dtls context */ + ms_dtls_srtp_set_peer_fingerprint(sessions->dtls_context, remote->dtls_fingerprint); + } else { + ms_warning("unable to start DTLS engine on stream session [%p], Dtls role in resulting media description is invalid",sessions); + } + } +} + +void static set_dtls_fingerprint_on_all_streams(LinphoneCall *call) { + SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); + SalMediaDescription *result_desc = sal_call_get_final_media_description(call->op); + if (call->audiostream && (media_stream_get_state((const MediaStream *)call->audiostream) == MSStreamStarted))/*dtls must start at the end of ice*/ + set_dtls_fingerprint(&call->audiostream->ms.sessions + ,sal_media_description_find_best_stream(result_desc,SalAudio) + ,sal_media_description_find_best_stream(remote_desc,SalAudio)); +#if VIDEO_ENABLED + if (call->videostream && (media_stream_get_state((const MediaStream *)call->videostream) == MSStreamStarted))/*dtls must start at the end of ice*/ + set_dtls_fingerprint(&call->videostream->ms.sessions + ,sal_media_description_find_best_stream(result_desc,SalVideo) + ,sal_media_description_find_best_stream(remote_desc,SalVideo)); +#endif + return; +} + static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, bool_t send_ringbacktone, bool_t use_arc){ LinphoneCore *lc=call->core; LpConfig* conf; @@ -2666,6 +2696,8 @@ void linphone_call_start_media_streams(LinphoneCall *call, bool_t all_inputs_mut LinphoneMediaEncryptionSRTP : LinphoneMediaEncryptionNone; } + set_dtls_fingerprint_on_all_streams(call); + if ((call->ice_session != NULL) && (ice_session_state(call->ice_session) != IS_Completed)) { ice_session_start_connectivity_checks(call->ice_session); } else { From b3734e28a0896f792f422ade9be88970a25a8c46 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Thu, 19 Feb 2015 15:58:48 +0100 Subject: [PATCH 466/496] JNI setPayloadTypeNumber and resetLogCollection --- coreapi/linphonecore_jni.cc | 20 +++++++++++++++ .../org/linphone/core/LinphoneCore.java | 25 +++++++++++++++++++ .../org/linphone/core/LinphoneCoreImpl.java | 15 +++++++++++ 3 files changed, 60 insertions(+) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 3e895a6ce..eb7c47f83 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -1200,6 +1200,10 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_uploadLogCollection(JNIE linphone_core_upload_log_collection(core); } +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_resetLogCollection(JNIEnv* env, jobject thiz) { + linphone_core_reset_log_collection(); +} + extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_migrateToMultiTransport(JNIEnv* env ,jobject thiz ,jlong lc) { @@ -1603,6 +1607,7 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_findPayloadType(JNIEnv* env->ReleaseStringUTFChars(jmime, mime); return result; } + extern "C" jlongArray Java_org_linphone_core_LinphoneCoreImpl_listVideoPayloadTypes(JNIEnv* env ,jobject thiz ,jlong lc) { @@ -1675,6 +1680,21 @@ extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_getPayloadTypeBitrate(JN return (jint)linphone_core_get_payload_type_bitrate((LinphoneCore*)lc,(PayloadType*)pt); } +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setPayloadTypeNumber(JNIEnv* env + ,jobject thiz + ,jlong lc + ,jlong pt + ,jint number) { + linphone_core_set_payload_type_number((LinphoneCore*)lc,(PayloadType*)pt,number); +} + +extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_getPayloadTypeNumber(JNIEnv* env + ,jobject thiz + ,jlong lc + ,jlong pt) { + return (jint)linphone_core_get_payload_type_number((LinphoneCore*)lc,(PayloadType*)pt); +} + extern "C" void Java_org_linphone_core_LinphoneCoreImpl_enableAdaptiveRateControl(JNIEnv* env ,jobject thiz ,jlong lc diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 7c23cb9bb..2b7ce9cde 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -786,6 +786,26 @@ public interface LinphoneCore { */ int getPayloadTypeBitrate(PayloadType pt); + /** + * Set an explicit bitrate (IP bitrate, not codec bitrate) for a given codec, in kbit/s. + * @param pt the payload type + * @param number target IP bitrate in kbit/s + */ + + /** + * Force a number for a payload type. The LinphoneCore does payload type number assignment automatically. THis function is to be used mainly for tests, in order + * to override the automatic assignment mechanism. + * @param pt the payload type + * @param number + **/ + void setPayloadTypeNumber(PayloadType pt, int number); + + /** + * @param pt the payload type + * @return the payload type number assigned for this codec. + */ + int getPayloadTypeNumber(PayloadType pt); + /** * Enable adaptive rate control. * @param enable @@ -1889,6 +1909,11 @@ public interface LinphoneCore { * Upload the log collection to the configured server url. */ public void uploadLogCollection(); + + /** + * Reset the log collection by removing the log files. + */ + public void resetLogCollection(); /** diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index bd361daca..8595ff079 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -1274,6 +1274,18 @@ class LinphoneCoreImpl implements LinphoneCore { public synchronized int getPayloadTypeBitrate(PayloadType pt) { return getPayloadTypeBitrate(nativePtr, ((PayloadTypeImpl)pt).nativePtr); } + + private native void setPayloadTypeNumber(long coreptr, long payload_ptr, int number); + @Override + public synchronized void setPayloadTypeNumber(PayloadType pt, int number) { + setPayloadTypeNumber(nativePtr, ((PayloadTypeImpl)pt).nativePtr, number); + } + private native int getPayloadTypeNumber(long coreptr, long payload_ptr); + @Override + public synchronized int getPayloadTypeNumber(PayloadType pt) { + return getPayloadTypeNumber(nativePtr, ((PayloadTypeImpl)pt).nativePtr); + } + @Override public synchronized void enableAdaptiveRateControl(boolean enable) { enableAdaptiveRateControl(nativePtr,enable); @@ -1352,6 +1364,9 @@ class LinphoneCoreImpl implements LinphoneCore { public void uploadLogCollection() { uploadLogCollection(nativePtr); } + + @Override + public native void resetLogCollection(); private native void setPreferredFramerate(long nativePtr, float fps); @Override From e2d39cf097c2b14f4ee75f4a3df3ce49d1bbf462 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 19 Feb 2015 16:37:00 +0100 Subject: [PATCH 467/496] update ms2 and ortp --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 13476e604..38f53aaa2 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 13476e604ce3e40a0caa525babdc5dbb88683685 +Subproject commit 38f53aaa2e721384c280cee216565e6befd4f854 diff --git a/oRTP b/oRTP index 6cb41fa39..60f6d0f90 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 6cb41fa39470d23f8c028044e3a4ef2be28beae9 +Subproject commit 60f6d0f909eddcefc83960f791ff30097c1e5c33 From 417a8f609672303a8a534ad4fb27c718fb8c3812 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 19 Feb 2015 18:10:30 +0100 Subject: [PATCH 468/496] Update ms2 submodule. --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 38f53aaa2..23e101f98 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 38f53aaa2e721384c280cee216565e6befd4f854 +Subproject commit 23e101f981d24dc8b2acf0e771ca7a58b750be0c From cd73647339a8ea5f3f9f4d066260238d5f0f876c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 19 Feb 2015 17:12:02 +0100 Subject: [PATCH 469/496] Fix build issue --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 23e101f98..f735f9b81 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 23e101f981d24dc8b2acf0e771ca7a58b750be0c +Subproject commit f735f9b811942e528aefb98221ff3704e5559fe5 From 587299ce03366dc142d5fa36fc71e1da11d9fcfd Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 19 Feb 2015 17:13:35 +0100 Subject: [PATCH 470/496] fix crash in case of transport change when call is on error --- coreapi/bellesip_sal/sal_op_call.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/coreapi/bellesip_sal/sal_op_call.c b/coreapi/bellesip_sal/sal_op_call.c index 428c27bff..58b7e9290 100644 --- a/coreapi/bellesip_sal/sal_op_call.c +++ b/coreapi/bellesip_sal/sal_op_call.c @@ -217,7 +217,8 @@ static void call_process_response(void *op_base, const belle_sip_response_event_ dialog_state=dialog ? belle_sip_dialog_get_state(dialog) : BELLE_SIP_DIALOG_NULL; method=belle_sip_request_get_method(req); ms_message("Op [%p] receiving call response [%i], dialog is [%p] in state [%s]",op,code,dialog,belle_sip_dialog_state_to_string(dialog_state)); - + /*to make sure no cb will destroy op*/ + sal_op_ref(op); switch(dialog_state) { case BELLE_SIP_DIALOG_NULL: case BELLE_SIP_DIALOG_EARLY: { @@ -316,6 +317,7 @@ static void call_process_response(void *op_base, const belle_sip_response_event_ } break; } + sal_op_unref(op); } static void call_process_timeout(void *user_ctx, const belle_sip_timeout_event_t *event) { From 11ffe4f9436c1dac46a1bd05d9d6c300a913a852 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 19 Feb 2015 17:17:30 +0100 Subject: [PATCH 471/496] move rtp_session_set_symmetric_rtp for ice to the completion of ice --- coreapi/callbacks.c | 2 +- coreapi/linphonecall.c | 3 +- tester/call_tester.c | 66 ++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 67 insertions(+), 4 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 7de84e19f..fa29096b7 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -76,7 +76,7 @@ void linphone_core_update_streams_destinations(LinphoneCore *lc, LinphoneCall *c static void _clear_early_media_destinations(LinphoneCall *call, MediaStream *ms){ RtpSession *session=ms->sessions.rtp_session; rtp_session_clear_aux_remote_addr(session); - if (!call->ice_session) rtp_session_set_symmetric_rtp(session,TRUE);/*restore symmetric rtp if ICE is not used*/ + if (!call->ice_session) rtp_session_set_symmetric_rtp(session,linphone_core_symmetric_rtp_enabled(call->core));/*restore symmetric rtp if ICE is not used*/ } static void clear_early_media_destinations(LinphoneCall *call){ diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 1b678fea3..b118b163f 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -1792,7 +1792,6 @@ static void _linphone_call_prepare_ice_for_stream(LinphoneCall *call, int stream if ((linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) && (call->ice_session != NULL)){ IceCheckList *cl; rtp_session_set_pktinfo(ms->sessions.rtp_session, TRUE); - rtp_session_set_symmetric_rtp(ms->sessions.rtp_session, FALSE); cl=ice_session_check_list(call->ice_session, stream_index); if (cl == NULL && create_checklist) { cl=ice_check_list_new(); @@ -3283,6 +3282,7 @@ static void change_ice_media_destinations(LinphoneCall *call) { result = ice_check_list_selected_valid_remote_candidate(ice_session_check_list(call->ice_session, 0), &rtp_addr, &rtp_port, &rtcp_addr, &rtcp_port); if (result == TRUE) { ms_message("Change audio stream destination: RTP=%s:%d RTCP=%s:%d", rtp_addr, rtp_port, rtcp_addr, rtcp_port); + rtp_session_set_symmetric_rtp(call->audiostream->ms.sessions.rtp_session, FALSE); rtp_session_set_remote_addr_full(call->audiostream->ms.sessions.rtp_session, rtp_addr, rtp_port, rtcp_addr, rtcp_port); } } @@ -3291,6 +3291,7 @@ static void change_ice_media_destinations(LinphoneCall *call) { result = ice_check_list_selected_valid_remote_candidate(ice_session_check_list(call->ice_session, 1), &rtp_addr, &rtp_port, &rtcp_addr, &rtcp_port); if (result == TRUE) { ms_message("Change video stream destination: RTP=%s:%d RTCP=%s:%d", rtp_addr, rtp_port, rtcp_addr, rtcp_port); + rtp_session_set_symmetric_rtp(call->videostream->ms.sessions.rtp_session, FALSE); rtp_session_set_remote_addr_full(call->videostream->ms.sessions.rtp_session, rtp_addr, rtp_port, rtcp_addr, rtcp_port); } } diff --git a/tester/call_tester.c b/tester/call_tester.c index 644727618..5442364d7 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -240,7 +240,7 @@ 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)) { return 0; - } else { + } else if (caller_mgr->identity){ 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*/ @@ -3678,7 +3678,67 @@ static void call_with_generic_cn(void) { ms_free(audio_file_with_silence); ms_free(recorded_file); } +void static call_state_changed_2(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cstate, const char *msg){ + LCSipTransports sip_tr; + if (cstate==LinphoneCallReleased) { + /*to make sure transport is changed*/ + sip_tr.udp_port = 0; + sip_tr.tcp_port = 45876; + sip_tr.tls_port = 0; + linphone_core_set_sip_transports(lc,&sip_tr); + } +} + +static void call_with_transport_change_base(bool_t succesfull_call) { + int begin; + int leaked_objects; + LCSipTransports sip_tr; + LinphoneCoreManager* marie; + LinphoneCoreManager* pauline; + LinphoneCoreVTable * v_table; + belle_sip_object_enable_leak_detector(TRUE); + begin=belle_sip_object_get_object_count(); + v_table = linphone_core_v_table_new(); + v_table->call_state_changed=call_state_changed_2; + marie = linphone_core_manager_new("marie_rc"); + pauline = linphone_core_manager_new( "pauline_rc"); + linphone_core_add_listener(marie->lc,v_table); + + sip_tr.udp_port = 0; + sip_tr.tcp_port = 45875; + sip_tr.tls_port = 0; + linphone_core_set_sip_transports(marie->lc,&sip_tr); + if (succesfull_call) { + CU_ASSERT_TRUE(call(marie,pauline)); + linphone_core_terminate_all_calls(marie->lc); + } + else + linphone_core_invite(marie->lc,"nexiste_pas"); + + if (succesfull_call) + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallReleased,1)); + if (succesfull_call) { + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallReleased,1)); + } + 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_transport_change_after_released(void) { + call_with_transport_change_base(TRUE); +} +static void unsucessfull_call_with_transport_change_after_released(void) { + call_with_transport_change_base(FALSE); +} test_t call_tests[] = { { "Early declined call", early_declined_call }, @@ -3782,7 +3842,9 @@ test_t call_tests[] = { { "Outgoing INVITE with invalid ACK SDP",outgoing_invite_with_invalid_sdp}, { "Incoming REINVITE with invalid SDP in ACK",incoming_reinvite_with_invalid_ack_sdp}, { "Outgoing REINVITE with invalid SDP in ACK",outgoing_reinvite_with_invalid_ack_sdp}, - { "Call with generic CN", call_with_generic_cn } + { "Call with generic CN", call_with_generic_cn }, + { "Call with transport change after released", call_with_transport_change_after_released }, + { "Unsuccessful call with transport change after released",unsucessfull_call_with_transport_change_after_released} }; test_suite_t call_test_suite = { From 216d7afd41244534c820910cde31f21696db0481 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 19 Feb 2015 17:46:35 +0100 Subject: [PATCH 472/496] active DTLS + video + ice +tunnel test --- tester/transport_tester.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tester/transport_tester.c b/tester/transport_tester.c index 921e03467..e847e0fe8 100644 --- a/tester/transport_tester.c +++ b/tester/transport_tester.c @@ -169,9 +169,9 @@ static void tunnel_zrtp_video_ice_call(void) { } static void tunnel_dtls_video_ice_call(void) { -/* if (linphone_core_tunnel_available()) + if (linphone_core_tunnel_available()) call_base(LinphoneMediaEncryptionDTLS,TRUE,FALSE,LinphonePolicyUseIce,TRUE); - else*/ + else ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); } From c48b39467e5eed00bf9e5adebaeb4da487c38fa8 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 19 Feb 2015 19:09:36 +0100 Subject: [PATCH 473/496] update ms2 (build broken) --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index f735f9b81..ed0c1f307 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit f735f9b811942e528aefb98221ff3704e5559fe5 +Subproject commit ed0c1f30701c6a3bb0607243834f5b58a2720381 From 948ae319a4642eb7cdd26018dccca439a1fb2355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Thu, 19 Feb 2015 22:41:43 +0100 Subject: [PATCH 474/496] Fix color issues in the chat room when a dark GTK theme is used --- gtk/chat.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/gtk/chat.c b/gtk/chat.c index daa5fd95a..1f2234d72 100644 --- a/gtk/chat.c +++ b/gtk/chat.c @@ -161,16 +161,19 @@ void linphone_gtk_push_text(GtkWidget *w, const LinphoneAddress *from, if(g_strcmp0(from_message,from_str)!=0){ gtk_text_buffer_get_iter_at_offset(buffer,&iter,off); gtk_text_buffer_get_end_iter(buffer,&iter); - gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,get_display_name(from),-1,"bold",me ? "bg":NULL,NULL); + gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, get_display_name(from), -1, + "bold", me ? "bg" : NULL, me ? "font_black" : NULL, NULL); gtk_text_buffer_get_end_iter(buffer,&iter); - gtk_text_buffer_insert_with_tags_by_name(buffer,&iter," : ",-1,"bold",me ? "bg":NULL,NULL); + gtk_text_buffer_insert_with_tags_by_name(buffer,&iter, " : ", -1, + "bold", me ? "bg" : NULL, me ? "font_black" : NULL, NULL); gtk_text_buffer_get_end_iter(buffer,&iter); gtk_text_buffer_insert(buffer,&iter,"\n",-1); g_free(from_message); g_object_set_data(G_OBJECT(w),"from_message",g_strdup(from_str)); } gtk_text_buffer_get_end_iter(buffer,&iter); - gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,linphone_chat_message_get_text(msg),-1,"margin",me ? "bg":NULL,NULL); + gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, linphone_chat_message_get_text(msg), -1, + "margin", me ? "bg" : NULL, me ? "font_black" : NULL, NULL); gtk_text_buffer_get_end_iter(buffer,&iter); gtk_text_buffer_insert(buffer,&iter,"\n",-1); gtk_text_buffer_get_end_iter(buffer,&iter); @@ -378,8 +381,9 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres GtkWidget *main_window=linphone_gtk_get_main_window(); GtkNotebook *notebook=(GtkNotebook *)linphone_gtk_get_widget(main_window,"viewswitch"); GtkWidget *text=linphone_gtk_get_widget(chat_view,"textview"); - GdkColor color; - GdkColor colorb; + GdkColor color_grey = {0, 32512, 32512, 32512}; + GdkColor color_light_grey = {0, 56832, 60928, 61952}; + GdkColor color_black = {0}; int idx; GtkWidget *button; GtkWidget *entry = linphone_gtk_get_widget(chat_view,"text_entry"); @@ -387,13 +391,6 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres GHashTable *table; char *with_str; - color.red = 32512; - color.green = 32512; - color.blue = 32512; - colorb.red = 56832; - colorb.green = 60928; - colorb.blue = 61952; - with_str=linphone_address_as_string_uri_only(with); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text),GTK_WRAP_WORD_CHAR); gtk_text_view_set_editable(GTK_TEXT_VIEW(text),FALSE); @@ -417,11 +414,13 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), "small","size",9*PANGO_SCALE,NULL); gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), - "font_grey","foreground-gdk",&color,NULL); + "font_grey","foreground-gdk",&color_grey,NULL); + gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), + "font_black","foreground-gdk",&color_black,NULL); gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), "margin","indent",10,NULL); gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), - "bg","paragraph-background-gdk",&colorb,NULL); + "bg","paragraph-background-gdk",&color_light_grey,NULL); messages = linphone_chat_room_get_history(cr,NB_MSG_HIST); display_history_message(chat_view,messages,with); button = linphone_gtk_get_widget(chat_view,"send"); From 2e9036f3656d510c3283b74ec41a3e4494a71183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 20 Feb 2015 15:17:02 +0100 Subject: [PATCH 475/496] Fix crach on windows: avoid creating message storage database when the SQLite file cannot be opened --- coreapi/message_storage.c | 1 + 1 file changed, 1 insertion(+) diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index 2684ba0b5..91fd8e333 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -591,6 +591,7 @@ void linphone_core_message_storage_init(LinphoneCore *lc){ errmsg=sqlite3_errmsg(db); ms_error("Error in the opening: %s.\n", errmsg); sqlite3_close(db); + return; } linphone_message_storage_activate_debug(db, lc->debug_storage); From ea0aecc8a7cabf3bf7da1cd92039c4e8259bf02f Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 20 Feb 2015 16:14:09 +0100 Subject: [PATCH 476/496] keep tester recorded files in case of test failure --- tester/tester.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tester/tester.c b/tester/tester.c index b046c065e..382155656 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -296,10 +296,13 @@ LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, int check_f if( manager_count >= 2){ char hellopath[512]; + char *recordpath = ms_strdup_printf("%s/record_for_lc_%p.wav",liblinphone_tester_writable_dir_prefix,mgr->lc); ms_message("Manager for '%s' using files", rc_file ? rc_file : "--"); linphone_core_use_files(mgr->lc, TRUE); snprintf(hellopath,sizeof(hellopath), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); linphone_core_set_play_file(mgr->lc,hellopath); + linphone_core_set_record_file(mgr->lc,recordpath); + ms_free(recordpath); } if (proxy_count){ @@ -334,10 +337,18 @@ void linphone_core_manager_stop(LinphoneCoreManager *mgr){ } void linphone_core_manager_destroy(LinphoneCoreManager* mgr) { + if (linphone_core_get_record_file(mgr->lc)){ + if (CU_get_number_of_failures()>0) { + ms_message ("Test has failed, keeping recorded file [%s]",linphone_core_get_record_file(mgr->lc)); + } else { + unlink(linphone_core_get_record_file(mgr->lc)); + } + } if (mgr->lc) linphone_core_destroy(mgr->lc); if (mgr->identity) linphone_address_destroy(mgr->identity); if (mgr->stat.last_received_chat_message) linphone_chat_message_unref(mgr->stat.last_received_chat_message); manager_count--; + ms_free(mgr); } From f98d1f4fca5ac0ca5dae23fd123549dec2baea75 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 20 Feb 2015 19:35:40 +0100 Subject: [PATCH 477/496] fix crash --- tester/tester.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tester/tester.c b/tester/tester.c index 382155656..9fdedb0ec 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -337,14 +337,17 @@ void linphone_core_manager_stop(LinphoneCoreManager *mgr){ } void linphone_core_manager_destroy(LinphoneCoreManager* mgr) { - if (linphone_core_get_record_file(mgr->lc)){ - if (CU_get_number_of_failures()>0) { - ms_message ("Test has failed, keeping recorded file [%s]",linphone_core_get_record_file(mgr->lc)); - } else { - unlink(linphone_core_get_record_file(mgr->lc)); + if (mgr->lc){ + const char *record_file=linphone_core_get_record_file(mgr->lc); + if (record_file){ + if (CU_get_number_of_failures()>0) { + ms_message ("Test has failed, keeping recorded file [%s]",record_file); + } else { + unlink(record_file); + } } + linphone_core_destroy(mgr->lc); } - if (mgr->lc) linphone_core_destroy(mgr->lc); if (mgr->identity) linphone_address_destroy(mgr->identity); if (mgr->stat.last_received_chat_message) linphone_chat_message_unref(mgr->stat.last_received_chat_message); manager_count--; From 2d30e846d8c8f09f71794866cd8261b65aa8937c Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 23 Feb 2015 13:39:44 +0100 Subject: [PATCH 478/496] fix multicast lock crash + enable dtls for android --- coreapi/linphonecore_jni.cc | 45 ++++++++++++++++++++++++++++--------- coreapi/private.h | 2 ++ mediastreamer2 | 2 +- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index eb7c47f83..e9fc0b787 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -1160,10 +1160,23 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_newLinphoneCore(JNIEnv* if (factoryConfig) env->ReleaseStringUTFChars(jfactoryConfig, factoryConfig); return nativePtr; } -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); +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_delete(JNIEnv* env, jobject thiz, jlong native_ptr) { + LinphoneCore *lc=(LinphoneCore*)native_ptr; + jobject core = (jobject)linphone_core_get_user_data(lc); + + jobject multicast_lock = lc->multicast_lock; + jobject multicast_lock_class = lc->multicast_lock_class; + jobject wifi_lock = lc->wifi_lock; + jobject wifi_lock_class = lc->wifi_lock_class; + + linphone_core_destroy(lc); ms_exit(); + + if (wifi_lock) env->DeleteGlobalRef(wifi_lock); + if (wifi_lock_class) env->DeleteGlobalRef(wifi_lock_class); + if (multicast_lock) env->DeleteGlobalRef(multicast_lock); + if (multicast_lock_class) env->DeleteGlobalRef(multicast_lock_class); + if (core) { env->DeleteGlobalRef(core); } @@ -4082,33 +4095,43 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidPowerManager(J #endif } +/*released in Java_org_linphone_core_LinphoneCoreImpl_delete*/ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidWifiLock(JNIEnv *env, jobject thiz, jlong ptr, jobject wifi_lock) { #ifdef ANDROID LinphoneCore *lc=(LinphoneCore*)ptr; - if (lc->wifi_lock) + if (lc->wifi_lock) { env->DeleteGlobalRef(lc->wifi_lock); + env->DeleteGlobalRef(lc->wifi_lock_class); + } if (wifi_lock != NULL) { lc->wifi_lock=env->NewGlobalRef(wifi_lock); - jclass wifiLockClass = env->FindClass("android/net/wifi/WifiManager$WifiLock"); - lc->wifi_lock_acquire_id = env->GetMethodID(wifiLockClass, "acquire", "()V"); - lc->wifi_lock_release_id = env->GetMethodID(wifiLockClass, "release", "()V"); + lc->wifi_lock_class = env->FindClass("android/net/wifi/WifiManager$WifiLock"); + lc->wifi_lock_class = (jclass)env->NewGlobalRef(lc->wifi_lock_class); /*to make sure methodid are preserved*/ + lc->wifi_lock_acquire_id = env->GetMethodID(lc->wifi_lock_class, "acquire", "()V"); + lc->wifi_lock_release_id = env->GetMethodID(lc->wifi_lock_class, "release", "()V"); } else { lc->wifi_lock=NULL; + lc->wifi_lock_class=NULL; } #endif } +/*released in Java_org_linphone_core_LinphoneCoreImpl_delete*/ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidMulticastLock(JNIEnv *env, jobject thiz, jlong ptr, jobject multicast_lock) { #ifdef ANDROID LinphoneCore *lc=(LinphoneCore*)ptr; - if (lc->multicast_lock) + if (lc->multicast_lock) { env->DeleteGlobalRef(lc->multicast_lock); + env->DeleteGlobalRef(lc->multicast_lock_class); + } if (multicast_lock != NULL) { lc->multicast_lock=env->NewGlobalRef(multicast_lock); - jclass multicastLockClass = env->FindClass("android/net/wifi/WifiManager$MulticastLock"); - lc->multicast_lock_acquire_id = env->GetMethodID(multicastLockClass, "acquire", "()V"); - lc->multicast_lock_release_id = env->GetMethodID(multicastLockClass, "release", "()V"); + lc->multicast_lock_class = env->FindClass("android/net/wifi/WifiManager$MulticastLock"); + lc->multicast_lock_class = (jclass)env->NewGlobalRef(lc->multicast_lock_class);/*to make sure methodid are preserved*/ + lc->multicast_lock_acquire_id = env->GetMethodID(lc->multicast_lock_class, "acquire", "()V"); + lc->multicast_lock_release_id = env->GetMethodID(lc->multicast_lock_class, "release", "()V"); } else { lc->multicast_lock=NULL; + lc->multicast_lock_class=NULL; } #endif } diff --git a/coreapi/private.h b/coreapi/private.h index d5a59d85f..4414f50ec 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -805,9 +805,11 @@ struct _LinphoneCore LinphoneCoreVTable *current_vtable; // the latest vtable to call a callback, see linphone_core_get_current_vtable #ifdef ANDROID jobject wifi_lock; + jclass wifi_lock_class; jmethodID wifi_lock_acquire_id; jmethodID wifi_lock_release_id; jobject multicast_lock; + jclass multicast_lock_class; jmethodID multicast_lock_acquire_id; jmethodID multicast_lock_release_id; #endif diff --git a/mediastreamer2 b/mediastreamer2 index ed0c1f307..ca8ad4af2 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit ed0c1f30701c6a3bb0607243834f5b58a2720381 +Subproject commit ca8ad4af235b8131d43687343577e98ba0142c72 From a03fd63d7bc025cd0f8b51b5f3b24d5fe4625874 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Mon, 23 Feb 2015 14:47:49 +0100 Subject: [PATCH 479/496] Add DTLS --- java/common/org/linphone/core/LinphoneCore.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 2b7ce9cde..495f6642a 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -269,6 +269,10 @@ public interface LinphoneCore { * ZRTP */ static public final MediaEncryption ZRTP = new MediaEncryption(2,"ZRTP"); + /** + * DTLS + */ + static public final MediaEncryption DTLS = new MediaEncryption(3,"DTLS"); protected final int mValue; private final String mStringValue; From 5253675b40d02ebd362dd6fa74040b1edea4c863 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 24 Feb 2015 10:26:11 +0100 Subject: [PATCH 480/496] i18n: use --non-interactive mode in push_transifex, even if this is dangerous this is the best way to handle stdin within Makefile --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index b392c23e9..74467b7c9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -175,7 +175,7 @@ pull-transifex: $(MAKE) -C po update-po push-transifex: - tx push -s -t -f + tx push -s -t -f --no-interactive ### WINDOWS From ccc31f0b50f2f4c3e1d52c2729507d97d1377b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Mon, 23 Feb 2015 14:52:03 +0100 Subject: [PATCH 481/496] Rewrite README.mingw to match with 80-columned terminals --- README.mingw | 81 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 30 deletions(-) diff --git a/README.mingw b/README.mingw index 5e859680b..6f5414753 100644 --- a/README.mingw +++ b/README.mingw @@ -29,7 +29,8 @@ Download lastest linphone-deps-win32 zip from http://download.savannah.gnu.org/releases-noredirect/linphone/misc using your browser. -Download gtk+-2.24.10 win32 _bundle_ from http://www.gtk.org, direct link: http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip +Download gtk+-2.24.10 win32 _bundle_ from http://www.gtk.org, direct link: +http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip Install all these three package in /: @@ -46,26 +47,35 @@ tar -xvzf GTK2-Outcrop.tar.gz #To get the translations working, remove from C:/MinGW/lib : libintl.a libintl.la libintl.dll.a -* Download and install Inno Setup Compiler (required only if you run 'make setup.exe'). Add it to your windows Path environment variable. +* Download and install Inno Setup Compiler (required only if you run +'make setup.exe'). Add it to your windows Path environment variable. -* Install msys-git from (http://msysgit.github.io/). During installation you are asked to make a choice about how line endings are treated by git. Choose "Checkout line endings as they are, commit as they are". THIS CHOICE IS VERY IMPORTANT. OTHERS BREAK AUTOMAKE. +* Install msys-git from (http://msysgit.github.io/). During installation you +are asked to make a choice about how line endings are treated by git. Choose +"Checkout line endings as they are, commit as they are". THIS CHOICE IS VERY +IMPORTANT. OTHERS BREAK AUTOMAKE. General rules for compilation ***************************** -- It is recommended that you create a directory somewhere with a path without any spaces or ~ characters, for example c:\sources\. - This is the place where source code must be compiled. -- git commands (to retrieve source code) must be performed within msys-git terminal. -- all other commands (configure, autogen.sh, make) must be done within the mingw shell (msys). -In both msys and msys-git windows, change into the directory you created for sources: -cd /c/sources -- make sure pkg-config works by adding this env variable to your terminal: - export PKG_CONFIG_PATH=/usr/lib/pkgconfig +* It is recommended that you create a directory somewhere with a path without + any spaces or ~ characters, for example c:\sources\. This is the place where + source code must be compiled. +* git commands (to retrieve source code) must be performed within msys-git + terminal. +* all other commands (configure, autogen.sh, make) must be done within the + mingw shell (msys). In both msys and msys-git windows, change into the + directory you created for sources: + cd /c/sources + +* make sure pkg-config works by adding this env variable to your terminal: + export PKG_CONFIG_PATH=/usr/lib/pkgconfig Building belle-sip ****************** - * make sure that java version 1.6 is available in the PATH. java-1.7 will not work with antlr generator. + * make sure that java version 1.6 is available in the PATH. java-1.7 will + not work with antlr generator. * download the sources with msys-git shell using the following command: $ git clone git://git.linphone.org/belle-sip.git * compile and install @@ -80,11 +90,12 @@ Building Linphone $ git clone git://git.linphone.org/linphone.git --recursive * compile - #always run autogen.sh after a git checkout or update + #always run autogen.sh after a git checkout or update $ ./autogen.sh $ ./configure --prefix=/usr --enable-shared --disable-static - #note: in order to use the tunnel (commercial extension), append --enable-tunnel to the configure line above. + #note: in order to use the tunnel (commercial extension), append + #--enable-tunnel to the configure line above. $ make $ make install @@ -92,15 +103,18 @@ Building Linphone #Option: make a portable binary zip of linphone $ make zip - #additionally you can make binary installer if you have Inno Setup 5 installed in its default path + #additionally you can make binary installer if you have Inno Setup 5 + installed in its default path $ make setup.exe - #now you're done, you have a fresh linphone windows installer in the current directory. + #now you're done, you have a fresh linphone windows installer in the + current directory. Building plugins (optional) *************************** - This the example for msx264 (H264 plugin), the same applies for other linphone plugins. + This the example for msx264 (H264 plugin), the same applies for other + linphone plugins. $ git clone git://git.linphone.org/msx264.git $ cd msx264 $ ./autogen.sh @@ -115,17 +129,17 @@ Building plugins (optional) * Notes about linphone-deps generation * ****************************************************** -Linphone-deps is a collection of linphone dependencies, that are for some of them difficult -to find as windows binaries. -These notes are useful if you want to upgrade part of the software that is included in the -linphone-deps packages. +Linphone-deps is a collection of linphone dependencies, that are for some of +them difficult to find as windows binaries. These notes are useful if you want +to upgrade part of the software that is included in the linphone-deps packages. List of software included in linphone-deps: antlr3c (compiled) bzrtp (compiled) polarssl (compiled libsrtp (compiled) -libavcodec, libavutil, libavformat, libavdevice, libswscale (compiled, all these from ffmpeg) +libavcodec, libavutil, libavformat, libavdevice, libswscale (compiled, all +these from ffmpeg) libtheora (from the web) libx264 (compiled from the version distributed from linphone's web site) libogg (from the web) @@ -137,8 +151,10 @@ libsoup (compiled) libsqlite3 (compiled) Remarks: -For every package compiled that goes into linphone-deps, .la files (libtool files) must be removed to avoid libtool errors. -When running "make install DESTDIR=", somepath must be absolute and should not contain any ~ or space. +For every package compiled that goes into linphone-deps, .la files (libtool +files) must be removed to avoid libtool errors. When running "make install +DESTDIR=", somepath must be absolute and should not contain any ~ or +space. - building antlr3c * download the sources with: @@ -192,9 +208,12 @@ When running "make install DESTDIR=", somepath must be absolute and sh ./configure --enable-shared --disable-static --enable-memalign-hack --extra-cflags="-fno-common" --enable-gpl && make make install DESTDIR=/home//ffmpeg-install Copy to ~/ffmpeg-install/usr/local/* to linphone-deps/. - Copy also all *.dll.a files from the build tree to lib/ directort of linphone-deps. These are the implibs necessary to link a program against the dlls. + Copy also all *.dll.a files from the build tree to lib/ directort of + linphone-deps. These are the implibs necessary to link a program against the + dlls. -- building libxml2: the binaries found on the internet are generated with MSVC++, and for obscure reason they are not suitable for building libsoup +- building libxml2: the binaries found on the internet are generated with + MSVC++, and for obscure reason they are not suitable for building libsoup (that requires libxml2). ./configure --enable-shared --disable-static && make && make install DESTDIR=/home//libxml2-install copy ~/libxml2-install/usr/local/* into linphone-deps/. @@ -217,12 +236,14 @@ When running "make install DESTDIR=", somepath must be absolute and sh - add to linphone-deps - building libsoup (only required for buddylookup plugin) - - download source from gnome ftp (warning: at the time of the writing only version 2.26.x can compile with the - glib version supplied in the gtk-bundle, 2.27 requires a new version of glib) + - download source from gnome ftp (warning: at the time of the writing + only version 2.26.x can compile with the glib version supplied in the + gtk-bundle, 2.27 requires a new version of glib) - uncompress libgnutls zip in / - make sure you have libxml2 installed in / - - apply a bugfix patch (fix gnutls support on windows, completely broken otherwise). The patch - is in linphone-deps/src, apply it this way: + - apply a bugfix patch (fix gnutls support on windows, completely + broken otherwise). The patch is in linphone-deps/src, apply it this + way: cd libsoup-2.26.* cd libsoup patch -p0 < libsoup-gnutls-bugfix.patch From 46b84df670b2ba12dffb11359077e08a74deda77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Tue, 24 Feb 2015 10:27:13 +0100 Subject: [PATCH 482/496] Fix build issue on Windows --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index ca8ad4af2..3d23e9d8a 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit ca8ad4af235b8131d43687343577e98ba0142c72 +Subproject commit 3d23e9d8aee73fae6fc6bf68f432d43c00828c96 From 2c7b9f2cf256baaa7905eb2825c5db5fd19bb149 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 24 Feb 2015 11:41:28 +0100 Subject: [PATCH 483/496] configure.ac: only set AC_CONFIG_MACOS_FLAGS when using MacPorts, not HomeBrew --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index dd0c323f5..bde0a2872 100644 --- a/configure.ac +++ b/configure.ac @@ -79,7 +79,7 @@ case $target in x86_64-apple-darwin*|i686-apple-darwin*) MSPLUGINS_CFLAGS="" dnl use macport installation - ACLOCAL_MACOS_FLAGS="-I /opt/local/share/aclocal" + AS_IF([test -d "/opt/local/share/aclocal"], [ACLOCAL_MACOS_FLAGS="-I /opt/local/share/aclocal"]) build_macos=yes ;; From 119c596b9e48b17c09ed6e3c6a43d483502f9799 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 24 Feb 2015 11:52:38 +0100 Subject: [PATCH 484/496] Added test for file transfer using old way: setting file's url in message's external body --- tester/message_tester.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tester/message_tester.c b/tester/message_tester.c index dd6cf4700..e2491048f 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -827,6 +827,41 @@ static void file_transfer_message_download_cancelled(void) { ms_error("Test skipped"); } +static void file_transfer_using_external_body_url(void) { + char *to; + LinphoneChatMessageCbs *cbs; + LinphoneChatRoom *chat_room; + LinphoneChatMessage *message; + LinphoneCoreManager *marie = linphone_core_manager_new("marie_rc"); + LinphoneCoreManager *pauline = linphone_core_manager_new("pauline_rc"); + reset_counters(&marie->stat); + reset_counters(&pauline->stat); + + /* create a chatroom on pauline's side */ + to = linphone_address_as_string(marie->identity); + chat_room = linphone_core_create_chat_room(pauline->lc,to); + + message = linphone_chat_room_create_message(chat_room, NULL); + + 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_set_external_body_url(message, "https://www.linphone.org:444//tmp/54ec58280ace9_c30709218df8eaba61d1.jpg"); + linphone_chat_room_send_chat_message(chat_room, message); + + CU_ASSERT_TRUE(wait_for(pauline->lc, marie->lc, &marie->stat.number_of_LinphoneMessageReceived, 1)); + if (marie->stat.last_received_chat_message) { + 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)); + + CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneMessageInProgress, 1); + CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneMessageExtBodyReceived, 1); + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); +} + static void text_message_with_send_error(void) { LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -1203,6 +1238,7 @@ test_t message_tests[] = { /* { "File transfer message with io error at download", file_transfer_message_io_error_download },*/ { "File transfer message upload cancelled", file_transfer_message_upload_cancelled }, { "File transfer message download cancelled", file_transfer_message_download_cancelled }, + { "File transfer message using external body url", file_transfer_using_external_body_url }, { "Text message denied", text_message_denied }, { "Info message", info_message }, { "Info message with body", info_message_with_body }, From 80fe123e62dad8317e724640e4ad81bd53beca66 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Tue, 24 Feb 2015 12:58:19 +0100 Subject: [PATCH 485/496] Add configure switch to enable usage of g729 Annex B in RFC3389 Comfort Noise payload --- configure.ac | 10 ++++++++++ mediastreamer2 | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index bde0a2872..d696bf31b 100644 --- a/configure.ac +++ b/configure.ac @@ -638,6 +638,16 @@ AC_ARG_ENABLE(dtls, [dtls=false] ) +AC_ARG_ENABLE(g729bCN, + [AS_HELP_STRING([--enable-g729bCN], [Turn on or off usage of G729AnnexB in RFC3389 implementation of Comfort Noise Payload (default=no)])], + [case "${enableval}" in + yes) g729bCN=true ;; + no) g729bCN=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-g729bCN) ;; + esac], + [g729bCN=false] +) + dnl build console if required AM_CONDITIONAL(BUILD_CONSOLE, test x$console_ui = xtrue) diff --git a/mediastreamer2 b/mediastreamer2 index 3d23e9d8a..680421e38 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 3d23e9d8aee73fae6fc6bf68f432d43c00828c96 +Subproject commit 680421e382ac666d58866f00e1ac5693d939fc07 From 21f9d22b0a48171d09fe2980952b8981cc3c2274 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 24 Feb 2015 15:55:07 +0100 Subject: [PATCH 486/496] Added accept header in register --- coreapi/bellesip_sal/sal_op_registration.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/coreapi/bellesip_sal/sal_op_registration.c b/coreapi/bellesip_sal/sal_op_registration.c index f6b6547a3..d56587db2 100644 --- a/coreapi/bellesip_sal/sal_op_registration.c +++ b/coreapi/bellesip_sal/sal_op_registration.c @@ -74,6 +74,7 @@ static void register_refresher_listener (belle_sip_refresher_t* refresher int sal_register(SalOp *op, const char *proxy, const char *from, int expires){ belle_sip_request_t *req; belle_sip_uri_t* req_uri; + belle_sip_header_t* accept_header; if (op->refresher){ belle_sip_refresher_stop(op->refresher); @@ -92,6 +93,8 @@ int sal_register(SalOp *op, const char *proxy, const char *from, int expires){ time_t curtime=time(NULL); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_date_create_from_time(&curtime))); } + accept_header = belle_sip_header_create("Accept", "application/sdp, text/plain, application/vnd.gsma.rcs-ft-http+xml"); + belle_sip_message_add_header(BELLE_SIP_MESSAGE(req), accept_header); belle_sip_message_set_header(BELLE_SIP_MESSAGE(req),(belle_sip_header_t*)sal_op_create_contact(op)); return sal_op_send_and_create_refresher(op,req,expires,register_refresher_listener); } From 49a91becb72b3cc1e750e49773188a8f4e3c3016 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 24 Feb 2015 18:10:49 +0100 Subject: [PATCH 487/496] cleanups, add network simulation api to liblinphone --- coreapi/dict.c | 2 +- coreapi/event.h | 2 +- coreapi/help/doxygen.dox | 6 ++++++ coreapi/linphone_tunnel.cc | 24 ++--------------------- coreapi/linphone_tunnel.h | 4 ++-- coreapi/linphonecall.c | 3 ++- coreapi/linphonecore.h | 21 ++++++++++++++++++++ coreapi/misc.c | 40 ++++++++++++++++++++++++++++++++++++++ coreapi/private.h | 1 + mediastreamer2 | 2 +- oRTP | 2 +- tester/call_tester.c | 17 ++++++++-------- 12 files changed, 86 insertions(+), 38 deletions(-) diff --git a/coreapi/dict.c b/coreapi/dict.c index 4535e1a27..417bb33f0 100644 --- a/coreapi/dict.c +++ b/coreapi/dict.c @@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** - * @addtogroup linphone_dict + * @addtogroup misc * @{ **/ diff --git a/coreapi/event.h b/coreapi/event.h index 894f3e32a..fe3f984de 100644 --- a/coreapi/event.h +++ b/coreapi/event.h @@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define LINPHONEEVENT_H /** - * @addtogroup subscriptions + * @addtogroup event_api * @{ **/ diff --git a/coreapi/help/doxygen.dox b/coreapi/help/doxygen.dox index 0f8e094f4..a8baa5138 100644 --- a/coreapi/help/doxygen.dox +++ b/coreapi/help/doxygen.dox @@ -221,6 +221,12 @@ void text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddre * **/ + +/** + * @defgroup event_api Managing generic subscriptions and publishes + * The LinphoneEvent api allows application to control subscriptions, receive notifications and make publish to peers, in a generic manner. + */ + /** * @defgroup misc Miscenalleous: logs, version strings, config storage **/ diff --git a/coreapi/linphone_tunnel.cc b/coreapi/linphone_tunnel.cc index 9dd4e8adf..7dd27d890 100644 --- a/coreapi/linphone_tunnel.cc +++ b/coreapi/linphone_tunnel.cc @@ -29,8 +29,6 @@ #include "private.h" #include "lpconfig.h" -static const char *_tunnel_mode_str[3] = { "disable", "enable", "auto" }; - LinphoneTunnel* linphone_core_get_tunnel(const LinphoneCore *lc){ return lc->tunnel; } @@ -234,7 +232,7 @@ void linphone_tunnel_clean_servers(LinphoneTunnel *tunnel){ } void linphone_tunnel_set_mode(LinphoneTunnel *tunnel, LinphoneTunnelMode mode){ - lp_config_set_string(config(tunnel),"tunnel","mode", tunnel_mode_to_string(mode)); + lp_config_set_string(config(tunnel),"tunnel","mode", linphone_tunnel_mode_to_string(mode)); bcTunnel(tunnel)->setMode(mode); } @@ -336,31 +334,13 @@ static void my_ortp_logv(OrtpLogLevel level, const char *fmt, va_list args){ ortp_logv(level,fmt,args); } -LinphoneTunnelMode string_to_tunnel_mode(const char *string) { - if(string != NULL) { - int i; - for(i=0; i<3 && strcmp(string, _tunnel_mode_str[i]) != 0; i++); - if(i<3) { - return (LinphoneTunnelMode)i; - } else { - ms_error("Invalid tunnel mode '%s'", string); - return LinphoneTunnelModeDisable; - } - } else { - return LinphoneTunnelModeDisable; - } -} - -const char *tunnel_mode_to_string(LinphoneTunnelMode mode) { - return _tunnel_mode_str[mode]; -} /** * Startup tunnel using configuration. * Called internally from linphonecore at startup. */ void linphone_tunnel_configure(LinphoneTunnel *tunnel){ - LinphoneTunnelMode mode = string_to_tunnel_mode(lp_config_get_string(config(tunnel), "tunnel", "mode", NULL)); + LinphoneTunnelMode mode = linphone_tunnel_mode_from_string(lp_config_get_string(config(tunnel), "tunnel", "mode", NULL)); bool_t tunnelizeSIPPackets = (bool_t)lp_config_get_int(config(tunnel), "tunnel", "sip", TRUE); linphone_tunnel_enable_logs_with_handler(tunnel,TRUE,my_ortp_logv); linphone_tunnel_load_config(tunnel); diff --git a/coreapi/linphone_tunnel.h b/coreapi/linphone_tunnel.h index f071f3c37..c1c378ed3 100644 --- a/coreapi/linphone_tunnel.h +++ b/coreapi/linphone_tunnel.h @@ -65,14 +65,14 @@ typedef enum _LinphoneTunnelMode { * @return An LinphoneTunnelMode enum. If the passed string is NULL or * does not match with any mode, the LinphoneTunnelModeDisable is returned. */ -LINPHONE_PUBLIC LinphoneTunnelMode string_to_tunnel_mode(const char *string); +LINPHONE_PUBLIC LinphoneTunnelMode linphone_tunnel_mode_from_string(const char *string); /** * Convert a tunnel mode enum into string * @param mode Enum to convert * @return "disable", "enable" or "auto" */ -LINPHONE_PUBLIC const char *tunnel_mode_to_string(LinphoneTunnelMode mode); +LINPHONE_PUBLIC const char *linphone_tunnel_mode_to_string(LinphoneTunnelMode mode); /** * Create a new tunnel configuration diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index b118b163f..94573cad1 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -1863,7 +1863,7 @@ void linphone_call_init_audio_stream(LinphoneCall *call){ call->media_ports[0].mcast_rtp_port ? call->media_ports[0].mcast_rtp_port : call->media_ports[0].rtp_port, call->media_ports[0].mcast_rtcp_port ? call->media_ports[0].mcast_rtcp_port : call->media_ports[0].rtcp_port); linphone_call_join_multicast_group(call, 0, &audiostream->ms); - + rtp_session_enable_network_simulation(call->audiostream->ms.sessions.rtp_session, &lc->net_conf.netsim_params); cname = linphone_address_as_string_uri_only(call->me); audio_stream_set_rtcp_information(call->audiostream, cname, rtcp_tool); ms_free(cname); @@ -1972,6 +1972,7 @@ void linphone_call_init_video_stream(LinphoneCall *call){ call->media_ports[1].mcast_rtp_port>0 ? call->media_ports[1].mcast_rtp_port : call->media_ports[1].rtp_port, call->media_ports[1].mcast_rtcp_port>0 ? call->media_ports[1].mcast_rtcp_port : call->media_ports[1].rtcp_port); linphone_call_join_multicast_group(call, 1, &call->videostream->ms); + rtp_session_enable_network_simulation(call->videostream->ms.sessions.rtp_session, &lc->net_conf.netsim_params); cname = linphone_address_as_string_uri_only(call->me); video_stream_set_rtcp_information(call->videostream, cname, rtcp_tool); ms_free(cname); diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 7e3994706..5f1e4f5c2 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -3481,6 +3481,27 @@ LINPHONE_PUBLIC void linphone_core_enable_video_multicast(LinphoneCore *core, bo **/ LINPHONE_PUBLIC bool_t linphone_core_video_multicast_enabled(const LinphoneCore *core); +/** + * Set the network simulator parameters. + * Liblinphone has the capabability of simulating the effects of a network (latency, lost packets, jitter, max bandwidth). + * Please refer to the oRTP documentation for the meaning of the parameters of the OrtpNetworkSimulatorParams structure. + * This function has effect for future calls, but not for currently running calls, though this behavior may be changed in future versions. + * @warning Due to design of network simulation in oRTP, simulation is applied independently for audio and video stream. This means for example that a bandwidth + * limit of 250kbit/s will have no effect on an audio stream running at 40kbit/s while a videostream targetting 400kbit/s will be highly affected. + * @param lc the LinphoneCore + * @param params the parameters used for the network simulation. + * @return 0 if successful, -1 otherwise. +**/ +LINPHONE_PUBLIC int linphone_core_set_network_simulator_params(LinphoneCore *lc, const OrtpNetworkSimulatorParams *params); + + +/** + * Get the previously set network simulation parameters. + * @see linphone_core_set_network_simulator_params + * @return a OrtpNetworkSimulatorParams structure. +**/ +LINPHONE_PUBLIC const OrtpNetworkSimulatorParams *linphone_core_get_network_simulator_params(const LinphoneCore *lc); + #ifdef __cplusplus } #endif diff --git a/coreapi/misc.c b/coreapi/misc.c index 5912acc8f..666ac8919 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -1600,3 +1600,43 @@ bool_t linphone_core_symmetric_rtp_enabled(LinphoneCore*lc){ return lp_config_get_int(lc->config,"rtp","symmetric",1); } +int linphone_core_set_network_simulator_params(LinphoneCore *lc, const OrtpNetworkSimulatorParams *params){ + if (params!=&lc->net_conf.netsim_params) + lc->net_conf.netsim_params=*params; + /*TODO: should we make some sanity checks on the parameters here*/ + return 0; +} + +const OrtpNetworkSimulatorParams *linphone_core_get_network_simulator_params(const LinphoneCore *lc){ + return &lc->net_conf.netsim_params; +} + +static const char *_tunnel_mode_str[3] = { "disable", "enable", "auto" }; + +LinphoneTunnelMode linphone_tunnel_mode_from_string(const char *string) { + if(string != NULL) { + int i; + for(i=0; i<3 && strcmp(string, _tunnel_mode_str[i]) != 0; i++); + if(i<3) { + return (LinphoneTunnelMode)i; + } else { + ms_error("Invalid tunnel mode '%s'", string); + return LinphoneTunnelModeDisable; + } + } else { + return LinphoneTunnelModeDisable; + } +} + +const char *linphone_tunnel_mode_to_string(LinphoneTunnelMode mode) { + switch(mode){ + case LinphoneTunnelModeAuto: + return "auto"; + case LinphoneTunnelModeDisable: + return "disable"; + case LinphoneTunnelModeEnable: + return "enable"; + } + return "invalid"; +} + diff --git a/coreapi/private.h b/coreapi/private.h index 4414f50ec..d08c569ff 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -622,6 +622,7 @@ typedef struct net_config int download_bw; int upload_bw; int mtu; + OrtpNetworkSimulatorParams netsim_params; bool_t nat_sdp_only; }net_config_t; diff --git a/mediastreamer2 b/mediastreamer2 index 680421e38..0765d7dc4 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 680421e382ac666d58866f00e1ac5693d939fc07 +Subproject commit 0765d7dc442b85e3ecb27c7e1678dde2adecb3f1 diff --git a/oRTP b/oRTP index 60f6d0f90..d515df047 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 60f6d0f909eddcefc83960f791ff30097c1e5c33 +Subproject commit d515df047678da3777b5e4691dc069c6837f77bf diff --git a/tester/call_tester.c b/tester/call_tester.c index 5442364d7..326a2a29e 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2354,18 +2354,18 @@ void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_r } - if (policy == LinphonePolicyUseIce) + if (policy == LinphonePolicyUseIce){ + int i=0; CU_ASSERT_TRUE(check_ice(pauline,marie,enable_tunnel?LinphoneIceStateReflexiveConnection:LinphoneIceStateHostConnection)); + for (i=0;i<100;i++) { /*fixme to workaround a crash*/ + ms_usleep(20000); + linphone_core_iterate(marie->lc); + linphone_core_iterate(pauline->lc); + } + } #ifdef VIDEO_ENABLED if (enable_video) { - int i=0; if (linphone_core_video_supported(marie->lc)) { - for (i=0;i<100;i++) { /*fixme to workaround a crash*/ - ms_usleep(20000); - linphone_core_iterate(marie->lc); - linphone_core_iterate(pauline->lc); - } - add_video(pauline,marie); if (policy == LinphonePolicyUseIce) CU_ASSERT_TRUE(check_ice(pauline,marie,enable_tunnel?LinphoneIceStateReflexiveConnection:LinphoneIceStateHostConnection)); @@ -2376,7 +2376,6 @@ void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_r } else { ms_warning ("not tested because video not available"); } - } #endif From 2a2ef0f94d8afe8218605fc0a61bdc533b88f736 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 24 Feb 2015 18:22:41 +0100 Subject: [PATCH 488/496] fix compile issue --- coreapi/TunnelManager.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coreapi/TunnelManager.cc b/coreapi/TunnelManager.cc index bbce579a3..128707a12 100644 --- a/coreapi/TunnelManager.cc +++ b/coreapi/TunnelManager.cc @@ -202,8 +202,8 @@ void TunnelManager::setMode(LinphoneTunnelMode mode) { return; } ms_message("TunnelManager: switching mode from %s to %s", - tunnel_mode_to_string(mMode), - tunnel_mode_to_string(mode)); + linphone_tunnel_mode_to_string(mMode), + linphone_tunnel_mode_to_string(mode)); switch(mode) { case LinphoneTunnelModeEnable: if(mState == disabled) { From 6057309befaf9fc60452483d41addd9411f752e4 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 24 Feb 2015 19:21:36 +0100 Subject: [PATCH 489/496] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 0765d7dc4..785d2e628 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 0765d7dc442b85e3ecb27c7e1678dde2adecb3f1 +Subproject commit 785d2e6282b9f6fb6579ce221d6d8d67f58d5b43 From 32c226da910fbe6c202707ed25f41c90082d17a8 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 24 Feb 2015 21:31:35 +0100 Subject: [PATCH 490/496] avoid crash in a failed test --- tester/dtmf_tester.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tester/dtmf_tester.c b/tester/dtmf_tester.c index 1c80c21c6..c4c2e3bfe 100644 --- a/tester/dtmf_tester.c +++ b/tester/dtmf_tester.c @@ -46,6 +46,10 @@ void send_dtmf_base(bool_t use_rfc2833, bool_t use_sipinfo, char dtmf, char* dtm CU_ASSERT_TRUE(call(pauline,marie)); marie_call = linphone_core_get_current_call(marie->lc); + + CU_ASSERT_PTR_NOT_NULL(marie_call); + + if (!marie_call) return; if (dtmf != '\0') { dtmf_count_prev = pauline->stat.dtmf_count; From c7aa499ddb1ca9c0f330ba4c0e39eecdd11564bd Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 24 Feb 2015 22:12:15 +0100 Subject: [PATCH 491/496] telephone-event and confort noise are not so necessary in video streams, actually. --- coreapi/linphonecall.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 94573cad1..f877feae6 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -356,9 +356,8 @@ typedef struct _CodecConstraints{ MSList *previously_used; }CodecConstraints; -static MSList *make_codec_list(LinphoneCore *lc, CodecConstraints * hints, const MSList *codecs){ +static MSList *make_codec_list(LinphoneCore *lc, CodecConstraints * hints, SalStreamType stype, const MSList *codecs){ MSList *l=NULL; - MSList *specials=NULL; const MSList *it; int nb = 0; @@ -389,8 +388,10 @@ static MSList *make_codec_list(LinphoneCore *lc, CodecConstraints * hints, const nb++; if ((hints->max_codecs > 0) && (nb >= hints->max_codecs)) break; } - specials=create_special_payload_types(lc,l); - l=ms_list_concat(l,specials); + if (stype==SalAudio){ + MSList *specials=create_special_payload_types(lc,l); + l=ms_list_concat(l,specials); + } linphone_core_assign_payload_type_numbers(lc, l); return l; } @@ -633,7 +634,7 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * codec_hints.bandwidth_limit=call->params->audio_bw; codec_hints.max_codecs=-1; codec_hints.previously_used=old_md ? old_md->streams[0].already_assigned_payloads : NULL; - l=make_codec_list(lc, &codec_hints, lc->codecs_conf.audio_codecs); + l=make_codec_list(lc, &codec_hints, SalAudio, lc->codecs_conf.audio_codecs); md->streams[0].max_rate=get_max_codec_sample_rate(l); md->streams[0].payloads=l; if (call->audiostream && call->audiostream->ms.sessions.rtp_session) { @@ -658,7 +659,7 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * codec_hints.bandwidth_limit=0; codec_hints.max_codecs=-1; codec_hints.previously_used=old_md ? old_md->streams[1].already_assigned_payloads : NULL; - l=make_codec_list(lc, &codec_hints, lc->codecs_conf.video_codecs); + l=make_codec_list(lc, &codec_hints, SalVideo, lc->codecs_conf.video_codecs); md->streams[1].payloads=l; if (call->videostream && call->videostream->ms.sessions.rtp_session) { char* me = linphone_address_as_string_uri_only(call->me); @@ -684,7 +685,7 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * codec_hints.bandwidth_limit=0; codec_hints.max_codecs=1; codec_hints.previously_used=NULL; - l = make_codec_list(lc, &codec_hints, lc->codecs_conf.video_codecs); + l = make_codec_list(lc, &codec_hints, SalVideo, lc->codecs_conf.video_codecs); md->streams[i].payloads = l; } setup_encryption_keys(call,md); From 8906700884487b91bfdc12c40abbc2f2dc9f0173 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 25 Feb 2015 09:05:08 +0100 Subject: [PATCH 492/496] robustize tests --- tester/call_tester.c | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 326a2a29e..aa01fb48f 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -3078,28 +3078,35 @@ static void multiple_early_media(void) { marie1_call=linphone_core_get_current_call(marie1->lc); marie2_call=linphone_core_get_current_call(marie2->lc); - /*wait a bit that streams are established*/ - wait_for_list(lcs,&dummy,1,6000); - CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>70); - CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>70); - CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie2_call)->download_bandwidth>70); + CU_ASSERT_PTR_NOT_NULL(pauline_call); + CU_ASSERT_PTR_NOT_NULL(marie1_call); + CU_ASSERT_PTR_NOT_NULL(marie2_call); + + if (pauline_call && marie1_call && marie2_call){ + + /*wait a bit that streams are established*/ + wait_for_list(lcs,&dummy,1,6000); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>70); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>70); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie2_call)->download_bandwidth>70); - linphone_core_accept_call(marie1->lc,linphone_core_get_current_call(marie1->lc)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallStreamsRunning,1,3000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallStreamsRunning,1,3000)); + linphone_core_accept_call(marie1->lc,linphone_core_get_current_call(marie1->lc)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallStreamsRunning,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallStreamsRunning,1,3000)); - /*marie2 should get her call terminated*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie2->stat.number_of_LinphoneCallEnd,1,1000)); + /*marie2 should get her call terminated*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&marie2->stat.number_of_LinphoneCallEnd,1,1000)); - /*wait a bit that streams are established*/ - wait_for_list(lcs,&dummy,1,3000); - CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>71); - CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>71); + /*wait a bit that streams are established*/ + wait_for_list(lcs,&dummy,1,3000); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>71); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>71); - /*send an INFO in reverse side to check that dialogs are properly established*/ - info=linphone_core_create_info_message(marie1->lc); - linphone_call_send_info_message(marie1_call,info); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_inforeceived,1,3000)); + /*send an INFO in reverse side to check that dialogs are properly established*/ + info=linphone_core_create_info_message(marie1->lc); + linphone_call_send_info_message(marie1_call,info); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_inforeceived,1,3000)); + } linphone_core_terminate_all_calls(pauline->lc); CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,3000)); From f940c5098bb72fddea574528ac1f560cc2756fb7 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 25 Feb 2015 09:12:34 +0100 Subject: [PATCH 493/496] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 785d2e628..73cd58c02 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 785d2e6282b9f6fb6579ce221d6d8d67f58d5b43 +Subproject commit 73cd58c02e540ac0017c36729510cba97088c42f From 084e21cbde56fb71f1cf5de1b243c8f9c9016b05 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 24 Feb 2015 18:17:34 +0100 Subject: [PATCH 494/496] fix dtls sdp path when dtls attribute are in sdp session --- coreapi/bellesip_sal/sal_sdp.c | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/coreapi/bellesip_sal/sal_sdp.c b/coreapi/bellesip_sal/sal_sdp.c index 1504b25c6..806b50e10 100644 --- a/coreapi/bellesip_sal/sal_sdp.c +++ b/coreapi/bellesip_sal/sal_sdp.c @@ -674,8 +674,6 @@ static SalStreamDescription * sdp_to_stream_description(SalMediaDescription *md, stream=&md->streams[md->nb_streams]; media=belle_sdp_media_description_get_media ( media_desc ); - memset ( stream,0,sizeof ( *stream ) ); - proto = belle_sdp_media_get_protocol ( media ); stream->proto=SalProtoOther; if ( proto ) { @@ -748,8 +746,6 @@ static SalStreamDescription * sdp_to_stream_description(SalMediaDescription *md, } /* Read DTLS specific attributes : check is some are found in the stream description otherwise copy the session description one(which are at least set to Invalid) */ - stream->dtls_role = SalDtlsRoleInvalid; - stream->dtls_fingerprint[0] = '\0'; if (((stream->proto == SalProtoUdpTlsRtpSavpf) || (stream->proto == SalProtoUdpTlsRtpSavp))) { attribute=belle_sdp_media_description_get_attribute(media_desc,"setup"); if (attribute && (value=belle_sdp_attribute_get_value(attribute))!=NULL){ @@ -760,10 +756,9 @@ static SalStreamDescription * sdp_to_stream_description(SalMediaDescription *md, } else if (strncmp(value, "passive", 7) == 0) { stream->dtls_role = SalDtlsRoleIsServer; } - if (stream->dtls_role != SalDtlsRoleInvalid) { - attribute=belle_sdp_media_description_get_attribute(media_desc,"fingerprint"); - strncpy(stream->dtls_fingerprint, belle_sdp_attribute_get_value(attribute),sizeof(stream->dtls_fingerprint)); - } + } + if (stream->dtls_role != SalDtlsRoleInvalid && (attribute=belle_sdp_media_description_get_attribute(media_desc,"fingerprint"))) { + strncpy(stream->dtls_fingerprint, belle_sdp_attribute_get_value(attribute),sizeof(stream->dtls_fingerprint)); } } @@ -796,6 +791,8 @@ int sdp_to_media_description ( belle_sdp_session_description_t *session_desc, S belle_sdp_media_description_t* media_desc; belle_sdp_session_name_t *sname; const char* value; + SalDtlsRole session_role=SalDtlsRoleInvalid; + int i; desc->nb_streams = 0; desc->dir = SalStreamSendRecv; @@ -825,7 +822,6 @@ int sdp_to_media_description ( belle_sdp_session_description_t *session_desc, S /*DTLS attributes can be defined at session level.*/ value=belle_sdp_session_description_get_attribute_value(session_desc,"setup"); if (value){ - SalDtlsRole session_role=SalDtlsRoleInvalid; if (strncmp(value, "actpass", 7) == 0) { session_role = SalDtlsRoleUnset; } else if (strncmp(value, "active", 6) == 0) { @@ -833,19 +829,14 @@ int sdp_to_media_description ( belle_sdp_session_description_t *session_desc, S } else if (strncmp(value, "passive", 7) == 0) { session_role = SalDtlsRoleIsServer; } - value=belle_sdp_session_description_get_attribute_value(session_desc,"fingerprint"); - if (value){ - int i; - /*copy dtls attributes to every streams, might be overwritten stream by stream*/ - for (i=0;istreams[i].dtls_fingerprint, value, sizeof(desc->streams[i].dtls_fingerprint)); - desc->streams[i].dtls_role=session_role; - } - } - } - - + value=belle_sdp_session_description_get_attribute_value(session_desc,"fingerprint"); + /*copy dtls attributes to every streams, might be overwritten stream by stream*/ + for (i=0;istreams[i].dtls_fingerprint, value, sizeof(desc->streams[i].dtls_fingerprint)); + desc->streams[i].dtls_role=session_role; /*set or reset value*/ + } /* Get ICE remote ufrag and remote pwd, and ice_lite flag */ value=belle_sdp_session_description_get_attribute_value(session_desc,"ice-ufrag"); From ccf541c8e7fad78c6ffba1c206ed55012687aebf Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 25 Feb 2015 10:31:25 +0100 Subject: [PATCH 495/496] robustize tests --- mediastreamer2 | 2 +- tester/call_tester.c | 236 +++++++++++++++++++++++-------------------- 2 files changed, 126 insertions(+), 112 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 73cd58c02..938c6e4ca 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 73cd58c02e540ac0017c36729510cba97088c42f +Subproject commit 938c6e4cade5c09e6cfa5a5e9189007f8323f3d0 diff --git a/tester/call_tester.c b/tester/call_tester.c index aa01fb48f..7171e22b9 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -2684,32 +2684,35 @@ static void unattended_call_transfer_with_error(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); LinphoneCall* pauline_called_by_marie; - + bool_t call_ok=TRUE; MSList* lcs=ms_list_append(NULL,marie->lc); + lcs=ms_list_append(lcs,pauline->lc); - CU_ASSERT_TRUE(call(marie,pauline)); - pauline_called_by_marie=linphone_core_get_current_call(marie->lc); + CU_ASSERT_TRUE((call_ok=call(marie,pauline))); + if (call_ok){ + pauline_called_by_marie=linphone_core_get_current_call(marie->lc); - reset_counters(&marie->stat); - reset_counters(&pauline->stat); + reset_counters(&marie->stat); + reset_counters(&pauline->stat); - linphone_core_transfer_call(marie->lc,pauline_called_by_marie,"unknown_user"); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallRefered,1,2000)); + linphone_core_transfer_call(marie->lc,pauline_called_by_marie,"unknown_user"); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallRefered,1,2000)); - /*Pauline starts the transfer*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingInit,1,2000)); - /* and immediately get an error*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallError,1,2000)); + /*Pauline starts the transfer*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingInit,1,2000)); + /* and immediately get an error*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallError,1,2000)); - /*the error must be reported back to marie*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallError,1,2000)); + /*the error must be reported back to marie*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallError,1,2000)); - /*and pauline should resume the call automatically*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallResuming,1,2000)); + /*and pauline should resume the call automatically*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallResuming,1,2000)); - /*and call should be resumed*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallStreamsRunning,1,2000)); + /*and call should be resumed*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallStreamsRunning,1,2000)); + } linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); @@ -2721,70 +2724,71 @@ static void call_transfer_existing_call_outgoing_call(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); LinphoneCoreManager* laure = linphone_core_manager_new( "laure_rc"); - LinphoneCall* marie_call_pauline; LinphoneCall* pauline_called_by_marie; LinphoneCall* marie_call_laure; LinphoneCall* laure_called_by_marie; LinphoneCall* lcall; - - MSList* lcs=ms_list_append(NULL,marie->lc); + bool_t call_ok=TRUE; const MSList* calls; - + MSList* lcs=ms_list_append(NULL,marie->lc); + lcs=ms_list_append(lcs,pauline->lc); lcs=ms_list_append(lcs,laure->lc); /*marie call pauline*/ - CU_ASSERT_TRUE(call(marie,pauline)); - marie_call_pauline=linphone_core_get_current_call(marie->lc); - pauline_called_by_marie=linphone_core_get_current_call(pauline->lc); - /*marie pause pauline*/ - CU_ASSERT_TRUE(pause_call_1(marie,marie_call_pauline,pauline,pauline_called_by_marie)); + CU_ASSERT_TRUE((call_ok=call(marie,pauline))); + if (call_ok){ + marie_call_pauline=linphone_core_get_current_call(marie->lc); + pauline_called_by_marie=linphone_core_get_current_call(pauline->lc); + /*marie pause pauline*/ + CU_ASSERT_TRUE(pause_call_1(marie,marie_call_pauline,pauline,pauline_called_by_marie)); - /*marie call laure*/ - CU_ASSERT_TRUE(call(marie,laure)); - marie_call_laure=linphone_core_get_current_call(marie->lc); - laure_called_by_marie=linphone_core_get_current_call(laure->lc); - /*marie pause laure*/ - CU_ASSERT_TRUE(pause_call_1(marie,marie_call_laure,laure,laure_called_by_marie)); + /*marie call laure*/ + CU_ASSERT_TRUE(call(marie,laure)); + marie_call_laure=linphone_core_get_current_call(marie->lc); + laure_called_by_marie=linphone_core_get_current_call(laure->lc); + /*marie pause laure*/ + CU_ASSERT_TRUE(pause_call_1(marie,marie_call_laure,laure,laure_called_by_marie)); - reset_counters(&marie->stat); - reset_counters(&pauline->stat); - reset_counters(&laure->stat); + reset_counters(&marie->stat); + reset_counters(&pauline->stat); + reset_counters(&laure->stat); - linphone_core_transfer_call_to_another(marie->lc,marie_call_pauline,marie_call_laure); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallRefered,1,2000)); + linphone_core_transfer_call_to_another(marie->lc,marie_call_pauline,marie_call_laure); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallRefered,1,2000)); - /*pauline pausing marie*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallPausing,1,4000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallPaused,1,4000)); - /*pauline calling laure*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingProgress,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallOutgoingInit,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallIncomingReceived,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingRinging,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallOutgoingProgress,1,2000)); + /*pauline pausing marie*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallPausing,1,4000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallPaused,1,4000)); + /*pauline calling laure*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingProgress,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallOutgoingInit,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallIncomingReceived,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingRinging,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallOutgoingProgress,1,2000)); - /*laure accept call*/ - for(calls=linphone_core_get_calls(laure->lc);calls!=NULL;calls=calls->next) { - lcall = (LinphoneCall*)calls->data; - if (linphone_call_get_state(lcall) == LinphoneCallIncomingReceived) { - CU_ASSERT_EQUAL(linphone_call_get_replaced_call(lcall),laure_called_by_marie); - linphone_core_accept_call(laure->lc,lcall); - break; + /*laure accept call*/ + for(calls=linphone_core_get_calls(laure->lc);calls!=NULL;calls=calls->next) { + lcall = (LinphoneCall*)calls->data; + if (linphone_call_get_state(lcall) == LinphoneCallIncomingReceived) { + CU_ASSERT_EQUAL(linphone_call_get_replaced_call(lcall),laure_called_by_marie); + linphone_core_accept_call(laure->lc,lcall); + break; + } } - } - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallConnected,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallStreamsRunning,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallConnected,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallStreamsRunning,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallConnected,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallConnected,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallStreamsRunning,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallConnected,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallStreamsRunning,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallConnected,1,2000)); - /*terminate marie to pauline/laure call*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,2,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,2000)); + /*terminate marie to pauline/laure call*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,2,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,2000)); + } linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); @@ -2797,31 +2801,35 @@ static void check_call_state(LinphoneCoreManager* mgr,LinphoneCallState state) { if (linphone_core_get_current_call(mgr->lc)) CU_ASSERT_EQUAL(linphone_call_get_state(linphone_core_get_current_call(mgr->lc)),state); } + static void call_established_with_rejected_info(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); int dummy=0; + bool_t call_ok=FALSE; - CU_ASSERT_TRUE(call(pauline,marie)); + CU_ASSERT_TRUE((call_ok=call(pauline,marie))); + if (call_ok){ - sal_enable_unconditional_answer(marie->lc->sal,TRUE); - linphone_call_send_info_message(linphone_core_get_current_call(pauline->lc),linphone_core_create_info_message(pauline->lc)); + sal_enable_unconditional_answer(marie->lc->sal,TRUE); + linphone_call_send_info_message(linphone_core_get_current_call(pauline->lc),linphone_core_create_info_message(pauline->lc)); - wait_for_until(marie->lc,pauline->lc,&dummy,1,1000); /*just to sleep while iterating 1s*/ + wait_for_until(marie->lc,pauline->lc,&dummy,1,1000); /*just to sleep while iterating 1s*/ - sal_enable_unconditional_answer(marie->lc->sal,FALSE); + sal_enable_unconditional_answer(marie->lc->sal,FALSE); - linphone_call_send_info_message(linphone_core_get_current_call(pauline->lc),linphone_core_create_info_message(pauline->lc)); - CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_inforeceived,1)); - CU_ASSERT_EQUAL(marie->stat.number_of_inforeceived,1); + linphone_call_send_info_message(linphone_core_get_current_call(pauline->lc),linphone_core_create_info_message(pauline->lc)); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_inforeceived,1)); + CU_ASSERT_EQUAL(marie->stat.number_of_inforeceived,1); - check_call_state(pauline,LinphoneCallStreamsRunning); - check_call_state(marie,LinphoneCallStreamsRunning); + check_call_state(pauline,LinphoneCallStreamsRunning); + check_call_state(marie,LinphoneCallStreamsRunning); - /*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)); + /*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); @@ -2831,30 +2839,32 @@ static void call_established_with_rejected_info(void) { static void call_established_with_rejected_reinvite(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + bool_t call_ok=FALSE; - CU_ASSERT_TRUE(call(pauline,marie)); - - linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMU",8000,1),FALSE); /*disable PCMU*/ - linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMA",8000,1),TRUE); /*enable PCMA*/ + CU_ASSERT_TRUE(call_ok=call(pauline,marie)); + if (call_ok){ + linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMU",8000,1),FALSE); /*disable PCMU*/ + linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMA",8000,1),TRUE); /*enable PCMA*/ - linphone_core_update_call( pauline->lc - ,linphone_core_get_current_call(pauline->lc) - ,linphone_call_get_current_params(linphone_core_get_current_call(pauline->lc))); + linphone_core_update_call( pauline->lc + ,linphone_core_get_current_call(pauline->lc) + ,linphone_call_get_current_params(linphone_core_get_current_call(pauline->lc))); - CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); - CU_ASSERT_EQUAL(linphone_call_get_reason(linphone_core_get_current_call(pauline->lc)),LinphoneReasonNotAcceptable); + CU_ASSERT_EQUAL(linphone_call_get_reason(linphone_core_get_current_call(pauline->lc)),LinphoneReasonNotAcceptable); - CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneCallStreamsRunning,1); - check_call_state(pauline,LinphoneCallStreamsRunning); - check_call_state(marie,LinphoneCallStreamsRunning); + CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneCallStreamsRunning,1); + check_call_state(pauline,LinphoneCallStreamsRunning); + check_call_state(marie,LinphoneCallStreamsRunning); - /*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)); + /*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); @@ -2863,33 +2873,37 @@ static void call_established_with_rejected_reinvite(void) { static void call_established_with_rejected_incoming_reinvite(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + bool_t call_ok=FALSE; - CU_ASSERT_TRUE(call(pauline,marie)); + CU_ASSERT_TRUE((call_ok=call(pauline,marie))); + + if (call_ok){ - /*wait for ACK to be transmitted before going to reINVITE*/ - wait_for_until(marie->lc,pauline->lc,NULL,0,1000); + /*wait for ACK to be transmitted before going to reINVITE*/ + wait_for_until(marie->lc,pauline->lc,NULL,0,1000); - linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMU",8000,1),FALSE); /*disable PCMU*/ - linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMA",8000,1),TRUE); /*enable PCMA*/ + linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMU",8000,1),FALSE); /*disable PCMU*/ + linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMA",8000,1),TRUE); /*enable PCMA*/ - linphone_core_update_call(marie->lc - ,linphone_core_get_current_call(marie->lc) - ,linphone_call_get_current_params(linphone_core_get_current_call(marie->lc))); + linphone_core_update_call(marie->lc + ,linphone_core_get_current_call(marie->lc) + ,linphone_call_get_current_params(linphone_core_get_current_call(marie->lc))); - CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallUpdating,1)); - CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,2)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallUpdating,1)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,2)); - CU_ASSERT_EQUAL(linphone_call_get_reason(linphone_core_get_current_call(marie->lc)),LinphoneReasonNotAcceptable); + CU_ASSERT_EQUAL(linphone_call_get_reason(linphone_core_get_current_call(marie->lc)),LinphoneReasonNotAcceptable); - CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneCallStreamsRunning,1); - check_call_state(pauline,LinphoneCallStreamsRunning); - check_call_state(marie,LinphoneCallStreamsRunning); + CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneCallStreamsRunning,1); + check_call_state(pauline,LinphoneCallStreamsRunning); + check_call_state(marie,LinphoneCallStreamsRunning); - /*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)); + /*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); From 65734e818d60700b9f76ffb772e1d736afa30da2 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 25 Feb 2015 12:22:47 +0100 Subject: [PATCH 496/496] move android lock mgt to call state cb --- coreapi/linphonecall.c | 72 +++++++++++++++++++++---------------- tester/liblinphone_tester.h | 1 + tester/tester.c | 4 +-- 3 files changed, 45 insertions(+), 32 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index f877feae6..3f0be84cd 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -818,11 +818,6 @@ static void linphone_call_init_common(LinphoneCall *call, LinphoneAddress *from, linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_AUDIO], LINPHONE_CALL_STATS_AUDIO); linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_VIDEO], LINPHONE_CALL_STATS_VIDEO); -#ifdef ANDROID - ms_message("Call [%p] acquires both wifi and multicast lock",call); - linphone_core_wifi_lock_acquire(call->core); - linphone_core_multicast_lock_acquire(call->core); /*does no affect battery more than regular rtp traffic*/ -#endif } void linphone_call_init_stats(LinphoneCallStats *stats, int type) { @@ -1248,13 +1243,14 @@ void linphone_call_set_state(LinphoneCall *call, LinphoneCallState cstate, const call->prevstate=call->state; if (call->state==LinphoneCallEnd || call->state==LinphoneCallError){ if (cstate!=LinphoneCallReleased){ - ms_warning("Spurious call state change from %s to %s, ignored.",linphone_call_state_to_string(call->state), - linphone_call_state_to_string(cstate)); + ms_warning("Spurious call state change from %s to %s, ignored." ,linphone_call_state_to_string(call->state) + ,linphone_call_state_to_string(cstate)); return; } } - ms_message("Call %p: moving from state %s to %s",call,linphone_call_state_to_string(call->state), - linphone_call_state_to_string(cstate)); + ms_message("Call %p: moving from state %s to %s",call + ,linphone_call_state_to_string(call->state) + ,linphone_call_state_to_string(cstate)); if (cstate!=LinphoneCallRefered){ /*LinphoneCallRefered is rather an event, not a state. @@ -1262,32 +1258,53 @@ void linphone_call_set_state(LinphoneCall *call, LinphoneCallState cstate, const call->state=cstate; } - if (cstate==LinphoneCallEnd || cstate==LinphoneCallError){ + switch (cstate) { + case LinphoneCallOutgoingInit: + case LinphoneCallIncomingReceived: +#ifdef ANDROID + ms_message("Call [%p] acquires both wifi and multicast lock",call); + linphone_core_wifi_lock_acquire(call->core); + linphone_core_multicast_lock_acquire(call->core); /*does no affect battery more than regular rtp traffic*/ +#endif + break; + case LinphoneCallEnd: + case LinphoneCallError: switch(call->non_op_error.reason){ - case SalReasonDeclined: - call->log->status=LinphoneCallDeclined; - break; - case SalReasonRequestTimeout: - call->log->status=LinphoneCallMissed; + case SalReasonDeclined: + call->log->status=LinphoneCallDeclined; break; - default: + case SalReasonRequestTimeout: + call->log->status=LinphoneCallMissed; + break; + default: break; } linphone_call_set_terminated(call); - } - if (cstate == LinphoneCallConnected) { + break; + case LinphoneCallConnected: call->log->status=LinphoneCallSuccess; call->log->connected_date_time=time(NULL); - } + break; + case LinphoneCallStreamsRunning: + if (call->dtmfs_timer!=NULL){ + /*cancelling DTMF sequence, if any*/ + linphone_call_cancel_dtmfs(call); + } + break; + case LinphoneCallReleased: +#ifdef ANDROID + ms_message("Call [%p] releases wifi/multicast lock",call); + linphone_core_wifi_lock_release(call->core); + linphone_core_multicast_lock_release(call->core); +#endif + break; + default: + break; + } 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){ - linphone_call_cancel_dtmfs(call); - } - if (cstate==LinphoneCallReleased){ + if (cstate==LinphoneCallReleased) {/*shall be performed after app notification*/ linphone_call_set_released(call); } linphone_core_soundcard_hint_check(lc); @@ -1364,11 +1381,6 @@ static void linphone_call_destroy(LinphoneCall *obj){ } sal_error_info_reset(&obj->non_op_error); - #ifdef ANDROID - ms_message("Call [%p] releases wifi/multicast lock",obj); - linphone_core_wifi_lock_release(obj->core); - linphone_core_multicast_lock_release(obj->core); - #endif } /** diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index c25f61d6c..c140a6453 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -250,6 +250,7 @@ typedef struct _LinphoneCoreManager { LinphoneAddress* identity; LinphoneEvent *lev; bool_t decline_subscribe; + int number_of_cunit_error_at_creation; } LinphoneCoreManager; typedef struct _LinphoneCallTestParams { diff --git a/tester/tester.c b/tester/tester.c index 9fdedb0ec..aadfbee83 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -257,7 +257,7 @@ LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, int check_f LinphoneProxyConfig* proxy; char *rc_path = NULL; int proxy_count; - + mgr->number_of_cunit_error_at_creation = CU_get_number_of_failures(); mgr->v_table.registration_state_changed=registration_state_changed; mgr->v_table.auth_info_requested=auth_info_requested; mgr->v_table.call_state_changed=call_state_changed; @@ -340,7 +340,7 @@ void linphone_core_manager_destroy(LinphoneCoreManager* mgr) { if (mgr->lc){ const char *record_file=linphone_core_get_record_file(mgr->lc); if (record_file){ - if (CU_get_number_of_failures()>0) { + if ((CU_get_number_of_failures()-mgr->number_of_cunit_error_at_creation)>0) { ms_message ("Test has failed, keeping recorded file [%s]",record_file); } else { unlink(record_file);