From: Guillaume Desmottes Date: Tue, 29 Nov 2011 14:56:11 +0000 (+0100) Subject: Merge remote-tracking branch 'jonny/ft' X-Git-Url: https://git.0d.be/?p=empathy.git;a=commitdiff_plain;h=b5764db7cf39aeaaabc261ece49c57776540a0be;hp=82b0f4038f7c257253962080270e5625dd5de152 Merge remote-tracking branch 'jonny/ft' Conflicts: libempathy/empathy-tp-file.c --- diff --git a/COPYING b/COPYING index d60c31a9..623b6258 100644 --- a/COPYING +++ b/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. 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 + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/NEWS b/NEWS index 53bf2fdb..b3cc0a9e 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,48 @@ +NEW in 3.3.2 (21/11/2011) +============ + +Dependencies: + + • telepathy-glib ≥ 0.17.0 + • telepathy-farsight ≥ 0.0.18 + • telepathy-farstream ≥ 0.1.2 (optional) + +Bugs fixed: + - Fixed #662504, Cannot quit empathy (Guillaume Desmottes) + - Fixed #646682, Support InsufficientBalance error (Emilio Pozuelo Monfort) + - Fixed #652544, Add X-FACEBOOK-PLATFORM and X-MESSENGER-OAUTH2 support (Xavier Claessens) + - Fixed #654430, Add support for video control interface to empathy-call (Nicolas Dufresne, Sjoerd Simons) + - Fixed #661805, Use tp-glib blocking API (Guillaume Desmottes) + - Fixed #662604, In a conversation window, Contact → Add Contact… selects the wrong account (Guillaume Desmottes) + - Fixed #662609, EmpathyAccountChooser clean up (Guillaume Desmottes) + - Fixed #662727, new-call/new-convo dialogs should listen to capabilities changes (Danielle Madeley) + - Fixed #662843, invite dialog looks stupid on IRC (Guillaume Desmottes) + - Fixed #662903, Empathy uses deprecated GTK widgets (potential build errors) (Guillaume Desmottes) + - Fixed #662995, Fix for misaligned 16x16 app icon (Michael Monreal) + - Fixed #663327, Stop using EmpathyContactManager to add and remove contacts (Guillaume Desmottes) + - Fixed #663442, Make GOA optional (Danielle Madeley) + - Fixed #663563, Shouldn't offer to send socket files (Guillaume Desmottes) + - Fixed #663567, Status icon is miss aligned in infobar (Danielle Madeley) + - Fixed #663763, Some contact/invidiual misc patches (Guillaume Desmottes) + - Fixed #663842, Don't do extra audio-processing for raw Contents (Sjoerd Simons) + - Fixed #664313, call-window opens very small the first time (Ken VanDine) + +Translations: + - Updated cs Translation (Marek Černocký) + - Updated de Translation (Christian Kirbach) + - Updated et Translation (Mattias Põldaru) + - Updated gl Translation (Fran Diéguez) + - Updated lt Translation (Algimantas Margevičius) + - Updated my Translation (Thura Hlaing) + - Updated sl Translation (Matej Urbančič) + - Updated tr Translation (Muhammet Kara) + - Updated zh_HK Translation (Cheng-Chia Tseng) + - Updated zh_TW Translation (Cheng-Chia Tseng) + +Documentation translations: + - Updated ca Documentation translation (Gil Forcada) + - Updated pl Documentation translation (Aleksander Łukasiewicz) + NEW in 3.3.1 (24/10/2011) ============ diff --git a/configure.ac b/configure.ac index a5050f72..e0e7e43e 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ m4_define(empathy_released, 0) m4_define([empathy_major_version], [3]) m4_define([empathy_minor_version], [3]) -m4_define([empathy_micro_version], [1]) +m4_define([empathy_micro_version], [2]) m4_define([empathy_nano_version], [0]) dnl Display the nano_version only if it's not '0' @@ -43,8 +43,8 @@ KEYRING_REQUIRED=2.26.0 GCR_REQUIRED=2.91.4 LIBCANBERRA_GTK_REQUIRED=0.25 LIBNOTIFY_REQUIRED=0.7.0 -TELEPATHY_FARSIGHT_REQUIRED=0.0.14 -TELEPATHY_GLIB_REQUIRED=0.16.0 +TELEPATHY_FARSIGHT_REQUIRED=0.0.18 +TELEPATHY_GLIB_REQUIRED=0.17.3 TELEPATHY_LOGGER=0.2.10 WEBKIT_REQUIRED=1.3.13 GOA_REQUIRED=3.3.0 @@ -225,7 +225,7 @@ if test "x$enable_call" != "xno" ; then PKG_CHECK_MODULES(EMPATHY_CALL, [ farsight2-0.10 - telepathy-farstream + telepathy-farstream >= 0.1.2 clutter-1.0 >= $CLUTTER_REQUIRED clutter-gtk-1.0 clutter-gst-1.0 diff --git a/data/Makefile.am b/data/Makefile.am index e6414a80..a08ed620 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -19,11 +19,6 @@ convertdir = $(datarootdir)/GConf/gsettings convert_DATA = \ empathy.convert -streamingprefsdir = $(datadir)/empathy -streamingprefs_DATA = \ - codec-preferences \ - element-properties - servicefiledir = $(datadir)/dbus-1/services servicefile_in_files = \ org.freedesktop.Telepathy.Client.Empathy.Chat.service.in \ @@ -76,7 +71,6 @@ EXTRA_DIST = \ $(desktop_in_files) \ $(desktop_DATA) \ $(schemas_DATA) \ - $(streamingprefs_DATA) \ $(html_DATA) \ $(clientfile_DATA) \ $(servicefile_in_files) \ diff --git a/data/codec-preferences b/data/codec-preferences deleted file mode 100644 index fbd8ad55..00000000 --- a/data/codec-preferences +++ /dev/null @@ -1,50 +0,0 @@ -# Favorite audio codecs - -[audio/SPEEX:8000] -clock-rate=8000 - -[audio/SPEEX:16000] -clock-rate=16000 - -[audio/AMR] - -[audio/G729] - -[audio/ILBC] - -# Disabled audio codecs - -[audio/DV] -id=-1 - -[audio/MPA] -id=-1 - -[audio/VORBIS] -id=-1 - -[audio/MP3] -id=-1 - - -# Favorite video codecs - -# We like freedom and the future (proof of concept VP8 payloading) -[video/X-VP8-GST] - -# but keep an eye on people living in the past -[video/H264] - -[video/H263] - -[video/THEORA] - -# Disable the ones we don't want -[video/JPEG] -id=-1 - -[video/DV] -id=-1 - -[video/MPV] -id=-1 diff --git a/data/element-properties b/data/element-properties deleted file mode 100644 index 68debc23..00000000 --- a/data/element-properties +++ /dev/null @@ -1,59 +0,0 @@ -# Put the desired properties in the style of -# -# [element name] -# prop1=val1 - -[gstrtpbin] -latency=100 - -[x264enc] -byte-stream=1 -bframes=0 -b-adapt=0 -cabac=0 -dct8x8=0 -bitrate=256 -# tuned for zero latency -tune=0x4 -profile=1 -speed-preset=3 -sliced-threads=false -aud=false - -[ffenc_h263] -rtp-payload-size=1 - -[theoraenc] -bitrate=256 - -[vp8enc] -bitrate=256000 -max-latency=1 -speed=2 -error-resilient=true - -# Work around bug in the re-timestamp slaving method in -# GStreamer (2 is skew) -[alsasrc] -slave-method=2 - -[osssrc] -slave-method=2 - -[oss4src] -slave-method=2 - -[sunaudiosrc] -slave-method=2 - -[rtph264pay] -config-interval=5 - -[rtppcmupay] -ptime-multiple=20000000 - -[rtppcmapay] -ptime-multiple=20000000 - -[gstrtpjitterbuffer] -do-lost=1 diff --git a/data/org.gnome.Empathy.gschema.xml.in b/data/org.gnome.Empathy.gschema.xml.in index de57af80..f3975fce 100644 --- a/data/org.gnome.Empathy.gschema.xml.in +++ b/data/org.gnome.Empathy.gschema.xml.in @@ -233,12 +233,6 @@ present them to the user immediately. - - - 100.0 - <_summary>Call volume - <_description>Call volume, as a percentage. - '' <_summary>Camera device diff --git a/goa-mc-plugin/mcp-account-manager-goa.c b/goa-mc-plugin/mcp-account-manager-goa.c index 1185d7ba..fd3942ea 100644 --- a/goa-mc-plugin/mcp-account-manager-goa.c +++ b/goa-mc-plugin/mcp-account-manager-goa.c @@ -82,7 +82,7 @@ mcp_account_manager_goa_finalize (GObject *self) { McpAccountManagerGoaPrivate *priv = GET_PRIVATE (self); - g_hash_table_destroy (priv->accounts); + g_hash_table_unref (priv->accounts); g_key_file_free (priv->store); g_free (priv->filename); @@ -150,7 +150,7 @@ get_tp_parameters (GoaAccount *account) else { DEBUG ("Unknown account type %s", type); - g_hash_table_destroy (params); + g_hash_table_unref (params); return NULL; } @@ -179,7 +179,7 @@ get_tp_account_name (GoaAccount *account) (char *) g_hash_table_lookup (params, "protocol"), type, id); - g_hash_table_destroy (params); + g_hash_table_unref (params); return name; } @@ -399,7 +399,7 @@ mcp_account_manager_goa_get (const McpAccountStorage *self, while (g_hash_table_iter_next (&iter, &key, &value)) mcp_account_manager_set_value (am, acct, key, value); - g_hash_table_destroy (params); + g_hash_table_unref (params); /* Stored properties */ keys = g_key_file_get_keys (priv->store, acct, &nkeys, NULL); @@ -439,7 +439,7 @@ mcp_account_manager_goa_get (const McpAccountStorage *self, mcp_account_manager_set_value (am, acct, key, value); - g_hash_table_destroy (params); + g_hash_table_unref (params); g_free (value); } diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am index 96ef811b..e502736d 100644 --- a/libempathy-gtk/Makefile.am +++ b/libempathy-gtk/Makefile.am @@ -33,6 +33,8 @@ libempathy_gtk_handwritten_source = \ empathy-account-widget.c \ empathy-avatar-chooser.c \ empathy-avatar-image.c \ + empathy-bad-password-dialog.c \ + empathy-base-password-dialog.c \ empathy-call-utils.c \ empathy-cell-renderer-activatable.c \ empathy-cell-renderer-expander.c \ @@ -43,8 +45,6 @@ libempathy_gtk_handwritten_source = \ empathy-contact-blocking-dialog.c \ empathy-contact-dialogs.c \ empathy-contact-chooser.c \ - empathy-contact-list-store.c \ - empathy-contact-list-view.c \ empathy-contact-menu.c \ empathy-contactinfo-utils.c \ empathy-linking-dialog.c \ @@ -60,6 +60,8 @@ libempathy_gtk_handwritten_source = \ empathy-individual-linker.c \ empathy-individual-menu.c \ empathy-individual-store.c \ + empathy-individual-store-channel.c \ + empathy-individual-store-manager.c \ empathy-individual-view.c \ empathy-individual-widget.c \ empathy-input-text-view.c \ @@ -100,6 +102,8 @@ libempathy_gtk_headers = \ empathy-account-widget.h \ empathy-avatar-chooser.h \ empathy-avatar-image.h \ + empathy-bad-password-dialog.h \ + empathy-base-password-dialog.h \ empathy-call-utils.h \ empathy-cell-renderer-activatable.h \ empathy-cell-renderer-expander.h \ @@ -110,8 +114,6 @@ libempathy_gtk_headers = \ empathy-contact-blocking-dialog.h \ empathy-contact-dialogs.h \ empathy-contact-chooser.h \ - empathy-contact-list-store.h \ - empathy-contact-list-view.h \ empathy-contact-menu.h \ empathy-linking-dialog.h \ empathy-live-search.h \ @@ -128,6 +130,8 @@ libempathy_gtk_headers = \ empathy-individual-linker.h \ empathy-individual-menu.h \ empathy-individual-store.h \ + empathy-individual-store-channel.h \ + empathy-individual-store-manager.h \ empathy-individual-view.h \ empathy-individual-widget.h \ empathy-input-text-view.h \ diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c index 33082ba6..e314ad33 100644 --- a/libempathy-gtk/empathy-account-widget.c +++ b/libempathy-gtk/empathy-account-widget.c @@ -1172,7 +1172,7 @@ account_widget_build_external (EmpathyAccountWidget *self, const gchar *provider, *name = NULL; GDesktopAppInfo *desktop_info = NULL; - self->ui_details->widget = gtk_vbox_new (FALSE, 6); + self->ui_details->widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); priv->grid_common_settings = gtk_grid_new (); provider = tp_account_get_storage_provider (account); @@ -2190,9 +2190,11 @@ do_constructed (GObject *obj) !(storage_restrictions & TP_STORAGE_RESTRICTION_FLAG_CANNOT_SET_PARAMETERS)) { - GtkWidget *hbox = gtk_hbox_new (TRUE, 3); + GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3); GtkWidget *image; + gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE); + /* We can't use the stock button as its accelerator ('C') clashes with * the Close button. */ priv->cancel_button = gtk_button_new (); diff --git a/libempathy-gtk/empathy-bad-password-dialog.c b/libempathy-gtk/empathy-bad-password-dialog.c new file mode 100644 index 00000000..2209ff06 --- /dev/null +++ b/libempathy-gtk/empathy-bad-password-dialog.c @@ -0,0 +1,192 @@ +/* + * empathy-bad-password-dialog.c - Source for EmpathyBadPasswordDialog + * Copyright (C) 2010 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +#include "empathy-bad-password-dialog.h" + +#include + +#define DEBUG_FLAG EMPATHY_DEBUG_SASL +#include +#include + +G_DEFINE_TYPE (EmpathyBadPasswordDialog, empathy_bad_password_dialog, + EMPATHY_TYPE_BASE_PASSWORD_DIALOG) + +enum { + PROP_PASSWORD = 1, + + LAST_PROPERTY, +}; + +/* signal enum */ +enum { + RETRY, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = {0}; + +struct _EmpathyBadPasswordDialogPriv { + gchar *password; +}; + +static void +empathy_bad_password_dialog_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + EmpathyBadPasswordDialog *self = (EmpathyBadPasswordDialog *) object; + + switch (property_id) + { + case PROP_PASSWORD: + g_value_set_string (value, self->priv->password); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +empathy_bad_password_dialog_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + EmpathyBadPasswordDialog *self = (EmpathyBadPasswordDialog *) object; + + switch (property_id) + { + case PROP_PASSWORD: + g_assert (self->priv->password == NULL); /* construct only */ + self->priv->password = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +empathy_bad_password_dialog_finalize (GObject *object) +{ + EmpathyBadPasswordDialog *self = (EmpathyBadPasswordDialog *) object; + + tp_clear_pointer (&self->priv->password, g_free); + + G_OBJECT_CLASS (empathy_bad_password_dialog_parent_class)->finalize (object); +} + +static void +bad_password_dialog_response_cb (GtkDialog *dialog, + gint response, + gpointer user_data) +{ + EmpathyBadPasswordDialog *self = (EmpathyBadPasswordDialog *) dialog; + EmpathyBasePasswordDialog *base = (EmpathyBasePasswordDialog *) dialog; + + if (response == GTK_RESPONSE_OK) + { + const gchar *password; + + password = gtk_entry_get_text (GTK_ENTRY (base->entry)); + + g_signal_emit (self, signals[RETRY], 0, base->account, password); + } + + gtk_widget_destroy (GTK_WIDGET (dialog)); +} + +static void +empathy_bad_password_dialog_constructed (GObject *object) +{ + EmpathyBadPasswordDialog *self = (EmpathyBadPasswordDialog *) object; + EmpathyBasePasswordDialog *base = (EmpathyBasePasswordDialog *) object; + gchar *text; + + G_OBJECT_CLASS (empathy_bad_password_dialog_parent_class)->constructed ( + object); + + text = g_strdup_printf (_("Authentification failed for account %s"), + tp_account_get_display_name (base->account)); + gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (self), text); + g_free (text); + + if (self->priv->password != NULL) + { + gtk_entry_set_text (GTK_ENTRY (base->entry), self->priv->password); + + gtk_editable_select_region (GTK_EDITABLE (base->entry), 0, -1); + } + + gtk_button_set_label (GTK_BUTTON (base->ok_button), _("Retry")); + + g_signal_connect (self, "response", + G_CALLBACK (bad_password_dialog_response_cb), self); +} + +static void +empathy_bad_password_dialog_init (EmpathyBadPasswordDialog *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EMPATHY_TYPE_BAD_PASSWORD_DIALOG, EmpathyBadPasswordDialogPriv); +} + +static void +empathy_bad_password_dialog_class_init (EmpathyBadPasswordDialogClass *klass) +{ + GParamSpec *pspec; + GObjectClass *oclass = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (EmpathyBadPasswordDialogPriv)); + + oclass->set_property = empathy_bad_password_dialog_set_property; + oclass->get_property = empathy_bad_password_dialog_get_property; + oclass->finalize = empathy_bad_password_dialog_finalize; + oclass->constructed = empathy_bad_password_dialog_constructed; + + pspec = g_param_spec_string ("password", "Password", + "The wrong password", + NULL, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (oclass, PROP_PASSWORD, pspec); + + signals[RETRY] = g_signal_new ("retry", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, 0, + NULL, NULL, + g_cclosure_marshal_generic, + G_TYPE_NONE, 2, TP_TYPE_ACCOUNT, G_TYPE_STRING); +} + +GtkWidget * +empathy_bad_password_dialog_new (TpAccount *account, + const gchar *password) +{ + g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL); + + return g_object_new (EMPATHY_TYPE_BAD_PASSWORD_DIALOG, + "account", account, + "password", password, + NULL); +} diff --git a/libempathy-gtk/empathy-bad-password-dialog.h b/libempathy-gtk/empathy-bad-password-dialog.h new file mode 100644 index 00000000..5cf1c71c --- /dev/null +++ b/libempathy-gtk/empathy-bad-password-dialog.h @@ -0,0 +1,68 @@ +/* + * empathy-bad-password-dialog.h - Header for EmpathyBadPasswordDialog + * Copyright (C) 2010 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __EMPATHY_BAD_PASSWORD_DIALOG_H__ +#define __EMPATHY_BAD_PASSWORD_DIALOG_H__ + +#include +#include + +#include + +#include + +G_BEGIN_DECLS + +typedef struct _EmpathyBadPasswordDialog EmpathyBadPasswordDialog; +typedef struct _EmpathyBadPasswordDialogClass EmpathyBadPasswordDialogClass; +typedef struct _EmpathyBadPasswordDialogPriv EmpathyBadPasswordDialogPriv; + +struct _EmpathyBadPasswordDialogClass { + EmpathyBasePasswordDialogClass parent_class; +}; + +struct _EmpathyBadPasswordDialog { + EmpathyBasePasswordDialog parent; + EmpathyBadPasswordDialogPriv *priv; +}; + +GType empathy_bad_password_dialog_get_type (void); + +#define EMPATHY_TYPE_BAD_PASSWORD_DIALOG \ + (empathy_bad_password_dialog_get_type ()) +#define EMPATHY_BAD_PASSWORD_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_BAD_PASSWORD_DIALOG, \ + EmpathyBadPasswordDialog)) +#define EMPATHY_BAD_PASSWORD_DIALOG_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_BAD_PASSWORD_DIALOG, \ + EmpathyBadPasswordDialogClass)) +#define EMPATHY_IS_BAD_PASSWORD_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_BAD_PASSWORD_DIALOG)) +#define EMPATHY_IS_BAD_PASSWORD_DIALOG_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_BAD_PASSWORD_DIALOG)) +#define EMPATHY_BAD_PASSWORD_DIALOG_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_BAD_PASSWORD_DIALOG, \ + EmpathyBadPasswordDialogClass)) + +GtkWidget * empathy_bad_password_dialog_new (TpAccount *account, + const gchar *password); + +G_END_DECLS + +#endif /* #ifndef __EMPATHY_BAD_PASSWORD_DIALOG_H__*/ diff --git a/libempathy-gtk/empathy-base-password-dialog.c b/libempathy-gtk/empathy-base-password-dialog.c new file mode 100644 index 00000000..be708e81 --- /dev/null +++ b/libempathy-gtk/empathy-base-password-dialog.c @@ -0,0 +1,302 @@ +/* + * empathy-base-password-dialog.c - Source for EmpathyBasePasswordDialog + * Copyright (C) 2010 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +#include "empathy-base-password-dialog.h" + +#include + +#define DEBUG_FLAG EMPATHY_DEBUG_SASL +#include +#include + +G_DEFINE_TYPE (EmpathyBasePasswordDialog, empathy_base_password_dialog, + GTK_TYPE_MESSAGE_DIALOG) + +enum { + PROP_ACCOUNT = 1, + + LAST_PROPERTY, +}; + +struct _EmpathyBasePasswordDialogPriv { + gboolean grabbing; +}; + +static void +empathy_base_password_dialog_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + EmpathyBasePasswordDialog *self = (EmpathyBasePasswordDialog *) object; + + switch (property_id) + { + case PROP_ACCOUNT: + g_value_set_object (value, self->account); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +empathy_base_password_dialog_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + EmpathyBasePasswordDialog *self = (EmpathyBasePasswordDialog *) object; + + switch (property_id) + { + case PROP_ACCOUNT: + g_assert (self->account == NULL); /* construct only */ + self->account = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +empathy_base_password_dialog_dispose (GObject *object) +{ + EmpathyBasePasswordDialog *self = (EmpathyBasePasswordDialog *) object; + + tp_clear_object (&self->account); + + G_OBJECT_CLASS (empathy_base_password_dialog_parent_class)->dispose (object); +} + +static void +clear_icon_released_cb (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + GdkEvent *event, + gpointer user_data) +{ + gtk_entry_set_text (entry, ""); +} + +static void +password_entry_changed_cb (GtkEditable *entry, + gpointer user_data) +{ + EmpathyBasePasswordDialog *self = user_data; + const gchar *str; + + str = gtk_entry_get_text (GTK_ENTRY (entry)); + + gtk_entry_set_icon_sensitive (GTK_ENTRY (entry), + GTK_ENTRY_ICON_SECONDARY, !EMP_STR_EMPTY (str)); + + gtk_widget_set_sensitive (self->ok_button, + !EMP_STR_EMPTY (str)); +} + +static void +password_entry_activate_cb (GtkEntry *entry, + EmpathyBasePasswordDialog *self) +{ + gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_OK); +} + +static gboolean +base_password_dialog_grab_keyboard (GtkWidget *widget, + GdkEvent *event, + gpointer user_data) +{ + EmpathyBasePasswordDialog *self = user_data; + + if (!self->priv->grabbing) + { + GdkDevice *device = gdk_event_get_device (event); + + if (device != NULL) + { + GdkGrabStatus status = gdk_device_grab (device, + gtk_widget_get_window (widget), + GDK_OWNERSHIP_WINDOW, + FALSE, + GDK_ALL_EVENTS_MASK, + NULL, + gdk_event_get_time (event)); + + if (status != GDK_GRAB_SUCCESS) + DEBUG ("Could not grab keyboard; grab status was %u", status); + else + self->priv->grabbing = TRUE; + } + else + DEBUG ("Could not get the event device!"); + } + + return FALSE; +} + +static gboolean +base_password_dialog_ungrab_keyboard (GtkWidget *widget, + GdkEvent *event, + gpointer user_data) +{ + EmpathyBasePasswordDialog *self = user_data; + + if (self->priv->grabbing) + { + GdkDevice *device = gdk_event_get_device (event); + + if (device != NULL) + { + gdk_device_ungrab (device, gdk_event_get_time (event)); + self->priv->grabbing = FALSE; + } + else + DEBUG ("Could not get the event device!"); + } + + return FALSE; +} + +static gboolean +base_password_dialog_window_state_changed (GtkWidget *widget, + GdkEventWindowState *event, + gpointer data) +{ + GdkWindowState state = gdk_window_get_state (gtk_widget_get_window (widget)); + + if (state & GDK_WINDOW_STATE_WITHDRAWN + || state & GDK_WINDOW_STATE_ICONIFIED + || state & GDK_WINDOW_STATE_FULLSCREEN + || state & GDK_WINDOW_STATE_MAXIMIZED) + { + base_password_dialog_ungrab_keyboard (widget, (GdkEvent *) event, data); + } + else + { + base_password_dialog_grab_keyboard (widget, (GdkEvent *) event, data); + } + + return FALSE; +} + +static void +empathy_base_password_dialog_constructed (GObject *object) +{ + EmpathyBasePasswordDialog *self; + GtkWidget *icon; + GtkBox *box; + gchar *text; + + self = EMPATHY_BASE_PASSWORD_DIALOG (object); + + g_assert (self->account != NULL); + + self->priv->grabbing = FALSE; + + /* dialog */ + gtk_dialog_add_button (GTK_DIALOG (self), + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); + + self->ok_button = gtk_dialog_add_button (GTK_DIALOG (self), + GTK_STOCK_OK, GTK_RESPONSE_OK); + gtk_widget_set_sensitive (self->ok_button, FALSE); + + text = g_strdup_printf (_("Enter your password for account\n%s"), + tp_account_get_display_name (self->account)); + gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (self), text); + g_free (text); + + gtk_window_set_icon_name (GTK_WINDOW (self), + GTK_STOCK_DIALOG_AUTHENTICATION); + + box = GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))); + + /* dialog icon */ + icon = gtk_image_new_from_icon_name ( + tp_account_get_icon_name (self->account), GTK_ICON_SIZE_DIALOG); + gtk_message_dialog_set_image (GTK_MESSAGE_DIALOG (self), icon); + gtk_widget_show (icon); + + /* entry */ + self->entry = gtk_entry_new (); + gtk_entry_set_visibility (GTK_ENTRY (self->entry), FALSE); + + /* entry clear icon */ + gtk_entry_set_icon_from_stock (GTK_ENTRY (self->entry), + GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR); + gtk_entry_set_icon_sensitive (GTK_ENTRY (self->entry), + GTK_ENTRY_ICON_SECONDARY, FALSE); + + g_signal_connect (self->entry, "icon-release", + G_CALLBACK (clear_icon_released_cb), NULL); + g_signal_connect (self->entry, "changed", + G_CALLBACK (password_entry_changed_cb), self); + g_signal_connect (self->entry, "activate", + G_CALLBACK (password_entry_activate_cb), self); + + gtk_box_pack_start (box, self->entry, FALSE, FALSE, 0); + gtk_widget_show (self->entry); + + /* remember password ticky box */ + self->ticky = gtk_check_button_new_with_label (_("Remember password")); + + gtk_box_pack_start (box, self->ticky, FALSE, FALSE, 0); + + g_signal_connect (self, "window-state-event", + G_CALLBACK (base_password_dialog_window_state_changed), self); + g_signal_connect (self, "map-event", + G_CALLBACK (base_password_dialog_grab_keyboard), self); + g_signal_connect (self, "unmap-event", + G_CALLBACK (base_password_dialog_ungrab_keyboard), self); + + gtk_widget_grab_focus (self->entry); + + gtk_window_set_position (GTK_WINDOW (self), GTK_WIN_POS_CENTER_ALWAYS); +} + +static void +empathy_base_password_dialog_init (EmpathyBasePasswordDialog *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EMPATHY_TYPE_BASE_PASSWORD_DIALOG, EmpathyBasePasswordDialogPriv); +} + +static void +empathy_base_password_dialog_class_init (EmpathyBasePasswordDialogClass *klass) +{ + GParamSpec *pspec; + GObjectClass *oclass = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (EmpathyBasePasswordDialogPriv)); + + oclass->set_property = empathy_base_password_dialog_set_property; + oclass->get_property = empathy_base_password_dialog_get_property; + oclass->dispose = empathy_base_password_dialog_dispose; + oclass->constructed = empathy_base_password_dialog_constructed; + + pspec = g_param_spec_object ("account", "The TpAccount", + "The TpAccount to be used.", + TP_TYPE_ACCOUNT, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (oclass, PROP_ACCOUNT, pspec); +} diff --git a/libempathy-gtk/empathy-base-password-dialog.h b/libempathy-gtk/empathy-base-password-dialog.h new file mode 100644 index 00000000..c144a665 --- /dev/null +++ b/libempathy-gtk/empathy-base-password-dialog.h @@ -0,0 +1,71 @@ +/* + * empathy-base-password-dialog.h - Header for EmpathyBasePasswordDialog + * Copyright (C) 2010 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __EMPATHY_BASE_PASSWORD_DIALOG_H__ +#define __EMPATHY_BASE_PASSWORD_DIALOG_H__ + +#include +#include + +#include + +#include + +G_BEGIN_DECLS + +typedef struct _EmpathyBasePasswordDialog EmpathyBasePasswordDialog; +typedef struct _EmpathyBasePasswordDialogClass EmpathyBasePasswordDialogClass; +typedef struct _EmpathyBasePasswordDialogPriv EmpathyBasePasswordDialogPriv; + +struct _EmpathyBasePasswordDialogClass { + GtkMessageDialogClass parent_class; +}; + +struct _EmpathyBasePasswordDialog { + GtkMessageDialog parent; + EmpathyBasePasswordDialogPriv *priv; + + /* protected */ + TpAccount *account; + GtkWidget *entry; + GtkWidget *ticky; + GtkWidget *ok_button; +}; + +GType empathy_base_password_dialog_get_type (void); + +#define EMPATHY_TYPE_BASE_PASSWORD_DIALOG \ + (empathy_base_password_dialog_get_type ()) +#define EMPATHY_BASE_PASSWORD_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_BASE_PASSWORD_DIALOG, \ + EmpathyBasePasswordDialog)) +#define EMPATHY_BASE_PASSWORD_DIALOG_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_BASE_PASSWORD_DIALOG, \ + EmpathyBasePasswordDialogClass)) +#define EMPATHY_IS_BASE_PASSWORD_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_BASE_PASSWORD_DIALOG)) +#define EMPATHY_IS_BASE_PASSWORD_DIALOG_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_BASE_PASSWORD_DIALOG)) +#define EMPATHY_BASE_PASSWORD_DIALOG_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_BASE_PASSWORD_DIALOG, \ + EmpathyBasePasswordDialogClass)) + +G_END_DECLS + +#endif /* #ifndef __EMPATHY_BASE_PASSWORD_DIALOG_H__*/ diff --git a/libempathy-gtk/empathy-call-utils.c b/libempathy-gtk/empathy-call-utils.c index adf4987b..16526d35 100644 --- a/libempathy-gtk/empathy-call-utils.c +++ b/libempathy-gtk/empathy-call-utils.c @@ -250,22 +250,28 @@ empathy_call_new_with_streams (const gchar *contact, } void -empathy_call_set_stream_properties (GstElement *element) +empathy_call_set_stream_properties (GstElement *element, + gboolean echo_cancellation) { GstStructure *props; GSettings *gsettings_call; - gboolean echo_cancellation; + gboolean echo_cancellation_setting; gsettings_call = g_settings_new (EMPATHY_PREFS_CALL_SCHEMA); - echo_cancellation = g_settings_get_boolean (gsettings_call, + echo_cancellation_setting = g_settings_get_boolean (gsettings_call, EMPATHY_PREFS_CALL_ECHO_CANCELLATION); + DEBUG ("Echo cancellation: element allowed: %s, user enabled: %s", + echo_cancellation ? " yes" : "no", + echo_cancellation_setting ? " yes" : "no"); + + props = gst_structure_new ("props", PA_PROP_MEDIA_ROLE, G_TYPE_STRING, "phone", NULL); - if (echo_cancellation) + if (echo_cancellation && echo_cancellation_setting) { gst_structure_set (props, "filter.want", G_TYPE_STRING, "echo-cancel", diff --git a/libempathy-gtk/empathy-call-utils.h b/libempathy-gtk/empathy-call-utils.h index 87676161..83610310 100644 --- a/libempathy-gtk/empathy-call-utils.h +++ b/libempathy-gtk/empathy-call-utils.h @@ -40,7 +40,8 @@ GHashTable * empathy_call_create_streamed_media_request (const gchar *contact, gboolean initial_audio, gboolean initial_video); -void empathy_call_set_stream_properties (GstElement *element); +void empathy_call_set_stream_properties (GstElement *element, + gboolean echo_cancellation); G_END_DECLS diff --git a/libempathy-gtk/empathy-chat-text-view.c b/libempathy-gtk/empathy-chat-text-view.c index 24899942..c251f1f4 100644 --- a/libempathy-gtk/empathy-chat-text-view.c +++ b/libempathy-gtk/empathy-chat-text-view.c @@ -151,7 +151,7 @@ chat_text_view_event_cb (EmpathyChatTextView *view, return FALSE; } - gdk_window_get_pointer (win, &x, &y, NULL); + gdk_window_get_device_position (win, event->device, &x, &y, NULL); /* Get the iter where the cursor is at */ gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view), type, @@ -286,7 +286,9 @@ chat_text_view_populate_popup (EmpathyChatTextView *view, table = gtk_text_buffer_get_tag_table (priv->buffer); tag = gtk_text_tag_table_lookup (table, EMPATHY_CHAT_TEXT_VIEW_TAG_LINK); - gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y); + gdk_window_get_device_position (gtk_widget_get_window (GTK_WIDGET (view)), + gdk_device_manager_get_client_pointer (gdk_display_get_device_manager ( + gtk_widget_get_display (GTK_WIDGET (view)))), &x, &y, NULL); gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view), GTK_TEXT_WINDOW_WIDGET, diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index 09146d89..70e35dda 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -49,8 +49,8 @@ #include "empathy-chat.h" #include "empathy-spell.h" #include "empathy-contact-dialogs.h" -#include "empathy-contact-list-store.h" -#include "empathy-contact-list-view.h" +#include "empathy-individual-store-channel.h" +#include "empathy-individual-view.h" #include "empathy-contact-menu.h" #include "empathy-input-text-view.h" #include "empathy-search-bar.h" @@ -2331,7 +2331,10 @@ chat_input_populate_popup_cb (GtkTextView *view, switch (priv->most_recent_event_type) { case GDK_BUTTON_PRESS: /* get the location from the pointer */ - gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y); + gdk_window_get_device_position (gtk_widget_get_window (GTK_WIDGET (view)), + gdk_device_manager_get_client_pointer (gdk_display_get_device_manager ( + gtk_widget_get_display (GTK_WIDGET (view)))), &x, &y, NULL); + gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view), GTK_TEXT_WINDOW_WIDGET, x, y, @@ -2725,7 +2728,7 @@ chat_update_contacts_visibility (EmpathyChat *chat, } if (show && priv->contact_list_view == NULL) { - EmpathyContactListStore *store; + EmpathyIndividualStore *store; gint min_width; GtkAllocation allocation; @@ -2746,19 +2749,27 @@ chat_update_contacts_visibility (EmpathyChat *chat, priv->contacts_visible_id = g_timeout_add (500, chat_contacts_visible_timeout_cb, chat); - store = empathy_contact_list_store_new ( - EMPATHY_CONTACT_LIST (priv->tp_chat)); - empathy_contact_list_store_set_show_groups ( - EMPATHY_CONTACT_LIST_STORE (store), FALSE); - - priv->contact_list_view = GTK_WIDGET (empathy_contact_list_view_new (store, - EMPATHY_CONTACT_LIST_FEATURE_CONTACT_TOOLTIP, - EMPATHY_CONTACT_FEATURE_CHAT | - EMPATHY_CONTACT_FEATURE_CALL | - EMPATHY_CONTACT_FEATURE_LOG | - EMPATHY_CONTACT_FEATURE_INFO)); + store = EMPATHY_INDIVIDUAL_STORE ( + empathy_individual_store_channel_new ((TpChannel *) priv->tp_chat)); + + empathy_individual_store_set_show_groups (store, FALSE); + + priv->contact_list_view = GTK_WIDGET (empathy_individual_view_new (store, + EMPATHY_INDIVIDUAL_VIEW_FEATURE_INDIVIDUAL_TOOLTIP, + EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT | + EMPATHY_INDIVIDUAL_FEATURE_CHAT | + EMPATHY_INDIVIDUAL_FEATURE_CALL | + EMPATHY_INDIVIDUAL_FEATURE_LOG | + EMPATHY_INDIVIDUAL_FEATURE_INFO)); + + empathy_individual_view_set_show_offline ( + EMPATHY_INDIVIDUAL_VIEW (priv->contact_list_view), TRUE); + empathy_individual_view_set_show_uninteresting ( + EMPATHY_INDIVIDUAL_VIEW (priv->contact_list_view), TRUE); + gtk_container_add (GTK_CONTAINER (priv->scrolled_window_contacts), priv->contact_list_view); + gtk_widget_show (priv->contact_list_view); gtk_widget_show (priv->scrolled_window_contacts); g_object_unref (store); @@ -3470,7 +3481,7 @@ chat_prompt_to_save_password (EmpathyChat *self, gtk_info_bar_set_message_type (GTK_INFO_BAR (data->info_bar), GTK_MESSAGE_QUESTION); - hbox = gtk_hbox_new (FALSE, 5); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5); gtk_box_pack_start (GTK_BOX (content_area), hbox, TRUE, TRUE, 0); /* Add image */ @@ -3664,7 +3675,7 @@ display_password_info_bar (EmpathyChat *self) content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar)); - hbox = gtk_hbox_new (FALSE, 5); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5); gtk_box_pack_start (GTK_BOX (content_area), hbox, TRUE, TRUE, 0); /* Add image */ diff --git a/libempathy-gtk/empathy-contact-blocking-dialog.c b/libempathy-gtk/empathy-contact-blocking-dialog.c index b000e24d..c28362b7 100644 --- a/libempathy-gtk/empathy-contact-blocking-dialog.c +++ b/libempathy-gtk/empathy-contact-blocking-dialog.c @@ -47,9 +47,6 @@ G_DEFINE_TYPE (EmpathyContactBlockingDialog, empathy_contact_blocking_dialog, struct _EmpathyContactBlockingDialogPrivate { - /* a map of all active connections to their 'deny' channel */ - GHashTable *channels; /* reffed TpConnection* -> reffed TpChannel* */ - guint block_account_changed; GtkListStore *blocked_contacts; @@ -62,12 +59,14 @@ struct _EmpathyContactBlockingDialogPrivate GtkWidget *info_bar; GtkWidget *info_bar_label; GtkWidget *remove_button; + + TpConnection *current_conn; }; enum /* blocked-contacts columns */ { COL_BLOCKED_IDENTIFIER, - COL_BLOCKED_HANDLE, + COL_BLOCKED_CONTACT, N_BLOCKED_COLUMNS }; @@ -90,13 +89,13 @@ contact_blocking_dialog_filter_account_chooser (TpAccount *account, gpointer callback_data, gpointer user_data) { - EmpathyContactBlockingDialog *self = user_data; TpConnection *conn = tp_account_get_connection (account); gboolean enable; enable = conn != NULL && - g_hash_table_lookup (self->priv->channels, conn) != NULL; + tp_proxy_has_interface_by_id (conn, + TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING); callback (enable, callback_data); } @@ -124,7 +123,8 @@ contact_blocking_dialog_refilter_account_chooser ( conn = empathy_account_chooser_get_connection (chooser); enabled = (empathy_account_chooser_get_account (chooser) != NULL && conn != NULL && - g_hash_table_lookup (self->priv->channels, conn) != NULL); + tp_proxy_has_interface_by_id (conn, + TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)); if (!enabled) DEBUG ("No account selected"); @@ -135,56 +135,63 @@ contact_blocking_dialog_refilter_account_chooser ( contact_blocking_dialog_account_changed (self->priv->account_chooser, self); } -static void contact_blocking_dialog_inspected_handles (TpConnection *, - const char **, const GError *, gpointer, GObject *); - static void -contact_blocking_dialog_add_contacts_to_list ( +contact_blocking_dialog_add_blocked ( EmpathyContactBlockingDialog *self, - TpConnection *conn, - GArray *handles) -{ - if (handles->len > 0) - tp_cli_connection_call_inspect_handles (conn, -1, - TP_HANDLE_TYPE_CONTACT, handles, - contact_blocking_dialog_inspected_handles, - g_boxed_copy (DBUS_TYPE_G_UINT_ARRAY, handles), - (GDestroyNotify) g_array_unref, G_OBJECT (self)); -} - -static void -contact_blocking_dialog_inspected_handles (TpConnection *conn, - const char **identifiers, - const GError *in_error, - gpointer user_data, - GObject *self) + GPtrArray *blocked) { EmpathyContactBlockingDialogPrivate *priv = GET_PRIVATE (self); - GArray *handles = user_data; guint i; - if (in_error != NULL) + if (blocked == NULL) + return; + + for (i = 0; i < blocked->len; i++) { - DEBUG ("Failed to inspect handles: %s", in_error->message); - return; + TpContact *contact = g_ptr_array_index (blocked, i); + + gtk_list_store_insert_with_values (priv->blocked_contacts, NULL, -1, + COL_BLOCKED_IDENTIFIER, tp_contact_get_identifier (contact), + COL_BLOCKED_CONTACT, contact, + -1); } +} + +static void +blocked_contacts_changed_cb (TpConnection *conn, + GPtrArray *added, + GPtrArray *removed, + EmpathyContactBlockingDialog *self) +{ + GtkTreeModel *model = GTK_TREE_MODEL (self->priv->blocked_contacts); + GtkTreeIter iter; + gboolean valid; + + DEBUG ("blocked contacts changed on %s: %u added, %u removed", + get_pretty_conn_name (conn), added->len, removed->len); - DEBUG ("Adding %u identifiers", handles->len); + /* add contacts */ + contact_blocking_dialog_add_blocked (self, added); - for (i = 0; i < handles->len; i++) + /* remove contacts */ + valid = gtk_tree_model_get_iter_first (model, &iter); + while (valid) { - const char *identifier = identifiers[i]; - TpHandle handle = g_array_index (handles, TpHandle, i); + TpContact *contact; - gtk_list_store_insert_with_values (priv->blocked_contacts, NULL, -1, - COL_BLOCKED_IDENTIFIER, identifier, - COL_BLOCKED_HANDLE, handle, + gtk_tree_model_get (model, &iter, + COL_BLOCKED_CONTACT, &contact, -1); + + if (tp_g_ptr_array_contains (removed, contact)) + valid = gtk_list_store_remove (self->priv->blocked_contacts, &iter); + else + valid = gtk_tree_model_iter_next (model, &iter); + + g_object_unref (contact); } } -DECLARE_CALLBACK (contact_blocking_dialog_connection_prepared); - static void contact_blocking_dialog_connection_status_changed (TpAccount *account, guint old_status, @@ -201,8 +208,6 @@ contact_blocking_dialog_connection_status_changed (TpAccount *account, case TP_CONNECTION_STATUS_DISCONNECTED: DEBUG ("Connection %s invalidated", get_pretty_conn_name (conn)); - /* remove the channel from the hash table */ - g_hash_table_remove (self->priv->channels, conn); contact_blocking_dialog_refilter_account_chooser (self); break; @@ -212,65 +217,10 @@ contact_blocking_dialog_connection_status_changed (TpAccount *account, case TP_CONNECTION_STATUS_CONNECTED: DEBUG ("Connection %s reconnected", get_pretty_conn_name (conn)); - tp_proxy_prepare_async (conn, NULL, - contact_blocking_dialog_connection_prepared, self); - } -} - -static void -contact_blocking_dialog_deny_channel_members_changed (TpChannel *channel, - const char *message, - GArray *added, - GArray *removed, - GArray *local_pending, - GArray *remote_pending, - TpHandle actor, - guint reason, - EmpathyContactBlockingDialog *self) -{ - TpConnection *conn = tp_channel_borrow_connection (channel); - GtkTreeModel *model = GTK_TREE_MODEL (self->priv->blocked_contacts); - GtkTreeIter iter; - TpIntset *removed_set; - gboolean valid; - - /* we only care about changes to the selected connection */ - /* FIXME: can we compare proxy pointers directly? */ - if (tp_strdiff ( - tp_proxy_get_object_path (tp_channel_borrow_connection (channel)), - tp_proxy_get_object_path (empathy_account_chooser_get_connection ( - EMPATHY_ACCOUNT_CHOOSER (self->priv->account_chooser))))) - return; - - DEBUG ("deny list changed on %s: %u added, %u removed", - get_pretty_conn_name (conn), added->len, removed->len); - - /* add contacts */ - contact_blocking_dialog_add_contacts_to_list (self, conn, added); - - /* remove contacts */ - removed_set = tp_intset_from_array (removed); - - valid = gtk_tree_model_get_iter_first (model, &iter); - while (valid) - { - TpHandle handle; - - gtk_tree_model_get (model, &iter, - COL_BLOCKED_HANDLE, &handle, - -1); - - if (tp_intset_is_member (removed_set, handle)) - valid = gtk_list_store_remove (self->priv->blocked_contacts, &iter); - else - valid = gtk_tree_model_iter_next (model, &iter); + contact_blocking_dialog_refilter_account_chooser (self); } - - tp_intset_destroy (removed_set); } -DECLARE_CALLBACK (contact_blocking_dialog_connection_prepared); - static void contact_blocking_dialog_am_prepared (GObject *am, GAsyncResult *result, @@ -292,166 +242,100 @@ contact_blocking_dialog_am_prepared (GObject *am, for (ptr = accounts; ptr != NULL; ptr = ptr->next) { TpAccount *account = ptr->data; - TpConnection *conn; tp_g_signal_connect_object (account, "status-changed", G_CALLBACK (contact_blocking_dialog_connection_status_changed), self, 0); - conn = tp_account_get_connection (TP_ACCOUNT (account)); - - if (conn != NULL) - { - tp_proxy_prepare_async (conn, NULL, - contact_blocking_dialog_connection_prepared, self); - } + contact_blocking_dialog_refilter_account_chooser (self); } g_list_free (accounts); } -static void contact_blocking_dialog_got_deny_channel (TpConnection *, - gboolean, const char *, GHashTable *, const GError *, gpointer, GObject *); - static void -contact_blocking_dialog_connection_prepared (GObject *conn, - GAsyncResult *result, - gpointer user_data) +contact_blocking_dialog_set_error (EmpathyContactBlockingDialog *self, + const GError *error) { - EmpathyContactBlockingDialog *self = user_data; - GHashTable *request; - GError *error = NULL; + const char *msg = NULL; - if (!tp_proxy_prepare_finish (conn, result, &error)) + if (error->domain == TP_ERRORS) { - DEBUG ("Failed to prepare connection %s: %s", - get_pretty_conn_name ((TpConnection *) conn), error->message); - g_error_free (error); - return; + if (error->code == TP_ERROR_INVALID_HANDLE) + msg = _("Unknown or invalid identifier"); + else if (error->code == TP_ERROR_NOT_AVAILABLE) + msg = _("Contact blocking temporarily unavailable"); + else if (error->code == TP_ERROR_NOT_CAPABLE) + msg = _("Contact blocking unavailable"); + else if (error->code == TP_ERROR_PERMISSION_DENIED) + msg = _("Permission Denied"); } - /* request the deny channel */ - request = tp_asv_new ( - TP_PROP_CHANNEL_CHANNEL_TYPE, - G_TYPE_STRING, - TP_IFACE_CHANNEL_TYPE_CONTACT_LIST, - - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, - G_TYPE_UINT, - TP_HANDLE_TYPE_LIST, - - TP_PROP_CHANNEL_TARGET_ID, - G_TYPE_STRING, - "deny", - - NULL); - - tp_cli_connection_interface_requests_call_ensure_channel ( - TP_CONNECTION (conn), -1, request, - contact_blocking_dialog_got_deny_channel, NULL, NULL, G_OBJECT (self)); + if (msg == NULL) + msg = _("Could not block contact"); - g_hash_table_destroy (request); + gtk_label_set_text (GTK_LABEL (self->priv->info_bar_label), msg); + gtk_widget_show (self->priv->info_bar); } -DECLARE_CALLBACK (contact_blocking_dialog_deny_channel_prepared); - static void -contact_blocking_dialog_got_deny_channel (TpConnection *conn, - gboolean yours, - const char *channel_path, - GHashTable *props, - const GError *in_error, - gpointer user_data, - GObject *self) +block_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) { - TpChannel *channel; + EmpathyContactBlockingDialog *self = user_data; GError *error = NULL; - const GQuark features[] = { - TP_CHANNEL_FEATURE_CORE, - TP_CHANNEL_FEATURE_GROUP, - 0 }; - - if (in_error != NULL) + if (!tp_contact_block_finish (TP_CONTACT (source), result, + &error)) { - DEBUG ("Failed to get 'deny' channel on %s: %s", - get_pretty_conn_name (conn), in_error->message); - return; - } + DEBUG ("Error blocking contacts: %s", error->message); - channel = tp_channel_new_from_properties (conn, channel_path, props, &error); + contact_blocking_dialog_set_error ( + EMPATHY_CONTACT_BLOCKING_DIALOG (self), error); - if (error != NULL) - { - DEBUG ("Failed to create channel proxy on %s: %s", - get_pretty_conn_name (conn), in_error->message); g_error_free (error); return; } - tp_proxy_prepare_async (channel, features, - contact_blocking_dialog_deny_channel_prepared, self); + DEBUG ("Contact blocked"); } static void -contact_blocking_dialog_deny_channel_prepared (GObject *channel, - GAsyncResult *result, - gpointer user_data) +block_contact_got_contact (TpConnection *conn, + guint n_contacts, + TpContact * const *contacts, + const gchar * const *requested_ids, + GHashTable *failed_id_errors, + const GError *error, + gpointer user_data, + GObject *weak_object) { - EmpathyContactBlockingDialog *self = user_data; - TpConnection *conn; - GError *error = NULL; - - if (!tp_proxy_prepare_finish (channel, result, &error)) - { - DEBUG ("Failed to prepare channel %s: %s", - tp_proxy_get_object_path (channel), error->message); - g_error_free (error); - return; - } - - conn = tp_channel_borrow_connection (TP_CHANNEL (channel)); + EmpathyContactBlockingDialog *self = + EMPATHY_CONTACT_BLOCKING_DIALOG (weak_object); + gchar *id = user_data; - DEBUG ("Channel %s prepared for connection %s", - tp_proxy_get_object_path (channel), get_pretty_conn_name (conn)); - - g_hash_table_insert (self->priv->channels, - g_object_ref (conn), channel); - contact_blocking_dialog_refilter_account_chooser (self); + if (error != NULL) + goto error; - tp_g_signal_connect_object (channel, "group-members-changed", - G_CALLBACK (contact_blocking_dialog_deny_channel_members_changed), - self, 0); -} + error = g_hash_table_lookup (failed_id_errors, id); + if (error != NULL) + goto error; -static void -contact_blocking_dialog_set_error (EmpathyContactBlockingDialog *self, - const GError *error) -{ - const char *msg = NULL; + tp_contact_block_async (contacts[0], FALSE, block_cb, self); + goto finally; - if (error->domain == TP_ERRORS) - { - if (error->code == TP_ERROR_INVALID_HANDLE) - msg = _("Unknown or invalid identifier"); - else if (error->code == TP_ERROR_NOT_AVAILABLE) - msg = _("Contact blocking temporarily unavailable"); - else if (error->code == TP_ERROR_NOT_CAPABLE) - msg = _("Contact blocking unavailable"); - else if (error->code == TP_ERROR_PERMISSION_DENIED) - msg = _("Permission Denied"); - } +error: + DEBUG ("Error getting contact on %s: %s", + get_pretty_conn_name (conn), error->message); - if (msg == NULL) - msg = _("Could not block contact"); + contact_blocking_dialog_set_error ( + EMPATHY_CONTACT_BLOCKING_DIALOG (self), error); - gtk_label_set_text (GTK_LABEL (self->priv->info_bar_label), msg); - gtk_widget_show (self->priv->info_bar); +finally: + g_free (id); } -static void contact_blocking_dialog_add_contact_got_handle (TpConnection *, - const GArray *, const GError *, gpointer, GObject *); - static void contact_blocking_dialog_add_contact (GtkWidget *widget, EmpathyContactBlockingDialog *self) @@ -466,136 +350,80 @@ contact_blocking_dialog_add_contact (GtkWidget *widget, DEBUG ("Looking up handle for '%s' on %s", identifiers[0], get_pretty_conn_name (conn)); - tp_cli_connection_call_request_handles (conn, -1, - TP_HANDLE_TYPE_CONTACT, identifiers, - contact_blocking_dialog_add_contact_got_handle, - NULL, NULL, G_OBJECT (self)); + tp_connection_get_contacts_by_id (conn, 1, identifiers, + 0, NULL, block_contact_got_contact, + g_strdup (identifiers[0]), NULL, G_OBJECT (self)); gtk_entry_set_text (GTK_ENTRY (self->priv->add_contact_entry), ""); gtk_widget_hide (self->priv->info_bar); } static void -contact_blocking_dialog_added_contact (TpChannel *, const GError *, - gpointer, GObject *); - -static void -contact_blocking_dialog_add_contact_got_handle (TpConnection *conn, - const GArray *handles, - const GError *in_error, - gpointer user_data, - GObject *self) +unblock_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) { - EmpathyContactBlockingDialogPrivate *priv = GET_PRIVATE (self); - TpChannel *channel = g_hash_table_lookup (priv->channels, conn); - - if (in_error != NULL) - { - DEBUG ("Error getting handle on %s: %s", - get_pretty_conn_name (conn), in_error->message); - - contact_blocking_dialog_set_error ( - EMPATHY_CONTACT_BLOCKING_DIALOG (self), in_error); - - return; - } - - g_return_if_fail (handles->len == 1); - - DEBUG ("Adding handle %u to deny channel on %s", - g_array_index (handles, TpHandle, 0), get_pretty_conn_name (conn)); - - tp_cli_channel_interface_group_call_add_members (channel, -1, - handles, "", - contact_blocking_dialog_added_contact, NULL, NULL, self); -} + EmpathyContactBlockingDialog *self = user_data; + GError *error = NULL; -static void -contact_blocking_dialog_added_contact (TpChannel *channel, - const GError *in_error, - gpointer user_data, - GObject *self) -{ - if (in_error != NULL) + if (!tp_connection_unblock_contacts_finish (TP_CONNECTION (source), result, + &error)) { - DEBUG ("Error adding contact to deny list %s: %s", - tp_proxy_get_object_path (channel), in_error->message); + DEBUG ("Error unblocking contacts: %s", error->message); contact_blocking_dialog_set_error ( - EMPATHY_CONTACT_BLOCKING_DIALOG (self), in_error); + EMPATHY_CONTACT_BLOCKING_DIALOG (self), error); + g_error_free (error); return; } - DEBUG ("Contact added to %s", tp_proxy_get_object_path (channel)); + DEBUG ("Contacts unblocked"); } -static void -contact_blocking_dialog_removed_contacts (TpChannel *, - const GError *, gpointer, GObject *); - static void contact_blocking_dialog_remove_contacts (GtkWidget *button, EmpathyContactBlockingDialog *self) { TpConnection *conn = empathy_account_chooser_get_connection ( EMPATHY_ACCOUNT_CHOOSER (self->priv->account_chooser)); - TpChannel *channel = g_hash_table_lookup (self->priv->channels, conn); GtkTreeModel *model; GList *rows, *ptr; - GArray *handles = g_array_new (FALSE, FALSE, sizeof (TpHandle)); + GPtrArray *contacts; rows = gtk_tree_selection_get_selected_rows (self->priv->selection, &model); + contacts = g_ptr_array_new_with_free_func (g_object_unref); + for (ptr = rows; ptr != NULL; ptr = ptr->next) { GtkTreePath *path = ptr->data; GtkTreeIter iter; - TpHandle handle; + TpContact *contact; if (!gtk_tree_model_get_iter (model, &iter, path)) continue; gtk_tree_model_get (model, &iter, - COL_BLOCKED_HANDLE, &handle, + COL_BLOCKED_CONTACT, &contact, -1); - g_array_append_val (handles, handle); + g_ptr_array_add (contacts, contact); + gtk_tree_path_free (path); } g_list_free (rows); - if (handles->len > 0) + if (contacts->len > 0) { - DEBUG ("Removing %u handles", handles->len); - - tp_cli_channel_interface_group_call_remove_members (channel, -1, - handles, "", - contact_blocking_dialog_removed_contacts, - NULL, NULL, G_OBJECT (self)); - } + DEBUG ("Unblocking %u contacts", contacts->len); - g_array_unref (handles); -} - -static void -contact_blocking_dialog_removed_contacts (TpChannel *channel, - const GError *in_error, - gpointer user_data, - GObject *self) -{ - if (in_error != NULL) - { - DEBUG ("Error removing contacts from deny list: %s", in_error->message); - - contact_blocking_dialog_set_error ( - EMPATHY_CONTACT_BLOCKING_DIALOG (self), in_error); - - return; + tp_connection_unblock_contacts_async (conn, contacts->len, + (TpContact * const *) contacts->pdata, unblock_cb, self); } - DEBUG ("Contacts removed"); + g_ptr_array_unref (contacts); } static void @@ -604,8 +432,7 @@ contact_blocking_dialog_account_changed (GtkWidget *account_chooser, { TpConnection *conn = empathy_account_chooser_get_connection ( EMPATHY_ACCOUNT_CHOOSER (account_chooser)); - TpChannel *channel; - GArray *blocked; + GPtrArray *blocked; EmpathyContactManager *contact_manager; EmpathyTpContactList *contact_list; GList *members, *ptr; @@ -613,29 +440,37 @@ contact_blocking_dialog_account_changed (GtkWidget *account_chooser, if (self->priv->block_account_changed > 0) return; + if (conn == self->priv->current_conn) + return; + /* clear the lists of contacts */ gtk_list_store_clear (self->priv->blocked_contacts); gtk_list_store_clear (self->priv->completion_contacts); + if (self->priv->current_conn != NULL) + { + g_signal_handlers_disconnect_by_func (self->priv->current_conn, + blocked_contacts_changed_cb, self); + + g_clear_object (&self->priv->current_conn); + } + if (conn == NULL) return; DEBUG ("Account changed: %s", get_pretty_conn_name (conn)); - /* load the deny list */ - channel = g_hash_table_lookup (self->priv->channels, conn); + self->priv->current_conn = g_object_ref (conn); - if (channel == NULL) - return; - - g_return_if_fail (TP_IS_CHANNEL (channel)); + tp_g_signal_connect_object (conn, "blocked-contacts-changed", + G_CALLBACK (blocked_contacts_changed_cb), self, 0); - blocked = tp_intset_to_array (tp_channel_group_get_members (channel)); + blocked = tp_connection_get_blocked_contacts (conn); - DEBUG ("%u contacts on blocked list", blocked->len); + DEBUG ("%u contacts blocked on %s", + blocked != NULL ? blocked->len : 0, get_pretty_conn_name (conn)); - contact_blocking_dialog_add_contacts_to_list (self, conn, blocked); - g_array_unref (blocked); + contact_blocking_dialog_add_blocked (self, blocked); /* load the completion list */ g_return_if_fail (empathy_contact_manager_initialized ()); @@ -750,7 +585,7 @@ contact_blocking_dialog_dispose (GObject *self) { EmpathyContactBlockingDialogPrivate *priv = GET_PRIVATE (self); - tp_clear_pointer (&priv->channels, g_hash_table_destroy); + g_clear_object (&priv->current_conn); G_OBJECT_CLASS (empathy_contact_blocking_dialog_parent_class)->dispose (self); } @@ -778,14 +613,12 @@ empathy_contact_blocking_dialog_init (EmpathyContactBlockingDialog *self) GtkEntryCompletion *completion; TpAccountManager *am; GtkStyleContext *context; + TpSimpleClientFactory *factory; self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EMPATHY_TYPE_CONTACT_BLOCKING_DIALOG, EmpathyContactBlockingDialogPrivate); - self->priv->channels = g_hash_table_new_full (NULL, NULL, - g_object_unref, g_object_unref); - gtk_window_set_title (GTK_WINDOW (self), _("Edit Blocked Contacts")); gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE); @@ -833,8 +666,9 @@ empathy_contact_blocking_dialog_init (EmpathyContactBlockingDialog *self) /* build the contact entry */ self->priv->completion_contacts = gtk_list_store_new (N_COMPLETION_COLUMNS, G_TYPE_STRING, /* id */ - G_TYPE_UINT, /* handle */ - G_TYPE_STRING); /* text */ + G_TYPE_STRING, /* text */ + TP_TYPE_CONTACT); /* contact */ + completion = gtk_entry_completion_new (); gtk_entry_completion_set_model (completion, GTK_TREE_MODEL (self->priv->completion_contacts)); @@ -874,6 +708,11 @@ empathy_contact_blocking_dialog_init (EmpathyContactBlockingDialog *self) /* prepare the account manager */ am = tp_account_manager_dup (); + + factory = tp_proxy_get_factory (am); + tp_simple_client_factory_add_connection_features_varargs (factory, + TP_CONNECTION_FEATURE_CONTACT_BLOCKING, NULL); + tp_proxy_prepare_async (am, NULL, contact_blocking_dialog_am_prepared, self); g_object_unref (am); diff --git a/libempathy-gtk/empathy-contact-blocking-dialog.ui b/libempathy-gtk/empathy-contact-blocking-dialog.ui index 78dd1cd2..25499ac7 100644 --- a/libempathy-gtk/empathy-contact-blocking-dialog.ui +++ b/libempathy-gtk/empathy-contact-blocking-dialog.ui @@ -6,8 +6,8 @@ - - + + diff --git a/libempathy-gtk/empathy-contact-chooser.c b/libempathy-gtk/empathy-contact-chooser.c index 7a9e7344..cba419be 100644 --- a/libempathy-gtk/empathy-contact-chooser.c +++ b/libempathy-gtk/empathy-contact-chooser.c @@ -14,6 +14,9 @@ #include "empathy-contact-chooser.h" +#include + +#include #include #include @@ -208,11 +211,7 @@ get_contacts_cb (TpConnection *connection, EmpathyContactChooser *self = (EmpathyContactChooser *) weak_object; AddTemporaryIndividualCtx *ctx = user_data; - TpAccount *account; - TpfPersonaStore *store; FolksIndividual *individual; - TpfPersona *persona_new; - GeeSet *personas; if (self->priv->add_temp_ctx != ctx) /* another request has been started */ @@ -221,17 +220,7 @@ get_contacts_cb (TpConnection *connection, if (n_contacts != 1) return; - account = tp_connection_get_account (connection); - - store = tpf_persona_store_new (account); - personas = GEE_SET ( - gee_hash_set_new (FOLKS_TYPE_PERSONA, g_object_ref, g_object_unref, - g_direct_hash, g_direct_equal)); - persona_new = tpf_persona_new (contacts[0], store); - gee_collection_add (GEE_COLLECTION (personas), - tpf_persona_new (contacts[0], store)); - - individual = folks_individual_new (personas); + individual = empathy_create_individual_from_tp_contact (contacts[0]); /* listen for updates to the capabilities */ tp_g_signal_connect_object (contacts[0], "notify::capabilities", @@ -247,10 +236,6 @@ get_contacts_cb (TpConnection *connection, gtk_tree_view_get_selection (GTK_TREE_VIEW (self->priv->view)), NULL, NULL)) empathy_individual_view_select_first (self->priv->view); - - g_clear_object (&persona_new); - g_clear_object (&personas); - g_object_unref (store); } static void @@ -411,7 +396,8 @@ empathy_contact_chooser_init (EmpathyContactChooser *self) /* Add the treeview */ mgr = empathy_individual_manager_dup_singleton (); - self->priv->store = empathy_individual_store_new (mgr); + self->priv->store = EMPATHY_INDIVIDUAL_STORE ( + empathy_individual_store_manager_new (mgr)); g_object_unref (mgr); empathy_individual_store_set_show_groups (self->priv->store, FALSE); diff --git a/libempathy-gtk/empathy-contact-dialogs.c b/libempathy-gtk/empathy-contact-dialogs.c index 29552ccc..1c56a868 100644 --- a/libempathy-gtk/empathy-contact-dialogs.c +++ b/libempathy-gtk/empathy-contact-dialogs.c @@ -30,8 +30,6 @@ #include -#include -#include #include #include @@ -67,22 +65,18 @@ subscription_dialog_response_cb (GtkDialog *dialog, gint response, GtkWidget *contact_widget) { - EmpathyContactManager *manager; EmpathyContact *contact; - manager = empathy_contact_manager_dup_singleton (); contact = empathy_contact_widget_get_contact (contact_widget); if (response == GTK_RESPONSE_YES) { - empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager), - contact, ""); + empathy_contact_add_to_contact_list (contact, ""); empathy_contact_set_alias (contact, empathy_contact_widget_get_alias (contact_widget)); } else if (response == GTK_RESPONSE_NO) { - empathy_contact_list_remove (EMPATHY_CONTACT_LIST (manager), - contact, ""); + empathy_contact_remove_from_contact_list (contact); } else if (response == GTK_RESPONSE_REJECT) { gboolean abusive; @@ -90,24 +84,22 @@ subscription_dialog_response_cb (GtkDialog *dialog, /* confirm the blocking */ if (empathy_block_contact_dialog_show (GTK_WINDOW (dialog), contact, NULL, &abusive)) { - empathy_contact_list_remove ( - EMPATHY_CONTACT_LIST (manager), - contact, ""); - empathy_contact_list_set_blocked ( - EMPATHY_CONTACT_LIST (manager), - contact, TRUE, abusive); + TpContact *tp_contact; + + empathy_contact_remove_from_contact_list (contact); + + tp_contact = empathy_contact_get_tp_contact (contact); + + tp_contact_block_async (tp_contact, abusive, NULL, NULL); } else { /* if they don't confirm, return back to the * first dialog */ - goto finally; + return; } } subscription_dialogs = g_list_remove (subscription_dialogs, dialog); gtk_widget_destroy (GTK_WIDGET (dialog)); - -finally: - g_object_unref (manager); } void @@ -123,10 +115,7 @@ empathy_subscription_dialog_show (EmpathyContact *contact, GtkWidget *block_user_button; GList *l; gchar *filename; - EmpathyContactManager *manager; - EmpathyContactListFlags flags; - - manager = empathy_contact_manager_dup_singleton (); + TpConnection *conn; g_return_if_fail (EMPATHY_IS_CONTACT (contact)); @@ -148,7 +137,7 @@ empathy_subscription_dialog_show (EmpathyContact *contact, g_free (filename); g_object_unref (gui); - vbox = gtk_vbox_new (FALSE, 6); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_end (GTK_BOX (hbox_subscription), vbox, TRUE, TRUE, 0); @@ -188,17 +177,16 @@ empathy_subscription_dialog_show (EmpathyContact *contact, G_CALLBACK (subscription_dialog_response_cb), contact_widget); - flags = empathy_contact_manager_get_flags_for_connection (manager, - empathy_contact_get_connection (contact)); + conn = empathy_contact_get_connection (contact); - if (flags & EMPATHY_CONTACT_LIST_CAN_BLOCK) + if (tp_proxy_has_interface_by_id (conn, + TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) gtk_widget_show (block_user_button); if (parent) { gtk_window_set_transient_for (GTK_WINDOW (dialog), parent); } - g_object_unref (manager); gtk_widget_show (dialog); } @@ -395,7 +383,6 @@ can_add_contact_to_account (TpAccount *account, gpointer callback_data, gpointer user_data) { - EmpathyContactManager *contact_manager; TpConnection *connection; gboolean result; @@ -405,10 +392,7 @@ can_add_contact_to_account (TpAccount *account, return; } - contact_manager = empathy_contact_manager_dup_singleton (); - result = empathy_contact_manager_get_flags_for_connection ( - contact_manager, connection) & EMPATHY_CONTACT_LIST_CAN_ADD; - g_object_unref (contact_manager); + result = tp_connection_get_can_change_contact_list (connection); callback (result, callback_data); } @@ -418,20 +402,16 @@ new_contact_response_cb (GtkDialog *dialog, gint response, GtkWidget *contact_widget) { - EmpathyContactManager *manager; EmpathyContact *contact; - manager = empathy_contact_manager_dup_singleton (); contact = empathy_contact_widget_get_contact (contact_widget); if (contact && response == GTK_RESPONSE_OK) { - empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager), - contact, ""); + empathy_contact_add_to_contact_list (contact, ""); } new_contact_dialog = NULL; gtk_widget_destroy (GTK_WIDGET (dialog)); - g_object_unref (manager); } void @@ -517,15 +497,10 @@ empathy_block_contact_dialog_show (GtkWindow *parent, GdkPixbuf *avatar, gboolean *abusive) { - EmpathyContactManager *manager; - EmpathyContactListFlags flags; GtkWidget *dialog; GtkWidget *abusive_check = NULL; int res; - - manager = empathy_contact_manager_dup_singleton (); - flags = empathy_contact_manager_get_flags_for_connection (manager, - empathy_contact_get_connection (contact)); + TpConnection *conn; dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, @@ -549,8 +524,10 @@ empathy_block_contact_dialog_show (GtkWindow *parent, gtk_widget_show (image); } + conn = empathy_contact_get_connection (contact); + /* ask the user if they want to also report the contact as abusive */ - if (flags & EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE) { + if (tp_connection_can_report_abusive (conn)) { GtkWidget *vbox; vbox = gtk_message_dialog_get_message_area ( @@ -574,7 +551,6 @@ empathy_block_contact_dialog_show (GtkWindow *parent, } gtk_widget_destroy (dialog); - g_object_unref (manager); return res == GTK_RESPONSE_REJECT; } diff --git a/libempathy-gtk/empathy-contact-list-store.c b/libempathy-gtk/empathy-contact-list-store.c deleted file mode 100644 index ef4c466b..00000000 --- a/libempathy-gtk/empathy-contact-list-store.c +++ /dev/null @@ -1,1779 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Copyright (C) 2005-2007 Imendio AB - * Copyright (C) 2007-2008 Collabora Ltd. - * - * 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., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301 USA - * - * Authors: Mikael Hallendal - * Martyn Russell - * Xavier Claessens - */ - -#include "config.h" - -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include "empathy-contact-list-store.h" -#include "empathy-ui-utils.h" -#include "empathy-gtk-enum-types.h" -#include "empathy-images.h" - -#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT -#include - -/* Active users are those which have recently changed state - * (e.g. online, offline or from normal to a busy state). - */ - -/* Time in seconds user is shown as active */ -#define ACTIVE_USER_SHOW_TIME 7 - -/* Time in seconds after connecting which we wait before active users are enabled */ -#define ACTIVE_USER_WAIT_TO_ENABLE_TIME 5 - -#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyContactListStore) -typedef struct { - EmpathyContactList *list; - gboolean show_offline; - gboolean show_avatars; - gboolean show_groups; - gboolean is_compact; - gboolean show_protocols; - gboolean show_active; - EmpathyContactListStoreSort sort_criterium; - guint inhibit_active; - guint setup_idle_id; - gboolean dispose_has_run; - GHashTable *status_icons; - /* Hash: EmpathyContact* -> GQueue (GtkTreeIter *) */ - GHashTable *empathy_contact_cache; - /* Hash: char *groupname -> GtkTreeIter * */ - GHashTable *empathy_group_cache; -} EmpathyContactListStorePriv; - -typedef struct { - EmpathyContactListStore *store; - EmpathyContact *contact; - gboolean remove; - guint timeout; -} ShowActiveData; - -static void contact_list_store_dispose (GObject *object); -static void contact_list_store_get_property (GObject *object, - guint param_id, - GValue *value, - GParamSpec *pspec); -static void contact_list_store_set_property (GObject *object, - guint param_id, - const GValue *value, - GParamSpec *pspec); -static void contact_list_store_setup (EmpathyContactListStore *store); -static gboolean contact_list_store_inibit_active_cb (EmpathyContactListStore *store); -static void contact_list_store_members_changed_cb (EmpathyContactList *list_iface, - EmpathyContact *contact, - EmpathyContact *actor, - guint reason, - gchar *message, - gboolean is_member, - EmpathyContactListStore *store); -static void contact_list_store_member_renamed_cb (EmpathyContactList *list_iface, - EmpathyContact *old_contact, - EmpathyContact *new_contact, - guint reason, - gchar *message, - EmpathyContactListStore *store); -static void contact_list_store_groups_changed_cb (EmpathyContactList *list_iface, - EmpathyContact *contact, - gchar *group, - gboolean is_member, - EmpathyContactListStore *store); -static void contact_list_store_add_contact (EmpathyContactListStore *store, - EmpathyContact *contact); -static void contact_list_store_remove_contact (EmpathyContactListStore *store, - EmpathyContact *contact); -static void contact_list_store_contact_update (EmpathyContactListStore *store, - EmpathyContact *contact); -static void contact_list_store_contact_updated_cb (EmpathyContact *contact, - GParamSpec *param, - EmpathyContactListStore *store); -static void contact_list_store_contact_set_active (EmpathyContactListStore *store, - EmpathyContact *contact, - gboolean active, - gboolean set_changed); -static ShowActiveData * contact_list_store_contact_active_new (EmpathyContactListStore *store, - EmpathyContact *contact, - gboolean remove); -static void contact_list_store_contact_active_free (ShowActiveData *data); -static gboolean contact_list_store_contact_active_cb (ShowActiveData *data); -static void contact_list_store_get_group (EmpathyContactListStore *store, - const gchar *name, - GtkTreeIter *iter_group_to_set, - GtkTreeIter *iter_separator_to_set, - gboolean *created, - gboolean is_fake_group); -static gint contact_list_store_state_sort_func (GtkTreeModel *model, - GtkTreeIter *iter_a, - GtkTreeIter *iter_b, - gpointer user_data); -static gint contact_list_store_name_sort_func (GtkTreeModel *model, - GtkTreeIter *iter_a, - GtkTreeIter *iter_b, - gpointer user_data); -static GList * contact_list_store_find_contact (EmpathyContactListStore *store, - EmpathyContact *contact); -static gboolean contact_list_store_update_list_mode_foreach (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - EmpathyContactListStore *store); - -enum { - PROP_0, - PROP_CONTACT_LIST, - PROP_SHOW_OFFLINE, - PROP_SHOW_AVATARS, - PROP_SHOW_PROTOCOLS, - PROP_SHOW_GROUPS, - PROP_IS_COMPACT, - PROP_SORT_CRITERIUM -}; - -G_DEFINE_TYPE (EmpathyContactListStore, empathy_contact_list_store, GTK_TYPE_TREE_STORE); - -static void -contact_list_store_chat_state_changed_cb (TpChannel *self, - guint contact_handle, - guint state, - gpointer store) -{ - EmpathyContactListStorePriv *priv = GET_PRIV (store); - GList *contacts, *l; - - contacts = empathy_contact_list_get_members (priv->list); - - for (l = contacts; l != NULL; l = l->next) { - EmpathyContact *contact = EMPATHY_CONTACT (l->data); - - if (empathy_contact_get_handle (contact) == contact_handle) { - contact_list_store_contact_update (store, contact); - break; - } - } - - g_list_foreach (contacts, (GFunc) g_object_unref, NULL); - g_list_free (contacts); -} - -static gboolean -contact_list_store_iface_setup (gpointer user_data) -{ - EmpathyContactListStore *store = user_data; - EmpathyContactListStorePriv *priv = GET_PRIV (store); - GList *contacts, *l; - - /* Signal connection. */ - g_signal_connect (priv->list, - "member-renamed", - G_CALLBACK (contact_list_store_member_renamed_cb), - store); - g_signal_connect (priv->list, - "members-changed", - G_CALLBACK (contact_list_store_members_changed_cb), - store); - g_signal_connect (priv->list, - "groups-changed", - G_CALLBACK (contact_list_store_groups_changed_cb), - store); - - if (EMPATHY_IS_TP_CHAT (priv->list)) { - g_signal_connect (priv->list, - "chat-state-changed", - G_CALLBACK (contact_list_store_chat_state_changed_cb), - store); - } - - /* Add contacts already created. */ - contacts = empathy_contact_list_get_members (priv->list); - for (l = contacts; l; l = l->next) { - contact_list_store_members_changed_cb (priv->list, l->data, - NULL, 0, NULL, - TRUE, - store); - - g_object_unref (l->data); - } - g_list_free (contacts); - - priv->setup_idle_id = 0; - return FALSE; -} - - -static void -contact_list_store_set_contact_list (EmpathyContactListStore *store, - EmpathyContactList *list_iface) -{ - EmpathyContactListStorePriv *priv = GET_PRIV (store); - - priv->list = g_object_ref (list_iface); - - /* Let a chance to have all properties set before populating */ - priv->setup_idle_id = g_idle_add (contact_list_store_iface_setup, store); -} - -static void -empathy_contact_list_store_class_init (EmpathyContactListStoreClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->dispose = contact_list_store_dispose; - object_class->get_property = contact_list_store_get_property; - object_class->set_property = contact_list_store_set_property; - - g_object_class_install_property (object_class, - PROP_CONTACT_LIST, - g_param_spec_object ("contact-list", - "The contact list iface", - "The contact list iface", - EMPATHY_TYPE_CONTACT_LIST, - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_SHOW_OFFLINE, - g_param_spec_boolean ("show-offline", - "Show Offline", - "Whether contact list should display " - "offline contacts", - FALSE, - G_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_SHOW_AVATARS, - g_param_spec_boolean ("show-avatars", - "Show Avatars", - "Whether contact list should display " - "avatars for contacts", - TRUE, - G_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_SHOW_PROTOCOLS, - g_param_spec_boolean ("show-protocols", - "Show Protocols", - "Whether contact list should display " - "protocols for contacts", - FALSE, - G_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_SHOW_GROUPS, - g_param_spec_boolean ("show-groups", - "Show Groups", - "Whether contact list should display " - "contact groups", - TRUE, - G_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_IS_COMPACT, - g_param_spec_boolean ("is-compact", - "Is Compact", - "Whether the contact list is in compact mode or not", - FALSE, - G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, - PROP_SORT_CRITERIUM, - g_param_spec_enum ("sort-criterium", - "Sort citerium", - "The sort criterium to use for sorting the contact list", - EMPATHY_TYPE_CONTACT_LIST_STORE_SORT, - EMPATHY_CONTACT_LIST_STORE_SORT_NAME, - G_PARAM_READWRITE)); - - g_type_class_add_private (object_class, sizeof (EmpathyContactListStorePriv)); -} - -static void -g_queue_free_full_iter (gpointer data) -{ - GQueue *queue = (GQueue *) data; - g_queue_foreach (queue, (GFunc) gtk_tree_iter_free, NULL); - g_queue_free (queue); -} - - -static void -empathy_contact_list_store_init (EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (store, - EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStorePriv); - - store->priv = priv; - priv->show_avatars = TRUE; - priv->show_groups = TRUE; - priv->show_protocols = FALSE; - priv->inhibit_active = g_timeout_add_seconds (ACTIVE_USER_WAIT_TO_ENABLE_TIME, - (GSourceFunc) contact_list_store_inibit_active_cb, - store); - priv->status_icons = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); - priv->empathy_contact_cache = g_hash_table_new_full (NULL, NULL, NULL, - g_queue_free_full_iter); - priv->empathy_group_cache = g_hash_table_new_full (g_str_hash, - g_str_equal, g_free, - (GDestroyNotify) gtk_tree_iter_free); - contact_list_store_setup (store); -} - -static void -contact_list_store_dispose (GObject *object) -{ - EmpathyContactListStorePriv *priv = GET_PRIV (object); - GList *contacts, *l; - - if (priv->dispose_has_run) - return; - priv->dispose_has_run = TRUE; - - contacts = empathy_contact_list_get_members (priv->list); - for (l = contacts; l; l = l->next) { - g_signal_handlers_disconnect_by_func (l->data, - G_CALLBACK (contact_list_store_contact_updated_cb), - object); - - g_object_unref (l->data); - } - g_list_free (contacts); - - g_signal_handlers_disconnect_by_func (priv->list, - G_CALLBACK (contact_list_store_member_renamed_cb), - object); - g_signal_handlers_disconnect_by_func (priv->list, - G_CALLBACK (contact_list_store_members_changed_cb), - object); - g_signal_handlers_disconnect_by_func (priv->list, - G_CALLBACK (contact_list_store_groups_changed_cb), - object); - g_object_unref (priv->list); - - if (priv->inhibit_active != 0) { - g_source_remove (priv->inhibit_active); - priv->inhibit_active = 0; - } - - if (priv->setup_idle_id != 0) { - g_source_remove (priv->setup_idle_id); - priv->setup_idle_id = 0; - } - - g_hash_table_destroy (priv->status_icons); - g_hash_table_destroy (priv->empathy_contact_cache); - g_hash_table_destroy (priv->empathy_group_cache); - G_OBJECT_CLASS (empathy_contact_list_store_parent_class)->dispose (object); -} - -static void -contact_list_store_get_property (GObject *object, - guint param_id, - GValue *value, - GParamSpec *pspec) -{ - EmpathyContactListStorePriv *priv; - - priv = GET_PRIV (object); - - switch (param_id) { - case PROP_CONTACT_LIST: - g_value_set_object (value, priv->list); - break; - case PROP_SHOW_OFFLINE: - g_value_set_boolean (value, priv->show_offline); - break; - case PROP_SHOW_AVATARS: - g_value_set_boolean (value, priv->show_avatars); - break; - case PROP_SHOW_PROTOCOLS: - g_value_set_boolean (value, priv->show_protocols); - break; - case PROP_SHOW_GROUPS: - g_value_set_boolean (value, priv->show_groups); - break; - case PROP_IS_COMPACT: - g_value_set_boolean (value, priv->is_compact); - break; - case PROP_SORT_CRITERIUM: - g_value_set_enum (value, priv->sort_criterium); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; -} - -static void -contact_list_store_set_property (GObject *object, - guint param_id, - const GValue *value, - GParamSpec *pspec) -{ - switch (param_id) { - case PROP_CONTACT_LIST: - contact_list_store_set_contact_list (EMPATHY_CONTACT_LIST_STORE (object), - g_value_get_object (value)); - break; - case PROP_SHOW_OFFLINE: - empathy_contact_list_store_set_show_offline (EMPATHY_CONTACT_LIST_STORE (object), - g_value_get_boolean (value)); - break; - case PROP_SHOW_AVATARS: - empathy_contact_list_store_set_show_avatars (EMPATHY_CONTACT_LIST_STORE (object), - g_value_get_boolean (value)); - break; - case PROP_SHOW_PROTOCOLS: - empathy_contact_list_store_set_show_protocols (EMPATHY_CONTACT_LIST_STORE (object), - g_value_get_boolean (value)); - break; - case PROP_SHOW_GROUPS: - empathy_contact_list_store_set_show_groups (EMPATHY_CONTACT_LIST_STORE (object), - g_value_get_boolean (value)); - break; - case PROP_IS_COMPACT: - empathy_contact_list_store_set_is_compact (EMPATHY_CONTACT_LIST_STORE (object), - g_value_get_boolean (value)); - break; - case PROP_SORT_CRITERIUM: - empathy_contact_list_store_set_sort_criterium (EMPATHY_CONTACT_LIST_STORE (object), - g_value_get_enum (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; -} - -EmpathyContactListStore * -empathy_contact_list_store_new (EmpathyContactList *list_iface) -{ - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list_iface), NULL); - - return g_object_new (EMPATHY_TYPE_CONTACT_LIST_STORE, - "contact-list", list_iface, - NULL); -} - -EmpathyContactList * -empathy_contact_list_store_get_list_iface (EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), FALSE); - - priv = GET_PRIV (store); - - return priv->list; -} - -gboolean -empathy_contact_list_store_get_show_offline (EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), FALSE); - - priv = GET_PRIV (store); - - return priv->show_offline; -} - -void -empathy_contact_list_store_set_show_offline (EmpathyContactListStore *store, - gboolean show_offline) -{ - EmpathyContactListStorePriv *priv; - GList *contacts, *l; - gboolean show_active; - - g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store)); - - priv = GET_PRIV (store); - - priv->show_offline = show_offline; - show_active = priv->show_active; - - /* Disable temporarily. */ - priv->show_active = FALSE; - - contacts = empathy_contact_list_get_members (priv->list); - for (l = contacts; l; l = l->next) { - contact_list_store_contact_update (store, l->data); - - g_object_unref (l->data); - } - g_list_free (contacts); - - /* Restore to original setting. */ - priv->show_active = show_active; - - g_object_notify (G_OBJECT (store), "show-offline"); -} - -gboolean -empathy_contact_list_store_get_show_avatars (EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE); - - priv = GET_PRIV (store); - - return priv->show_avatars; -} - -void -empathy_contact_list_store_set_show_avatars (EmpathyContactListStore *store, - gboolean show_avatars) -{ - EmpathyContactListStorePriv *priv; - GtkTreeModel *model; - - g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store)); - - priv = GET_PRIV (store); - - priv->show_avatars = show_avatars; - - model = GTK_TREE_MODEL (store); - - gtk_tree_model_foreach (model, - (GtkTreeModelForeachFunc) - contact_list_store_update_list_mode_foreach, - store); - - g_object_notify (G_OBJECT (store), "show-avatars"); -} - - -gboolean -empathy_contact_list_store_get_show_protocols (EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE); - - priv = GET_PRIV (store); - - return priv->show_protocols; -} - -void -empathy_contact_list_store_set_show_protocols (EmpathyContactListStore *store, - gboolean show_protocols) -{ - EmpathyContactListStorePriv *priv; - GtkTreeModel *model; - - g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store)); - - priv = GET_PRIV (store); - - priv->show_protocols = show_protocols; - - model = GTK_TREE_MODEL (store); - - gtk_tree_model_foreach (model, - (GtkTreeModelForeachFunc) - contact_list_store_update_list_mode_foreach, - store); - - g_object_notify (G_OBJECT (store), "show-protocols"); -} - -gboolean -empathy_contact_list_store_get_show_groups (EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE); - - priv = GET_PRIV (store); - - return priv->show_groups; -} - -void -empathy_contact_list_store_set_show_groups (EmpathyContactListStore *store, - gboolean show_groups) -{ - EmpathyContactListStorePriv *priv; - - g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store)); - - priv = GET_PRIV (store); - - if (priv->show_groups == show_groups) { - return; - } - - priv->show_groups = show_groups; - - if (priv->setup_idle_id == 0) { - /* Remove all contacts and add them back, not optimized but - * that's the easy way :) - * - * This is only done if there's not a pending setup idle - * callback, otherwise it will race and the contacts will get - * added twice */ - GList *contacts, *l; - - gtk_tree_store_clear (GTK_TREE_STORE (store)); - - /* Also clear the cache */ - g_hash_table_remove_all (priv->empathy_contact_cache); - g_hash_table_remove_all (priv->empathy_group_cache); - - contacts = empathy_contact_list_get_members (priv->list); - for (l = contacts; l; l = l->next) { - contact_list_store_members_changed_cb (priv->list, - l->data, - NULL, 0, NULL, - TRUE, - store); - - g_object_unref (l->data); - } - g_list_free (contacts); - } - - g_object_notify (G_OBJECT (store), "show-groups"); -} - -gboolean -empathy_contact_list_store_get_is_compact (EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE); - - priv = GET_PRIV (store); - - return priv->is_compact; -} - -void -empathy_contact_list_store_set_is_compact (EmpathyContactListStore *store, - gboolean is_compact) -{ - EmpathyContactListStorePriv *priv; - GtkTreeModel *model; - - g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store)); - - priv = GET_PRIV (store); - - priv->is_compact = is_compact; - - model = GTK_TREE_MODEL (store); - - gtk_tree_model_foreach (model, - (GtkTreeModelForeachFunc) - contact_list_store_update_list_mode_foreach, - store); - - g_object_notify (G_OBJECT (store), "is-compact"); -} - -EmpathyContactListStoreSort -empathy_contact_list_store_get_sort_criterium (EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), 0); - - priv = GET_PRIV (store); - - return priv->sort_criterium; -} - -void -empathy_contact_list_store_set_sort_criterium (EmpathyContactListStore *store, - EmpathyContactListStoreSort sort_criterium) -{ - EmpathyContactListStorePriv *priv; - - g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store)); - - priv = GET_PRIV (store); - - priv->sort_criterium = sort_criterium; - - switch (sort_criterium) { - case EMPATHY_CONTACT_LIST_STORE_SORT_STATE: - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store), - EMPATHY_CONTACT_LIST_STORE_COL_STATUS, - GTK_SORT_ASCENDING); - break; - - case EMPATHY_CONTACT_LIST_STORE_SORT_NAME: - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store), - EMPATHY_CONTACT_LIST_STORE_COL_NAME, - GTK_SORT_ASCENDING); - break; - - default: - g_assert_not_reached (); - } - - g_object_notify (G_OBJECT (store), "sort-criterium"); -} - -gboolean -empathy_contact_list_store_row_separator_func (GtkTreeModel *model, - GtkTreeIter *iter, - gpointer data) -{ - gboolean is_separator = FALSE; - - g_return_val_if_fail (GTK_IS_TREE_MODEL (model), FALSE); - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator, - -1); - - return is_separator; -} - -gchar * -empathy_contact_list_store_get_parent_group (GtkTreeModel *model, - GtkTreePath *path, - gboolean *path_is_group, - gboolean *is_fake_group) -{ - GtkTreeIter parent_iter, iter; - gchar *name = NULL; - gboolean is_group; - gboolean fake; - - g_return_val_if_fail (GTK_IS_TREE_MODEL (model), NULL); - - if (path_is_group) { - *path_is_group = FALSE; - } - - if (!gtk_tree_model_get_iter (model, &iter, path)) { - return NULL; - } - - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name, - -1); - - if (!is_group) { - g_free (name); - name = NULL; - - if (!gtk_tree_model_iter_parent (model, &parent_iter, &iter)) { - return NULL; - } - - iter = parent_iter; - - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name, - EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake, - -1); - if (!is_group) { - g_free (name); - return NULL; - } - } - - if (path_is_group) { - *path_is_group = TRUE; - } - - if (is_fake_group != NULL) - *is_fake_group = fake; - - return name; -} - -static void -contact_list_store_setup (EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - GType types[] = { - GDK_TYPE_PIXBUF, /* Status pixbuf */ - GDK_TYPE_PIXBUF, /* Avatar pixbuf */ - G_TYPE_BOOLEAN, /* Avatar pixbuf visible */ - G_TYPE_STRING, /* Name */ - G_TYPE_UINT, /* Presence type */ - G_TYPE_STRING, /* Status string */ - G_TYPE_BOOLEAN, /* Compact view */ - EMPATHY_TYPE_CONTACT, /* Contact type */ - G_TYPE_BOOLEAN, /* Is group */ - G_TYPE_BOOLEAN, /* Is active */ - G_TYPE_BOOLEAN, /* Is online */ - G_TYPE_BOOLEAN, /* Is separator */ - G_TYPE_BOOLEAN, /* Can make audio calls */ - G_TYPE_BOOLEAN, /* Can make video calls */ - EMPATHY_TYPE_CONTACT_LIST_FLAGS, /* Flags */ - G_TYPE_BOOLEAN, /* Is a fake group */ - }; - - priv = GET_PRIV (store); - - gtk_tree_store_set_column_types (GTK_TREE_STORE (store), - EMPATHY_CONTACT_LIST_STORE_COL_COUNT, - types); - - /* Set up sorting */ - gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store), - EMPATHY_CONTACT_LIST_STORE_COL_NAME, - contact_list_store_name_sort_func, - store, NULL); - gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store), - EMPATHY_CONTACT_LIST_STORE_COL_STATUS, - contact_list_store_state_sort_func, - store, NULL); - - priv->sort_criterium = EMPATHY_CONTACT_LIST_STORE_SORT_NAME; - empathy_contact_list_store_set_sort_criterium (store, priv->sort_criterium); -} - -static gboolean -contact_list_store_inibit_active_cb (EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - - priv = GET_PRIV (store); - - priv->show_active = TRUE; - priv->inhibit_active = 0; - - return FALSE; -} - -static void -contact_list_store_add_contact_and_connect (EmpathyContactListStore *store, EmpathyContact *contact) -{ - g_signal_connect (contact, "notify::presence", - G_CALLBACK (contact_list_store_contact_updated_cb), - store); - g_signal_connect (contact, "notify::presence-message", - G_CALLBACK (contact_list_store_contact_updated_cb), - store); - g_signal_connect (contact, "notify::name", - G_CALLBACK (contact_list_store_contact_updated_cb), - store); - g_signal_connect (contact, "notify::avatar", - G_CALLBACK (contact_list_store_contact_updated_cb), - store); - g_signal_connect (contact, "notify::capabilities", - G_CALLBACK (contact_list_store_contact_updated_cb), - store); - - contact_list_store_add_contact (store, contact); -} - -static void -contact_list_store_remove_contact_and_disconnect (EmpathyContactListStore *store, EmpathyContact *contact) -{ - g_signal_handlers_disconnect_by_func (contact, - G_CALLBACK (contact_list_store_contact_updated_cb), - store); - - contact_list_store_remove_contact (store, contact); -} - -static void -contact_list_store_members_changed_cb (EmpathyContactList *list_iface, - EmpathyContact *contact, - EmpathyContact *actor, - guint reason, - gchar *message, - gboolean is_member, - EmpathyContactListStore *store) -{ - DEBUG ("Contact %s (%d) %s", - empathy_contact_get_id (contact), - empathy_contact_get_handle (contact), - is_member ? "added" : "removed"); - - if (is_member) { - contact_list_store_add_contact_and_connect (store, contact); - } else { - contact_list_store_remove_contact_and_disconnect (store, contact); - } -} - -static void -contact_list_store_member_renamed_cb (EmpathyContactList *list_iface, - EmpathyContact *old_contact, - EmpathyContact *new_contact, - guint reason, - gchar *message, - EmpathyContactListStore *store) -{ - DEBUG ("Contact %s (%d) renamed to %s (%d)", - empathy_contact_get_id (old_contact), - empathy_contact_get_handle (old_contact), - empathy_contact_get_id (new_contact), - empathy_contact_get_handle (new_contact)); - - /* add the new contact */ - contact_list_store_add_contact_and_connect (store, new_contact); - - /* remove old contact */ - contact_list_store_remove_contact_and_disconnect (store, old_contact); -} - -static void -contact_list_store_groups_changed_cb (EmpathyContactList *list_iface, - EmpathyContact *contact, - gchar *group, - gboolean is_member, - EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - gboolean show_active; - - priv = GET_PRIV (store); - - DEBUG ("Updating groups for contact %s (%d)", - empathy_contact_get_id (contact), - empathy_contact_get_handle (contact)); - - /* We do this to make sure the groups are correct, if not, we - * would have to check the groups already set up for each - * contact and then see what has been updated. - */ - show_active = priv->show_active; - priv->show_active = FALSE; - contact_list_store_remove_contact (store, contact); - contact_list_store_add_contact (store, contact); - priv->show_active = show_active; -} - -static void -add_contact_to_store (GtkTreeStore *store, - GtkTreeIter *iter, - GtkTreeIter *parent, - EmpathyContact *contact, - EmpathyContactListFlags flags) -{ - EmpathyContactListStorePriv *priv = GET_PRIV (store); - GQueue *queue; - - gtk_tree_store_insert_with_values (store, iter, parent, 0, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, empathy_contact_get_alias (contact), - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, contact, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, FALSE, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, FALSE, - EMPATHY_CONTACT_LIST_STORE_COL_CAN_AUDIO_CALL, - empathy_contact_get_capabilities (contact) & - EMPATHY_CAPABILITIES_AUDIO, - EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL, - empathy_contact_get_capabilities (contact) & - EMPATHY_CAPABILITIES_VIDEO, - EMPATHY_CONTACT_LIST_STORE_COL_FLAGS, flags, - -1); - - queue = g_hash_table_lookup (priv->empathy_contact_cache, contact); - if (queue) { - g_queue_push_tail (queue, gtk_tree_iter_copy (iter)); - } else { - queue = g_queue_new (); - g_queue_push_tail (queue, gtk_tree_iter_copy (iter)); - g_hash_table_insert (priv->empathy_contact_cache, contact, - queue); - } -} - -static void -contact_list_store_add_contact (EmpathyContactListStore *store, - EmpathyContact *contact) -{ - EmpathyContactListStorePriv *priv; - GtkTreeIter iter; - GList *groups = NULL, *l; - TpConnection *connection; - EmpathyContactListFlags flags = 0; - char *protocol_name; - - priv = GET_PRIV (store); - - if (EMP_STR_EMPTY (empathy_contact_get_alias (contact)) || - (!priv->show_offline && !empathy_contact_is_online (contact))) { - return; - } - - if (priv->show_groups) { - groups = empathy_contact_list_get_groups (priv->list, contact); - } - - connection = empathy_contact_get_connection (contact); - if (EMPATHY_IS_CONTACT_MANAGER (priv->list)) { - flags = empathy_contact_manager_get_flags_for_connection ( - EMPATHY_CONTACT_MANAGER (priv->list), connection); - } - - tp_connection_parse_object_path (connection, &protocol_name, NULL); - - if (!groups) { - GtkTreeIter iter_group, *parent; - - parent = &iter_group; - - if (!priv->show_groups) { - parent = NULL; - } - - add_contact_to_store (GTK_TREE_STORE (store), &iter, parent, - contact, flags); - } - - g_free (protocol_name); - - /* Else add to each group. */ - for (l = groups; l; l = l->next) { - GtkTreeIter iter_group; - - contact_list_store_get_group (store, l->data, &iter_group, NULL, NULL, FALSE); - - add_contact_to_store (GTK_TREE_STORE (store), &iter, &iter_group, contact, flags); - g_free (l->data); - } - g_list_free (groups); - - contact_list_store_contact_update (store, contact); -} - -static void -contact_list_store_remove_contact (EmpathyContactListStore *store, - EmpathyContact *contact) -{ - EmpathyContactListStorePriv *priv = GET_PRIV (store); - GtkTreeModel *model; - GList *l; - GQueue *row_refs; - - row_refs = g_hash_table_lookup (priv->empathy_contact_cache, contact); - if (!row_refs) { - return; - } - - /* Clean up model */ - model = GTK_TREE_MODEL (store); - - for (l = g_queue_peek_head_link (row_refs); l; l = l->next) { - GtkTreeIter *iter = l->data; - GtkTreeIter parent; - - /* NOTE: it is only <= 2 here because we have - * separators after the group name, otherwise it - * should be 1. - */ - if (gtk_tree_model_iter_parent (model, &parent, iter) && - gtk_tree_model_iter_n_children (model, &parent) <= 2) { - gchar *group_name; - gtk_tree_model_get (model, &parent, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &group_name, - -1); - g_hash_table_remove (priv->empathy_group_cache, - group_name); - gtk_tree_store_remove (GTK_TREE_STORE (store), &parent); - } else { - gtk_tree_store_remove (GTK_TREE_STORE (store), iter); - } - } - - g_hash_table_remove (priv->empathy_contact_cache, contact); -} - -static void -contact_list_store_contact_update (EmpathyContactListStore *store, - EmpathyContact *contact) -{ - EmpathyContactListStorePriv *priv; - ShowActiveData *data; - GtkTreeModel *model; - GList *iters, *l; - gboolean in_list; - gboolean should_be_in_list; - gboolean was_online = TRUE; - gboolean now_online = FALSE; - gboolean set_model = FALSE; - gboolean do_remove = FALSE; - gboolean do_set_active = FALSE; - gboolean do_set_refresh = FALSE; - gboolean show_avatar = FALSE; - GdkPixbuf *pixbuf_avatar; - GdkPixbuf *pixbuf_status; - - priv = GET_PRIV (store); - - model = GTK_TREE_MODEL (store); - - iters = contact_list_store_find_contact (store, contact); - if (!iters) { - in_list = FALSE; - } else { - in_list = TRUE; - } - - /* Get online state now. */ - now_online = empathy_contact_is_online (contact); - - if (priv->show_offline || now_online) { - should_be_in_list = TRUE; - } else { - should_be_in_list = FALSE; - } - - if (!in_list && !should_be_in_list) { - /* Nothing to do. */ - DEBUG ("Contact:'%s' in list:NO, should be:NO", - empathy_contact_get_alias (contact)); - - g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL); - g_list_free (iters); - return; - } - else if (in_list && !should_be_in_list) { - DEBUG ("Contact:'%s' in list:YES, should be:NO", - empathy_contact_get_alias (contact)); - - if (priv->show_active) { - do_remove = TRUE; - do_set_active = TRUE; - do_set_refresh = TRUE; - - set_model = TRUE; - DEBUG ("Remove item (after timeout)"); - } else { - DEBUG ("Remove item (now)!"); - contact_list_store_remove_contact (store, contact); - } - } - else if (!in_list && should_be_in_list) { - DEBUG ("Contact:'%s' in list:NO, should be:YES", - empathy_contact_get_alias (contact)); - - contact_list_store_add_contact (store, contact); - - if (priv->show_active) { - do_set_active = TRUE; - - DEBUG ("Set active (contact added)"); - } - } else { - DEBUG ("Contact:'%s' in list:YES, should be:YES", - empathy_contact_get_alias (contact)); - - /* Get online state before. */ - if (iters && g_list_length (iters) > 0) { - gtk_tree_model_get (model, iters->data, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ONLINE, &was_online, - -1); - } - - /* Is this really an update or an online/offline. */ - if (priv->show_active) { - if (was_online != now_online) { - do_set_active = TRUE; - do_set_refresh = TRUE; - - DEBUG ("Set active (contact updated %s)", - was_online ? "online -> offline" : - "offline -> online"); - } else { - /* Was TRUE for presence updates. */ - /* do_set_active = FALSE; */ - do_set_refresh = TRUE; - - DEBUG ("Set active (contact updated)"); - } - } - - set_model = TRUE; - } - - if (priv->show_avatars && !priv->is_compact) { - show_avatar = TRUE; - } - pixbuf_avatar = empathy_pixbuf_avatar_from_contact_scaled (contact, 32, 32); - pixbuf_status = contact_list_store_get_contact_status_icon (store, contact); - for (l = iters; l && set_model; l = l->next) { - gtk_tree_store_set (GTK_TREE_STORE (store), l->data, - EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, pixbuf_status, - EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR, pixbuf_avatar, - EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, show_avatar, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, empathy_contact_get_alias (contact), - EMPATHY_CONTACT_LIST_STORE_COL_PRESENCE_TYPE, - empathy_contact_get_presence (contact), - EMPATHY_CONTACT_LIST_STORE_COL_STATUS, - empathy_contact_get_presence_message (contact), - EMPATHY_CONTACT_LIST_STORE_COL_COMPACT, priv->is_compact, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, FALSE, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ONLINE, now_online, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, FALSE, - EMPATHY_CONTACT_LIST_STORE_COL_CAN_AUDIO_CALL, - empathy_contact_get_capabilities (contact) & - EMPATHY_CAPABILITIES_AUDIO, - EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL, - empathy_contact_get_capabilities (contact) & - EMPATHY_CAPABILITIES_VIDEO, - -1); - } - - if (pixbuf_avatar) { - g_object_unref (pixbuf_avatar); - } - - if (priv->show_active && do_set_active) { - contact_list_store_contact_set_active (store, contact, do_set_active, do_set_refresh); - - if (do_set_active) { - data = contact_list_store_contact_active_new (store, contact, do_remove); - data->timeout = g_timeout_add_seconds (ACTIVE_USER_SHOW_TIME, - (GSourceFunc) contact_list_store_contact_active_cb, - data); - } - } - - /* FIXME: when someone goes online then offline quickly, the - * first timeout sets the user to be inactive and the second - * timeout removes the user from the contact list, really we - * should remove the first timeout. - */ - g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL); - g_list_free (iters); -} - -static void -contact_list_store_contact_updated_cb (EmpathyContact *contact, - GParamSpec *param, - EmpathyContactListStore *store) -{ - DEBUG ("Contact:'%s' updated, checking roster is in sync...", - empathy_contact_get_alias (contact)); - - contact_list_store_contact_update (store, contact); -} - -static void -contact_list_store_contact_set_active (EmpathyContactListStore *store, - EmpathyContact *contact, - gboolean active, - gboolean set_changed) -{ - GtkTreeModel *model; - GList *iters, *l; - - model = GTK_TREE_MODEL (store); - - iters = contact_list_store_find_contact (store, contact); - for (l = iters; l; l = l->next) { - GtkTreePath *path; - - gtk_tree_store_set (GTK_TREE_STORE (store), l->data, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, active, - -1); - - DEBUG ("Set item %s", active ? "active" : "inactive"); - - if (set_changed) { - path = gtk_tree_model_get_path (model, l->data); - gtk_tree_model_row_changed (model, path, l->data); - gtk_tree_path_free (path); - } - } - - g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL); - g_list_free (iters); - -} - -static void -store_contact_active_invalidated (ShowActiveData *data, - GObject *old_object) -{ - /* Remove the timeout and free the struct, since the contact or contact - * store has disappeared. */ - g_source_remove (data->timeout); - - if (old_object == (GObject *) data->store) - data->store = NULL; - else if (old_object == (GObject *) data->contact) - data->contact = NULL; - else - g_assert_not_reached (); - - contact_list_store_contact_active_free (data); -} - -static ShowActiveData * -contact_list_store_contact_active_new (EmpathyContactListStore *store, - EmpathyContact *contact, - gboolean remove_) -{ - ShowActiveData *data; - - DEBUG ("Contact:'%s' now active, and %s be removed", - empathy_contact_get_alias (contact), - remove_ ? "WILL" : "WILL NOT"); - - data = g_slice_new0 (ShowActiveData); - - /* We don't actually want to force either the IndividualStore or the - * Individual to stay alive, since the user could quit Empathy or disable - * the account before the contact_active timeout is fired. */ - g_object_weak_ref (G_OBJECT (store), - (GWeakNotify) store_contact_active_invalidated, data); - g_object_weak_ref (G_OBJECT (contact), - (GWeakNotify) store_contact_active_invalidated, data); - - data->store = store; - data->contact = contact; - data->remove = remove_; - data->timeout = 0; - - return data; -} - -static void -contact_list_store_contact_active_free (ShowActiveData *data) -{ - if (data->store != NULL) - g_object_weak_unref (G_OBJECT (data->store), - (GWeakNotify) store_contact_active_invalidated, data); - - if (data->contact != NULL) - g_object_weak_unref (G_OBJECT (data->contact), - (GWeakNotify) store_contact_active_invalidated, data); - - g_slice_free (ShowActiveData, data); -} - -static gboolean -contact_list_store_contact_active_cb (ShowActiveData *data) -{ - EmpathyContactListStorePriv *priv; - - priv = GET_PRIV (data->store); - - if (data->remove && - !priv->show_offline && - !empathy_contact_is_online (data->contact)) { - DEBUG ("Contact:'%s' active timeout, removing item", - empathy_contact_get_alias (data->contact)); - contact_list_store_remove_contact (data->store, data->contact); - } - - DEBUG ("Contact:'%s' no longer active", - empathy_contact_get_alias (data->contact)); - - contact_list_store_contact_set_active (data->store, - data->contact, - FALSE, - TRUE); - - contact_list_store_contact_active_free (data); - - return FALSE; -} - -static void -contact_list_store_get_group (EmpathyContactListStore *store, - const gchar *name, - GtkTreeIter *iter_group_to_set, - GtkTreeIter *iter_separator_to_set, - gboolean *created, - gboolean is_fake_group) -{ - EmpathyContactListStorePriv *priv = GET_PRIV (store); - GtkTreeModel *model; - GtkTreeIter iter_group; - GtkTreeIter iter_separator; - GtkTreeIter *iter; - - model = GTK_TREE_MODEL (store); - iter = g_hash_table_lookup (priv->empathy_group_cache, name); - - if (iter == NULL) { - if (created) { - *created = TRUE; - } - - gtk_tree_store_insert_with_values (GTK_TREE_STORE (store), &iter_group, NULL, 0, - EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, NULL, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, name, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, TRUE, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, FALSE, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, FALSE, - EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, is_fake_group, - -1); - - g_hash_table_insert (priv->empathy_group_cache, - g_strdup (name), gtk_tree_iter_copy (&iter_group)); - - if (iter_group_to_set) { - *iter_group_to_set = iter_group; - } - - gtk_tree_store_insert_with_values (GTK_TREE_STORE (store), &iter_separator, &iter_group, 0, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, TRUE, - -1); - - if (iter_separator_to_set) { - *iter_separator_to_set = iter_separator; - } - } else { - if (created) { - *created = FALSE; - } - - if (iter_group_to_set) { - *iter_group_to_set = *iter; - } - - iter_separator = *iter; - - if (gtk_tree_model_iter_next (model, &iter_separator)) { - gboolean is_separator; - - gtk_tree_model_get (model, &iter_separator, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator, - -1); - - if (is_separator && iter_separator_to_set) { - *iter_separator_to_set = iter_separator; - } - } - } -} - -static gint -compare_separator_and_groups (gboolean is_separator_a, - gboolean is_separator_b, - const gchar *name_a, - const gchar *name_b, - EmpathyContact *contact_a, - EmpathyContact *contact_b, - gboolean fake_group_a, - gboolean fake_group_b) -{ - if (is_separator_a || is_separator_b) { - /* We have at least one separator */ - if (is_separator_a) { - return -1; - } else if (is_separator_b) { - return 1; - } - } - - /* One group and one contact */ - if (!contact_a && contact_b) { - return 1; - } else if (contact_a && !contact_b) { - return -1; - } else if (!contact_a && !contact_b) { - return g_utf8_collate (name_a, name_b); - } - - /* Two contacts, ordering depends of the sorting policy */ - return 0; -} - -static gint -contact_list_store_contact_sort (EmpathyContact *contact_a, - EmpathyContact *contact_b) -{ - TpAccount *account_a, *account_b; - gint ret_val; - - g_return_val_if_fail (contact_a != NULL || contact_b != NULL, 0); - - /* alias */ - ret_val = g_utf8_collate (empathy_contact_get_alias (contact_a), - empathy_contact_get_alias (contact_b)); - - if (ret_val != 0) - goto out; - - /* identifier */ - ret_val = g_utf8_collate (empathy_contact_get_id (contact_a), - empathy_contact_get_id (contact_b)); - - if (ret_val != 0) - goto out; - - account_a = empathy_contact_get_account (contact_a); - account_b = empathy_contact_get_account (contact_b); - - /* protocol */ - ret_val = strcmp (tp_account_get_protocol (account_a), - tp_account_get_protocol (account_b)); - - if (ret_val != 0) - goto out; - - /* account ID */ - ret_val = strcmp (tp_proxy_get_object_path (account_a), - tp_proxy_get_object_path (account_b)); - -out: - return ret_val; -} - -static gint -contact_list_store_state_sort_func (GtkTreeModel *model, - GtkTreeIter *iter_a, - GtkTreeIter *iter_b, - gpointer user_data) -{ - gint ret_val; - gchar *name_a, *name_b; - gboolean is_separator_a, is_separator_b; - EmpathyContact *contact_a, *contact_b; - gboolean fake_group_a, fake_group_b; - - gtk_tree_model_get (model, iter_a, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_a, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_a, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_a, - EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_a, - -1); - gtk_tree_model_get (model, iter_b, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_b, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_b, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_b, - EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_b, - -1); - - if (contact_a == NULL || contact_b == NULL) { - ret_val = compare_separator_and_groups (is_separator_a, is_separator_b, - name_a, name_b, contact_a, contact_b, fake_group_a, fake_group_b); - goto free_and_out; - } - - /* If we managed to get this far, we can start looking at - * the presences. - */ - ret_val = -tp_connection_presence_type_cmp_availability ( - empathy_contact_get_presence (EMPATHY_CONTACT (contact_a)), - empathy_contact_get_presence (EMPATHY_CONTACT (contact_b))); - - if (ret_val == 0) { - /* Fallback: compare by name et al. */ - ret_val = contact_list_store_contact_sort (contact_a, contact_b); - } - -free_and_out: - g_free (name_a); - g_free (name_b); - - if (contact_a) { - g_object_unref (contact_a); - } - - if (contact_b) { - g_object_unref (contact_b); - } - - return ret_val; -} - -static gint -contact_list_store_name_sort_func (GtkTreeModel *model, - GtkTreeIter *iter_a, - GtkTreeIter *iter_b, - gpointer user_data) -{ - gchar *name_a, *name_b; - EmpathyContact *contact_a, *contact_b; - gboolean is_separator_a = FALSE, is_separator_b = FALSE; - gint ret_val; - gboolean fake_group_a, fake_group_b; - - gtk_tree_model_get (model, iter_a, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_a, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_a, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_a, - EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_a, - -1); - gtk_tree_model_get (model, iter_b, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_b, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_b, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_b, - EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_b, - -1); - - if (contact_a == NULL || contact_b == NULL) - ret_val = compare_separator_and_groups (is_separator_a, is_separator_b, - name_a, name_b, contact_a, contact_b, fake_group_a, fake_group_b); - else - ret_val = contact_list_store_contact_sort (contact_a, contact_b); - - if (contact_a) { - g_object_unref (contact_a); - } - - if (contact_b) { - g_object_unref (contact_b); - } - - return ret_val; -} - -static GList * -contact_list_store_find_contact (EmpathyContactListStore *store, - EmpathyContact *contact) -{ - EmpathyContactListStorePriv *priv = GET_PRIV (store); - GQueue *row_refs_queue; - GList *i; - GList *iters_list = NULL; - - row_refs_queue = g_hash_table_lookup (priv->empathy_contact_cache, contact); - if (!row_refs_queue) - return NULL; - - for (i = g_queue_peek_head_link (row_refs_queue) ; i != NULL ; - i = i->next) { - GtkTreeIter *iter = i->data; - - iters_list = g_list_prepend - (iters_list, gtk_tree_iter_copy (iter)); - } - - return iters_list; -} - -static gboolean -contact_list_store_update_list_mode_foreach (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - EmpathyContactListStore *store) -{ - EmpathyContactListStorePriv *priv; - gboolean show_avatar = FALSE; - EmpathyContact *contact; - GdkPixbuf *pixbuf_status; - - priv = GET_PRIV (store); - - if (priv->show_avatars && !priv->is_compact) { - show_avatar = TRUE; - } - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact, - -1); - - if (contact == NULL){ - return FALSE; - } - /* get icon from hash_table */ - pixbuf_status = contact_list_store_get_contact_status_icon (store, contact); - - gtk_tree_store_set (GTK_TREE_STORE (store), iter, - EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, pixbuf_status, - EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, show_avatar, - EMPATHY_CONTACT_LIST_STORE_COL_COMPACT, priv->is_compact, - -1); - - return FALSE; -} - -static GdkPixbuf * -contact_list_store_get_contact_status_icon_with_icon_name ( - EmpathyContactListStore *store, - EmpathyContact *contact, - const gchar *status_icon_name) -{ - GdkPixbuf *pixbuf_status = NULL; - EmpathyContactListStorePriv *priv; - const gchar *protocol_name = NULL; - gchar *icon_name = NULL; - - priv = GET_PRIV (store); - - if (priv->show_protocols) { - protocol_name = empathy_protocol_name_for_contact (contact); - icon_name = g_strdup_printf ("%s-%s", status_icon_name, protocol_name); - } else { - icon_name = g_strdup_printf ("%s", status_icon_name); - } - pixbuf_status = g_hash_table_lookup (priv->status_icons, icon_name); - if (pixbuf_status == NULL) { - pixbuf_status = empathy_pixbuf_contact_status_icon_with_icon_name (contact, - status_icon_name, - priv->show_protocols); - if (pixbuf_status != NULL) { - g_hash_table_insert (priv->status_icons, - g_strdup (icon_name), - pixbuf_status); - } - } - - g_free (icon_name); - return pixbuf_status; -} - -GdkPixbuf * -contact_list_store_get_contact_status_icon (EmpathyContactListStore *store, - EmpathyContact *contact) -{ - GdkPixbuf *pixbuf_status = NULL; - EmpathyContactListStorePriv *priv; - const gchar *status_icon_name = NULL; - gboolean composing = FALSE; - - priv = GET_PRIV (store); - - if (EMPATHY_IS_TP_CHAT (priv->list)) { - if (empathy_tp_chat_get_chat_state (EMPATHY_TP_CHAT (priv->list), - contact) == - TP_CHANNEL_CHAT_STATE_COMPOSING) - composing = TRUE; - } - - if (composing) { - status_icon_name = EMPATHY_IMAGE_TYPING; - } else { - status_icon_name = empathy_icon_name_for_contact (contact); - } - - if (status_icon_name == NULL) - return NULL; - - pixbuf_status = contact_list_store_get_contact_status_icon_with_icon_name ( - store, - contact, - status_icon_name); - - return pixbuf_status; -} diff --git a/libempathy-gtk/empathy-contact-list-store.h b/libempathy-gtk/empathy-contact-list-store.h deleted file mode 100644 index 8e773e63..00000000 --- a/libempathy-gtk/empathy-contact-list-store.h +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Copyright (C) 2005-2007 Imendio AB - * Copyright (C) 2007-2008 Collabora Ltd. - * - * 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., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301 USA - * - * Authors: Mikael Hallendal - * Martyn Russell - * Xavier Claessens - */ - -#ifndef __EMPATHY_CONTACT_LIST_STORE_H__ -#define __EMPATHY_CONTACT_LIST_STORE_H__ - -#include - -#include -#include - -G_BEGIN_DECLS - -#define EMPATHY_TYPE_CONTACT_LIST_STORE (empathy_contact_list_store_get_type ()) -#define EMPATHY_CONTACT_LIST_STORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStore)) -#define EMPATHY_CONTACT_LIST_STORE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStoreClass)) -#define EMPATHY_IS_CONTACT_LIST_STORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST_STORE)) -#define EMPATHY_IS_CONTACT_LIST_STORE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT_LIST_STORE)) -#define EMPATHY_CONTACT_LIST_STORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStoreClass)) - -typedef struct _EmpathyContactListStore EmpathyContactListStore; -typedef struct _EmpathyContactListStoreClass EmpathyContactListStoreClass; - -typedef enum { - EMPATHY_CONTACT_LIST_STORE_SORT_STATE, - EMPATHY_CONTACT_LIST_STORE_SORT_NAME -} EmpathyContactListStoreSort; - -typedef enum { - EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, - EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR, - EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, - EMPATHY_CONTACT_LIST_STORE_COL_PRESENCE_TYPE, - EMPATHY_CONTACT_LIST_STORE_COL_STATUS, - EMPATHY_CONTACT_LIST_STORE_COL_COMPACT, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ONLINE, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, - EMPATHY_CONTACT_LIST_STORE_COL_CAN_AUDIO_CALL, - EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL, - EMPATHY_CONTACT_LIST_STORE_COL_FLAGS, - EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, - EMPATHY_CONTACT_LIST_STORE_COL_COUNT, -} EmpathyContactListStoreCol; - -struct _EmpathyContactListStore { - GtkTreeStore parent; - gpointer priv; -}; - -struct _EmpathyContactListStoreClass { - GtkTreeStoreClass parent_class; -}; - -GType empathy_contact_list_store_get_type (void) G_GNUC_CONST; -EmpathyContactListStore * empathy_contact_list_store_new (EmpathyContactList *list_iface); -EmpathyContactList * empathy_contact_list_store_get_list_iface (EmpathyContactListStore *store); -gboolean empathy_contact_list_store_get_show_offline (EmpathyContactListStore *store); -void empathy_contact_list_store_set_show_offline (EmpathyContactListStore *store, - gboolean show_offline); -gboolean empathy_contact_list_store_get_show_avatars (EmpathyContactListStore *store); -void empathy_contact_list_store_set_show_avatars (EmpathyContactListStore *store, - gboolean show_avatars); -gboolean empathy_contact_list_store_get_show_groups (EmpathyContactListStore *store); -void empathy_contact_list_store_set_show_groups (EmpathyContactListStore *store, - gboolean show_groups); -gboolean empathy_contact_list_store_get_is_compact (EmpathyContactListStore *store); -void empathy_contact_list_store_set_is_compact (EmpathyContactListStore *store, - gboolean is_compact); -gboolean empathy_contact_list_store_get_show_protocols (EmpathyContactListStore *store); -void empathy_contact_list_store_set_show_protocols (EmpathyContactListStore *store, - gboolean show_protocols); -EmpathyContactListStoreSort empathy_contact_list_store_get_sort_criterium (EmpathyContactListStore *store); -void empathy_contact_list_store_set_sort_criterium (EmpathyContactListStore *store, - EmpathyContactListStoreSort sort_criterium); -gboolean empathy_contact_list_store_row_separator_func (GtkTreeModel *model, - GtkTreeIter *iter, - gpointer data); -gchar * empathy_contact_list_store_get_parent_group (GtkTreeModel *model, - GtkTreePath *path, - gboolean *path_is_group, - gboolean *is_fake_group); -GdkPixbuf * contact_list_store_get_contact_status_icon ( EmpathyContactListStore *store, - EmpathyContact *contact); - -G_END_DECLS - -#endif /* __EMPATHY_CONTACT_LIST_STORE_H__ */ - diff --git a/libempathy-gtk/empathy-contact-list-view.c b/libempathy-gtk/empathy-contact-list-view.c deleted file mode 100644 index 1d95baf8..00000000 --- a/libempathy-gtk/empathy-contact-list-view.c +++ /dev/null @@ -1,2134 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Copyright (C) 2005-2007 Imendio AB - * Copyright (C) 2007-2008 Collabora Ltd. - * - * 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., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301 USA - * - * Authors: Mikael Hallendal - * Martyn Russell - * Xavier Claessens - */ - -#include "config.h" - -#include - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "empathy-contact-list-view.h" -#include "empathy-contact-list-store.h" -#include "empathy-images.h" -#include "empathy-cell-renderer-expander.h" -#include "empathy-cell-renderer-text.h" -#include "empathy-cell-renderer-activatable.h" -#include "empathy-ui-utils.h" -#include "empathy-gtk-enum-types.h" - -#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT -#include - -/* Active users are those which have recently changed state - * (e.g. online, offline or from normal to a busy state). - */ - -#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyContactListView) -typedef struct { - EmpathyContactListStore *store; - GtkTreeRowReference *drag_row; - EmpathyContactListFeatureFlags list_features; - EmpathyContactFeatureFlags contact_features; - GtkWidget *tooltip_widget; - GtkTargetList *file_targets; - - GtkTreeModelFilter *filter; - GtkWidget *search_widget; -} EmpathyContactListViewPriv; - -typedef struct { - EmpathyContactListView *view; - GtkTreePath *path; - guint timeout_id; -} DragMotionData; - -typedef struct { - EmpathyContactListView *view; - EmpathyContact *contact; - gboolean remove; -} ShowActiveData; - -enum { - PROP_0, - PROP_STORE, - PROP_LIST_FEATURES, - PROP_CONTACT_FEATURES, -}; - -enum DndDragType { - DND_DRAG_TYPE_CONTACT_ID, - DND_DRAG_TYPE_URI_LIST, - DND_DRAG_TYPE_STRING, -}; - -static const GtkTargetEntry drag_types_dest[] = { - { "text/path-list", 0, DND_DRAG_TYPE_URI_LIST }, - { "text/uri-list", 0, DND_DRAG_TYPE_URI_LIST }, - { "text/contact-id", 0, DND_DRAG_TYPE_CONTACT_ID }, - { "text/plain", 0, DND_DRAG_TYPE_STRING }, - { "STRING", 0, DND_DRAG_TYPE_STRING }, -}; - -static const GtkTargetEntry drag_types_dest_file[] = { - { "text/path-list", 0, DND_DRAG_TYPE_URI_LIST }, - { "text/uri-list", 0, DND_DRAG_TYPE_URI_LIST }, -}; - -static const GtkTargetEntry drag_types_source[] = { - { "text/contact-id", 0, DND_DRAG_TYPE_CONTACT_ID }, -}; - -enum { - DRAG_CONTACT_RECEIVED, - LAST_SIGNAL -}; - -static guint signals[LAST_SIGNAL]; - -G_DEFINE_TYPE (EmpathyContactListView, empathy_contact_list_view, GTK_TYPE_TREE_VIEW); - -static void -contact_list_view_tooltip_destroy_cb (GtkWidget *widget, - EmpathyContactListView *view) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - - if (priv->tooltip_widget) { - DEBUG ("Tooltip destroyed"); - g_object_unref (priv->tooltip_widget); - priv->tooltip_widget = NULL; - } -} - -static gboolean -contact_list_view_is_visible_contact (EmpathyContactListView *self, - EmpathyContact *contact) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (self); - EmpathyLiveSearch *live = EMPATHY_LIVE_SEARCH (priv->search_widget); - const gchar *str; - const gchar *p; - gchar *dup_str = NULL; - gboolean visible; - - g_assert (live != NULL); - - /* check alias name */ - str = empathy_contact_get_alias (contact); - if (empathy_live_search_match (live, str)) - return TRUE; - - /* check contact id, remove the @server.com part */ - str = empathy_contact_get_id (contact); - p = strstr (str, "@"); - if (p != NULL) - str = dup_str = g_strndup (str, p - str); - - visible = empathy_live_search_match (live, str); - g_free (dup_str); - if (visible) - return TRUE; - - /* FIXME: Add more rules here, we could check phone numbers in - * contact's vCard for example. */ - - return FALSE; -} - -static gboolean -contact_list_view_filter_visible_func (GtkTreeModel *model, - GtkTreeIter *iter, - gpointer user_data) -{ - EmpathyContactListView *self = EMPATHY_CONTACT_LIST_VIEW (user_data); - EmpathyContactListViewPriv *priv = GET_PRIV (self); - EmpathyContact *contact = NULL; - gboolean is_group, is_separator, valid; - GtkTreeIter child_iter; - gboolean visible; - - if (priv->search_widget == NULL || - !gtk_widget_get_visible (priv->search_widget)) - return TRUE; - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact, - -1); - - if (contact != NULL) { - visible = contact_list_view_is_visible_contact (self, contact); - g_object_unref (contact); - return visible; - } - - if (is_separator) { - return TRUE; - } - - /* Not a contact, not a separator, must be a group */ - g_return_val_if_fail (is_group, FALSE); - - /* only show groups which are not empty */ - for (valid = gtk_tree_model_iter_children (model, &child_iter, iter); - valid; valid = gtk_tree_model_iter_next (model, &child_iter)) { - gtk_tree_model_get (model, &child_iter, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact, - -1); - - if (contact == NULL) - continue; - - visible = contact_list_view_is_visible_contact (self, contact); - g_object_unref (contact); - - /* show group if it has at least one visible contact in it */ - if (visible) - return TRUE; - } - - return FALSE; -} - -static gboolean -contact_list_view_query_tooltip_cb (EmpathyContactListView *view, - gint x, - gint y, - gboolean keyboard_mode, - GtkTooltip *tooltip, - gpointer user_data) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - EmpathyContact *contact; - GtkTreeModel *model; - GtkTreeIter iter; - GtkTreePath *path; - static gint running = 0; - gboolean ret = FALSE; - - /* Avoid an infinite loop. See GNOME bug #574377 */ - if (running > 0) { - return FALSE; - } - running++; - - /* Don't show the tooltip if there's already a popup menu */ - if (gtk_menu_get_for_attach_widget (GTK_WIDGET (view)) != NULL) { - goto OUT; - } - - if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (view), &x, &y, - keyboard_mode, - &model, &path, &iter)) { - goto OUT; - } - - gtk_tree_view_set_tooltip_row (GTK_TREE_VIEW (view), tooltip, path); - gtk_tree_path_free (path); - - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact, - -1); - if (!contact) { - goto OUT; - } - - if (!priv->tooltip_widget) { - priv->tooltip_widget = empathy_contact_widget_new (contact, - EMPATHY_CONTACT_WIDGET_FOR_TOOLTIP | - EMPATHY_CONTACT_WIDGET_SHOW_LOCATION); - gtk_container_set_border_width ( - GTK_CONTAINER (priv->tooltip_widget), 8); - g_object_ref (priv->tooltip_widget); - g_signal_connect (priv->tooltip_widget, "destroy", - G_CALLBACK (contact_list_view_tooltip_destroy_cb), - view); - gtk_widget_show (priv->tooltip_widget); - } else { - empathy_contact_widget_set_contact (priv->tooltip_widget, - contact); - } - - gtk_tooltip_set_custom (tooltip, priv->tooltip_widget); - ret = TRUE; - - g_object_unref (contact); -OUT: - running--; - - return ret; -} - -typedef struct { - gchar *new_group; - gchar *old_group; - GdkDragAction action; -} DndGetContactData; - -static void -contact_list_view_dnd_get_contact_free (DndGetContactData *data) -{ - g_free (data->new_group); - g_free (data->old_group); - g_slice_free (DndGetContactData, data); -} - -static void -contact_list_view_drag_got_contact (TpConnection *connection, - EmpathyContact *contact, - const GError *error, - gpointer user_data, - GObject *view) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - DndGetContactData *data = user_data; - EmpathyContactList *list; - - if (error != NULL) { - DEBUG ("Error: %s", error->message); - return; - } - - DEBUG ("contact %s (%d) dragged from '%s' to '%s'", - empathy_contact_get_id (contact), - empathy_contact_get_handle (contact), - data->old_group, data->new_group); - - list = empathy_contact_list_store_get_list_iface (priv->store); - - if (data->new_group) { - empathy_contact_list_add_to_group (list, contact, data->new_group); - } - if (data->old_group && data->action == GDK_ACTION_MOVE) { - empathy_contact_list_remove_from_group (list, contact, data->old_group); - } -} - -static gboolean -contact_list_view_contact_drag_received (GtkWidget *view, - GdkDragContext *context, - GtkTreeModel *model, - GtkTreePath *path, - GtkSelectionData *selection) -{ - EmpathyContactListViewPriv *priv; - EmpathyClientFactory *factory; - TpConnection *connection = NULL; - TpAccount *account = NULL; - DndGetContactData *data; - GtkTreePath *source_path; - const gchar *sel_data; - gchar **strv = NULL; - const gchar *account_id = NULL; - const gchar *contact_id = NULL; - gchar *new_group = NULL; - gchar *old_group = NULL; - gboolean new_group_is_fake, old_group_is_fake = TRUE; - - priv = GET_PRIV (view); - - sel_data = (const gchar *) gtk_selection_data_get_data (selection); - new_group = empathy_contact_list_store_get_parent_group (model, - path, NULL, &new_group_is_fake); - - /* Get source group information. */ - if (priv->drag_row) { - source_path = gtk_tree_row_reference_get_path (priv->drag_row); - if (source_path) { - old_group = empathy_contact_list_store_get_parent_group ( - model, source_path, NULL, &old_group_is_fake); - gtk_tree_path_free (source_path); - } - } - - if (!tp_strdiff (old_group, new_group)) { - g_free (new_group); - g_free (old_group); - return FALSE; - } - - factory = empathy_client_factory_dup (); - strv = g_strsplit (sel_data, ":", 2); - if (g_strv_length (strv) == 2) { - account_id = strv[0]; - contact_id = strv[1]; - account = tp_simple_client_factory_ensure_account ( - TP_SIMPLE_CLIENT_FACTORY (factory), - account_id, NULL, NULL); - } - if (account) { - connection = tp_account_get_connection (account); - } - - if (!connection) { - DEBUG ("Failed to get connection for account '%s'", account_id); - g_free (new_group); - g_free (old_group); - g_object_unref (factory); - return FALSE; - } - - data = g_slice_new0 (DndGetContactData); - data->new_group = new_group; - data->old_group = old_group; - data->action = gdk_drag_context_get_selected_action (context); - - /* FIXME: We should probably wait for the cb before calling - * gtk_drag_finish */ - empathy_tp_contact_factory_get_from_id (connection, contact_id, - contact_list_view_drag_got_contact, - data, (GDestroyNotify) contact_list_view_dnd_get_contact_free, - G_OBJECT (view)); - g_strfreev (strv); - g_object_unref (factory); - - return TRUE; -} - -static gboolean -contact_list_view_file_drag_received (GtkWidget *view, - GdkDragContext *context, - GtkTreeModel *model, - GtkTreePath *path, - GtkSelectionData *selection) -{ - GtkTreeIter iter; - const gchar *sel_data; - EmpathyContact *contact; - - sel_data = (const gchar *) gtk_selection_data_get_data (selection); - - gtk_tree_model_get_iter (model, &iter, path); - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact, - -1); - if (!contact) { - return FALSE; - } - - empathy_send_file_from_uri_list (contact, sel_data); - - g_object_unref (contact); - - return TRUE; -} - -static void -contact_list_view_drag_data_received (GtkWidget *view, - GdkDragContext *context, - gint x, - gint y, - GtkSelectionData *selection, - guint info, - guint time_) -{ - GtkTreeModel *model; - gboolean is_row; - GtkTreeViewDropPosition position; - GtkTreePath *path; - gboolean success = TRUE; - - model = gtk_tree_view_get_model (GTK_TREE_VIEW (view)); - - /* Get destination group information. */ - is_row = gtk_tree_view_get_dest_row_at_pos (GTK_TREE_VIEW (view), - x, - y, - &path, - &position); - if (!is_row) { - success = FALSE; - } - else if (info == DND_DRAG_TYPE_CONTACT_ID || info == DND_DRAG_TYPE_STRING) { - success = contact_list_view_contact_drag_received (view, - context, - model, - path, - selection); - } - else if (info == DND_DRAG_TYPE_URI_LIST) { - success = contact_list_view_file_drag_received (view, - context, - model, - path, - selection); - } - - gtk_tree_path_free (path); - gtk_drag_finish (context, success, FALSE, GDK_CURRENT_TIME); -} - -static gboolean -contact_list_view_drag_motion_cb (DragMotionData *data) -{ - gtk_tree_view_expand_row (GTK_TREE_VIEW (data->view), - data->path, - FALSE); - - data->timeout_id = 0; - - return FALSE; -} - -static gboolean -contact_list_view_drag_motion (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time_) -{ - EmpathyContactListViewPriv *priv; - GtkTreeModel *model; - GdkAtom target; - GtkTreeIter iter; - static DragMotionData *dm = NULL; - GtkTreePath *path; - gboolean is_row; - gboolean is_different = FALSE; - gboolean cleanup = TRUE; - gboolean retval = TRUE; - - priv = GET_PRIV (EMPATHY_CONTACT_LIST_VIEW (widget)); - model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget)); - - is_row = gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), - x, - y, - &path, - NULL, - NULL, - NULL); - - cleanup &= (!dm); - - if (is_row) { - cleanup &= (dm && gtk_tree_path_compare (dm->path, path) != 0); - is_different = (!dm || (dm && gtk_tree_path_compare (dm->path, path) != 0)); - } else { - cleanup &= FALSE; - } - - if (path == NULL) { - /* Coordinates don't point to an actual row, so make sure the pointer - and highlighting don't indicate that a drag is possible. - */ - gdk_drag_status (context, GDK_ACTION_DEFAULT, time_); - gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget), NULL, 0); - return FALSE; - } - target = gtk_drag_dest_find_target (widget, context, priv->file_targets); - gtk_tree_model_get_iter (model, &iter, path); - - if (target == GDK_NONE) { - /* If target == GDK_NONE, then we don't have a target that can be - dropped on a contact. This means a contact drag. If we're - pointing to a group, highlight it. Otherwise, if the contact - we're pointing to is in a group, highlight that. Otherwise, - set the drag position to before the first row for a drag into - the "non-group" at the top. - */ - GtkTreeIter group_iter; - gboolean is_group; - GtkTreePath *group_path; - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - -1); - if (is_group) { - group_iter = iter; - } - else { - if (gtk_tree_model_iter_parent (model, &group_iter, &iter)) - gtk_tree_model_get (model, &group_iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - -1); - } - if (is_group) { - gdk_drag_status (context, GDK_ACTION_MOVE, time_); - group_path = gtk_tree_model_get_path (model, &group_iter); - gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget), - group_path, - GTK_TREE_VIEW_DROP_INTO_OR_BEFORE); - gtk_tree_path_free (group_path); - } - else { - group_path = gtk_tree_path_new_first (); - gdk_drag_status (context, GDK_ACTION_MOVE, time_); - gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget), - group_path, - GTK_TREE_VIEW_DROP_BEFORE); - } - } - else { - /* This is a file drag, and it can only be dropped on contacts, - not groups. - */ - EmpathyContact *contact; - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact, - -1); - if (contact != NULL && - empathy_contact_is_online (contact) && - (empathy_contact_get_capabilities (contact) & EMPATHY_CAPABILITIES_FT)) { - gdk_drag_status (context, GDK_ACTION_COPY, time_); - gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget), - path, - GTK_TREE_VIEW_DROP_INTO_OR_BEFORE); - g_object_unref (contact); - } - else { - gdk_drag_status (context, 0, time_); - gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget), NULL, 0); - retval = FALSE; - } - } - - if (!is_different && !cleanup) { - return retval; - } - - if (dm) { - gtk_tree_path_free (dm->path); - if (dm->timeout_id) { - g_source_remove (dm->timeout_id); - } - - g_free (dm); - - dm = NULL; - } - - if (!gtk_tree_view_row_expanded (GTK_TREE_VIEW (widget), path)) { - dm = g_new0 (DragMotionData, 1); - - dm->view = EMPATHY_CONTACT_LIST_VIEW (widget); - dm->path = gtk_tree_path_copy (path); - - dm->timeout_id = g_timeout_add_seconds (1, - (GSourceFunc) contact_list_view_drag_motion_cb, - dm); - } - - return retval; -} - -static void -contact_list_view_drag_begin (GtkWidget *widget, - GdkDragContext *context) -{ - EmpathyContactListViewPriv *priv; - GtkTreeSelection *selection; - GtkTreeModel *model; - GtkTreePath *path; - GtkTreeIter iter; - - priv = GET_PRIV (widget); - - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget)); - if (!gtk_tree_selection_get_selected (selection, &model, &iter)) { - return; - } - - GTK_WIDGET_CLASS (empathy_contact_list_view_parent_class)->drag_begin (widget, - context); - - path = gtk_tree_model_get_path (model, &iter); - priv->drag_row = gtk_tree_row_reference_new (model, path); - gtk_tree_path_free (path); -} - -static void -contact_list_view_drag_data_get (GtkWidget *widget, - GdkDragContext *context, - GtkSelectionData *selection, - guint info, - guint time_) -{ - EmpathyContactListViewPriv *priv; - GtkTreePath *src_path; - GtkTreeIter iter; - GtkTreeModel *model; - EmpathyContact *contact; - TpAccount *account; - const gchar *contact_id; - const gchar *account_id; - gchar *str; - - priv = GET_PRIV (widget); - - model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget)); - if (!priv->drag_row) { - return; - } - - src_path = gtk_tree_row_reference_get_path (priv->drag_row); - if (!src_path) { - return; - } - - if (!gtk_tree_model_get_iter (model, &iter, src_path)) { - gtk_tree_path_free (src_path); - return; - } - - gtk_tree_path_free (src_path); - - contact = empathy_contact_list_view_dup_selected (EMPATHY_CONTACT_LIST_VIEW (widget)); - if (!contact) { - return; - } - - account = empathy_contact_get_account (contact); - account_id = tp_proxy_get_object_path (account); - contact_id = empathy_contact_get_id (contact); - g_object_unref (contact); - str = g_strconcat (account_id, ":", contact_id, NULL); - - if (info == DND_DRAG_TYPE_CONTACT_ID) { - gtk_selection_data_set (selection, - gdk_atom_intern ("text/contact-id", FALSE), 8, - (guchar *) str, strlen (str) + 1); - } - - g_free (str); -} - -static void -contact_list_view_drag_end (GtkWidget *widget, - GdkDragContext *context) -{ - EmpathyContactListViewPriv *priv; - - priv = GET_PRIV (widget); - - GTK_WIDGET_CLASS (empathy_contact_list_view_parent_class)->drag_end (widget, - context); - - if (priv->drag_row) { - gtk_tree_row_reference_free (priv->drag_row); - priv->drag_row = NULL; - } -} - -static gboolean -contact_list_view_drag_drop (GtkWidget *widget, - GdkDragContext *drag_context, - gint x, - gint y, - guint time_) -{ - return FALSE; -} - -typedef struct { - EmpathyContactListView *view; - guint button; - guint32 time; -} MenuPopupData; - -static void -menu_deactivate_cb (GtkMenuShell *menushell, - gpointer user_data) -{ - /* FIXME: we shouldn't have to disconnec the signal (bgo #641327) */ - g_signal_handlers_disconnect_by_func (menushell, - menu_deactivate_cb, user_data); - - gtk_menu_detach (GTK_MENU (menushell)); -} - -static gboolean -contact_list_view_popup_menu_idle_cb (gpointer user_data) -{ - MenuPopupData *data = user_data; - GtkWidget *menu; - - menu = empathy_contact_list_view_get_contact_menu (data->view); - if (!menu) { - menu = empathy_contact_list_view_get_group_menu (data->view); - } - - if (menu) { - gtk_menu_attach_to_widget (GTK_MENU (menu), - GTK_WIDGET (data->view), NULL); - gtk_widget_show (menu); - gtk_menu_popup (GTK_MENU (menu), - NULL, NULL, NULL, NULL, - data->button, data->time); - - /* menu is initially unowned but gtk_menu_attach_to_widget () taked its - * floating ref. We can either wait that the treeview releases its ref - * when it will be destroyed (when leaving Empathy) or explicitely - * detach the menu when it's not displayed any more. - * We go for the latter as we don't want to keep useless menus in memory - * during the whole lifetime of Empathy. */ - g_signal_connect (menu, "deactivate", G_CALLBACK (menu_deactivate_cb), - NULL); - } - - g_slice_free (MenuPopupData, data); - - return FALSE; -} - -static gboolean -contact_list_view_button_press_event_cb (EmpathyContactListView *view, - GdkEventButton *event, - gpointer user_data) -{ - if (event->button == 3) { - MenuPopupData *data; - - data = g_slice_new (MenuPopupData); - data->view = view; - data->button = event->button; - data->time = event->time; - g_idle_add (contact_list_view_popup_menu_idle_cb, data); - } - - return FALSE; -} - -static gboolean -contact_list_view_key_press_event_cb (EmpathyContactListView *view, - GdkEventKey *event, - gpointer user_data) -{ - if (event->keyval == GDK_KEY_Menu) { - MenuPopupData *data; - - data = g_slice_new (MenuPopupData); - data->view = view; - data->button = 0; - data->time = event->time; - g_idle_add (contact_list_view_popup_menu_idle_cb, data); - } - - return FALSE; -} - -static void -contact_list_view_row_activated (GtkTreeView *view, - GtkTreePath *path, - GtkTreeViewColumn *column) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - EmpathyContact *contact; - GtkTreeModel *model; - GtkTreeIter iter; - - if (!(priv->contact_features & EMPATHY_CONTACT_FEATURE_CHAT)) { - return; - } - - model = gtk_tree_view_get_model (GTK_TREE_VIEW (view)); - gtk_tree_model_get_iter (model, &iter, path); - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact, - -1); - - if (contact) { - DEBUG ("Starting a chat"); - empathy_chat_with_contact (contact, - empathy_get_current_action_time ()); - g_object_unref (contact); - } -} - -static void -contact_list_view_call_activated_cb ( - EmpathyCellRendererActivatable *cell, - const gchar *path_string, - EmpathyContactListView *view) -{ - GtkWidget *menu; - GtkTreeModel *model; - GtkTreeIter iter; - EmpathyContact *contact; - GdkEventButton *event; - GtkMenuShell *shell; - GtkWidget *item; - - model = gtk_tree_view_get_model (GTK_TREE_VIEW (view)); - if (!gtk_tree_model_get_iter_from_string (model, &iter, path_string)) - return; - - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact, - -1); - if (contact == NULL) - return; - - event = (GdkEventButton *) gtk_get_current_event (); - - menu = empathy_context_menu_new (GTK_WIDGET (view)); - shell = GTK_MENU_SHELL (menu); - - /* audio */ - item = empathy_contact_audio_call_menu_item_new (contact); - gtk_menu_shell_append (shell, item); - gtk_widget_show (item); - - /* video */ - item = empathy_contact_video_call_menu_item_new (contact); - gtk_menu_shell_append (shell, item); - gtk_widget_show (item); - - gtk_widget_show (menu); - gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, - event->button, event->time); - - g_object_unref (contact); -} - -static void -contact_list_view_cell_set_background (EmpathyContactListView *view, - GtkCellRenderer *cell, - gboolean is_group, - gboolean is_active) -{ - if (!is_group && is_active) { - GdkRGBA color; - GtkStyleContext *style; - - style = gtk_widget_get_style_context (GTK_WIDGET (view)); - - gtk_style_context_get_background_color (style, GTK_STATE_FLAG_SELECTED, - &color); - - /* Here we take the current theme colour and add it to - * the colour for white and average the two. This - * gives a colour which is inline with the theme but - * slightly whiter. - */ - empathy_make_color_whiter (&color); - - g_object_set (cell, - "cell-background-rgba", &color, - NULL); - } else { - g_object_set (cell, - "cell-background-rgba", NULL, - NULL); - } -} - -static void -contact_list_view_pixbuf_cell_data_func (GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell, - GtkTreeModel *model, - GtkTreeIter *iter, - EmpathyContactListView *view) -{ - GdkPixbuf *pixbuf; - gboolean is_group; - gboolean is_active; - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, - EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, &pixbuf, - -1); - - g_object_set (cell, - "visible", !is_group, - "pixbuf", pixbuf, - NULL); - - if (pixbuf != NULL) { - g_object_unref (pixbuf); - } - - contact_list_view_cell_set_background (view, cell, is_group, is_active); -} - -static void -contact_list_view_group_icon_cell_data_func (GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell, - GtkTreeModel *model, - GtkTreeIter *iter, - EmpathyContactListView *view) -{ - GdkPixbuf *pixbuf = NULL; - gboolean is_group; - gchar *name; - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name, - -1); - - if (!is_group) - goto out; - -out: - g_object_set (cell, - "visible", pixbuf != NULL, - "pixbuf", pixbuf, - NULL); - - if (pixbuf != NULL) - g_object_unref (pixbuf); - - g_free (name); -} - -static void -contact_list_view_audio_call_cell_data_func ( - GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell, - GtkTreeModel *model, - GtkTreeIter *iter, - EmpathyContactListView *view) -{ - gboolean is_group; - gboolean is_active; - gboolean can_audio, can_video; - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, - EMPATHY_CONTACT_LIST_STORE_COL_CAN_AUDIO_CALL, &can_audio, - EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL, &can_video, - -1); - - g_object_set (cell, - "visible", !is_group && (can_audio || can_video), - "icon-name", can_video? EMPATHY_IMAGE_VIDEO_CALL : EMPATHY_IMAGE_VOIP, - NULL); - - contact_list_view_cell_set_background (view, cell, is_group, is_active); -} - -static void -contact_list_view_avatar_cell_data_func (GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell, - GtkTreeModel *model, - GtkTreeIter *iter, - EmpathyContactListView *view) -{ - GdkPixbuf *pixbuf; - gboolean show_avatar; - gboolean is_group; - gboolean is_active; - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR, &pixbuf, - EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, &show_avatar, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, - -1); - - g_object_set (cell, - "visible", !is_group && show_avatar, - "pixbuf", pixbuf, - NULL); - - if (pixbuf) { - g_object_unref (pixbuf); - } - - contact_list_view_cell_set_background (view, cell, is_group, is_active); -} - -static void -contact_list_view_text_cell_data_func (GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell, - GtkTreeModel *model, - GtkTreeIter *iter, - EmpathyContactListView *view) -{ - gboolean is_group; - gboolean is_active; - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, - -1); - - contact_list_view_cell_set_background (view, cell, is_group, is_active); -} - -static void -contact_list_view_expander_cell_data_func (GtkTreeViewColumn *column, - GtkCellRenderer *cell, - GtkTreeModel *model, - GtkTreeIter *iter, - EmpathyContactListView *view) -{ - gboolean is_group; - gboolean is_active; - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, - -1); - - if (gtk_tree_model_iter_has_child (model, iter)) { - GtkTreePath *path; - gboolean row_expanded; - - path = gtk_tree_model_get_path (model, iter); - row_expanded = gtk_tree_view_row_expanded (GTK_TREE_VIEW (gtk_tree_view_column_get_tree_view (column)), path); - gtk_tree_path_free (path); - - g_object_set (cell, - "visible", TRUE, - "expander-style", row_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED, - NULL); - } else { - g_object_set (cell, "visible", FALSE, NULL); - } - - contact_list_view_cell_set_background (view, cell, is_group, is_active); -} - -static void -contact_list_view_row_expand_or_collapse_cb (EmpathyContactListView *view, - GtkTreeIter *iter, - GtkTreePath *path, - gpointer user_data) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - GtkTreeModel *model; - gchar *name; - gboolean expanded; - - if (!(priv->list_features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE)) { - return; - } - - model = gtk_tree_view_get_model (GTK_TREE_VIEW (view)); - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name, - -1); - - expanded = GPOINTER_TO_INT (user_data); - empathy_contact_group_set_expanded (name, expanded); - - g_free (name); -} - -static gboolean -contact_list_view_start_search_cb (EmpathyContactListView *view, - gpointer data) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - - if (priv->search_widget == NULL) - return FALSE; - - if (gtk_widget_get_visible (GTK_WIDGET (priv->search_widget))) - gtk_widget_grab_focus (GTK_WIDGET (priv->search_widget)); - else - gtk_widget_show (GTK_WIDGET (priv->search_widget)); - - return TRUE; -} - -static void -contact_list_view_search_text_notify_cb (EmpathyLiveSearch *search, - GParamSpec *pspec, - EmpathyContactListView *view) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - GtkTreePath *path; - GtkTreeViewColumn *focus_column; - GtkTreeModel *model; - GtkTreeIter iter; - gboolean set_cursor = FALSE; - - gtk_tree_model_filter_refilter (priv->filter); - - /* Set cursor on the first contact. If it is already set on a group, - * set it on its first child contact. Note that first child of a group - * is its separator, that's why we actually set to the 2nd - */ - - model = gtk_tree_view_get_model (GTK_TREE_VIEW (view)); - gtk_tree_view_get_cursor (GTK_TREE_VIEW (view), &path, &focus_column); - - if (path == NULL) { - path = gtk_tree_path_new_from_string ("0:1"); - set_cursor = TRUE; - } else if (gtk_tree_path_get_depth (path) < 2) { - gboolean is_group; - - gtk_tree_model_get_iter (model, &iter, path); - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - -1); - - if (is_group) { - gtk_tree_path_down (path); - gtk_tree_path_next (path); - set_cursor = TRUE; - } - } - - if (set_cursor) { - /* FIXME: Workaround for GTK bug #621651, we have to make sure - * the path is valid. */ - if (gtk_tree_model_get_iter (model, &iter, path)) { - gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), path, - focus_column, FALSE); - } - } - - gtk_tree_path_free (path); -} - -static void -contact_list_view_search_activate_cb (GtkWidget *search, - EmpathyContactListView *view) -{ - GtkTreePath *path; - GtkTreeViewColumn *focus_column; - - gtk_tree_view_get_cursor (GTK_TREE_VIEW (view), &path, &focus_column); - if (path != NULL) { - gtk_tree_view_row_activated (GTK_TREE_VIEW (view), path, - focus_column); - gtk_tree_path_free (path); - - gtk_widget_hide (search); - } -} - -static gboolean -contact_list_view_search_key_navigation_cb (GtkWidget *search, - GdkEvent *event, - EmpathyContactListView *view) -{ - GdkEvent *new_event; - gboolean ret = FALSE; - - new_event = gdk_event_copy (event); - gtk_widget_grab_focus (GTK_WIDGET (view)); - ret = gtk_widget_event (GTK_WIDGET (view), new_event); - gtk_widget_grab_focus (search); - - gdk_event_free (new_event); - - return ret; -} - -static void -contact_list_view_search_hide_cb (EmpathyLiveSearch *search, - EmpathyContactListView *view) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - GtkTreeModel *model; - GtkTreeIter iter; - gboolean valid = FALSE; - - /* block expand or collapse handlers, they would write the - * expand or collapsed setting to file otherwise */ - g_signal_handlers_block_by_func (view, - contact_list_view_row_expand_or_collapse_cb, - GINT_TO_POINTER (TRUE)); - g_signal_handlers_block_by_func (view, - contact_list_view_row_expand_or_collapse_cb, - GINT_TO_POINTER (FALSE)); - - /* restore which groups are expanded and which are not */ - model = gtk_tree_view_get_model (GTK_TREE_VIEW (view)); - for (valid = gtk_tree_model_get_iter_first (model, &iter); - valid; valid = gtk_tree_model_iter_next (model, &iter)) { - gboolean is_group; - gchar *name = NULL; - GtkTreePath *path; - - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - -1); - - if (!is_group) { - g_free (name); - continue; - } - - path = gtk_tree_model_get_path (model, &iter); - if ((priv->list_features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE) == 0 || - empathy_contact_group_get_expanded (name)) { - gtk_tree_view_expand_row (GTK_TREE_VIEW (view), path, - TRUE); - } else { - gtk_tree_view_collapse_row (GTK_TREE_VIEW (view), path); - } - - gtk_tree_path_free (path); - g_free (name); - } - - /* unblock expand or collapse handlers */ - g_signal_handlers_unblock_by_func (view, - contact_list_view_row_expand_or_collapse_cb, - GINT_TO_POINTER (TRUE)); - g_signal_handlers_unblock_by_func (view, - contact_list_view_row_expand_or_collapse_cb, - GINT_TO_POINTER (FALSE)); -} - -static void -contact_list_view_search_show_cb (EmpathyLiveSearch *search, - EmpathyContactListView *view) -{ - /* block expand or collapse handlers during expand all, they would - * write the expand or collapsed setting to file otherwise */ - g_signal_handlers_block_by_func (view, - contact_list_view_row_expand_or_collapse_cb, - GINT_TO_POINTER (TRUE)); - - gtk_tree_view_expand_all (GTK_TREE_VIEW (view)); - - g_signal_handlers_unblock_by_func (view, - contact_list_view_row_expand_or_collapse_cb, - GINT_TO_POINTER (TRUE)); -} - -typedef struct { - EmpathyContactListView *view; - GtkTreeRowReference *row_ref; - gboolean expand; -} ExpandData; - -static gboolean -contact_list_view_expand_idle_cb (gpointer user_data) -{ - ExpandData *data = user_data; - GtkTreePath *path; - - path = gtk_tree_row_reference_get_path (data->row_ref); - if (path == NULL) - goto done; - - g_signal_handlers_block_by_func (data->view, - contact_list_view_row_expand_or_collapse_cb, - GINT_TO_POINTER (data->expand)); - - if (data->expand) { - gtk_tree_view_expand_row (GTK_TREE_VIEW (data->view), path, - TRUE); - } else { - gtk_tree_view_collapse_row (GTK_TREE_VIEW (data->view), path); - } - gtk_tree_path_free (path); - - g_signal_handlers_unblock_by_func (data->view, - contact_list_view_row_expand_or_collapse_cb, - GINT_TO_POINTER (data->expand)); - -done: - g_object_unref (data->view); - gtk_tree_row_reference_free (data->row_ref); - g_slice_free (ExpandData, data); - - return FALSE; -} - -static void -contact_list_view_row_has_child_toggled_cb (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - EmpathyContactListView *view) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - gboolean is_group = FALSE; - gchar *name = NULL; - ExpandData *data; - - gtk_tree_model_get (model, iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name, - -1); - - if (!is_group || EMP_STR_EMPTY (name)) { - g_free (name); - return; - } - - data = g_slice_new0 (ExpandData); - data->view = g_object_ref (view); - data->row_ref = gtk_tree_row_reference_new (model, path); - data->expand = - (priv->list_features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE) == 0 || - (priv->search_widget != NULL && gtk_widget_get_visible (priv->search_widget)) || - empathy_contact_group_get_expanded (name); - - /* FIXME: It doesn't work to call gtk_tree_view_expand_row () from within - * gtk_tree_model_filter_refilter () */ - g_idle_add (contact_list_view_expand_idle_cb, data); - - g_free (name); -} - -static void -contact_list_view_verify_group_visibility (EmpathyContactListView *view, - GtkTreePath *path) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - GtkTreeModel *model; - GtkTreePath *parent_path; - GtkTreeIter parent_iter; - - if (gtk_tree_path_get_depth (path) < 2) - return; - - /* A group row is visible if and only if at least one if its child is - * visible. So when a row is inserted/deleted/changed in the base model, - * that could modify the visibility of its parent in the filter model. - */ - - model = GTK_TREE_MODEL (priv->store); - parent_path = gtk_tree_path_copy (path); - gtk_tree_path_up (parent_path); - if (gtk_tree_model_get_iter (model, &parent_iter, parent_path)) { - /* This tells the filter to verify the visibility of that row, - * and show/hide it if necessary */ - gtk_tree_model_row_changed (GTK_TREE_MODEL (priv->store), - parent_path, &parent_iter); - } - gtk_tree_path_free (parent_path); -} - -static void -contact_list_view_store_row_changed_cb (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - EmpathyContactListView *view) -{ - contact_list_view_verify_group_visibility (view, path); -} - -static void -contact_list_view_store_row_deleted_cb (GtkTreeModel *model, - GtkTreePath *path, - EmpathyContactListView *view) -{ - contact_list_view_verify_group_visibility (view, path); -} - -static void -contact_list_view_constructed (GObject *object) -{ - EmpathyContactListView *view = EMPATHY_CONTACT_LIST_VIEW (object); - EmpathyContactListViewPriv *priv = GET_PRIV (view); - GtkCellRenderer *cell; - GtkTreeViewColumn *col; - - priv->filter = GTK_TREE_MODEL_FILTER (gtk_tree_model_filter_new ( - GTK_TREE_MODEL (priv->store), NULL)); - gtk_tree_model_filter_set_visible_func (priv->filter, - contact_list_view_filter_visible_func, - view, NULL); - - g_signal_connect (priv->filter, "row-has-child-toggled", - G_CALLBACK (contact_list_view_row_has_child_toggled_cb), - view); - - gtk_tree_view_set_model (GTK_TREE_VIEW (view), - GTK_TREE_MODEL (priv->filter)); - - tp_g_signal_connect_object (priv->store, "row-changed", - G_CALLBACK (contact_list_view_store_row_changed_cb), - view, 0); - tp_g_signal_connect_object (priv->store, "row-inserted", - G_CALLBACK (contact_list_view_store_row_changed_cb), - view, 0); - tp_g_signal_connect_object (priv->store, "row-deleted", - G_CALLBACK (contact_list_view_store_row_deleted_cb), - view, 0); - - /* Setup view */ - /* Setting reorderable is a hack that gets us row previews as drag icons - for free. We override all the drag handlers. It's tricky to get the - position of the drag icon right in drag_begin. GtkTreeView has special - voodoo for it, so we let it do the voodoo that he do. - */ - g_object_set (view, - "headers-visible", FALSE, - "reorderable", TRUE, - "show-expanders", FALSE, - NULL); - - col = gtk_tree_view_column_new (); - - /* State */ - cell = gtk_cell_renderer_pixbuf_new (); - gtk_tree_view_column_pack_start (col, cell, FALSE); - gtk_tree_view_column_set_cell_data_func ( - col, cell, - (GtkTreeCellDataFunc) contact_list_view_pixbuf_cell_data_func, - view, NULL); - - g_object_set (cell, - "xpad", 5, - "ypad", 1, - "visible", FALSE, - NULL); - - /* Group icon */ - cell = gtk_cell_renderer_pixbuf_new (); - gtk_tree_view_column_pack_start (col, cell, FALSE); - gtk_tree_view_column_set_cell_data_func ( - col, cell, - (GtkTreeCellDataFunc) contact_list_view_group_icon_cell_data_func, - view, NULL); - - g_object_set (cell, - "xpad", 0, - "ypad", 0, - "visible", FALSE, - "width", 16, - "height", 16, - NULL); - - /* Name */ - cell = empathy_cell_renderer_text_new (); - gtk_tree_view_column_pack_start (col, cell, TRUE); - gtk_tree_view_column_set_cell_data_func ( - col, cell, - (GtkTreeCellDataFunc) contact_list_view_text_cell_data_func, - view, NULL); - - gtk_tree_view_column_add_attribute (col, cell, - "name", EMPATHY_CONTACT_LIST_STORE_COL_NAME); - gtk_tree_view_column_add_attribute (col, cell, - "text", EMPATHY_CONTACT_LIST_STORE_COL_NAME); - gtk_tree_view_column_add_attribute (col, cell, - "presence-type", EMPATHY_CONTACT_LIST_STORE_COL_PRESENCE_TYPE); - gtk_tree_view_column_add_attribute (col, cell, - "status", EMPATHY_CONTACT_LIST_STORE_COL_STATUS); - gtk_tree_view_column_add_attribute (col, cell, - "is_group", EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP); - gtk_tree_view_column_add_attribute (col, cell, - "compact", EMPATHY_CONTACT_LIST_STORE_COL_COMPACT); - - /* Audio Call Icon */ - cell = empathy_cell_renderer_activatable_new (); - gtk_tree_view_column_pack_start (col, cell, FALSE); - gtk_tree_view_column_set_cell_data_func ( - col, cell, - (GtkTreeCellDataFunc) contact_list_view_audio_call_cell_data_func, - view, NULL); - - g_object_set (cell, - "visible", FALSE, - NULL); - - g_signal_connect (cell, "path-activated", - G_CALLBACK (contact_list_view_call_activated_cb), - view); - - /* Avatar */ - cell = gtk_cell_renderer_pixbuf_new (); - gtk_tree_view_column_pack_start (col, cell, FALSE); - gtk_tree_view_column_set_cell_data_func ( - col, cell, - (GtkTreeCellDataFunc) contact_list_view_avatar_cell_data_func, - view, NULL); - - g_object_set (cell, - "xpad", 0, - "ypad", 0, - "visible", FALSE, - "width", 32, - "height", 32, - NULL); - - /* Expander */ - cell = empathy_cell_renderer_expander_new (); - gtk_tree_view_column_pack_end (col, cell, FALSE); - gtk_tree_view_column_set_cell_data_func ( - col, cell, - (GtkTreeCellDataFunc) contact_list_view_expander_cell_data_func, - view, NULL); - - /* Actually add the column now we have added all cell renderers */ - gtk_tree_view_append_column (GTK_TREE_VIEW (view), col); -} - -static void -contact_list_view_set_list_features (EmpathyContactListView *view, - EmpathyContactListFeatureFlags features) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - gboolean has_tooltip; - - g_return_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view)); - - priv->list_features = features; - - /* Update DnD source/dest */ - if (features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DRAG) { - gtk_drag_source_set (GTK_WIDGET (view), - GDK_BUTTON1_MASK, - drag_types_source, - G_N_ELEMENTS (drag_types_source), - GDK_ACTION_MOVE | GDK_ACTION_COPY); - } else { - gtk_drag_source_unset (GTK_WIDGET (view)); - - } - - if (features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DROP) { - gtk_drag_dest_set (GTK_WIDGET (view), - GTK_DEST_DEFAULT_ALL, - drag_types_dest, - G_N_ELEMENTS (drag_types_dest), - GDK_ACTION_MOVE | GDK_ACTION_COPY); - } else { - /* FIXME: URI could still be droped depending on FT feature */ - gtk_drag_dest_unset (GTK_WIDGET (view)); - } - - /* Update has-tooltip */ - has_tooltip = (features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_TOOLTIP) != 0; - gtk_widget_set_has_tooltip (GTK_WIDGET (view), has_tooltip); -} - -static void -contact_list_view_dispose (GObject *object) -{ - EmpathyContactListView *view = EMPATHY_CONTACT_LIST_VIEW (object); - EmpathyContactListViewPriv *priv = GET_PRIV (view); - - if (priv->store) { - g_object_unref (priv->store); - priv->store = NULL; - } - if (priv->filter) { - g_object_unref (priv->filter); - priv->filter = NULL; - } - if (priv->tooltip_widget) { - gtk_widget_destroy (priv->tooltip_widget); - priv->tooltip_widget = NULL; - } - if (priv->file_targets) { - gtk_target_list_unref (priv->file_targets); - priv->file_targets = NULL; - } - - empathy_contact_list_view_set_live_search (view, NULL); - - G_OBJECT_CLASS (empathy_contact_list_view_parent_class)->dispose (object); -} - -static void -contact_list_view_get_property (GObject *object, - guint param_id, - GValue *value, - GParamSpec *pspec) -{ - EmpathyContactListViewPriv *priv; - - priv = GET_PRIV (object); - - switch (param_id) { - case PROP_STORE: - g_value_set_object (value, priv->store); - break; - case PROP_LIST_FEATURES: - g_value_set_flags (value, priv->list_features); - break; - case PROP_CONTACT_FEATURES: - g_value_set_flags (value, priv->contact_features); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; -} - -static void -contact_list_view_set_property (GObject *object, - guint param_id, - const GValue *value, - GParamSpec *pspec) -{ - EmpathyContactListView *view = EMPATHY_CONTACT_LIST_VIEW (object); - EmpathyContactListViewPriv *priv = GET_PRIV (object); - - switch (param_id) { - case PROP_STORE: - priv->store = g_value_dup_object (value); - break; - case PROP_LIST_FEATURES: - contact_list_view_set_list_features (view, g_value_get_flags (value)); - break; - case PROP_CONTACT_FEATURES: - priv->contact_features = g_value_get_flags (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; -} - -static void -empathy_contact_list_view_class_init (EmpathyContactListViewClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - GtkTreeViewClass *tree_view_class = GTK_TREE_VIEW_CLASS (klass); - - object_class->constructed = contact_list_view_constructed; - object_class->dispose = contact_list_view_dispose; - object_class->get_property = contact_list_view_get_property; - object_class->set_property = contact_list_view_set_property; - - widget_class->drag_data_received = contact_list_view_drag_data_received; - widget_class->drag_drop = contact_list_view_drag_drop; - widget_class->drag_begin = contact_list_view_drag_begin; - widget_class->drag_data_get = contact_list_view_drag_data_get; - widget_class->drag_end = contact_list_view_drag_end; - widget_class->drag_motion = contact_list_view_drag_motion; - - /* We use the class method to let user of this widget to connect to - * the signal and stop emission of the signal so the default handler - * won't be called. */ - tree_view_class->row_activated = contact_list_view_row_activated; - - signals[DRAG_CONTACT_RECEIVED] = - g_signal_new ("drag-contact-received", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - g_cclosure_marshal_generic, - G_TYPE_NONE, - 3, EMPATHY_TYPE_CONTACT, G_TYPE_STRING, G_TYPE_STRING); - - g_object_class_install_property (object_class, - PROP_STORE, - g_param_spec_object ("store", - "The store of the view", - "The store of the view", - EMPATHY_TYPE_CONTACT_LIST_STORE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_LIST_FEATURES, - g_param_spec_flags ("list-features", - "Features of the view", - "Flags for all enabled features", - EMPATHY_TYPE_CONTACT_LIST_FEATURE_FLAGS, - EMPATHY_CONTACT_LIST_FEATURE_NONE, - G_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_CONTACT_FEATURES, - g_param_spec_flags ("contact-features", - "Features of the contact menu", - "Flags for all enabled features for the menu", - EMPATHY_TYPE_CONTACT_FEATURE_FLAGS, - EMPATHY_CONTACT_FEATURE_NONE, - G_PARAM_READWRITE)); - - g_type_class_add_private (object_class, sizeof (EmpathyContactListViewPriv)); -} - -static void -empathy_contact_list_view_init (EmpathyContactListView *view) -{ - EmpathyContactListViewPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (view, - EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListViewPriv); - - view->priv = priv; - - /* Get saved group states. */ - empathy_contact_groups_get_all (); - - gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (view), - empathy_contact_list_store_row_separator_func, - NULL, NULL); - - /* Set up drag target lists. */ - priv->file_targets = gtk_target_list_new (drag_types_dest_file, - G_N_ELEMENTS (drag_types_dest_file)); - - /* Connect to tree view signals rather than override. */ - g_signal_connect (view, "button-press-event", - G_CALLBACK (contact_list_view_button_press_event_cb), - NULL); - g_signal_connect (view, "key-press-event", - G_CALLBACK (contact_list_view_key_press_event_cb), - NULL); - g_signal_connect (view, "row-expanded", - G_CALLBACK (contact_list_view_row_expand_or_collapse_cb), - GINT_TO_POINTER (TRUE)); - g_signal_connect (view, "row-collapsed", - G_CALLBACK (contact_list_view_row_expand_or_collapse_cb), - GINT_TO_POINTER (FALSE)); - g_signal_connect (view, "query-tooltip", - G_CALLBACK (contact_list_view_query_tooltip_cb), - NULL); -} - -EmpathyContactListView * -empathy_contact_list_view_new (EmpathyContactListStore *store, - EmpathyContactListFeatureFlags list_features, - EmpathyContactFeatureFlags contact_features) -{ - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), NULL); - - return g_object_new (EMPATHY_TYPE_CONTACT_LIST_VIEW, - "store", store, - "contact-features", contact_features, - "list-features", list_features, - NULL); -} - -EmpathyContact * -empathy_contact_list_view_dup_selected (EmpathyContactListView *view) -{ - GtkTreeSelection *selection; - GtkTreeIter iter; - GtkTreeModel *model; - EmpathyContact *contact; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL); - - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); - if (!gtk_tree_selection_get_selected (selection, &model, &iter)) { - return NULL; - } - - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact, - -1); - - return contact; -} - -EmpathyContactListFlags -empathy_contact_list_view_get_flags (EmpathyContactListView *view) -{ - GtkTreeSelection *selection; - GtkTreeIter iter; - GtkTreeModel *model; - EmpathyContactListFlags flags; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), 0); - - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); - if (!gtk_tree_selection_get_selected (selection, &model, &iter)) { - return 0; - } - - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_FLAGS, &flags, - -1); - - return flags; -} - -gchar * -empathy_contact_list_view_get_selected_group (EmpathyContactListView *view, - gboolean *is_fake_group) -{ - GtkTreeSelection *selection; - GtkTreeIter iter; - GtkTreeModel *model; - gboolean is_group; - gchar *name; - gboolean fake; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL); - - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); - if (!gtk_tree_selection_get_selected (selection, &model, &iter)) { - return NULL; - } - - gtk_tree_model_get (model, &iter, - EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name, - EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake, - -1); - - if (!is_group) { - g_free (name); - return NULL; - } - - if (is_fake_group != NULL) - *is_fake_group = fake; - - return name; -} - -static gboolean -contact_list_view_remove_dialog_show (GtkWindow *parent, - const gchar *message, - const gchar *secondary_text) -{ - GtkWidget *dialog; - gboolean res; - - dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, - GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, - "%s", message); - gtk_dialog_add_buttons (GTK_DIALOG (dialog), - GTK_STOCK_CANCEL, GTK_RESPONSE_NO, - GTK_STOCK_DELETE, GTK_RESPONSE_YES, - NULL); - gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), - "%s", secondary_text); - - gtk_widget_show (dialog); - - res = gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - - return (res == GTK_RESPONSE_YES); -} - -static void -contact_list_view_group_remove_activate_cb (GtkMenuItem *menuitem, - EmpathyContactListView *view) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - gchar *group; - - group = empathy_contact_list_view_get_selected_group (view, NULL); - if (group) { - gchar *text; - GtkWindow *parent; - - text = g_strdup_printf (_("Do you really want to remove the group '%s'?"), group); - parent = empathy_get_toplevel_window (GTK_WIDGET (view)); - if (contact_list_view_remove_dialog_show (parent, _("Removing group"), text)) { - EmpathyContactList *list; - - list = empathy_contact_list_store_get_list_iface (priv->store); - empathy_contact_list_remove_group (list, group); - } - - g_free (text); - } - - g_free (group); -} - -GtkWidget * -empathy_contact_list_view_get_group_menu (EmpathyContactListView *view) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - gchar *group; - GtkWidget *menu; - GtkWidget *item; - GtkWidget *image; - gboolean is_fake_group; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL); - - if (!(priv->list_features & (EMPATHY_CONTACT_LIST_FEATURE_GROUPS_RENAME | - EMPATHY_CONTACT_LIST_FEATURE_GROUPS_REMOVE))) { - return NULL; - } - - group = empathy_contact_list_view_get_selected_group (view, &is_fake_group); - if (!group || is_fake_group) { - /* We can't alter fake groups */ - return NULL; - } - - menu = gtk_menu_new (); - - /* FIXME: Not implemented yet - if (priv->features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_RENAME) { - item = gtk_menu_item_new_with_mnemonic (_("Re_name")); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - gtk_widget_show (item); - g_signal_connect (item, "activate", - G_CALLBACK (contact_list_view_group_rename_activate_cb), - view); - }*/ - - if (priv->list_features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_REMOVE) { - item = gtk_image_menu_item_new_with_mnemonic (_("_Remove")); - image = gtk_image_new_from_icon_name (GTK_STOCK_REMOVE, - GTK_ICON_SIZE_MENU); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - gtk_widget_show (item); - g_signal_connect (item, "activate", - G_CALLBACK (contact_list_view_group_remove_activate_cb), - view); - } - - g_free (group); - - return menu; -} - -static void -contact_list_view_remove_activate_cb (GtkMenuItem *menuitem, - EmpathyContactListView *view) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - EmpathyContact *contact; - - contact = empathy_contact_list_view_dup_selected (view); - - if (contact) { - gchar *text; - GtkWindow *parent; - - parent = empathy_get_toplevel_window (GTK_WIDGET (view)); - text = g_strdup_printf (_("Do you really want to remove the contact '%s'?"), - empathy_contact_get_alias (contact)); - if (contact_list_view_remove_dialog_show (parent, _("Removing contact"), text)) { - EmpathyContactList *list; - - list = empathy_contact_list_store_get_list_iface (priv->store); - empathy_contact_list_remove (list, contact, ""); - } - - g_free (text); - g_object_unref (contact); - } -} - -GtkWidget * -empathy_contact_list_view_get_contact_menu (EmpathyContactListView *view) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - EmpathyContact *contact; - GtkWidget *menu; - GtkWidget *item; - GtkWidget *image; - EmpathyContactListFlags flags; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL); - - contact = empathy_contact_list_view_dup_selected (view); - if (!contact) { - return NULL; - } - flags = empathy_contact_list_view_get_flags (view); - - menu = empathy_contact_menu_new (contact, priv->contact_features); - - /* Remove contact */ - if (priv->list_features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_REMOVE && - flags & EMPATHY_CONTACT_LIST_CAN_REMOVE) { - /* create the menu if required, or just add a separator */ - if (!menu) { - menu = gtk_menu_new (); - } else { - item = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - gtk_widget_show (item); - } - - /* Remove */ - item = gtk_image_menu_item_new_with_mnemonic (_("_Remove")); - image = gtk_image_new_from_icon_name (GTK_STOCK_REMOVE, - GTK_ICON_SIZE_MENU); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - gtk_widget_show (item); - g_signal_connect (item, "activate", - G_CALLBACK (contact_list_view_remove_activate_cb), - view); - } - - g_object_unref (contact); - - return menu; -} - -void -empathy_contact_list_view_set_live_search (EmpathyContactListView *view, - EmpathyLiveSearch *search) -{ - EmpathyContactListViewPriv *priv = GET_PRIV (view); - - /* remove old handlers if old search was not null */ - if (priv->search_widget != NULL) { - g_signal_handlers_disconnect_by_func (view, - contact_list_view_start_search_cb, - NULL); - - g_signal_handlers_disconnect_by_func (priv->search_widget, - contact_list_view_search_text_notify_cb, - view); - g_signal_handlers_disconnect_by_func (priv->search_widget, - contact_list_view_search_activate_cb, - view); - g_signal_handlers_disconnect_by_func (priv->search_widget, - contact_list_view_search_key_navigation_cb, - view); - g_signal_handlers_disconnect_by_func (priv->search_widget, - contact_list_view_search_hide_cb, - view); - g_signal_handlers_disconnect_by_func (priv->search_widget, - contact_list_view_search_show_cb, - view); - g_object_unref (priv->search_widget); - priv->search_widget = NULL; - } - - /* connect handlers if new search is not null */ - if (search != NULL) { - priv->search_widget = g_object_ref (search); - - g_signal_connect (view, "start-interactive-search", - G_CALLBACK (contact_list_view_start_search_cb), - NULL); - - g_signal_connect (priv->search_widget, "notify::text", - G_CALLBACK (contact_list_view_search_text_notify_cb), - view); - g_signal_connect (priv->search_widget, "activate", - G_CALLBACK (contact_list_view_search_activate_cb), - view); - g_signal_connect (priv->search_widget, "key-navigation", - G_CALLBACK (contact_list_view_search_key_navigation_cb), - view); - g_signal_connect (priv->search_widget, "hide", - G_CALLBACK (contact_list_view_search_hide_cb), - view); - g_signal_connect (priv->search_widget, "show", - G_CALLBACK (contact_list_view_search_show_cb), - view); - } -} diff --git a/libempathy-gtk/empathy-contact-list-view.h b/libempathy-gtk/empathy-contact-list-view.h deleted file mode 100644 index 97e78d3e..00000000 --- a/libempathy-gtk/empathy-contact-list-view.h +++ /dev/null @@ -1,87 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Copyright (C) 2005-2007 Imendio AB - * Copyright (C) 2007-2008 Collabora Ltd. - * - * 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., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301 USA - * - * Authors: Mikael Hallendal - * Martyn Russell - * Xavier Claessens - */ - -#ifndef __EMPATHY_CONTACT_LIST_VIEW_H__ -#define __EMPATHY_CONTACT_LIST_VIEW_H__ - -#include - -#include -#include - -#include "empathy-contact-list-store.h" -#include "empathy-live-search.h" -#include "empathy-contact-menu.h" - -G_BEGIN_DECLS - -#define EMPATHY_TYPE_CONTACT_LIST_VIEW (empathy_contact_list_view_get_type ()) -#define EMPATHY_CONTACT_LIST_VIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListView)) -#define EMPATHY_CONTACT_LIST_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListViewClass)) -#define EMPATHY_IS_CONTACT_LIST_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST_VIEW)) -#define EMPATHY_IS_CONTACT_LIST_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT_LIST_VIEW)) -#define EMPATHY_CONTACT_LIST_VIEW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListViewClass)) - -typedef struct _EmpathyContactListView EmpathyContactListView; -typedef struct _EmpathyContactListViewClass EmpathyContactListViewClass; - -typedef enum { - EMPATHY_CONTACT_LIST_FEATURE_NONE = 0, - EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE = 1 << 0, - EMPATHY_CONTACT_LIST_FEATURE_GROUPS_RENAME = 1 << 1, - EMPATHY_CONTACT_LIST_FEATURE_GROUPS_REMOVE = 1 << 2, - EMPATHY_CONTACT_LIST_FEATURE_CONTACT_REMOVE = 1 << 3, - EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DROP = 1 << 4, - EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DRAG = 1 << 5, - EMPATHY_CONTACT_LIST_FEATURE_CONTACT_TOOLTIP = 1 << 6, - EMPATHY_CONTACT_LIST_FEATURE_ALL = (1 << 7) - 1, -} EmpathyContactListFeatureFlags; - -struct _EmpathyContactListView { - GtkTreeView parent; - gpointer priv; -}; - -struct _EmpathyContactListViewClass { - GtkTreeViewClass parent_class; -}; - -GType empathy_contact_list_view_get_type (void) G_GNUC_CONST; -EmpathyContactListView * empathy_contact_list_view_new (EmpathyContactListStore *store, - EmpathyContactListFeatureFlags list_features, - EmpathyContactFeatureFlags contact_features); -EmpathyContact * empathy_contact_list_view_dup_selected (EmpathyContactListView *view); -EmpathyContactListFlags empathy_contact_list_view_get_flags (EmpathyContactListView *view); -gchar * empathy_contact_list_view_get_selected_group (EmpathyContactListView *view, - gboolean *is_fake_group); -GtkWidget * empathy_contact_list_view_get_contact_menu (EmpathyContactListView *view); -GtkWidget * empathy_contact_list_view_get_group_menu (EmpathyContactListView *view); -void empathy_contact_list_view_set_live_search (EmpathyContactListView *view, - EmpathyLiveSearch *search); - -G_END_DECLS - -#endif /* __EMPATHY_CONTACT_LIST_VIEW_H__ */ - diff --git a/libempathy-gtk/empathy-contact-menu.c b/libempathy-gtk/empathy-contact-menu.c index 07def607..dd9ea5c1 100644 --- a/libempathy-gtk/empathy-contact-menu.c +++ b/libempathy-gtk/empathy-contact-menu.c @@ -174,7 +174,6 @@ empathy_contact_add_menu_item_new (EmpathyContact *contact) TpConnection *connection; GList *l, *members; gboolean found = FALSE; - EmpathyContactListFlags flags; g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL); @@ -185,12 +184,8 @@ empathy_contact_add_menu_item_new (EmpathyContact *contact) manager = empathy_contact_manager_dup_singleton (); connection = empathy_contact_get_connection (contact); - flags = empathy_contact_manager_get_flags_for_connection (manager, - connection); - - if (!(flags & EMPATHY_CONTACT_LIST_CAN_ADD)) { + if (!tp_connection_get_can_change_contact_list (connection)) return NULL; - } members = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (manager)); for (l = members; l; l = l->next) { @@ -226,8 +221,8 @@ empathy_contact_block_menu_item_toggled (GtkCheckMenuItem *item, EmpathyContact *contact) { static guint block_signal = 0; - EmpathyContactManager *manager; gboolean blocked, abusive; + TpContact *tp_contact; if (block_signal > 0) return; @@ -252,10 +247,12 @@ empathy_contact_block_menu_item_toggled (GtkCheckMenuItem *item, return; } - manager = empathy_contact_manager_dup_singleton (); - empathy_contact_list_set_blocked (EMPATHY_CONTACT_LIST (manager), - contact, blocked, abusive); - g_object_unref (manager); + tp_contact = empathy_contact_get_tp_contact (contact); + + if (blocked) + tp_contact_block_async (tp_contact, abusive, NULL, NULL); + else + tp_contact_unblock_async (tp_contact, NULL, NULL); /* update the toggle with the blocked status */ block_signal++; @@ -267,34 +264,27 @@ static GtkWidget * empathy_contact_block_menu_item_new (EmpathyContact *contact) { GtkWidget *item; - EmpathyContactManager *manager; TpConnection *connection; - EmpathyContactListFlags flags; - gboolean blocked; + TpContact *tp_contact; g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL); - manager = empathy_contact_manager_dup_singleton (); - if (!empathy_contact_manager_initialized ()) { return NULL; } connection = empathy_contact_get_connection (contact); - flags = empathy_contact_manager_get_flags_for_connection (manager, - connection); - - if (!(flags & EMPATHY_CONTACT_LIST_CAN_BLOCK)) { + if (!tp_proxy_has_interface_by_id (connection, + TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) return NULL; - } item = gtk_check_menu_item_new_with_mnemonic (_("_Block Contact")); - blocked = empathy_contact_list_get_blocked ( - EMPATHY_CONTACT_LIST (manager), - contact); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), blocked); + tp_contact = empathy_contact_get_tp_contact (contact); + + gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), + tp_contact_is_blocked (tp_contact)); g_signal_connect (item, "toggled", G_CALLBACK (empathy_contact_block_menu_item_toggled), @@ -525,7 +515,6 @@ contact_edit_menu_item_activate_cb (EmpathyContact *contact) GtkWidget * empathy_contact_edit_menu_item_new (EmpathyContact *contact) { - EmpathyContactManager *manager; GtkWidget *item; GtkWidget *image; gboolean enable = FALSE; @@ -534,17 +523,12 @@ empathy_contact_edit_menu_item_new (EmpathyContact *contact) if (empathy_contact_manager_initialized ()) { TpConnection *connection; - EmpathyContactListFlags flags; - manager = empathy_contact_manager_dup_singleton (); connection = empathy_contact_get_connection (contact); - flags = empathy_contact_manager_get_flags_for_connection ( - manager, connection); - - enable = (flags & EMPATHY_CONTACT_LIST_CAN_ALIAS || - flags & EMPATHY_CONTACT_LIST_CAN_GROUP); - g_object_unref (manager); + enable = (tp_connection_can_set_contact_alias (connection) || + tp_connection_get_group_storage (connection) != + TP_CONTACT_METADATA_STORAGE_TYPE_NONE); } item = gtk_image_menu_item_new_with_mnemonic ( diff --git a/libempathy-gtk/empathy-contact-search-dialog.c b/libempathy-gtk/empathy-contact-search-dialog.c index bfc42bbb..89a7918a 100644 --- a/libempathy-gtk/empathy-contact-search-dialog.c +++ b/libempathy-gtk/empathy-contact-search-dialog.c @@ -28,8 +28,8 @@ #include -#include #include +#include #include #include @@ -120,7 +120,7 @@ on_searcher_reset (GObject *source_object, gtk_list_store_clear (priv->store); tp_contact_search_start (priv->searcher, search); - g_hash_table_destroy (search); + g_hash_table_unref (search); } static void @@ -142,7 +142,6 @@ on_get_contact_factory_get_from_id_cb (TpConnection *connection, gpointer user_data, GObject *object) { - EmpathyContactManager *manager = empathy_contact_manager_dup_singleton (); const gchar *message = user_data; if (error != NULL) @@ -151,8 +150,7 @@ on_get_contact_factory_get_from_id_cb (TpConnection *connection, return; } - empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager), contact, - message); + empathy_contact_add_to_contact_list (contact, message); } static void @@ -342,15 +340,11 @@ check_request_message_available (EmpathyContactSearchDialog *self, TpConnection *conn) { EmpathyContactSearchDialogPrivate *priv = GET_PRIVATE (self); - EmpathyContactManager *manager = empathy_contact_manager_dup_singleton (); - EmpathyContactListFlags flags; - - flags = empathy_contact_manager_get_flags_for_connection (manager, conn); gtk_widget_set_visible (priv->message_window, - flags & EMPATHY_CONTACT_LIST_MESSAGE_ADD); + tp_connection_get_can_change_contact_list (conn)); gtk_widget_set_visible (priv->message_label, - flags & EMPATHY_CONTACT_LIST_MESSAGE_ADD); + tp_connection_get_can_change_contact_list (conn)); } static void @@ -504,11 +498,11 @@ empathy_contact_search_dialog_init (EmpathyContactSearchDialog *self) /* Title */ gtk_window_set_title (GTK_WINDOW (self), _("Search contacts")); - vbox = gtk_vbox_new (FALSE, 3); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3); gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); /* Account chooser */ - hbox = gtk_hbox_new (FALSE, 6); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); label = gtk_label_new (_("Account:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); gtk_size_group_add_widget (size_group, label); @@ -531,7 +525,7 @@ empathy_contact_search_dialog_init (EmpathyContactSearchDialog *self) #endif /* Search input */ - hbox = gtk_hbox_new (FALSE, 6); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); label = gtk_label_new (_("Search: ")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); gtk_size_group_add_widget (size_group, label); diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c index 8e566652..476fb621 100644 --- a/libempathy-gtk/empathy-contact-widget.c +++ b/libempathy-gtk/empathy-contact-widget.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include @@ -479,64 +478,19 @@ contact_widget_details_update_edit (EmpathyContactWidget *information) return n_rows; } -static gboolean -channel_name_activated_cb ( - GtkLabel *label, - gchar *uri, - EmpathyContactWidget *information) -{ - TpAccount *account = empathy_contact_get_account (information->contact); - - empathy_join_muc (account, uri, empathy_get_current_action_time ()); - return TRUE; -} - static void -add_channel_list ( - EmpathyContactWidget *information, - GPtrArray *channels, - guint row) +add_row (GtkGrid *grid, + guint row, + GtkWidget *title, + GtkWidget *value) { - GtkWidget *w; - GString *label_markup = g_string_new (""); - guint i; - - w = gtk_label_new (_("Channels:")); - gtk_grid_attach (GTK_GRID (information->grid_details), - w, 0, row, 1, 1); - gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5); - gtk_widget_show (w); + gtk_grid_attach (grid, title, 0, row, 1, 1); + gtk_misc_set_alignment (GTK_MISC (title), 0, 0.5); + gtk_widget_show (title); - for (i = 0; i < channels->len; i++) - { - const gchar *channel_name = g_ptr_array_index (channels, i); - /* We abuse the URI of the link to hold the channel name. It seems to - * be okay to just use it essentially verbatim, rather than trying to - * ensure it's actually a valid URI. g_string_append_uri_escaped() - * escapes way more than we actually need to; so we're just using - * g_markup_escape_text directly. - */ - gchar *escaped = g_markup_escape_text (channel_name, -1); - - if (i > 0) - g_string_append (label_markup, ", "); - - g_string_append_printf (label_markup, "%s", - escaped, channel_name); - g_free (escaped); - } - - w = gtk_label_new (NULL); - gtk_label_set_markup (GTK_LABEL (w), label_markup->str); - gtk_label_set_line_wrap (GTK_LABEL (w), TRUE); - g_signal_connect (w, "activate-link", - (GCallback) channel_name_activated_cb, information); - gtk_grid_attach (GTK_GRID (information->grid_details), - w, 1, row, 1, 1); - gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5); - gtk_widget_show (w); - - g_string_free (label_markup, TRUE); + gtk_grid_attach (grid, value, 1, row, 1, 1); + gtk_misc_set_alignment (GTK_MISC (value), 0, 0.5); + gtk_widget_show (value); } static guint @@ -545,7 +499,8 @@ contact_widget_details_update_show (EmpathyContactWidget *information) TpContact *contact; GList *info, *l; guint n_rows = 0; - GPtrArray *channels = g_ptr_array_new (); + GtkWidget *channels_label; + TpAccount *account; contact = empathy_contact_get_tp_contact (information->contact); info = tp_contact_get_contact_info (contact); @@ -555,7 +510,7 @@ contact_widget_details_update_show (EmpathyContactWidget *information) TpContactInfoField *field = l->data; const gchar *value; gchar *markup = NULL, *title; - GtkWidget *w; + GtkWidget *title_widget, *value_widget; EmpathyContactInfoFormatFunc format; if (field->field_value == NULL || field->field_value[0] == NULL) @@ -563,12 +518,6 @@ contact_widget_details_update_show (EmpathyContactWidget *information) value = field->field_value[0]; - if (!tp_strdiff (field->field_name, "x-irc-channel")) - { - g_ptr_array_add (channels, (gpointer) field->field_value[0]); - continue; - } - if (!empathy_contact_info_lookup_field (field->field_name, NULL, &format)) { DEBUG ("Unhandled ContactInfo field: %s", field->field_name); @@ -590,42 +539,45 @@ contact_widget_details_update_show (EmpathyContactWidget *information) /* Add Title */ title = empathy_contact_info_field_label (field->field_name, field->parameters); - w = gtk_label_new (title); + title_widget = gtk_label_new (title); g_free (title); - gtk_grid_attach (GTK_GRID (information->grid_details), - w, 0, n_rows, 1, 1); - gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5); - gtk_widget_show (w); - /* Add Value */ - w = gtk_label_new (value); + value_widget = gtk_label_new (value); if (markup != NULL) { - gtk_label_set_markup (GTK_LABEL (w), markup); + gtk_label_set_markup (GTK_LABEL (value_widget), markup); g_free (markup); } if ((information->flags & EMPATHY_CONTACT_WIDGET_FOR_TOOLTIP) == 0) - gtk_label_set_selectable (GTK_LABEL (w), TRUE); + gtk_label_set_selectable (GTK_LABEL (value_widget), TRUE); - gtk_grid_attach (GTK_GRID (information->grid_details), - w, 1, n_rows, 1, 1); - gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5); - gtk_widget_show (w); + add_row (GTK_GRID (information->grid_details), n_rows, title_widget, + value_widget); n_rows++; } - g_list_free (info); + account = empathy_contact_get_account (information->contact); - if (channels->len > 0) + channels_label = empathy_contact_info_create_channel_list_label (account, + info, n_rows); + + if (channels_label != NULL) { - add_channel_list (information, channels, n_rows); + GtkWidget *title_widget; + + title_widget = gtk_label_new (_("Channels:")); + + add_row (GTK_GRID (information->grid_details), n_rows, title_widget, + channels_label); + n_rows++; } - g_ptr_array_unref (channels); + g_list_free (info); + return n_rows; } @@ -1673,7 +1625,7 @@ contact_widget_contact_setup (EmpathyContactWidget *information) else { /* Pack the protocol icon with the account name in an hbox */ - information->widget_account = gtk_hbox_new (FALSE, 6); + information->widget_account = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); information->label_account = gtk_label_new (NULL); if (!(information->flags & EMPATHY_CONTACT_WIDGET_FOR_TOOLTIP)) { diff --git a/libempathy-gtk/empathy-contactinfo-utils.c b/libempathy-gtk/empathy-contactinfo-utils.c index 99722577..695d1ee3 100644 --- a/libempathy-gtk/empathy-contactinfo-utils.c +++ b/libempathy-gtk/empathy-contactinfo-utils.c @@ -30,9 +30,11 @@ #include #include +#include #include "empathy-contactinfo-utils.h" #include "empathy-string-parser.h" +#include "empathy-ui-utils.h" static gchar * linkify_first_value (GStrv values) @@ -204,7 +206,7 @@ build_parameters_string (GStrv parameters) g_ptr_array_add (output, NULL); /* NULL-terminate */ join = g_strjoinv (", ", (char **) output->pdata); - g_ptr_array_free (output, TRUE); + g_ptr_array_unref (output); return join; } @@ -264,3 +266,68 @@ empathy_contact_info_field_spec_cmp (TpContactInfoFieldSpec *spec1, { return contact_info_field_name_cmp (spec1->name, spec2->name); } + +static gboolean +channel_name_activated_cb ( + GtkLabel *label, + gchar *uri, + TpAccount *account) +{ + empathy_join_muc (account, uri, empathy_get_current_action_time ()); + return TRUE; +} + +GtkWidget * +empathy_contact_info_create_channel_list_label (TpAccount *account, + GList *info, + guint row) +{ + GtkWidget *label = NULL; + GString *label_markup = g_string_new (""); + guint i; + GPtrArray *channels; + GList *l; + + /* Is there channels? */ + channels = g_ptr_array_new (); + + for (l = info; l != NULL; l = l->next) + { + TpContactInfoField *field = l->data; + + if (!tp_strdiff (field->field_name, "x-irc-channel")) + g_ptr_array_add (channels, (gpointer) field->field_value[0]); + } + + if (channels->len == 0) + goto out; + + for (i = 0; i < channels->len; i++) + { + const gchar *channel_name = g_ptr_array_index (channels, i); + /* We abuse the URI of the link to hold the channel name. It seems to + * be okay to just use it essentially verbatim, rather than trying to + * ensure it's actually a valid URI. */ + gchar *escaped = g_markup_escape_text (channel_name, -1); + + if (i > 0) + g_string_append (label_markup, ", "); + + g_string_append_printf (label_markup, "%s", + escaped, channel_name); + g_free (escaped); + } + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), label_markup->str); + gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); + + g_signal_connect (label, "activate-link", + (GCallback) channel_name_activated_cb, account); + +out: + g_ptr_array_unref (channels); + g_string_free (label_markup, TRUE); + + return label; +} diff --git a/libempathy-gtk/empathy-contactinfo-utils.h b/libempathy-gtk/empathy-contactinfo-utils.h index 1d89ff22..a49e807a 100644 --- a/libempathy-gtk/empathy-contactinfo-utils.h +++ b/libempathy-gtk/empathy-contactinfo-utils.h @@ -22,6 +22,8 @@ #define __EMPATHY_CONTACTINFO_UTILS_H__ #include +#include + #include G_BEGIN_DECLS @@ -39,6 +41,10 @@ gint empathy_contact_info_field_cmp (TpContactInfoField *field1, gint empathy_contact_info_field_spec_cmp (TpContactInfoFieldSpec *spec1, TpContactInfoFieldSpec *spec2); +GtkWidget * empathy_contact_info_create_channel_list_label (TpAccount *account, + GList *info, + guint row); + G_END_DECLS #endif /* __EMPATHY_UTILS_H__ */ diff --git a/libempathy-gtk/empathy-dialpad-widget.c b/libempathy-gtk/empathy-dialpad-widget.c index 529aff26..1782dc80 100644 --- a/libempathy-gtk/empathy-dialpad-widget.c +++ b/libempathy-gtk/empathy-dialpad-widget.c @@ -140,7 +140,7 @@ empathy_dialpad_widget_init (EmpathyDialpadWidget *self) for (i = 0; dtmfbuttons[i].label != NULL; i++) { - GtkWidget *vbox = gtk_vbox_new (FALSE, 0); + GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); GtkWidget *button = gtk_button_new (); GtkWidget *label; gchar *str; diff --git a/libempathy-gtk/empathy-groups-widget.c b/libempathy-gtk/empathy-groups-widget.c index 33e4d8d5..efb58fa9 100644 --- a/libempathy-gtk/empathy-groups-widget.c +++ b/libempathy-gtk/empathy-groups-widget.c @@ -32,7 +32,7 @@ #include #include -#include +#include #include "empathy-groups-widget.h" #include "empathy-ui-utils.h" @@ -150,7 +150,7 @@ static void populate_data (EmpathyGroupsWidget *self) { EmpathyGroupsWidgetPriv *priv = GET_PRIV (self); - EmpathyContactManager *manager; + EmpathyConnectionAggregator *aggregator; GtkTreeIter iter; GeeSet *member_groups; GList *all_groups, *l; @@ -158,12 +158,12 @@ populate_data (EmpathyGroupsWidget *self) /* Remove the old groups */ gtk_list_store_clear (priv->group_store); - /* FIXME: We have to get the whole group list from EmpathyContactManager, as - * libfolks hasn't grown API to get the whole group list yet. (bgo#627398) */ - manager = empathy_contact_manager_dup_singleton (); - all_groups = empathy_contact_list_get_all_groups ( - EMPATHY_CONTACT_LIST (manager)); - g_object_unref (manager); + /* FIXME: We have to get the whole group list from + * EmpathyConnectionAggregator, as libfolks hasn't grown API to get the whole + * group list yet. (bgo#627398) */ + aggregator = empathy_connection_aggregator_dup_singleton (); + all_groups = empathy_connection_aggregator_get_all_groups (aggregator); + g_object_unref (aggregator); /* Get the list of groups that this #FolksGroupDetails is currently in */ member_groups = folks_group_details_get_groups (priv->group_details); @@ -340,7 +340,7 @@ set_up (EmpathyGroupsWidget *self) alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); - vbox = GTK_BOX (gtk_vbox_new (FALSE, 6)); + vbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 6)); label = gtk_label_new (_("Select the groups you want this contact to appear " "in. Note that you can select more than one group or no groups.")); @@ -350,7 +350,7 @@ set_up (EmpathyGroupsWidget *self) gtk_box_pack_start (vbox, label, FALSE, FALSE, 0); gtk_widget_show (label); - hbox = GTK_BOX (gtk_hbox_new (FALSE, 12)); + hbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12)); priv->add_group_entry = gtk_entry_new (); g_signal_connect (priv->add_group_entry, "changed", diff --git a/libempathy-gtk/empathy-individual-dialogs.c b/libempathy-gtk/empathy-individual-dialogs.c index e1bd6f11..ed566329 100644 --- a/libempathy-gtk/empathy-individual-dialogs.c +++ b/libempathy-gtk/empathy-individual-dialogs.c @@ -182,8 +182,6 @@ empathy_block_individual_dialog_show (GtkWindow *parent, GdkPixbuf *avatar, gboolean *abusive) { - EmpathyContactManager *contact_manager = - empathy_contact_manager_dup_singleton (); GtkWidget *dialog; GtkWidget *abusive_check = NULL; GeeSet *personas; @@ -214,9 +212,9 @@ empathy_block_individual_dialog_show (GtkWindow *parent, { TpfPersona *persona = gee_iterator_get (iter); TpContact *contact; - EmpathyContactListFlags flags; GString *s; char *str; + TpConnection *conn; if (!TPF_IS_PERSONA (persona)) goto while_finish; @@ -225,10 +223,10 @@ empathy_block_individual_dialog_show (GtkWindow *parent, if (contact == NULL) goto while_finish; - flags = empathy_contact_manager_get_flags_for_connection ( - contact_manager, tp_contact_get_connection (contact)); + conn = tp_contact_get_connection (contact); - if (flags & EMPATHY_CONTACT_LIST_CAN_BLOCK) + if (tp_proxy_has_interface_by_id (conn, + TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) { s = blocked_str; npersonas_blocked++; @@ -239,7 +237,7 @@ empathy_block_individual_dialog_show (GtkWindow *parent, npersonas_notblocked++; } - if (flags & EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE) + if (tp_connection_can_report_abusive (conn)) can_report_abuse = TRUE; str = contact_pretty_name (contact); @@ -291,7 +289,6 @@ while_finish: gtk_widget_show (abusive_check); } - g_object_unref (contact_manager); g_string_free (text, TRUE); g_string_free (blocked_str, TRUE); g_string_free (notblocked_str, TRUE); diff --git a/libempathy-gtk/empathy-individual-linker.c b/libempathy-gtk/empathy-individual-linker.c index 793c2827..7de5e4ad 100644 --- a/libempathy-gtk/empathy-individual-linker.c +++ b/libempathy-gtk/empathy-individual-linker.c @@ -35,6 +35,7 @@ #include "empathy-individual-linker.h" #include "empathy-individual-store.h" +#include "empathy-individual-store-manager.h" #include "empathy-individual-view.h" #include "empathy-individual-widget.h" #include "empathy-persona-store.h" @@ -355,17 +356,18 @@ set_up (EmpathyIndividualLinker *self) priv = GET_PRIV (self); - top_vbox = gtk_vbox_new (FALSE, 6); + top_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); /* Layout panes */ - paned = GTK_PANED (gtk_hpaned_new ()); + + paned = GTK_PANED (gtk_paned_new (GTK_ORIENTATION_HORIZONTAL)); /* Left column heading */ alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 0, 6); gtk_widget_show (alignment); - vbox = GTK_BOX (gtk_vbox_new (FALSE, 6)); + vbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 6)); label = gtk_label_new (NULL); tmp = g_strdup_printf ("%s", _("Select contacts to link")); gtk_label_set_markup (GTK_LABEL (label), tmp); @@ -375,7 +377,8 @@ set_up (EmpathyIndividualLinker *self) /* Individual selector */ individual_manager = empathy_individual_manager_dup_singleton (); - priv->individual_store = empathy_individual_store_new (individual_manager); + priv->individual_store = EMPATHY_INDIVIDUAL_STORE ( + empathy_individual_store_manager_new (individual_manager)); g_object_unref (individual_manager); empathy_individual_store_set_show_protocols (priv->individual_store, FALSE); @@ -439,7 +442,7 @@ set_up (EmpathyIndividualLinker *self) gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 6, 0); gtk_widget_show (alignment); - vbox = GTK_BOX (gtk_vbox_new (FALSE, 6)); + vbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 6)); label = gtk_label_new (NULL); tmp = g_strdup_printf ("%s", _("New contact preview")); gtk_label_set_markup (GTK_LABEL (label), tmp); @@ -572,7 +575,7 @@ finalize (GObject *object) { EmpathyIndividualLinkerPriv *priv = GET_PRIV (object); - g_hash_table_destroy (priv->changed_individuals); + g_hash_table_unref (priv->changed_individuals); G_OBJECT_CLASS (empathy_individual_linker_parent_class)->finalize (object); } diff --git a/libempathy-gtk/empathy-individual-menu.c b/libempathy-gtk/empathy-individual-menu.c index 2209e153..e19fde3d 100644 --- a/libempathy-gtk/empathy-individual-menu.c +++ b/libempathy-gtk/empathy-individual-menu.c @@ -36,6 +36,7 @@ #include #include #include +#include #include "empathy-account-selector-dialog.h" #include "empathy-individual-menu.h" @@ -49,6 +50,7 @@ #include "empathy-share-my-desktop.h" #include "empathy-linking-dialog.h" #include "empathy-call-utils.h" +#include "empathy-individual-store-channel.h" #define DEBUG_FLAG EMPATHY_DEBUG_CONTACT #include @@ -58,11 +60,13 @@ typedef struct { FolksIndividual *individual; /* owned */ EmpathyIndividualFeatureFlags features; + EmpathyIndividualStore *store; } EmpathyIndividualMenuPriv; enum { PROP_INDIVIDUAL = 1, PROP_FEATURES, + PROP_STORE, }; enum { @@ -454,6 +458,17 @@ constructed (GObject *object) individual = priv->individual; features = priv->features; + /* Add contact */ + if (features & EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT) + { + item = empathy_individual_add_menu_item_new (self, individual); + if (item != NULL) + { + gtk_menu_shell_append (GTK_MENU_SHELL (shell), item); + gtk_widget_show (item); + } + } + /* Chat */ if (features & EMPATHY_INDIVIDUAL_FEATURE_CHAT) { @@ -586,6 +601,9 @@ get_property (GObject *object, case PROP_FEATURES: g_value_set_flags (value, priv->features); break; + case PROP_STORE: + g_value_set_object (value, priv->store); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; @@ -610,6 +628,9 @@ set_property (GObject *object, case PROP_FEATURES: priv->features = g_value_get_flags (value); break; + case PROP_STORE: + priv->store = g_value_dup_object (value); /* read only */ + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; @@ -622,6 +643,7 @@ dispose (GObject *object) EmpathyIndividualMenuPriv *priv = GET_PRIV (object); tp_clear_object (&priv->individual); + tp_clear_object (&priv->store); G_OBJECT_CLASS (empathy_individual_menu_parent_class)->dispose (object); } @@ -661,6 +683,13 @@ empathy_individual_menu_class_init (EmpathyIndividualMenuClass *klass) EMPATHY_INDIVIDUAL_FEATURE_NONE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (object_class, PROP_STORE, + g_param_spec_object ("store", + "Store", + "The EmpathyIndividualStore to use to get contact owner", + EMPATHY_TYPE_INDIVIDUAL_STORE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + signals[SIGNAL_LINK_CONTACTS_ACTIVATED] = g_signal_new ("link-contacts-activated", G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, @@ -672,14 +701,17 @@ empathy_individual_menu_class_init (EmpathyIndividualMenuClass *klass) GtkWidget * empathy_individual_menu_new (FolksIndividual *individual, - EmpathyIndividualFeatureFlags features) + EmpathyIndividualFeatureFlags features, + EmpathyIndividualStore *store) { g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL); + g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (store), NULL); g_return_val_if_fail (features != EMPATHY_INDIVIDUAL_FEATURE_NONE, NULL); return g_object_new (EMPATHY_TYPE_INDIVIDUAL_MENU, "individual", individual, "features", features, + "store", store, NULL); } @@ -1420,10 +1452,117 @@ empathy_individual_invite_menu_item_new (FolksIndividual *individual, gtk_widget_show (image); - g_hash_table_destroy (name_room_map); + g_hash_table_unref (name_room_map); g_object_unref (mgr); g_list_free (names); g_list_free (rooms); return item; } + +static void +add_menu_item_activated (GtkMenuItem *item, + TpContact *tp_contact) +{ + GtkWidget *toplevel; + EmpathyContact *contact; + + toplevel = gtk_widget_get_toplevel (GTK_WIDGET (item)); + if (!gtk_widget_is_toplevel (toplevel) || !GTK_IS_WINDOW (toplevel)) + toplevel = NULL; + + contact = empathy_contact_dup_from_tp_contact (tp_contact); + + empathy_new_contact_dialog_show_with_contact (GTK_WINDOW (toplevel), + contact); + + g_object_unref (contact); +} + +GtkWidget * +empathy_individual_add_menu_item_new (EmpathyIndividualMenu *self, + FolksIndividual *individual) +{ + EmpathyIndividualMenuPriv *priv = GET_PRIV (self); + GtkWidget *item, *image; + GeeSet *personas; + GeeIterator *iter; + TpContact *to_add = NULL; + + /* find the first of this Individual's personas which are not in our contact + * list. */ + personas = folks_individual_get_personas (individual); + iter = gee_iterable_iterator (GEE_ITERABLE (personas)); + while (gee_iterator_next (iter)) + { + TpfPersona *persona = gee_iterator_get (iter); + TpContact *contact; + TpConnection *conn; + + if (!TPF_IS_PERSONA (persona)) + goto next; + + contact = tpf_persona_get_contact (persona); + if (contact == NULL) + goto next; + + /* be sure to use a not channel specific contact. + * TODO: Ideally tp-glib should do this for us (fdo #42702)*/ + if (EMPATHY_IS_INDIVIDUAL_STORE_CHANNEL (priv->store)) + { + TpChannel *channel; + TpChannelGroupFlags flags; + + channel = empathy_individual_store_channel_get_channel ( + EMPATHY_INDIVIDUAL_STORE_CHANNEL (priv->store)); + + flags = tp_channel_group_get_flags (channel); + if ((flags & TP_CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES) != 0) + { + /* Channel uses channel specific handles (thanks XMPP...) */ + contact = tp_channel_group_get_contact_owner (channel, contact); + + /* If we don't know the owner, we can't add the contact */ + if (contact == NULL) + goto next; + } + } + + conn = tp_contact_get_connection (contact); + if (conn == NULL) + goto next; + + /* No point to try adding a contact if the CM doesn't support it */ + if (!tp_connection_get_can_change_contact_list (conn)) + goto next; + + /* Can't add ourself */ + if (tp_connection_get_self_contact (conn) == contact) + goto next; + + if (tp_contact_get_subscribe_state (contact) == TP_SUBSCRIPTION_STATE_YES) + goto next; + + g_object_unref (persona); + to_add = contact; + break; + +next: + g_object_unref (persona); + } + + g_object_unref (iter); + + if (to_add == NULL) + return NULL; + + item = gtk_image_menu_item_new_with_mnemonic (_("_Add Contact…")); + image = gtk_image_new_from_icon_name (GTK_STOCK_ADD, GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); + + g_signal_connect_data (item, "activate", + G_CALLBACK (add_menu_item_activated), + g_object_ref (to_add), (GClosureNotify) g_object_unref, 0); + + return item; +} diff --git a/libempathy-gtk/empathy-individual-menu.h b/libempathy-gtk/empathy-individual-menu.h index 2a51605d..31acc156 100644 --- a/libempathy-gtk/empathy-individual-menu.h +++ b/libempathy-gtk/empathy-individual-menu.h @@ -25,6 +25,8 @@ #include +#include "empathy-individual-store.h" + G_BEGIN_DECLS typedef enum { @@ -38,7 +40,8 @@ typedef enum { EMPATHY_INDIVIDUAL_FEATURE_LINK = 1 << 6, EMPATHY_INDIVIDUAL_FEATURE_SMS = 1 << 7, EMPATHY_INDIVIDUAL_FEATURE_CALL_PHONE = 1 << 8, - EMPATHY_INDIVIDUAL_FEATURE_ALL = (1 << 9) - 1, + EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT = 1 << 9, + EMPATHY_INDIVIDUAL_FEATURE_ALL = (1 << 10) - 1, } EmpathyIndividualFeatureFlags; #define EMPATHY_TYPE_INDIVIDUAL_MENU (empathy_individual_menu_get_type ()) @@ -68,7 +71,8 @@ typedef struct { GType empathy_individual_menu_get_type (void) G_GNUC_CONST; GtkWidget * empathy_individual_menu_new (FolksIndividual *individual, - EmpathyIndividualFeatureFlags features); + EmpathyIndividualFeatureFlags features, + EmpathyIndividualStore *store); GtkWidget * empathy_individual_chat_menu_item_new (FolksIndividual *individual, EmpathyContact *contact); GtkWidget * empathy_individual_sms_menu_item_new (FolksIndividual *individual, @@ -95,6 +99,8 @@ GtkWidget * empathy_individual_share_my_desktop_menu_item_new ( EmpathyContact *contact); GtkWidget * empathy_individual_favourite_menu_item_new ( FolksIndividual *individual); +GtkWidget * empathy_individual_add_menu_item_new (EmpathyIndividualMenu *self, + FolksIndividual *individual); G_END_DECLS diff --git a/libempathy-gtk/empathy-individual-store-channel.c b/libempathy-gtk/empathy-individual-store-channel.c new file mode 100644 index 00000000..75284602 --- /dev/null +++ b/libempathy-gtk/empathy-individual-store-channel.c @@ -0,0 +1,341 @@ +/* + * Copyright (C) 2005-2007 Imendio AB + * Copyright (C) 2007-2011 Collabora Ltd. + * + * 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., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * Authors: Mikael Hallendal + * Martyn Russell + * Xavier Claessens + * Travis Reitter + */ + +#include "config.h" + +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "empathy-individual-store-channel.h" + +#include "empathy-ui-utils.h" +#include "empathy-gtk-enum-types.h" + +#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT +#include + +struct _EmpathyIndividualStoreChannelPriv +{ + TpChannel *channel; + + /* TpContact => FolksIndividual + * We keep the individuals we have added to the store so can easily remove + * them when their TpContact leaves the channel. */ + GHashTable *individuals; +}; + +enum +{ + PROP_0, + PROP_CHANNEL, +}; + + +G_DEFINE_TYPE (EmpathyIndividualStoreChannel, empathy_individual_store_channel, + EMPATHY_TYPE_INDIVIDUAL_STORE); + +static void +add_members (EmpathyIndividualStoreChannel *self, + GPtrArray *members) +{ + EmpathyIndividualStore *store = (EmpathyIndividualStore *) self; + guint i; + + for (i = 0; i < members->len; i++) + { + TpContact *contact = g_ptr_array_index (members, i); + FolksIndividual *individual; + + if (g_hash_table_lookup (self->priv->individuals, contact) != NULL) + continue; + + individual = empathy_create_individual_from_tp_contact (contact); + + DEBUG ("%s joined channel %s", tp_contact_get_identifier (contact), + tp_proxy_get_object_path (self->priv->channel)); + + individual_store_add_individual_and_connect (store, individual); + + /* Pass the individual reference to the hash table */ + g_hash_table_insert (self->priv->individuals, g_object_ref (contact), + individual); + } +} + +static void +remove_members (EmpathyIndividualStoreChannel *self, + GPtrArray *members) +{ + EmpathyIndividualStore *store = (EmpathyIndividualStore *) self; + guint i; + + for (i = 0; i < members->len; i++) + { + TpContact *contact = g_ptr_array_index (members, i); + FolksIndividual *individual; + + individual = g_hash_table_lookup (self->priv->individuals, contact); + if (individual == NULL) + continue; + + DEBUG ("%s left channel %s", tp_contact_get_identifier (contact), + tp_proxy_get_object_path (self->priv->channel)); + + individual_store_remove_individual_and_disconnect (store, individual); + + g_hash_table_remove (self->priv->individuals, contact); + } +} + +static void +group_contacts_changed_cb (TpChannel *channel, + GPtrArray *added, + GPtrArray *removed, + GPtrArray *local_pending, + GPtrArray *remote_pending, + TpContact *actor, + GHashTable *details, + gpointer user_data) +{ + EmpathyIndividualStoreChannel *self = EMPATHY_INDIVIDUAL_STORE_CHANNEL ( + user_data); + + remove_members (self, removed); + add_members (self, added); +} + +static void +channel_prepare_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + EmpathyIndividualStoreChannel *self = user_data; + TpChannel *channel = (TpChannel *) source; + GError *error = NULL; + GPtrArray *members; + + if (!tp_proxy_prepare_finish (source, result, &error)) + { + DEBUG ("Failed to prepare %s: %s", tp_proxy_get_object_path (source), + error->message); + + g_error_free (error); + } + + /* Add initial members */ + members = tp_channel_group_dup_members_contacts (channel); + if (members != NULL) + { + add_members (self, members); + g_ptr_array_unref (members); + } + + tp_g_signal_connect_object (channel, "group-contacts-changed", + G_CALLBACK (group_contacts_changed_cb), self, 0); +} + +static void +individual_store_channel_set_individual_channel ( + EmpathyIndividualStoreChannel *self, + TpChannel *channel) +{ + GQuark features[] = { TP_CHANNEL_FEATURE_CONTACTS, 0 }; + + g_assert (self->priv->channel == NULL); /* construct only */ + self->priv->channel = g_object_ref (channel); + + tp_proxy_prepare_async (channel, features, channel_prepare_cb, self); +} + +static void +individual_store_channel_dispose (GObject *object) +{ + EmpathyIndividualStoreChannel *self = EMPATHY_INDIVIDUAL_STORE_CHANNEL ( + object); + EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (object); + GHashTableIter iter; + gpointer v; + + g_hash_table_iter_init (&iter, self->priv->individuals); + while (g_hash_table_iter_next (&iter, NULL, &v)) + { + FolksIndividual *individual = v; + + empathy_individual_store_disconnect_individual (store, individual); + } + + tp_clear_pointer (&self->priv->individuals, g_hash_table_unref); + g_clear_object (&self->priv->channel); + + G_OBJECT_CLASS (empathy_individual_store_channel_parent_class)->dispose ( + object); +} + +static void +individual_store_channel_get_property (GObject *object, + guint param_id, + GValue *value, + GParamSpec *pspec) +{ + EmpathyIndividualStoreChannel *self = EMPATHY_INDIVIDUAL_STORE_CHANNEL ( + object); + + switch (param_id) + { + case PROP_CHANNEL: + g_value_set_object (value, self->priv->channel); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; +} + +static void +individual_store_channel_set_property (GObject *object, + guint param_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (param_id) + { + case PROP_CHANNEL: + individual_store_channel_set_individual_channel ( + EMPATHY_INDIVIDUAL_STORE_CHANNEL (object), + g_value_get_object (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; +} + +static void +individual_store_channel_reload_individuals (EmpathyIndividualStore *store) +{ + EmpathyIndividualStoreChannel *self = EMPATHY_INDIVIDUAL_STORE_CHANNEL ( + store); + GPtrArray *members; + GList *list, *l; + + /* remove all. The list returned by g_hash_table_get_keys() is valid until + * the hash table is modified so we can't remove the contact directly in the + * iteration. */ + members = g_ptr_array_new_with_free_func (g_object_unref); + + list = g_hash_table_get_keys (self->priv->individuals); + for (l = list; l != NULL; l = g_list_next (l)) + { + g_ptr_array_add (members, g_object_ref (l->data)); + } + + remove_members (self, members); + + g_list_free (list); + g_ptr_array_unref (members); + + /* re-add members */ + members = tp_channel_group_dup_members_contacts (self->priv->channel); + if (members == NULL) + return; + + add_members (self, members); + g_ptr_array_unref (members); +} + +static gboolean +individual_store_channel_initial_loading (EmpathyIndividualStore *store) +{ + EmpathyIndividualStoreChannel *self = EMPATHY_INDIVIDUAL_STORE_CHANNEL ( + store); + + return !tp_proxy_is_prepared (self->priv->channel, + TP_CHANNEL_FEATURE_CONTACTS); +} + +static void +empathy_individual_store_channel_class_init ( + EmpathyIndividualStoreChannelClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + EmpathyIndividualStoreClass *store_class = EMPATHY_INDIVIDUAL_STORE_CLASS ( + klass); + + object_class->dispose = individual_store_channel_dispose; + object_class->get_property = individual_store_channel_get_property; + object_class->set_property = individual_store_channel_set_property; + + store_class->reload_individuals = individual_store_channel_reload_individuals; + store_class->initial_loading = individual_store_channel_initial_loading; + + g_object_class_install_property (object_class, + PROP_CHANNEL, + g_param_spec_object ("individual-channel", + "Individual channel", + "Individual channel", + TP_TYPE_CHANNEL, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); + + g_type_class_add_private (object_class, + sizeof (EmpathyIndividualStoreChannelPriv)); +} + +static void +empathy_individual_store_channel_init (EmpathyIndividualStoreChannel *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL, EmpathyIndividualStoreChannelPriv); + + self->priv->individuals = g_hash_table_new_full (NULL, NULL, g_object_unref, + g_object_unref); +} + +EmpathyIndividualStoreChannel * +empathy_individual_store_channel_new (TpChannel *channel) +{ + g_return_val_if_fail (TP_IS_CHANNEL (channel), NULL); + + return g_object_new (EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL, + "individual-channel", channel, NULL); +} + +TpChannel * +empathy_individual_store_channel_get_channel ( + EmpathyIndividualStoreChannel *self) +{ + g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE_CHANNEL (self), FALSE); + + return self->priv->channel; +} diff --git a/libempathy-gtk/empathy-individual-store-channel.h b/libempathy-gtk/empathy-individual-store-channel.h new file mode 100644 index 00000000..468effe2 --- /dev/null +++ b/libempathy-gtk/empathy-individual-store-channel.h @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2005-2007 Imendio AB + * Copyright (C) 2007-2011 Collabora Ltd. + * + * 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., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * Authors: Mikael Hallendal + * Martyn Russell + * Xavier Claessens + * Travis Reitter + */ + +#ifndef __EMPATHY_INDIVIDUAL_STORE_CHANNEL_H__ +#define __EMPATHY_INDIVIDUAL_STORE_CHANNEL_H__ + +#include + +#include + +G_BEGIN_DECLS +#define EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL (empathy_individual_store_channel_get_type ()) +#define EMPATHY_INDIVIDUAL_STORE_CHANNEL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL, EmpathyIndividualStoreChannel)) +#define EMPATHY_INDIVIDUAL_STORE_CHANNEL_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL, EmpathyIndividualStoreChannelClass)) +#define EMPATHY_IS_INDIVIDUAL_STORE_CHANNEL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL)) +#define EMPATHY_IS_INDIVIDUAL_STORE_CHANNEL_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL)) +#define EMPATHY_INDIVIDUAL_STORE_CHANNEL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL, EmpathyIndividualStoreChannelClass)) + +typedef struct _EmpathyIndividualStoreChannel EmpathyIndividualStoreChannel; +typedef struct _EmpathyIndividualStoreChannelClass EmpathyIndividualStoreChannelClass; +typedef struct _EmpathyIndividualStoreChannelPriv EmpathyIndividualStoreChannelPriv; + +struct _EmpathyIndividualStoreChannel +{ + EmpathyIndividualStore parent; + EmpathyIndividualStoreChannelPriv *priv; +}; + +struct _EmpathyIndividualStoreChannelClass +{ + EmpathyIndividualStoreClass parent_class; +}; + +GType empathy_individual_store_channel_get_type (void) G_GNUC_CONST; + +EmpathyIndividualStoreChannel * empathy_individual_store_channel_new ( + TpChannel *channel); + +TpChannel * empathy_individual_store_channel_get_channel ( + EmpathyIndividualStoreChannel *store); + +G_END_DECLS +#endif /* __EMPATHY_INDIVIDUAL_STORE_CHANNEL_H__ */ diff --git a/libempathy-gtk/empathy-individual-store-manager.c b/libempathy-gtk/empathy-individual-store-manager.c new file mode 100644 index 00000000..288d9e37 --- /dev/null +++ b/libempathy-gtk/empathy-individual-store-manager.c @@ -0,0 +1,328 @@ +/* + * Copyright (C) 2005-2007 Imendio AB + * Copyright (C) 2007-2011 Collabora Ltd. + * + * 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., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * Authors: Mikael Hallendal + * Martyn Russell + * Xavier Claessens + * Travis Reitter + */ + +#include "config.h" + +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include "empathy-individual-store-manager.h" + +#include "empathy-ui-utils.h" +#include "empathy-gtk-enum-types.h" + +#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT +#include + +struct _EmpathyIndividualStoreManagerPriv +{ + EmpathyIndividualManager *manager; + gboolean setup_idle_id; +}; + +enum +{ + PROP_0, + PROP_INDIVIDUAL_MANAGER, +}; + + +G_DEFINE_TYPE (EmpathyIndividualStoreManager, empathy_individual_store_manager, + EMPATHY_TYPE_INDIVIDUAL_STORE); + +static void +individual_store_manager_members_changed_cb (EmpathyIndividualManager *manager, + const gchar *message, + GList *added, + GList *removed, + guint reason, + EmpathyIndividualStoreManager *self) +{ + GList *l; + EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (self); + + for (l = removed; l; l = l->next) + { + DEBUG ("Individual %s %s", + folks_individual_get_id (l->data), "removed"); + + individual_store_remove_individual_and_disconnect (store, l->data); + } + + for (l = added; l; l = l->next) + { + DEBUG ("Individual %s %s", folks_individual_get_id (l->data), "added"); + + individual_store_add_individual_and_connect (store, l->data); + } +} + +static void +individual_store_manager_groups_changed_cb (EmpathyIndividualManager *manager, + FolksIndividual *individual, + gchar *group, + gboolean is_member, + EmpathyIndividualStoreManager *self) +{ + EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (self); + + DEBUG ("Updating groups for individual %s", + folks_individual_get_id (individual)); + + /* We do this to make sure the groups are correct, if not, we + * would have to check the groups already set up for each + * contact and then see what has been updated. + */ + empathy_individual_store_refresh_individual (store, individual); +} + +static gboolean +individual_store_manager_manager_setup (gpointer user_data) +{ + EmpathyIndividualStoreManager *self = user_data; + GList *individuals; + + /* Signal connection. */ + + DEBUG ("handling individual renames unimplemented"); + + g_signal_connect (self->priv->manager, + "members-changed", + G_CALLBACK (individual_store_manager_members_changed_cb), self); + + g_signal_connect (self->priv->manager, + "groups-changed", + G_CALLBACK (individual_store_manager_groups_changed_cb), self); + + /* Add contacts already created. */ + individuals = empathy_individual_manager_get_members (self->priv->manager); + if (individuals != NULL) + { + individual_store_manager_members_changed_cb (self->priv->manager, "initial add", + individuals, NULL, 0, self); + g_list_free (individuals); + } + + self->priv->setup_idle_id = 0; + return FALSE; +} + +static void +individual_store_manager_set_individual_manager ( + EmpathyIndividualStoreManager *self, + EmpathyIndividualManager *manager) +{ + g_assert (self->priv->manager == NULL); /* construct only */ + self->priv->manager = g_object_ref (manager); + + /* Let a chance to have all properties set before populating */ + self->priv->setup_idle_id = g_idle_add ( + individual_store_manager_manager_setup, self); +} + +static void +individual_store_manager_member_renamed_cb (EmpathyIndividualManager *manager, + FolksIndividual *old_individual, + FolksIndividual *new_individual, + guint reason, + const gchar *message, + EmpathyIndividualStoreManager *self) +{ + EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (self); + + DEBUG ("Individual %s renamed to %s", + folks_individual_get_id (old_individual), + folks_individual_get_id (new_individual)); + + /* remove old contact */ + individual_store_remove_individual_and_disconnect (store, old_individual); + + /* add the new contact */ + individual_store_add_individual_and_connect (store, new_individual); +} + +static void +individual_store_manager_dispose (GObject *object) +{ + EmpathyIndividualStoreManager *self = EMPATHY_INDIVIDUAL_STORE_MANAGER ( + object); + EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (object); + GList *individuals, *l; + + individuals = empathy_individual_manager_get_members (self->priv->manager); + for (l = individuals; l; l = l->next) + { + empathy_individual_store_disconnect_individual (store, + FOLKS_INDIVIDUAL (l->data)); + } + tp_clear_pointer (&individuals, g_list_free); + + if (self->priv->manager != NULL) + { + g_signal_handlers_disconnect_by_func (self->priv->manager, + G_CALLBACK (individual_store_manager_member_renamed_cb), object); + g_signal_handlers_disconnect_by_func (self->priv->manager, + G_CALLBACK (individual_store_manager_members_changed_cb), object); + g_signal_handlers_disconnect_by_func (self->priv->manager, + G_CALLBACK (individual_store_manager_groups_changed_cb), object); + g_clear_object (&self->priv->manager); + } + + if (self->priv->setup_idle_id != 0) + { + g_source_remove (self->priv->setup_idle_id); + self->priv->setup_idle_id = 0; + } + + G_OBJECT_CLASS (empathy_individual_store_manager_parent_class)->dispose ( + object); +} + +static void +individual_store_manager_get_property (GObject *object, + guint param_id, + GValue *value, + GParamSpec *pspec) +{ + EmpathyIndividualStoreManager *self = EMPATHY_INDIVIDUAL_STORE_MANAGER ( + object); + + switch (param_id) + { + case PROP_INDIVIDUAL_MANAGER: + g_value_set_object (value, self->priv->manager); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; +} + +static void +individual_store_manager_set_property (GObject *object, + guint param_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (param_id) + { + case PROP_INDIVIDUAL_MANAGER: + individual_store_manager_set_individual_manager ( + EMPATHY_INDIVIDUAL_STORE_MANAGER (object), + g_value_get_object (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; +} + +static void +individual_store_manager_reload_individuals (EmpathyIndividualStore *store) +{ + EmpathyIndividualStoreManager *self = EMPATHY_INDIVIDUAL_STORE_MANAGER ( + store); + GList *contacts; + + contacts = empathy_individual_manager_get_members (self->priv->manager); + + individual_store_manager_members_changed_cb (self->priv->manager, + "re-adding members: toggled group visibility", + contacts, NULL, 0, self); + + g_list_free (contacts); +} + +static gboolean +individual_store_manager_initial_loading (EmpathyIndividualStore *store) +{ + EmpathyIndividualStoreManager *self = EMPATHY_INDIVIDUAL_STORE_MANAGER ( + store); + + return self->priv->setup_idle_id != 0; +} + +static void +empathy_individual_store_manager_class_init ( + EmpathyIndividualStoreManagerClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + EmpathyIndividualStoreClass *store_class = EMPATHY_INDIVIDUAL_STORE_CLASS ( + klass); + + object_class->dispose = individual_store_manager_dispose; + object_class->get_property = individual_store_manager_get_property; + object_class->set_property = individual_store_manager_set_property; + + store_class->reload_individuals = individual_store_manager_reload_individuals; + store_class->initial_loading = individual_store_manager_initial_loading; + + g_object_class_install_property (object_class, + PROP_INDIVIDUAL_MANAGER, + g_param_spec_object ("individual-manager", + "Individual manager", + "Individual manager", + EMPATHY_TYPE_INDIVIDUAL_MANAGER, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); + + g_type_class_add_private (object_class, + sizeof (EmpathyIndividualStoreManagerPriv)); +} + +static void +empathy_individual_store_manager_init (EmpathyIndividualStoreManager *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER, EmpathyIndividualStoreManagerPriv); +} + +EmpathyIndividualStoreManager * +empathy_individual_store_manager_new (EmpathyIndividualManager *manager) +{ + g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_MANAGER (manager), NULL); + + return g_object_new (EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER, + "individual-manager", manager, NULL); +} + +EmpathyIndividualManager * +empathy_individual_store_manager_get_manager ( + EmpathyIndividualStoreManager *self) +{ + g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE_MANAGER (self), FALSE); + + return self->priv->manager; +} diff --git a/libempathy-gtk/empathy-individual-store-manager.h b/libempathy-gtk/empathy-individual-store-manager.h new file mode 100644 index 00000000..7656b50e --- /dev/null +++ b/libempathy-gtk/empathy-individual-store-manager.h @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2005-2007 Imendio AB + * Copyright (C) 2007-2011 Collabora Ltd. + * + * 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., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * Authors: Mikael Hallendal + * Martyn Russell + * Xavier Claessens + * Travis Reitter + */ + +#ifndef __EMPATHY_INDIVIDUAL_STORE_MANAGER_H__ +#define __EMPATHY_INDIVIDUAL_STORE_MANAGER_H__ + +#include + +#include + +#include + +G_BEGIN_DECLS +#define EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER (empathy_individual_store_manager_get_type ()) +#define EMPATHY_INDIVIDUAL_STORE_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER, EmpathyIndividualStoreManager)) +#define EMPATHY_INDIVIDUAL_STORE_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER, EmpathyIndividualStoreManagerClass)) +#define EMPATHY_IS_INDIVIDUAL_STORE_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER)) +#define EMPATHY_IS_INDIVIDUAL_STORE_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER)) +#define EMPATHY_INDIVIDUAL_STORE_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER, EmpathyIndividualStoreManagerClass)) + +typedef struct _EmpathyIndividualStoreManager EmpathyIndividualStoreManager; +typedef struct _EmpathyIndividualStoreManagerClass EmpathyIndividualStoreManagerClass; +typedef struct _EmpathyIndividualStoreManagerPriv EmpathyIndividualStoreManagerPriv; + +struct _EmpathyIndividualStoreManager +{ + EmpathyIndividualStore parent; + EmpathyIndividualStoreManagerPriv *priv; +}; + +struct _EmpathyIndividualStoreManagerClass +{ + EmpathyIndividualStoreClass parent_class; +}; + +GType empathy_individual_store_manager_get_type (void) G_GNUC_CONST; + +EmpathyIndividualStoreManager *empathy_individual_store_manager_new ( + EmpathyIndividualManager *manager); + +EmpathyIndividualManager *empathy_individual_store_manager_get_manager ( + EmpathyIndividualStoreManager *store); + +G_END_DECLS +#endif /* __EMPATHY_INDIVIDUAL_STORE_MANAGER_H__ */ diff --git a/libempathy-gtk/empathy-individual-store.c b/libempathy-gtk/empathy-individual-store.c index e7b859f9..aa3f6334 100644 --- a/libempathy-gtk/empathy-individual-store.c +++ b/libempathy-gtk/empathy-individual-store.c @@ -38,7 +38,6 @@ #include #include -#include #include "empathy-individual-store.h" #include "empathy-ui-utils.h" @@ -57,18 +56,14 @@ /* Time in seconds after connecting which we wait before active users are enabled */ #define ACTIVE_USER_WAIT_TO_ENABLE_TIME 5 -#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyIndividualStore) -typedef struct +struct _EmpathyIndividualStorePriv { - EmpathyIndividualManager *manager; gboolean show_avatars; gboolean show_groups; gboolean is_compact; gboolean show_protocols; - gboolean show_active; EmpathyIndividualStoreSort sort_criterium; guint inhibit_active; - guint setup_idle_id; gboolean dispose_has_run; GHashTable *status_icons; /* List of owned GCancellables for each pending avatar load operation */ @@ -77,7 +72,8 @@ typedef struct GHashTable *folks_individual_cache; /* Hash: char *groupname -> GtkTreeIter * */ GHashTable *empathy_group_cache; -} EmpathyIndividualStorePriv; + gboolean show_active; +}; typedef struct { @@ -90,7 +86,6 @@ typedef struct enum { PROP_0, - PROP_INDIVIDUAL_MANAGER, PROP_SHOW_AVATARS, PROP_SHOW_PROTOCOLS, PROP_SHOW_GROUPS, @@ -148,12 +143,12 @@ while_finish: } static void -add_individual_to_store (GtkTreeStore *self, +add_individual_to_store (GtkTreeStore *store, GtkTreeIter *iter, GtkTreeIter *parent, FolksIndividual *individual) { - EmpathyIndividualStorePriv *priv = GET_PRIV (self); + EmpathyIndividualStore *self = EMPATHY_INDIVIDUAL_STORE (store); gboolean can_audio_call, can_video_call; const gchar * const *types; GQueue *queue; @@ -163,7 +158,7 @@ add_individual_to_store (GtkTreeStore *self, types = individual_get_client_types (individual); - gtk_tree_store_insert_with_values (self, iter, parent, 0, + gtk_tree_store_insert_with_values (store, iter, parent, 0, EMPATHY_INDIVIDUAL_STORE_COL_NAME, folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (individual)), EMPATHY_INDIVIDUAL_STORE_COL_INDIVIDUAL, individual, @@ -174,7 +169,7 @@ add_individual_to_store (GtkTreeStore *self, EMPATHY_INDIVIDUAL_STORE_COL_CLIENT_TYPES, types, -1); - queue = g_hash_table_lookup (priv->folks_individual_cache, individual); + queue = g_hash_table_lookup (self->priv->folks_individual_cache, individual); if (queue) { g_queue_push_tail (queue, gtk_tree_iter_copy (iter)); @@ -183,7 +178,7 @@ add_individual_to_store (GtkTreeStore *self, { queue = g_queue_new (); g_queue_push_tail (queue, gtk_tree_iter_copy (iter)); - g_hash_table_insert (priv->folks_individual_cache, individual, + g_hash_table_insert (self->priv->folks_individual_cache, individual, queue); } } @@ -196,14 +191,13 @@ individual_store_get_group (EmpathyIndividualStore *self, gboolean *created, gboolean is_fake_group) { - EmpathyIndividualStorePriv *priv = GET_PRIV (self); GtkTreeModel *model; GtkTreeIter iter_group; GtkTreeIter iter_separator; GtkTreeIter *iter; model = GTK_TREE_MODEL (self); - iter = g_hash_table_lookup (priv->empathy_group_cache, name); + iter = g_hash_table_lookup (self->priv->empathy_group_cache, name); if (iter == NULL) { @@ -220,7 +214,7 @@ individual_store_get_group (EmpathyIndividualStore *self, EMPATHY_INDIVIDUAL_STORE_COL_IS_FAKE_GROUP, is_fake_group, -1); - g_hash_table_insert (priv->empathy_group_cache, g_strdup (name), + g_hash_table_insert (self->priv->empathy_group_cache, g_strdup (name), gtk_tree_iter_copy (&iter_group)); if (iter_group_to_set) @@ -261,12 +255,11 @@ static GList * individual_store_find_contact (EmpathyIndividualStore *self, FolksIndividual *individual) { - EmpathyIndividualStorePriv *priv = GET_PRIV (self); GQueue *row_refs_queue; GList *i; GList *iters_list = NULL; - row_refs_queue = g_hash_table_lookup (priv->folks_individual_cache, + row_refs_queue = g_hash_table_lookup (self->priv->folks_individual_cache, individual); if (!row_refs_queue) return NULL; @@ -288,16 +281,16 @@ free_iters (GList *iters) g_list_free (iters); } -static void -individual_store_remove_individual (EmpathyIndividualStore *self, +void +empathy_individual_store_remove_individual (EmpathyIndividualStore *self, FolksIndividual *individual) { - EmpathyIndividualStorePriv *priv = GET_PRIV (self); GtkTreeModel *model; GQueue *row_refs; GList *l; - row_refs = g_hash_table_lookup (priv->folks_individual_cache, individual); + row_refs = g_hash_table_lookup (self->priv->folks_individual_cache, + individual); if (!row_refs) return; @@ -318,9 +311,9 @@ individual_store_remove_individual (EmpathyIndividualStore *self, { gchar *group_name; gtk_tree_model_get (model, &parent, - EMPATHY_CONTACT_LIST_STORE_COL_NAME, &group_name, + EMPATHY_INDIVIDUAL_STORE_COL_NAME, &group_name, -1); - g_hash_table_remove (priv->empathy_group_cache, + g_hash_table_remove (self->priv->empathy_group_cache, group_name); gtk_tree_store_remove (GTK_TREE_STORE (self), &parent); } @@ -330,24 +323,21 @@ individual_store_remove_individual (EmpathyIndividualStore *self, } } - g_hash_table_remove (priv->folks_individual_cache, individual); + g_hash_table_remove (self->priv->folks_individual_cache, individual); } -static void -individual_store_add_individual (EmpathyIndividualStore *self, +void +empathy_individual_store_add_individual (EmpathyIndividualStore *self, FolksIndividual *individual) { - EmpathyIndividualStorePriv *priv; GtkTreeIter iter; GeeIterator *group_iter = NULL; - priv = GET_PRIV (self); - if (EMP_STR_EMPTY (folks_alias_details_get_alias ( FOLKS_ALIAS_DETAILS (individual)))) return; - if (priv->show_groups) + if (self->priv->show_groups) { GeeSet *group_set = NULL; @@ -375,7 +365,7 @@ individual_store_add_individual (EmpathyIndividualStore *self, tp_connection_parse_object_path (connection, &protocol_name, NULL); } - if (!priv->show_groups) + if (!self->priv->show_groups) parent = NULL; else if (!tp_strdiff (protocol_name, "local-xmpp")) { @@ -414,7 +404,7 @@ individual_store_add_individual (EmpathyIndividualStore *self, } g_clear_object (&group_iter); - if (priv->show_groups && + if (self->priv->show_groups && folks_favourite_details_get_is_favourite ( FOLKS_FAVOURITE_DETAILS (individual))) { @@ -539,7 +529,7 @@ individual_store_contact_active_cb (ShowActiveData *data) DEBUG ("Individual'%s' active timeout, removing item", folks_alias_details_get_alias ( FOLKS_ALIAS_DETAILS (data->individual))); - individual_store_remove_individual (data->self, data->individual); + empathy_individual_store_remove_individual (data->self, data->individual); } DEBUG ("Individual'%s' no longer active", @@ -594,12 +584,10 @@ individual_avatar_pixbuf_received_cb (FolksIndividual *individual, /* Free things */ if (data->store != NULL) { - EmpathyIndividualStorePriv *priv = GET_PRIV (data->store); - g_object_remove_weak_pointer (G_OBJECT (data->store), (gpointer *) &data->store); - priv->avatar_cancellables = g_list_remove (priv->avatar_cancellables, - data->cancellable); + data->store->priv->avatar_cancellables = g_list_remove ( + data->store->priv->avatar_cancellables, data->cancellable); } tp_clear_object (&pixbuf); @@ -611,7 +599,6 @@ static void individual_store_contact_update (EmpathyIndividualStore *self, FolksIndividual *individual) { - EmpathyIndividualStorePriv *priv; ShowActiveData *data; GtkTreeModel *model; GList *iters, *l; @@ -626,8 +613,6 @@ individual_store_contact_update (EmpathyIndividualStore *self, GdkPixbuf *pixbuf_status; LoadAvatarData *load_avatar_data; - priv = GET_PRIV (self); - model = GTK_TREE_MODEL (self); iters = individual_store_find_contact (self, individual); @@ -649,9 +634,9 @@ individual_store_contact_update (EmpathyIndividualStore *self, DEBUG ("Individual'%s' in list:NO, should be:YES", folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (individual))); - individual_store_add_individual (self, individual); + empathy_individual_store_add_individual (self, individual); - if (priv->show_active) + if (self->priv->show_active) { do_set_active = TRUE; @@ -671,7 +656,7 @@ individual_store_contact_update (EmpathyIndividualStore *self, } /* Is this really an update or an online/offline. */ - if (priv->show_active) + if (self->priv->show_active) { if (was_online != now_online) { @@ -694,7 +679,7 @@ individual_store_contact_update (EmpathyIndividualStore *self, set_model = TRUE; } - if (priv->show_avatars && !priv->is_compact) + if (self->priv->show_avatars && !self->priv->is_compact) { show_avatar = TRUE; } @@ -706,8 +691,9 @@ individual_store_contact_update (EmpathyIndividualStore *self, (gpointer *) &load_avatar_data->store); load_avatar_data->cancellable = g_cancellable_new (); - priv->avatar_cancellables = g_list_prepend (priv->avatar_cancellables, - load_avatar_data->cancellable); + self->priv->avatar_cancellables = g_list_prepend ( + self->priv->avatar_cancellables, load_avatar_data->cancellable); + empathy_pixbuf_avatar_from_individual_scaled_async (individual, 32, 32, load_avatar_data->cancellable, (GAsyncReadyCallback) individual_avatar_pixbuf_received_cb, @@ -737,7 +723,7 @@ individual_store_contact_update (EmpathyIndividualStore *self, EMPATHY_INDIVIDUAL_STORE_COL_STATUS, folks_presence_details_get_presence_message ( FOLKS_PRESENCE_DETAILS (individual)), - EMPATHY_INDIVIDUAL_STORE_COL_COMPACT, priv->is_compact, + EMPATHY_INDIVIDUAL_STORE_COL_COMPACT, self->priv->is_compact, EMPATHY_INDIVIDUAL_STORE_COL_IS_GROUP, FALSE, EMPATHY_INDIVIDUAL_STORE_COL_IS_ONLINE, now_online, EMPATHY_INDIVIDUAL_STORE_COL_IS_SEPARATOR, FALSE, @@ -747,7 +733,7 @@ individual_store_contact_update (EmpathyIndividualStore *self, -1); } - if (priv->show_active && do_set_active) + if (self->priv->show_active && do_set_active) { individual_store_contact_set_active (self, individual, do_set_active, do_set_refresh); @@ -878,8 +864,8 @@ individual_store_favourites_changed_cb (FolksIndividual *individual, folks_favourite_details_get_is_favourite ( FOLKS_FAVOURITE_DETAILS (individual)) ? "now" : "no longer"); - individual_store_remove_individual (self, individual); - individual_store_add_individual (self, individual); + empathy_individual_store_remove_individual (self, individual); + empathy_individual_store_add_individual (self, individual); } void @@ -888,7 +874,7 @@ individual_store_add_individual_and_connect (EmpathyIndividualStore *self, { GeeSet *empty_set = gee_set_empty (G_TYPE_NONE, NULL, NULL); - individual_store_add_individual (self, individual); + empathy_individual_store_add_individual (self, individual); g_signal_connect (individual, "notify::avatar", (GCallback) individual_store_individual_updated_cb, self); @@ -909,8 +895,8 @@ individual_store_add_individual_and_connect (EmpathyIndividualStore *self, g_clear_object (&empty_set); } -static void -individual_store_disconnect_individual (EmpathyIndividualStore *self, +void +empathy_individual_store_disconnect_individual (EmpathyIndividualStore *self, FolksIndividual *individual) { GeeSet *empty_set = gee_set_empty (G_TYPE_NONE, NULL, NULL); @@ -933,172 +919,36 @@ individual_store_remove_individual_and_disconnect ( EmpathyIndividualStore *self, FolksIndividual *individual) { - individual_store_disconnect_individual (self, individual); - individual_store_remove_individual (self, individual); -} - -static void -individual_store_members_changed_cb (EmpathyIndividualManager *manager, - const gchar *message, - GList *added, - GList *removed, - guint reason, - EmpathyIndividualStore *self) -{ - GList *l; - - for (l = added; l; l = l->next) - { - DEBUG ("Individual %s %s", folks_individual_get_id (l->data), "added"); - - individual_store_add_individual_and_connect (self, l->data); - } - for (l = removed; l; l = l->next) - { - DEBUG ("Individual %s %s", - folks_individual_get_id (l->data), "removed"); - - individual_store_remove_individual_and_disconnect (self, l->data); - } -} - -static void -individual_store_groups_changed_cb (EmpathyIndividualManager *manager, - FolksIndividual *individual, - gchar *group, - gboolean is_member, - EmpathyIndividualStore *self) -{ - EmpathyIndividualStorePriv *priv; - gboolean show_active; - - priv = GET_PRIV (self); - - DEBUG ("Updating groups for individual %s", - folks_individual_get_id (individual)); - - /* We do this to make sure the groups are correct, if not, we - * would have to check the groups already set up for each - * contact and then see what has been updated. - */ - show_active = priv->show_active; - priv->show_active = FALSE; - individual_store_remove_individual (self, individual); - individual_store_add_individual (self, individual); - priv->show_active = show_active; -} - -static gboolean -individual_store_manager_setup (gpointer user_data) -{ - EmpathyIndividualStore *self = user_data; - EmpathyIndividualStorePriv *priv = GET_PRIV (self); - GList *individuals; - - /* Signal connection. */ - - /* TODO: implement */ - DEBUG ("handling individual renames unimplemented"); - - g_signal_connect (priv->manager, - "members-changed", - G_CALLBACK (individual_store_members_changed_cb), self); - - g_signal_connect (priv->manager, - "groups-changed", - G_CALLBACK (individual_store_groups_changed_cb), self); - - /* Add contacts already created. */ - individuals = empathy_individual_manager_get_members (priv->manager); - if (individuals != NULL && FOLKS_IS_INDIVIDUAL (individuals->data)) - { - individual_store_members_changed_cb (priv->manager, "initial add", - individuals, NULL, 0, self); - g_list_free (individuals); - } - - priv->setup_idle_id = 0; - return FALSE; -} - -static void -individual_store_set_individual_manager (EmpathyIndividualStore *self, - EmpathyIndividualManager *manager) -{ - EmpathyIndividualStorePriv *priv = GET_PRIV (self); - - priv->manager = g_object_ref (manager); - - /* Let a chance to have all properties set before populating */ - priv->setup_idle_id = g_idle_add (individual_store_manager_setup, self); -} - -static void -individual_store_member_renamed_cb (EmpathyIndividualManager *manager, - FolksIndividual *old_individual, - FolksIndividual *new_individual, - guint reason, - const gchar *message, - EmpathyIndividualStore *self) -{ - DEBUG ("Individual %s renamed to %s", - folks_individual_get_id (old_individual), - folks_individual_get_id (new_individual)); - - /* add the new contact */ - individual_store_add_individual_and_connect (self, new_individual); - - /* remove old contact */ - individual_store_remove_individual_and_disconnect (self, old_individual); + empathy_individual_store_disconnect_individual (self, individual); + empathy_individual_store_remove_individual (self, individual); } static void individual_store_dispose (GObject *object) { - EmpathyIndividualStorePriv *priv = GET_PRIV (object); - GList *individuals, *l; + EmpathyIndividualStore *self = EMPATHY_INDIVIDUAL_STORE (object); + GList *l; - if (priv->dispose_has_run) + if (self->priv->dispose_has_run) return; - priv->dispose_has_run = TRUE; + self->priv->dispose_has_run = TRUE; /* Cancel any pending avatar load operations */ - for (l = priv->avatar_cancellables; l != NULL; l = l->next) + for (l = self->priv->avatar_cancellables; l != NULL; l = l->next) { /* The cancellables are freed in individual_avatar_pixbuf_received_cb() */ g_cancellable_cancel (G_CANCELLABLE (l->data)); } - g_list_free (priv->avatar_cancellables); - - individuals = empathy_individual_manager_get_members (priv->manager); - for (l = individuals; l; l = l->next) - { - individual_store_disconnect_individual (EMPATHY_INDIVIDUAL_STORE (object), - FOLKS_INDIVIDUAL (l->data)); - } - g_list_free (individuals); - - g_signal_handlers_disconnect_by_func (priv->manager, - G_CALLBACK (individual_store_member_renamed_cb), object); - g_signal_handlers_disconnect_by_func (priv->manager, - G_CALLBACK (individual_store_members_changed_cb), object); - g_signal_handlers_disconnect_by_func (priv->manager, - G_CALLBACK (individual_store_groups_changed_cb), object); - g_object_unref (priv->manager); - - if (priv->inhibit_active) - { - g_source_remove (priv->inhibit_active); - } + g_list_free (self->priv->avatar_cancellables); - if (priv->setup_idle_id != 0) + if (self->priv->inhibit_active) { - g_source_remove (priv->setup_idle_id); + g_source_remove (self->priv->inhibit_active); } - g_hash_table_destroy (priv->status_icons); - g_hash_table_destroy (priv->folks_individual_cache); - g_hash_table_destroy (priv->empathy_group_cache); + g_hash_table_unref (self->priv->status_icons); + g_hash_table_unref (self->priv->folks_individual_cache); + g_hash_table_unref (self->priv->empathy_group_cache); G_OBJECT_CLASS (empathy_individual_store_parent_class)->dispose (object); } @@ -1108,29 +958,24 @@ individual_store_get_property (GObject *object, GValue *value, GParamSpec *pspec) { - EmpathyIndividualStorePriv *priv; - - priv = GET_PRIV (object); + EmpathyIndividualStore *self = EMPATHY_INDIVIDUAL_STORE (object); switch (param_id) { - case PROP_INDIVIDUAL_MANAGER: - g_value_set_object (value, priv->manager); - break; case PROP_SHOW_AVATARS: - g_value_set_boolean (value, priv->show_avatars); + g_value_set_boolean (value, self->priv->show_avatars); break; case PROP_SHOW_PROTOCOLS: - g_value_set_boolean (value, priv->show_protocols); + g_value_set_boolean (value, self->priv->show_protocols); break; case PROP_SHOW_GROUPS: - g_value_set_boolean (value, priv->show_groups); + g_value_set_boolean (value, self->priv->show_groups); break; case PROP_IS_COMPACT: - g_value_set_boolean (value, priv->is_compact); + g_value_set_boolean (value, self->priv->is_compact); break; case PROP_SORT_CRITERIUM: - g_value_set_enum (value, priv->sort_criterium); + g_value_set_enum (value, self->priv->sort_criterium); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); @@ -1146,10 +991,6 @@ individual_store_set_property (GObject *object, { switch (param_id) { - case PROP_INDIVIDUAL_MANAGER: - individual_store_set_individual_manager (EMPATHY_INDIVIDUAL_STORE - (object), g_value_get_object (value)); - break; case PROP_SHOW_AVATARS: empathy_individual_store_set_show_avatars (EMPATHY_INDIVIDUAL_STORE (object), g_value_get_boolean (value)); @@ -1185,13 +1026,6 @@ empathy_individual_store_class_init (EmpathyIndividualStoreClass *klass) object_class->get_property = individual_store_get_property; object_class->set_property = individual_store_set_property; - g_object_class_install_property (object_class, - PROP_INDIVIDUAL_MANAGER, - g_param_spec_object ("individual-manager", - "The individual manager", - "The individual manager", - EMPATHY_TYPE_INDIVIDUAL_MANAGER, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_SHOW_AVATARS, g_param_spec_boolean ("show-avatars", @@ -1484,7 +1318,6 @@ individual_store_name_sort_func (GtkTreeModel *model, static void individual_store_setup (EmpathyIndividualStore *self) { - EmpathyIndividualStorePriv *priv; GType types[] = { GDK_TYPE_PIXBUF, /* Status pixbuf */ GDK_TYPE_PIXBUF, /* Avatar pixbuf */ @@ -1505,8 +1338,6 @@ individual_store_setup (EmpathyIndividualStore *self) G_TYPE_UINT, /* Event count */ }; - priv = GET_PRIV (self); - gtk_tree_store_set_column_types (GTK_TREE_STORE (self), EMPATHY_INDIVIDUAL_STORE_COL_COUNT, types); @@ -1518,19 +1349,17 @@ individual_store_setup (EmpathyIndividualStore *self) EMPATHY_INDIVIDUAL_STORE_COL_STATUS, individual_store_state_sort_func, self, NULL); - priv->sort_criterium = EMPATHY_INDIVIDUAL_STORE_SORT_NAME; - empathy_individual_store_set_sort_criterium (self, priv->sort_criterium); + self->priv->sort_criterium = EMPATHY_INDIVIDUAL_STORE_SORT_NAME; + + empathy_individual_store_set_sort_criterium (self, + self->priv->sort_criterium); } static gboolean individual_store_inhibit_active_cb (EmpathyIndividualStore *self) { - EmpathyIndividualStorePriv *priv; - - priv = GET_PRIV (self); - - priv->show_active = TRUE; - priv->inhibit_active = 0; + self->priv->show_active = TRUE; + self->priv->inhibit_active = 0; return FALSE; } @@ -1546,56 +1375,30 @@ g_queue_free_full_iter (gpointer data) static void empathy_individual_store_init (EmpathyIndividualStore *self) { - EmpathyIndividualStorePriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EMPATHY_TYPE_INDIVIDUAL_STORE, EmpathyIndividualStorePriv); - self->priv = priv; - priv->show_avatars = TRUE; - priv->show_groups = TRUE; - priv->show_protocols = FALSE; - priv->inhibit_active = + self->priv->show_avatars = TRUE; + self->priv->show_groups = TRUE; + self->priv->show_protocols = FALSE; + self->priv->inhibit_active = g_timeout_add_seconds (ACTIVE_USER_WAIT_TO_ENABLE_TIME, (GSourceFunc) individual_store_inhibit_active_cb, self); - priv->status_icons = + self->priv->status_icons = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); - priv->folks_individual_cache = g_hash_table_new_full (NULL, NULL, NULL, + self->priv->folks_individual_cache = g_hash_table_new_full (NULL, NULL, NULL, g_queue_free_full_iter); - priv->empathy_group_cache = g_hash_table_new_full (g_str_hash, + self->priv->empathy_group_cache = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) gtk_tree_iter_free); individual_store_setup (self); } -EmpathyIndividualStore * -empathy_individual_store_new (EmpathyIndividualManager *manager) -{ - g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_MANAGER (manager), NULL); - - return g_object_new (EMPATHY_TYPE_INDIVIDUAL_STORE, - "individual-manager", manager, NULL); -} - -EmpathyIndividualManager * -empathy_individual_store_get_manager (EmpathyIndividualStore *self) -{ - EmpathyIndividualStorePriv *priv; - - g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), FALSE); - - priv = GET_PRIV (self); - - return priv->manager; -} - gboolean empathy_individual_store_get_show_avatars (EmpathyIndividualStore *self) { - EmpathyIndividualStorePriv *priv; - g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), TRUE); - priv = GET_PRIV (self); - - return priv->show_avatars; + return self->priv->show_avatars; } static gboolean @@ -1604,14 +1407,11 @@ individual_store_update_list_mode_foreach (GtkTreeModel *model, GtkTreeIter *iter, EmpathyIndividualStore *self) { - EmpathyIndividualStorePriv *priv; gboolean show_avatar = FALSE; FolksIndividual *individual; GdkPixbuf *pixbuf_status; - priv = GET_PRIV (self); - - if (priv->show_avatars && !priv->is_compact) + if (self->priv->show_avatars && !self->priv->is_compact) { show_avatar = TRUE; } @@ -1630,7 +1430,7 @@ individual_store_update_list_mode_foreach (GtkTreeModel *model, gtk_tree_store_set (GTK_TREE_STORE (self), iter, EMPATHY_INDIVIDUAL_STORE_COL_ICON_STATUS, pixbuf_status, EMPATHY_INDIVIDUAL_STORE_COL_PIXBUF_AVATAR_VISIBLE, show_avatar, - EMPATHY_INDIVIDUAL_STORE_COL_COMPACT, priv->is_compact, -1); + EMPATHY_INDIVIDUAL_STORE_COL_COMPACT, self->priv->is_compact, -1); g_object_unref (individual); @@ -1641,14 +1441,11 @@ void empathy_individual_store_set_show_avatars (EmpathyIndividualStore *self, gboolean show_avatars) { - EmpathyIndividualStorePriv *priv; GtkTreeModel *model; g_return_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self)); - priv = GET_PRIV (self); - - priv->show_avatars = show_avatars; + self->priv->show_avatars = show_avatars; model = GTK_TREE_MODEL (self); @@ -1662,27 +1459,20 @@ empathy_individual_store_set_show_avatars (EmpathyIndividualStore *self, gboolean empathy_individual_store_get_show_protocols (EmpathyIndividualStore *self) { - EmpathyIndividualStorePriv *priv; - g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), TRUE); - priv = GET_PRIV (self); - - return priv->show_protocols; + return self->priv->show_protocols; } void empathy_individual_store_set_show_protocols (EmpathyIndividualStore *self, gboolean show_protocols) { - EmpathyIndividualStorePriv *priv; GtkTreeModel *model; g_return_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self)); - priv = GET_PRIV (self); - - priv->show_protocols = show_protocols; + self->priv->show_protocols = show_protocols; model = GTK_TREE_MODEL (self); @@ -1696,33 +1486,29 @@ empathy_individual_store_set_show_protocols (EmpathyIndividualStore *self, gboolean empathy_individual_store_get_show_groups (EmpathyIndividualStore *self) { - EmpathyIndividualStorePriv *priv; - g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), TRUE); - priv = GET_PRIV (self); - - return priv->show_groups; + return self->priv->show_groups; } void empathy_individual_store_set_show_groups (EmpathyIndividualStore *self, gboolean show_groups) { - EmpathyIndividualStorePriv *priv; + EmpathyIndividualStoreClass *klass; g_return_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self)); - priv = GET_PRIV (self); + klass = EMPATHY_INDIVIDUAL_STORE_GET_CLASS ( self); - if (priv->show_groups == show_groups) + if (self->priv->show_groups == show_groups) { return; } - priv->show_groups = show_groups; + self->priv->show_groups = show_groups; - if (priv->setup_idle_id == 0) + if (!klass->initial_loading (self)) { /* Remove all contacts and add them back, not optimized but * that's the easy way :) @@ -1730,19 +1516,13 @@ empathy_individual_store_set_show_groups (EmpathyIndividualStore *self, * This is only done if there's not a pending setup idle * callback, otherwise it will race and the contacts will get * added twice */ - GList *contacts; gtk_tree_store_clear (GTK_TREE_STORE (self)); /* Also clear the cache */ - g_hash_table_remove_all (priv->folks_individual_cache); - g_hash_table_remove_all (priv->empathy_group_cache); - - contacts = empathy_individual_manager_get_members (priv->manager); + g_hash_table_remove_all (self->priv->folks_individual_cache); + g_hash_table_remove_all (self->priv->empathy_group_cache); - individual_store_members_changed_cb (priv->manager, - "re-adding members: toggled group visibility", - contacts, NULL, 0, self); - g_list_free (contacts); + klass->reload_individuals (self); } g_object_notify (G_OBJECT (self), "show-groups"); @@ -1751,27 +1531,20 @@ empathy_individual_store_set_show_groups (EmpathyIndividualStore *self, gboolean empathy_individual_store_get_is_compact (EmpathyIndividualStore *self) { - EmpathyIndividualStorePriv *priv; - g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), TRUE); - priv = GET_PRIV (self); - - return priv->is_compact; + return self->priv->is_compact; } void empathy_individual_store_set_is_compact (EmpathyIndividualStore *self, gboolean is_compact) { - EmpathyIndividualStorePriv *priv; GtkTreeModel *model; g_return_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self)); - priv = GET_PRIV (self); - - priv->is_compact = is_compact; + self->priv->is_compact = is_compact; model = GTK_TREE_MODEL (self); @@ -1785,26 +1558,18 @@ empathy_individual_store_set_is_compact (EmpathyIndividualStore *self, EmpathyIndividualStoreSort empathy_individual_store_get_sort_criterium (EmpathyIndividualStore *self) { - EmpathyIndividualStorePriv *priv; - g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), 0); - priv = GET_PRIV (self); - - return priv->sort_criterium; + return self->priv->sort_criterium; } void empathy_individual_store_set_sort_criterium (EmpathyIndividualStore *self, EmpathyIndividualStoreSort sort_criterium) { - EmpathyIndividualStorePriv *priv; - g_return_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self)); - priv = GET_PRIV (self); - - priv->sort_criterium = sort_criterium; + self->priv->sort_criterium = sort_criterium; switch (sort_criterium) { @@ -1908,7 +1673,6 @@ individual_store_get_individual_status_icon_with_icon_name ( const gchar *status_icon_name) { GdkPixbuf *pixbuf_status; - EmpathyIndividualStorePriv *priv; const gchar *protocol_name = NULL; gchar *icon_name = NULL; GeeSet *personas; @@ -1917,8 +1681,6 @@ individual_store_get_individual_status_icon_with_icon_name ( EmpathyContact *contact = NULL; gboolean show_protocols_here; - priv = GET_PRIV (self); - personas = folks_individual_get_personas (individual); iter = gee_iterable_iterator (GEE_ITERABLE (personas)); while (gee_iterator_next (iter)) @@ -1934,7 +1696,7 @@ individual_store_get_individual_status_icon_with_icon_name ( } g_clear_object (&iter); - show_protocols_here = (priv->show_protocols && (contact_count == 1)); + show_protocols_here = (self->priv->show_protocols && (contact_count == 1)); if (show_protocols_here) { contact = empathy_contact_dup_from_folks_individual (individual); @@ -1958,7 +1720,7 @@ individual_store_get_individual_status_icon_with_icon_name ( icon_name = g_strdup_printf ("%s", status_icon_name); } - pixbuf_status = g_hash_table_lookup (priv->status_icons, icon_name); + pixbuf_status = g_hash_table_lookup (self->priv->status_icons, icon_name); if (pixbuf_status == NULL) { @@ -1969,7 +1731,7 @@ individual_store_get_individual_status_icon_with_icon_name ( if (pixbuf_status != NULL) { /* pass the reference to the hash table */ - g_hash_table_insert (priv->status_icons, + g_hash_table_insert (self->priv->status_icons, g_strdup (icon_name), pixbuf_status); } } @@ -1998,3 +1760,16 @@ empathy_individual_store_get_individual_status_icon ( return pixbuf_status; } + +void +empathy_individual_store_refresh_individual (EmpathyIndividualStore *self, + FolksIndividual *individual) +{ + gboolean show_active; + + show_active = self->priv->show_active; + self->priv->show_active = FALSE; + empathy_individual_store_remove_individual (self, individual); + empathy_individual_store_add_individual (self, individual); + self->priv->show_active = show_active; +} diff --git a/libempathy-gtk/empathy-individual-store.h b/libempathy-gtk/empathy-individual-store.h index 418761ea..61fd4b8d 100644 --- a/libempathy-gtk/empathy-individual-store.h +++ b/libempathy-gtk/empathy-individual-store.h @@ -29,8 +29,6 @@ #include -#include - G_BEGIN_DECLS #define EMPATHY_TYPE_INDIVIDUAL_STORE (empathy_individual_store_get_type ()) #define EMPATHY_INDIVIDUAL_STORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_INDIVIDUAL_STORE, EmpathyIndividualStore)) @@ -38,8 +36,10 @@ G_BEGIN_DECLS #define EMPATHY_IS_INDIVIDUAL_STORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_INDIVIDUAL_STORE)) #define EMPATHY_IS_INDIVIDUAL_STORE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_INDIVIDUAL_STORE)) #define EMPATHY_INDIVIDUAL_STORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INDIVIDUAL_STORE, EmpathyIndividualStoreClass)) + typedef struct _EmpathyIndividualStore EmpathyIndividualStore; typedef struct _EmpathyIndividualStoreClass EmpathyIndividualStoreClass; +typedef struct _EmpathyIndividualStorePriv EmpathyIndividualStorePriv; typedef enum { @@ -76,23 +76,20 @@ typedef enum struct _EmpathyIndividualStore { GtkTreeStore parent; - gpointer priv; + EmpathyIndividualStorePriv *priv; }; struct _EmpathyIndividualStoreClass { GtkTreeStoreClass parent_class; + + void (*reload_individuals) (EmpathyIndividualStore *self); + gboolean (*initial_loading) (EmpathyIndividualStore *self); }; GType empathy_individual_store_get_type (void) G_GNUC_CONST; -EmpathyIndividualStore *empathy_individual_store_new ( - EmpathyIndividualManager *manager); - -EmpathyIndividualManager *empathy_individual_store_get_manager ( - EmpathyIndividualStore *store); - gboolean empathy_individual_store_get_show_avatars ( EmpathyIndividualStore *store); @@ -145,5 +142,20 @@ void individual_store_remove_individual_and_disconnect ( EmpathyIndividualStore *self, FolksIndividual *individual); +/* protected */ + +void empathy_individual_store_disconnect_individual ( + EmpathyIndividualStore *self, + FolksIndividual *individual); + +void empathy_individual_store_remove_individual (EmpathyIndividualStore *self, + FolksIndividual *individual); + +void empathy_individual_store_add_individual (EmpathyIndividualStore *self, + FolksIndividual *individual); + +void empathy_individual_store_refresh_individual (EmpathyIndividualStore *self, + FolksIndividual *individual); + G_END_DECLS #endif /* __EMPATHY_INDIVIDUAL_STORE_H__ */ diff --git a/libempathy-gtk/empathy-individual-view.c b/libempathy-gtk/empathy-individual-view.c index 88397ae7..64aaf5a0 100644 --- a/libempathy-gtk/empathy-individual-view.c +++ b/libempathy-gtk/empathy-individual-view.c @@ -74,6 +74,7 @@ typedef struct gboolean show_offline; gboolean show_untrusted; + gboolean show_uninteresting; GtkTreeModelFilter *filter; GtkWidget *search_widget; @@ -114,6 +115,7 @@ enum PROP_INDIVIDUAL_FEATURES, PROP_SHOW_OFFLINE, PROP_SHOW_UNTRUSTED, + PROP_SHOW_UNINTERESTING, }; /* TODO: re-add DRAG_TYPE_CONTACT_ID, for the case that we're dragging around @@ -1532,7 +1534,7 @@ expand_idle_foreach_cb (GtkTreeModel *model, EMPATHY_INDIVIDUAL_STORE_COL_NAME, &name, -1); - if (is_group == FALSE) + if (!is_group) { g_free (name); return FALSE; @@ -1541,9 +1543,9 @@ expand_idle_foreach_cb (GtkTreeModel *model, priv = GET_PRIV (self); if (g_hash_table_lookup_extended (priv->expand_groups, name, NULL, - &should_expand) == TRUE) + &should_expand)) { - if (GPOINTER_TO_INT (should_expand) == TRUE) + if (GPOINTER_TO_INT (should_expand)) gtk_tree_view_expand_row (GTK_TREE_VIEW (self), path, FALSE); else gtk_tree_view_collapse_row (GTK_TREE_VIEW (self), path); @@ -1622,8 +1624,8 @@ individual_view_row_has_child_toggled_cb (GtkTreeModel *model, * gtk_tree_model_filter_refilter (). We add the rows to expand/contract to * a hash table, and expand or contract them as appropriate all at once in * an idle handler which iterates over all the group rows. */ - if (g_hash_table_lookup_extended (priv->expand_groups, name, NULL, - &will_expand) == FALSE || + if (!g_hash_table_lookup_extended (priv->expand_groups, name, NULL, + &will_expand) || GPOINTER_TO_INT (will_expand) != should_expand) { g_hash_table_insert (priv->expand_groups, g_strdup (name), @@ -1701,7 +1703,7 @@ individual_view_is_visible_individual (EmpathyIndividualView *self, EmpathyLiveSearch *live = EMPATHY_LIVE_SEARCH (priv->search_widget); GeeSet *personas; GeeIterator *iter; - gboolean is_favorite, contains_interesting_persona = FALSE; + gboolean is_favorite; /* Always display individuals having pending events */ if (event_count > 0) @@ -1709,32 +1711,38 @@ individual_view_is_visible_individual (EmpathyIndividualView *self, /* We're only giving the visibility wrt filtering here, not things like * presence. */ - if (priv->show_untrusted == FALSE && + if (!priv->show_untrusted && folks_individual_get_trust_level (individual) == FOLKS_TRUST_LEVEL_NONE) { return FALSE; } - /* Hide all individuals which consist entirely of uninteresting personas */ - personas = folks_individual_get_personas (individual); - iter = gee_iterable_iterator (GEE_ITERABLE (personas)); - while (!contains_interesting_persona && gee_iterator_next (iter)) + if (!priv->show_uninteresting) { - FolksPersona *persona = gee_iterator_get (iter); + gboolean contains_interesting_persona = FALSE; - if (empathy_folks_persona_is_interesting (persona)) - contains_interesting_persona = TRUE; + /* Hide all individuals which consist entirely of uninteresting + * personas */ + personas = folks_individual_get_personas (individual); + iter = gee_iterable_iterator (GEE_ITERABLE (personas)); + while (!contains_interesting_persona && gee_iterator_next (iter)) + { + FolksPersona *persona = gee_iterator_get (iter); - g_clear_object (&persona); - } - g_clear_object (&iter); + if (empathy_folks_persona_is_interesting (persona)) + contains_interesting_persona = TRUE; - if (contains_interesting_persona == FALSE) - return FALSE; + g_clear_object (&persona); + } + g_clear_object (&iter); + + if (!contains_interesting_persona) + return FALSE; + } is_favorite = folks_favourite_details_get_is_favourite ( FOLKS_FAVOURITE_DETAILS (individual)); - if (is_searching == FALSE) { + if (!is_searching) { if (is_favorite && is_fake_group && !tp_strdiff (group, EMPATHY_INDIVIDUAL_STORE_FAVORITE)) /* Always display favorite contacts in the favorite group */ @@ -1813,7 +1821,7 @@ individual_view_filter_visible_func (GtkTreeModel *model, g_free (group); /* FIXME: Work around bgo#626552/bgo#621076 */ - if (visible == TRUE) + if (visible) { GtkTreePath *path = gtk_tree_model_get_path (model, iter); individual_view_verify_group_visibility (self, path); @@ -1854,7 +1862,7 @@ individual_view_filter_visible_func (GtkTreeModel *model, g_free (group); /* show group if it has at least one visible contact in it */ - if (visible == TRUE) + if (visible) return TRUE; } @@ -2046,7 +2054,7 @@ individual_view_finalize (GObject *object) if (priv->expand_groups_idle_handler != 0) g_source_remove (priv->expand_groups_idle_handler); - g_hash_table_destroy (priv->expand_groups); + g_hash_table_unref (priv->expand_groups); G_OBJECT_CLASS (empathy_individual_view_parent_class)->finalize (object); } @@ -2078,6 +2086,9 @@ individual_view_get_property (GObject *object, case PROP_SHOW_UNTRUSTED: g_value_set_boolean (value, priv->show_untrusted); break; + case PROP_SHOW_UNINTERESTING: + g_value_set_boolean (value, priv->show_uninteresting); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; @@ -2112,6 +2123,9 @@ individual_view_set_property (GObject *object, empathy_individual_view_set_show_untrusted (view, g_value_get_boolean (value)); break; + case PROP_SHOW_UNINTERESTING: + empathy_individual_view_set_show_uninteresting (view, + g_value_get_boolean (value)); default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; @@ -2198,6 +2212,13 @@ empathy_individual_view_class_init (EmpathyIndividualViewClass *klass) "Whether the view should display untrusted individuals; " "those who could not be who they say they are.", TRUE, G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_SHOW_UNINTERESTING, + g_param_spec_boolean ("show-uninteresting", + "Show Uninteresting Individuals", + "Whether the view should not filter out individuals using " + "empathy_folks_persona_is_interesting.", + FALSE, G_PARAM_READWRITE)); g_type_class_add_private (object_class, sizeof (EmpathyIndividualViewPriv)); } @@ -2211,6 +2232,7 @@ empathy_individual_view_init (EmpathyIndividualView *view) view->priv = priv; priv->show_untrusted = TRUE; + priv->show_uninteresting = FALSE; /* Get saved group states. */ empathy_contact_groups_get_all (); @@ -2452,12 +2474,12 @@ got_avatar (GObject *source_object, { FolksIndividual *individual = FOLKS_INDIVIDUAL (source_object); EmpathyIndividualView *view = user_data; + EmpathyIndividualViewPriv *priv = GET_PRIV (view); GdkPixbuf *avatar; EmpathyIndividualManager *manager; gchar *text; GtkWindow *parent; GeeSet *personas; - GeeIterator *iter; guint persona_count = 0; gboolean can_block; GError *error = NULL; @@ -2476,21 +2498,31 @@ got_avatar (GObject *source_object, * so we still display the remove dialog. */ personas = folks_individual_get_personas (individual); - iter = gee_iterable_iterator (GEE_ITERABLE (personas)); - /* If we have more than one TpfPersona, display a different message - * ensuring the user knows that *all* of the meta-contacts' personas will - * be removed. */ - while (persona_count < 2 && gee_iterator_next (iter)) + if (priv->show_uninteresting) { - FolksPersona *persona = gee_iterator_get (iter); + persona_count = gee_collection_get_size (GEE_COLLECTION (personas)); + } + else + { + GeeIterator *iter; - if (empathy_folks_persona_is_interesting (persona)) - persona_count++; + iter = gee_iterable_iterator (GEE_ITERABLE (personas)); + while (persona_count < 2 && gee_iterator_next (iter)) + { + FolksPersona *persona = gee_iterator_get (iter); - g_clear_object (&persona); + if (empathy_folks_persona_is_interesting (persona)) + persona_count++; + + g_clear_object (&persona); + } + g_clear_object (&iter); } - g_clear_object (&iter); + + /* If we have more than one TpfPersona, display a different message + * ensuring the user knows that *all* of the meta-contacts' personas will + * be removed. */ if (persona_count < 2) { @@ -2595,6 +2627,9 @@ empathy_individual_view_get_individual_menu (EmpathyIndividualView *view) if (individual == NULL) return NULL; + if (!empathy_folks_individual_contains_contact (individual)) + goto out; + /* If any of the Individual's personas can be removed, add an option to * remove. This will act as a best-effort option. If any Personas cannot be * removed from the server, then this option will just be inactive upon @@ -2615,7 +2650,8 @@ empathy_individual_view_get_individual_menu (EmpathyIndividualView *view) } g_clear_object (&iter); - menu = empathy_individual_menu_new (individual, priv->individual_features); + menu = empathy_individual_menu_new (individual, priv->individual_features, + priv->store); /* Remove contact */ if ((priv->view_features & @@ -2649,6 +2685,7 @@ empathy_individual_view_get_individual_menu (EmpathyIndividualView *view) g_signal_connect (menu, "link-contacts-activated", (GCallback) individual_menu_link_contacts_activated_cb, view); +out: g_object_unref (individual); return menu; @@ -2878,3 +2915,19 @@ empathy_individual_view_select_first (EmpathyIndividualView *self) gtk_tree_selection_select_iter (selection, &iter); } } + +void +empathy_individual_view_set_show_uninteresting (EmpathyIndividualView *self, + gboolean show_uninteresting) +{ + EmpathyIndividualViewPriv *priv; + + g_return_if_fail (EMPATHY_IS_INDIVIDUAL_VIEW (self)); + + priv = GET_PRIV (self); + + priv->show_uninteresting = show_uninteresting; + + g_object_notify (G_OBJECT (self), "show-uninteresting"); + gtk_tree_model_filter_refilter (priv->filter); +} diff --git a/libempathy-gtk/empathy-individual-view.h b/libempathy-gtk/empathy-individual-view.h index 4d52ef53..00506daf 100644 --- a/libempathy-gtk/empathy-individual-view.h +++ b/libempathy-gtk/empathy-individual-view.h @@ -119,6 +119,10 @@ gboolean empathy_individual_view_get_show_untrusted ( void empathy_individual_view_set_show_untrusted (EmpathyIndividualView *self, gboolean show_untrusted); +void empathy_individual_view_set_show_uninteresting ( + EmpathyIndividualView *view, + gboolean show_uninteresting); + gboolean empathy_individual_view_is_searching ( EmpathyIndividualView *view); diff --git a/libempathy-gtk/empathy-individual-widget.c b/libempathy-gtk/empathy-individual-widget.c index 215d3218..5a1c559d 100644 --- a/libempathy-gtk/empathy-individual-widget.c +++ b/libempathy-gtk/empathy-individual-widget.c @@ -189,7 +189,7 @@ update_weak_contact (EmpathyIndividualWidget *self) presence_type_cur = folks_presence_details_get_presence_type ( presence); - if (folks_presence_details_typecmp ( + if (tp_contact == NULL || folks_presence_details_typecmp ( presence_type_cur, presence_type) > 0) { presence_type = presence_type_cur; @@ -213,6 +213,21 @@ update_weak_contact (EmpathyIndividualWidget *self) } } +static void +add_row (GtkGrid *grid, + guint row, + GtkWidget *title, + GtkWidget *value) +{ + gtk_grid_attach (grid, title, 0, row, 1, 1); + gtk_misc_set_alignment (GTK_MISC (title), 0, 0.5); + gtk_widget_show (title); + + gtk_grid_attach (grid, value, 1, row, 1, 1); + gtk_misc_set_alignment (GTK_MISC (value), 0, 0.5); + gtk_widget_show (value); +} + static guint details_update_show (EmpathyIndividualWidget *self, TpContact *contact) @@ -220,6 +235,9 @@ details_update_show (EmpathyIndividualWidget *self, EmpathyIndividualWidgetPriv *priv = GET_PRIV (self); GList *info, *l; guint n_rows = 0; + GtkWidget *channels_label; + TpConnection *conn; + TpAccount *account; info = tp_contact_get_contact_info (contact); info = g_list_sort (info, (GCompareFunc) empathy_contact_info_field_cmp); @@ -229,7 +247,7 @@ details_update_show (EmpathyIndividualWidget *self, gchar *title; const gchar *value; EmpathyContactInfoFormatFunc format; - GtkWidget *w; + GtkWidget *title_widget, *value_widget; if (field->field_value == NULL || field->field_value[0] == NULL) continue; @@ -243,38 +261,54 @@ details_update_show (EmpathyIndividualWidget *self, continue; } + /* Skip empty field */ + if (tp_str_empty (value)) + continue; + /* Add Title */ title = empathy_contact_info_field_label (field->field_name, field->parameters); - w = gtk_label_new (title); - g_free (title); - gtk_grid_attach (GTK_GRID (priv->grid_details), - w, 0, n_rows, 1, 1); - gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5); - gtk_widget_show (w); + title_widget = gtk_label_new (title); /* Add Value */ - w = gtk_label_new (value); + value_widget = gtk_label_new (value); if (format != NULL) { gchar *markup; markup = format (field->field_value); - gtk_label_set_markup (GTK_LABEL (w), markup); + gtk_label_set_markup (GTK_LABEL (value_widget), markup); g_free (markup); } - gtk_label_set_selectable (GTK_LABEL (w), + gtk_label_set_selectable (GTK_LABEL (value_widget), (priv->flags & EMPATHY_INDIVIDUAL_WIDGET_FOR_TOOLTIP) ? FALSE : TRUE); - gtk_grid_attach (GTK_GRID (priv->grid_details), - w, 1, n_rows, 1, 1); - gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5); - gtk_widget_show (w); + add_row (GTK_GRID (priv->grid_details), n_rows, title_widget, + value_widget); + + n_rows++; + } + + conn = tp_contact_get_connection (contact); + account = tp_connection_get_account (conn); + + channels_label = empathy_contact_info_create_channel_list_label (account, + info, n_rows); + + if (channels_label != NULL) + { + GtkWidget *title_widget; + + title_widget = gtk_label_new (_("Channels:")); + + add_row (GTK_GRID (priv->grid_details), n_rows, title_widget, + channels_label); n_rows++; } + g_list_free (info); return n_rows; @@ -1289,7 +1323,7 @@ alias_presence_avatar_favourite_set_up (EmpathyIndividualWidget *self, current_row++; /* Presence */ - priv->hbox_presence = gtk_hbox_new (FALSE, 6); + priv->hbox_presence = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); /* Presence image */ image = gtk_image_new_from_stock (GTK_STOCK_MISSING_IMAGE, @@ -1444,7 +1478,7 @@ add_persona (EmpathyIndividualWidget *self, gtk_widget_show (label); /* Pack the protocol icon with the account name in an hbox */ - hbox = GTK_BOX (gtk_hbox_new (FALSE, 6)); + hbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6)); account_label = gtk_label_new (NULL); gtk_label_set_selectable (GTK_LABEL (account_label), @@ -1506,7 +1540,7 @@ add_persona (EmpathyIndividualWidget *self, gtk_widget_show (GTK_WIDGET (grid)); /* Pack a separator after the grid */ - separator = gtk_hseparator_new (); + separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); g_object_set_data (G_OBJECT (grid), "separator", separator); gtk_box_pack_start (GTK_BOX (priv->vbox_individual), separator, FALSE, FALSE, 0); @@ -2054,7 +2088,7 @@ finalize (GObject *object) { EmpathyIndividualWidgetPriv *priv = GET_PRIV (object); - g_hash_table_destroy (priv->persona_grids); + g_hash_table_unref (priv->persona_grids); G_OBJECT_CLASS (empathy_individual_widget_parent_class)->finalize (object); } diff --git a/libempathy-gtk/empathy-live-search.h b/libempathy-gtk/empathy-live-search.h index 9f068396..3d0a8734 100644 --- a/libempathy-gtk/empathy-live-search.h +++ b/libempathy-gtk/empathy-live-search.h @@ -26,8 +26,6 @@ #include -#include "empathy-contact-list-store.h" - G_BEGIN_DECLS #define EMPATHY_TYPE_LIVE_SEARCH (empathy_live_search_get_type ()) diff --git a/libempathy-gtk/empathy-log-window.c b/libempathy-gtk/empathy-log-window.c index 10ea8af5..af375f1b 100644 --- a/libempathy-gtk/empathy-log-window.c +++ b/libempathy-gtk/empathy-log-window.c @@ -603,6 +603,7 @@ empathy_log_window_init (EmpathyLogWindow *self) GFile *gfile; GtkWidget *vbox, *accounts, *search, *label, *closeitem; GtkWidget *scrolledwindow_events; + gchar *uri; self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EMPATHY_TYPE_LOG_WINDOW, EmpathyLogWindowPriv); @@ -656,7 +657,7 @@ empathy_log_window_init (EmpathyLogWindow *self) G_CALLBACK (gtk_widget_destroy), self); /* Account chooser for chats */ - vbox = gtk_vbox_new (FALSE, 3); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3); self->priv->account_chooser = empathy_account_chooser_new (); account_chooser = EMPATHY_ACCOUNT_CHOOSER (self->priv->account_chooser); @@ -686,7 +687,7 @@ empathy_log_window_init (EmpathyLogWindow *self) gtk_container_add (GTK_CONTAINER (accounts), vbox); /* Search entry */ - vbox = gtk_vbox_new (FALSE, 3); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3); self->priv->search_entry = gtk_entry_new (); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (self->priv->search_entry), @@ -745,9 +746,10 @@ empathy_log_window_init (EmpathyLogWindow *self) gfile = g_file_new_for_path (filename); g_free (filename); - webkit_web_view_load_uri (WEBKIT_WEB_VIEW (self->priv->webview), - g_file_get_uri (gfile)); + uri = g_file_get_uri (gfile); + webkit_web_view_load_uri (WEBKIT_WEB_VIEW (self->priv->webview), uri); g_object_unref (gfile); + g_free (uri); /* handle all navigation externally */ g_signal_connect (self->priv->webview, "navigation-policy-decision-requested", @@ -1620,9 +1622,11 @@ model_has_date (GtkTreeModel *model, if (!g_date_compare (date, d)) { has_element = TRUE; + g_date_free (d); return TRUE; } + g_date_free (d); return FALSE; } @@ -1803,18 +1807,27 @@ populate_dates_from_search_hits (GList *accounts, if (gtk_tree_model_get_iter_first (model, &iter)) { + GDate *date; + + date = g_date_new_dmy (1, 1, -1), + gtk_list_store_prepend (store, &iter); gtk_list_store_set (store, &iter, - COL_WHEN_DATE, g_date_new_dmy (1, 1, -1), + COL_WHEN_DATE, date, COL_WHEN_TEXT, "separator", -1); + g_date_free (date); + + date = g_date_new_dmy (2, 1, -1), gtk_list_store_prepend (store, &iter); gtk_list_store_set (store, &iter, - COL_WHEN_DATE, g_date_new_dmy (2, 1, -1), + COL_WHEN_DATE, date, COL_WHEN_TEXT, _("Anytime"), -1); + g_date_free (date); + if (gtk_tree_model_iter_nth_child (model, &iter, NULL, 2)) gtk_tree_selection_select_iter (selection, &iter); } @@ -2782,6 +2795,7 @@ sort_by_date (GtkTreeModel *model, gpointer user_data) { GDate *date1, *date2; + gint result; gtk_tree_model_get (model, a, COL_WHEN_DATE, &date1, @@ -2791,7 +2805,11 @@ sort_by_date (GtkTreeModel *model, COL_WHEN_DATE, &date2, -1); - return g_date_compare (date1, date2); + result = g_date_compare (date1, date2); + + g_date_free (date1); + g_date_free (date2); + return result; } static gboolean @@ -3334,6 +3352,8 @@ log_window_get_messages_for_dates (EmpathyLogWindow *self, event_mask, subtype, self->priv->count); _tpl_action_chain_append (self->priv->chain, get_events_for_date, ctx); } + + g_date_free (d); } } } @@ -3418,18 +3438,30 @@ log_manager_got_dates_cb (GObject *manager, if (g_strcmp0 (separator, "separator") != 0) { + GDate *date; + + date = g_date_new_dmy (1, 1, -1); + gtk_list_store_prepend (store, &iter); gtk_list_store_set (store, &iter, - COL_WHEN_DATE, g_date_new_dmy (1, 1, -1), + COL_WHEN_DATE, date, COL_WHEN_TEXT, "separator", -1); + g_date_free (date); + + date = g_date_new_dmy (2, 1, -1); + gtk_list_store_prepend (store, &iter); gtk_list_store_set (store, &iter, - COL_WHEN_DATE, g_date_new_dmy (2, 1, -1), + COL_WHEN_DATE, date, COL_WHEN_TEXT, _("Anytime"), -1); + + g_date_free (date); } + + g_free (separator); } g_list_free_full (dates, g_free); @@ -3726,7 +3758,7 @@ log_window_delete_menu_clicked_cb (GtkMenuItem *menuitem, content_area = gtk_message_dialog_get_message_area ( GTK_MESSAGE_DIALOG (dialog)); - hbox = gtk_hbox_new (FALSE, 6); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); label = gtk_label_new (_("Delete from:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); diff --git a/libempathy-gtk/empathy-notify-manager.c b/libempathy-gtk/empathy-notify-manager.c index 3fcf9afb..bccc3e21 100644 --- a/libempathy-gtk/empathy-notify-manager.c +++ b/libempathy-gtk/empathy-notify-manager.c @@ -89,7 +89,7 @@ notify_manager_finalize (GObject *object) { EmpathyNotifyManagerPriv *priv = GET_PRIV (object); - g_hash_table_destroy (priv->capabilities); + g_hash_table_unref (priv->capabilities); G_OBJECT_CLASS (empathy_notify_manager_parent_class)->finalize (object); } diff --git a/libempathy-gtk/empathy-password-dialog.c b/libempathy-gtk/empathy-password-dialog.c index a06b71d9..339e0a14 100644 --- a/libempathy-gtk/empathy-password-dialog.c +++ b/libempathy-gtk/empathy-password-dialog.c @@ -28,7 +28,7 @@ #include G_DEFINE_TYPE (EmpathyPasswordDialog, empathy_password_dialog, - GTK_TYPE_MESSAGE_DIALOG) + EMPATHY_TYPE_BASE_PASSWORD_DIALOG) enum { PROP_HANDLER = 1, @@ -36,17 +36,9 @@ enum { LAST_PROPERTY, }; -typedef struct { +struct _EmpathyPasswordDialogPriv { EmpathyServerSASLHandler *handler; - - GtkWidget *entry; - GtkWidget *ticky; - GtkWidget *ok_button; - - gboolean grabbing; - - gboolean dispose_run; -} EmpathyPasswordDialogPriv; +}; static void empathy_password_dialog_get_property (GObject *object, @@ -54,12 +46,12 @@ empathy_password_dialog_get_property (GObject *object, GValue *value, GParamSpec *pspec) { - EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (object)->priv; + EmpathyPasswordDialog *self = (EmpathyPasswordDialog *) object; switch (property_id) { case PROP_HANDLER: - g_value_set_object (value, priv->handler); + g_value_set_object (value, self->priv->handler); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -73,13 +65,13 @@ empathy_password_dialog_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (object)->priv; + EmpathyPasswordDialog *self = (EmpathyPasswordDialog *) object; switch (property_id) { case PROP_HANDLER: - g_assert (priv->handler == NULL); /* construct only */ - priv->handler = g_value_dup_object (value); + g_assert (self->priv->handler == NULL); /* construct only */ + self->priv->handler = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -90,14 +82,9 @@ empathy_password_dialog_set_property (GObject *object, static void empathy_password_dialog_dispose (GObject *object) { - EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (object)->priv; - - if (priv->dispose_run) - return; + EmpathyPasswordDialog *self = (EmpathyPasswordDialog *) object; - priv->dispose_run = TRUE; - - tp_clear_object (&priv->handler); + tp_clear_object (&self->priv->handler); G_OBJECT_CLASS (empathy_password_dialog_parent_class)->dispose (object); } @@ -107,132 +94,23 @@ password_dialog_response_cb (GtkDialog *dialog, gint response, gpointer user_data) { - EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (user_data)->priv; + EmpathyPasswordDialog *self = (EmpathyPasswordDialog *) dialog; + EmpathyBasePasswordDialog *base = (EmpathyBasePasswordDialog *) dialog; if (response == GTK_RESPONSE_OK) { - empathy_server_sasl_handler_provide_password (priv->handler, - gtk_entry_get_text (GTK_ENTRY (priv->entry)), - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->ticky))); + empathy_server_sasl_handler_provide_password (self->priv->handler, + gtk_entry_get_text (GTK_ENTRY (base->entry)), + gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (base->ticky))); } else { - empathy_server_sasl_handler_cancel (priv->handler); + empathy_server_sasl_handler_cancel (self->priv->handler); } gtk_widget_destroy (GTK_WIDGET (dialog)); } -static void -clear_icon_released_cb (GtkEntry *entry, - GtkEntryIconPosition icon_pos, - GdkEvent *event, - gpointer user_data) -{ - gtk_entry_set_text (entry, ""); -} - -static void -password_entry_changed_cb (GtkEditable *entry, - gpointer user_data) -{ - EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (user_data)->priv; - const gchar *str; - - str = gtk_entry_get_text (GTK_ENTRY (entry)); - - gtk_entry_set_icon_sensitive (GTK_ENTRY (entry), - GTK_ENTRY_ICON_SECONDARY, !EMP_STR_EMPTY (str)); - - gtk_widget_set_sensitive (priv->ok_button, - !EMP_STR_EMPTY (str)); -} - -static void -password_entry_activate_cb (GtkEntry *entry, - EmpathyPasswordDialog *self) -{ - gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_OK); -} - -static gboolean -password_dialog_grab_keyboard (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (user_data)->priv; - - if (!priv->grabbing) - { - GdkDevice *device = gdk_event_get_device (event); - - if (device != NULL) - { - GdkGrabStatus status = gdk_device_grab (device, - gtk_widget_get_window (widget), - GDK_OWNERSHIP_WINDOW, - FALSE, - GDK_ALL_EVENTS_MASK, - NULL, - gdk_event_get_time (event)); - - if (status != GDK_GRAB_SUCCESS) - DEBUG ("Could not grab keyboard; grab status was %u", status); - else - priv->grabbing = TRUE; - } - else - DEBUG ("Could not get the event device!"); - } - - return FALSE; -} - -static gboolean -password_dialog_ungrab_keyboard (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (user_data)->priv; - - if (priv->grabbing) - { - GdkDevice *device = gdk_event_get_device (event); - - if (device != NULL) - { - gdk_device_ungrab (device, gdk_event_get_time (event)); - priv->grabbing = FALSE; - } - else - DEBUG ("Could not get the event device!"); - } - - return FALSE; -} - -static gboolean -password_dialog_window_state_changed (GtkWidget *widget, - GdkEventWindowState *event, - gpointer data) -{ - GdkWindowState state = gdk_window_get_state (gtk_widget_get_window (widget)); - - if (state & GDK_WINDOW_STATE_WITHDRAWN - || state & GDK_WINDOW_STATE_ICONIFIED - || state & GDK_WINDOW_STATE_FULLSCREEN - || state & GDK_WINDOW_STATE_MAXIMIZED) - { - password_dialog_ungrab_keyboard (widget, (GdkEvent *) event, data); - } - else - { - password_dialog_grab_keyboard (widget, (GdkEvent *) event, data); - } - - return FALSE; -} - static void password_dialog_handler_invalidated_cb (EmpathyServerSASLHandler *handler, EmpathyPasswordDialog *dialog) @@ -243,91 +121,28 @@ password_dialog_handler_invalidated_cb (EmpathyServerSASLHandler *handler, static void empathy_password_dialog_constructed (GObject *object) { - EmpathyPasswordDialog *dialog; - EmpathyPasswordDialogPriv *priv; - TpAccount *account; - GtkWidget *icon; - GtkBox *box; + EmpathyPasswordDialog *self = (EmpathyPasswordDialog *) object; + EmpathyBasePasswordDialog *base = (EmpathyBasePasswordDialog *) object; gchar *text; - dialog = EMPATHY_PASSWORD_DIALOG (object); - priv = dialog->priv; + G_OBJECT_CLASS (empathy_password_dialog_parent_class)->constructed (object); - g_assert (priv->handler != NULL); - - priv->grabbing = FALSE; - - account = empathy_server_sasl_handler_get_account (priv->handler); - - tp_g_signal_connect_object (priv->handler, "invalidated", + tp_g_signal_connect_object (self->priv->handler, "invalidated", G_CALLBACK (password_dialog_handler_invalidated_cb), object, 0); - /* dialog */ - gtk_dialog_add_button (GTK_DIALOG (dialog), - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); - - priv->ok_button = gtk_dialog_add_button (GTK_DIALOG (dialog), - GTK_STOCK_OK, GTK_RESPONSE_OK); - gtk_widget_set_sensitive (priv->ok_button, FALSE); - text = g_strdup_printf (_("Enter your password for account\n%s"), - tp_account_get_display_name (account)); - gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), text); + tp_account_get_display_name (base->account)); + gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (self), text); g_free (text); - gtk_window_set_icon_name (GTK_WINDOW (dialog), - GTK_STOCK_DIALOG_AUTHENTICATION); - - box = GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))); - - /* dialog icon */ - icon = gtk_image_new_from_icon_name (tp_account_get_icon_name (account), - GTK_ICON_SIZE_DIALOG); - gtk_message_dialog_set_image (GTK_MESSAGE_DIALOG (dialog), icon); - gtk_widget_show (icon); - - /* entry */ - priv->entry = gtk_entry_new (); - gtk_entry_set_visibility (GTK_ENTRY (priv->entry), FALSE); - - /* entry clear icon */ - gtk_entry_set_icon_from_stock (GTK_ENTRY (priv->entry), - GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR); - gtk_entry_set_icon_sensitive (GTK_ENTRY (priv->entry), - GTK_ENTRY_ICON_SECONDARY, FALSE); - - g_signal_connect (priv->entry, "icon-release", - G_CALLBACK (clear_icon_released_cb), NULL); - g_signal_connect (priv->entry, "changed", - G_CALLBACK (password_entry_changed_cb), dialog); - g_signal_connect (priv->entry, "activate", - G_CALLBACK (password_entry_activate_cb), dialog); - - gtk_box_pack_start (box, priv->entry, FALSE, FALSE, 0); - gtk_widget_show (priv->entry); - - /* remember password ticky box */ - priv->ticky = gtk_check_button_new_with_label (_("Remember password")); - - gtk_box_pack_start (box, priv->ticky, FALSE, FALSE, 0); - /* only show it if we actually support it */ - if (empathy_server_sasl_handler_can_save_response_somewhere (priv->handler)) - gtk_widget_show (priv->ticky); - - g_signal_connect (dialog, "response", - G_CALLBACK (password_dialog_response_cb), dialog); - g_signal_connect (dialog, "window-state-event", - G_CALLBACK (password_dialog_window_state_changed), dialog); - g_signal_connect (dialog, "map-event", - G_CALLBACK (password_dialog_grab_keyboard), dialog); - g_signal_connect (dialog, "unmap-event", - G_CALLBACK (password_dialog_ungrab_keyboard), dialog); - - gtk_widget_grab_focus (priv->entry); + if (empathy_server_sasl_handler_can_save_response_somewhere ( + self->priv->handler)) + gtk_widget_show (base->ticky); - gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS); + g_signal_connect (self, "response", + G_CALLBACK (password_dialog_response_cb), self); } static void @@ -363,5 +178,7 @@ empathy_password_dialog_new (EmpathyServerSASLHandler *handler) g_assert (EMPATHY_IS_SERVER_SASL_HANDLER (handler)); return g_object_new (EMPATHY_TYPE_PASSWORD_DIALOG, - "handler", handler, NULL); + "handler", handler, + "account", empathy_server_sasl_handler_get_account (handler), + NULL); } diff --git a/libempathy-gtk/empathy-password-dialog.h b/libempathy-gtk/empathy-password-dialog.h index 566322de..d561af14 100644 --- a/libempathy-gtk/empathy-password-dialog.h +++ b/libempathy-gtk/empathy-password-dialog.h @@ -25,20 +25,23 @@ #include +#include + #include G_BEGIN_DECLS typedef struct _EmpathyPasswordDialog EmpathyPasswordDialog; typedef struct _EmpathyPasswordDialogClass EmpathyPasswordDialogClass; +typedef struct _EmpathyPasswordDialogPriv EmpathyPasswordDialogPriv; struct _EmpathyPasswordDialogClass { - GtkMessageDialogClass parent_class; + EmpathyBasePasswordDialogClass parent_class; }; struct _EmpathyPasswordDialog { - GtkMessageDialog parent; - gpointer priv; + EmpathyBasePasswordDialog parent; + EmpathyPasswordDialogPriv *priv; }; GType empathy_password_dialog_get_type (void); diff --git a/libempathy-gtk/empathy-persona-store.c b/libempathy-gtk/empathy-persona-store.c index 70d53b3c..a48fa121 100644 --- a/libempathy-gtk/empathy-persona-store.c +++ b/libempathy-gtk/empathy-persona-store.c @@ -898,8 +898,8 @@ finalize (GObject *object) { EmpathyPersonaStorePriv *priv = GET_PRIV (object); - g_hash_table_destroy (priv->status_icons); - g_hash_table_destroy (priv->personas); + g_hash_table_unref (priv->status_icons); + g_hash_table_unref (priv->personas); G_OBJECT_CLASS (empathy_persona_store_parent_class)->finalize (object); } diff --git a/libempathy-gtk/empathy-protocol-chooser.c b/libempathy-gtk/empathy-protocol-chooser.c index 46188d49..216e4ffd 100644 --- a/libempathy-gtk/empathy-protocol-chooser.c +++ b/libempathy-gtk/empathy-protocol-chooser.c @@ -365,7 +365,7 @@ protocol_chooser_finalize (GObject *object) if (priv->protocols) { - g_hash_table_destroy (priv->protocols); + g_hash_table_unref (priv->protocols); priv->protocols = NULL; } diff --git a/libempathy-gtk/empathy-spell.c b/libempathy-gtk/empathy-spell.c index d097f1ee..fb1441e6 100644 --- a/libempathy-gtk/empathy-spell.c +++ b/libempathy-gtk/empathy-spell.c @@ -169,7 +169,7 @@ spell_notify_languages_cb (GSettings *gsettings, /* We just reset the languages list. */ if (languages != NULL) { - g_hash_table_destroy (languages); + g_hash_table_unref (languages); languages = NULL; } } diff --git a/libempathy-gtk/empathy-theme-boxes.c b/libempathy-gtk/empathy-theme-boxes.c index 7bfc313e..b9fd08d8 100644 --- a/libempathy-gtk/empathy-theme-boxes.c +++ b/libempathy-gtk/empathy-theme-boxes.c @@ -239,7 +239,7 @@ theme_boxes_maybe_append_header (EmpathyThemeBoxes *theme, /* Create a hbox for the header and resize it when the view allocation * changes */ - box = gtk_hbox_new (FALSE, 0); + box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_signal_connect_object (view, "size-allocate", G_CALLBACK (table_size_allocate_cb), box, 0); diff --git a/libempathy-gtk/empathy-theme-manager.c b/libempathy-gtk/empathy-theme-manager.c index 28cbbf3b..1233509e 100644 --- a/libempathy-gtk/empathy-theme-manager.c +++ b/libempathy-gtk/empathy-theme-manager.c @@ -188,6 +188,8 @@ theme_manager_create_irc_view (EmpathyThemeManager *manager) return theme; } +static void on_style_set_cb (GtkWidget *widget, GtkStyle *previous_style, EmpathyThemeManager *self); + static EmpathyThemeBoxes * theme_manager_create_boxes_view (EmpathyThemeManager *manager) { @@ -200,6 +202,9 @@ theme_manager_create_boxes_view (EmpathyThemeManager *manager) theme_manager_view_weak_notify_cb, &priv->boxes_views); + g_signal_connect (G_OBJECT (theme), "style-set", + G_CALLBACK (on_style_set_cb), manager); + return theme; } @@ -298,14 +303,20 @@ theme_manager_update_boxes_tags (EmpathyThemeBoxes *theme, } static void -on_style_set_cb (GtkWidget *widget, GtkStyle *previous_style, gpointer data) +on_style_set_cb (GtkWidget *widget, GtkStyle *previous_style, EmpathyThemeManager *self) { + EmpathyThemeManagerPriv *priv = GET_PRIV (self); GtkStyle *style; gchar color1[10]; gchar color2[10]; gchar color3[10]; gchar color4[10]; + /* The simple theme depends on the current GTK+ theme so it has to be + * updated if the theme changes. */ + if (tp_strdiff (priv->name, "simple")) + return; + style = gtk_widget_get_style (GTK_WIDGET (widget)); theme_manager_gdk_color_to_hex (&style->base[GTK_STATE_SELECTED], color1); @@ -333,8 +344,7 @@ theme_manager_update_boxes_theme (EmpathyThemeManager *manager, EmpathyThemeManagerPriv *priv = GET_PRIV (manager); if (strcmp (priv->name, "simple") == 0) { - g_signal_connect (G_OBJECT (theme), "style-set", - G_CALLBACK (on_style_set_cb), theme); + on_style_set_cb (GTK_WIDGET (theme), NULL, manager); } else if (strcmp (priv->name, "clean") == 0) { theme_manager_update_boxes_tags (theme, diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c index 5d9551d1..a387160d 100644 --- a/libempathy-gtk/empathy-ui-utils.c +++ b/libempathy-gtk/empathy-ui-utils.c @@ -1825,6 +1825,27 @@ file_manager_send_file_response_cb (GtkDialog *widget, gtk_widget_destroy (GTK_WIDGET (widget)); } +static gboolean +filter_cb (const GtkFileFilterInfo *filter_info, + gpointer data) +{ + /* filter out socket files */ + return tp_strdiff (filter_info->mime_type, "inode/socket"); +} + +static GtkFileFilter * +create_file_filter (void) +{ + GtkFileFilter *filter; + + filter = gtk_file_filter_new (); + + gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_MIME_TYPE, filter_cb, + NULL, NULL); + + return filter; +} + void empathy_send_file_with_file_chooser (EmpathyContact *contact) { @@ -1859,6 +1880,9 @@ empathy_send_file_with_file_chooser (EmpathyContact *contact) gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (widget), g_get_home_dir ()); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (widget), + create_file_filter ()); + g_signal_connect (widget, "response", G_CALLBACK (file_manager_send_file_response_cb), g_object_ref (contact)); diff --git a/libempathy/Makefile.am b/libempathy/Makefile.am index 1d7df961..cd030227 100644 --- a/libempathy/Makefile.am +++ b/libempathy/Makefile.am @@ -36,6 +36,7 @@ libempathy_headers = \ empathy-client-factory.h \ empathy-connection-managers.h \ empathy-connectivity.h \ + empathy-connection-aggregator.h \ empathy-contact-groups.h \ empathy-contact-list.h \ empathy-contact-manager.h \ @@ -78,6 +79,7 @@ libempathy_handwritten_source = \ empathy-client-factory.c \ empathy-connection-managers.c \ empathy-connectivity.c \ + empathy-connection-aggregator.c \ empathy-contact-groups.c \ empathy-contact-list.c \ empathy-contact-manager.c \ diff --git a/libempathy/empathy-account-settings.c b/libempathy/empathy-account-settings.c index cd6b69e8..78d60968 100644 --- a/libempathy/empathy-account-settings.c +++ b/libempathy/empathy-account-settings.c @@ -402,11 +402,11 @@ empathy_account_settings_finalize (GObject *object) g_list_free (priv->required_params); } - g_hash_table_destroy (priv->parameters); - g_hash_table_destroy (priv->param_regexps); + g_hash_table_unref (priv->parameters); + g_hash_table_unref (priv->param_regexps); empathy_account_settings_free_unset_parameters (self); - g_array_free (priv->unset_parameters, TRUE); + g_array_unref (priv->unset_parameters); G_OBJECT_CLASS (empathy_account_settings_parent_class)->finalize (object); } diff --git a/libempathy/empathy-auth-factory.c b/libempathy/empathy-auth-factory.c index d88e9bfd..fb178216 100644 --- a/libempathy/empathy-auth-factory.c +++ b/libempathy/empathy-auth-factory.c @@ -53,12 +53,20 @@ struct _EmpathyAuthFactoryPriv { EmpathyGoaAuthHandler *goa_handler; #endif /* HAVE_GOA */ + /* If an account failed to connect and user enters a new password to try, we + * store it in this hash table and will try to use it next time the account + * attemps to connect. + * + * reffed TpAccount -> owned password (gchar *) */ + GHashTable *retry_passwords; + gboolean dispose_run; }; enum { NEW_SERVER_TLS_HANDLER, NEW_SERVER_SASL_HANDLER, + AUTH_PASSWORD_FAILED, LAST_SIGNAL, }; @@ -145,6 +153,18 @@ sasl_handler_invalidated_cb (EmpathyServerSASLHandler *handler, g_hash_table_remove (priv->sasl_handlers, tp_proxy_get_object_path (channel)); } +static void +sasl_handler_auth_password_failed_cb (EmpathyServerSASLHandler *handler, + const gchar *password, + EmpathyAuthFactory *self) +{ + TpAccount *account; + + account = empathy_server_sasl_handler_get_account (handler); + + g_signal_emit (self, signals[AUTH_PASSWORD_FAILED], 0, account, password); +} + static void server_sasl_handler_ready_cb (GObject *source, GAsyncResult *res, @@ -171,6 +191,8 @@ server_sasl_handler_ready_cb (GObject *source, else { TpChannel *channel; + const gchar *password; + TpAccount *account; if (data->context != NULL) tp_handle_channels_context_accept (data->context); @@ -185,6 +207,32 @@ server_sasl_handler_ready_cb (GObject *source, tp_g_signal_connect_object (handler, "invalidated", G_CALLBACK (sasl_handler_invalidated_cb), data->self, 0); + tp_g_signal_connect_object (handler, "auth-password-failed", + G_CALLBACK (sasl_handler_auth_password_failed_cb), data->self, 0); + + /* Is there a retry password? */ + account = empathy_server_sasl_handler_get_account (handler); + + password = g_hash_table_lookup (data->self->priv->retry_passwords, + account); + if (password != NULL) + { + gboolean save; + + DEBUG ("Use retry password"); + + /* We want to save this new password only if there is another + * (wrong) password saved. The SASL handler will only save it if it + * manages to connect. */ + save = empathy_server_sasl_handler_has_password (handler); + + empathy_server_sasl_handler_provide_password (handler, + password, save); + + /* We only want to try this password once */ + g_hash_table_remove (data->self->priv->retry_passwords, account); + } + g_signal_emit (data->self, signals[NEW_SERVER_SASL_HANDLER], 0, handler); } @@ -477,6 +525,18 @@ observe_channels (TpBaseClient *client, if (empathy_sasl_channel_supports_mechanism (data->channel, "X-TELEPATHY-PASSWORD")) { + if (g_hash_table_lookup (self->priv->retry_passwords, account) != NULL) + { + DEBUG ("We have a retry password for account %s, calling Claim", + tp_account_get_path_suffix (account)); + + tp_channel_dispatch_operation_claim_with_async (dispatch_operation, + client, password_claim_cb, data); + + tp_observe_channels_context_accept (context); + return; + } + empathy_keyring_get_account_password_async (data->account, get_password_cb, data); tp_observe_channels_context_delay (context); @@ -523,9 +583,13 @@ empathy_auth_factory_init (EmpathyAuthFactory *self) self->priv->sasl_handlers = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_object_unref); + #ifdef HAVE_GOA self->priv->goa_handler = empathy_goa_auth_handler_new (); #endif /* HAVE_GOA */ + + self->priv->retry_passwords = g_hash_table_new_full (NULL, NULL, + g_object_unref, g_free); } static void @@ -587,10 +651,13 @@ empathy_auth_factory_dispose (GObject *object) priv->dispose_run = TRUE; g_hash_table_unref (priv->sasl_handlers); + #ifdef HAVE_GOA g_object_unref (priv->goa_handler); #endif /* HAVE_GOA */ + g_hash_table_unref (priv->retry_passwords); + G_OBJECT_CLASS (empathy_auth_factory_parent_class)->dispose (object); } @@ -626,6 +693,15 @@ empathy_auth_factory_class_init (EmpathyAuthFactoryClass *klass) g_cclosure_marshal_generic, G_TYPE_NONE, 1, EMPATHY_TYPE_SERVER_SASL_HANDLER); + + signals[AUTH_PASSWORD_FAILED] = + g_signal_new ("auth-password-failed", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, 0, + NULL, NULL, + g_cclosure_marshal_generic, + G_TYPE_NONE, + 2, TP_TYPE_ACCOUNT, G_TYPE_STRING); } EmpathyAuthFactory * @@ -643,3 +719,12 @@ empathy_auth_factory_register (EmpathyAuthFactory *self, { return tp_base_client_register (TP_BASE_CLIENT (self), error); } + +void +empathy_auth_factory_save_retry_password (EmpathyAuthFactory *self, + TpAccount *account, + const gchar *password) +{ + g_hash_table_insert (self->priv->retry_passwords, + g_object_ref (account), g_strdup (password)); +} diff --git a/libempathy/empathy-auth-factory.h b/libempathy/empathy-auth-factory.h index e84c13bc..5d31b1ed 100644 --- a/libempathy/empathy-auth-factory.h +++ b/libempathy/empathy-auth-factory.h @@ -64,6 +64,10 @@ EmpathyAuthFactory * empathy_auth_factory_new (TpSimpleClientFactory *factory); gboolean empathy_auth_factory_register (EmpathyAuthFactory *self, GError **error); +void empathy_auth_factory_save_retry_password (EmpathyAuthFactory *self, + TpAccount *account, + const gchar *password); + G_END_DECLS #endif /* #ifndef __EMPATHY_AUTH_FACTORY_H__*/ diff --git a/libempathy/empathy-client-factory.c b/libempathy/empathy-client-factory.c index 3794ef60..035c5695 100644 --- a/libempathy/empathy-client-factory.c +++ b/libempathy/empathy-client-factory.c @@ -152,6 +152,33 @@ empathy_client_factory_dup_connection_features (TpSimpleClientFactory *factory, feature = TP_CONNECTION_FEATURE_BALANCE; g_array_append_val (features, feature); + feature = TP_CONNECTION_FEATURE_CONTACT_BLOCKING; + g_array_append_val (features, feature); + + /* Most empathy-* may allow user to add a contact to his contact list. We + * need this property to check if the connection allows it. It's cheap to + * prepare anyway as it will just call GetAll() on the ContactList iface. */ + feature = TP_CONNECTION_FEATURE_CONTACT_LIST_PROPERTIES; + g_array_append_val (features, feature); + + return features; +} + +static GArray * +empathy_client_factory_dup_contact_features (TpSimpleClientFactory *factory, + TpConnection *connection) +{ + GArray *features; + TpContactFeature feature; + + features = chainup->dup_contact_features (factory, connection); + + /* Needed by empathy_individual_add_menu_item_new to check if a contact is + * already in the contact list. This feature is pretty cheap to prepare as + * it doesn't prepare the full roster. */ + feature = TP_CONTACT_FEATURE_SUBSCRIPTION_STATES; + g_array_append_val (features, feature); + return features; } @@ -169,6 +196,9 @@ empathy_client_factory_class_init (EmpathyClientFactoryClass *cls) simple_class->dup_connection_features = empathy_client_factory_dup_connection_features; + + simple_class->dup_contact_features = + empathy_client_factory_dup_contact_features; } static void diff --git a/libempathy/empathy-connection-aggregator.c b/libempathy/empathy-connection-aggregator.c new file mode 100644 index 00000000..7074e518 --- /dev/null +++ b/libempathy/empathy-connection-aggregator.c @@ -0,0 +1,218 @@ +/* + * empathy-connection-aggregator.c - Source for EmpathyConnectionAggregator + * Copyright (C) 2010 Collabora Ltd. + * @author Cosimo Cecchi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +#include "empathy-connection-aggregator.h" + +#include + +#define DEBUG_FLAG EMPATHY_DEBUG_OTHER +#include "empathy-debug.h" +#include "empathy-utils.h" + + +#include "extensions/extensions.h" + +G_DEFINE_TYPE (EmpathyConnectionAggregator, empathy_connection_aggregator, + G_TYPE_OBJECT); + +struct _EmpathyConnectionAggregatorPriv { + TpAccountManager *mgr; + + /* List of owned TpConnection */ + GList *conns; +}; + +static void +empathy_connection_aggregator_dispose (GObject *object) +{ + EmpathyConnectionAggregator *self = (EmpathyConnectionAggregator *) object; + + g_clear_object (&self->priv->mgr); + + g_list_free_full (self->priv->conns, g_object_unref); + self->priv->conns = NULL; + + G_OBJECT_CLASS (empathy_connection_aggregator_parent_class)->dispose (object); +} + +static void +empathy_connection_aggregator_class_init ( + EmpathyConnectionAggregatorClass *klass) +{ + GObjectClass *oclass = G_OBJECT_CLASS (klass); + + oclass->dispose = empathy_connection_aggregator_dispose; + + g_type_class_add_private (klass, sizeof (EmpathyConnectionAggregatorPriv)); +} + +static void +conn_invalidated_cb (TpConnection *conn, + guint domain, + gint code, + gchar *message, + EmpathyConnectionAggregator *self) +{ + self->priv->conns = g_list_remove (self->priv->conns, conn); + + g_object_unref (conn); +} + +static void +check_connection (EmpathyConnectionAggregator *self, + TpConnection *conn) +{ + if (g_list_find (self->priv->conns, conn) != NULL) + return; + + self->priv->conns = g_list_prepend (self->priv->conns, + g_object_ref (conn)); + + tp_g_signal_connect_object (conn, "invalidated", + G_CALLBACK (conn_invalidated_cb), self, 0); +} + +static void +check_account (EmpathyConnectionAggregator *self, + TpAccount *account) +{ + TpConnection *conn; + + conn = tp_account_get_connection (account); + if (conn != NULL) + check_connection (self, conn); +} + +static void +account_conn_changed_cb (TpAccount *account, + GParamSpec *spec, + EmpathyConnectionAggregator *self) +{ + check_account (self, account); +} + +static void +add_account (EmpathyConnectionAggregator *self, + TpAccount *account) +{ + check_account (self, account); + + tp_g_signal_connect_object (account, "notify::connection", + G_CALLBACK (account_conn_changed_cb), self, 0); +} + +static void +account_validity_changed_cb (TpAccountManager *manager, + TpAccount *account, + gboolean valid, + EmpathyConnectionAggregator *self) +{ + if (valid) + add_account (self, account); +} + +static void +am_prepare_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + EmpathyConnectionAggregator *self = EMPATHY_CONNECTION_AGGREGATOR (user_data); + GError *error = NULL; + GList *accounts, *l; + + if (!tp_proxy_prepare_finish (source, result, &error)) + { + DEBUG ("Failed to prepare account manager: %s", error->message); + g_error_free (error); + goto out; + } + + accounts = tp_account_manager_get_valid_accounts (self->priv->mgr); + for (l = accounts; l != NULL; l = g_list_next (l)) + { + TpAccount *account = l->data; + + add_account (self, account); + } + + tp_g_signal_connect_object (self->priv->mgr, "account-validity-changed", + G_CALLBACK (account_validity_changed_cb), self, 0); + + g_list_free (accounts); + +out: + g_object_unref (self); +} + +static void +empathy_connection_aggregator_init (EmpathyConnectionAggregator *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EMPATHY_TYPE_CONNECTION_AGGREGATOR, EmpathyConnectionAggregatorPriv); + + self->priv->mgr = tp_account_manager_dup (); + + tp_proxy_prepare_async (self->priv->mgr, NULL, am_prepare_cb, + g_object_ref (self)); +} + +EmpathyConnectionAggregator * +empathy_connection_aggregator_dup_singleton (void) +{ + static EmpathyConnectionAggregator *aggregator = NULL; + + if (G_LIKELY (aggregator != NULL)) + return g_object_ref (aggregator); + + aggregator = g_object_new (EMPATHY_TYPE_CONNECTION_AGGREGATOR, NULL); + + g_object_add_weak_pointer (G_OBJECT (aggregator), (gpointer *) &aggregator); + return aggregator; +} + +GList * +empathy_connection_aggregator_get_all_groups (EmpathyConnectionAggregator *self) +{ + GList *keys, *l; + GHashTable *set; + + set = g_hash_table_new (g_str_hash, g_str_equal); + + for (l = self->priv->conns; l != NULL; l = g_list_next (l)) + { + TpConnection *conn = l->data; + const gchar * const *groups; + guint i; + + groups = tp_connection_get_contact_groups (conn); + if (groups == NULL) + continue; + + for (i = 0; groups[i] != NULL; i++) + g_hash_table_insert (set, (gchar *) groups[i], GUINT_TO_POINTER (TRUE)); + } + + keys = g_hash_table_get_keys (set); + g_hash_table_unref (set); + + return keys; +} diff --git a/libempathy/empathy-connection-aggregator.h b/libempathy/empathy-connection-aggregator.h new file mode 100644 index 00000000..6a7fb656 --- /dev/null +++ b/libempathy/empathy-connection-aggregator.h @@ -0,0 +1,69 @@ +/* + * empathy-connection-aggregator.h - Header for EmpathyConnectionAggregator + * Copyright (C) 2010 Collabora Ltd. + * @author Cosimo Cecchi + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __EMPATHY_CONNECTION_AGGREGATOR_H__ +#define __EMPATHY_CONNECTION_AGGREGATOR_H__ + +#include + +#include + +G_BEGIN_DECLS + +typedef struct _EmpathyConnectionAggregator EmpathyConnectionAggregator; +typedef struct _EmpathyConnectionAggregatorClass EmpathyConnectionAggregatorClass; +typedef struct _EmpathyConnectionAggregatorPriv EmpathyConnectionAggregatorPriv; + +struct _EmpathyConnectionAggregatorClass { + GObjectClass parent_class; +}; + +struct _EmpathyConnectionAggregator { + GObject parent; + EmpathyConnectionAggregatorPriv *priv; +}; + +GType empathy_connection_aggregator_get_type (void); + +/* TYPE MACROS */ +#define EMPATHY_TYPE_CONNECTION_AGGREGATOR \ + (empathy_connection_aggregator_get_type ()) +#define EMPATHY_CONNECTION_AGGREGATOR(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_CONNECTION_AGGREGATOR, \ + EmpathyConnectionAggregator)) +#define EMPATHY_CONNECTION_AGGREGATOR_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_CONNECTION_AGGREGATOR, \ + EmpathyConnectionAggregatorClass)) +#define EMPATHY_IS_CONNECTION_AGGREGATOR(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_CONNECTION_AGGREGATOR)) +#define EMPATHY_IS_CONNECTION_AGGREGATOR_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_CONNECTION_AGGREGATOR)) +#define EMPATHY_CONNECTION_AGGREGATOR_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_CONNECTION_AGGREGATOR, \ + EmpathyConnectionAggregatorClass)) + +EmpathyConnectionAggregator * empathy_connection_aggregator_dup_singleton (void); + +GList * empathy_connection_aggregator_get_all_groups ( + EmpathyConnectionAggregator *self); + +G_END_DECLS + +#endif /* #ifndef __EMPATHY_CONNECTION_AGGREGATOR_H__*/ diff --git a/libempathy/empathy-contact-list.c b/libempathy/empathy-contact-list.c index 9e99ba46..b80071c5 100644 --- a/libempathy/empathy-contact-list.c +++ b/libempathy/empathy-contact-list.c @@ -145,18 +145,6 @@ empathy_contact_list_get_pendings (EmpathyContactList *list) return NULL; } -GList * -empathy_contact_list_get_all_groups (EmpathyContactList *list) -{ - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL); - - if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_all_groups) { - return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_all_groups (list); - } - - return NULL; -} - GList * empathy_contact_list_get_groups (EmpathyContactList *list, EmpathyContact *contact) @@ -224,39 +212,3 @@ empathy_contact_list_remove_group (EmpathyContactList *list, EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_group (list, group); } } - -EmpathyContactListFlags -empathy_contact_list_get_flags (EmpathyContactList *list) -{ - g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), 0); - - if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_flags) { - return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_flags (list); - } else { - return 0; - } -} - -void -empathy_contact_list_set_blocked (EmpathyContactList *list, - EmpathyContact *contact, - gboolean blocked, - gboolean abusive) -{ - EmpathyContactListIface *iface = EMPATHY_CONTACT_LIST_GET_IFACE (list); - - if (iface->set_blocked != NULL) - iface->set_blocked (list, contact, blocked, abusive); -} - -gboolean -empathy_contact_list_get_blocked (EmpathyContactList *list, - EmpathyContact *contact) -{ - EmpathyContactListIface *iface = EMPATHY_CONTACT_LIST_GET_IFACE (list); - - if (iface->get_blocked != NULL) - return iface->get_blocked (list, contact); - else - return FALSE; -} diff --git a/libempathy/empathy-contact-list.h b/libempathy/empathy-contact-list.h index 0e1d6a85..a9149369 100644 --- a/libempathy/empathy-contact-list.h +++ b/libempathy/empathy-contact-list.h @@ -34,16 +34,6 @@ G_BEGIN_DECLS #define EMPATHY_IS_CONTACT_LIST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST)) #define EMPATHY_CONTACT_LIST_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), EMPATHY_TYPE_CONTACT_LIST, EmpathyContactListIface)) -typedef enum { - EMPATHY_CONTACT_LIST_CAN_ADD = 1 << 0, - EMPATHY_CONTACT_LIST_CAN_REMOVE = 1 << 1, - EMPATHY_CONTACT_LIST_CAN_ALIAS = 1 << 2, - EMPATHY_CONTACT_LIST_CAN_GROUP = 1 << 3, - EMPATHY_CONTACT_LIST_CAN_BLOCK = 1 << 4, - EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE = 1 << 5, - EMPATHY_CONTACT_LIST_MESSAGE_ADD = 1 << 6, -} EmpathyContactListFlags; - typedef struct _EmpathyContactListIface EmpathyContactListIface; struct _EmpathyContactListIface { @@ -58,7 +48,6 @@ struct _EmpathyContactListIface { const gchar *message); GList * (*get_members) (EmpathyContactList *list); GList * (*get_pendings) (EmpathyContactList *list); - GList * (*get_all_groups) (EmpathyContactList *list); GList * (*get_groups) (EmpathyContactList *list, EmpathyContact *contact); void (*add_to_group) (EmpathyContactList *list, @@ -72,14 +61,6 @@ struct _EmpathyContactListIface { const gchar *new_group); void (*remove_group) (EmpathyContactList *list, const gchar *group); - EmpathyContactListFlags - (*get_flags) (EmpathyContactList *list); - void (*set_blocked) (EmpathyContactList *list, - EmpathyContact *contact, - gboolean blocked, - gboolean abusive); - gboolean (*get_blocked) (EmpathyContactList *list, - EmpathyContact *contact); }; GType empathy_contact_list_get_type (void) G_GNUC_CONST; @@ -91,7 +72,6 @@ void empathy_contact_list_remove (EmpathyContactList *list, const gchar *message); GList * empathy_contact_list_get_members (EmpathyContactList *list); GList * empathy_contact_list_get_pendings (EmpathyContactList *list); -GList * empathy_contact_list_get_all_groups (EmpathyContactList *list); GList * empathy_contact_list_get_groups (EmpathyContactList *list, EmpathyContact *contact); void empathy_contact_list_add_to_group (EmpathyContactList *list, @@ -106,17 +86,6 @@ void empathy_contact_list_rename_group (EmpathyContactList *list, void empathy_contact_list_remove_group (EmpathyContactList *list, const gchar *group); -EmpathyContactListFlags - empathy_contact_list_get_flags (EmpathyContactList *list); - -void empathy_contact_list_set_blocked (EmpathyContactList *list, - EmpathyContact *contact, - gboolean blocked, - gboolean abusive); -gboolean empathy_contact_list_get_blocked (EmpathyContactList *list, - EmpathyContact *contact); - - G_END_DECLS #endif /* __EMPATHY_CONTACT_LIST_H__ */ diff --git a/libempathy/empathy-contact-manager.c b/libempathy/empathy-contact-manager.c index 8db9a5a0..fd2b3e1a 100644 --- a/libempathy/empathy-contact-manager.c +++ b/libempathy/empathy-contact-manager.c @@ -198,7 +198,7 @@ contact_manager_finalize (GObject *object) g_hash_table_foreach (priv->lists, contact_manager_disconnect_foreach, object); - g_hash_table_destroy (priv->lists); + g_hash_table_unref (priv->lists); g_object_unref (priv->account_manager); } @@ -415,42 +415,6 @@ contact_manager_get_pendings (EmpathyContactList *manager) return contacts; } -static void -contact_manager_get_all_groups_foreach (TpConnection *connection, - EmpathyTpContactList *list, - GList **all_groups) -{ - GList *groups, *l; - - groups = empathy_contact_list_get_all_groups (EMPATHY_CONTACT_LIST (list)); - for (l = groups; l; l = l->next) { - if (!g_list_find_custom (*all_groups, - l->data, - (GCompareFunc) strcmp)) { - *all_groups = g_list_prepend (*all_groups, l->data); - } else { - g_free (l->data); - } - } - - g_list_free (groups); -} - -static GList * -contact_manager_get_all_groups (EmpathyContactList *manager) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - GList *groups = NULL; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL); - - g_hash_table_foreach (priv->lists, - (GHFunc) contact_manager_get_all_groups_foreach, - &groups); - - return groups; -} - static GList * contact_manager_get_groups (EmpathyContactList *manager, EmpathyContact *contact) @@ -562,47 +526,6 @@ contact_manager_remove_group (EmpathyContactList *manager, (gpointer) group); } -static void -contact_manager_set_blocked (EmpathyContactList *manager, - EmpathyContact *contact, - gboolean blocked, - gboolean abusive) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - EmpathyContactList *list; - TpConnection *connection; - - g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager)); - - connection = empathy_contact_get_connection (contact); - list = g_hash_table_lookup (priv->lists, connection); - - if (list != NULL) { - empathy_contact_list_set_blocked (list, contact, - blocked, abusive); - } -} - -static gboolean -contact_manager_get_blocked (EmpathyContactList *manager, - EmpathyContact *contact) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - EmpathyContactList *list; - TpConnection *connection; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), FALSE); - - connection = empathy_contact_get_connection (contact); - list = g_hash_table_lookup (priv->lists, connection); - - if (list != NULL) { - return empathy_contact_list_get_blocked (list, contact); - } else { - return FALSE; - } -} - static void contact_manager_iface_init (EmpathyContactListIface *iface) { @@ -610,34 +533,9 @@ contact_manager_iface_init (EmpathyContactListIface *iface) iface->remove = contact_manager_remove; iface->get_members = contact_manager_get_members; iface->get_pendings = contact_manager_get_pendings; - iface->get_all_groups = contact_manager_get_all_groups; iface->get_groups = contact_manager_get_groups; iface->add_to_group = contact_manager_add_to_group; iface->remove_from_group = contact_manager_remove_from_group; iface->rename_group = contact_manager_rename_group; iface->remove_group = contact_manager_remove_group; - iface->set_blocked = contact_manager_set_blocked; - iface->get_blocked = contact_manager_get_blocked; } - -EmpathyContactListFlags -empathy_contact_manager_get_flags_for_connection ( - EmpathyContactManager *manager, - TpConnection *connection) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - EmpathyContactList *list; - EmpathyContactListFlags flags; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), FALSE); - g_return_val_if_fail (connection != NULL, FALSE); - - list = g_hash_table_lookup (priv->lists, connection); - if (list == NULL) { - return FALSE; - } - flags = empathy_contact_list_get_flags (list); - - return flags; -} - diff --git a/libempathy/empathy-contact-manager.h b/libempathy/empathy-contact-manager.h index 97e21464..4d149309 100644 --- a/libempathy/empathy-contact-manager.h +++ b/libempathy/empathy-contact-manager.h @@ -54,9 +54,6 @@ gboolean empathy_contact_manager_initialized (void); EmpathyContactManager *empathy_contact_manager_dup_singleton (void); EmpathyTpContactList * empathy_contact_manager_get_list (EmpathyContactManager *manager, TpConnection *connection); -EmpathyContactListFlags empathy_contact_manager_get_flags_for_connection ( - EmpathyContactManager *manager, - TpConnection *connection); G_END_DECLS diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c index 935afb55..15946a16 100644 --- a/libempathy/empathy-contact.c +++ b/libempathy/empathy-contact.c @@ -2071,3 +2071,53 @@ while_finish: return best_contact; } + +#define declare_contact_cb(name) \ +static void \ +contact_##name##_cb (GObject *source, \ + GAsyncResult *result, \ + gpointer user_data) \ +{ \ + TpContact *contact = (TpContact *) source; \ + GError *error = NULL; \ + \ + if (!tp_contact_##name##_finish (contact, result, &error)) \ + { \ + DEBUG ("Failed to ##name## on %s\n", \ + tp_contact_get_identifier (contact)); \ + g_error_free (error); \ + } \ +} + +declare_contact_cb (request_subscription) +declare_contact_cb (authorize_publication) +declare_contact_cb (unblock) + +void +empathy_contact_add_to_contact_list (EmpathyContact *self, + const gchar *message) +{ + EmpathyContactPriv *priv = GET_PRIV (self); + + g_return_if_fail (priv->tp_contact != NULL); + + tp_contact_request_subscription_async (priv->tp_contact, message, + contact_request_subscription_cb, NULL); + + tp_contact_authorize_publication_async (priv->tp_contact, + contact_authorize_publication_cb, NULL); + + tp_contact_unblock_async (priv->tp_contact, contact_unblock_cb, NULL); +} + +declare_contact_cb (remove) + +void +empathy_contact_remove_from_contact_list (EmpathyContact *self) +{ + EmpathyContactPriv *priv = GET_PRIV (self); + + g_return_if_fail (priv->tp_contact != NULL); + + tp_contact_remove_async (priv->tp_contact, contact_remove_cb, NULL); +} diff --git a/libempathy/empathy-contact.h b/libempathy/empathy-contact.h index cb8f5a66..d90ea2ad 100644 --- a/libempathy/empathy-contact.h +++ b/libempathy/empathy-contact.h @@ -138,6 +138,11 @@ EmpathyContact * empathy_contact_dup_best_for_action ( FolksIndividual *individual, EmpathyActionType action_type); +void empathy_contact_add_to_contact_list (EmpathyContact *self, + const gchar *message); + +void empathy_contact_remove_from_contact_list (EmpathyContact *self); + G_END_DECLS #endif /* __EMPATHY_CONTACT_H__ */ diff --git a/libempathy/empathy-debug.c b/libempathy/empathy-debug.c index 4f624f8e..9e34ac1d 100644 --- a/libempathy/empathy-debug.c +++ b/libempathy/empathy-debug.c @@ -111,7 +111,7 @@ empathy_debug_free (void) if (flag_to_keys == NULL) return; - g_hash_table_destroy (flag_to_keys); + g_hash_table_unref (flag_to_keys); flag_to_keys = NULL; } diff --git a/libempathy/empathy-ft-handler.c b/libempathy/empathy-ft-handler.c index 4b2d7e02..c701b193 100644 --- a/libempathy/empathy-ft-handler.c +++ b/libempathy/empathy-ft-handler.c @@ -1133,7 +1133,7 @@ set_content_hash_type_from_classes (EmpathyFTHandler *handler, if (!support_ft) { - g_array_free (possible_values, TRUE); + g_array_unref (possible_values); return FALSE; } @@ -1166,7 +1166,7 @@ set_content_hash_type_from_classes (EmpathyFTHandler *handler, } out: - g_array_free (possible_values, TRUE); + g_array_unref (possible_values); DEBUG ("Hash enabled %s; setting content hash type as %u", priv->use_hash ? "True" : "False", priv->content_hash_type); diff --git a/libempathy/empathy-gsettings.h b/libempathy/empathy-gsettings.h index fb44b589..ad55a944 100644 --- a/libempathy/empathy-gsettings.h +++ b/libempathy/empathy-gsettings.h @@ -51,7 +51,6 @@ G_BEGIN_DECLS #define EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT "sounds-contact-logout" #define EMPATHY_PREFS_CALL_SCHEMA EMPATHY_PREFS_SCHEMA ".call" -#define EMPATHY_PREFS_CALL_SOUND_VOLUME "volume" #define EMPATHY_PREFS_CALL_CAMERA_DEVICE "camera-device" #define EMPATHY_PREFS_CALL_ECHO_CANCELLATION "echo-cancellation" diff --git a/libempathy/empathy-individual-manager.c b/libempathy/empathy-individual-manager.c index 833a5692..5305c41e 100644 --- a/libempathy/empathy-individual-manager.c +++ b/libempathy/empathy-individual-manager.c @@ -249,7 +249,7 @@ individual_manager_dispose (GObject *object) { EmpathyIndividualManagerPriv *priv = GET_PRIV (object); - g_hash_table_destroy (priv->individuals); + g_hash_table_unref (priv->individuals); g_signal_handlers_disconnect_by_func (priv->aggregator, aggregator_individuals_changed_cb, object); @@ -470,7 +470,7 @@ empathy_individual_manager_add_from_contact (EmpathyIndividualManager *self, priv->aggregator, NULL, persona_store, details, aggregator_add_persona_from_details_cb, contact); - g_hash_table_destroy (details); + g_hash_table_unref (details); g_object_unref (persona_store); finish: @@ -546,7 +546,6 @@ empathy_individual_manager_supports_blocking (EmpathyIndividualManager *self, { TpfPersona *persona = gee_iterator_get (iter); TpConnection *conn; - EmpathyContactManager *manager; if (TPF_IS_PERSONA (persona)) { @@ -556,14 +555,10 @@ empathy_individual_manager_supports_blocking (EmpathyIndividualManager *self, if (tp_contact != NULL) { conn = tp_contact_get_connection (tp_contact); - manager = empathy_contact_manager_dup_singleton (); - if (empathy_contact_manager_get_flags_for_connection ( - manager, conn) & - EMPATHY_CONTACT_LIST_CAN_BLOCK) + if (tp_proxy_has_interface_by_id (conn, + TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) retval = TRUE; - - g_object_unref (manager); } } g_clear_object (&persona); @@ -589,31 +584,26 @@ empathy_individual_manager_set_blocked (EmpathyIndividualManager *self, while (gee_iterator_next (iter)) { TpfPersona *persona = gee_iterator_get (iter); - EmpathyContact *contact; - EmpathyContactManager *manager; - EmpathyContactListFlags flags; if (TPF_IS_PERSONA (persona)) { TpContact *tp_contact; + TpConnection *conn; tp_contact = tpf_persona_get_contact (persona); - if (tp_contact != NULL) - { - contact = empathy_contact_dup_from_tp_contact (tp_contact); - empathy_contact_set_persona (contact, FOLKS_PERSONA (persona)); - manager = empathy_contact_manager_dup_singleton (); - flags = empathy_contact_manager_get_flags_for_connection (manager, - empathy_contact_get_connection (contact)); - - if (flags & EMPATHY_CONTACT_LIST_CAN_BLOCK) - empathy_contact_list_set_blocked ( - EMPATHY_CONTACT_LIST (manager), - contact, blocked, abusive); - - g_object_unref (manager); - g_object_unref (contact); - } + if (tp_contact == NULL) + continue; + + conn = tp_contact_get_connection (tp_contact); + + if (!tp_proxy_has_interface_by_id (conn, + TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) + continue; + + if (blocked) + tp_contact_block_async (tp_contact, abusive, NULL, NULL); + else + tp_contact_unblock_async (tp_contact, NULL, NULL); } g_clear_object (&persona); } diff --git a/libempathy/empathy-irc-network-manager.c b/libempathy/empathy-irc-network-manager.c index 6d7ff1c3..a9d89dca 100644 --- a/libempathy/empathy-irc-network-manager.c +++ b/libempathy/empathy-irc-network-manager.c @@ -155,7 +155,7 @@ empathy_irc_network_manager_finalize (GObject *object) g_free (priv->global_file); g_free (priv->user_file); - g_hash_table_destroy (priv->networks); + g_hash_table_unref (priv->networks); G_OBJECT_CLASS (empathy_irc_network_manager_parent_class)->finalize (object); } diff --git a/libempathy/empathy-server-sasl-handler.c b/libempathy/empathy-server-sasl-handler.c index d3785140..117d88f0 100644 --- a/libempathy/empathy-server-sasl-handler.c +++ b/libempathy/empathy-server-sasl-handler.c @@ -37,6 +37,7 @@ enum { /* signal enum */ enum { + AUTH_PASSWORD_FAILED, INVALIDATED, LAST_SIGNAL, }; @@ -98,6 +99,7 @@ sasl_status_changed_cb (TpChannel *channel, gpointer user_data, GObject *weak_object) { + EmpathyServerSASLHandler *self = EMPATHY_SERVER_SASL_HANDLER (weak_object); EmpathyServerSASLHandlerPriv *priv = EMPATHY_SERVER_SASL_HANDLER (weak_object)->priv; /* buh boh */ @@ -130,6 +132,13 @@ sasl_status_changed_cb (TpChannel *channel, tp_cli_channel_call_close (priv->channel, -1, NULL, NULL, NULL, NULL); } + else if (status == TP_SASL_STATUS_SERVER_FAILED) + { + if (!tp_strdiff (error, TP_ERROR_STR_AUTHENTICATION_FAILED)) + { + g_signal_emit (self, signals[AUTH_PASSWORD_FAILED], 0, priv->password); + } + } } static gboolean @@ -333,6 +342,13 @@ empathy_server_sasl_handler_class_init (EmpathyServerSASLHandlerClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_property (oclass, PROP_ACCOUNT, pspec); + signals[AUTH_PASSWORD_FAILED] = g_signal_new ("auth-password-failed", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, 0, + NULL, NULL, + g_cclosure_marshal_generic, + G_TYPE_NONE, 1, G_TYPE_STRING); + signals[INVALIDATED] = g_signal_new ("invalidated", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, diff --git a/libempathy/empathy-tls-verifier.c b/libempathy/empathy-tls-verifier.c index c22eaf06..2f20ca8e 100644 --- a/libempathy/empathy-tls-verifier.c +++ b/libempathy/empathy-tls-verifier.c @@ -526,7 +526,7 @@ empathy_tls_verifier_verify_async (EmpathyTLSVerifier *self, chain = gcr_certificate_chain_new (); for (idx = 0; idx < cert_data->len; ++idx) { data = g_ptr_array_index (cert_data, idx); - cert = gcr_simple_certificate_new ((guchar*)data->data, data->len); + cert = gcr_simple_certificate_new ((guchar *) data->data, data->len); gcr_certificate_chain_add (chain, cert); g_object_unref (cert); } diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index 087090ad..96eda77b 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -365,7 +365,8 @@ handle_delivery_report (EmpathyTpChat *self, tp_chat_set_delivery_status (self, delivery_token, EMPATHY_DELIVERY_STATUS_NONE); goto out; - } else if (delivery_status != TP_DELIVERY_STATUS_PERMANENTLY_FAILED) { + } else if (delivery_status != TP_DELIVERY_STATUS_PERMANENTLY_FAILED && + delivery_status != TP_DELIVERY_STATUS_TEMPORARILY_FAILED) { goto out; } @@ -762,7 +763,7 @@ tp_chat_finalize (GObject *object) g_queue_free (self->priv->messages_queue); g_queue_free (self->priv->pending_messages_queue); - g_hash_table_destroy (self->priv->messages_being_sent); + g_hash_table_unref (self->priv->messages_being_sent); g_free (self->priv->title); g_free (self->priv->subject); @@ -1441,7 +1442,7 @@ empathy_tp_chat_join (EmpathyTpChat *self) tp_cli_channel_interface_group_call_add_members ((TpChannel *) self, -1, members, "", add_members_cb, NULL, NULL, G_OBJECT (self)); - g_array_free (members, TRUE); + g_array_unref (members); } gboolean diff --git a/libempathy/empathy-tp-contact-list.c b/libempathy/empathy-tp-contact-list.c index 1cd2ba4c..f116d15d 100644 --- a/libempathy/empathy-tp-contact-list.c +++ b/libempathy/empathy-tp-contact-list.c @@ -48,7 +48,6 @@ typedef struct { TpChannel *publish; TpChannel *subscribe; TpChannel *stored; - TpChannel *deny; /* contact handle (TpHandle) => reffed (EmpathyContact *) * * Union of: @@ -70,8 +69,6 @@ typedef struct { GHashTable *groups; /* group name: owned (gchar *) => owned GArray of TpHandle */ GHashTable *add_to_group; - - EmpathyContactListFlags flags; } EmpathyTpContactListPriv; typedef enum { @@ -274,7 +271,7 @@ tp_contact_list_group_ready_cb (TpChannel *channel, g_assert (members != NULL); arr = tp_intset_to_array (members); contacts_added_to_group (list, channel, arr); - g_array_free (arr, TRUE); + g_array_unref (arr); } static void @@ -355,7 +352,7 @@ tp_contact_list_group_add (EmpathyTpContactList *list, if (channel) { tp_cli_channel_interface_group_call_add_members (channel, -1, handles, NULL, NULL, NULL, NULL, NULL); - g_array_free (handles, TRUE); + g_array_unref (handles); return; } @@ -435,7 +432,7 @@ add_to_members (EmpathyTpContactList *list, got_added_members_cb, NULL, NULL, G_OBJECT (list)); } - g_array_free (request, TRUE); + g_array_unref (request); } static void @@ -578,64 +575,6 @@ tp_contact_list_publish_group_members_changed_cb (TpChannel *channel, } } -static void -tp_contact_list_get_alias_flags_cb (TpConnection *connection, - guint flags, - const GError *error, - gpointer user_data, - GObject *list) -{ - EmpathyTpContactListPriv *priv = GET_PRIV (list); - - if (error) { - DEBUG ("Error: %s", error->message); - return; - } - - if (flags & TP_CONNECTION_ALIAS_FLAG_USER_SET) { - priv->flags |= EMPATHY_CONTACT_LIST_CAN_ALIAS; - } -} - -static void -tp_contact_list_get_requestablechannelclasses_cb (TpProxy *connection, - const GValue *value, - const GError *error, - gpointer user_data, - GObject *list) -{ - EmpathyTpContactListPriv *priv = GET_PRIV (list); - GPtrArray *classes; - guint i; - - if (error) { - DEBUG ("Error: %s", error->message); - return; - } - - classes = g_value_get_boxed (value); - for (i = 0; i < classes->len; i++) { - GValueArray *class = g_ptr_array_index (classes, i); - GHashTable *props; - const char *channel_type; - guint handle_type; - - props = g_value_get_boxed (g_value_array_get_nth (class, 0)); - - channel_type = tp_asv_get_string (props, - TP_IFACE_CHANNEL ".ChannelType"); - handle_type = tp_asv_get_uint32 (props, - TP_IFACE_CHANNEL ".TargetHandleType", NULL); - - if (!tp_strdiff (channel_type, TP_IFACE_CHANNEL_TYPE_CONTACT_LIST) && - handle_type == TP_HANDLE_TYPE_GROUP) { - DEBUG ("Got channel class for a contact group"); - priv->flags |= EMPATHY_CONTACT_LIST_CAN_GROUP; - break; - } - } -} - static void tp_contact_list_subscribe_group_members_changed_cb (TpChannel *channel, gchar *message, @@ -685,7 +624,7 @@ tp_contact_list_subscribe_group_members_changed_cb (TpChannel *channel, tp_cli_channel_interface_group_call_add_members (priv->publish, -1, accept, NULL, NULL, NULL, NULL, NULL); - g_array_free (accept, TRUE); + g_array_unref (accept); } static void @@ -731,10 +670,6 @@ tp_contact_list_finalize (GObject *object) g_object_unref (priv->stored); } - if (priv->deny) { - g_object_unref (priv->deny); - } - if (priv->connection) { g_object_unref (priv->connection); } @@ -745,10 +680,10 @@ tp_contact_list_finalize (GObject *object) tp_contact_list_group_invalidated_cb, list); } - g_hash_table_destroy (priv->groups); - g_hash_table_destroy (priv->members); - g_hash_table_destroy (priv->pendings); - g_hash_table_destroy (priv->add_to_group); + g_hash_table_unref (priv->groups); + g_hash_table_unref (priv->members); + g_hash_table_unref (priv->pendings); + g_hash_table_unref (priv->add_to_group); G_OBJECT_CLASS (empathy_tp_contact_list_parent_class)->finalize (object); } @@ -786,11 +721,6 @@ got_list_channel (EmpathyTpContactList *list, g_signal_connect (priv->subscribe, "group-members-changed", G_CALLBACK (tp_contact_list_subscribe_group_members_changed_cb), list); - } else if (!tp_strdiff (id, "deny")) { - if (priv->deny != NULL) - return; - DEBUG ("Got 'deny' channel"); - priv->deny = g_object_ref (channel); } } @@ -816,39 +746,6 @@ list_ensure_channel_cb (TpConnection *conn, g_object_unref (channel); } -static void -list_get_contact_blocking_capabilities_cb (TpProxy *conn, - const GValue *value, - const GError *in_error, - gpointer user_data, - GObject *weak_object) -{ - EmpathyTpContactList *list = EMPATHY_TP_CONTACT_LIST (weak_object); - EmpathyTpContactListPriv *priv = GET_PRIV (list); - TpContactBlockingCapabilities caps; - - if (in_error != NULL) { - DEBUG ("Get(Blocking, ContactBlockingCapabilities) on %s failed: %s", - tp_proxy_get_object_path (conn), - in_error->message); - return; - } - - if (!G_VALUE_HOLDS_UINT (value)) { - DEBUG ("Get(Blocking, ContactBlockingCapabilities) on %s returned a %s, not a uint", - tp_proxy_get_object_path (conn), - G_VALUE_TYPE_NAME (value)); - return; - } - - caps = g_value_get_uint (value); - - if (caps & TP_CONTACT_BLOCKING_CAPABILITY_CAN_REPORT_ABUSIVE) { - DEBUG ("Connection can report abusive contacts"); - priv->flags |= EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE; - } -} - static void iterate_on_channels (EmpathyTpContactList *list, const GPtrArray *channels) @@ -957,25 +854,8 @@ conn_ready_cb (TpConnection *connection, tp_cli_connection_interface_requests_call_ensure_channel (priv->connection, G_MAXINT, request, list_ensure_channel_cb, list, NULL, G_OBJECT (list)); - /* Request the 'deny' list */ - tp_asv_set_static_string (request, TP_PROP_CHANNEL_TARGET_ID, "deny"); - tp_cli_connection_interface_requests_call_ensure_channel (priv->connection, - G_MAXINT, request, list_ensure_channel_cb, list, NULL, G_OBJECT (list)); - g_hash_table_unref (request); - /* Find out if we support reporting abusive contacts -- - * this is done via the new Conn.I.ContactBlocking interface */ - if (tp_proxy_has_interface_by_id (priv->connection, - TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) { - DEBUG ("Have Conn.I.ContactBlocking"); - - tp_cli_dbus_properties_call_get (priv->connection, -1, - TP_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING, - "ContactBlockingCapabilities", - list_get_contact_blocking_capabilities_cb, - NULL, NULL, G_OBJECT (list)); - } out: g_object_unref (list); } @@ -985,32 +865,6 @@ tp_contact_list_constructed (GObject *list) { EmpathyTpContactListPriv *priv = GET_PRIV (list); - /* call GetAliasFlags */ - if (tp_proxy_has_interface_by_id (priv->connection, - TP_IFACE_QUARK_CONNECTION_INTERFACE_ALIASING)) { - tp_cli_connection_interface_aliasing_call_get_alias_flags ( - priv->connection, - -1, - tp_contact_list_get_alias_flags_cb, - NULL, NULL, - G_OBJECT (list)); - } - - /* lookup RequestableChannelClasses */ - if (tp_proxy_has_interface_by_id (priv->connection, - TP_IFACE_QUARK_CONNECTION_INTERFACE_REQUESTS)) { - tp_cli_dbus_properties_call_get (priv->connection, - -1, - TP_IFACE_CONNECTION_INTERFACE_REQUESTS, - "RequestableChannelClasses", - tp_contact_list_get_requestablechannelclasses_cb, - NULL, NULL, - G_OBJECT (list)); - } else { - /* we just don't know... better mark the flag just in case */ - priv->flags |= EMPATHY_CONTACT_LIST_CAN_GROUP; - } - tp_connection_call_when_ready (priv->connection, conn_ready_cb, g_object_ref (list)); } @@ -1076,7 +930,7 @@ empathy_tp_contact_list_class_init (EmpathyTpContactListClass *klass) static void tp_contact_list_array_free (gpointer handles) { - g_array_free (handles, TRUE); + g_array_unref (handles); } static void @@ -1154,10 +1008,13 @@ tp_contact_list_add (EmpathyContactList *list, } } - if (priv->deny) { - tp_cli_channel_interface_group_call_remove_members ( - priv->deny, -1, &handles, message, - NULL, NULL, NULL, NULL); + /* We want to unblock the contact */ + if (tp_proxy_has_interface_by_id (priv->connection, + TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) { + TpContact *tp_contact = empathy_contact_get_tp_contact (contact); + + if (tp_contact != NULL) + tp_contact_unblock_async (tp_contact, NULL, NULL); } } @@ -1211,20 +1068,6 @@ tp_contact_list_get_pendings (EmpathyContactList *list) return ret; } -static GList * -tp_contact_list_get_all_groups (EmpathyContactList *list) -{ - EmpathyTpContactListPriv *priv = GET_PRIV (list); - GList *ret, *l; - - ret = g_hash_table_get_keys (priv->groups); - for (l = ret; l; l = l->next) { - l->data = g_strdup (l->data); - } - - return ret; -} - static GList * tp_contact_list_get_groups (EmpathyContactList *list, EmpathyContact *contact) @@ -1338,85 +1181,7 @@ tp_contact_list_remove_group (EmpathyContactList *list, tp_cli_channel_interface_group_call_remove_members (channel, -1, handles, NULL, NULL, NULL, NULL, NULL); tp_cli_channel_call_close (channel, -1, NULL, NULL, NULL, NULL); - g_array_free (handles, TRUE); -} - -static EmpathyContactListFlags -tp_contact_list_get_flags (EmpathyContactList *list) -{ - EmpathyTpContactListPriv *priv; - EmpathyContactListFlags flags; - - g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list), FALSE); - - priv = GET_PRIV (list); - flags = priv->flags; - - if (priv->subscribe != NULL) { - TpChannelGroupFlags group_flags; - - group_flags = tp_channel_group_get_flags (priv->subscribe); - - if (group_flags & TP_CHANNEL_GROUP_FLAG_CAN_ADD) { - flags |= EMPATHY_CONTACT_LIST_CAN_ADD; - } - - if (group_flags & TP_CHANNEL_GROUP_FLAG_CAN_REMOVE) { - flags |= EMPATHY_CONTACT_LIST_CAN_REMOVE; - } - - if (group_flags & TP_CHANNEL_GROUP_FLAG_MESSAGE_ADD) { - flags |= EMPATHY_CONTACT_LIST_MESSAGE_ADD; - } - } - - if (priv->deny != NULL) - flags |= EMPATHY_CONTACT_LIST_CAN_BLOCK; - - return flags; -} - -static void -tp_contact_list_set_blocked (EmpathyContactList *list, - EmpathyContact *contact, - gboolean blocked, - gboolean abusive) -{ - EmpathyTpContactListPriv *priv = GET_PRIV (list); - TpHandle handle = empathy_contact_get_handle (contact); - GArray handles = { (char *) &handle, 1 }; - - g_return_if_fail (TP_IS_CHANNEL (priv->deny)); - - if (blocked && abusive) { - /* we have to do this via the new interface */ - g_return_if_fail (priv->flags & - EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE); - - tp_cli_connection_interface_contact_blocking_call_block_contacts ( - priv->connection, -1, - &handles, TRUE, NULL, NULL, NULL, NULL); - } else if (blocked) { - tp_cli_channel_interface_group_call_add_members ( - priv->deny, -1, - &handles, NULL, NULL, NULL, NULL, NULL); - } else { - tp_cli_channel_interface_group_call_remove_members ( - priv->deny, -1, - &handles, NULL, NULL, NULL, NULL, NULL); - } -} - -static gboolean -tp_contact_list_get_blocked (EmpathyContactList *list, - EmpathyContact *contact) -{ - EmpathyTpContactListPriv *priv = GET_PRIV (list); - - g_return_val_if_fail (TP_IS_CHANNEL (priv->deny), FALSE); - - return tp_intset_is_member (tp_channel_group_get_members (priv->deny), - empathy_contact_get_handle (contact)); + g_array_unref (handles); } static void @@ -1426,15 +1191,11 @@ tp_contact_list_iface_init (EmpathyContactListIface *iface) iface->remove = tp_contact_list_remove; iface->get_members = tp_contact_list_get_members; iface->get_pendings = tp_contact_list_get_pendings; - iface->get_all_groups = tp_contact_list_get_all_groups; iface->get_groups = tp_contact_list_get_groups; iface->add_to_group = tp_contact_list_add_to_group; iface->remove_from_group = tp_contact_list_remove_from_group; iface->rename_group = tp_contact_list_rename_group; iface->remove_group = tp_contact_list_remove_group; - iface->get_flags = tp_contact_list_get_flags; - iface->set_blocked = tp_contact_list_set_blocked; - iface->get_blocked = tp_contact_list_get_blocked; } void diff --git a/libempathy/empathy-tp-roomlist.c b/libempathy/empathy-tp-roomlist.c index 1e53facd..93e28d3d 100644 --- a/libempathy/empathy-tp-roomlist.c +++ b/libempathy/empathy-tp-roomlist.c @@ -203,7 +203,7 @@ tp_roomlist_got_rooms_cb (TpChannel *channel, chatrooms, tp_roomlist_chatrooms_free, list); - g_array_free (handles, TRUE); + g_array_unref (handles); } } diff --git a/libempathy/empathy-tp-streamed-media.c b/libempathy/empathy-tp-streamed-media.c index 87ca01db..388b3aa0 100644 --- a/libempathy/empathy-tp-streamed-media.c +++ b/libempathy/empathy-tp-streamed-media.c @@ -261,7 +261,7 @@ tp_streamed_media_request_streams_for_capabilities (EmpathyTpStreamedMedia *call handle, stream_types, tp_streamed_media_request_streams_cb, NULL, NULL, G_OBJECT (call)); - g_array_free (stream_types, TRUE); + g_array_unref (stream_types); } static void diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c index 83fe4ce7..972abe65 100644 --- a/libempathy/empathy-utils.c +++ b/libempathy/empathy-utils.c @@ -1163,3 +1163,35 @@ empathy_sasl_channel_supports_mechanism (TpChannel *channel, return tp_strv_contains (available_mechanisms, mechanism); } + +FolksIndividual * +empathy_create_individual_from_tp_contact (TpContact *contact) +{ + TpAccount *account; + TpConnection *connection; + TpfPersonaStore *store; + GeeSet *personas; + TpfPersona *persona; + FolksIndividual *individual; + + connection = tp_contact_get_connection (contact); + account = tp_connection_get_account (connection); + + store = tpf_persona_store_new (account); + + personas = GEE_SET ( + gee_hash_set_new (FOLKS_TYPE_PERSONA, g_object_ref, g_object_unref, + g_direct_hash, g_direct_equal)); + + persona = tpf_persona_new (contact, store); + + gee_collection_add (GEE_COLLECTION (personas), persona); + + individual = folks_individual_new (personas); + + g_clear_object (&persona); + g_clear_object (&personas); + g_object_unref (store); + + return individual; +} diff --git a/libempathy/empathy-utils.h b/libempathy/empathy-utils.h index f8d47ec8..ac5fef82 100644 --- a/libempathy/empathy-utils.h +++ b/libempathy/empathy-utils.h @@ -121,6 +121,9 @@ void empathy_individual_can_audio_video_call (FolksIndividual *individual, gboolean empathy_sasl_channel_supports_mechanism (TpChannel *channel, const gchar *mechanism); +FolksIndividual * empathy_create_individual_from_tp_contact ( + TpContact *contact); + /* Copied from wocky/wocky-utils.h */ #define empathy_implement_finish_void(source, tag) \ diff --git a/m4/gsettings.m4 b/m4/gsettings.m4 index 76b808ae..7b2f9a23 100644 --- a/m4/gsettings.m4 +++ b/m4/gsettings.m4 @@ -7,7 +7,7 @@ AC_DEFUN([GLIB_GSETTINGS], [ m4_pattern_allow([AM_V_GEN]) AC_ARG_ENABLE(schemas-compile, - AC_HELP_STRING([--disable-schemas-compile], + AS_HELP_STRING([--disable-schemas-compile], [Disable regeneration of gschemas.compiled on install]), [case ${enableval} in yes) GSETTINGS_DISABLE_SCHEMAS_COMPILE="" ;; @@ -17,9 +17,16 @@ AC_DEFUN([GLIB_GSETTINGS], AC_SUBST([GSETTINGS_DISABLE_SCHEMAS_COMPILE]) PKG_PROG_PKG_CONFIG([0.16]) AC_SUBST(gsettingsschemadir, [${datadir}/glib-2.0/schemas]) - AC_SUBST(GLIB_COMPILE_SCHEMAS, `$PKG_CONFIG --variable glib_compile_schemas gio-2.0`) + if test x$cross_compiling != xyes; then + GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable glib_compile_schemas gio-2.0` + else + AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas) + fi + AC_SUBST(GLIB_COMPILE_SCHEMAS) if test "x$GLIB_COMPILE_SCHEMAS" = "x"; then - AC_MSG_ERROR([glib-compile-schemas not found.]) + ifelse([$2],,[AC_MSG_ERROR([glib-compile-schemas not found.])],[$2]) + else + ifelse([$1],,[:],[$1]) fi GSETTINGS_RULES=' @@ -27,8 +34,10 @@ AC_DEFUN([GLIB_GSETTINGS], mostlyclean-am: clean-gsettings-schemas -%.gschema.valid: %.gschema.xml - $(AM_V_GEN) if test -f "$^"; then d=; else d="$(srcdir)/"; fi; $(GLIB_COMPILE_SCHEMAS) --dry-run --schema-file=$${d}$^ && touch [$]@ +gsettings__enum_file = $(addsuffix .enums.xml,$(gsettings_ENUM_NAMESPACE)) + +%.gschema.valid: %.gschema.xml $(gsettings__enum_file) + $(AM_V_GEN) if test -f "$<"; then d=; else d="$(srcdir)/"; fi; $(GLIB_COMPILE_SCHEMAS) --strict --dry-run $(addprefix --schema-file=,$(gsettings__enum_file)) --schema-file=$${d}$< && touch [$]@ all-am: $(gsettings_SCHEMAS:.xml=.valid) uninstall-am: uninstall-gsettings-schemas @@ -38,22 +47,28 @@ install-data-am: install-gsettings-schemas install-gsettings-schemas: $(gsettings_SCHEMAS) $(gsettings__enum_file) @$(NORMAL_INSTALL) - test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)" - $(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)" - test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir) + if test -n "$^"; then \ + test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"; \ + $(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)"; \ + test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); \ + fi uninstall-gsettings-schemas: @$(NORMAL_UNINSTALL) - @list='\''$(gsettings_SCHEMAS)'\''; test -n "$(gsettingsschemadir)" || list=; \ + @list='\''$(gsettings_SCHEMAS) $(gsettings__enum_file)'\''; test -n "$(gsettingsschemadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e '\''s|^.*/||'\''`; \ test -n "$$files" || exit 0; \ echo " ( cd '\''$(DESTDIR)$(gsettingsschemadir)'\'' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(gsettingsschemadir)" && rm -f $$files - test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) --uninstall $(gsettingsschemadir) + test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir) clean-gsettings-schemas: - rm -f $(gsettings_SCHEMAS:.xml=.valid) + rm -f $(gsettings_SCHEMAS:.xml=.valid) $(gsettings__enum_file) +ifdef gsettings_ENUM_NAMESPACE +$(gsettings__enum_file): $(gsettings_ENUM_FILES) + $(AM_V_GEN) glib-mkenums --comments '\'''\'' --fhead "" --vhead " <@type@ id='\''$(gsettings_ENUM_NAMESPACE).@EnumName@'\''>" --vprod " " --vtail " " --ftail "" [$]^ > [$]@.tmp && mv [$]@.tmp [$]@ +endif ' _GSETTINGS_SUBST(GSETTINGS_RULES) ]) diff --git a/po/LINGUAS b/po/LINGUAS index 450eb2c6..22538e96 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -50,6 +50,7 @@ mk ml mr ms +my nb ne nl diff --git a/po/POTFILES.in b/po/POTFILES.in index 355089aa..2d0012f6 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -35,7 +35,6 @@ libempathy-gtk/empathy-contact-blocking-dialog.c libempathy-gtk/empathy-chat-text-view.c libempathy-gtk/empathy-contact-dialogs.c [type: gettext/glade]libempathy-gtk/empathy-contact-dialogs.ui -libempathy-gtk/empathy-contact-list-view.c libempathy-gtk/empathy-contact-menu.c libempathy-gtk/empathy-contact-search-dialog.c libempathy-gtk/empathy-contact-widget.c @@ -57,6 +56,8 @@ libempathy-gtk/empathy-log-window.c [type: gettext/glade]libempathy-gtk/empathy-log-window.ui libempathy-gtk/empathy-new-message-dialog.c libempathy-gtk/empathy-new-call-dialog.c +libempathy-gtk/empathy-bad-password-dialog.c +libempathy-gtk/empathy-base-password-dialog.c libempathy-gtk/empathy-password-dialog.c libempathy-gtk/empathy-presence-chooser.c libempathy-gtk/empathy-protocol-chooser.c diff --git a/po/es.po b/po/es.po index 81ace197..38be0972 100644 --- a/po/es.po +++ b/po/es.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: empathy.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=empathy&keywords=I18N+L10N&component=General\n" -"POT-Creation-Date: 2011-10-21 21:45+0000\n" -"PO-Revision-Date: 2011-10-23 19:41+0200\n" +"POT-Creation-Date: 2011-11-24 11:20+0000\n" +"PO-Revision-Date: 2011-11-25 17:08+0100\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Español \n" "MIME-Version: 1.0\n" @@ -40,22 +40,14 @@ msgid "Always open a separate chat window for new chats." msgstr "Siempre abrir una ventana de chat separada para chats nuevos." #: ../data/org.gnome.Empathy.gschema.xml.in.h:2 -msgid "Call volume" -msgstr "Volumen de la llamada" - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 -msgid "Call volume, as a percentage." -msgstr "Volumen de la llamada, como porcentaje" - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 msgid "Camera device" msgstr "Dispositivo de cámara" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 msgid "Camera position" msgstr "Posición de la cámara" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 msgid "" "Character to add after nickname when using nick completion (tab) in group " "chat." @@ -63,62 +55,62 @@ msgstr "" "Carácter que añadir después del apodo cuando se usa el completado de apodos " "(tab) en salas de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 msgid "Chat window theme" msgstr "Tema de la ventana de charla" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 msgid "Chat window theme variant" msgstr "Variante del tema de la ventana de charla" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 msgid "" "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")." msgstr "" "Lista separada por comas de idiomas que se usarán en la revisión ortográfica " "(ej. «es, en, fr»)." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 msgid "Compact contact list" msgstr "Lista compacta de contactos" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 msgid "Connection managers should be used" msgstr "Se deberían usar gestores de conexión" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 msgid "Contact list sort criterion" msgstr "Criterio de ordenación de la lista de contactos" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 msgid "D-Bus object path of the last account selected to join a room." msgstr "" "Ruta del objeto D-Bus de la última cuenta seleccionada para unirse a una " "sala." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 msgid "Default camera device to use in video calls, e.g. /dev/video0." msgstr "" "El dispositivo de cámara predeterminado que usar en las llamadas de vídeo, " "ej. /dev/video0." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 msgid "Default directory to select an avatar image from" msgstr "Carpeta predeterminada para seleccionar un avatar" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 msgid "Disable popup notifications when away" msgstr "Desactivar las notificaciones emergentes al estar ausente" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 msgid "Disable sounds when away" msgstr "Desactivar los sonidos al ausentarse" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 msgid "Display incoming events in the status area" msgstr "Mostrar los eventos entrantes en el área de estado" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 msgid "" "Display incoming events in the status area. If false, present them to the " "user immediately." @@ -126,256 +118,256 @@ msgstr "" "Mostrar los eventos entrantes en el área de estado. Si es falso presentarlos " "directamente al usuario." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 msgid "Echo cancellation support" msgstr "Soporte de cancelación de eco" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 msgid "Empathy can publish the user's location" msgstr "Empathy puede publicar la ubicación del usuario" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 msgid "Empathy can use the GPS to guess the location" msgstr "Empathy puede usar el GPS para deducir la ubicación" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 msgid "Empathy can use the cellular network to guess the location" msgstr "Empathy puede usar la red telefónica móvil para deducir la ubicación" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 msgid "Empathy can use the network to guess the location" msgstr "Empathy puede usar la red para deducir la ubicación" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 msgid "Empathy default download folder" msgstr "Carpeta de descargas predeterminada de Epiphany" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 msgid "Empathy should auto-away when idle" msgstr "Empathy debería mostrar ausencia en inactividad" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 msgid "Empathy should auto-connect on startup" msgstr "Empathy se debería autoconectar al inicio" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 msgid "Empathy should reduce the location's accuracy" msgstr "Empathy debería reducir la precisión de la ubicación" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 msgid "Empathy should use the avatar of the contact as the chat window icon" msgstr "" "Empathy debería usar el avatar del contacto como icono de la ventana de chat" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 msgid "Enable WebKit Developer Tools" msgstr "Activar las herramientas de desarrollo de WebKit" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 msgid "Enable popup notifications for new messages" msgstr "Activar notificaciones emergentes para mensajes nuevos" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 msgid "Enable spell checker" msgstr "Activar revisor ortográfico" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 msgid "Hide main window" msgstr "Ocultar la ventana principal" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 msgid "Hide the main window." msgstr "Ocultar la ventana principal." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 msgid "Last account selected in Join Room dialog" msgstr "Última cuenta seleccionada en el diálogo Unirse a sala" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 msgid "Nick completed character" msgstr "Carácter de completado de apodo" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 msgid "Open new chats in separate windows" msgstr "Abrir chats nuevos en ventanas separadas" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 msgid "Path of the Adium theme to use" msgstr "Ruta del tema Adium que usar" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 msgid "Path of the Adium theme to use if the theme used for chat is Adium." msgstr "Ruta al tema Adium que usar si el tema usado para el chat es Adium." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 msgid "Play a sound for incoming messages" msgstr "Reproducir un sonido cuando lleguen mensajes" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 msgid "Play a sound for new conversations" msgstr "Reproducir un sonido para conversaciones nuevas" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 msgid "Play a sound for outgoing messages" msgstr "Reproducir un sonido al enviar mensajes" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 msgid "Play a sound when a contact logs in" msgstr "Reproducir un sonido cuando un contacto inicie sesión" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 msgid "Play a sound when a contact logs out" msgstr "Reproducir un sonido cuando un contacto finalice su sesión" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Play a sound when we log in" msgstr "Reproducir un sonido cuando inicio sesión" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Play a sound when we log out" msgstr "Reproducir un sonido al finalizar una sesión" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Pop up notifications if the chat isn't focused" msgstr "" "Mostrar notificaciones emergentes si la ventana de chat no tiene el foco" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Pop up notifications when a contact logs in" msgstr "Mostrar notificaciones emergentes cuando un contacto se conecta" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Pop up notifications when a contact logs out" msgstr "Mostrar notificaciones emergentes cuando un contacto se desconecta" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 msgid "Position the camera preview should be during a call." msgstr "Posición donde estar la vista previa de la cámara durante una llamada." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 msgid "Show Balance in contact list" msgstr "Mostrar crédito en la lista de contactos" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "Show avatars" msgstr "Mostrar avatares" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "Show contact list in rooms" msgstr "Mostrar lista de contactos en salas" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "Show hint about closing the main window" msgstr "Mostrar consejo sobre cómo cerrar la ventana principal" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "Show offline contacts" msgstr "Mostrar contactos no conectados" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Show protocols" msgstr "Mostrar protocolos" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Spell checking languages" msgstr "Idiomas para revisión ortográfica" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "The default folder to save file transfers in." msgstr "La carpeta predeterminada donde guardar los archivos transferidos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "The last directory that an avatar image was chosen from." msgstr "Última carpeta de la que se eligió un avatar." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "The position for the chat window side pane" msgstr "La posición para el panel lateral de la ventana de charla" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "The stored position (in pixels) of the chat window side pane." msgstr "" "La posición almacenada (en píxeles) del panel lateral de la ventana de " "charla." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "The theme that is used to display the conversation in chat windows." msgstr "" "El tema que se usará para mostrar la conversación en las ventanas de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 msgid "" "The theme variant that is used to display the conversation in chat windows." msgstr "" "La variante del tema que se usará para mostrar la conversación en las " "ventanas de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "Use graphical smileys" msgstr "Usar emoticonos gráficos" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "Use notification sounds" msgstr "Usar sonidos de notificación" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "Use theme for chat rooms" msgstr "Usar tema para salas de chat" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "" "Indica si Empathy puede publicar la ubicación del usuario a sus contactos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "Whether Empathy can use the GPS to guess the location." msgstr "Indica si Empathy puede usar el GPS para deducir la ubicación." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "" "Indica si Empathy puede usar la red telefónica móvil para deducir la " "ubicación." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "Whether Empathy can use the network to guess the location." msgstr "Indica si Empathy puede usar la red para deducir la ubicación." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "" "Indica si Empathy debe iniciar sesión en sus cuentas automáticamente al " "inicio." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "" "Whether Empathy should go into away mode automatically if the user is idle." msgstr "" "Indica si Empathy debe entrar en modo de ausencia automáticamente si el " "usuario está inactivo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "" "Whether Empathy should reduce the location's accuracy for privacy reasons." msgstr "" "Indica si Empathy debería reducir la precisión de la ubicación por motivos " "de privacidad." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 msgid "" "Whether Empathy should use the avatar of the contact as the chat window icon." msgstr "" "Indica si Empathy debería usar el avatar del contacto como el icono de la " "ventana de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 msgid "" "Whether WebKit developer tools, such as the Web Inspector, should be enabled." msgstr "" "Indica si las herramientas de desarrollo de WebKit, tales como el Inspector " "web, den activarse." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 msgid "" "Whether connectivity managers should be used to automatically disconnect/" "reconnect." @@ -383,83 +375,83 @@ msgstr "" "Indica si se debe usan usar gestores de conectividad para desconectarse/" "reconectarse automáticamente." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 msgid "" "Whether to check words typed against the languages you want to check with." msgstr "" "Indica si se deben revisar las palabras tecleadas con respecto a los idiomas " "con los que quiere comprobarlo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 msgid "Whether to convert smileys into graphical images in conversations." msgstr "" "Indica si se deben convertir los emoticonos en imágenes gráficas en las " "conversaciones." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 msgid "Whether to enable Pulseaudio's echo cancellation filter." msgstr "" "Indica si se debe activar la el filtro de cancelación de eco de Pulseaudio." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 msgid "Whether to play a sound to notify of contacts logging into the network." msgstr "" "Indica si se debe reproducir un sonido para notificar los inicios de sesión " "de los contactos en la red." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 msgid "" "Whether to play a sound to notify of contacts logging out of the network." msgstr "" "Indica si se debe reproducir un sonido para notificar las finalizaciones de " "sesión de los contactos en la red." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 msgid "Whether to play a sound to notify of events." msgstr "Indica si se debe reproducir un sonido para notificar eventos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 msgid "Whether to play a sound to notify of incoming messages." msgstr "" "Indica si se debe reproducir un sonido para notificar mensajes entrantes." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 msgid "Whether to play a sound to notify of new conversations." msgstr "" "Indica si se debe reproducir un sonido para notificar conversaciones nuevas." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 msgid "Whether to play a sound to notify of outgoing messages." msgstr "" "Indica si se debe reproducir un sonido para notificar mensajes salientes." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 msgid "Whether to play a sound when logging into a network." msgstr "Indica si se debe reproducir un sonido al iniciar sesión en una red." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 msgid "Whether to play a sound when logging out of a network." msgstr "Indica si se debe reproducir un sonido al finalizar sesión en una red." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 msgid "Whether to play sound notifications when away or busy." msgstr "" "Indica si se deben reproducir sonidos de notificaciones cuando se esté " "ausente u ocupado." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 msgid "Whether to show a popup notification when a contact goes offline." msgstr "" "Indica si se deben mostrar las notificaciones emergentes cuando un contacto " "se desconecta." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 msgid "Whether to show a popup notification when a contact goes online." msgstr "" "Indica si se deben mostrar las notificaciones emergentes cuando un contacto " "se conecta." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 msgid "" "Whether to show a popup notification when receiving a new message even if " "the chat is already opened, but not focused." @@ -467,50 +459,50 @@ msgstr "" "Indica si de deben mostrar notificaciones emergentes al recibir un mensaje " "nuevo incluso si la ventana de chat ya está abierta pero no tiene el foco." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 msgid "Whether to show a popup notification when receiving a new message." msgstr "" "Indica si se deben mostrar notificaciones emergentes al recibir un mensaje " "nuevo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:93 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 msgid "Whether to show account balances in the contact list." msgstr "Indica si se debe mostrar el crédito en la lista de contactos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:94 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 msgid "" "Whether to show avatars for contacts in the contact list and chat windows." msgstr "" "Indica si se deben mostrar los avatares para los contactos en la lista de " "contactos y ventanas de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:95 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:93 msgid "Whether to show contacts that are offline in the contact list." msgstr "" "Indica si se debe mostrar los contactos que están desconectados en la lista " "de contactos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:96 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:94 msgid "Whether to show popup notifications when away or busy." msgstr "" "Indica si se deben mostrar las notificaciones emergentes cuando se esté " "ausente u ocupado." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:97 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:95 msgid "Whether to show protocols for contacts in the contact list." msgstr "" "Indica si se deben mostrar los protocolos para los contactos en la lista de " "contactos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:98 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:96 msgid "Whether to show the contact list in chat rooms." msgstr "Indica si se debe mostrar la lista de contactos en salas de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:99 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:97 msgid "Whether to show the contact list in compact mode." msgstr "Indica si se debe mostrar la lista de contactos en modo compacto." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:100 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:98 msgid "" "Whether to show the message dialog about closing the main window with the " "'x' button in the title bar." @@ -518,11 +510,11 @@ msgstr "" "Indica si se debe mostrar un mensaje de diálogo sobre cómo cerrar la ventana " "principal con el botón «x» en la barra de título." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:101 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:99 msgid "Whether to use the theme for chat rooms." msgstr "Indica si se debe usar el tema para salas de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:102 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:100 msgid "" "Which criterion to use when sorting the contact list. Default is to sort by " "the contact's name with the value \"name\". A value of \"state\" will sort " @@ -538,7 +530,7 @@ msgstr "Gestionar las cuentas de mensajería y Voz IP" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2324 +#: ../src/empathy-accounts-dialog.c:2312 msgid "Messaging and VoIP Accounts" msgstr "Cuentas de mensajería y Voz IP" @@ -815,7 +807,7 @@ msgstr[1] "hace %d meses" msgid "in the future" msgstr "en el futuro" -#: ../libempathy-gtk/empathy-account-chooser.c:540 +#: ../libempathy-gtk/empathy-account-chooser.c:688 msgid "All accounts" msgstr "Todas las cuentas" @@ -838,58 +830,58 @@ msgstr "Servidor" msgid "Port" msgstr "Puerto" -#: ../libempathy-gtk/empathy-account-widget.c:769 -#: ../libempathy-gtk/empathy-account-widget.c:826 +#: ../libempathy-gtk/empathy-account-widget.c:776 +#: ../libempathy-gtk/empathy-account-widget.c:828 #, c-format msgid "%s:" msgstr "%s:" -#: ../libempathy-gtk/empathy-account-widget.c:1192 +#: ../libempathy-gtk/empathy-account-widget.c:1182 msgid "My Web Accounts" msgstr "Mis cuentas web" -#: ../libempathy-gtk/empathy-account-widget.c:1209 +#: ../libempathy-gtk/empathy-account-widget.c:1199 #, c-format msgid "The account %s is edited via %s." msgstr "La cuenta %s se edita a través de %s." -#: ../libempathy-gtk/empathy-account-widget.c:1215 +#: ../libempathy-gtk/empathy-account-widget.c:1205 #, c-format msgid "The account %s cannot be edited in Empathy." msgstr "No se puede editar la cuenta %s en Empathy." -#: ../libempathy-gtk/empathy-account-widget.c:1234 +#: ../libempathy-gtk/empathy-account-widget.c:1224 msgid "Launch My Web Accounts" msgstr "Lanzar My Web Accounts" #. general handler -#: ../libempathy-gtk/empathy-account-widget.c:1242 +#: ../libempathy-gtk/empathy-account-widget.c:1232 #, c-format msgid "Edit %s" msgstr "Editar %s" -#: ../libempathy-gtk/empathy-account-widget.c:1592 +#: ../libempathy-gtk/empathy-account-widget.c:1582 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11 msgid "Username:" msgstr "Nombre de usuario:" -#: ../libempathy-gtk/empathy-account-widget.c:1910 +#: ../libempathy-gtk/empathy-account-widget.c:1900 msgid "A_pply" msgstr "_Aplicar" -#: ../libempathy-gtk/empathy-account-widget.c:1940 +#: ../libempathy-gtk/empathy-account-widget.c:1930 msgid "L_og in" msgstr "Iniciar _sesión" -#: ../libempathy-gtk/empathy-account-widget.c:2014 +#: ../libempathy-gtk/empathy-account-widget.c:2004 msgid "This account already exists on the server" msgstr "Esta cuenta ya existe en el servidor" -#: ../libempathy-gtk/empathy-account-widget.c:2017 +#: ../libempathy-gtk/empathy-account-widget.c:2007 msgid "Create a new account on the server" msgstr "Crear una cuenta nueva en el servidor" -#: ../libempathy-gtk/empathy-account-widget.c:2209 +#: ../libempathy-gtk/empathy-account-widget.c:2201 msgid "Ca_ncel" msgstr "Ca_ncelar" @@ -898,19 +890,19 @@ msgstr "Ca_ncelar" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2487 +#: ../libempathy-gtk/empathy-account-widget.c:2479 #, c-format msgid "%1$s on %2$s" msgstr "%1$s en %2$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2513 +#: ../libempathy-gtk/empathy-account-widget.c:2505 #, c-format msgid "%s Account" msgstr "Cuenta %s" -#: ../libempathy-gtk/empathy-account-widget.c:2517 +#: ../libempathy-gtk/empathy-account-widget.c:2509 msgid "New account" msgstr "Cuenta nueva" @@ -958,7 +950,7 @@ msgstr "Recordar contraseña" #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:6 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6 -#: ../libempathy-gtk/empathy-password-dialog.c:311 +#: ../libempathy-gtk/empathy-base-password-dialog.c:261 msgid "Remember password" msgstr "Recordar contraseña" @@ -1283,7 +1275,7 @@ msgid "STUN Server:" msgstr "Servidor STUN:" #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19 -#: ../libempathy-gtk/empathy-contactinfo-utils.c:112 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:114 msgid "Server:" msgstr "Servidor:" @@ -1453,8 +1445,8 @@ msgid "" "join a new chat room\"" msgstr "" "/say : enviar un a la conversación actual. Esto se usa " -"para enviar un mensaje comenzando por una «/». Por ejemplo: «/say /join se " -"usa para unirse a una sala de chat nueva»" +"para enviar un mensaje comenzando por una «/». Por ejemplo: «/say /join se usa " +"para unirse a una sala de chat nueva»" #: ../libempathy-gtk/empathy-chat.c:1100 msgid "/whois : display information about a contact" @@ -1570,20 +1562,20 @@ msgstr "Insertar emoticono" #. send button #: ../libempathy-gtk/empathy-chat.c:2319 -#: ../libempathy-gtk/empathy-ui-utils.c:1843 +#: ../libempathy-gtk/empathy-ui-utils.c:1867 msgid "_Send" msgstr "E_nviar" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2373 +#: ../libempathy-gtk/empathy-chat.c:2376 msgid "_Spelling Suggestions" msgstr "_Sugerencias ortográficas" -#: ../libempathy-gtk/empathy-chat.c:2462 +#: ../libempathy-gtk/empathy-chat.c:2465 msgid "Failed to retrieve recent logs" msgstr "Falló al recibir los registros recientes" -#: ../libempathy-gtk/empathy-chat.c:2599 +#: ../libempathy-gtk/empathy-chat.c:2602 #, c-format msgid "%s has disconnected" msgstr "%s se ha desconectado" @@ -1591,12 +1583,12 @@ msgstr "%s se ha desconectado" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2606 +#: ../libempathy-gtk/empathy-chat.c:2609 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%2$s expulsó a %1$s" -#: ../libempathy-gtk/empathy-chat.c:2609 +#: ../libempathy-gtk/empathy-chat.c:2612 #, c-format msgid "%s was kicked" msgstr "%s fue expulsado" @@ -1604,17 +1596,17 @@ msgstr "%s fue expulsado" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2617 +#: ../libempathy-gtk/empathy-chat.c:2620 #, c-format msgid "%1$s was banned by %2$s" msgstr "%2$s vetó a %1$s" -#: ../libempathy-gtk/empathy-chat.c:2620 +#: ../libempathy-gtk/empathy-chat.c:2623 #, c-format msgid "%s was banned" msgstr "%s fue vetado" -#: ../libempathy-gtk/empathy-chat.c:2624 +#: ../libempathy-gtk/empathy-chat.c:2627 #, c-format msgid "%s has left the room" msgstr "%s ha dejado la sala" @@ -1624,17 +1616,17 @@ msgstr "%s ha dejado la sala" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2633 +#: ../libempathy-gtk/empathy-chat.c:2636 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2658 +#: ../libempathy-gtk/empathy-chat.c:2661 #, c-format msgid "%s has joined the room" msgstr "%s ha entrado en la sala" -#: ../libempathy-gtk/empathy-chat.c:2683 +#: ../libempathy-gtk/empathy-chat.c:2686 #, c-format msgid "%s is now known as %s" msgstr "Ahora %s se llama %s" @@ -1642,87 +1634,88 @@ msgstr "Ahora %s se llama %s" #. We don't know if the incoming call has been accepted or not, so we #. * assume it hasn't and if it has, we'll set the proper status when #. * we get the new handler. -#: ../libempathy-gtk/empathy-chat.c:2836 -#: ../src/empathy-streamed-media-window.c:1895 -#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1535 -#: ../src/empathy-call-window.c:1585 ../src/empathy-call-window.c:2631 +#: ../libempathy-gtk/empathy-chat.c:2839 +#: ../src/empathy-streamed-media-window.c:1889 +#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1538 +#: ../src/empathy-call-window.c:1588 ../src/empathy-call-window.c:2631 msgid "Disconnected" msgstr "Desconectado" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3482 +#: ../libempathy-gtk/empathy-chat.c:3485 msgid "Would you like to store this password?" msgstr "¿Quiere guardar esta contraseña?" -#: ../libempathy-gtk/empathy-chat.c:3488 +#: ../libempathy-gtk/empathy-chat.c:3491 msgid "Remember" msgstr "Recordar" -#: ../libempathy-gtk/empathy-chat.c:3498 +#: ../libempathy-gtk/empathy-chat.c:3501 msgid "Not now" msgstr "Ahora no" -#: ../libempathy-gtk/empathy-chat.c:3542 +#: ../libempathy-gtk/empathy-chat.c:3545 +#: ../libempathy-gtk/empathy-bad-password-dialog.c:142 msgid "Retry" msgstr "Volver a intentarlo" -#: ../libempathy-gtk/empathy-chat.c:3546 +#: ../libempathy-gtk/empathy-chat.c:3549 msgid "Wrong password; please try again:" msgstr "Contraseña incorrecta; inténtelo de nuevo:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3676 +#: ../libempathy-gtk/empathy-chat.c:3679 msgid "This room is protected by a password:" msgstr "Esta sala está protegida por contraseña:" -#: ../libempathy-gtk/empathy-chat.c:3703 +#: ../libempathy-gtk/empathy-chat.c:3706 msgid "Join" msgstr "Unirse" -#: ../libempathy-gtk/empathy-chat.c:3891 ../src/empathy-event-manager.c:1281 +#: ../libempathy-gtk/empathy-chat.c:3894 ../src/empathy-event-manager.c:1281 msgid "Connected" msgstr "Conectado" -#: ../libempathy-gtk/empathy-chat.c:3946 +#: ../libempathy-gtk/empathy-chat.c:3949 msgid "Conversation" msgstr "Conversación" #. Translators: this string is a something like #. * "Escher Cat (SMS)" -#: ../libempathy-gtk/empathy-chat.c:3951 +#: ../libempathy-gtk/empathy-chat.c:3954 #, c-format msgid "%s (SMS)" msgstr "%s (SMS)" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265 msgid "Unknown or invalid identifier" msgstr "Identificador desconocido o no válido" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:432 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267 msgid "Contact blocking temporarily unavailable" msgstr "Bloqueo de contactos no disponible temporalmente" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269 msgid "Contact blocking unavailable" msgstr "Bloqueo de contactos no disponible" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:436 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271 msgid "Permission Denied" msgstr "Permiso denegado" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:440 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275 msgid "Could not block contact" msgstr "No se pudo bloquear el contacto" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:783 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622 msgid "Edit Blocked Contacts" msgstr "Editar contactos bloqueados" #. Account and Identifier #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:512 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:506 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2 -#: ../libempathy-gtk/empathy-individual-widget.c:1441 +#: ../libempathy-gtk/empathy-individual-widget.c:1475 #: ../src/empathy-chatrooms-window.ui.h:1 #: ../src/empathy-new-chatroom-dialog.ui.h:1 msgid "Account:" @@ -1740,57 +1733,57 @@ msgid "Remove" msgstr "Quitar" #. Copy Link Address menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:320 +#: ../libempathy-gtk/empathy-chat-text-view.c:322 #: ../libempathy-gtk/empathy-webkit-utils.c:277 msgid "_Copy Link Address" msgstr "_Copiar la dirección del enlace" #. Open Link menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:327 +#: ../libempathy-gtk/empathy-chat-text-view.c:329 #: ../libempathy-gtk/empathy-webkit-utils.c:284 msgid "_Open Link" msgstr "_Abrir enlace" #. Translators: timestamp displayed between conversations in #. * chat windows (strftime format string) -#: ../libempathy-gtk/empathy-chat-text-view.c:415 +#: ../libempathy-gtk/empathy-chat-text-view.c:417 msgid "%A %B %d %Y" msgstr "%A %d %B %Y" -#: ../libempathy-gtk/empathy-contact-dialogs.c:299 +#: ../libempathy-gtk/empathy-contact-dialogs.c:287 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247 msgid "Edit Contact Information" msgstr "Editar información del contacto" -#: ../libempathy-gtk/empathy-contact-dialogs.c:350 +#: ../libempathy-gtk/empathy-contact-dialogs.c:338 msgid "Personal Information" msgstr "Información personal" -#: ../libempathy-gtk/empathy-contact-dialogs.c:459 +#: ../libempathy-gtk/empathy-contact-dialogs.c:439 #: ../libempathy-gtk/empathy-individual-dialogs.c:119 msgid "New Contact" msgstr "Contacto nuevo" -#: ../libempathy-gtk/empathy-contact-dialogs.c:533 -#: ../libempathy-gtk/empathy-individual-dialogs.c:200 +#: ../libempathy-gtk/empathy-contact-dialogs.c:508 +#: ../libempathy-gtk/empathy-individual-dialogs.c:198 #, c-format msgid "Block %s?" msgstr "¿Bloquear a %s?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:538 -#: ../libempathy-gtk/empathy-individual-dialogs.c:255 +#: ../libempathy-gtk/empathy-contact-dialogs.c:513 +#: ../libempathy-gtk/empathy-individual-dialogs.c:253 #, c-format msgid "Are you sure you want to block '%s' from contacting you again?" msgstr "" "¿Está seguro de que quiere bloquear a «%s» para que no le vuelva a contactar?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:543 -#: ../libempathy-gtk/empathy-individual-dialogs.c:277 +#: ../libempathy-gtk/empathy-contact-dialogs.c:518 +#: ../libempathy-gtk/empathy-individual-dialogs.c:275 msgid "_Block" msgstr "_Bloquear" -#: ../libempathy-gtk/empathy-contact-dialogs.c:559 -#: ../libempathy-gtk/empathy-individual-dialogs.c:286 +#: ../libempathy-gtk/empathy-contact-dialogs.c:536 +#: ../libempathy-gtk/empathy-individual-dialogs.c:284 msgid "_Report this contact as abusive" msgid_plural "_Report these contacts as abusive" msgstr[0] "Info_rmar de este contacto como abusivo" @@ -1809,32 +1802,32 @@ msgid "_Block User" msgstr "_Bloquear usuario" #: ../libempathy-gtk/empathy-contact-list-view.c:1935 -#: ../libempathy-gtk/empathy-individual-view.c:2375 +#: ../libempathy-gtk/empathy-individual-view.c:2397 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "¿Realmente quiere quitar el grupo «%s»?" #: ../libempathy-gtk/empathy-contact-list-view.c:1937 -#: ../libempathy-gtk/empathy-individual-view.c:2378 +#: ../libempathy-gtk/empathy-individual-view.c:2400 msgid "Removing group" msgstr "Quitando grupo" #. Remove #: ../libempathy-gtk/empathy-contact-list-view.c:1986 -#: ../libempathy-gtk/empathy-contact-list-view.c:2063 -#: ../libempathy-gtk/empathy-individual-view.c:2433 -#: ../libempathy-gtk/empathy-individual-view.c:2636 +#: ../libempathy-gtk/empathy-contact-list-view.c:2059 +#: ../libempathy-gtk/empathy-individual-view.c:2455 +#: ../libempathy-gtk/empathy-individual-view.c:2671 msgid "_Remove" msgstr "_Quitar" -#: ../libempathy-gtk/empathy-contact-list-view.c:2016 -#: ../libempathy-gtk/empathy-individual-view.c:2500 +#: ../libempathy-gtk/empathy-contact-list-view.c:2015 +#: ../libempathy-gtk/empathy-individual-view.c:2532 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "¿Realmente quiere quitar el contacto «%s»?" -#: ../libempathy-gtk/empathy-contact-list-view.c:2018 -#: ../libempathy-gtk/empathy-individual-view.c:2521 +#: ../libempathy-gtk/empathy-contact-list-view.c:2017 +#: ../libempathy-gtk/empathy-individual-view.c:2553 msgid "Removing contact" msgstr "Quitando el contacto" @@ -1843,325 +1836,315 @@ msgstr "Quitando el contacto" msgid "_Add Contact…" msgstr "_Añadir contacto…" -#: ../libempathy-gtk/empathy-contact-menu.c:292 +#: ../libempathy-gtk/empathy-contact-menu.c:287 msgid "_Block Contact" msgstr "_Bloquear contacto" #. add chat button -#: ../libempathy-gtk/empathy-contact-menu.c:321 +#: ../libempathy-gtk/empathy-contact-menu.c:316 #: ../libempathy-gtk/empathy-individual-menu.c:758 #: ../libempathy-gtk/empathy-new-message-dialog.c:320 #: ../src/empathy-main-window-menubar.ui.h:16 msgid "_Chat" msgstr "_Chat" -#: ../libempathy-gtk/empathy-contact-menu.c:353 +#: ../libempathy-gtk/empathy-contact-menu.c:348 #: ../libempathy-gtk/empathy-individual-menu.c:850 msgctxt "menu item" msgid "_Audio Call" msgstr "Llamada de vo_z" -#: ../libempathy-gtk/empathy-contact-menu.c:386 +#: ../libempathy-gtk/empathy-contact-menu.c:381 #: ../libempathy-gtk/empathy-individual-menu.c:895 msgctxt "menu item" msgid "_Video Call" msgstr "Llamada de _vídeo" -#: ../libempathy-gtk/empathy-contact-menu.c:432 +#: ../libempathy-gtk/empathy-contact-menu.c:427 #: ../libempathy-gtk/empathy-individual-menu.c:948 #: ../src/empathy-main-window-menubar.ui.h:27 msgid "_Previous Conversations" msgstr "Conversaciones an_teriores" -#: ../libempathy-gtk/empathy-contact-menu.c:454 +#: ../libempathy-gtk/empathy-contact-menu.c:449 #: ../libempathy-gtk/empathy-individual-menu.c:989 msgid "Send File" msgstr "Enviar archivo" -#: ../libempathy-gtk/empathy-contact-menu.c:477 +#: ../libempathy-gtk/empathy-contact-menu.c:472 #: ../libempathy-gtk/empathy-individual-menu.c:1031 msgid "Share My Desktop" msgstr "Compartir mi escritorio" -#: ../libempathy-gtk/empathy-contact-menu.c:506 +#: ../libempathy-gtk/empathy-contact-menu.c:501 #: ../libempathy-gtk/empathy-individual-menu.c:1094 msgid "Infor_mation" msgstr "Infor_mación" -#: ../libempathy-gtk/empathy-contact-menu.c:552 +#: ../libempathy-gtk/empathy-contact-menu.c:547 msgctxt "Edit contact (contextual menu)" msgid "_Edit" msgstr "_Editar" -#: ../libempathy-gtk/empathy-contact-menu.c:606 +#: ../libempathy-gtk/empathy-contact-menu.c:601 #: ../libempathy-gtk/empathy-individual-menu.c:1285 #: ../src/empathy-chat-window.c:1011 msgid "Inviting you to this room" msgstr "Invitándolo a esta sala" -#: ../libempathy-gtk/empathy-contact-menu.c:637 +#: ../libempathy-gtk/empathy-contact-menu.c:632 #: ../libempathy-gtk/empathy-individual-menu.c:1331 msgid "_Invite to Chat Room" msgstr "_Invitar a sala de chat" #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:505 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:499 msgid "Search contacts" msgstr "Buscar contactos" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:535 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:529 msgid "Search: " msgstr "Buscar:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:593 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:587 msgid "_Add Contact" msgstr "_Añadir contacto" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:611 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:605 msgid "No contacts found" msgstr "No se encontraron contactos" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:627 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:621 msgid "Your message introducing yourself:" msgstr "Su mensaje de presentación:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:635 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:629 msgid "Please let me see when you're online. Thanks!" msgstr "Permítame ver cuando está en línea. Gracias." -#: ../libempathy-gtk/empathy-contact-widget.c:502 +#: ../libempathy-gtk/empathy-contact-widget.c:571 +#: ../libempathy-gtk/empathy-individual-widget.c:304 msgid "Channels:" msgstr "Canales:" -#: ../libempathy-gtk/empathy-contact-widget.c:797 -#: ../libempathy-gtk/empathy-individual-widget.c:421 +#: ../libempathy-gtk/empathy-contact-widget.c:751 +#: ../libempathy-gtk/empathy-individual-widget.c:455 msgid "Country ISO Code:" msgstr "Código ISO de país:" -#: ../libempathy-gtk/empathy-contact-widget.c:799 -#: ../libempathy-gtk/empathy-individual-widget.c:423 +#: ../libempathy-gtk/empathy-contact-widget.c:753 +#: ../libempathy-gtk/empathy-individual-widget.c:457 msgid "Country:" msgstr "País:" -#: ../libempathy-gtk/empathy-contact-widget.c:801 -#: ../libempathy-gtk/empathy-individual-widget.c:425 +#: ../libempathy-gtk/empathy-contact-widget.c:755 +#: ../libempathy-gtk/empathy-individual-widget.c:459 msgid "State:" msgstr "Estado:" -#: ../libempathy-gtk/empathy-contact-widget.c:803 -#: ../libempathy-gtk/empathy-individual-widget.c:427 +#: ../libempathy-gtk/empathy-contact-widget.c:757 +#: ../libempathy-gtk/empathy-individual-widget.c:461 msgid "City:" msgstr "Ciudad:" -#: ../libempathy-gtk/empathy-contact-widget.c:805 -#: ../libempathy-gtk/empathy-individual-widget.c:429 +#: ../libempathy-gtk/empathy-contact-widget.c:759 +#: ../libempathy-gtk/empathy-individual-widget.c:463 msgid "Area:" msgstr "Área:" -#: ../libempathy-gtk/empathy-contact-widget.c:807 -#: ../libempathy-gtk/empathy-individual-widget.c:431 +#: ../libempathy-gtk/empathy-contact-widget.c:761 +#: ../libempathy-gtk/empathy-individual-widget.c:465 msgid "Postal Code:" msgstr "Código postal:" -#: ../libempathy-gtk/empathy-contact-widget.c:809 -#: ../libempathy-gtk/empathy-individual-widget.c:433 +#: ../libempathy-gtk/empathy-contact-widget.c:763 +#: ../libempathy-gtk/empathy-individual-widget.c:467 msgid "Street:" msgstr "Calle:" -#: ../libempathy-gtk/empathy-contact-widget.c:811 -#: ../libempathy-gtk/empathy-individual-widget.c:435 +#: ../libempathy-gtk/empathy-contact-widget.c:765 +#: ../libempathy-gtk/empathy-individual-widget.c:469 msgid "Building:" msgstr "Edificio:" -#: ../libempathy-gtk/empathy-contact-widget.c:813 -#: ../libempathy-gtk/empathy-individual-widget.c:437 +#: ../libempathy-gtk/empathy-contact-widget.c:767 +#: ../libempathy-gtk/empathy-individual-widget.c:471 msgid "Floor:" msgstr "Planta:" -#: ../libempathy-gtk/empathy-contact-widget.c:815 -#: ../libempathy-gtk/empathy-individual-widget.c:439 +#: ../libempathy-gtk/empathy-contact-widget.c:769 +#: ../libempathy-gtk/empathy-individual-widget.c:473 msgid "Room:" msgstr "Habitación:" -#: ../libempathy-gtk/empathy-contact-widget.c:817 -#: ../libempathy-gtk/empathy-individual-widget.c:441 +#: ../libempathy-gtk/empathy-contact-widget.c:771 +#: ../libempathy-gtk/empathy-individual-widget.c:475 msgid "Text:" msgstr "Texto:" -#: ../libempathy-gtk/empathy-contact-widget.c:819 -#: ../libempathy-gtk/empathy-individual-widget.c:443 +#: ../libempathy-gtk/empathy-contact-widget.c:773 +#: ../libempathy-gtk/empathy-individual-widget.c:477 msgid "Description:" msgstr "Descripción:" -#: ../libempathy-gtk/empathy-contact-widget.c:821 -#: ../libempathy-gtk/empathy-individual-widget.c:445 +#: ../libempathy-gtk/empathy-contact-widget.c:775 +#: ../libempathy-gtk/empathy-individual-widget.c:479 msgid "URI:" msgstr "URI:" -#: ../libempathy-gtk/empathy-contact-widget.c:823 -#: ../libempathy-gtk/empathy-individual-widget.c:447 +#: ../libempathy-gtk/empathy-contact-widget.c:777 +#: ../libempathy-gtk/empathy-individual-widget.c:481 msgid "Accuracy Level:" msgstr "Nivel de precisión:" -#: ../libempathy-gtk/empathy-contact-widget.c:825 -#: ../libempathy-gtk/empathy-individual-widget.c:449 +#: ../libempathy-gtk/empathy-contact-widget.c:779 +#: ../libempathy-gtk/empathy-individual-widget.c:483 msgid "Error:" msgstr "Error:" -#: ../libempathy-gtk/empathy-contact-widget.c:827 -#: ../libempathy-gtk/empathy-individual-widget.c:451 +#: ../libempathy-gtk/empathy-contact-widget.c:781 +#: ../libempathy-gtk/empathy-individual-widget.c:485 msgid "Vertical Error (meters):" msgstr "Error vertical (metros):" -#: ../libempathy-gtk/empathy-contact-widget.c:829 -#: ../libempathy-gtk/empathy-individual-widget.c:453 +#: ../libempathy-gtk/empathy-contact-widget.c:783 +#: ../libempathy-gtk/empathy-individual-widget.c:487 msgid "Horizontal Error (meters):" msgstr "Error horizontal (metros):" -#: ../libempathy-gtk/empathy-contact-widget.c:831 -#: ../libempathy-gtk/empathy-individual-widget.c:455 +#: ../libempathy-gtk/empathy-contact-widget.c:785 +#: ../libempathy-gtk/empathy-individual-widget.c:489 msgid "Speed:" msgstr "Velocidad:" -#: ../libempathy-gtk/empathy-contact-widget.c:833 -#: ../libempathy-gtk/empathy-individual-widget.c:457 +#: ../libempathy-gtk/empathy-contact-widget.c:787 +#: ../libempathy-gtk/empathy-individual-widget.c:491 msgid "Bearing:" msgstr "Retardo:" -#: ../libempathy-gtk/empathy-contact-widget.c:835 -#: ../libempathy-gtk/empathy-individual-widget.c:459 +#: ../libempathy-gtk/empathy-contact-widget.c:789 +#: ../libempathy-gtk/empathy-individual-widget.c:493 msgid "Climb Speed:" msgstr "Velocidad de ascenso:" -#: ../libempathy-gtk/empathy-contact-widget.c:837 -#: ../libempathy-gtk/empathy-individual-widget.c:461 +#: ../libempathy-gtk/empathy-contact-widget.c:791 +#: ../libempathy-gtk/empathy-individual-widget.c:495 msgid "Last Updated on:" msgstr "Actualizado por última vez:" -#: ../libempathy-gtk/empathy-contact-widget.c:839 -#: ../libempathy-gtk/empathy-individual-widget.c:463 +#: ../libempathy-gtk/empathy-contact-widget.c:793 +#: ../libempathy-gtk/empathy-individual-widget.c:497 msgid "Longitude:" msgstr "Longitud_" -#: ../libempathy-gtk/empathy-contact-widget.c:841 -#: ../libempathy-gtk/empathy-individual-widget.c:465 +#: ../libempathy-gtk/empathy-contact-widget.c:795 +#: ../libempathy-gtk/empathy-individual-widget.c:499 msgid "Latitude:" msgstr "Latitud:" -#: ../libempathy-gtk/empathy-contact-widget.c:843 -#: ../libempathy-gtk/empathy-individual-widget.c:467 +#: ../libempathy-gtk/empathy-contact-widget.c:797 +#: ../libempathy-gtk/empathy-individual-widget.c:501 msgid "Altitude:" msgstr "Altitud:" -#: ../libempathy-gtk/empathy-contact-widget.c:896 -#: ../libempathy-gtk/empathy-contact-widget.c:911 -#: ../libempathy-gtk/empathy-individual-widget.c:559 -#: ../libempathy-gtk/empathy-individual-widget.c:574 -#: ../src/empathy-preferences.ui.h:17 +#: ../libempathy-gtk/empathy-contact-widget.c:850 +#: ../libempathy-gtk/empathy-contact-widget.c:865 +#: ../libempathy-gtk/empathy-individual-widget.c:593 +#: ../libempathy-gtk/empathy-individual-widget.c:608 +#: ../src/empathy-preferences.ui.h:15 msgid "Location" msgstr "Ubicación geográfica" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:913 -#: ../libempathy-gtk/empathy-individual-widget.c:576 +#: ../libempathy-gtk/empathy-contact-widget.c:867 +#: ../libempathy-gtk/empathy-individual-widget.c:610 #, c-format msgid "%s, %s" msgstr "%s, %s" -#: ../libempathy-gtk/empathy-contact-widget.c:965 -#: ../libempathy-gtk/empathy-individual-widget.c:625 +#: ../libempathy-gtk/empathy-contact-widget.c:919 +#: ../libempathy-gtk/empathy-individual-widget.c:659 msgid "%B %e, %Y at %R UTC" msgstr "%e de %B de %Y a las %R UTC" -#: ../libempathy-gtk/empathy-contact-widget.c:1047 -#: ../libempathy-gtk/empathy-individual-widget.c:867 +#: ../libempathy-gtk/empathy-contact-widget.c:1001 +#: ../libempathy-gtk/empathy-individual-widget.c:901 msgid "Save Avatar" msgstr "Guardar avatar" -#: ../libempathy-gtk/empathy-contact-widget.c:1103 -#: ../libempathy-gtk/empathy-individual-widget.c:925 +#: ../libempathy-gtk/empathy-contact-widget.c:1057 +#: ../libempathy-gtk/empathy-individual-widget.c:959 msgid "Unable to save avatar" msgstr "No se pudo guardar el avatar" -#: ../libempathy-gtk/empathy-contact-widget.c:1787 +#: ../libempathy-gtk/empathy-contact-widget.c:1745 #: ../libempathy-gtk/empathy-individual-menu.c:1066 -#: ../libempathy-gtk/empathy-individual-widget.c:1324 +#: ../libempathy-gtk/empathy-individual-widget.c:1358 msgid "Favorite" msgstr "Favorita" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:102 -#| msgid "Full name:" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:104 msgid "Full name" msgstr "Nombre completo" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:103 -#| msgid "Phone number:" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:105 msgid "Phone number" msgstr "Número de teléfono" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:104 -#| msgid "E-mail address:" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:106 msgid "E-mail address" msgstr "Dirección de correo-e" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:105 -#| msgid "Website:" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:107 msgid "Website" msgstr "Página web" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:106 -#| msgid "Birthday:" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:108 msgid "Birthday" msgstr "Cumpleaños" #. Note to translators: this is the caption for a string of the form "5 #. * minutes ago", and refers to the time since the contact last interacted #. * with their IM client. -#: ../libempathy-gtk/empathy-contactinfo-utils.c:111 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:113 msgid "Last seen:" msgstr "Última actividad:" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:113 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:115 msgid "Connected from:" msgstr "Conectado desde:" #. FIXME: once Idle implements SimplePresence using this information, we can #. * and should bin this. -#: ../libempathy-gtk/empathy-contactinfo-utils.c:117 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:119 msgid "Away message:" msgstr "Mensaje de ausencia:" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:130 -#| msgid "Work" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:132 msgid "work" msgstr "trabajo" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:131 -#| msgid "Romeo" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:133 msgid "home" msgstr "personal" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:132 -#| msgid "Mobile" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:134 msgid "mobile" msgstr "móvil" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:133 -#| msgid "Favorite" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:135 msgid "voice" msgstr "voz" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:134 -#| msgid "Preferences" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:136 msgid "preferred" msgstr "preferido" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:135 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:137 msgid "postal" msgstr "postal" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:136 -#| msgid "Appearance" +#: ../libempathy-gtk/empathy-contactinfo-utils.c:138 msgid "parcel" msgstr "grupo" @@ -2171,7 +2154,7 @@ msgstr "Ubicación en (fecha)\t" #. Alias #: ../libempathy-gtk/empathy-contact-widget.ui.h:3 -#: ../libempathy-gtk/empathy-individual-widget.c:1260 +#: ../libempathy-gtk/empathy-individual-widget.c:1294 msgid "Alias:" msgstr "Apodo:" @@ -2191,7 +2174,7 @@ msgstr "Detalles del contacto" #. Identifier to connect to Instant Messaging network #. Translators: Identifier to connect to Instant Messaging network #: ../libempathy-gtk/empathy-contact-widget.ui.h:8 -#: ../libempathy-gtk/empathy-individual-widget.c:1469 +#: ../libempathy-gtk/empathy-individual-widget.c:1503 msgid "Identifier:" msgstr "Identificador:" @@ -2230,17 +2213,17 @@ msgid "Select" msgstr "Seleccionar" #: ../libempathy-gtk/empathy-groups-widget.c:409 -#: ../src/empathy-main-window.c:1967 +#: ../src/empathy-main-window.c:1951 msgid "Group" msgstr "Grupo" -#: ../libempathy-gtk/empathy-individual-dialogs.c:260 +#: ../libempathy-gtk/empathy-individual-dialogs.c:258 msgid "The following identity will be blocked:" msgid_plural "The following identities will be blocked:" msgstr[0] "Se bloqueará la siguiente identidad:" msgstr[1] "Se bloquearán la siguientes identidades:" -#: ../libempathy-gtk/empathy-individual-dialogs.c:267 +#: ../libempathy-gtk/empathy-individual-dialogs.c:265 msgid "The following identity can not be blocked:" msgid_plural "The following identities can not be blocked:" msgstr[0] "No se puede bloquear la siguiente identidad:" @@ -2251,15 +2234,15 @@ msgstr[1] "No se pueden bloquear la siguientes identidades:" msgid "Linked Contacts" msgstr "Contactos enlazados" -#: ../libempathy-gtk/empathy-individual-linker.c:370 +#: ../libempathy-gtk/empathy-individual-linker.c:371 msgid "Select contacts to link" msgstr "Seleccionar contactos para enlazar" -#: ../libempathy-gtk/empathy-individual-linker.c:444 +#: ../libempathy-gtk/empathy-individual-linker.c:445 msgid "New contact preview" msgstr "Vista previa del contacto nuevo" -#: ../libempathy-gtk/empathy-individual-linker.c:488 +#: ../libempathy-gtk/empathy-individual-linker.c:489 msgid "Contacts selected in the list on the left will be linked together." msgstr "" "Se enlazarán entre sí los contactos seleccionados en la lista de la " @@ -2281,7 +2264,7 @@ msgstr "Seleccionar la cuenta que usar para realizar la llamada" #. * title #: ../libempathy-gtk/empathy-individual-menu.c:313 #: ../libempathy-gtk/empathy-log-window.ui.h:2 -#: ../src/empathy-streamed-media-window.c:1300 +#: ../src/empathy-streamed-media-window.c:1288 #: ../src/empathy-call-window.ui.h:2 msgid "Call" msgstr "Llamar" @@ -2316,11 +2299,11 @@ msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "_Enlazar contactos…" -#: ../libempathy-gtk/empathy-individual-view.c:2340 +#: ../libempathy-gtk/empathy-individual-view.c:2362 msgid "Delete and _Block" msgstr "Eliminar y _bloquear" -#: ../libempathy-gtk/empathy-individual-view.c:2509 +#: ../libempathy-gtk/empathy-individual-view.c:2541 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " @@ -2329,7 +2312,7 @@ msgstr "" "¿Realmente quiere quitar el contacto enlazado «%s»? Tenga en cuenta que esto " "quitará todos los contactos que componen este contacto enlazado." -#: ../libempathy-gtk/empathy-individual-widget.c:1608 +#: ../libempathy-gtk/empathy-individual-widget.c:1642 #, c-format msgid "Linked contact containing %u contact" msgid_plural "Linked contacts containing %u contacts" @@ -2414,137 +2397,137 @@ msgctxt "Unlink individual (button)" msgid "_Unlink" msgstr "_Desenlazar" -#: ../libempathy-gtk/empathy-log-window.c:634 +#: ../libempathy-gtk/empathy-log-window.c:621 msgid "History" msgstr "Histórico" -#: ../libempathy-gtk/empathy-log-window.c:689 +#: ../libempathy-gtk/empathy-log-window.c:676 msgid "Show" msgstr "Mostrar" -#: ../libempathy-gtk/empathy-log-window.c:711 +#: ../libempathy-gtk/empathy-log-window.c:698 msgid "Search" msgstr "Buscar" -#: ../libempathy-gtk/empathy-log-window.c:1159 +#: ../libempathy-gtk/empathy-log-window.c:1147 #, c-format msgid "Chat in %s" msgstr "Chatee en %s" -#: ../libempathy-gtk/empathy-log-window.c:1161 +#: ../libempathy-gtk/empathy-log-window.c:1149 #, c-format msgid "Chat with %s" msgstr "Chat con %s" -#: ../libempathy-gtk/empathy-log-window.c:1211 -#: ../libempathy-gtk/empathy-log-window.c:1358 +#: ../libempathy-gtk/empathy-log-window.c:1199 +#: ../libempathy-gtk/empathy-log-window.c:1346 msgctxt "A date with the time" msgid "%A, %e %B %Y %X" msgstr "%A, %e de %B de %Y a las %X" #. Translators: this is an emote: '* Danielle waves' -#: ../libempathy-gtk/empathy-log-window.c:1300 +#: ../libempathy-gtk/empathy-log-window.c:1288 #, c-format msgid "* %s %s" msgstr "* %s %s" #. Translators: this is a message: 'Danielle: hello' #. * The string in bold is the sender's name -#: ../libempathy-gtk/empathy-log-window.c:1306 +#: ../libempathy-gtk/empathy-log-window.c:1294 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: ../libempathy-gtk/empathy-log-window.c:1382 +#: ../libempathy-gtk/empathy-log-window.c:1370 #, c-format msgid "%s second" msgid_plural "%s seconds" msgstr[0] "%s segundo" msgstr[1] "%s segundos" -#: ../libempathy-gtk/empathy-log-window.c:1389 +#: ../libempathy-gtk/empathy-log-window.c:1377 #, c-format msgid "%s minute" msgid_plural "%s minutes" msgstr[0] "%s minuto" msgstr[1] "%s minutos" -#: ../libempathy-gtk/empathy-log-window.c:1397 +#: ../libempathy-gtk/empathy-log-window.c:1385 #, c-format msgid "Call took %s, ended at %s" msgstr "La llamada duró %s, finalizó a las %s" -#: ../libempathy-gtk/empathy-log-window.c:1729 +#: ../libempathy-gtk/empathy-log-window.c:1719 msgid "Today" msgstr "Hoy" -#: ../libempathy-gtk/empathy-log-window.c:1733 +#: ../libempathy-gtk/empathy-log-window.c:1723 msgid "Yesterday" msgstr "Ayer" #. Translators: A date such as '23 May 2010' (strftime format) -#: ../libempathy-gtk/empathy-log-window.c:1748 +#: ../libempathy-gtk/empathy-log-window.c:1738 msgid "%e %B %Y" msgstr "%e de %B de %Y" -#: ../libempathy-gtk/empathy-log-window.c:1829 -#: ../libempathy-gtk/empathy-log-window.c:3444 +#: ../libempathy-gtk/empathy-log-window.c:1826 +#: ../libempathy-gtk/empathy-log-window.c:3458 msgid "Anytime" msgstr "Cualquier hora" -#: ../libempathy-gtk/empathy-log-window.c:1916 -#: ../libempathy-gtk/empathy-log-window.c:2372 +#: ../libempathy-gtk/empathy-log-window.c:1915 +#: ../libempathy-gtk/empathy-log-window.c:2371 msgid "Anyone" msgstr "Cualquiera" -#: ../libempathy-gtk/empathy-log-window.c:2685 +#: ../libempathy-gtk/empathy-log-window.c:2684 msgid "Who" msgstr "Quién" -#: ../libempathy-gtk/empathy-log-window.c:2889 +#: ../libempathy-gtk/empathy-log-window.c:2893 msgid "When" msgstr "Cuándo" -#: ../libempathy-gtk/empathy-log-window.c:3005 +#: ../libempathy-gtk/empathy-log-window.c:3009 msgid "Anything" msgstr "Cualquier cosa" -#: ../libempathy-gtk/empathy-log-window.c:3007 +#: ../libempathy-gtk/empathy-log-window.c:3011 msgid "Text chats" msgstr "Chats de texto" -#: ../libempathy-gtk/empathy-log-window.c:3009 +#: ../libempathy-gtk/empathy-log-window.c:3013 #: ../src/empathy-preferences.ui.h:4 msgid "Calls" msgstr "Llamadas" -#: ../libempathy-gtk/empathy-log-window.c:3014 +#: ../libempathy-gtk/empathy-log-window.c:3018 msgid "Incoming calls" msgstr "Llamadas entrantes" -#: ../libempathy-gtk/empathy-log-window.c:3015 +#: ../libempathy-gtk/empathy-log-window.c:3019 msgid "Outgoing calls" msgstr "Llamadas salientes" -#: ../libempathy-gtk/empathy-log-window.c:3016 +#: ../libempathy-gtk/empathy-log-window.c:3020 msgid "Missed calls" msgstr "Llamadas perdidas" -#: ../libempathy-gtk/empathy-log-window.c:3038 +#: ../libempathy-gtk/empathy-log-window.c:3042 msgid "What" msgstr "Qué" -#: ../libempathy-gtk/empathy-log-window.c:3747 +#: ../libempathy-gtk/empathy-log-window.c:3751 msgid "Are you sure you want to delete all logs of previous conversations?" msgstr "" "¿Está seguro de que quiere eliminar todos los registros de conversaciones " "anteriores?" -#: ../libempathy-gtk/empathy-log-window.c:3751 +#: ../libempathy-gtk/empathy-log-window.c:3755 msgid "Clear All" msgstr "Limpiar todo" -#: ../libempathy-gtk/empathy-log-window.c:3758 +#: ../libempathy-gtk/empathy-log-window.c:3762 msgid "Delete from:" msgstr "Eliminar de:" @@ -2654,7 +2637,14 @@ msgstr "Llamada de vo_z" msgid "New Call" msgstr "Llamada nueva" -#: ../libempathy-gtk/empathy-password-dialog.c:274 +#: ../libempathy-gtk/empathy-bad-password-dialog.c:130 +#, c-format +#| msgid "Authentication failed" +msgid "Authentification failed for account %s" +msgstr "Falló la autenticación para la cuenta %s" + +#: ../libempathy-gtk/empathy-base-password-dialog.c:224 +#: ../libempathy-gtk/empathy-password-dialog.c:134 #, c-format msgid "" "Enter your password for account\n" @@ -2691,12 +2681,8 @@ msgstr "Pulse para hacer este estado uno favorito" msgid "Set status" msgstr "Establecer estado" -#: ../libempathy-gtk/empathy-presence-chooser.c:943 -msgid "Set your presence and current status" -msgstr "Establecer su presencia y estado actual" - #. Custom messages -#: ../libempathy-gtk/empathy-presence-chooser.c:1131 +#: ../libempathy-gtk/empathy-presence-chooser.c:1135 msgid "Custom messages…" msgstr "Mensajes personalizados…" @@ -2872,19 +2858,19 @@ msgstr "Recordar esta opción para futuras conexiones" msgid "Certificate Details" msgstr "Detalles del certificado" -#: ../libempathy-gtk/empathy-ui-utils.c:1738 +#: ../libempathy-gtk/empathy-ui-utils.c:1741 msgid "Unable to open URI" msgstr "No se pudo abrir el URI" -#: ../libempathy-gtk/empathy-ui-utils.c:1835 +#: ../libempathy-gtk/empathy-ui-utils.c:1859 msgid "Select a file" msgstr "Seleccionar un archivo" -#: ../libempathy-gtk/empathy-ui-utils.c:1907 +#: ../libempathy-gtk/empathy-ui-utils.c:1934 msgid "Insufficient free space to save file" msgstr "No hay espacio suficiente para guardar el archivo" -#: ../libempathy-gtk/empathy-ui-utils.c:1915 +#: ../libempathy-gtk/empathy-ui-utils.c:1942 #, c-format msgid "" "%s of free space are required to save this file, but only %s is available. " @@ -2893,7 +2879,7 @@ msgstr "" "Se requiere %s de espacio libre para guardar este archivo, pero sólo hay %s " "disponible. Elija otra ubicación." -#: ../libempathy-gtk/empathy-ui-utils.c:1959 +#: ../libempathy-gtk/empathy-ui-utils.c:1986 #, c-format msgid "Incoming file from %s" msgstr "Archivo entrante de %s" @@ -3073,23 +3059,23 @@ msgstr "Sin mensaje de eeror" msgid "Instant Message (Empathy)" msgstr "Mensaje instantáneo (Empathy)" -#: ../src/empathy.c:434 +#: ../src/empathy.c:433 msgid "Don't connect on startup" msgstr "No conectarse automáticamente al inicio" -#: ../src/empathy.c:438 +#: ../src/empathy.c:437 msgid "Don't display the contact list or any other dialogs on startup" msgstr "No mostrar la lista de contactos o cualquier otro diálogo al inicio" -#: ../src/empathy.c:453 +#: ../src/empathy.c:452 msgid "- Empathy IM Client" msgstr "- Cliente de mensajería instantánea Empathy" -#: ../src/empathy.c:640 +#: ../src/empathy.c:639 msgid "Error contacting the Account Manager" msgstr "Error al contactar con el Gestor de cuentas" -#: ../src/empathy.c:642 +#: ../src/empathy.c:641 #, c-format msgid "" "There was an error while trying to connect to the Telepathy Account Manager. " @@ -3177,7 +3163,7 @@ msgstr "" "Editar." #: ../src/empathy-account-assistant.c:220 -#: ../src/empathy-account-assistant.c:1271 +#: ../src/empathy-account-assistant.c:1272 msgid "An error occurred" msgstr "Ocurrió un error" @@ -3220,37 +3206,37 @@ msgstr "" msgid "Do you have an account you've been using with another chat program?" msgstr "¿Tiene una cuenta que haya estado usando con otro programa de chat?" -#: ../src/empathy-account-assistant.c:652 +#: ../src/empathy-account-assistant.c:653 msgid "Yes, import my account details from " msgstr "Sí, importar los detalles de mi cuenta desde " -#: ../src/empathy-account-assistant.c:673 +#: ../src/empathy-account-assistant.c:674 msgid "Yes, I'll enter my account details now" msgstr "Sí, introduciré ahora los detalles de mi cuenta" -#: ../src/empathy-account-assistant.c:695 +#: ../src/empathy-account-assistant.c:696 msgid "No, I want a new account" msgstr "No, quiero crear una cuenta nueva" -#: ../src/empathy-account-assistant.c:705 +#: ../src/empathy-account-assistant.c:706 msgid "No, I just want to see people online nearby for now" msgstr "No, por ahora sólo quiero ver la gente conectada cerca" -#: ../src/empathy-account-assistant.c:726 +#: ../src/empathy-account-assistant.c:727 msgid "Select the accounts you want to import:" msgstr "Seleccione las cuentas que quiere importar:" -#: ../src/empathy-account-assistant.c:813 +#: ../src/empathy-account-assistant.c:814 #: ../src/empathy-new-chatroom-dialog.c:625 #: ../src/empathy-new-chatroom-dialog.c:626 msgid "Yes" msgstr "Sí" -#: ../src/empathy-account-assistant.c:820 +#: ../src/empathy-account-assistant.c:821 msgid "No, that's all for now" msgstr "No, eso es todo por ahora" -#: ../src/empathy-account-assistant.c:1085 +#: ../src/empathy-account-assistant.c:1086 msgid "" "Empathy can automatically discover and chat with the people connected on the " "same network as you. If you want to use this feature, please check that the " @@ -3263,16 +3249,16 @@ msgstr "" "estos detalles posteriormente o desactivar esta característica usando el " "diálogo «Cuentas»." -#: ../src/empathy-account-assistant.c:1091 -#: ../src/empathy-account-assistant.c:1147 +#: ../src/empathy-account-assistant.c:1092 +#: ../src/empathy-account-assistant.c:1148 msgid "Edit->Accounts" msgstr "Editar->Cuentas" -#: ../src/empathy-account-assistant.c:1107 +#: ../src/empathy-account-assistant.c:1108 msgid "I do _not want to enable this feature for now" msgstr "_No quiero activar esta característica por ahora" -#: ../src/empathy-account-assistant.c:1143 +#: ../src/empathy-account-assistant.c:1144 msgid "" "You won't be able to chat with people connected to your local network, as " "telepathy-salut is not installed. If you want to enable this feature, please " @@ -3284,23 +3270,23 @@ msgstr "" "instale el paquete telepathy-salut y cree una cuenta de Gente cerca desde el " "diálogo Cuentas." -#: ../src/empathy-account-assistant.c:1149 +#: ../src/empathy-account-assistant.c:1150 msgid "telepathy-salut not installed" msgstr "telepathy-salut no está instalado" -#: ../src/empathy-account-assistant.c:1195 +#: ../src/empathy-account-assistant.c:1196 msgid "Messaging and VoIP Accounts Assistant" msgstr "Asistente de cuentas de mensajería y Voz IP" -#: ../src/empathy-account-assistant.c:1229 +#: ../src/empathy-account-assistant.c:1230 msgid "Welcome to Empathy" msgstr "Bienvenido a Empathy" -#: ../src/empathy-account-assistant.c:1238 +#: ../src/empathy-account-assistant.c:1239 msgid "Import your existing accounts" msgstr "Importar sus cuentas existentes" -#: ../src/empathy-account-assistant.c:1256 +#: ../src/empathy-account-assistant.c:1257 msgid "Please enter personal details" msgstr "Introduzca los detalles personales" @@ -3318,8 +3304,8 @@ msgid "Your new account has not been saved yet." msgstr "Aún no se ha guardado su cuenta nueva." #: ../src/empathy-accounts-dialog.c:345 -#: ../src/empathy-streamed-media-window.c:753 -#: ../src/empathy-call-window.c:1319 +#: ../src/empathy-streamed-media-window.c:757 +#: ../src/empathy-call-window.c:1325 msgid "Connecting…" msgstr "Conectando…" @@ -3415,11 +3401,11 @@ msgstr "" msgid "_Import…" msgstr "_Importar…" -#: ../src/empathy-auth-client.c:249 +#: ../src/empathy-auth-client.c:284 msgid " - Empathy authentication client" msgstr ": Cliente de autenticación de Empathy" -#: ../src/empathy-auth-client.c:265 +#: ../src/empathy-auth-client.c:300 msgid "Empathy authentication client" msgstr "Cliente de autenticación de Empathy" @@ -3435,96 +3421,96 @@ msgstr ": Cliente de sonido/vídeo Empathy" msgid "Empathy Audio/Video Client" msgstr "Cliente de sonido/vídeo Empathy" -#: ../src/empathy-streamed-media-window.c:430 +#: ../src/empathy-streamed-media-window.c:433 msgid "Contrast" msgstr "Contraste" -#: ../src/empathy-streamed-media-window.c:433 +#: ../src/empathy-streamed-media-window.c:436 msgid "Brightness" msgstr "Brillo" -#: ../src/empathy-streamed-media-window.c:436 +#: ../src/empathy-streamed-media-window.c:439 msgid "Gamma" msgstr "Gamma" -#: ../src/empathy-streamed-media-window.c:541 +#: ../src/empathy-streamed-media-window.c:545 msgid "Volume" msgstr "Volumen" -#: ../src/empathy-streamed-media-window.c:1109 +#: ../src/empathy-streamed-media-window.c:1097 msgid "_Sidebar" msgstr "Barra _lateral" -#: ../src/empathy-streamed-media-window.c:1129 +#: ../src/empathy-streamed-media-window.c:1117 msgid "Audio input" msgstr "Entrada de voz" -#: ../src/empathy-streamed-media-window.c:1133 +#: ../src/empathy-streamed-media-window.c:1121 msgid "Video input" msgstr "Entrada de vídeo" -#: ../src/empathy-streamed-media-window.c:1141 +#: ../src/empathy-streamed-media-window.c:1129 msgid "Dialpad" msgstr "Teclado de llamada" -#: ../src/empathy-streamed-media-window.c:1152 +#: ../src/empathy-streamed-media-window.c:1140 msgid "Details" msgstr "Detalles" #. translators: Call is a noun and %s is the contact name. This string #. * is used in the window title -#: ../src/empathy-streamed-media-window.c:1221 -#: ../src/empathy-call-window.c:1928 +#: ../src/empathy-streamed-media-window.c:1209 +#: ../src/empathy-call-window.c:1927 #, c-format msgid "Call with %s" msgstr "Llamada con %s" -#: ../src/empathy-streamed-media-window.c:1454 -#: ../src/empathy-call-window.c:2172 +#: ../src/empathy-streamed-media-window.c:1442 +#: ../src/empathy-call-window.c:2171 msgid "The IP address as seen by the machine" msgstr "La dirección IP como la ve la máquina" -#: ../src/empathy-streamed-media-window.c:1456 -#: ../src/empathy-call-window.c:2174 +#: ../src/empathy-streamed-media-window.c:1444 +#: ../src/empathy-call-window.c:2173 msgid "The IP address as seen by a server on the Internet" msgstr "La dirección IP como la ve el servidor de Internet" -#: ../src/empathy-streamed-media-window.c:1458 -#: ../src/empathy-call-window.c:2176 +#: ../src/empathy-streamed-media-window.c:1446 +#: ../src/empathy-call-window.c:2175 msgid "The IP address of the peer as seen by the other side" msgstr "La dirección IP del par como la ve la otra parte" -#: ../src/empathy-streamed-media-window.c:1460 -#: ../src/empathy-call-window.c:2178 +#: ../src/empathy-streamed-media-window.c:1448 +#: ../src/empathy-call-window.c:2177 msgid "The IP address of a relay server" msgstr "La dirección IP de un servidor de desvío" -#: ../src/empathy-streamed-media-window.c:1462 -#: ../src/empathy-call-window.c:2180 +#: ../src/empathy-streamed-media-window.c:1450 +#: ../src/empathy-call-window.c:2179 msgid "The IP address of the multicast group" msgstr "La dirección IP del grupo multicast" +#: ../src/empathy-streamed-media-window.c:1838 +#: ../src/empathy-streamed-media-window.c:1841 #: ../src/empathy-streamed-media-window.c:1844 #: ../src/empathy-streamed-media-window.c:1847 -#: ../src/empathy-streamed-media-window.c:1850 -#: ../src/empathy-streamed-media-window.c:1853 msgctxt "codec" msgid "Unknown" msgstr "Desconocido" #. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-streamed-media-window.c:2145 +#: ../src/empathy-streamed-media-window.c:2139 #, c-format msgid "Connected — %d:%02dm" msgstr "Conectado — %d:%02dm" -#: ../src/empathy-streamed-media-window.c:2206 -#: ../src/empathy-call-window.c:2983 +#: ../src/empathy-streamed-media-window.c:2200 +#: ../src/empathy-call-window.c:3033 msgid "Technical Details" msgstr "Detalles técnicos" -#: ../src/empathy-streamed-media-window.c:2244 -#: ../src/empathy-call-window.c:3022 +#: ../src/empathy-streamed-media-window.c:2238 +#: ../src/empathy-call-window.c:3072 #, c-format msgid "" "%s's software does not understand any of the audio formats supported by your " @@ -3533,8 +3519,8 @@ msgstr "" "El software de «%s» no entiende ninguno de los formatos de vídeo soportados " "por su equipo" -#: ../src/empathy-streamed-media-window.c:2249 -#: ../src/empathy-call-window.c:3027 +#: ../src/empathy-streamed-media-window.c:2243 +#: ../src/empathy-call-window.c:3077 #, c-format msgid "" "%s's software does not understand any of the video formats supported by your " @@ -3543,8 +3529,8 @@ msgstr "" "El software de «%s» no entiende ninguno de los formatos de vídeo soportados " "por su equipo" -#: ../src/empathy-streamed-media-window.c:2255 -#: ../src/empathy-call-window.c:3033 +#: ../src/empathy-streamed-media-window.c:2249 +#: ../src/empathy-call-window.c:3083 #, c-format msgid "" "Can't establish a connection to %s. One of you might be on a network that " @@ -3553,29 +3539,29 @@ msgstr "" "No se puede establecer una conexión con %s. Uno de los dos puede estar en " "una red que no acepta conexiones directas." -#: ../src/empathy-streamed-media-window.c:2261 -#: ../src/empathy-call-window.c:3039 +#: ../src/empathy-streamed-media-window.c:2255 +#: ../src/empathy-call-window.c:3089 msgid "There was a failure on the network" msgstr "Hubo un fallo en la red" -#: ../src/empathy-streamed-media-window.c:2265 -#: ../src/empathy-call-window.c:3043 +#: ../src/empathy-streamed-media-window.c:2259 +#: ../src/empathy-call-window.c:3093 msgid "" "The audio formats necessary for this call are not installed on your computer" msgstr "" "No están instalados en su equipo los formatos de sonido necesarios para esta " "llamada" -#: ../src/empathy-streamed-media-window.c:2268 -#: ../src/empathy-call-window.c:3046 +#: ../src/empathy-streamed-media-window.c:2262 +#: ../src/empathy-call-window.c:3096 msgid "" "The video formats necessary for this call are not installed on your computer" msgstr "" "No están instalados en su equipo los formatos de vídeo necesarios para esta " "llamada" -#: ../src/empathy-streamed-media-window.c:2278 -#: ../src/empathy-call-window.c:3058 +#: ../src/empathy-streamed-media-window.c:2272 +#: ../src/empathy-call-window.c:3108 #, c-format msgid "" "Something unexpected happened in a Telepathy component. Please Informe de este error y añada los registros obtenidos de la ventana " "de «Depuración» en el menú de Ayuda." -#: ../src/empathy-streamed-media-window.c:2286 -#: ../src/empathy-call-window.c:3067 +#: ../src/empathy-streamed-media-window.c:2280 +#: ../src/empathy-call-window.c:3117 msgid "There was a failure in the call engine" msgstr "Hubo un fallo en el motor de llamadas" -#: ../src/empathy-streamed-media-window.c:2289 -#: ../src/empathy-call-window.c:3070 +#: ../src/empathy-streamed-media-window.c:2283 +#: ../src/empathy-call-window.c:3120 msgid "The end of the stream was reached" msgstr "Se llegó al final del flujo" -#: ../src/empathy-streamed-media-window.c:2329 -#: ../src/empathy-call-window.c:3110 +#: ../src/empathy-streamed-media-window.c:2323 +#: ../src/empathy-call-window.c:3160 msgid "Can't establish audio stream" msgstr "No se puede establecer el flujo de voz" -#: ../src/empathy-streamed-media-window.c:2339 -#: ../src/empathy-call-window.c:3120 +#: ../src/empathy-streamed-media-window.c:2333 +#: ../src/empathy-call-window.c:3170 msgid "Can't establish video stream" msgstr "No se puede establecer el flujo de vídeo" @@ -3863,7 +3849,7 @@ msgstr "Gestionar salas favoritas" msgid "Incoming video call" msgstr "Llamada de vídeo entrante" -#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1552 +#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1555 msgid "Incoming call" msgstr "Llamada entrante" @@ -3878,7 +3864,7 @@ msgid "%s is calling you. Do you want to answer?" msgstr "%s le está llamando. ¿Quiere responder?" #: ../src/empathy-event-manager.c:529 ../src/empathy-event-manager.c:730 -#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1558 +#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1561 #, c-format msgid "Incoming call from %s" msgstr "Llamada entrante de %s" @@ -3896,7 +3882,7 @@ msgid "_Answer with video" msgstr "_Responder con vídeo" #: ../src/empathy-event-manager.c:730 ../src/empathy-event-manager.c:763 -#: ../src/empathy-call-window.c:1558 +#: ../src/empathy-call-window.c:1561 #, c-format msgid "Incoming video call from %s" msgstr "Llamada de vídeo entrante de %s" @@ -3939,7 +3925,7 @@ msgstr "Le han invitado a unirse a %s" msgid "Incoming file transfer from %s" msgstr "Transferencia de archivo entrante de %s" -#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:378 +#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:376 msgid "Password required" msgstr "Se requiere una contraseña" @@ -4095,62 +4081,62 @@ msgstr "Protocolo" msgid "Source" msgstr "Origen" -#: ../src/empathy-main-window.c:395 +#: ../src/empathy-main-window.c:393 msgid "Provide Password" msgstr "Escriba su contraseña" -#: ../src/empathy-main-window.c:401 +#: ../src/empathy-main-window.c:399 msgid "Disconnect" msgstr "Desconectar" -#: ../src/empathy-main-window.c:642 +#: ../src/empathy-main-window.c:636 msgid "No match found" msgstr "No se encontró ninguna coincidencia" -#: ../src/empathy-main-window.c:750 +#: ../src/empathy-main-window.c:744 #, c-format msgid "Sorry, %s accounts can’t be used until your %s software is updated." msgstr "" "Las cuentas de %s no se pueden usar hasta que no se haya actualizado su " "software de %s." -#: ../src/empathy-main-window.c:818 +#: ../src/empathy-main-window.c:812 msgid "Update software..." msgstr "Actualizar software…" -#: ../src/empathy-main-window.c:824 ../src/empathy-main-window.c:949 +#: ../src/empathy-main-window.c:818 ../src/empathy-main-window.c:939 msgid "Close" msgstr "Cerrar" -#: ../src/empathy-main-window.c:937 +#: ../src/empathy-main-window.c:927 msgid "Reconnect" msgstr "Reconectar" -#: ../src/empathy-main-window.c:943 +#: ../src/empathy-main-window.c:933 msgid "Edit Account" msgstr "Editar cuenta" #. Translators: this string will be something like: #. * Top up My Account ($1.23)..." -#: ../src/empathy-main-window.c:1088 +#: ../src/empathy-main-window.c:1072 #, c-format msgid "Top up %s (%s)..." msgstr "Recargar %s (%s)…" -#: ../src/empathy-main-window.c:1135 +#: ../src/empathy-main-window.c:1119 msgid "Top up account credit" msgstr "Recargar el saldo de la cuenta" #. top up button -#: ../src/empathy-main-window.c:1206 +#: ../src/empathy-main-window.c:1190 msgid "Top Up..." msgstr "Recargar…" -#: ../src/empathy-main-window.c:1949 +#: ../src/empathy-main-window.c:1933 msgid "Contact" msgstr "Contacto" -#: ../src/empathy-main-window.c:2324 +#: ../src/empathy-main-window.c:2308 msgid "Contact List" msgstr "Lista de contactos" @@ -4310,79 +4296,79 @@ msgstr "Lista de salas" msgid "_Room:" msgstr "_Sala:" -#: ../src/empathy-preferences.c:169 +#: ../src/empathy-preferences.c:167 msgid "Message received" msgstr "Mensaje recibido" -#: ../src/empathy-preferences.c:170 +#: ../src/empathy-preferences.c:168 msgid "Message sent" msgstr "Mensaje enviado" -#: ../src/empathy-preferences.c:171 +#: ../src/empathy-preferences.c:169 msgid "New conversation" msgstr "Conversación nueva" -#: ../src/empathy-preferences.c:172 +#: ../src/empathy-preferences.c:170 msgid "Contact goes online" msgstr "El contacto se conecta" -#: ../src/empathy-preferences.c:173 +#: ../src/empathy-preferences.c:171 msgid "Contact goes offline" msgstr "El contacto se desconecta" -#: ../src/empathy-preferences.c:174 +#: ../src/empathy-preferences.c:172 msgid "Account connected" msgstr "Cuenta conectada" -#: ../src/empathy-preferences.c:175 +#: ../src/empathy-preferences.c:173 msgid "Account disconnected" msgstr "Cuenta desconectada" -#: ../src/empathy-preferences.c:484 +#: ../src/empathy-preferences.c:476 msgid "Language" msgstr "Idioma" #. translators: Contact name for the chat theme preview -#: ../src/empathy-preferences.c:734 +#: ../src/empathy-preferences.c:726 msgid "Juliet" msgstr "Julieta" #. translators: Contact name for the chat theme preview -#: ../src/empathy-preferences.c:741 +#: ../src/empathy-preferences.c:733 msgid "Romeo" msgstr "Romeo" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:747 +#: ../src/empathy-preferences.c:739 msgid "O Romeo, Romeo, wherefore art thou Romeo?" msgstr "¡Oh, Romeo, Romeo!, ¿dónde estás que no te veo?" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:750 +#: ../src/empathy-preferences.c:742 msgid "Deny thy father and refuse thy name;" msgstr "Niega a tu padre y rehúsa tu nombre;" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:753 +#: ../src/empathy-preferences.c:745 msgid "Or if thou wilt not, be but sworn my love" msgstr "O, si no quieres, júrame tan sólo que me amas" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:756 +#: ../src/empathy-preferences.c:748 msgid "And I'll no longer be a Capulet." msgstr "Y dejaré yo de ser una Capuleto" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:759 +#: ../src/empathy-preferences.c:751 msgid "Shall I hear more, or shall I speak at this?" msgstr "¿Debo oír más o contestar a lo dicho?" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:762 +#: ../src/empathy-preferences.c:754 msgid "Juliet has disconnected" msgstr "Julieta se ha desconectado" -#: ../src/empathy-preferences.c:1175 +#: ../src/empathy-preferences.c:1158 msgid "Preferences" msgstr "Preferencias" @@ -4442,35 +4428,27 @@ msgstr "Activar la revisión ortográfica para idiomas:" msgid "General" msgstr "General" -#: ../src/empathy-preferences.ui.h:15 -msgid "Input level:" -msgstr "Nivel de entrada:" - #: ../src/empathy-preferences.ui.h:16 -msgid "Input volume:" -msgstr "Volumen de entrada:" - -#: ../src/empathy-preferences.ui.h:18 msgid "Location sources:" msgstr "Orígenes de las ubicaciones:" -#: ../src/empathy-preferences.ui.h:19 +#: ../src/empathy-preferences.ui.h:17 msgid "Log conversations" msgstr "Registrar conversaciones" -#: ../src/empathy-preferences.ui.h:20 +#: ../src/empathy-preferences.ui.h:18 msgid "Notifications" msgstr "Notificaciones" -#: ../src/empathy-preferences.ui.h:21 +#: ../src/empathy-preferences.ui.h:19 msgid "Play sound for events" msgstr "Reproducir sonido para eventos" -#: ../src/empathy-preferences.ui.h:22 +#: ../src/empathy-preferences.ui.h:20 msgid "Privacy" msgstr "Privacidad" -#: ../src/empathy-preferences.ui.h:23 +#: ../src/empathy-preferences.ui.h:21 msgid "" "Reduced location accuracy means that nothing more precise than your city, " "state and country will be published. GPS coordinates will be accurate to 1 " @@ -4480,23 +4458,23 @@ msgstr "" "preciso que su ciudad, estado y país. Las coordenadas GPS tendrán un valor " "aleatorio añadido 1 lugar decimal." -#: ../src/empathy-preferences.ui.h:24 +#: ../src/empathy-preferences.ui.h:22 msgid "Show _smileys as images" msgstr "Mostrar los _emoticonos como imágenes" -#: ../src/empathy-preferences.ui.h:25 +#: ../src/empathy-preferences.ui.h:23 msgid "Show contact _list in rooms" msgstr "Mostrar _lista de contactos en salas" -#: ../src/empathy-preferences.ui.h:26 +#: ../src/empathy-preferences.ui.h:24 msgid "Sounds" msgstr "Sonidos" -#: ../src/empathy-preferences.ui.h:27 +#: ../src/empathy-preferences.ui.h:25 msgid "Spell Checking" msgstr "Revisión ortográfica" -#: ../src/empathy-preferences.ui.h:28 +#: ../src/empathy-preferences.ui.h:26 msgid "" "The list of languages reflects only the languages for which you have a " "dictionary installed." @@ -4504,52 +4482,52 @@ msgstr "" "La lista de idiomas refleja sólo los idiomas para los cuales tiene un " "diccionario instalado." -#: ../src/empathy-preferences.ui.h:29 +#: ../src/empathy-preferences.ui.h:27 msgid "Themes" msgstr "Temas" -#: ../src/empathy-preferences.ui.h:30 +#: ../src/empathy-preferences.ui.h:28 msgid "Use _echo cancellation to improve call quality" msgstr "Usar cancelación de _eco para mejorar la calidad de las llamadas" -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:29 msgid "Variant:" msgstr "Variante:" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:30 msgid "_Automatically connect on startup" msgstr "C_onectarse automáticamente al inicio" -#: ../src/empathy-preferences.ui.h:33 +#: ../src/empathy-preferences.ui.h:31 msgid "_Cellphone" msgstr "Teléfono _móvil" -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:32 msgid "_Enable bubble notifications" msgstr "_Activar notificaciones de burbuja" -#: ../src/empathy-preferences.ui.h:35 +#: ../src/empathy-preferences.ui.h:33 msgid "_Enable sound notifications" msgstr "_Activar notificaciones de sonido" -#: ../src/empathy-preferences.ui.h:36 +#: ../src/empathy-preferences.ui.h:34 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:37 +#: ../src/empathy-preferences.ui.h:35 msgid "_Network (IP, Wi-Fi)" msgstr "_Red (IP, Wi-Fi)" -#: ../src/empathy-preferences.ui.h:38 +#: ../src/empathy-preferences.ui.h:36 msgid "_Open new chats in separate windows" msgstr "_Abrir charlas nuevas en ventanas separadas" -#: ../src/empathy-preferences.ui.h:39 +#: ../src/empathy-preferences.ui.h:37 msgid "_Publish location to my contacts" msgstr "_Publicar mi ubicación a mis contactos" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:41 +#: ../src/empathy-preferences.ui.h:39 msgid "_Reduce location accuracy" msgstr "_Reducir la precisión de la ubicación" @@ -4677,60 +4655,60 @@ msgstr "" "El gestor de conexiones seleccionado no soporta la extensión de depuración " "remota." -#: ../src/empathy-invite-participant-dialog.c:186 -#: ../src/empathy-invite-participant-dialog.c:214 +#: ../src/empathy-invite-participant-dialog.c:197 +#: ../src/empathy-invite-participant-dialog.c:225 msgid "Invite Participant" msgstr "Invitar participante" -#: ../src/empathy-invite-participant-dialog.c:187 +#: ../src/empathy-invite-participant-dialog.c:198 msgid "Choose a contact to invite into the conversation:" msgstr "Elegir un contacto para invitar a la conversación:" -#: ../src/empathy-invite-participant-dialog.c:210 +#: ../src/empathy-invite-participant-dialog.c:221 msgid "Invite" msgstr "Invitar" -#: ../src/empathy-accounts.c:184 +#: ../src/empathy-accounts.c:183 msgid "Don't display any dialogs; do any work (eg, importing) and exit" msgstr "" "No mostrar ningún diálogo; realizar cualquier trabajo (ej. importar) y salir" -#: ../src/empathy-accounts.c:188 +#: ../src/empathy-accounts.c:187 msgid "" "Don't display any dialogs unless there are only \"People Nearby\" accounts" msgstr "" "No mostrar ningún diálogo a no ser que sólo existan cuentas «Gente cerca»" -#: ../src/empathy-accounts.c:192 +#: ../src/empathy-accounts.c:191 msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)" msgstr "" "Cuenta proporcionada inicialmente seleccionada (ej. gabble/jabber/ejemplo)" -#: ../src/empathy-accounts.c:194 +#: ../src/empathy-accounts.c:193 msgid "" msgstr "" -#: ../src/empathy-accounts.c:197 +#: ../src/empathy-accounts.c:196 msgid "Show account assistant" msgstr "Mostrar el asistente de cuentas" -#: ../src/empathy-accounts.c:203 +#: ../src/empathy-accounts.c:202 msgid "- Empathy Accounts" msgstr ": Cuentas en Empathy" -#: ../src/empathy-accounts.c:242 +#: ../src/empathy-accounts.c:238 msgid "Empathy Accounts" msgstr "Cuentas en Empathy" -#: ../src/empathy-debugger.c:70 +#: ../src/empathy-debugger.c:69 msgid "Show a particular service" msgstr "Mostrar un servicio en particular" -#: ../src/empathy-debugger.c:75 +#: ../src/empathy-debugger.c:74 msgid "- Empathy Debugger" msgstr "- Depurador de Empathy" -#: ../src/empathy-debugger.c:114 +#: ../src/empathy-debugger.c:113 msgid "Empathy Debugger" msgstr "Depurador de Empathy" @@ -4738,39 +4716,39 @@ msgstr "Depurador de Empathy" msgid "- Empathy Chat Client" msgstr ": Cliente de chat Empathy" -#: ../src/empathy-notifications-approver.c:203 +#: ../src/empathy-notifications-approver.c:190 msgid "Respond" msgstr "Respuesta" -#: ../src/empathy-notifications-approver.c:217 -#: ../src/empathy-call-window.c:1562 +#: ../src/empathy-notifications-approver.c:204 +#: ../src/empathy-call-window.c:1565 msgid "Reject" msgstr "Rechazar" -#: ../src/empathy-notifications-approver.c:222 -#: ../src/empathy-notifications-approver.c:227 -#: ../src/empathy-call-window.c:1563 +#: ../src/empathy-notifications-approver.c:209 +#: ../src/empathy-notifications-approver.c:214 +#: ../src/empathy-call-window.c:1566 msgid "Answer" msgstr "Responder" -#: ../src/empathy-notifications-approver.c:227 +#: ../src/empathy-notifications-approver.c:214 msgid "Answer with video" msgstr "Responder con vídeo" -#: ../src/empathy-notifications-approver.c:235 -#: ../src/empathy-notifications-approver.c:245 +#: ../src/empathy-notifications-approver.c:222 +#: ../src/empathy-notifications-approver.c:232 msgid "Decline" msgstr "Rechazar" -#: ../src/empathy-notifications-approver.c:239 -#: ../src/empathy-notifications-approver.c:250 +#: ../src/empathy-notifications-approver.c:226 +#: ../src/empathy-notifications-approver.c:237 msgid "Accept" msgstr "Aceptar" #. translators: the 'Provide' button is displayed in a notification #. * bubble when Empathy is asking for an account password; clicking on it #. * brings the password popup. -#: ../src/empathy-notifications-approver.c:260 +#: ../src/empathy-notifications-approver.c:247 msgid "Provide" msgstr "Proporcionar" @@ -4785,36 +4763,34 @@ msgstr "%s intentó llamarle, pero estaba en otra llamada." msgid "i" msgstr "Información" -#: ../src/empathy-call-window.c:2879 +#: ../src/empathy-call-window.c:2929 msgid "On hold" msgstr "En espera" -#: ../src/empathy-call-window.c:2882 +#: ../src/empathy-call-window.c:2932 msgid "Mute" msgstr "Silenciar" -#: ../src/empathy-call-window.c:2884 +#: ../src/empathy-call-window.c:2934 msgid "Duration" msgstr "Duración" #. Translators: 'status - minutes:seconds' the caller has been connected -#: ../src/empathy-call-window.c:2887 +#: ../src/empathy-call-window.c:2937 #, c-format msgid "%s — %d:%02dm" msgstr "%s: %d:%02dm" -#: ../src/empathy-call-window.c:3157 +#: ../src/empathy-call-window.c:3207 #, c-format msgid "Your current balance is %s." msgstr "su balance actual es %s." -#: ../src/empathy-call-window.c:3161 -#| msgid "You don't have enough credit in order to place this call" +#: ../src/empathy-call-window.c:3211 msgid "Sorry, you don’t have enough credit for that call." msgstr "No tiene crédito suficiente para hacer esta llamada." -#: ../src/empathy-call-window.c:3163 -#| msgid "Top Up..." +#: ../src/empathy-call-window.c:3213 msgid "Top Up" msgstr "Recargar" @@ -4822,6 +4798,21 @@ msgstr "Recargar" msgid "_Match case" msgstr "_Coincidir con capitalización" +#~ msgid "Call volume" +#~ msgstr "Volumen de la llamada" + +#~ msgid "Call volume, as a percentage." +#~ msgstr "Volumen de la llamada, como porcentaje" + +#~ msgid "Set your presence and current status" +#~ msgstr "Establecer su presencia y estado actual" + +#~ msgid "Input level:" +#~ msgstr "Nivel de entrada:" + +#~ msgid "Input volume:" +#~ msgstr "Volumen de entrada:" + #~ msgid "Contact ID:" #~ msgstr "ID del contacto:" diff --git a/po/et.po b/po/et.po index 6a01c8b0..d5cd1e05 100644 --- a/po/et.po +++ b/po/et.po @@ -4,22 +4,22 @@ # Copyright (C) 2005–2011 Free Software Foundation, Inc. # # Ivar Smolin , 2005–2011. -# Mattias Põldaru , 2009–2011. +# Mattias Põldaru , 2009, 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: empathy MASTER\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=empathy&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-03-30 17:38+0000\n" -"PO-Revision-Date: 2011-04-03 13:19+0300\n" +"product=empathy&keywords=I18N+L10N&component=General\n" +"POT-Creation-Date: 2011-11-05 01:30+0000\n" +"PO-Revision-Date: 2011-11-06 11:28+0200\n" "Last-Translator: Mattias Põldaru \n" -"Language-Team: Estonian \n" +"Language-Team: Estonian <>\n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Content-Transfer-Encoding: 8bits\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" "X-Poedit-Language: Estonian\n" "X-Poedit-Country: ESTONIA\n" @@ -40,6 +40,18 @@ msgstr "Välksõnumiklient" msgid "Always open a separate chat window for new chats." msgstr "Uutele vestlustele avatakse alati eraldi aken." +msgid "Call volume" +msgstr "Kõne valjus" + +msgid "Call volume, as a percentage." +msgstr "Kõne valjus protsentides." + +msgid "Camera device" +msgstr "Kaameraseade" + +msgid "Camera position" +msgstr "Kaamera asukoht" + msgid "" "Character to add after nickname when using nick completion (tab) in group " "chat." @@ -50,6 +62,9 @@ msgstr "" msgid "Chat window theme" msgstr "Jututoaakende teema" +msgid "Chat window theme variant" +msgstr "Jututoaakende teema" + msgid "" "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")." msgstr "" @@ -64,6 +79,13 @@ msgstr "Kas peab ühenduste haldureid kasutama" msgid "Contact list sort criterion" msgstr "Kontaktide nimekirja sortimise alus" +msgid "D-Bus object path of the last account selected to join a room." +msgstr "Toaga ühinemiseks viimati valitud konto D-Busi objekti asukoht" + +msgid "Default camera device to use in video calls, e.g. /dev/video0." +msgstr "" +"Vaikimisi kaameraseade, mida kasutatakse videokõnede jaoks, nt /dev/video0" + msgid "Default directory to select an avatar image from" msgstr "Vaikimisi kataloog, millest valida avatari pilti" @@ -83,6 +105,9 @@ msgstr "" "Saabuvate sündmuste kuvamine teatealal. Kui väär, näidatakse neid kasutajale " "otse." +msgid "Echo cancellation support" +msgstr "Kaja vähendamise tugi" + msgid "Empathy can publish the user's location" msgstr "Empathy tohib näidata kasutaja asukohta" @@ -98,9 +123,6 @@ msgstr "Empathy tohib kasutada võrku asukoha arvamiseks" msgid "Empathy default download folder" msgstr "Empathy vaikimisi allalaadimiste kataloog" -msgid "Empathy has migrated butterfly logs" -msgstr "Empathy on üle kandnud butterfly logid" - msgid "Empathy should auto-away when idle" msgstr "Empathy peaks jõudeoleku korral automaatselt eemaloleku määrama" @@ -128,6 +150,9 @@ msgstr "Peida peaaken" msgid "Hide the main window." msgstr "Peaakna peitmine." +msgid "Last account selected in Join Room dialog" +msgstr "Viimane konto, mis valiti \"Ühine jututoaga\" dialoogis" + msgid "Nick completed character" msgstr "Nimele lisamise märk" @@ -170,6 +195,12 @@ msgstr "Kui kontakt siseneb, kuvatakse hüpikteade" msgid "Pop up notifications when a contact logs out" msgstr "Kui kontakt väljub, kuvatakse hüpikteade" +msgid "Position the camera preview should be during a call." +msgstr "Enda kaamera pildi asukoht kõne ajal." + +msgid "Show Balance in contact list" +msgstr "Kontaktide nimekirjas näidatakse kontojääki" + msgid "Show avatars" msgstr "Näidatakse avatare" @@ -203,6 +234,10 @@ msgstr "Vestlusakna külgpaneeli asukoht (pikslites)." msgid "The theme that is used to display the conversation in chat windows." msgstr "Kujundus, mida kasutatakse jututoaakende vestluste kuvamisel." +msgid "" +"The theme variant that is used to display the conversation in chat windows." +msgstr "Kujundus, mida kasutatakse jututoaakende vestluste kuvamisel." + msgid "Use graphical smileys" msgstr "Tujunägudele kasutatakse pilte" @@ -224,9 +259,6 @@ msgstr "Kas Empathy võib kasutada mobiilivõrku asukoha arvamiseks." msgid "Whether Empathy can use the network to guess the location." msgstr "Kas Empathy võib kasutada võrku asukoha arvamiseks." -msgid "Whether Empathy has migrated butterfly logs." -msgstr "Kas Empathy on üle kandnud butterfly logid." - msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "Kas Empathy peaks käivitumisel ise kontodesse sisse logima." @@ -262,6 +294,9 @@ msgstr "" msgid "Whether to convert smileys into graphical images in conversations." msgstr "Kas tujunäod tuleks teisendada vestlustes piltideks." +msgid "Whether to enable Pulseaudio's echo cancellation filter." +msgstr "Kas lubada Pulseaudio kaja vähendamise filter." + msgid "Whether to play a sound to notify of contacts logging into the network." msgstr "Kas esitada heli kontakti sisenemisest märkuandmiseks." @@ -306,6 +341,9 @@ msgstr "" msgid "Whether to show a popup notification when receiving a new message." msgstr "Kas näidata hüpikteadet uue teate vastuvõtmisest märkuandmiseks." +msgid "Whether to show account balances in the contact list." +msgstr "Kas näidata kontaktide nimekirjas kontojääki." + msgid "" "Whether to show avatars for contacts in the contact list and chat windows." msgstr "Kas näidata kontaktide nimekirjas ja vestlusakendes avatare." @@ -362,8 +400,21 @@ msgstr "Valitud fail pole harilik fail" msgid "The selected file is empty" msgstr "Valitud fail on tühi" +#, c-format +msgid "Missed call from %s" +msgstr "Vastamata kõne kasutajalt %s" + +#. Translators: this is an outgoing call, e.g. 'Called Alice' +#, c-format +msgid "Called %s" +msgstr "Helistad kasutajale %s" + +#, c-format +msgid "Call from %s" +msgstr "Kõne kasutajalt %s" + msgid "Socket type not supported" -msgstr "Sokli pole toetatud." +msgstr "Sokli liik pole toetatud." msgid "No reason was specified" msgstr "Põhjendust pole määratud." @@ -402,10 +453,7 @@ msgid "Offline" msgstr "Ühendamata" #. translators: presence type is unknown -#. translators: encoding video codec is unknown -#. translators: encoding audio codec is unknown -#. translators: decoding video codec is unknown -#. translators: decoding audio codec is unknown +msgctxt "presence" msgid "Unknown" msgstr "Tundmatu" @@ -495,6 +543,9 @@ msgstr "" "Serveri sertifikaadi pikkus või sertifikaatide keti pikkus ületas " "krüptograafiateegi eelduslikud piirid" +msgid "Your software is too old" +msgstr "Sinu tarkvara on liiga vana" + msgid "People Nearby" msgstr "Lähedalasuvad inimesed" @@ -546,8 +597,8 @@ msgstr[1] "%d kuud tagasi" msgid "in the future" msgstr "tulevikus" -msgid "All" -msgstr "Kõik" +msgid "All accounts" +msgstr "Kõik kontod" msgid "Account" msgstr "Konto" @@ -565,9 +616,12 @@ msgstr "Port" msgid "%s:" msgstr "%s:" +msgid "My Web Accounts" +msgstr "Minu veebikontod" + #, c-format -msgid "The account %s is edited via My Web Accounts." -msgstr "Kontot %s muudetakse Minu Veebikontode kaudu." +msgid "The account %s is edited via %s." +msgstr "Kontot %s muudetakse %s kaudu." #, c-format msgid "The account %s cannot be edited in Empathy." @@ -576,6 +630,11 @@ msgstr "Kontot %s pole võimalik Empathy abil muuta." msgid "Launch My Web Accounts" msgstr "Käivita Minu Veebikontod" +#. general handler +#, c-format +msgid "Edit %s" +msgstr "Muuda %s" + msgid "Username:" msgstr "Kasutajanimi:" @@ -585,15 +644,6 @@ msgstr "_Rakenda" msgid "L_og in" msgstr "Logi _sisse" -#. Account and Identifier -msgid "Account:" -msgstr "Konto:" - -#. translators: this is the label of a checkbox used to enable/disable IM -#. * accounts -msgid "_Enabled" -msgstr "_Lubatud" - msgid "This account already exists on the server" msgstr "See konto on serveris juba olemas" @@ -707,6 +757,13 @@ msgstr "Puudub" msgid "Character set:" msgstr "Kooditabel:" +msgid "" +"Most IRC servers don't need a password, so if you're not sure, don't enter a " +"password." +msgstr "" +"Enamik IRC servereid ei vaja parooli. Kui sa pole kindel, ära sisesta " +"parooli." + msgid "Network" msgstr "Võrk" @@ -833,6 +890,9 @@ msgstr "Seonduse avastamine" msgid "Discover the STUN server automatically" msgstr "STUN-serveri automaatne tuvastus" +msgid "Ignore TLS Errors" +msgstr "TLS vigasid eiratakse" + msgid "Interval (seconds)" msgstr "Intervall (sekundites)" @@ -866,6 +926,9 @@ msgstr "Server:" msgid "Transport:" msgstr "Transport:" +msgid "Use this account to call _landlines and mobile phones" +msgstr "Seda kontot kasutatakse _fiksvõrku ja mobiiltelefonidele helistamiseks" + msgid "What is your SIP account password?" msgstr "Mis on sinu SIP-konto parool?" @@ -896,9 +959,15 @@ msgstr "Pole võimalik pilti teisendada" msgid "None of the accepted image formats are supported on your system" msgstr "Sinu süsteem ei toeta ühtegi sobivatest pildivormingutest" +msgid "Couldn't save picture to file" +msgstr "Pilti pole võimalik salvestada faili" + msgid "Select Your Avatar Image" msgstr "Vali oma avatari pilt" +msgid "Take a picture..." +msgstr "Tee pilt..." + msgid "No Image" msgstr "Pilti pole" @@ -911,6 +980,24 @@ msgstr "Kõik failid" msgid "Click to enlarge" msgstr "Klõpsa suurendamiseks" +msgid "There was an error starting the call" +msgstr "Kõne alustamisel esines viga" + +msgid "The specified contact doesn't support calls" +msgstr "Valitud kontakt ei toeta kõnesid" + +msgid "The specified contact is offline" +msgstr "Valitud kontakt pole võrku ühendatud" + +msgid "The specified contact is not valid" +msgstr "Valitud kontakt pole korrektne" + +msgid "Emergency calls are not supported on this protocol" +msgstr "See protokoll ei toeta hädaabikõnesid" + +msgid "You don't have enough credit in order to place this call" +msgstr "Sul pole selle kõne tegemiseks piisavalt krediiti" + msgid "Failed to open private chat" msgstr "Privaatvestluse avamine nurjus" @@ -920,6 +1007,10 @@ msgstr "Selles vestluses ei ole teemad toetatud" msgid "You are not allowed to change the topic" msgstr "Sul puudub õigus teemat vahetada" +#, c-format +msgid "“%s” is not a valid contact ID" +msgstr "\"%s\" ei ole sobiv kontakti ID" + msgid "/clear: clear all messages from the current conversation" msgstr "/clear: sellest vestluse kõigi sõnumite kustutamine" @@ -960,6 +1051,9 @@ msgstr "" "algava sõnumi saatmiseks, näiteks: \"/say /join abil saad uued jututoaga " "liituda\"" +msgid "/whois : display information about a contact" +msgstr "/whois : kontakti kohta andmete kuvamine" + msgid "" "/help []: show all supported commands. If is defined, " "show its usage." @@ -977,6 +1071,27 @@ msgstr "Tundmatu käsk" msgid "Unknown command; see /help for the available commands" msgstr "Tundmatu käsk; kirjuta /help, et näha saadaolevaid käske" +msgid "insufficient balance to send message" +msgstr "sõnumi saatmiseks pole piisavalt krediiti" + +#, c-format +msgid "Error sending message '%s': %s" +msgstr "Viga teate '%s' saatmisel: %s" + +#, c-format +msgid "Error sending message: %s" +msgstr "Viga teate saatmisel: %s" + +#. translators: error used when user doesn't have enough credit on his +#. * account to send the message. +#, c-format +msgid "insufficient balance to send message. Top up." +msgstr "" +"sõnumi saatmiseks pole piisavalt krediiti. Lae kontot." + +msgid "not capable" +msgstr "pole võimeline" + msgid "offline" msgstr "ühendamata" @@ -995,10 +1110,6 @@ msgstr "pole veel teostatud" msgid "unknown" msgstr "tundmatu" -#, c-format -msgid "Error sending message '%s': %s" -msgstr "Viga teate '%s' saatmisel: %s" - msgid "Topic:" msgstr "Teema:" @@ -1084,6 +1195,9 @@ msgstr "%s sisenes tuppa" msgid "%s is now known as %s" msgstr "%s on nüüd nimega %s" +#. We don't know if the incoming call has been accepted or not, so we +#. * assume it hasn't and if it has, we'll set the proper status when +#. * we get the new handler. msgid "Disconnected" msgstr "Ühendus katkestatud" @@ -1116,6 +1230,12 @@ msgstr "Ühendatud" msgid "Conversation" msgstr "Vestlus" +#. Translators: this string is a something like +#. * "Escher Cat (SMS)" +#, c-format +msgid "%s (SMS)" +msgstr "%s (SMS)" + msgid "Unknown or invalid identifier" msgstr "Tundmatu või sobimatu identifikaator" @@ -1134,6 +1254,16 @@ msgstr "Kontakti polnud võimalik blokeerida" msgid "Edit Blocked Contacts" msgstr "Blokitud kontaktide muutmine" +#. Account and Identifier +msgid "Account:" +msgstr "Konto:" + +msgid "Blocked Contacts" +msgstr "Blokitud kontaktid" + +msgid "Remove" +msgstr "Eemalda" + #. Copy Link Address menu item msgid "_Copy Link Address" msgstr "_Kopeeri lingi aadress" @@ -1183,12 +1313,6 @@ msgstr "Tellimuse päring" msgid "_Block User" msgstr "_Blokeeri kasutaja" -msgid "Ungrouped" -msgstr "Grupeerimata" - -msgid "Favorite People" -msgstr "Lemmikud" - #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "Kas tahad tõesti eemaldada grupi '%s'?" @@ -1213,6 +1337,7 @@ msgstr "Lisa _kontakt…" msgid "_Block Contact" msgstr "_Blokeeri kontakt" +#. add chat button msgid "_Chat" msgstr "_Vestlus" @@ -1233,9 +1358,6 @@ msgstr "Faili saatmine" msgid "Share My Desktop" msgstr "Jaga minu töölauda" -msgid "Favorite" -msgstr "Lemmik" - msgid "Infor_mation" msgstr "_Andmed" @@ -1262,23 +1384,14 @@ msgstr "Lisa _kontakt…" msgid "No contacts found" msgstr "Kontakte ei leitud" -msgid "Select a contact" -msgstr "Vali kontakt" - -msgid "Full name:" -msgstr "Täisnimi:" - -msgid "Phone number:" -msgstr "Telefoninumber:" +msgid "Your message introducing yourself:" +msgstr "Sind tutvustav teade:" -msgid "E-mail address:" -msgstr "Meiliaadress:" +msgid "Please let me see when you're online. Thanks!" +msgstr "Palun luba mul näha, kui sa oled sisse logitud. Aitäh!" -msgid "Website:" -msgstr "Veebileht:" - -msgid "Birthday:" -msgstr "Sünnipäev:" +msgid "Channels:" +msgstr "Kanalid:" msgid "Country ISO Code:" msgstr "Riigi ISO-kood:" @@ -1369,6 +1482,59 @@ msgstr "Avatari salvestamine" msgid "Unable to save avatar" msgstr "Avatari salvestamine pole võimalik" +msgid "Favorite" +msgstr "Lemmik" + +msgid "Full name" +msgstr "Täisnimi" + +msgid "Phone number" +msgstr "Telefoninumber" + +msgid "E-mail address" +msgstr "Meiliaadress" + +msgid "Website" +msgstr "Veebileht" + +msgid "Birthday" +msgstr "Sünnipäev" + +#. Note to translators: this is the caption for a string of the form "5 +#. * minutes ago", and refers to the time since the contact last interacted +#. * with their IM client. +msgid "Last seen:" +msgstr "Viimati nähti:" + +msgid "Connected from:" +msgstr "Ühendusviis:" + +#. FIXME: once Idle implements SimplePresence using this information, we can +#. * and should bin this. +msgid "Away message:" +msgstr "Eemalolekuteade:" + +msgid "work" +msgstr "töö" + +msgid "home" +msgstr "kodu" + +msgid "mobile" +msgstr "mobiil" + +msgid "voice" +msgstr "häälega" + +msgid "preferred" +msgstr "eelistatud" + +msgid "postal" +msgstr "postipakk" + +msgid "parcel" +msgstr "kullerpakk" + msgid "Location at (date)\t" msgstr "Asukoht kuupäeval\t" @@ -1449,6 +1615,27 @@ msgstr "Vasakul nimekirjas olevad kontaktid liidetakse kokku." msgid "%s (%s)" msgstr "%s (%s)" +msgid "Select account to use to place the call" +msgstr "Vali konto, mille kaudu kõne teha" + +#. translators: Call is a noun. This string is used in the window +#. * title +msgid "Call" +msgstr "Kõne" + +msgid "Mobile" +msgstr "Mobiil" + +msgid "Work" +msgstr "Töö" + +msgid "HOME" +msgstr "KODU" + +#. add SMS button +msgid "_SMS" +msgstr "_SMS" + msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "_Redaktor" @@ -1537,48 +1724,177 @@ msgctxt "Unlink individual (button)" msgid "_Unlink" msgstr "_Eralda" -msgid "Date" -msgstr "Kuupäev" +msgid "History" +msgstr "Ajalugu" + +msgid "Show" +msgstr "Näita" + +msgid "Search" +msgstr "Otsing" -#. Tab Label -msgid "Conversations" -msgstr "Vestlused" +#, c-format +msgid "Chat in %s" +msgstr "Vestlus kohas %s" -msgid "Find Next" -msgstr "Otsi järgmine" +#, c-format +msgid "Chat with %s" +msgstr "Vestlus kasutajaga %s" -msgid "Find Previous" -msgstr "Otsi eelmine" +msgctxt "A date with the time" +msgid "%A, %e %B %Y %X" +msgstr "%A, %d. %B %Y %X" -msgid "Previous Conversations" -msgstr "Eelmised vestlused" +#. Translators: this is an emote: '* Danielle waves' +#, c-format +msgid "* %s %s" +msgstr "* %s %s" -#. Tab Label -msgid "Search" -msgstr "Otsing" +#. Translators: this is a message: 'Danielle: hello' +#. * The string in bold is the sender's name +#, c-format +msgid "%s: %s" +msgstr "%s: %s" -#. Searching *for* something -msgid "_For:" -msgstr "_Otsing:" +#, c-format +msgid "%s second" +msgid_plural "%s seconds" +msgstr[0] "%s sekund" +msgstr[1] "%s sekundit" -msgid "Contact ID:" -msgstr "Kontakti ID:" +#, c-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minutit" -#. add chat button -msgid "C_hat" -msgstr "_Vestle" +#, c-format +msgid "Call took %s, ended at %s" +msgstr "Kõne algus %s, lõpp %s" + +msgid "Today" +msgstr "Täna" + +msgid "Yesterday" +msgstr "Eile" + +#. Translators: A date such as '23 May 2010' (strftime format) +msgid "%e %B %Y" +msgstr "%d. %B %Y" + +msgid "Anytime" +msgstr "Millal tahes" + +msgid "Anyone" +msgstr "Kes tahes" + +msgid "Who" +msgstr "Kes" + +msgid "When" +msgstr "Millal" + +msgid "Anything" +msgstr "Kõik liigid" + +msgid "Text chats" +msgstr "Tekstivestlused" + +msgid "Calls" +msgstr "Kõned" + +msgid "Incoming calls" +msgstr "Sissetulevad kõned" + +msgid "Outgoing calls" +msgstr "Väljuvad kõned" + +msgid "Missed calls" +msgstr "Vastamata kõned" + +msgid "What" +msgstr "Mis" + +msgid "Are you sure you want to delete all logs of previous conversations?" +msgstr "Kas oled kindel, et tahad kustutada kõigi eelmiste vestluste logid?" + +msgid "Clear All" +msgstr "Puhasta kõik" + +msgid "Delete from:" +msgstr "Kustuta kust:" + +msgid "Loading..." +msgstr "Laadimine..." + +msgid "Chat" +msgstr "Vestlus" + +msgid "Delete All History..." +msgstr "Kogu ajaloo kustutamine..." + +msgid "Profile" +msgstr "Profiil" + +msgid "Video" +msgstr "Video" + +msgid "_Edit" +msgstr "_Redaktor" + +msgid "_File" +msgstr "_Fail" + +msgid "page 2" +msgstr "leht 2" + +msgid "The contact is offline" +msgstr "Kontakt pole võrku ühendatud" + +msgid "The specified contact is either invalid or unknown" +msgstr "Määratud kontakt on kas vigane või tundmatu" + +msgid "The contact does not support this kind of conversation" +msgstr "Kontakt ei toeta seda laadi vestlust" + +msgid "The requested functionality is not implemented for this protocol" +msgstr "Päritud võimalused ei ole selle protokolli jaoks teostatud" + +msgid "Could not start a conversation with the given contact" +msgstr "Antud kontaktiga pole võimalik vestlust alustada" + +msgid "You are banned from this channel" +msgstr "Sind blokeeriti sellel kanalil" + +msgid "This channel is full" +msgstr "See kanal on täis" + +msgid "You must be invited to join this channel" +msgstr "Selle kanaliga ühinemiseks vajad kutset" + +msgid "Can't proceed while disconnected" +msgstr "Ilma ühenduseta pole võimalik jätkata" + +msgid "Permission denied" +msgstr "Ligipääs keelatud" + +msgid "There was an error starting the conversation" +msgstr "Vesetluse alustamisel esines viga" + +msgid "Enter a contact identifier or phone number:" +msgstr "Sisesta kontakti identifitseerif info või telefoninumber:" #. Tweak the dialog msgid "New Conversation" msgstr "Uus vestlus" -#. add video toggle -msgid "Send _Video" -msgstr "Saada _video" +#. add video button +msgid "_Video Call" +msgstr "_Videokõne" -#. add chat button -msgid "C_all" -msgstr "_Helista" +#. add audio button +msgid "_Audio Call" +msgstr "_Audiokõne" #. Tweak the dialog msgid "New Call" @@ -1613,9 +1929,6 @@ msgstr "Klõpsa selle oleku lisamiseks lemmikutesse" msgid "Set status" msgstr "Määra olek" -msgid "Set your presence and current status" -msgstr "Kohalolu ja praeguse oleku määramine" - #. Custom messages msgid "Custom messages…" msgstr "Muud teated…" @@ -1631,12 +1944,18 @@ msgstr "Uus %s konto" msgid "Find:" msgstr "Otsi:" -msgid "Match case" -msgstr "Tõstutundlik" +msgid "Mat_ch case" +msgstr "_Tõstutundlik" msgid "Phrase not found" msgstr "Fraasi ei leitud" +msgid "_Next" +msgstr "_Järgmine" + +msgid "_Previous" +msgstr "_Eelmine" + msgid "Received an instant message" msgstr "Võeti vastu välksõnum" @@ -1667,17 +1986,15 @@ msgstr "Väljuv kõne" msgid "Voice call ended" msgstr "Kõne lõpetati" -msgid "Enter Custom Message" -msgstr "Sisesta oma teade" - msgid "Edit Custom Messages" msgstr "Teadete muutmine" -msgid "Save _New Status Message" -msgstr "Salvesta _uus olekusõnum" +#, c-format +msgid "Message edited at %s" +msgstr "Sõnumit muudeti kohas %s" -msgid "Saved Status Messages" -msgstr "Salvestatud olekuteated" +msgid "Normal" +msgstr "Tavaline" msgid "Classic" msgstr "Klassikaline" @@ -1859,12 +2176,6 @@ msgstr "Lääne" msgid "Vietnamese" msgstr "Vietnami" -msgid "The selected contact cannot receive files." -msgstr "Valitud kontakt pole suuteline faile vastu võtma." - -msgid "The selected contact is offline." -msgstr "Valitud kontakt pole võrku ühendatud." - msgid "No error message" msgstr "Veateade puudub" @@ -2123,6 +2434,9 @@ msgstr "" "Sa oled akent sulgemas ja see tühistab tehtud muudatused\n" "Kas sa soovid seda teha?" +msgid "Add…" +msgstr "Lisa…" + msgid "Loading account information" msgstr "Konto andmete laadimine" @@ -2139,9 +2453,6 @@ msgstr "" "Uue konto lisamiseks pead paigaldama tugiprogrammi iga protokolli jaoks, " "mida tahad kasutada." -msgid "_Add…" -msgstr "_Lisa…" - msgid "_Import…" msgstr "_Impordi…" @@ -2193,11 +2504,6 @@ msgstr "Üksikasjad" msgid "Call with %s" msgstr "Kõne kasutajaga %s" -#. translators: Call is a noun. This string is used in the window -#. * title -msgid "Call" -msgstr "Kõne" - msgid "The IP address as seen by the machine" msgstr "IP-aadress, nagu masin seda näeb" @@ -2213,6 +2519,10 @@ msgstr "Edastusserveri IP-aadress" msgid "The IP address of the multicast group" msgstr "Multicast grupi IP-aadress" +msgctxt "codec" +msgid "Unknown" +msgstr "Tundmatu" + #. Translators: number of minutes:seconds the caller has been connected #, c-format msgid "Connected — %d:%02dm" @@ -2283,26 +2593,14 @@ msgstr "Videovoogu pole võimalik alustada" msgid "Audio" msgstr "Audio" -msgid "Call the contact again" -msgstr "Helista kontaktile uuesti" - -msgid "Camera Off" -msgstr "Kaamera väljas" - -msgid "Camera On" -msgstr "Kaamera sees" - msgid "Decoding Codec:" msgstr "Dekodeeriv koodek:" -msgid "Disable camera and stop sending video" -msgstr "Keela kaamera ja lõpeta video saatmine" +msgid "Disable camera" +msgstr "Keela kaamera" -msgid "Enable camera and send video" -msgstr "Kaamera lubamine ja video saatmine" - -msgid "Enable camera but don't send video" -msgstr "Kaamera lubamine ilma video saatmiseta" +msgid "Display the dialpad" +msgstr "Kuva sõrmlaud" msgid "Encoding Codec:" msgstr "Kodeeriv koodek:" @@ -2316,11 +2614,11 @@ msgstr "Praeguse kõne lõpetamine" msgid "Local Candidate:" msgstr "Kohalik kandidaat:" -msgid "Preview" -msgstr "Eelvaade" +msgid "Maximise me" +msgstr "Maksimeeri mind" -msgid "Redial" -msgstr "Vali uuesti" +msgid "Minimise me" +msgstr "Minimeeri mind" msgid "Remote Candidate:" msgstr "Kaugkandidaat:" @@ -2328,27 +2626,54 @@ msgstr "Kaugkandidaat:" msgid "Send Audio" msgstr "Saada heli" -msgid "Toggle audio transmission" -msgstr "Heliedastuse lüliti" +msgid "Send Video" +msgstr "Video saatmine" -msgid "V_ideo" -msgstr "V_ideo" +msgid "Show dialpad" +msgstr "Sõrmlaua näitamine" -msgid "Video" -msgstr "Video" +msgid "Start a video call" +msgstr "Videokõne alustamine" -msgid "Video Off" -msgstr "Video väljas" +msgid "Start an audio call" +msgstr "Audiokõne alustamine" -msgid "Video On" -msgstr "Video sees" +msgid "Swap camera" +msgstr "Kaamera vahetamine" -msgid "Video Preview" -msgstr "Video eelvaade" +msgid "Toggle audio transmission" +msgstr "Heliedastuse lüliti" + +msgid "Toggle video transmission" +msgstr "Videoedastuse lüliti" + +msgid "Unknown" +msgstr "Tundmatu" + +msgid "Video call" +msgstr "Videokõne" msgid "_Call" msgstr "_Helista" +msgid "_Camera" +msgstr "_Kaamera" + +msgid "_Contents" +msgstr "_Sisukord" + +msgid "_Debug" +msgstr "Si_lumine" + +msgid "_Help" +msgstr "A_bi" + +msgid "_Microphone" +msgstr "_Mikrofon" + +msgid "_Settings" +msgstr "_Seaded" + msgid "_View" msgstr "_Vaade" @@ -2376,6 +2701,15 @@ msgid_plural "%s (%d unread from all)" msgstr[0] "%s (%d lugemata kõigilt)" msgstr[1] "%s (%d lugemata kõigilt)" +msgid "SMS:" +msgstr "SMS:" + +#, c-format +msgid "Sending %d message" +msgid_plural "Sending %d messages" +msgstr[0] "%d sõnumi saatmine" +msgstr[1] "%d sõnumi saatmine" + msgid "Typing a message." msgstr "Kirjutab sõnumit." @@ -2385,9 +2719,6 @@ msgstr "_Puhasta" msgid "C_ontact" msgstr "_Kontakt" -msgid "Chat" -msgstr "Vestlus" - msgid "Insert _Smiley" msgstr "Lisa _tujunägu" @@ -2403,24 +2734,15 @@ msgstr "Tõsta kaart _paremale" msgid "Notify for All Messages" msgstr "Teavitamine kõigist sõnumitest" -msgid "_Contents" -msgstr "_Sisukord" - msgid "_Conversation" msgstr "_Vestlus" msgid "_Detach Tab" msgstr "_Haagi kaart lahti" -msgid "_Edit" -msgstr "_Redaktor" - msgid "_Favorite Chat Room" msgstr "_Lemmikjututuba" -msgid "_Help" -msgstr "A_bi" - msgid "_Next Tab" msgstr "_Järgmine kaart" @@ -2472,6 +2794,9 @@ msgstr "_Lükka tagasi" msgid "_Answer" msgstr "_Vasta" +msgid "_Answer with video" +msgstr "_Vastamine koos videoga" + #, c-format msgid "Incoming video call from %s" msgstr "Sissetulev kõne kasutajalt %s" @@ -2638,14 +2963,36 @@ msgstr "Katkesta ühendus" msgid "No match found" msgstr "Vastavust ei leitud" +#, c-format +msgid "Sorry, %s accounts can’t be used until your %s software is updated." +msgstr "" +"Vabandust, %s kontosid ei saa kasutada enne, kui sinu %s tarkvara on " +"uuendatud." + +msgid "Update software..." +msgstr "Tarkvara uuendamine..." + +msgid "Close" +msgstr "Sulge" + msgid "Reconnect" msgstr "Ühendu uuesti" msgid "Edit Account" msgstr "Konto redigeerimine" -msgid "Close" -msgstr "Sulge" +#. Translators: this string will be something like: +#. * Top up My Account ($1.23)..." +#, c-format +msgid "Top up %s (%s)..." +msgstr "Lae %s kontot (%s)..." + +msgid "Top up account credit" +msgstr "Lisa kontole raha" + +#. top up button +msgid "Top Up..." +msgstr "Lae kontot..." msgid "Contact" msgstr "Kontakt" @@ -2653,12 +3000,12 @@ msgstr "Kontakt" msgid "Contact List" msgstr "Kontaktide nimekiri" -msgid "Show and edit accounts" -msgstr "Kontode näitamine ja redigeerimine" - msgid "Contacts on a _Map" msgstr "Kontaktid _kaardil" +msgid "Credit Balance" +msgstr "Kontojääk" + msgid "Find in Contact _List" msgstr "_Otsi kontaktide nimekirjast" @@ -2698,9 +3045,6 @@ msgstr "_Blokitud kontaktid" msgid "_Compact Size" msgstr "_Kompaktne" -msgid "_Debug" -msgstr "Si_lumine" - msgid "_File Transfers" msgstr "_Failiülekanded" @@ -2800,6 +3144,38 @@ msgstr "Konto ühendus katkestatud" msgid "Language" msgstr "Keel" +#. translators: Contact name for the chat theme preview +msgid "Juliet" +msgstr "Julia" + +#. translators: Contact name for the chat theme preview +msgid "Romeo" +msgstr "Romeo" + +#. translators: Quote from Romeo & Julier, for chat theme preview +msgid "O Romeo, Romeo, wherefore art thou Romeo?" +msgstr "Oo Romeo! Oo Romeo, miks sa oled Romeo?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +msgid "Deny thy father and refuse thy name;" +msgstr "Salga oma isa, keeldu oma nimest," + +#. translators: Quote from Romeo & Julier, for chat theme preview +msgid "Or if thou wilt not, be but sworn my love" +msgstr "või kui ei taha, vannu mulle armu," + +#. translators: Quote from Romeo & Julier, for chat theme preview +msgid "And I'll no longer be a Capulet." +msgstr "ja Capulettiks kauemaks ma ei jää!" + +#. translators: Quote from Romeo & Julier, for chat theme preview +msgid "Shall I hear more, or shall I speak at this?" +msgstr "Kas peaksin veel kuulama või selle peale rääkima?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +msgid "Juliet has disconnected" +msgstr "Julia lahkus" + msgid "Preferences" msgstr "Eelistused" @@ -2821,6 +3197,17 @@ msgstr "_Eemal- või hõivatud oleku korral on helid keelatud" msgid "Display incoming events in the notification area" msgstr "Sissetulevaid sündmuseid kuvatakse teatealal" +msgid "" +"Echo cancellation helps to make your voice sound clearer to the other " +"person, but may cause problems on some computers. If you or the other person " +"hear strange noises or glitches during calls, try turning echo cancellation " +"off and restarting the call." +msgstr "" +"Kaja vähendamine teeb sinu hääle teiste jaoks puhtamaks, kuid võib " +"põhjustada probleeme mõnedel arvutitel. Kui sina või teine kõne osapool " +"kuuleb imelikku müra või krõpse kõne ajal, proovi kaja vähendamine välja " +"lülitada ja helista uuesti." + msgid "Enable notifications when a contact comes online" msgstr "Teatatakse kontakti sisenemisest" @@ -2836,6 +3223,12 @@ msgstr "Õigekirjakontroll on lubatud järgmistele keeltele:" msgid "General" msgstr "Üldine" +msgid "Input level:" +msgstr "Sisendtase:" + +msgid "Input volume:" +msgstr "Sisendvaljus:" + msgid "Location sources:" msgstr "Asukohaallikad:" @@ -2881,6 +3274,12 @@ msgstr "" msgid "Themes" msgstr "Teemad" +msgid "Use _echo cancellation to improve call quality" +msgstr "_Kaja vähendamine kõne kvaliteedi parendamiseks" + +msgid "Variant:" +msgstr "Variant:" + msgid "_Automatically connect on startup" msgstr "_Käivitumisel ühendutakse automaatselt" @@ -2915,6 +3314,42 @@ msgstr "Olek" msgid "_Quit" msgstr "_Lõpeta" +msgid "Call the contact again" +msgstr "Helista kontaktile uuesti" + +msgid "Camera Off" +msgstr "Kaamera väljas" + +msgid "Camera On" +msgstr "Kaamera sees" + +msgid "Disable camera and stop sending video" +msgstr "Kaamera keelamine ja video saatmise lõpetamine" + +msgid "Enable camera and send video" +msgstr "Kaamera lubamine ja video saatmine" + +msgid "Enable camera but don't send video" +msgstr "Kaamera lubamine ilma video saatmiseta" + +msgid "Preview" +msgstr "Eelvaade" + +msgid "Redial" +msgstr "Vali uuesti" + +msgid "V_ideo" +msgstr "V_ideo" + +msgid "Video Off" +msgstr "Video väljas" + +msgid "Video On" +msgstr "Video sees" + +msgid "Video Preview" +msgstr "Video eelvaade" + msgid "Contact Map View" msgstr "Kontaktide kaardivaade" @@ -2991,12 +3426,21 @@ msgstr "Alguses vali antud konto (nt. gabble/jabber/mingi_40näidis_2eorg0)" msgid "" msgstr "" +msgid "Show account assistant" +msgstr "Kontoabilise näitamine" + msgid "- Empathy Accounts" msgstr "- Empathy kontod" msgid "Empathy Accounts" msgstr "Empathy kontod" +msgid "Show a particular service" +msgstr "Kindla teenuse näitamine" + +msgid "- Empathy Debugger" +msgstr "- Empathy siluja" + msgid "Empathy Debugger" msgstr "Empathy siluja" @@ -3012,20 +3456,123 @@ msgstr "Lükka tagasi" msgid "Answer" msgstr "Vasta" +msgid "Answer with video" +msgstr "Vasta koos videoga" + msgid "Decline" msgstr "Lükka tagasi" msgid "Accept" msgstr "Nõustu" -#, c-format -msgid "Missed call from %s" -msgstr "Vastamata kõne kasutajalt %s" +#. translators: the 'Provide' button is displayed in a notification +#. * bubble when Empathy is asking for an account password; clicking on it +#. * brings the password popup. +msgid "Provide" +msgstr "Sisesta" #, c-format msgid "%s just tried to call you, but you were in another call." msgstr "%s proovis sulle helistada ajal, mil Sul oli teine kõne pooleli." +#. Translators: this is an "Info" label. It should be as short +#. * as possible. +msgid "i" +msgstr "i" + +msgid "On hold" +msgstr "Ootel" + +msgid "Mute" +msgstr "Tumm" + +msgid "Duration" +msgstr "Kestus" + +#. Translators: 'status - minutes:seconds' the caller has been connected +#, c-format +msgid "%s — %d:%02dm" +msgstr "%s — %d:%02dm" + +#, c-format +msgid "Your current balance is %s." +msgstr "Konto praegune seis on %s." + +msgid "Sorry, you don’t have enough credit for that call." +msgstr "Kahjuks pole selle kõne jaoks piisavalt krediiti." + +msgid "Top Up" +msgstr "Lae kontot" + +msgid "_Match case" +msgstr "_Tõstutundlik" + +#~ msgid "Empathy has migrated butterfly logs" +#~ msgstr "Empathy on üle kandnud butterfly logid" + +#~ msgid "Whether Empathy has migrated butterfly logs." +#~ msgstr "Kas Empathy on üle kandnud butterfly logid." + +#~ msgid "All" +#~ msgstr "Kõik" + +#~ msgid "_Enabled" +#~ msgstr "_Lubatud" + +#~ msgid "Ungrouped" +#~ msgstr "Grupeerimata" + +#~ msgid "Favorite People" +#~ msgstr "Lemmikud" + +#~ msgid "Select a contact" +#~ msgstr "Vali kontakt" + +#~ msgid "Date" +#~ msgstr "Kuupäev" + +#~ msgid "Conversations" +#~ msgstr "Vestlused" + +#~ msgid "Find Next" +#~ msgstr "Otsi järgmine" + +#~ msgid "Find Previous" +#~ msgstr "Otsi eelmine" + +#~ msgid "Previous Conversations" +#~ msgstr "Eelmised vestlused" + +#~ msgid "_For:" +#~ msgstr "_Otsing:" + +#~ msgid "Contact ID:" +#~ msgstr "Kontakti ID:" + +#~ msgid "C_hat" +#~ msgstr "_Vestle" + +#~ msgid "C_all" +#~ msgstr "_Helista" + +#~ msgid "Set your presence and current status" +#~ msgstr "Kohalolu ja praeguse oleku määramine" + +#~ msgid "Enter Custom Message" +#~ msgstr "Sisesta oma teade" + +#~ msgid "Save _New Status Message" +#~ msgstr "Salvesta _uus olekusõnum" + +#~ msgid "Saved Status Messages" +#~ msgstr "Salvestatud olekuteated" + +#~ msgid "The selected contact cannot receive files." +#~ msgstr "Valitud kontakt pole suuteline faile vastu võtma." + +#~ msgid "Show and edit accounts" +#~ msgstr "Kontode näitamine ja redigeerimine" + #~ msgid "%s is now offline." #~ msgstr "%s pole enam ühendatud." diff --git a/po/lt.po b/po/lt.po index b1b55df9..2e4e3b3d 100644 --- a/po/lt.po +++ b/po/lt.po @@ -5,14 +5,14 @@ # Gintautas Miliauskas , 2006. # Saulius , 2008, 2009. # Žygimantas Beručka , 2004-2010, 2010, 2011. -# Algimantas Margevičius , 2011. +# Algimantas Margevičius , 2011. # msgid "" msgstr "" "Project-Id-Version: empathy\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=empathy&keywords=I18N+L10N&component=General\n" -"POT-Creation-Date: 2011-10-07 08:13+0000\n" -"PO-Revision-Date: 2011-10-09 00:16+0300\n" +"POT-Creation-Date: 2011-11-18 18:12+0000\n" +"PO-Revision-Date: 2011-11-18 22:41+0300\n" "Last-Translator: Aurimas Černius \n" "Language-Team: Lietuvių <>\n" "MIME-Version: 1.0\n" @@ -43,406 +43,398 @@ msgid "Always open a separate chat window for new chats." msgstr "Naujiems pokalbiams visada atverti atskirą pokalbio langą." #: ../data/org.gnome.Empathy.gschema.xml.in.h:2 -msgid "Call volume" -msgstr "Skambučio garsumas" - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 -msgid "Call volume, as a percentage." -msgstr "Skambučio garsumas procentais." - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 msgid "Camera device" msgstr "Kameros įrenginys" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 msgid "Camera position" msgstr "Kameros padėtis" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 msgid "Character to add after nickname when using nick completion (tab) in group chat." msgstr "Po slapyvardžio pridėtinas simbolis, naudojant slapyvardžio užbaigimą (tab) grupės pokalbiuose." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 msgid "Chat window theme" msgstr "Pokalbio lango tema" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 msgid "Chat window theme variant" msgstr "Pokalbio lango temos variantas" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 msgid "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")." msgstr "Kableliu atskirtų kalbų, kurių rašyba tikrinama, sąrašas (pvz., „lt, en, fr“)." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 msgid "Compact contact list" msgstr "Kompaktiškas adresatų sąrašas" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 msgid "Connection managers should be used" msgstr "Turėtų būti naudojamos ryšių valdyklės" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 msgid "Contact list sort criterion" msgstr "Adresatų sąrašo rikiavimo kriterijus" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 msgid "D-Bus object path of the last account selected to join a room." msgstr "Paskutinės paskyros, pasirinktos prijungti prie kambario, D-Bus objekto kelias." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 msgid "Default camera device to use in video calls, e.g. /dev/video0." msgstr "Numatytasis kameros įrenginys vaizdo skambučiams, pvz. /dev/video0." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 msgid "Default directory to select an avatar image from" msgstr "Numatytasis aplankas, iš kurio pasirinktinas pseudoportreto paveikslėlis" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 msgid "Disable popup notifications when away" msgstr "Išjungti iškylančius pranešimų langus, kai manęs nėra" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 msgid "Disable sounds when away" msgstr "Išjungti garsus, kai manęs nėra" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 msgid "Display incoming events in the status area" msgstr "Rodyti gaunamus įvykius būsenos srityje" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 msgid "Display incoming events in the status area. If false, present them to the user immediately." msgstr "Rodyti gaunamus įvykius būsenos srityje. Jei reikšmė neigiama, pateikti juos naudotojui nedelsiant." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 msgid "Echo cancellation support" msgstr "Aido atšaukimo palaikymas" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 msgid "Empathy can publish the user's location" msgstr "Empathy gali rodyti naudotojo vietovę" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 msgid "Empathy can use the GPS to guess the location" msgstr "Empathy gali naudoti GPS, siekiant atspėti vietovę" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 msgid "Empathy can use the cellular network to guess the location" msgstr "Empathy naudoti mobiliojo ryšio tinklą, siekiant atspėti vietovę" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 msgid "Empathy can use the network to guess the location" msgstr "Empathy gali naudoti tinklą, siekiant atspėti vietovę" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 msgid "Empathy default download folder" msgstr "Numatytasis Empathy atsiuntimo aplankas" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 msgid "Empathy should auto-away when idle" msgstr "Nenaudojant Empathy, turėtų būti nustatoma nebuvimo būsena" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 msgid "Empathy should auto-connect on startup" msgstr "Paleidus Empathy, ji turėtų automatiškai prisijungti" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 msgid "Empathy should reduce the location's accuracy" msgstr "Empathy turėtų sumažinti vietovės tikslumą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 msgid "Empathy should use the avatar of the contact as the chat window icon" msgstr "Empathy turėtų naudoti adresato pseudoportretą pokalbio lango piktogramai" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 msgid "Enable WebKit Developer Tools" msgstr "Įjungti WebKit programuotojų įrankius" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 msgid "Enable popup notifications for new messages" msgstr "Įjungti iškylančius pranešimus apie naujas žinutes" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 msgid "Enable spell checker" msgstr "Įjungti rašybos tikrinimą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 msgid "Hide main window" msgstr "Paslėpti pagrindinį langą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 msgid "Hide the main window." msgstr "Paslėpti pagrindinį langą." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 msgid "Last account selected in Join Room dialog" msgstr "Paskutinė paskyra, pasirinkta prisijungimo prie kambario dialoge" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 msgid "Nick completed character" msgstr "Slapyvardžio užbaigimo simbolis" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 msgid "Open new chats in separate windows" msgstr "Atverti naujus pokalbius atskiruose languose" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 msgid "Path of the Adium theme to use" msgstr "Naudotinos Adium temos kelias" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 msgid "Path of the Adium theme to use if the theme used for chat is Adium." msgstr "Naudotinos Adium temos kelias, jei pokalbiui naudojama tema yra Adium." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 msgid "Play a sound for incoming messages" msgstr "Gavus žinutę sugroti garsą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 msgid "Play a sound for new conversations" msgstr "Pradedant naują pokalbį sugroti garsą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 msgid "Play a sound for outgoing messages" msgstr "Išsiunčiant žinutes sugroti garsą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 msgid "Play a sound when a contact logs in" msgstr "Prisijungus adresatui sugroti garsą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 msgid "Play a sound when a contact logs out" msgstr "Atsijungus adresatui sugroti garsą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Play a sound when we log in" msgstr "Jums prisijungus sugroti garsą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Play a sound when we log out" msgstr "Jums atsijungus sugroti garsą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Pop up notifications if the chat isn't focused" msgstr "Rodyti iškylančius pranešimus, jei pokalbio langas nesuaktyvintas" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Pop up notifications when a contact logs in" msgstr "Rodyti iškylančius pranešimus, kai adresatas prisijungia" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Pop up notifications when a contact logs out" msgstr "Rodyti iškylančius pranešimus, kai adresatas atsijungia" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 msgid "Position the camera preview should be during a call." msgstr "Kameros peržiūros padėtis skambučio metu." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 msgid "Show Balance in contact list" msgstr "Rodyti balansą adresatų sąraše" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "Show avatars" msgstr "Rodyti pseudoportretus" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "Show contact list in rooms" msgstr "Rodyti adresatų sąrašą kambariuose" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "Show hint about closing the main window" msgstr "Perspėti apie pagrindinio lango užvėrimą" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "Show offline contacts" msgstr "Rodyti atsijungusius adresatus" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Show protocols" msgstr "Rodyti protokolus" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Spell checking languages" msgstr "Kalbos, kurių rašyba tikrinama" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "The default folder to save file transfers in." msgstr "Numatytasis aplankas, kuriame įrašomi atsiųsti failai." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "The last directory that an avatar image was chosen from." msgstr "Aplankas, kuriame praeitą kartą buvo pasirinktas pseudoportretas." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "The position for the chat window side pane" msgstr "Pokalbių lango šoninio polangio padėtis" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "The stored position (in pixels) of the chat window side pane." msgstr "Įrašyta pokalbio lango šoninio polangio padėtis (pikseliais)." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "The theme that is used to display the conversation in chat windows." msgstr "Tema, naudojama pokalbio rodymui pokalbių languose." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 msgid "The theme variant that is used to display the conversation in chat windows." msgstr "Temos variantas, naudojamas pokalbio rodymui pokalbių languose." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "Use graphical smileys" msgstr "Naudoti grafines šypsenėles" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "Use notification sounds" msgstr "Naudoti pranešimų garsus" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "Use theme for chat rooms" msgstr "Naudoti temą pokalbių kambariams" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "Ar Empathy gali rodyti naudotojo vietovę jo adresatams." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "Whether Empathy can use the GPS to guess the location." msgstr "Ar Empathy gali naudoti GPS vietovės spėjimui." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "Ar Empathy gali naudoti mobiliojo ryšio tinklą vietovės spėjimui." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "Whether Empathy can use the network to guess the location." msgstr "Ar Empathy gali naudoti tinklą vietovės spėjimui." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "Ar Empathy turėtų automatiškai prisijungti prie paskyrų ją paleidus." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "Whether Empathy should go into away mode automatically if the user is idle." msgstr "Ar Empathy turėtų automatiškai nustatyti nebuvimo būseną, jeigu naudotojas nesinaudoja kompiuteriu." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "Whether Empathy should reduce the location's accuracy for privacy reasons." msgstr "Ar Empathy turėtų sumažinti vietovės rodymo tikslumą privatumo sumetimais." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 msgid "Whether Empathy should use the avatar of the contact as the chat window icon." msgstr "Ar naudoti adresato pseudoportretą kaip pokalbio lango piktogramą." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 msgid "Whether WebKit developer tools, such as the Web Inspector, should be enabled." msgstr "Ar turėtų būti įjungti WebKit programuotojų įrankiai, pvz., Web Inspector." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 msgid "Whether connectivity managers should be used to automatically disconnect/reconnect." msgstr "Ar turėtų būti naudojamos ryšių valdyklės automatiniam atsijungimui / prisijungimui iš naujo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 msgid "Whether to check words typed against the languages you want to check with." msgstr "Ar tikrinti įvedamų žodžių rašybą pasirenkant jūsų pageidaujamas kalbas." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 msgid "Whether to convert smileys into graphical images in conversations." msgstr "Ar pokalbiuose versti šypsenėles į grafinius paveikslėlius." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 msgid "Whether to enable Pulseaudio's echo cancellation filter." msgstr "Ar įjungti Pulseaudio aido atšaukimo filtrą." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 msgid "Whether to play a sound to notify of contacts logging into the network." msgstr "Ar sugroti garsą adresatams prisijungiant prie tinklo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 msgid "Whether to play a sound to notify of contacts logging out of the network." msgstr "Ar sugroti garsą adresatams atsijungiant nuo tinklo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 msgid "Whether to play a sound to notify of events." msgstr "Ar sugroti garsą pranešant apie įvykius." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 msgid "Whether to play a sound to notify of incoming messages." msgstr "Ar sugroti garsą, kai atsiunčiama nauja žinutė." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 msgid "Whether to play a sound to notify of new conversations." msgstr "Ar sugroti garsą pranešant apie naują pokalbį." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 msgid "Whether to play a sound to notify of outgoing messages." msgstr "Ar sugroti garsą, kai išsiunčiama žinutė." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 msgid "Whether to play a sound when logging into a network." msgstr "Ar groti garsą prisijungiant prie tinklo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 msgid "Whether to play a sound when logging out of a network." msgstr "Ar groti garsą atsijungiant nuo tinklo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 msgid "Whether to play sound notifications when away or busy." msgstr "Ar groti garsinius pranešimus, kai esate pasitraukę ar užsiėmę." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 msgid "Whether to show a popup notification when a contact goes offline." msgstr "Ar rodyti iškeliamą pranešimą, kai adresatas atsijungia." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 msgid "Whether to show a popup notification when a contact goes online." msgstr "Ar rodyti iškeliamą pranešimą, kai adresatas prisijungia." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 msgid "Whether to show a popup notification when receiving a new message even if the chat is already opened, but not focused." msgstr "Ar rodyti iškylantį pranešimo langą, kai gaunama nauja žinutė, net jei pokalbio langas yra jau atvertas, tačiau nesuaktyvintas." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 msgid "Whether to show a popup notification when receiving a new message." msgstr "Ar rodyti iškylantį pranešimą gavus naują žinutę." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:93 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 msgid "Whether to show account balances in the contact list." msgstr "Ar rodyti adresatų sąraše paskyrų balansus." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:94 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 msgid "Whether to show avatars for contacts in the contact list and chat windows." msgstr "Ar rodyti adresatų sąraše ir pokalbių languose pseudoportretus." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:95 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:93 msgid "Whether to show contacts that are offline in the contact list." msgstr "Ar adresatų sąraše rodyti adresatus, kurie yra atsijungę." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:96 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:94 msgid "Whether to show popup notifications when away or busy." msgstr "Ar rodyti iškylančius pranešimus, kai esate pasitraukę ar užsiėmę." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:97 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:95 msgid "Whether to show protocols for contacts in the contact list." msgstr "Ar rodyti adresatų sąraše adresatų protokolus." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:98 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:96 msgid "Whether to show the contact list in chat rooms." msgstr "Ar rodyti adresatų sąrašą pokalbių kambariuose." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:99 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:97 msgid "Whether to show the contact list in compact mode." msgstr "Ar rodyti glaustą adresatų sąrašą." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:100 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:98 msgid "Whether to show the message dialog about closing the main window with the 'x' button in the title bar." msgstr "Ar rodyti pranešimo apie pagrindinio lango uždarymą dialogą su mygtuku „x“ antraštės juostoje." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:101 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:99 msgid "Whether to use the theme for chat rooms." msgstr "Ar naudoti temą pokalbių kambariams." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:102 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:100 msgid "Which criterion to use when sorting the contact list. Default is to sort by the contact's name with the value \"name\". A value of \"state\" will sort the contact list by state." msgstr "Pagal kurį kriterijų rikiuoti adresatų sąrašą. Numatytasis yra adresato vardas (reikšmė „name“). Reikšmė „state“ rikiuoja adresatų sąrašą pagal būseną." @@ -452,7 +444,7 @@ msgstr "Tvarkyti pokalbių ir VoIP paskyras" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2324 +#: ../src/empathy-accounts-dialog.c:2312 msgid "Messaging and VoIP Accounts" msgstr "Pokalbių ir VoIP paskyros" @@ -560,6 +552,7 @@ msgstr "Būsena nustatyta į „atsijungta“" #: ../libempathy/empathy-utils.c:288 #: ../libempathy/empathy-utils.c:322 #: ../libempathy-gtk/empathy-call-utils.c:49 +#: ../libempathy-gtk/empathy-new-message-dialog.c:82 msgid "Network error" msgstr "Tinklo klaida" @@ -664,20 +657,23 @@ msgstr "Liudijimas naudoja nesaugų šifravimo algoritmą arba yra kriptografiš msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library" msgstr "Serverio liudijimo ilgis, arba serverio liudijimų sekos gylis, viršija kriptografijos bibliotekos numatytas ribas" -#: ../libempathy/empathy-utils.c:529 -#: ../libempathy-gtk/empathy-contact-list-store.h:73 +#: ../libempathy/empathy-utils.c:372 +msgid "Your software is too old" +msgstr "Jūsų programinė įranga per sena" + +#: ../libempathy/empathy-utils.c:531 msgid "People Nearby" msgstr "Žmonės netoliese" -#: ../libempathy/empathy-utils.c:534 +#: ../libempathy/empathy-utils.c:536 msgid "Yahoo! Japan" msgstr "Yahoo! Japan" -#: ../libempathy/empathy-utils.c:563 +#: ../libempathy/empathy-utils.c:565 msgid "Google Talk" msgstr "Google Talk" -#: ../libempathy/empathy-utils.c:564 +#: ../libempathy/empathy-utils.c:566 msgid "Facebook Chat" msgstr "Facebook pokalbis" @@ -733,7 +729,7 @@ msgstr[2] "prieš %d mėnesių" msgid "in the future" msgstr "ateityje" -#: ../libempathy-gtk/empathy-account-chooser.c:540 +#: ../libempathy-gtk/empathy-account-chooser.c:688 msgid "All accounts" msgstr "Visos paskyros" @@ -756,58 +752,58 @@ msgstr "Serveris" msgid "Port" msgstr "Prievadas" -#: ../libempathy-gtk/empathy-account-widget.c:769 -#: ../libempathy-gtk/empathy-account-widget.c:826 +#: ../libempathy-gtk/empathy-account-widget.c:776 +#: ../libempathy-gtk/empathy-account-widget.c:828 #, c-format msgid "%s:" msgstr "%s:" -#: ../libempathy-gtk/empathy-account-widget.c:1192 +#: ../libempathy-gtk/empathy-account-widget.c:1182 msgid "My Web Accounts" msgstr "Mano internetinės paskyros" -#: ../libempathy-gtk/empathy-account-widget.c:1209 +#: ../libempathy-gtk/empathy-account-widget.c:1199 #, c-format msgid "The account %s is edited via %s." msgstr "Paskyra %s taisoma naudojantis %s." -#: ../libempathy-gtk/empathy-account-widget.c:1215 +#: ../libempathy-gtk/empathy-account-widget.c:1205 #, c-format msgid "The account %s cannot be edited in Empathy." msgstr "Paskyros %s Empathy programoje taisyti negalima." -#: ../libempathy-gtk/empathy-account-widget.c:1234 +#: ../libempathy-gtk/empathy-account-widget.c:1224 msgid "Launch My Web Accounts" msgstr "Paleisti mano žiniatinklio paskyras" #. general handler -#: ../libempathy-gtk/empathy-account-widget.c:1242 +#: ../libempathy-gtk/empathy-account-widget.c:1232 #, c-format msgid "Edit %s" msgstr "Taisyti %s" -#: ../libempathy-gtk/empathy-account-widget.c:1592 +#: ../libempathy-gtk/empathy-account-widget.c:1582 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11 msgid "Username:" msgstr "Naudotojo vardas:" -#: ../libempathy-gtk/empathy-account-widget.c:1910 +#: ../libempathy-gtk/empathy-account-widget.c:1900 msgid "A_pply" msgstr "_Pritaikyti" -#: ../libempathy-gtk/empathy-account-widget.c:1940 +#: ../libempathy-gtk/empathy-account-widget.c:1930 msgid "L_og in" msgstr "_Prisijungti" -#: ../libempathy-gtk/empathy-account-widget.c:2014 +#: ../libempathy-gtk/empathy-account-widget.c:2004 msgid "This account already exists on the server" msgstr "Ši paskyra jau yra serveryje" -#: ../libempathy-gtk/empathy-account-widget.c:2017 +#: ../libempathy-gtk/empathy-account-widget.c:2007 msgid "Create a new account on the server" msgstr "Sukurti naują paskyrą serveryje" -#: ../libempathy-gtk/empathy-account-widget.c:2209 +#: ../libempathy-gtk/empathy-account-widget.c:2199 msgid "Ca_ncel" msgstr "_Atšaukti" @@ -816,19 +812,19 @@ msgstr "_Atšaukti" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2487 +#: ../libempathy-gtk/empathy-account-widget.c:2477 #, c-format msgid "%1$s on %2$s" msgstr "%1$s serveryje %2$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2513 +#: ../libempathy-gtk/empathy-account-widget.c:2503 #, c-format msgid "%s Account" msgstr "%s paskyra" -#: ../libempathy-gtk/empathy-account-widget.c:2517 +#: ../libempathy-gtk/empathy-account-widget.c:2507 msgid "New account" msgstr "Nauja paskyra" @@ -1195,7 +1191,7 @@ msgid "STUN Server:" msgstr "STUN serveris:" #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19 -#: ../libempathy-gtk/empathy-contact-widget.c:347 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:114 msgid "Server:" msgstr "Serveris:" @@ -1277,7 +1273,7 @@ msgid "Click to enlarge" msgstr "Norėdami padidinti, spustelėkite" #: ../libempathy-gtk/empathy-call-utils.c:44 -#: ../libempathy-gtk/empathy-call-utils.c:60 +#: ../libempathy-gtk/empathy-call-utils.c:62 msgid "There was an error starting the call" msgstr "Kilo klaida pradedant skambutį" @@ -1297,179 +1293,192 @@ msgstr "Nurodytas adresatas yra neteisingas" msgid "Emergency calls are not supported on this protocol" msgstr "Kritiniai skambučiai šiuo protokolu nepalaikomi" -#: ../libempathy-gtk/empathy-chat.c:704 +#: ../libempathy-gtk/empathy-call-utils.c:59 +msgid "You don't have enough credit in order to place this call" +msgstr "Nepakanka kreditų pradėti šiam pokalbiui" + +#: ../libempathy-gtk/empathy-chat.c:706 msgid "Failed to open private chat" msgstr "Nepavyko atverti privataus pokalbio" -#: ../libempathy-gtk/empathy-chat.c:765 +#: ../libempathy-gtk/empathy-chat.c:764 msgid "Topic not supported on this conversation" msgstr "Šiame pokalbyje tema yra nepalaikoma" -#: ../libempathy-gtk/empathy-chat.c:771 +#: ../libempathy-gtk/empathy-chat.c:770 msgid "You are not allowed to change the topic" msgstr "Jums neleidžiama pakeisti temos" -#: ../libempathy-gtk/empathy-chat.c:975 +#: ../libempathy-gtk/empathy-chat.c:971 #, c-format msgid "“%s” is not a valid contact ID" msgstr "„%s“ yra netinkamas adresato ID" -#: ../libempathy-gtk/empathy-chat.c:1070 +#: ../libempathy-gtk/empathy-chat.c:1066 msgid "/clear: clear all messages from the current conversation" msgstr "/clear: ištrinti visus dabartinio pokalbio pranešimus" -#: ../libempathy-gtk/empathy-chat.c:1073 +#: ../libempathy-gtk/empathy-chat.c:1069 msgid "/topic : set the topic of the current conversation" msgstr "/topic : nustatyti dabartinio pokalbio temą" -#: ../libempathy-gtk/empathy-chat.c:1076 +#: ../libempathy-gtk/empathy-chat.c:1072 msgid "/join : join a new chat room" msgstr "/join : prisijungti prie naujo pokalbių kambario" -#: ../libempathy-gtk/empathy-chat.c:1079 +#: ../libempathy-gtk/empathy-chat.c:1075 msgid "/j : join a new chat room" msgstr "/j : prisijungti prie naujo pokalbių kambario" -#: ../libempathy-gtk/empathy-chat.c:1083 +#: ../libempathy-gtk/empathy-chat.c:1079 msgid "/part [] []: leave the chat room, by default the current one" msgstr "/part [] []: išeiti iš pokalbių kambario; dabartinio, jei nenurodyta kitaip" -#: ../libempathy-gtk/empathy-chat.c:1087 +#: ../libempathy-gtk/empathy-chat.c:1083 msgid "/query []: open a private chat" msgstr "/query [<žinutė>]: atverti privatų pokalbį" -#: ../libempathy-gtk/empathy-chat.c:1090 +#: ../libempathy-gtk/empathy-chat.c:1086 msgid "/msg : open a private chat" msgstr "/msg <žinutė>: atverti privatų pokalbį" -#: ../libempathy-gtk/empathy-chat.c:1093 +#: ../libempathy-gtk/empathy-chat.c:1089 msgid "/nick : change your nickname on the current server" msgstr "/nick : keisti savo slapyvardį dabartiniame serveryje" -#: ../libempathy-gtk/empathy-chat.c:1096 +#: ../libempathy-gtk/empathy-chat.c:1092 msgid "/me : send an ACTION message to the current conversation" msgstr "/me <žinutė>: siųsti dabartiniam pokalbiui žinutę ACTION" -#: ../libempathy-gtk/empathy-chat.c:1099 +#: ../libempathy-gtk/empathy-chat.c:1095 msgid "/say : send to the current conversation. This is used to send a message starting with a '/'. For example: \"/say /join is used to join a new chat room\"" msgstr "/say <žinutė>: siųsti dabartiniam pokalbiui <žinutę>. Tai naudojama norint siųsti žinutę, prasidedančia simboliu „/“. Pavyzdžiui: „/say /join naudojama norint prisijungti prie naujo pokalbių kambario“" -#: ../libempathy-gtk/empathy-chat.c:1104 +#: ../libempathy-gtk/empathy-chat.c:1100 msgid "/whois : display information about a contact" msgstr "/whois : parodo informaciją apie adresatą" -#: ../libempathy-gtk/empathy-chat.c:1107 +#: ../libempathy-gtk/empathy-chat.c:1103 msgid "/help []: show all supported commands. If is defined, show its usage." msgstr "/help []: rodyti visas palaikomas komandas. Jei apibrėžta, rodyti, kaip ją naudoti." -#: ../libempathy-gtk/empathy-chat.c:1126 +#: ../libempathy-gtk/empathy-chat.c:1122 #, c-format msgid "Usage: %s" msgstr "Naudojimas: %s" -#: ../libempathy-gtk/empathy-chat.c:1171 +#: ../libempathy-gtk/empathy-chat.c:1167 msgid "Unknown command" msgstr "Nežinoma komanda" -#: ../libempathy-gtk/empathy-chat.c:1297 +#: ../libempathy-gtk/empathy-chat.c:1293 msgid "Unknown command; see /help for the available commands" msgstr "Nežinoma komanda. Galimas komandas galite pamatyti įvykdę komandą /help" -#. translators: error used when user doesn't have enough credit on his -#. * account to send the message. -#: ../libempathy-gtk/empathy-chat.c:1467 +#: ../libempathy-gtk/empathy-chat.c:1457 msgid "insufficient balance to send message" msgstr "nepakankamas balansas žinutės siuntimui" +#: ../libempathy-gtk/empathy-chat.c:1461 +#: ../libempathy-gtk/empathy-chat.c:1475 +#: ../libempathy-gtk/empathy-chat.c:1538 +#, c-format +msgid "Error sending message '%s': %s" +msgstr "Klaida siunčiant žinutę „%s“: %s" + +#: ../libempathy-gtk/empathy-chat.c:1463 +#: ../libempathy-gtk/empathy-chat.c:1480 +#: ../libempathy-gtk/empathy-chat.c:1542 +#, c-format +msgid "Error sending message: %s" +msgstr "Klaida siunčiant žinutę: %s" + +#. translators: error used when user doesn't have enough credit on his +#. * account to send the message. #: ../libempathy-gtk/empathy-chat.c:1469 +#, c-format +msgid "insufficient balance to send message. Top up." +msgstr "nepakankamas balansas žinutės siuntimui. Pakelti." + +#: ../libempathy-gtk/empathy-chat.c:1509 msgid "not capable" msgstr "nepalaiko" -#: ../libempathy-gtk/empathy-chat.c:1476 +#: ../libempathy-gtk/empathy-chat.c:1516 msgid "offline" msgstr "atsijungęs" -#: ../libempathy-gtk/empathy-chat.c:1479 +#: ../libempathy-gtk/empathy-chat.c:1519 msgid "invalid contact" msgstr "netinkamas adresatas" -#: ../libempathy-gtk/empathy-chat.c:1482 +#: ../libempathy-gtk/empathy-chat.c:1522 msgid "permission denied" msgstr "prieiga uždrausta" -#: ../libempathy-gtk/empathy-chat.c:1485 +#: ../libempathy-gtk/empathy-chat.c:1525 msgid "too long message" msgstr "per ilga žinutė" -#: ../libempathy-gtk/empathy-chat.c:1488 +#: ../libempathy-gtk/empathy-chat.c:1528 msgid "not implemented" msgstr "ši funkcija dar nerealizuota" -#: ../libempathy-gtk/empathy-chat.c:1492 +#: ../libempathy-gtk/empathy-chat.c:1532 msgid "unknown" msgstr "nežinoma" -#: ../libempathy-gtk/empathy-chat.c:1498 -#, c-format -msgid "Error sending message '%s': %s" -msgstr "Klaida siunčiant žinutę „%s“: %s" - -#: ../libempathy-gtk/empathy-chat.c:1502 -#, c-format -msgid "Error sending message: %s" -msgstr "Klaida siunčiant žinutę: %s" - -#: ../libempathy-gtk/empathy-chat.c:1563 +#: ../libempathy-gtk/empathy-chat.c:1599 #: ../src/empathy-chat-window.c:761 msgid "Topic:" msgstr "Tema:" -#: ../libempathy-gtk/empathy-chat.c:1575 +#: ../libempathy-gtk/empathy-chat.c:1611 #, c-format msgid "Topic set to: %s" msgstr "Tema nustatyta į: %s" -#: ../libempathy-gtk/empathy-chat.c:1577 +#: ../libempathy-gtk/empathy-chat.c:1613 msgid "No topic defined" msgstr "Nenurodyta jokia tema" -#: ../libempathy-gtk/empathy-chat.c:2086 +#: ../libempathy-gtk/empathy-chat.c:2126 msgid "(No Suggestions)" msgstr "(Nėra pasiūlymų)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:2154 +#: ../libempathy-gtk/empathy-chat.c:2194 #, c-format msgid "Add '%s' to Dictionary" msgstr "Įtraukti „%s“ į žodyną" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:2191 +#: ../libempathy-gtk/empathy-chat.c:2231 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "Įtraukti „%s“ į %s žodyną" -#: ../libempathy-gtk/empathy-chat.c:2261 +#: ../libempathy-gtk/empathy-chat.c:2301 msgid "Insert Smiley" msgstr "Įterpti šypsenėlę" #. send button -#: ../libempathy-gtk/empathy-chat.c:2279 -#: ../libempathy-gtk/empathy-ui-utils.c:1840 +#: ../libempathy-gtk/empathy-chat.c:2319 +#: ../libempathy-gtk/empathy-ui-utils.c:1867 msgid "_Send" msgstr "_Siųsti" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2333 +#: ../libempathy-gtk/empathy-chat.c:2376 msgid "_Spelling Suggestions" msgstr "_Rašybos pasiūlymai" -#: ../libempathy-gtk/empathy-chat.c:2422 +#: ../libempathy-gtk/empathy-chat.c:2465 msgid "Failed to retrieve recent logs" msgstr "Nepavyko gauti naujausių žurnalų" -#: ../libempathy-gtk/empathy-chat.c:2559 +#: ../libempathy-gtk/empathy-chat.c:2602 #, c-format msgid "%s has disconnected" msgstr "%s atsijungė" @@ -1477,12 +1486,12 @@ msgstr "%s atsijungė" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2566 +#: ../libempathy-gtk/empathy-chat.c:2609 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%2$s išspyrė naudotoją %1$s" -#: ../libempathy-gtk/empathy-chat.c:2569 +#: ../libempathy-gtk/empathy-chat.c:2612 #, c-format msgid "%s was kicked" msgstr "%s buvo išspirtas" @@ -1490,17 +1499,17 @@ msgstr "%s buvo išspirtas" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2577 +#: ../libempathy-gtk/empathy-chat.c:2620 #, c-format msgid "%1$s was banned by %2$s" msgstr "%2$s užblokavo naudotoją %1$s" -#: ../libempathy-gtk/empathy-chat.c:2580 +#: ../libempathy-gtk/empathy-chat.c:2623 #, c-format msgid "%s was banned" msgstr "%s buvo užblokuotas" -#: ../libempathy-gtk/empathy-chat.c:2584 +#: ../libempathy-gtk/empathy-chat.c:2627 #, c-format msgid "%s has left the room" msgstr "%s paliko pokalbių kambarį" @@ -1510,17 +1519,17 @@ msgstr "%s paliko pokalbių kambarį" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2593 +#: ../libempathy-gtk/empathy-chat.c:2636 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2618 +#: ../libempathy-gtk/empathy-chat.c:2661 #, c-format msgid "%s has joined the room" msgstr "%s prisijungė prie pokalbių kambario" -#: ../libempathy-gtk/empathy-chat.c:2643 +#: ../libempathy-gtk/empathy-chat.c:2686 #, c-format msgid "%s is now known as %s" msgstr "%s dabar žinomas (-a) kaip %s" @@ -1528,91 +1537,90 @@ msgstr "%s dabar žinomas (-a) kaip %s" #. We don't know if the incoming call has been accepted or not, so we #. * assume it hasn't and if it has, we'll set the proper status when #. * we get the new handler. -#: ../libempathy-gtk/empathy-chat.c:2796 -#: ../src/empathy-streamed-media-window.c:1894 +#: ../libempathy-gtk/empathy-chat.c:2839 +#: ../src/empathy-streamed-media-window.c:1886 #: ../src/empathy-event-manager.c:1260 -#: ../src/empathy-call-window.c:1546 -#: ../src/empathy-call-window.c:1596 -#: ../src/empathy-call-window.c:2641 +#: ../src/empathy-call-window.c:1538 +#: ../src/empathy-call-window.c:1588 +#: ../src/empathy-call-window.c:2627 msgid "Disconnected" msgstr "Atsijungęs (-usi)" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3440 +#: ../libempathy-gtk/empathy-chat.c:3485 msgid "Would you like to store this password?" msgstr "Ar norėtumėte įrašyti šį slaptažodį?" -#: ../libempathy-gtk/empathy-chat.c:3446 +#: ../libempathy-gtk/empathy-chat.c:3491 msgid "Remember" msgstr "Įrašyti" -#: ../libempathy-gtk/empathy-chat.c:3456 +#: ../libempathy-gtk/empathy-chat.c:3501 msgid "Not now" msgstr "Ne dabar" -#: ../libempathy-gtk/empathy-chat.c:3500 +#: ../libempathy-gtk/empathy-chat.c:3545 msgid "Retry" msgstr "Bandyti dar kartą" -#: ../libempathy-gtk/empathy-chat.c:3504 +#: ../libempathy-gtk/empathy-chat.c:3549 msgid "Wrong password; please try again:" msgstr "Neteisingas slaptažodis, bandykite dar kartą:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3634 +#: ../libempathy-gtk/empathy-chat.c:3679 msgid "This room is protected by a password:" msgstr "Šis kambarys yra apsaugotas slaptažodžiu:" -#: ../libempathy-gtk/empathy-chat.c:3661 +#: ../libempathy-gtk/empathy-chat.c:3706 msgid "Join" msgstr "Prisijungti" -#: ../libempathy-gtk/empathy-chat.c:3863 +#: ../libempathy-gtk/empathy-chat.c:3894 #: ../src/empathy-event-manager.c:1281 msgid "Connected" msgstr "Prisijungęs (-usi)" -#: ../libempathy-gtk/empathy-chat.c:3918 +#: ../libempathy-gtk/empathy-chat.c:3949 msgid "Conversation" msgstr "Pokalbis" #. Translators: this string is a something like #. * "Escher Cat (SMS)" -#: ../libempathy-gtk/empathy-chat.c:3923 +#: ../libempathy-gtk/empathy-chat.c:3954 #, c-format msgid "%s (SMS)" msgstr "%s (SMS)" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265 msgid "Unknown or invalid identifier" msgstr "Nežinomas ar netinkamas identifikatorius" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267 msgid "Contact blocking temporarily unavailable" msgstr "Adresatų blokavimo galimybė laikinai neprieinama" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269 msgid "Contact blocking unavailable" msgstr "Adresatų blokavimas negalimas" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271 msgid "Permission Denied" msgstr "Neleidžiama" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275 msgid "Could not block contact" msgstr "Nepavyko užblokuoti adresato" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:774 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622 msgid "Edit Blocked Contacts" msgstr "Taisyti blokuotus adresatus" #. Account and Identifier #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:512 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:506 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2 -#: ../libempathy-gtk/empathy-individual-widget.c:1489 -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 +#: ../libempathy-gtk/empathy-individual-widget.c:1475 #: ../src/empathy-chatrooms-window.ui.h:1 #: ../src/empathy-new-chatroom-dialog.ui.h:1 msgid "Account:" @@ -1630,56 +1638,56 @@ msgid "Remove" msgstr "Pašalinti" #. Copy Link Address menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:320 +#: ../libempathy-gtk/empathy-chat-text-view.c:322 #: ../libempathy-gtk/empathy-webkit-utils.c:277 msgid "_Copy Link Address" msgstr "_Kopijuoti nuorodos adresą" #. Open Link menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:327 +#: ../libempathy-gtk/empathy-chat-text-view.c:329 #: ../libempathy-gtk/empathy-webkit-utils.c:284 msgid "_Open Link" msgstr "_Atverti nuorodą" #. Translators: timestamp displayed between conversations in #. * chat windows (strftime format string) -#: ../libempathy-gtk/empathy-chat-text-view.c:415 +#: ../libempathy-gtk/empathy-chat-text-view.c:417 msgid "%A %B %d %Y" msgstr "%Y %B %d (%A)" -#: ../libempathy-gtk/empathy-contact-dialogs.c:299 +#: ../libempathy-gtk/empathy-contact-dialogs.c:287 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247 msgid "Edit Contact Information" msgstr "Taisyti adresato informaciją" -#: ../libempathy-gtk/empathy-contact-dialogs.c:350 +#: ../libempathy-gtk/empathy-contact-dialogs.c:338 msgid "Personal Information" msgstr "Asmeninė informacija" -#: ../libempathy-gtk/empathy-contact-dialogs.c:459 +#: ../libempathy-gtk/empathy-contact-dialogs.c:439 #: ../libempathy-gtk/empathy-individual-dialogs.c:119 msgid "New Contact" msgstr "Naujas adresatas" -#: ../libempathy-gtk/empathy-contact-dialogs.c:533 -#: ../libempathy-gtk/empathy-individual-dialogs.c:200 +#: ../libempathy-gtk/empathy-contact-dialogs.c:508 +#: ../libempathy-gtk/empathy-individual-dialogs.c:198 #, c-format msgid "Block %s?" msgstr "Užblokuoti %s?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:538 -#: ../libempathy-gtk/empathy-individual-dialogs.c:255 +#: ../libempathy-gtk/empathy-contact-dialogs.c:513 +#: ../libempathy-gtk/empathy-individual-dialogs.c:253 #, c-format msgid "Are you sure you want to block '%s' from contacting you again?" msgstr "Ar tikrai norite „%s“ nebeleisti jūsų matyti?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:543 -#: ../libempathy-gtk/empathy-individual-dialogs.c:277 +#: ../libempathy-gtk/empathy-contact-dialogs.c:518 +#: ../libempathy-gtk/empathy-individual-dialogs.c:275 msgid "_Block" msgstr "_Blokuoti" -#: ../libempathy-gtk/empathy-contact-dialogs.c:559 -#: ../libempathy-gtk/empathy-individual-dialogs.c:286 +#: ../libempathy-gtk/empathy-contact-dialogs.c:536 +#: ../libempathy-gtk/empathy-individual-dialogs.c:284 msgid "_Report this contact as abusive" msgid_plural "_Report these contacts as abusive" msgstr[0] "_Pranešti apie šio adresato piktnaudžiavimą" @@ -1698,349 +1706,360 @@ msgstr "Prenumeratos prašymas" msgid "_Block User" msgstr "_Blokuoti naudotoją" -#: ../libempathy-gtk/empathy-contact-list-store.h:71 -msgid "Ungrouped" -msgstr "Nesugrupuota" - -#: ../libempathy-gtk/empathy-contact-list-store.h:72 -msgid "Favorite People" -msgstr "Mėgiami žmonės" - -#: ../libempathy-gtk/empathy-contact-list-view.c:1985 -#: ../libempathy-gtk/empathy-individual-view.c:2375 +#: ../libempathy-gtk/empathy-contact-list-view.c:1935 +#: ../libempathy-gtk/empathy-individual-view.c:2397 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "Ar tikrai norite pašalinti grupę „%s“?" -#: ../libempathy-gtk/empathy-contact-list-view.c:1987 -#: ../libempathy-gtk/empathy-individual-view.c:2378 +#: ../libempathy-gtk/empathy-contact-list-view.c:1937 +#: ../libempathy-gtk/empathy-individual-view.c:2400 msgid "Removing group" msgstr "Šalinama grupė" #. Remove -#: ../libempathy-gtk/empathy-contact-list-view.c:2036 -#: ../libempathy-gtk/empathy-contact-list-view.c:2113 -#: ../libempathy-gtk/empathy-individual-view.c:2433 -#: ../libempathy-gtk/empathy-individual-view.c:2636 +#: ../libempathy-gtk/empathy-contact-list-view.c:1986 +#: ../libempathy-gtk/empathy-contact-list-view.c:2059 +#: ../libempathy-gtk/empathy-individual-view.c:2455 +#: ../libempathy-gtk/empathy-individual-view.c:2671 msgid "_Remove" msgstr "_Pašalinti" -#: ../libempathy-gtk/empathy-contact-list-view.c:2066 -#: ../libempathy-gtk/empathy-individual-view.c:2500 +#: ../libempathy-gtk/empathy-contact-list-view.c:2015 +#: ../libempathy-gtk/empathy-individual-view.c:2532 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "Ar tikrai norite pašalinti adresatą „%s“?" -#: ../libempathy-gtk/empathy-contact-list-view.c:2068 -#: ../libempathy-gtk/empathy-individual-view.c:2521 +#: ../libempathy-gtk/empathy-contact-list-view.c:2017 +#: ../libempathy-gtk/empathy-individual-view.c:2553 msgid "Removing contact" msgstr "Šalinamas adresatas" -#: ../libempathy-gtk/empathy-contact-menu.c:220 +#: ../libempathy-gtk/empathy-contact-menu.c:212 #: ../src/empathy-main-window-menubar.ui.h:14 msgid "_Add Contact…" msgstr "_Pridėti adresatą…" -#: ../libempathy-gtk/empathy-contact-menu.c:300 +#: ../libempathy-gtk/empathy-contact-menu.c:287 msgid "_Block Contact" msgstr "_Blokuoti adresatą" -#: ../libempathy-gtk/empathy-contact-menu.c:329 +#. add chat button +#: ../libempathy-gtk/empathy-contact-menu.c:316 #: ../libempathy-gtk/empathy-individual-menu.c:758 +#: ../libempathy-gtk/empathy-new-message-dialog.c:320 #: ../src/empathy-main-window-menubar.ui.h:16 msgid "_Chat" msgstr "_Pokalbis" -#: ../libempathy-gtk/empathy-contact-menu.c:361 -#: ../libempathy-gtk/empathy-individual-menu.c:849 +#: ../libempathy-gtk/empathy-contact-menu.c:348 +#: ../libempathy-gtk/empathy-individual-menu.c:850 msgctxt "menu item" msgid "_Audio Call" msgstr "_Garsinis skambutis" -#: ../libempathy-gtk/empathy-contact-menu.c:394 -#: ../libempathy-gtk/empathy-individual-menu.c:894 +#: ../libempathy-gtk/empathy-contact-menu.c:381 +#: ../libempathy-gtk/empathy-individual-menu.c:895 msgctxt "menu item" msgid "_Video Call" msgstr "_Vaizdinis skambutis" -#: ../libempathy-gtk/empathy-contact-menu.c:440 -#: ../libempathy-gtk/empathy-individual-menu.c:947 +#: ../libempathy-gtk/empathy-contact-menu.c:427 +#: ../libempathy-gtk/empathy-individual-menu.c:948 #: ../src/empathy-main-window-menubar.ui.h:27 msgid "_Previous Conversations" msgstr "_Ankstesni pokalbiai" -#: ../libempathy-gtk/empathy-contact-menu.c:462 -#: ../libempathy-gtk/empathy-individual-menu.c:988 +#: ../libempathy-gtk/empathy-contact-menu.c:449 +#: ../libempathy-gtk/empathy-individual-menu.c:989 msgid "Send File" msgstr "Siųsti failą" -#: ../libempathy-gtk/empathy-contact-menu.c:485 -#: ../libempathy-gtk/empathy-individual-menu.c:1030 +#: ../libempathy-gtk/empathy-contact-menu.c:472 +#: ../libempathy-gtk/empathy-individual-menu.c:1031 msgid "Share My Desktop" msgstr "Dalintis mano darbastaliu" -#: ../libempathy-gtk/empathy-contact-menu.c:525 -#: ../libempathy-gtk/empathy-contact-widget.c:1887 -#: ../libempathy-gtk/empathy-individual-menu.c:1065 -#: ../libempathy-gtk/empathy-individual-widget.c:1372 -msgid "Favorite" -msgstr "Mėgiamas" - -#: ../libempathy-gtk/empathy-contact-menu.c:554 -#: ../libempathy-gtk/empathy-individual-menu.c:1093 +#: ../libempathy-gtk/empathy-contact-menu.c:501 +#: ../libempathy-gtk/empathy-individual-menu.c:1094 msgid "Infor_mation" msgstr "Infor_macija" -#: ../libempathy-gtk/empathy-contact-menu.c:600 +#: ../libempathy-gtk/empathy-contact-menu.c:547 msgctxt "Edit contact (contextual menu)" msgid "_Edit" msgstr "_Taisyti" -#: ../libempathy-gtk/empathy-contact-menu.c:654 -#: ../libempathy-gtk/empathy-individual-menu.c:1284 +#: ../libempathy-gtk/empathy-contact-menu.c:601 +#: ../libempathy-gtk/empathy-individual-menu.c:1285 #: ../src/empathy-chat-window.c:1011 msgid "Inviting you to this room" msgstr "Jus kviečia į šį kambarį" -#: ../libempathy-gtk/empathy-contact-menu.c:685 -#: ../libempathy-gtk/empathy-individual-menu.c:1330 +#: ../libempathy-gtk/empathy-contact-menu.c:632 +#: ../libempathy-gtk/empathy-individual-menu.c:1331 msgid "_Invite to Chat Room" msgstr "_Pakviesti į pokalbių kambarį" #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:505 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:499 msgid "Search contacts" -msgstr "Ieškoti kontaktų" +msgstr "Ieškoti adresatų" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:535 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:529 msgid "Search: " msgstr "Ieškoti:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:593 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:587 msgid "_Add Contact" msgstr "_Pridėti adresatą" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:611 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:605 msgid "No contacts found" msgstr "Nerasta jokių adresatų" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:627 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:621 msgid "Your message introducing yourself:" msgstr "Jūsų pranešimas, apibūdinantis jus:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:635 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:629 msgid "Please let me see when you're online. Thanks!" msgstr "Leiskite man matyti, kai jūs esate prisijungęs. Ačiū!" -#: ../libempathy-gtk/empathy-contact-selector.c:129 -msgid "Select a contact" -msgstr "Pasirinkite adresatą" - -#: ../libempathy-gtk/empathy-contact-widget.c:336 -#: ../libempathy-gtk/empathy-individual-widget.c:153 -msgid "Full name:" -msgstr "Vardas ir pavardė:" - -#: ../libempathy-gtk/empathy-contact-widget.c:337 -#: ../libempathy-gtk/empathy-individual-widget.c:154 -msgid "Phone number:" -msgstr "Telefono numeris:" - -#: ../libempathy-gtk/empathy-contact-widget.c:338 -#: ../libempathy-gtk/empathy-individual-widget.c:155 -msgid "E-mail address:" -msgstr "El. pašto adresas:" - -#: ../libempathy-gtk/empathy-contact-widget.c:339 -#: ../libempathy-gtk/empathy-individual-widget.c:156 -msgid "Website:" -msgstr "Tinklalapis:" - -#: ../libempathy-gtk/empathy-contact-widget.c:340 -#: ../libempathy-gtk/empathy-individual-widget.c:157 -msgid "Birthday:" -msgstr "Gimtadienis:" - -#. Note to translators: this is the caption for a string of the form "5 -#. * minutes ago", and refers to the time since the contact last interacted -#. * with their IM client. -#. -#: ../libempathy-gtk/empathy-contact-widget.c:346 -msgid "Last seen:" -msgstr "Paskutiniai:" - -#: ../libempathy-gtk/empathy-contact-widget.c:348 -msgid "Connected from:" -msgstr "Susisiekta iš:" - -#. FIXME: once Idle implements SimplePresence using this information, we can -#. * and should bin this. -#. -#: ../libempathy-gtk/empathy-contact-widget.c:353 -msgid "Away message:" -msgstr "Išėjimo žinutė:" - -#: ../libempathy-gtk/empathy-contact-widget.c:606 +#: ../libempathy-gtk/empathy-contact-widget.c:571 +#: ../libempathy-gtk/empathy-individual-widget.c:304 msgid "Channels:" msgstr "Kanalai:" -#: ../libempathy-gtk/empathy-contact-widget.c:897 -#: ../libempathy-gtk/empathy-individual-widget.c:469 +#: ../libempathy-gtk/empathy-contact-widget.c:751 +#: ../libempathy-gtk/empathy-individual-widget.c:455 msgid "Country ISO Code:" msgstr "Šalies ISO kodas:" -#: ../libempathy-gtk/empathy-contact-widget.c:899 -#: ../libempathy-gtk/empathy-individual-widget.c:471 +#: ../libempathy-gtk/empathy-contact-widget.c:753 +#: ../libempathy-gtk/empathy-individual-widget.c:457 msgid "Country:" msgstr "Šalis:" -#: ../libempathy-gtk/empathy-contact-widget.c:901 -#: ../libempathy-gtk/empathy-individual-widget.c:473 +#: ../libempathy-gtk/empathy-contact-widget.c:755 +#: ../libempathy-gtk/empathy-individual-widget.c:459 msgid "State:" msgstr "Būsena:" -#: ../libempathy-gtk/empathy-contact-widget.c:903 -#: ../libempathy-gtk/empathy-individual-widget.c:475 +#: ../libempathy-gtk/empathy-contact-widget.c:757 +#: ../libempathy-gtk/empathy-individual-widget.c:461 msgid "City:" msgstr "Miestas:" -#: ../libempathy-gtk/empathy-contact-widget.c:905 -#: ../libempathy-gtk/empathy-individual-widget.c:477 +#: ../libempathy-gtk/empathy-contact-widget.c:759 +#: ../libempathy-gtk/empathy-individual-widget.c:463 msgid "Area:" msgstr "Sritis:" -#: ../libempathy-gtk/empathy-contact-widget.c:907 -#: ../libempathy-gtk/empathy-individual-widget.c:479 +#: ../libempathy-gtk/empathy-contact-widget.c:761 +#: ../libempathy-gtk/empathy-individual-widget.c:465 msgid "Postal Code:" msgstr "Pašto kodas:" -#: ../libempathy-gtk/empathy-contact-widget.c:909 -#: ../libempathy-gtk/empathy-individual-widget.c:481 +#: ../libempathy-gtk/empathy-contact-widget.c:763 +#: ../libempathy-gtk/empathy-individual-widget.c:467 msgid "Street:" msgstr "Gatvė:" -#: ../libempathy-gtk/empathy-contact-widget.c:911 -#: ../libempathy-gtk/empathy-individual-widget.c:483 +#: ../libempathy-gtk/empathy-contact-widget.c:765 +#: ../libempathy-gtk/empathy-individual-widget.c:469 msgid "Building:" msgstr "Pastatas:" -#: ../libempathy-gtk/empathy-contact-widget.c:913 -#: ../libempathy-gtk/empathy-individual-widget.c:485 +#: ../libempathy-gtk/empathy-contact-widget.c:767 +#: ../libempathy-gtk/empathy-individual-widget.c:471 msgid "Floor:" msgstr "Aukštas:" -#: ../libempathy-gtk/empathy-contact-widget.c:915 -#: ../libempathy-gtk/empathy-individual-widget.c:487 +#: ../libempathy-gtk/empathy-contact-widget.c:769 +#: ../libempathy-gtk/empathy-individual-widget.c:473 msgid "Room:" msgstr "Kambarys:" -#: ../libempathy-gtk/empathy-contact-widget.c:917 -#: ../libempathy-gtk/empathy-individual-widget.c:489 +#: ../libempathy-gtk/empathy-contact-widget.c:771 +#: ../libempathy-gtk/empathy-individual-widget.c:475 msgid "Text:" msgstr "Tekstas:" -#: ../libempathy-gtk/empathy-contact-widget.c:919 -#: ../libempathy-gtk/empathy-individual-widget.c:491 +#: ../libempathy-gtk/empathy-contact-widget.c:773 +#: ../libempathy-gtk/empathy-individual-widget.c:477 msgid "Description:" msgstr "Aprašymas:" -#: ../libempathy-gtk/empathy-contact-widget.c:921 -#: ../libempathy-gtk/empathy-individual-widget.c:493 +#: ../libempathy-gtk/empathy-contact-widget.c:775 +#: ../libempathy-gtk/empathy-individual-widget.c:479 msgid "URI:" msgstr "URI:" -#: ../libempathy-gtk/empathy-contact-widget.c:923 -#: ../libempathy-gtk/empathy-individual-widget.c:495 +#: ../libempathy-gtk/empathy-contact-widget.c:777 +#: ../libempathy-gtk/empathy-individual-widget.c:481 msgid "Accuracy Level:" msgstr "Tikslumo lygis:" -#: ../libempathy-gtk/empathy-contact-widget.c:925 -#: ../libempathy-gtk/empathy-individual-widget.c:497 +#: ../libempathy-gtk/empathy-contact-widget.c:779 +#: ../libempathy-gtk/empathy-individual-widget.c:483 msgid "Error:" msgstr "Paklaida:" -#: ../libempathy-gtk/empathy-contact-widget.c:927 -#: ../libempathy-gtk/empathy-individual-widget.c:499 +#: ../libempathy-gtk/empathy-contact-widget.c:781 +#: ../libempathy-gtk/empathy-individual-widget.c:485 msgid "Vertical Error (meters):" msgstr "Vertikali paklaida (metrais):" -#: ../libempathy-gtk/empathy-contact-widget.c:929 -#: ../libempathy-gtk/empathy-individual-widget.c:501 +#: ../libempathy-gtk/empathy-contact-widget.c:783 +#: ../libempathy-gtk/empathy-individual-widget.c:487 msgid "Horizontal Error (meters):" msgstr "Horizontali paklaida (metrais):" -#: ../libempathy-gtk/empathy-contact-widget.c:931 -#: ../libempathy-gtk/empathy-individual-widget.c:503 +#: ../libempathy-gtk/empathy-contact-widget.c:785 +#: ../libempathy-gtk/empathy-individual-widget.c:489 msgid "Speed:" msgstr "Greitis:" -#: ../libempathy-gtk/empathy-contact-widget.c:933 -#: ../libempathy-gtk/empathy-individual-widget.c:505 +#: ../libempathy-gtk/empathy-contact-widget.c:787 +#: ../libempathy-gtk/empathy-individual-widget.c:491 msgid "Bearing:" msgstr "Azimutas:" -#: ../libempathy-gtk/empathy-contact-widget.c:935 -#: ../libempathy-gtk/empathy-individual-widget.c:507 +#: ../libempathy-gtk/empathy-contact-widget.c:789 +#: ../libempathy-gtk/empathy-individual-widget.c:493 msgid "Climb Speed:" msgstr "Kilimo greitis:" -#: ../libempathy-gtk/empathy-contact-widget.c:937 -#: ../libempathy-gtk/empathy-individual-widget.c:509 +#: ../libempathy-gtk/empathy-contact-widget.c:791 +#: ../libempathy-gtk/empathy-individual-widget.c:495 msgid "Last Updated on:" msgstr "Paskutinį kartą atnaujinta:" -#: ../libempathy-gtk/empathy-contact-widget.c:939 -#: ../libempathy-gtk/empathy-individual-widget.c:511 +#: ../libempathy-gtk/empathy-contact-widget.c:793 +#: ../libempathy-gtk/empathy-individual-widget.c:497 msgid "Longitude:" msgstr "Ilguma:" -#: ../libempathy-gtk/empathy-contact-widget.c:941 -#: ../libempathy-gtk/empathy-individual-widget.c:513 +#: ../libempathy-gtk/empathy-contact-widget.c:795 +#: ../libempathy-gtk/empathy-individual-widget.c:499 msgid "Latitude:" msgstr "Platuma:" -#: ../libempathy-gtk/empathy-contact-widget.c:943 -#: ../libempathy-gtk/empathy-individual-widget.c:515 +#: ../libempathy-gtk/empathy-contact-widget.c:797 +#: ../libempathy-gtk/empathy-individual-widget.c:501 msgid "Altitude:" msgstr "Aukštuma:" -#: ../libempathy-gtk/empathy-contact-widget.c:996 -#: ../libempathy-gtk/empathy-contact-widget.c:1011 -#: ../libempathy-gtk/empathy-individual-widget.c:607 -#: ../libempathy-gtk/empathy-individual-widget.c:622 -#: ../src/empathy-preferences.ui.h:17 +#: ../libempathy-gtk/empathy-contact-widget.c:850 +#: ../libempathy-gtk/empathy-contact-widget.c:865 +#: ../libempathy-gtk/empathy-individual-widget.c:593 +#: ../libempathy-gtk/empathy-individual-widget.c:608 +#: ../src/empathy-preferences.ui.h:15 msgid "Location" msgstr "Vietovė" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:1013 -#: ../libempathy-gtk/empathy-individual-widget.c:624 +#: ../libempathy-gtk/empathy-contact-widget.c:867 +#: ../libempathy-gtk/empathy-individual-widget.c:610 #, c-format msgid "%s, %s" msgstr "%s, %s" -#: ../libempathy-gtk/empathy-contact-widget.c:1065 -#: ../libempathy-gtk/empathy-individual-widget.c:673 +#: ../libempathy-gtk/empathy-contact-widget.c:919 +#: ../libempathy-gtk/empathy-individual-widget.c:659 msgid "%B %e, %Y at %R UTC" msgstr "%Y %B %e, %R UTC" -#: ../libempathy-gtk/empathy-contact-widget.c:1147 -#: ../libempathy-gtk/empathy-individual-widget.c:915 +#: ../libempathy-gtk/empathy-contact-widget.c:1001 +#: ../libempathy-gtk/empathy-individual-widget.c:901 msgid "Save Avatar" msgstr "Išsaugoti pseudoportretą" -#: ../libempathy-gtk/empathy-contact-widget.c:1203 -#: ../libempathy-gtk/empathy-individual-widget.c:973 +#: ../libempathy-gtk/empathy-contact-widget.c:1057 +#: ../libempathy-gtk/empathy-individual-widget.c:959 msgid "Unable to save avatar" msgstr "Nepavyko išsaugoti pseudoportreto" +#: ../libempathy-gtk/empathy-contact-widget.c:1745 +#: ../libempathy-gtk/empathy-individual-menu.c:1066 +#: ../libempathy-gtk/empathy-individual-widget.c:1358 +msgid "Favorite" +msgstr "Mėgiamas" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:104 +msgid "Full name" +msgstr "Pilnas vardas" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:105 +msgid "Phone number" +msgstr "Telefono numeris" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:106 +msgid "E-mail address" +msgstr "El. pašto adresas" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:107 +msgid "Website" +msgstr "Tinklalapis" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:108 +msgid "Birthday" +msgstr "Gimtadienis" + +#. Note to translators: this is the caption for a string of the form "5 +#. * minutes ago", and refers to the time since the contact last interacted +#. * with their IM client. +#: ../libempathy-gtk/empathy-contactinfo-utils.c:113 +msgid "Last seen:" +msgstr "Paskutiniai:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:115 +msgid "Connected from:" +msgstr "Susisiekta iš:" + +#. FIXME: once Idle implements SimplePresence using this information, we can +#. * and should bin this. +#: ../libempathy-gtk/empathy-contactinfo-utils.c:119 +msgid "Away message:" +msgstr "Išėjimo žinutė:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:132 +msgid "work" +msgstr "darbo" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:133 +msgid "home" +msgstr "namų" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:134 +msgid "mobile" +msgstr "mobilusis" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:135 +msgid "voice" +msgstr "balso" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:136 +msgid "preferred" +msgstr "pageidaujamas" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:137 +msgid "postal" +msgstr "pašto" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:138 +msgid "parcel" +msgstr "siuntinys" + #: ../libempathy-gtk/empathy-contact-widget.ui.h:1 msgid "Location at (date)\t" msgstr "Vietovė (data)\t" #. Alias #: ../libempathy-gtk/empathy-contact-widget.ui.h:3 -#: ../libempathy-gtk/empathy-individual-widget.c:1308 +#: ../libempathy-gtk/empathy-individual-widget.c:1294 msgid "Alias:" msgstr "Alternatyvusis vardas:" @@ -2060,7 +2079,7 @@ msgstr "Adresato informacija" #. Identifier to connect to Instant Messaging network #. Translators: Identifier to connect to Instant Messaging network #: ../libempathy-gtk/empathy-contact-widget.ui.h:8 -#: ../libempathy-gtk/empathy-individual-widget.c:1517 +#: ../libempathy-gtk/empathy-individual-widget.c:1503 msgid "Identifier:" msgstr "Identifikatorius:" @@ -2095,18 +2114,18 @@ msgid "Select" msgstr "Pasirinkti" #: ../libempathy-gtk/empathy-groups-widget.c:409 -#: ../src/empathy-main-window.c:1833 +#: ../src/empathy-main-window.c:1951 msgid "Group" msgstr "Grupė" -#: ../libempathy-gtk/empathy-individual-dialogs.c:260 +#: ../libempathy-gtk/empathy-individual-dialogs.c:258 msgid "The following identity will be blocked:" msgid_plural "The following identities will be blocked:" msgstr[0] "Ši tapatybė bus užblokuota:" msgstr[1] "Šios tapatybės bus užblokuotos:" msgstr[2] "Šios tapatybės bus užblokuotos:" -#: ../libempathy-gtk/empathy-individual-dialogs.c:267 +#: ../libempathy-gtk/empathy-individual-dialogs.c:265 msgid "The following identity can not be blocked:" msgid_plural "The following identities can not be blocked:" msgstr[0] "Šios tapatybės nepavyko užblokuoti:" @@ -2146,7 +2165,7 @@ msgstr "Pasirinkite naudotiną paskyrą skambučio vykdymui" #. * title #: ../libempathy-gtk/empathy-individual-menu.c:313 #: ../libempathy-gtk/empathy-log-window.ui.h:2 -#: ../src/empathy-streamed-media-window.c:1299 +#: ../src/empathy-streamed-media-window.c:1285 #: ../src/empathy-call-window.ui.h:2 msgid "Call" msgstr "Skambutis" @@ -2163,34 +2182,34 @@ msgstr "Darbas" msgid "HOME" msgstr "NAMAI" -#. add an SMS button -#: ../libempathy-gtk/empathy-individual-menu.c:804 -#: ../libempathy-gtk/empathy-new-message-dialog.c:215 +#. add SMS button +#: ../libempathy-gtk/empathy-individual-menu.c:805 +#: ../libempathy-gtk/empathy-new-message-dialog.c:314 msgid "_SMS" msgstr "_SMS" -#: ../libempathy-gtk/empathy-individual-menu.c:1142 +#: ../libempathy-gtk/empathy-individual-menu.c:1143 msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "_Taisyti" #. Translators: this is a verb meaning "to connect two contacts together #. * to form a meta-contact". -#: ../libempathy-gtk/empathy-individual-menu.c:1168 +#: ../libempathy-gtk/empathy-individual-menu.c:1169 msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "_Susieti adresatus…" -#: ../libempathy-gtk/empathy-individual-view.c:2340 +#: ../libempathy-gtk/empathy-individual-view.c:2362 msgid "Delete and _Block" msgstr "Ištrinti ir _blokuoti" -#: ../libempathy-gtk/empathy-individual-view.c:2509 +#: ../libempathy-gtk/empathy-individual-view.c:2541 #, c-format msgid "Do you really want to remove the linked contact '%s'? Note that this will remove all the contacts which make up this linked contact." msgstr "Ar tikrai norite pašalinti susietąjį adresatą „%s“? Atminkite, jog bus pašalinti visi adresatai, sudarantys šį susietąjį adresatą." -#: ../libempathy-gtk/empathy-individual-widget.c:1656 +#: ../libempathy-gtk/empathy-individual-widget.c:1642 #, c-format msgid "Linked contact containing %u contact" msgid_plural "Linked contacts containing %u contacts" @@ -2269,48 +2288,48 @@ msgctxt "Unlink individual (button)" msgid "_Unlink" msgstr "_Išskaityti" -#: ../libempathy-gtk/empathy-log-window.c:634 +#: ../libempathy-gtk/empathy-log-window.c:621 msgid "History" msgstr "Istorija" -#: ../libempathy-gtk/empathy-log-window.c:689 +#: ../libempathy-gtk/empathy-log-window.c:676 msgid "Show" msgstr "Rodyti" -#: ../libempathy-gtk/empathy-log-window.c:711 +#: ../libempathy-gtk/empathy-log-window.c:698 msgid "Search" msgstr "Ieškoti" -#: ../libempathy-gtk/empathy-log-window.c:1159 +#: ../libempathy-gtk/empathy-log-window.c:1147 #, c-format msgid "Chat in %s" msgstr "Kalbėti kanale %s" -#: ../libempathy-gtk/empathy-log-window.c:1161 +#: ../libempathy-gtk/empathy-log-window.c:1149 #, c-format msgid "Chat with %s" msgstr "Kalbėti su %s" -#: ../libempathy-gtk/empathy-log-window.c:1211 -#: ../libempathy-gtk/empathy-log-window.c:1358 +#: ../libempathy-gtk/empathy-log-window.c:1199 +#: ../libempathy-gtk/empathy-log-window.c:1346 msgctxt "A date with the time" msgid "%A, %e %B %Y %X" msgstr "%A, %e %B %Y %X" #. Translators: this is an emote: '* Danielle waves' -#: ../libempathy-gtk/empathy-log-window.c:1300 +#: ../libempathy-gtk/empathy-log-window.c:1288 #, c-format msgid "* %s %s" msgstr "* %s %s" #. Translators: this is a message: 'Danielle: hello' #. * The string in bold is the sender's name -#: ../libempathy-gtk/empathy-log-window.c:1306 +#: ../libempathy-gtk/empathy-log-window.c:1294 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: ../libempathy-gtk/empathy-log-window.c:1382 +#: ../libempathy-gtk/empathy-log-window.c:1370 #, c-format msgid "%s second" msgid_plural "%s seconds" @@ -2318,7 +2337,7 @@ msgstr[0] "%s sekundė" msgstr[1] "%s sekundės" msgstr[2] "%s sekundžių" -#: ../libempathy-gtk/empathy-log-window.c:1389 +#: ../libempathy-gtk/empathy-log-window.c:1377 #, c-format msgid "%s minute" msgid_plural "%s minutes" @@ -2326,80 +2345,80 @@ msgstr[0] "%s minutė" msgstr[1] "%s minutės" msgstr[2] "%s minučių" -#: ../libempathy-gtk/empathy-log-window.c:1397 +#: ../libempathy-gtk/empathy-log-window.c:1385 #, c-format msgid "Call took %s, ended at %s" msgstr "Pokalbis truko %s, baigėsi %s" -#: ../libempathy-gtk/empathy-log-window.c:1729 +#: ../libempathy-gtk/empathy-log-window.c:1719 msgid "Today" msgstr "Šiandien" -#: ../libempathy-gtk/empathy-log-window.c:1733 +#: ../libempathy-gtk/empathy-log-window.c:1723 msgid "Yesterday" msgstr "Vakar" #. Translators: A date such as '23 May 2010' (strftime format) -#: ../libempathy-gtk/empathy-log-window.c:1748 +#: ../libempathy-gtk/empathy-log-window.c:1738 msgid "%e %B %Y" msgstr "%e %B %Y" -#: ../libempathy-gtk/empathy-log-window.c:1829 -#: ../libempathy-gtk/empathy-log-window.c:3444 +#: ../libempathy-gtk/empathy-log-window.c:1826 +#: ../libempathy-gtk/empathy-log-window.c:3458 msgid "Anytime" msgstr "Bet kada" -#: ../libempathy-gtk/empathy-log-window.c:1916 -#: ../libempathy-gtk/empathy-log-window.c:2372 +#: ../libempathy-gtk/empathy-log-window.c:1915 +#: ../libempathy-gtk/empathy-log-window.c:2371 msgid "Anyone" msgstr "Bet kas" -#: ../libempathy-gtk/empathy-log-window.c:2685 +#: ../libempathy-gtk/empathy-log-window.c:2684 msgid "Who" msgstr "Kas" -#: ../libempathy-gtk/empathy-log-window.c:2889 +#: ../libempathy-gtk/empathy-log-window.c:2893 msgid "When" msgstr "Kada" -#: ../libempathy-gtk/empathy-log-window.c:3005 +#: ../libempathy-gtk/empathy-log-window.c:3009 msgid "Anything" msgstr "Bet kas" -#: ../libempathy-gtk/empathy-log-window.c:3007 +#: ../libempathy-gtk/empathy-log-window.c:3011 msgid "Text chats" msgstr "Tekstiniai pokalbiai" -#: ../libempathy-gtk/empathy-log-window.c:3009 +#: ../libempathy-gtk/empathy-log-window.c:3013 #: ../src/empathy-preferences.ui.h:4 msgid "Calls" msgstr "Skambučiai" -#: ../libempathy-gtk/empathy-log-window.c:3014 +#: ../libempathy-gtk/empathy-log-window.c:3018 msgid "Incoming calls" msgstr "Įeinantys skambučiai" -#: ../libempathy-gtk/empathy-log-window.c:3015 +#: ../libempathy-gtk/empathy-log-window.c:3019 msgid "Outgoing calls" msgstr "Išeinantys skambučiai" -#: ../libempathy-gtk/empathy-log-window.c:3016 +#: ../libempathy-gtk/empathy-log-window.c:3020 msgid "Missed calls" msgstr "Praleistas skambučiai" -#: ../libempathy-gtk/empathy-log-window.c:3038 +#: ../libempathy-gtk/empathy-log-window.c:3042 msgid "What" msgstr "Kas" -#: ../libempathy-gtk/empathy-log-window.c:3747 +#: ../libempathy-gtk/empathy-log-window.c:3751 msgid "Are you sure you want to delete all logs of previous conversations?" msgstr "Ar tikrai norite ištrinti visų buvusių pokalbių žurnalus?" -#: ../libempathy-gtk/empathy-log-window.c:3751 +#: ../libempathy-gtk/empathy-log-window.c:3755 msgid "Clear All" msgstr "Išvalyti visus" -#: ../libempathy-gtk/empathy-log-window.c:3758 +#: ../libempathy-gtk/empathy-log-window.c:3762 msgid "Delete from:" msgstr "Trinti nuo:" @@ -2441,32 +2460,72 @@ msgstr "_Failas" msgid "page 2" msgstr "2 puslapis" -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2 -msgid "Contact ID:" -msgstr "Adresato ID:" +#: ../libempathy-gtk/empathy-new-message-dialog.c:84 +msgid "The contact is offline" +msgstr "Nurodytas adresatas yra atsijungęs" -#. add chat button -#: ../libempathy-gtk/empathy-new-message-dialog.c:225 -msgid "C_hat" -msgstr "_Pokalbis" +#: ../libempathy-gtk/empathy-new-message-dialog.c:86 +msgid "The specified contact is either invalid or unknown" +msgstr "Nurodytas adresatas yra neteisingas arba nežinomas" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:88 +msgid "The contact does not support this kind of conversation" +msgstr "Šiame pokalbyje tokia tema yra nepalaikoma" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:90 +msgid "The requested functionality is not implemented for this protocol" +msgstr "Šiam protokolui reikalaujamas funkcionalumas dar neįdiegtas" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:96 +msgid "Could not start a conversation with the given contact" +msgstr "Su pasirinktu adresatu užmegzti pokalbio nepavyko" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:98 +msgid "You are banned from this channel" +msgstr "Jūs šiame kanale užblokuotas" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:100 +msgid "This channel is full" +msgstr "Šis kanalas pilnas" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:102 +msgid "You must be invited to join this channel" +msgstr "Jūs turite būti pakviestas, jei norite prisijungti prie šio kanalo" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:104 +msgid "Can't proceed while disconnected" +msgstr "Negalima tęsti, kol atsijungta" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:106 +msgid "Permission denied" +msgstr "Prieiga uždrausta" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:112 +msgid "There was an error starting the conversation" +msgstr "Kilo klaida pradedant skambutį" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:291 +#: ../libempathy-gtk/empathy-new-call-dialog.c:203 +msgid "Enter a contact identifier or phone number:" +msgstr "Įveskite adresato atpažinimo žymą arba telefono numerį:" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-message-dialog.c:244 +#: ../libempathy-gtk/empathy-new-message-dialog.c:334 msgid "New Conversation" msgstr "Naujas pokalbis" -#. add video toggle -#: ../libempathy-gtk/empathy-new-call-dialog.c:204 -msgid "Send _Video" -msgstr "Siųsti _vaizdą" +#. add video button +#: ../libempathy-gtk/empathy-new-call-dialog.c:226 +msgid "_Video Call" +msgstr "_Vaizdinis skambutis" -#. add chat button -#: ../libempathy-gtk/empathy-new-call-dialog.c:215 -msgid "C_all" -msgstr "_Skambutis" +#. add audio button +#: ../libempathy-gtk/empathy-new-call-dialog.c:236 +msgid "_Audio Call" +msgstr "_Garsinis skambutis" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-call-dialog.c:225 +#: ../libempathy-gtk/empathy-new-call-dialog.c:246 msgid "New Call" msgstr "Naujas skambutis" @@ -2507,12 +2566,8 @@ msgstr "Spustelėkite, jei norite padaryti šią būsena mėgiama" msgid "Set status" msgstr "Nustatyti būseną" -#: ../libempathy-gtk/empathy-presence-chooser.c:943 -msgid "Set your presence and current status" -msgstr "Nurodykite savo buvimą ir dabartinę būseną" - #. Custom messages -#: ../libempathy-gtk/empathy-presence-chooser.c:1131 +#: ../libempathy-gtk/empathy-presence-chooser.c:1135 msgid "Custom messages…" msgstr "Pasirinktinės žinutės…" @@ -2589,12 +2644,12 @@ msgstr "Baigtas garsinis skambutis" msgid "Edit Custom Messages" msgstr "Taisykite pasirinktinę žinutę" -#: ../libempathy-gtk/empathy-theme-adium.c:1036 +#: ../libempathy-gtk/empathy-theme-adium.c:1047 #, c-format msgid "Message edited at %s" msgstr "Žinutė redaguota %s" -#: ../libempathy-gtk/empathy-theme-adium.c:1740 +#: ../libempathy-gtk/empathy-theme-adium.c:1752 msgid "Normal" msgstr "Normalus" @@ -2684,24 +2739,24 @@ msgstr "Atsiminti šį pasirinkimą ateityje" msgid "Certificate Details" msgstr "Liudijimo informacija" -#: ../libempathy-gtk/empathy-ui-utils.c:1735 +#: ../libempathy-gtk/empathy-ui-utils.c:1741 msgid "Unable to open URI" msgstr "Nepavyko atverti URI" -#: ../libempathy-gtk/empathy-ui-utils.c:1832 +#: ../libempathy-gtk/empathy-ui-utils.c:1859 msgid "Select a file" msgstr "Pasirinkite failą" -#: ../libempathy-gtk/empathy-ui-utils.c:1904 +#: ../libempathy-gtk/empathy-ui-utils.c:1934 msgid "Insufficient free space to save file" msgstr "Nepakanka laisvos vietos failui įrašyti" -#: ../libempathy-gtk/empathy-ui-utils.c:1912 +#: ../libempathy-gtk/empathy-ui-utils.c:1942 #, c-format msgid "%s of free space are required to save this file, but only %s is available. Please choose another location." msgstr "Šiam failui įrašyti reikia %s laisvos vietos, tačiau prieinama tik %s. Pasirinkite kitą vietą." -#: ../libempathy-gtk/empathy-ui-utils.c:1956 +#: ../libempathy-gtk/empathy-ui-utils.c:1986 #, c-format msgid "Incoming file from %s" msgstr "Failas jums nuo %s" @@ -2873,39 +2928,31 @@ msgstr "Vakariečių" msgid "Vietnamese" msgstr "Vietnamiečių" -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108 -msgid "The selected contact cannot receive files." -msgstr "Pasirinktas adresatas negali priimti failų." - -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114 -msgid "The selected contact is offline." -msgstr "Pasirinktas adresatas yra atsijungęs." - -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169 +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:203 msgid "No error message" msgstr "Nėra klaidų pranešimų" -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242 +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:276 msgid "Instant Message (Empathy)" msgstr "Tikralaikė žinutė (Empathy)" -#: ../src/empathy.c:434 +#: ../src/empathy.c:433 msgid "Don't connect on startup" msgstr "Paleidimo metu neprisijungti" -#: ../src/empathy.c:438 +#: ../src/empathy.c:437 msgid "Don't display the contact list or any other dialogs on startup" msgstr "Paleidus nerodyti adresatų sąrašo ar kitų dialogų" -#: ../src/empathy.c:453 +#: ../src/empathy.c:452 msgid "- Empathy IM Client" msgstr "– Tikralaikių pokalbių klientas Empathy" -#: ../src/empathy.c:640 +#: ../src/empathy.c:639 msgid "Error contacting the Account Manager" msgstr "Klaida susisiekiant su paskyrų tvarkykle" -#: ../src/empathy.c:642 +#: ../src/empathy.c:641 #, c-format msgid "" "There was an error while trying to connect to the Telepathy Account Manager. The error was:\n" @@ -3082,8 +3129,8 @@ msgid "Your new account has not been saved yet." msgstr "Jūsų naujoji paskyra dar neįrašyta." #: ../src/empathy-accounts-dialog.c:345 -#: ../src/empathy-streamed-media-window.c:754 -#: ../src/empathy-call-window.c:1330 +#: ../src/empathy-streamed-media-window.c:755 +#: ../src/empathy-call-window.c:1325 msgid "Connecting…" msgstr "Jungiamasi…" @@ -3175,11 +3222,11 @@ msgstr "Norint sukurti naują paskyrą, pirma reikia įdiegti kiekvieno pageidau msgid "_Import…" msgstr "_Importuoti…" -#: ../src/empathy-auth-client.c:249 +#: ../src/empathy-auth-client.c:251 msgid " - Empathy authentication client" msgstr " – Empathy tapatybės nustatymo klientas" -#: ../src/empathy-auth-client.c:265 +#: ../src/empathy-auth-client.c:267 msgid "Empathy authentication client" msgstr "Empathy tapatybės nustatymo klientas" @@ -3188,159 +3235,159 @@ msgid "People nearby" msgstr "Žmonės netoliese" #: ../src/empathy-av.c:118 -#: ../src/empathy-call.c:192 +#: ../src/empathy-call.c:193 msgid "- Empathy Audio/Video Client" msgstr "– Empathy garso/vaizdo transliavimo klientas" #: ../src/empathy-av.c:134 -#: ../src/empathy-call.c:217 +#: ../src/empathy-call.c:218 msgid "Empathy Audio/Video Client" msgstr "Empathy garso/vaizdo transliavimo klientas" -#: ../src/empathy-streamed-media-window.c:431 +#: ../src/empathy-streamed-media-window.c:432 msgid "Contrast" msgstr "Kontrastas" -#: ../src/empathy-streamed-media-window.c:434 +#: ../src/empathy-streamed-media-window.c:435 msgid "Brightness" msgstr "Skaistis" -#: ../src/empathy-streamed-media-window.c:437 +#: ../src/empathy-streamed-media-window.c:438 msgid "Gamma" msgstr "Gama" -#: ../src/empathy-streamed-media-window.c:542 +#: ../src/empathy-streamed-media-window.c:543 msgid "Volume" msgstr "Garsumas" -#: ../src/empathy-streamed-media-window.c:1110 +#: ../src/empathy-streamed-media-window.c:1094 msgid "_Sidebar" msgstr "Š_oninė juosta" -#: ../src/empathy-streamed-media-window.c:1130 +#: ../src/empathy-streamed-media-window.c:1114 msgid "Audio input" msgstr "Garso įvestis" -#: ../src/empathy-streamed-media-window.c:1134 +#: ../src/empathy-streamed-media-window.c:1118 msgid "Video input" msgstr "Vaizdo įvestis" -#: ../src/empathy-streamed-media-window.c:1140 +#: ../src/empathy-streamed-media-window.c:1126 msgid "Dialpad" msgstr "Tel. klaviatūra" -#: ../src/empathy-streamed-media-window.c:1151 +#: ../src/empathy-streamed-media-window.c:1137 msgid "Details" msgstr "Išsami informacija" #. translators: Call is a noun and %s is the contact name. This string #. * is used in the window title -#: ../src/empathy-streamed-media-window.c:1220 -#: ../src/empathy-call-window.c:1939 +#: ../src/empathy-streamed-media-window.c:1206 +#: ../src/empathy-call-window.c:1923 #, c-format msgid "Call with %s" msgstr "Skambinti su %s" -#: ../src/empathy-streamed-media-window.c:1453 -#: ../src/empathy-call-window.c:2183 +#: ../src/empathy-streamed-media-window.c:1439 +#: ../src/empathy-call-window.c:2167 msgid "The IP address as seen by the machine" msgstr "Kompiuterio matomas IP adresas" -#: ../src/empathy-streamed-media-window.c:1455 -#: ../src/empathy-call-window.c:2185 +#: ../src/empathy-streamed-media-window.c:1441 +#: ../src/empathy-call-window.c:2169 msgid "The IP address as seen by a server on the Internet" msgstr "Interneto serverio matomas IP adresas" -#: ../src/empathy-streamed-media-window.c:1457 -#: ../src/empathy-call-window.c:2187 +#: ../src/empathy-streamed-media-window.c:1443 +#: ../src/empathy-call-window.c:2171 msgid "The IP address of the peer as seen by the other side" msgstr "Kitos pusės matomas lygiarangio IP adresas" -#: ../src/empathy-streamed-media-window.c:1459 -#: ../src/empathy-call-window.c:2189 +#: ../src/empathy-streamed-media-window.c:1445 +#: ../src/empathy-call-window.c:2173 msgid "The IP address of a relay server" msgstr "Perdavimo serverio IP adresas" -#: ../src/empathy-streamed-media-window.c:1461 -#: ../src/empathy-call-window.c:2191 +#: ../src/empathy-streamed-media-window.c:1447 +#: ../src/empathy-call-window.c:2175 msgid "The IP address of the multicast group" msgstr "Daugiaadresio perdavimo grupės IP adresas" -#: ../src/empathy-streamed-media-window.c:1843 -#: ../src/empathy-streamed-media-window.c:1846 -#: ../src/empathy-streamed-media-window.c:1849 -#: ../src/empathy-streamed-media-window.c:1852 +#: ../src/empathy-streamed-media-window.c:1835 +#: ../src/empathy-streamed-media-window.c:1838 +#: ../src/empathy-streamed-media-window.c:1841 +#: ../src/empathy-streamed-media-window.c:1844 msgctxt "codec" msgid "Unknown" msgstr "Nežinoma" #. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-streamed-media-window.c:2144 +#: ../src/empathy-streamed-media-window.c:2136 #, c-format msgid "Connected — %d:%02dm" msgstr "Prisijunta – %d:%02dm" -#: ../src/empathy-streamed-media-window.c:2205 -#: ../src/empathy-call-window.c:2960 +#: ../src/empathy-streamed-media-window.c:2197 +#: ../src/empathy-call-window.c:3029 msgid "Technical Details" msgstr "Techninė informacija" -#: ../src/empathy-streamed-media-window.c:2243 -#: ../src/empathy-call-window.c:2998 +#: ../src/empathy-streamed-media-window.c:2235 +#: ../src/empathy-call-window.c:3068 #, c-format msgid "%s's software does not understand any of the audio formats supported by your computer" msgstr "Adresato %s programinė įranga nepalaiko jokių jūsų kompiuterio palaikomų formatų" -#: ../src/empathy-streamed-media-window.c:2248 -#: ../src/empathy-call-window.c:3003 +#: ../src/empathy-streamed-media-window.c:2240 +#: ../src/empathy-call-window.c:3073 #, c-format msgid "%s's software does not understand any of the video formats supported by your computer" msgstr "Adresato %s programinė įranga nepalaiko jokių jūsų kompiuterio palaikomų vaizdo įrašų formatų" -#: ../src/empathy-streamed-media-window.c:2254 -#: ../src/empathy-call-window.c:3009 +#: ../src/empathy-streamed-media-window.c:2246 +#: ../src/empathy-call-window.c:3079 #, c-format msgid "Can't establish a connection to %s. One of you might be on a network that does not allow direct connections." msgstr "Nepavyko užmegzti ryšio su %s. Gali būti, kad vienas iš jūsų yra tinkle, nepriimančiame tiesioginių prisijungimų." -#: ../src/empathy-streamed-media-window.c:2260 -#: ../src/empathy-call-window.c:3015 +#: ../src/empathy-streamed-media-window.c:2252 +#: ../src/empathy-call-window.c:3085 msgid "There was a failure on the network" msgstr "Tinkle yra triktis" -#: ../src/empathy-streamed-media-window.c:2264 -#: ../src/empathy-call-window.c:3019 +#: ../src/empathy-streamed-media-window.c:2256 +#: ../src/empathy-call-window.c:3089 msgid "The audio formats necessary for this call are not installed on your computer" msgstr "Jūsų kompiuteryje neįdiegti garso įrašų formatai, reikalingi šiam skambučiui" -#: ../src/empathy-streamed-media-window.c:2267 -#: ../src/empathy-call-window.c:3022 +#: ../src/empathy-streamed-media-window.c:2259 +#: ../src/empathy-call-window.c:3092 msgid "The video formats necessary for this call are not installed on your computer" msgstr "Jūsų kompiuteryje neįdiegti vaizdo įrašų formatai, reikalingi šiam skambučiui" -#: ../src/empathy-streamed-media-window.c:2277 -#: ../src/empathy-call-window.c:3034 +#: ../src/empathy-streamed-media-window.c:2269 +#: ../src/empathy-call-window.c:3104 #, c-format msgid "Something unexpected happened in a Telepathy component. Please report this bug and attach logs gathered from the 'Debug' window in the Help menu." msgstr "Telepathy komponente atsitiko kažkas nenumatyta. Praneškite apie šią klaidą ir pridėkite žurnalus, kuriuos surinkote meniu Pagalba „Derinimo“ lange." -#: ../src/empathy-streamed-media-window.c:2285 -#: ../src/empathy-call-window.c:3043 +#: ../src/empathy-streamed-media-window.c:2277 +#: ../src/empathy-call-window.c:3113 msgid "There was a failure in the call engine" msgstr "Skambinimo posistemėje yra triktis" -#: ../src/empathy-streamed-media-window.c:2288 -#: ../src/empathy-call-window.c:3046 +#: ../src/empathy-streamed-media-window.c:2280 +#: ../src/empathy-call-window.c:3116 msgid "The end of the stream was reached" msgstr "Pasiekta srauto pabaiga" -#: ../src/empathy-streamed-media-window.c:2328 -#: ../src/empathy-call-window.c:3086 +#: ../src/empathy-streamed-media-window.c:2320 +#: ../src/empathy-call-window.c:3156 msgid "Can't establish audio stream" msgstr "Nepavyko sukurti garso srauto" -#: ../src/empathy-streamed-media-window.c:2338 -#: ../src/empathy-call-window.c:3096 +#: ../src/empathy-streamed-media-window.c:2330 +#: ../src/empathy-call-window.c:3166 msgid "Can't establish video stream" msgstr "Nepavyko sukurti vaizdo srauto" @@ -3432,10 +3479,10 @@ msgstr "Perjungti vaizdo transliavimą" #: ../src/empathy-call-window.ui.h:21 #: ../src/empathy-streamed-media-window.ui.h:18 -#: ../src/empathy-call-window.c:2590 -#: ../src/empathy-call-window.c:2591 -#: ../src/empathy-call-window.c:2592 -#: ../src/empathy-call-window.c:2593 +#: ../src/empathy-call-window.c:2576 +#: ../src/empathy-call-window.c:2577 +#: ../src/empathy-call-window.c:2578 +#: ../src/empathy-call-window.c:2579 msgid "Unknown" msgstr "Nežinoma" @@ -3614,7 +3661,7 @@ msgid "Incoming video call" msgstr "Gaunamas vaizdinis skambutis" #: ../src/empathy-event-manager.c:521 -#: ../src/empathy-call-window.c:1563 +#: ../src/empathy-call-window.c:1555 msgid "Incoming call" msgstr "Skambutis jums" @@ -3631,7 +3678,7 @@ msgstr "%s jums skambina, ar atsiliepsite?" #: ../src/empathy-event-manager.c:529 #: ../src/empathy-event-manager.c:730 #: ../src/empathy-event-manager.c:763 -#: ../src/empathy-call-window.c:1569 +#: ../src/empathy-call-window.c:1561 #, c-format msgid "Incoming call from %s" msgstr "Skambutis jums nuo %s" @@ -3651,7 +3698,7 @@ msgstr "_Atsakyti vaizdu" #: ../src/empathy-event-manager.c:730 #: ../src/empathy-event-manager.c:763 -#: ../src/empathy-call-window.c:1569 +#: ../src/empathy-call-window.c:1561 #, c-format msgid "Incoming video call from %s" msgstr "Gaunamas vaizdinis skambutis iš %s" @@ -3695,7 +3742,7 @@ msgid "Incoming file transfer from %s" msgstr "Failo atsiuntimas iš %s" #: ../src/empathy-event-manager.c:1145 -#: ../src/empathy-main-window.c:378 +#: ../src/empathy-main-window.c:376 msgid "Password required" msgstr "Reikalingas slaptažodis" @@ -3848,51 +3895,61 @@ msgstr "Protokolas" msgid "Source" msgstr "Šaltinis" -#: ../src/empathy-main-window.c:395 +#: ../src/empathy-main-window.c:393 msgid "Provide Password" msgstr "Nurodykite slaptažodį" -#: ../src/empathy-main-window.c:401 +#: ../src/empathy-main-window.c:399 msgid "Disconnect" msgstr "Atsijungti" -#: ../src/empathy-main-window.c:642 +#: ../src/empathy-main-window.c:636 msgid "No match found" msgstr "Nerasta atitikmenų" -#: ../src/empathy-main-window.c:803 +#: ../src/empathy-main-window.c:744 +#, c-format +msgid "Sorry, %s accounts can’t be used until your %s software is updated." +msgstr "Deja, paskyra %s negali būti naudojama, kol nebus atnaujinta programinė įranga %s." + +#: ../src/empathy-main-window.c:812 +msgid "Update software..." +msgstr "Atnaujinti programinę įrangą..." + +#: ../src/empathy-main-window.c:818 +#: ../src/empathy-main-window.c:939 +msgid "Close" +msgstr "Užverti" + +#: ../src/empathy-main-window.c:927 msgid "Reconnect" msgstr "Prisijungti iš naujo" -#: ../src/empathy-main-window.c:809 +#: ../src/empathy-main-window.c:933 msgid "Edit Account" msgstr "Taisyti paskyrą" -#: ../src/empathy-main-window.c:815 -msgid "Close" -msgstr "Užverti" - #. Translators: this string will be something like: #. * Top up My Account ($1.23)..." -#: ../src/empathy-main-window.c:954 +#: ../src/empathy-main-window.c:1072 #, c-format msgid "Top up %s (%s)..." msgstr "Pakelti %s (%s)..." -#: ../src/empathy-main-window.c:1001 +#: ../src/empathy-main-window.c:1119 msgid "Top up account credit" msgstr "Pakelti paskyros kreditą" #. top up button -#: ../src/empathy-main-window.c:1072 +#: ../src/empathy-main-window.c:1190 msgid "Top Up..." msgstr "Pakelti..." -#: ../src/empathy-main-window.c:1815 +#: ../src/empathy-main-window.c:1933 msgid "Contact" msgstr "Adresatas" -#: ../src/empathy-main-window.c:2190 +#: ../src/empathy-main-window.c:2308 msgid "Contact List" msgstr "Adresatų sąrašas" @@ -4046,79 +4103,79 @@ msgstr "Kambarių sąrašas" msgid "_Room:" msgstr "_Kambarys:" -#: ../src/empathy-preferences.c:169 +#: ../src/empathy-preferences.c:167 msgid "Message received" msgstr "Gauta žinutė" -#: ../src/empathy-preferences.c:170 +#: ../src/empathy-preferences.c:168 msgid "Message sent" msgstr "Žinutė išsiųsta" -#: ../src/empathy-preferences.c:171 +#: ../src/empathy-preferences.c:169 msgid "New conversation" msgstr "Naujas pokalbis" -#: ../src/empathy-preferences.c:172 +#: ../src/empathy-preferences.c:170 msgid "Contact goes online" msgstr "Adresatas prisijungė" -#: ../src/empathy-preferences.c:173 +#: ../src/empathy-preferences.c:171 msgid "Contact goes offline" msgstr "Adresatas atsijungė" -#: ../src/empathy-preferences.c:174 +#: ../src/empathy-preferences.c:172 msgid "Account connected" msgstr "Paskyra prijungta" -#: ../src/empathy-preferences.c:175 +#: ../src/empathy-preferences.c:173 msgid "Account disconnected" msgstr "Paskyra atjungta" -#: ../src/empathy-preferences.c:484 +#: ../src/empathy-preferences.c:476 msgid "Language" msgstr "Kalba" #. translators: Contact name for the chat theme preview -#: ../src/empathy-preferences.c:734 +#: ../src/empathy-preferences.c:726 msgid "Juliet" msgstr "Džiuljeta" #. translators: Contact name for the chat theme preview -#: ../src/empathy-preferences.c:741 +#: ../src/empathy-preferences.c:733 msgid "Romeo" msgstr "Romeo" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:747 +#: ../src/empathy-preferences.c:739 msgid "O Romeo, Romeo, wherefore art thou Romeo?" msgstr "O Romeo, Romeo, todėl esi Romeo?" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:750 +#: ../src/empathy-preferences.c:742 msgid "Deny thy father and refuse thy name;" msgstr "Atsisakyk savo tėvo ir atsisakyk savo vardo;" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:753 +#: ../src/empathy-preferences.c:745 msgid "Or if thou wilt not, be but sworn my love" msgstr "O jei ne, pasilik, bet prisiek man meilę" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:756 +#: ../src/empathy-preferences.c:748 msgid "And I'll no longer be a Capulet." msgstr "Ir aš nebebūsių Capulet." #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:759 +#: ../src/empathy-preferences.c:751 msgid "Shall I hear more, or shall I speak at this?" msgstr "Ar turiu išgirsti daugiau, ar turiu kalbėti apie tai?" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:762 +#: ../src/empathy-preferences.c:754 msgid "Juliet has disconnected" msgstr "Džiuljeta atsijungė" -#: ../src/empathy-preferences.c:1166 +#: ../src/empathy-preferences.c:1158 msgid "Preferences" msgstr "Nustatymai" @@ -4170,100 +4227,96 @@ msgstr "Įjungti šių kalbų rašybos tikrinimą:" msgid "General" msgstr "Bendra" -#: ../src/empathy-preferences.ui.h:15 -msgid "Input level:" -msgstr "Įvesties lygis:" - #: ../src/empathy-preferences.ui.h:16 -msgid "Input volume:" -msgstr "Įvesties garsumas:" - -#: ../src/empathy-preferences.ui.h:18 msgid "Location sources:" msgstr "Vietovės šaltiniai:" -#: ../src/empathy-preferences.ui.h:19 +#: ../src/empathy-preferences.ui.h:17 msgid "Log conversations" msgstr "Vesti pokalbių žurnalus" -#: ../src/empathy-preferences.ui.h:20 +#: ../src/empathy-preferences.ui.h:18 msgid "Notifications" msgstr "Pranešimai" -#: ../src/empathy-preferences.ui.h:21 +#: ../src/empathy-preferences.ui.h:19 msgid "Play sound for events" msgstr "Groti garsus įvykiams" -#: ../src/empathy-preferences.ui.h:22 +#: ../src/empathy-preferences.ui.h:20 msgid "Privacy" msgstr "Privatumas" -#: ../src/empathy-preferences.ui.h:23 +#: ../src/empathy-preferences.ui.h:21 msgid "Reduced location accuracy means that nothing more precise than your city, state and country will be published. GPS coordinates will be accurate to 1 decimal place." msgstr "Sumažinus vietovės rodymo tikslumą, bus rodomas tik jūsų miestas, sritis ir šalis. GPS koordinatės bus rodomos vieno skaičiaus po kablelio tikslumu." -#: ../src/empathy-preferences.ui.h:24 +#: ../src/empathy-preferences.ui.h:22 msgid "Show _smileys as images" msgstr "Rodyti š_ypsenelės kaip paveikslėlius" -#: ../src/empathy-preferences.ui.h:25 +#: ../src/empathy-preferences.ui.h:23 msgid "Show contact _list in rooms" msgstr "Rodyti adresatų _sąrašą kambariuose" -#: ../src/empathy-preferences.ui.h:26 +#: ../src/empathy-preferences.ui.h:24 msgid "Sounds" msgstr "Garsai" -#: ../src/empathy-preferences.ui.h:27 +#: ../src/empathy-preferences.ui.h:25 msgid "Spell Checking" msgstr "Rašybos tikrinimas" -#: ../src/empathy-preferences.ui.h:28 +#: ../src/empathy-preferences.ui.h:26 msgid "The list of languages reflects only the languages for which you have a dictionary installed." msgstr "Šiame kalbų sąraše yra tik tos kalbos, kurių žodynus turite įdiegę." -#: ../src/empathy-preferences.ui.h:29 +#: ../src/empathy-preferences.ui.h:27 msgid "Themes" msgstr "Temos" -#: ../src/empathy-preferences.ui.h:30 +#: ../src/empathy-preferences.ui.h:28 +msgid "Use _echo cancellation to improve call quality" +msgstr "Naudoti _aido šalinimą, skambučio kokybei pagerinti" + +#: ../src/empathy-preferences.ui.h:29 msgid "Variant:" msgstr "Variantas:" -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:30 msgid "_Automatically connect on startup" msgstr "_Automatiškai prisijungti paleidimo metu" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:31 msgid "_Cellphone" msgstr "_Mobilusis telefonas" -#: ../src/empathy-preferences.ui.h:33 +#: ../src/empathy-preferences.ui.h:32 msgid "_Enable bubble notifications" msgstr "Į_jungti burbulinius pranešimus" -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:33 msgid "_Enable sound notifications" msgstr "Į_jungti garsinius pranešimus" -#: ../src/empathy-preferences.ui.h:35 +#: ../src/empathy-preferences.ui.h:34 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:36 +#: ../src/empathy-preferences.ui.h:35 msgid "_Network (IP, Wi-Fi)" msgstr "_Tinklas (IP, Wi-Fi)" -#: ../src/empathy-preferences.ui.h:37 +#: ../src/empathy-preferences.ui.h:36 msgid "_Open new chats in separate windows" msgstr "_Atverti naujus pokalbius atskiruose languose" -#: ../src/empathy-preferences.ui.h:38 +#: ../src/empathy-preferences.ui.h:37 msgid "_Publish location to my contacts" msgstr "_Rodyti vietovę mano adresatams" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:40 +#: ../src/empathy-preferences.ui.h:39 msgid "_Reduce location accuracy" msgstr "_Sumažinti vietovės tikslumą" @@ -4388,56 +4441,56 @@ msgstr "Lygis" msgid "The selected connection manager does not support the remote debugging extension." msgstr "Pasirinktoji ryšių valdyklė nepalaiko nuotolinio derinimo plėtinio." -#: ../src/empathy-invite-participant-dialog.c:179 -#: ../src/empathy-invite-participant-dialog.c:205 +#: ../src/empathy-invite-participant-dialog.c:197 +#: ../src/empathy-invite-participant-dialog.c:225 msgid "Invite Participant" msgstr "Pakviesti dalyvį" -#: ../src/empathy-invite-participant-dialog.c:180 +#: ../src/empathy-invite-participant-dialog.c:198 msgid "Choose a contact to invite into the conversation:" msgstr "Pasirinkite į pokalbį pakviestiną adresatą:" -#: ../src/empathy-invite-participant-dialog.c:201 +#: ../src/empathy-invite-participant-dialog.c:221 msgid "Invite" msgstr "Pakviesti" -#: ../src/empathy-accounts.c:184 +#: ../src/empathy-accounts.c:183 msgid "Don't display any dialogs; do any work (eg, importing) and exit" msgstr "Nerodyti jokių dialogų, atlikti norimas užduotis (pvz., importuoti)" -#: ../src/empathy-accounts.c:188 +#: ../src/empathy-accounts.c:187 msgid "Don't display any dialogs unless there are only \"People Nearby\" accounts" msgstr "Nerodyti jokių dialogų, nebent yra tik „Žmonės netoliese“ tipo paskyros" -#: ../src/empathy-accounts.c:192 +#: ../src/empathy-accounts.c:191 msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)" msgstr "Iš pradžių pasirinkti duotąją paskyrą (pvz., gabble/jabber/foo_40pavyzdys_2eorg0)" -#: ../src/empathy-accounts.c:194 +#: ../src/empathy-accounts.c:193 msgid "" msgstr "" -#: ../src/empathy-accounts.c:197 +#: ../src/empathy-accounts.c:196 msgid "Show account assistant" msgstr "Rodyti paskyros padėjėją" -#: ../src/empathy-accounts.c:203 +#: ../src/empathy-accounts.c:202 msgid "- Empathy Accounts" msgstr "– Empathy paskyros" -#: ../src/empathy-accounts.c:242 +#: ../src/empathy-accounts.c:238 msgid "Empathy Accounts" msgstr "Empathy paskyros" -#: ../src/empathy-debugger.c:70 +#: ../src/empathy-debugger.c:69 msgid "Show a particular service" msgstr "Rodyti tam tikrą tarnybą" -#: ../src/empathy-debugger.c:75 +#: ../src/empathy-debugger.c:74 msgid "- Empathy Debugger" msgstr "- Empathy derintuvė" -#: ../src/empathy-debugger.c:114 +#: ../src/empathy-debugger.c:113 msgid "Empathy Debugger" msgstr "Empathy derintuvė" @@ -4445,39 +4498,39 @@ msgstr "Empathy derintuvė" msgid "- Empathy Chat Client" msgstr "– Tikralaikių pokalbių klientas Empathy" -#: ../src/empathy-notifications-approver.c:203 +#: ../src/empathy-notifications-approver.c:190 msgid "Respond" msgstr "Atsakyti" -#: ../src/empathy-notifications-approver.c:217 -#: ../src/empathy-call-window.c:1573 +#: ../src/empathy-notifications-approver.c:204 +#: ../src/empathy-call-window.c:1565 msgid "Reject" msgstr "Atmesti" -#: ../src/empathy-notifications-approver.c:222 -#: ../src/empathy-notifications-approver.c:227 -#: ../src/empathy-call-window.c:1574 +#: ../src/empathy-notifications-approver.c:209 +#: ../src/empathy-notifications-approver.c:214 +#: ../src/empathy-call-window.c:1566 msgid "Answer" msgstr "Atsiliepti" -#: ../src/empathy-notifications-approver.c:227 +#: ../src/empathy-notifications-approver.c:214 msgid "Answer with video" msgstr "Atsakyti vaizdu" -#: ../src/empathy-notifications-approver.c:235 -#: ../src/empathy-notifications-approver.c:245 +#: ../src/empathy-notifications-approver.c:222 +#: ../src/empathy-notifications-approver.c:232 msgid "Decline" msgstr "Atsisakyti" -#: ../src/empathy-notifications-approver.c:239 -#: ../src/empathy-notifications-approver.c:250 +#: ../src/empathy-notifications-approver.c:226 +#: ../src/empathy-notifications-approver.c:237 msgid "Accept" msgstr "Priimti" #. translators: the 'Provide' button is displayed in a notification #. * bubble when Empathy is asking for an account password; clicking on it #. * brings the password popup. -#: ../src/empathy-notifications-approver.c:260 +#: ../src/empathy-notifications-approver.c:247 msgid "Provide" msgstr "Teikia" @@ -4488,57 +4541,54 @@ msgstr "%s ką tik jums skambino, bet tuo metu kalbėjote su kažkuo kitu." #. Translators: this is an "Info" label. It should be as short #. * as possible. -#: ../src/empathy-call-window.c:1183 -#: ../src/empathy-call-window.c:1206 +#: ../src/empathy-call-window.c:1172 +#: ../src/empathy-call-window.c:1195 msgid "i" msgstr "i" -#: ../src/empathy-call-window.c:2889 +#: ../src/empathy-call-window.c:2925 msgid "On hold" msgstr "Laukia" -#: ../src/empathy-call-window.c:2892 +#: ../src/empathy-call-window.c:2928 msgid "Mute" msgstr "Nutildyti" -#: ../src/empathy-call-window.c:2894 +#: ../src/empathy-call-window.c:2930 msgid "Duration" msgstr "Trukmė" #. Translators: 'status - minutes:seconds' the caller has been connected -#: ../src/empathy-call-window.c:2897 +#: ../src/empathy-call-window.c:2933 #, c-format msgid "%s — %d:%02dm" msgstr "%s — %d:%02dm" -#: ../libempathy-gtk/empathy-search-bar.c:243 -msgid "_Match case" -msgstr "Skirti raidžių _registrą" - -#~ msgid "Empathy has migrated butterfly logs" -#~ msgstr "Empathy perkėlė butterfly žurnalus" +#: ../src/empathy-call-window.c:3203 +#, c-format +msgid "Your current balance is %s." +msgstr "Jūsų balansas yra %s." -#~ msgid "Whether Empathy has migrated butterfly logs." -#~ msgstr "Ar Empathy perkėlė butterfly žurnalus." -#~ msgctxt "encoding video codec" +#: ../src/empathy-call-window.c:3207 +msgid "Sorry, you don’t have enough credit for that call." +msgstr "Deja, jūs neturite pakankamai kreditų, kad galėtumėte paskambinti." -#~ msgid "Unknown" -#~ msgstr "Nežinoma" -#~ msgctxt "encoding audio codec" +#: ../src/empathy-call-window.c:3209 +msgid "Top Up" +msgstr "Pakelti" -#~ msgid "Unknown" -#~ msgstr "Nežinoma" -#~ msgctxt "decoding video codec" +#: ../libempathy-gtk/empathy-search-bar.c:243 +msgid "_Match case" +msgstr "Skirti raidžių _registrą" -#~ msgid "Unknown" -#~ msgstr "Nežinoma" -#~ msgctxt "decoding audio codec" +#~ msgid "Call volume" +#~ msgstr "Skambučio garsumas" -#~ msgid "Unknown" -#~ msgstr "Nežinoma" +#~ msgid "Call volume, as a percentage." +#~ msgstr "Skambučio garsumas procentais." -#~ msgid "Find Next" -#~ msgstr "Ieškoti kito" +#~ msgid "Input level:" +#~ msgstr "Įvesties lygis:" -#~ msgid "Find Previous" -#~ msgstr "Ieškoti ankstesnio" +#~ msgid "Input volume:" +#~ msgstr "Įvesties garsumas:" diff --git a/po/my.po b/po/my.po new file mode 100644 index 00000000..344a1707 --- /dev/null +++ b/po/my.po @@ -0,0 +1,3764 @@ +# Burmese Translations of empathy +# Copyright (C) 2011 Myanmar L10n Team +# This file is distributed under the same license as the above package. +# ယဉ်မေဦး (Yin May Oo) , 2011. +msgid "" +msgstr "" +"Project-Id-Version: Empathy\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=empathy&keywords=I18N+L10N&component=General\n" +"POT-Creation-Date: 2011-08-15 06:45+0000\n" +"PO-Revision-Date: 2011-08-08 21:10-0700\n" +"Last-Translator: YinMayOo (ယဉ်မေဦး) \n" +"Language-Team: Burmese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-Language: Burmese\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: MYANMAR\n" +"X-Generator: Narro 0.9.4 on http://translate.libreworks.info\n" + +#: ../data/empathy.desktop.in.in.h:1 +msgid "Chat on Google Talk, Facebook, MSN and many other chat services" +msgstr "Google Talk, Facebook, MSN နှင့် အခြား စကားဝိုင်းဆော့ဝဲများ သုံးပါ။" + +#: ../data/empathy.desktop.in.in.h:2 +msgid "Empathy" +msgstr "အမ်ပသီ" + +#: ../data/empathy.desktop.in.in.h:3 +msgid "Empathy Internet Messaging" +msgstr "အမ်ပသီ အင်တာနက် ဆက်သွယ်ရေး" + +#: ../data/empathy.desktop.in.in.h:4 +msgid "IM Client" +msgstr "အိုင်အမ်ဆော့ဝဲ သုံးသူများ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:1 +msgid "Always open a separate chat window for new chats." +msgstr "စကားပြော စတင်တိုင်း ဝင်းဒိုးသစ် ဖွင့်ပါ။" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:2 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat." +msgstr "အဖွဲ့လိုက် စကားပြောရာတွင် သီးသန့်အမည် အပြည့်ခေါ်ရန် ထည့်ရမည့် သင်္ကေတ (တဘ်)" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 +msgid "Chat window theme" +msgstr "စကားပြောဝင်းဒိုး သွင်ပြင်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 +msgid "" +"Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")." +msgstr "" +"ကော်မာနှင့် ခြားထားသော စာလုံးပေါင်းစစ်မည့် ဘာသာစကားကို သုံးရန် (ဥပမာ - \"en, fr, nl" +"\"). " + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 +msgid "Compact contact list" +msgstr "ဆက်သွယ်ရန်စာရင်း အတိုချုံ့" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 +msgid "Connection managers should be used" +msgstr "ဆက်သွယ်မှု မန်နေဂျာ ခေါ်ပါ။" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 +msgid "Contact list sort criterion" +msgstr "အမည်စာရင်း စီစဉ်ရန် အခရာ အချက်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 +msgid "Default directory to select an avatar image from" +msgstr "မျက်နှာစာပုံ ရွေးရန် ပုံမှန်သတ်မှတ်ထားသော တည်နေရာလမ်းကြောင်း" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 +msgid "Disable popup notifications when away" +msgstr "အဝေးရောက်ချိန်တွင် ပွင့်ထွက် အသိပေးချက်များ ခွင့်မပြု" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 +msgid "Disable sounds when away" +msgstr "အဝေးရောက်ချိန်တွင် အသံများ ခွင့်မပြု" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 +msgid "Display incoming events in the status area" +msgstr "ဝင်ရောက်လာသော အဖြစ်အပျက်များကို အခြေအနေပြရာတွင် ဖော်ပြပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 +msgid "" +"Display incoming events in the status area. If false, present them to the " +"user immediately." +msgstr "" +"ဝင်ရောက်လာသော အဖြစ်အပျက်များကို အခြေအနေပြရာတွင် ဖော်ပြပါ။အမှားအယွင်း ရှိပါက " +"သုံးစွဲသူကို ချက်ချင်းပြပါ။" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 +msgid "Empathy can publish the user's location" +msgstr "သုံးစွဲသူ၏ တည်နေရာကို အမ်ပသီမှ ကြေညာနိုင်သည်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 +msgid "Empathy can use the GPS to guess the location" +msgstr "အမ်ပသီက GPS သုံးပြီး တည်နေရာကို ခန့်မှန်းနိုင်သည်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 +msgid "Empathy can use the cellular network to guess the location" +msgstr "အမ်ပသီက ဆယ်လူလာကွန်ယက် သုံးပြီး တည်နေရာကို ခန့်မှန်းနိုင်သည်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 +msgid "Empathy can use the network to guess the location" +msgstr "အမ်ပသီက ကွန်ယက် သုံးပြီး တည်နေရာကို ခန့်မှန်းနိုင်သည်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 +msgid "Empathy default download folder" +msgstr "အမ်ပသီ ပုံမှန် ဆွဲကူးဖိုင်တွဲ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 +msgid "Empathy has asked about importing accounts" +msgstr "အကောင့်များ ထည့်သွင်းရန် အမ်ပသီက မေးသည်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 +msgid "Empathy has migrated butterfly logs" +msgstr "လိပ်ပြာမှတ်တမ်းများကို အမ်ပသီက ဝင်ရောက်ခွင့် ပြုလိုက်သည်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 +msgid "Empathy should auto-away when idle" +msgstr "အမ်ပသီ ငြိမ်နေချိန်တွင် အလိုအလျောက်-အဝေး ပြောင်းပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 +msgid "Empathy should auto-connect on startup" +msgstr "စက် စစချင်း အမ်ပသီ အလိုအလျောက် ဆက်သွယ်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 +msgid "Empathy should reduce the location's accuracy" +msgstr "တည်နေရာတိကျမှု ကို အမ်ပသီ လျှော့ချသင့်သည် " + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 +msgid "Empathy should use the avatar of the contact as the chat window icon" +msgstr "ဆက်သွယ်သူ၏ မျက်နှာစာပုံကို အမ်ပသီက စကားပြောဝင်းဒိုး အိုင်ကွန်အဖြစ် သုံးပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 +msgid "Enable WebKit Developer Tools" +msgstr "ဝဘ် လက်သမား ကိရိယာများကို ခွင့်ပြုပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 +msgid "Enable popup notifications for new messages" +msgstr "စကားအသစ် ကို သတိပေးဖို့ ပွင့်ထွက်ဝင်းဒိုး ခွင့်ပြုပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 +msgid "Enable spell checker" +msgstr "စာလုံးပေါင်းစစ်ခွင့်ပြုပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 +msgid "Hide main window" +msgstr "ပင်မဝင်းဒိုး ဖွက်ထားပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 +msgid "Hide the main window." +msgstr "ပင်မဝင်းဒိုး ဖွက်ထားပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 +msgid "Nick completed character" +msgstr "သီးသန့်အမည် စာလုံးများ ပြည့်စုံပြီ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 +msgid "Open new chats in separate windows" +msgstr "စကားဆိုမှု အသစ်များကို သီးခြားဝင်းဒိုးမှာ ဖွင့်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 +msgid "Path of the Adium theme to use" +msgstr "Adium သွင်ပြင်သုံးရန် လမ်းကြောင်း" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 +msgid "Path of the Adium theme to use if the theme used for chat is Adium." +msgstr "" +"အကယ်၍ သုံးထားသော သွင်ပြင်သည် Adium ဖြစ်လျှင် Adium သွင်ပြင်သုံးရန် လမ်းကြောင်း" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 +msgid "Play a sound for incoming messages" +msgstr "ဝင်လာသော စကားအတွက် အသံဖွင့်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 +msgid "Play a sound for new conversations" +msgstr "စကားပြောအသစ်အတွက် အသံဖွင့်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 +msgid "Play a sound for outgoing messages" +msgstr "ပေးပို့မယ့် စကားအတွက် အသံဖွင့်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 +msgid "Play a sound when a contact logs in" +msgstr "ဆက်သွယ်သူ ဝင်လာလျှင် အသံဖွင့်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 +msgid "Play a sound when a contact logs out" +msgstr "ဆက်သွယ်သူ ထွက်သွားလျှင် အသံဖွင့်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 +msgid "Play a sound when we log in" +msgstr "ဝင်လာလျှင် အသံဖွင့်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 +msgid "Play a sound when we log out" +msgstr "ထွက်သွားလျှင် အသံဖွင့်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 +msgid "Pop up notifications if the chat isn't focused" +msgstr "စကားပြောရာ တစ်ခုတည်း မဟုတ်လျှင် အသိပေးချက်များ ပွင့်ထွက်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 +msgid "Pop up notifications when a contact logs in" +msgstr "ဆက်သွယ်သူ ဝင်လာလျှင် အသိပေးချက် ပွင့်ထွက်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +msgid "Pop up notifications when a contact logs out" +msgstr "ဆက်သွယ်သူ ထွက်သွားလျှင် အသိပေးချက် ပွင့်ထွက်ပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +msgid "Show avatars" +msgstr "မျက်နှာစာပုံများ ပြပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +msgid "Show contact list in rooms" +msgstr "အခန်းများတွင် ဆက်သွယ်သူစာရင်း ပြပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +msgid "Show hint about closing the main window" +msgstr "ပင်မဝင်းဒိုး ပိတ်ရာတွင် အချက်ပြပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +msgid "Show offline contacts" +msgstr "လိုင်းပြင် ဆက်သွယ်သူများ ပြပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +msgid "Show protocols" +msgstr "ပရိုတိုကောများ ပြပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +msgid "Spell checking languages" +msgstr "စာလုံးပေါင်းစစ် ဘာသာစကားများ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +msgid "The default folder to save file transfers in." +msgstr "ပြောင်းရွှေ့ဖိုင်များ သိမ်းဆည်းရန် ပုံမှန်ဖိုင်တွဲ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +msgid "The last directory that an avatar image was chosen from." +msgstr "နောက်ဆုံးမျက်နှာစာပုံ ရွေးယူခဲ့သော နေရာ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +msgid "The position for the chat window side pane" +msgstr "စကားပြောဝင်းဒိုး ဘေးတန်းအတွက် နေရာ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +msgid "The stored position (in pixels) of the chat window side pane." +msgstr "စကားပြောဝင်းဒိး ဘေးတန်း၏ သတ်မှတ်ထားသော နေရာ (ပစ်ဇယ်ဖြင့်)" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +msgid "The theme that is used to display the conversation in chat windows." +msgstr "စကားပြောဝင်းဒိုးတွင် ပြန်လှန်ပြောစကားများ ဖော်ပြရန် သွင်ပြင်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +msgid "Use graphical smileys" +msgstr "ပုံရိပ်ရုပ်ပြောင်များ သုံးပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +msgid "Use notification sounds" +msgstr "အသံ အသိပေးချက်များ သုံးပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +msgid "Use theme for chat rooms" +msgstr "စကားပြောခန်းများအတွက် ဤသွင်ပြင်ကို သုံးပါ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +msgid "Whether Empathy can publish the user's location to their contacts." +msgstr "သုံးစွဲသူ၏ တည်နေရာကို ဆက်သွယ်သူများထံ သတင်း" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +msgid "Whether Empathy can use the GPS to guess the location." +msgstr "အမ်ပသီ တည်နေရာခန့်မှန်းဖို့ GPS သုံးလို့ ရမရ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +msgid "Whether Empathy can use the cellular network to guess the location." +msgstr "အမ်ပသီ တည်နေရာခန့်မှန်းဖို့ ဆယ်လူလာကွန်ယက် သုံးလို့ ရမရ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +msgid "Whether Empathy can use the network to guess the location." +msgstr "အမ်ပသီ တည်နေရာခန့်မှန်းဖို့ ကွန်ယက်ကို သုံးလို့ ရမရ" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +msgid "Whether Empathy has asked about importing accounts from other programs." +msgstr "အခြားပရိုဂရမ်များမှ အကောင့်များ တင်သွင်းရန် အမ်ပသီကို ခိုင်းမခိုင်း " + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +msgid "Whether Empathy has migrated butterfly logs." +msgstr "လိပ်ပြာမှတ်တမ်းများကို အမ်ပသီမှ နေရာချပေးမပေး " + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +msgid "Whether Empathy should automatically log into your accounts on startup." +msgstr "စက်စစချင်း သင့်အကောင့်များကို အမ်ပသီမှ အလိုအလျောက် ဝင်ရောက်သင့်မသင့် " + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +msgid "" +"Whether Empathy should go into away mode automatically if the user is idle." +msgstr "" +"အသုံးပြုခြင်း မရှိတော့လျှင် အဝေးရောက် အခြေအနေသို့ အမ်ပသီမှ အလိုအလျောက် " +"ပြောင်းပေးသင့်မသင့် " + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +msgid "" +"Whether Empathy should reduce the location's accuracy for privacy reasons." +msgstr "လုံခြုံရေးအရ တည်နေရာ တိကျမှုကို အမ်ပသီက လျှော့ချဖို့သင့်မသင့် " + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +msgid "" +"Whether Empathy should use the avatar of the contact as the chat window icon." +msgstr "ဆက်သွယ်သူ၏ ကိုယ်စားရုပ်ပုံကို အမ်ပသီက စကားပြောဝင်းဒိုး၏ အိုင်ကွန်အဖြစ် သုံးသင့်မသင့်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +msgid "" +"Whether WebKit developer tools, such as the Web Inspector, should be enabled." +msgstr "Web Inspector ကဲ့သို့သော ကွန်ယက်ဖွဲ့တည်ဆောက်မှု တန်ဆာပလာများ သုံးခွင့် ပေးမပေး" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +msgid "" +"Whether connectivity managers should be used to automatically disconnect/" +"reconnect." +msgstr "ဆက်သွယ်မှုဆိုင်ရာ မန်နေဂျာမှ အလိုအလျောက် အဆက်ဖြတ်/ ပြန်ဆက် ရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +msgid "" +"Whether to check words typed against the languages you want to check with." +msgstr "ရိုက်လိုက်သော စာသားများကို သင်စစ်ဆေးစေလိုသော ဘာသာစကားအတိုင်း စစ်ဆေးပေးရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 +msgid "Whether to convert smileys into graphical images in conversations." +msgstr "စကားပြောရာတွင် ရုပ်ပြောင်များကို ပုံရိပ်များအဖြစ် ပြောင်းလဲပေးရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 +msgid "Whether to play a sound to notify of contacts logging into the network." +msgstr "ဆက်သွယ်သူများ လိုင်းပေါ်ရောက်လာလျှင် အချက်ပေးသံ ဖွင့်ပေးရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 +msgid "" +"Whether to play a sound to notify of contacts logging out of the network." +msgstr "ဆက်သွယ်သူများ လိုင်းပြင်ပရောက်သွားလျှင် အချက်ပေးသံ ဖွင့်ပေးရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 +msgid "Whether to play a sound to notify of events." +msgstr "အဖြစ်အပျက်များကို အချက်ပေးဖို့ အသံဖွင့်ရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 +msgid "Whether to play a sound to notify of incoming messages." +msgstr "မက်ဆေ့အဝင် အချက်ပေးဖို့ အသံဖွင့်ရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 +msgid "Whether to play a sound to notify of new conversations." +msgstr "စကားပြောအသစ် အချက်ပေးဖို့ အသံဖွင့်ရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 +msgid "Whether to play a sound to notify of outgoing messages." +msgstr "အထွက်စကားအတွက် အသိပေးဖို့ အသံဖွင့်မဖွင့်။" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +msgid "Whether to play a sound when logging into a network." +msgstr "ကွန်ယက်လိုင်းအတွင်း ဝင်ရောက်သွားလျှင် အသံဖွင့်ရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 +msgid "Whether to play a sound when logging out of a network." +msgstr "ကွန်ယက်လိုင်းပြင် ပြန်ထွက်သွားလျှင် အသံဖွင့်ရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 +msgid "Whether to play sound notifications when away or busy." +msgstr "အဝေးရောက်၊ အလုပ်များ ချိန်များတွင် အသံပြု အသိပေးချက်များ ဖွင့်ရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 +msgid "Whether to show a popup notification when a contact goes offline." +msgstr "ဆက်သွယ်သူ လိုင်းပြင်ပ ရောက်သွားလျှင် ပွင့်ထွက်အသိပေးချက်များ ပြရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 +msgid "Whether to show a popup notification when a contact goes online." +msgstr "ဆက်သွယ်သူ လိုင်းပေါ် ရောက်လာလျှင် ပွင့်ထွက်အသိပေးချက်များ ပြရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 +msgid "" +"Whether to show a popup notification when receiving a new message even if " +"the chat is already opened, but not focused." +msgstr "" +"စကားပြောဝင်းဒိုး ဖွင့်ထားသော်လည်း အာရုံမစိုက်ထားလျှင် မက်ဆေ့အသစ် လက်ခံရသည့်အခါ " +"ပွင့်ထွက်အသိပေးချက်ပြရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +msgid "Whether to show a popup notification when receiving a new message." +msgstr "မက်ဆေ့အသစ်များ လက်ခံရသည့်အခါ ပွင့်ထွက် အသိပေးချက် ပြရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 +msgid "" +"Whether to show avatars for contacts in the contact list and chat windows." +msgstr "" +"ဆက်သွယ်သူစာရင်း နှင့် စကားပြောဝင်းဒိုးများတွင် ဆက်သွယ်သူ၏ ကိုယ်စားရုပ်ပုံများ ပြရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 +msgid "Whether to show contacts that are offline in the contact list." +msgstr "ဆက်သွယ်သူစာရင်းထဲတွင် လိုင်းပြင်ပရောက် ဆက်သွယ်သူများကို ပြရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 +msgid "Whether to show popup notifications when away or busy." +msgstr "အဝေးရောက်၊ အလုပ်များ ချိန်များတွင် ပွင့်ထွက်အသိပေးချက်များ ပြရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 +msgid "Whether to show protocols for contacts in the contact list." +msgstr "ဆက်သွယ်သူစာရင်းထဲတွင် ဆက်သွယ်သူများ၏ ပရိုတိုကောများကို ပြရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 +msgid "Whether to show the contact list in chat rooms." +msgstr "စကားပြောခန်းများတွင် ဆက်သွယ်သူစာရင်းကို ပြရန် လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 +msgid "Whether to show the contact list in compact mode." +msgstr "ဆက်သွယ်သူစာရင်းကို အတိုချုံ့ပြသင့် မသင့်" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 +msgid "" +"Whether to show the message dialog about closing the main window with the " +"'x' button in the title bar." +msgstr "" +"တန်ဆာပလာဘားတန်းတွင် 'x'ခလုတ်ဖြင့် ပင်မဝင်းဒိုးပိတ်သိမ်းသွားခြင်းကို စာသားဖြင့်ပြရန် " +"လိုမလို" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 +msgid "Whether to use the theme for chat rooms." +msgstr "စကားပြောခန်းများအတွက် သွင်ပြင်များကို သုံး/ မသုံး" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 +msgid "" +"Which criterion to use when sorting the contact list. Default is to sort by " +"the contact's name with the value \"name\". A value of \"state\" will sort " +"the contact list by state." +msgstr "" +"ဆက်သွယ်သူစာရင်းကို စီစဉ်ရာတွင် သုံးဖို့အချက်အလက် ရွေးရန်။ပုံသေအားဖြင့် ဆက်သွယ်သူ၏ အမည် " +"အတိုင်း စီစဉ်သည်။ဆက်သွယ်သူစာရင်းကို အခြေအနေ အတိုင်း စီစဉ်မည်။" + +#: ../data/empathy-accounts.desktop.in.in.h:1 +msgid "Manage Messaging and VoIP accounts" +msgstr "စာပို့ခြင်းနှင့် VoIP အကောင့်များ စီမံပါ" + +#. Tweak the dialog +#: ../data/empathy-accounts.desktop.in.in.h:2 +#: ../src/empathy-accounts-dialog.c:2156 +msgid "Messaging and VoIP Accounts" +msgstr "စာပို့ခြင်းနှင့် VoIP အကောင့်များ" + +#: ../libempathy/empathy-ft-handler.c:851 +msgid "The hash of the received file and the sent one do not match" +msgstr "လက်ခံရသောဖိုင်နှင့် ပေးပို့သောဖိုင်တို့၏ အစိတ်အပိုင်းများ မတူညီပါ။" + +#: ../libempathy/empathy-ft-handler.c:1111 +msgid "File transfer not supported by remote contact" +msgstr "အဝေးရောက်ဆက်သွယ်သူမှ ဖိုင်ဝေမျှခြင်း လက်မခံပါ။" + +#: ../libempathy/empathy-ft-handler.c:1169 +msgid "The selected file is not a regular file" +msgstr "ရွေးထားသောဖိုင်မှာ ပုံမှန်ဖိုင် မဟုတ်ပါ။" + +#: ../libempathy/empathy-ft-handler.c:1178 +msgid "The selected file is empty" +msgstr "ရွေးထားသောဖိုင်မှာ ဘာမှမရှိပါ။" + +#: ../libempathy/empathy-tp-file.c:283 +msgid "Socket type not supported" +msgstr "ဆော့ကတ်အမျိုးအစားကို လက်မခံပါ။" + +#: ../libempathy/empathy-tp-file.c:402 +msgid "No reason was specified" +msgstr "အကြောင်းရင် သေချာ မဖော်ပြထား" + +#: ../libempathy/empathy-tp-file.c:405 +msgid "The change in state was requested" +msgstr "အခြေအနေပြောင်းပြရန် တောင်းဆိုသည်" + +#: ../libempathy/empathy-tp-file.c:408 +msgid "You canceled the file transfer" +msgstr "ဖိုင်ဝေမျှခြင်းကို သင်ရပ်ဆိုင်းလိုက်သည်" + +#: ../libempathy/empathy-tp-file.c:411 +msgid "The other participant canceled the file transfer" +msgstr "ဖိုင်ဝေမျှခြင်းကို အခြားတစ်ဘက်မှ ရပ်ဆိုင်းလိုက်သည်" + +#: ../libempathy/empathy-tp-file.c:414 +msgid "Error while trying to transfer the file" +msgstr "ဖိုင်ဝေမျှခြင်းပြုစဉ် ချို့ယွင်းမှုဖြစ်သည်" + +#: ../libempathy/empathy-tp-file.c:417 +msgid "The other participant is unable to transfer the file" +msgstr "ဖိုင်ဝေမျှခြင်းကို အခြားတစ်ဘက်မှ မပြုလုပ်နိုင်" + +#: ../libempathy/empathy-tp-file.c:420 ../libempathy/empathy-utils.c:324 +msgid "Unknown reason" +msgstr "အကြောင်းရင်း မသိရ" + +#: ../libempathy/empathy-utils.c:246 +msgid "Available" +msgstr "အဆင်ပြေ" + +#: ../libempathy/empathy-utils.c:248 +msgid "Busy" +msgstr "အလုပ်ရှုပ်" + +#: ../libempathy/empathy-utils.c:251 +msgid "Away" +msgstr "အဝေး" + +#: ../libempathy/empathy-utils.c:253 +msgid "Invisible" +msgstr "ကိုယ်ပျောက်" + +#: ../libempathy/empathy-utils.c:255 +msgid "Offline" +msgstr "လိုင်းပြင်ပ" + +#: ../libempathy/empathy-utils.c:257 ../src/empathy-call-window.c:1903 +#: ../src/empathy-call-window.c:1904 ../src/empathy-call-window.c:1905 +#: ../src/empathy-call-window.c:1906 ../src/empathy-call-window.ui.h:18 +msgid "Unknown" +msgstr "အမျိုးအမည်မသိ" + +#: ../libempathy/empathy-utils.c:296 +msgid "No reason specified" +msgstr "အကြောင်းရင်း ဖော်ပြမထား" + +#: ../libempathy/empathy-utils.c:298 ../libempathy/empathy-utils.c:354 +msgid "Status is set to offline" +msgstr "အခြေအနေကို လိုင်းပြင်ပ ဟု ပြထားသည်" + +#: ../libempathy/empathy-utils.c:300 ../libempathy/empathy-utils.c:334 +msgid "Network error" +msgstr "ကွန်ယက်ချို့ယွင်းမှု" + +#: ../libempathy/empathy-utils.c:302 ../libempathy/empathy-utils.c:336 +msgid "Authentication failed" +msgstr "စစ်ဆေးခြင်း မအောင်မြင်ပါ" + +#: ../libempathy/empathy-utils.c:304 ../libempathy/empathy-utils.c:338 +msgid "Encryption error" +msgstr "သိမ်းဆည်းမှု ချို့ယွင်း" + +#: ../libempathy/empathy-utils.c:306 +msgid "Name in use" +msgstr "အမည်တူရှိသည်" + +#: ../libempathy/empathy-utils.c:308 ../libempathy/empathy-utils.c:340 +msgid "Certificate not provided" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:310 ../libempathy/empathy-utils.c:342 +msgid "Certificate untrusted" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:312 ../libempathy/empathy-utils.c:344 +msgid "Certificate expired" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:314 ../libempathy/empathy-utils.c:346 +msgid "Certificate not activated" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:316 ../libempathy/empathy-utils.c:348 +msgid "Certificate hostname mismatch" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:318 ../libempathy/empathy-utils.c:350 +msgid "Certificate fingerprint mismatch" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:320 ../libempathy/empathy-utils.c:352 +msgid "Certificate self-signed" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:322 +msgid "Certificate error" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:356 +msgid "Encryption is not available" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:358 +msgid "Certificate is invalid" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:360 +msgid "Connection has been refused" +msgstr "ဆက်သွယ်မှုကို ငြင်းပယ်ခံရသည်" + +#: ../libempathy/empathy-utils.c:362 +msgid "Connection can't be established" +msgstr "ဆက်သွယ်မှုကို လမ်းခင်းမရပါ" + +#: ../libempathy/empathy-utils.c:364 +msgid "Connection has been lost" +msgstr "ဆက်သွယ်မှုပျောက်ဆုံး" + +#: ../libempathy/empathy-utils.c:366 +msgid "This resource is already connected to the server" +msgstr "ပင်ရင်းမှ ဆာဗာကို ချိတ်ဆက်ပြီး" + +#: ../libempathy/empathy-utils.c:368 +msgid "" +"Connection has been replaced by a new connection using the same resource" +msgstr "လက်ရှိပင်ရင်းမှ ဆက်သွယ်မှုအသစ် အစားထိုးလိုက်သည်" + +#: ../libempathy/empathy-utils.c:371 +msgid "The account already exists on the server" +msgstr "ဆာဗာပေါ်တွင် အကောင့်ရှိပြီးသား ဖြစ်သည်" + +#: ../libempathy/empathy-utils.c:373 +msgid "Server is currently too busy to handle the connection" +msgstr "ဆာဗာသည် ဆက်သွယ်မှုကို မဆောင်ရွက်နိုင်အောင် အလုပ်များနေသည်" + +#: ../libempathy/empathy-utils.c:375 +msgid "Certificate has been revoked" +msgstr "အသိအမှတ်ပြုလွှာကို ရုတ်သိမ်းခံရသည်" + +#: ../libempathy/empathy-utils.c:377 +msgid "" +"Certificate uses an insecure cipher algorithm or is cryptographically weak" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:380 +msgid "" +"The length of the server certificate, or the depth of the server certificate " +"chain, exceed the limits imposed by the cryptography library" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy/empathy-utils.c:544 +#: ../libempathy-gtk/empathy-contact-list-store.h:73 +msgid "People Nearby" +msgstr "အနီးအနားရှိသူများ" + +#: ../libempathy/empathy-utils.c:549 +msgid "Yahoo! Japan" +msgstr "Yahoo! ဂျပန်" + +#: ../libempathy/empathy-utils.c:550 +msgid "Facebook Chat" +msgstr "Facebook စကားပြောခန်း" + +#: ../libempathy/empathy-time.c:137 +#, c-format +msgid "%d second ago" +msgid_plural "%d seconds ago" +msgstr[0] "ပြီးခဲ့တဲ့ %Id စက္ကန့်" + +#: ../libempathy/empathy-time.c:142 +#, c-format +msgid "%d minute ago" +msgid_plural "%d minutes ago" +msgstr[0] "ပြီးခဲ့တဲ့ %Id မိနစ်" + +#: ../libempathy/empathy-time.c:147 +#, c-format +msgid "%d hour ago" +msgid_plural "%d hours ago" +msgstr[0] "ပြီးခဲ့တဲ့ %Id နာရီ" + +#: ../libempathy/empathy-time.c:152 +#, c-format +msgid "%d day ago" +msgid_plural "%d days ago" +msgstr[0] "ပြီးခဲ့တဲ့ %Id ရက်" + +#: ../libempathy/empathy-time.c:157 +#, c-format +msgid "%d week ago" +msgid_plural "%d weeks ago" +msgstr[0] "ပြီးခဲ့တဲ့ %Id သီတင်းပါတ်" + +#: ../libempathy/empathy-time.c:162 +#, c-format +msgid "%d month ago" +msgid_plural "%d months ago" +msgstr[0] "ပြီးခဲ့တဲ့ %Id လ" + +#: ../libempathy/empathy-time.c:167 +msgid "in the future" +msgstr "အနာဂါတ်မှာ" + +#: ../libempathy-gtk/empathy-account-chooser.c:463 +msgid "All" +msgstr "အားလုံး" + +#: ../libempathy-gtk/empathy-account-widget.c:514 +#: ../libempathy-gtk/empathy-log-window.c:646 +#: ../src/empathy-import-widget.c:312 +msgid "Account" +msgstr "အကောင့်" + +#: ../libempathy-gtk/empathy-account-widget.c:515 +msgid "Password" +msgstr "စကားဝှက်" + +#: ../libempathy-gtk/empathy-account-widget.c:516 +#: ../libempathy-gtk/empathy-irc-network-dialog.c:507 +msgid "Server" +msgstr "ဆာဗာ" + +#: ../libempathy-gtk/empathy-account-widget.c:517 +#: ../libempathy-gtk/empathy-irc-network-dialog.c:522 +msgid "Port" +msgstr "ဆုံမှတ် (ဆက်သွယ်ပေါက်)" + +#: ../libempathy-gtk/empathy-account-widget.c:589 +#: ../libempathy-gtk/empathy-account-widget.c:646 +#, c-format +msgid "%s:" +msgstr "%s -" + +#: ../libempathy-gtk/empathy-account-widget.c:1192 +msgid "Username:" +msgstr "သုံးစွဲသူအမည် -" + +#: ../libempathy-gtk/empathy-account-widget.c:1521 +msgid "A_pply" +msgstr "_P အတည်ပြု" + +#: ../libempathy-gtk/empathy-account-widget.c:1551 +msgid "L_og in" +msgstr "_O ဝင်" + +#. Account and Identifier +#: ../libempathy-gtk/empathy-account-widget.c:1617 +#: ../libempathy-gtk/empathy-contact-widget.ui.h:2 +#: ../libempathy-gtk/empathy-individual-widget.c:1401 +#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 +#: ../src/empathy-chatrooms-window.ui.h:1 +#: ../src/empathy-new-chatroom-dialog.ui.h:1 +msgid "Account:" +msgstr "အကောင့် -" + +#: ../libempathy-gtk/empathy-account-widget.c:1628 +msgid "_Enabled" +msgstr "_E ခွင့်ပြု" + +#: ../libempathy-gtk/empathy-account-widget.c:1693 +msgid "This account already exists on the server" +msgstr "ဤအကောင့်သည် ဆာဗာပေါ်တွင် ရှိပြီးဖြစ်သည်" + +#: ../libempathy-gtk/empathy-account-widget.c:1696 +msgid "Create a new account on the server" +msgstr "ဆာဗာပေါ်တွင် အကောင့်အသစ် ဖွင့်ပါ" + +#: ../libempathy-gtk/empathy-account-widget.c:1789 +msgid "Ca_ncel" +msgstr "_N နေတော့" + +#. To translators: The first parameter is the login id and the +#. * second one is the network. The resulting string will be something +#. * like: "MyUserName on freenode". +#. * You should reverse the order of these arguments if the +#. * server should come before the login id in your locale. +#: ../libempathy-gtk/empathy-account-widget.c:2077 +#, c-format +msgid "%1$s on %2$s" +msgstr "%2$s ပေါ်တွင် %1$s" + +#. To translators: The parameter is the protocol name. The resulting +#. * string will be something like: "Jabber Account" +#: ../libempathy-gtk/empathy-account-widget.c:2103 +#, c-format +msgid "%s Account" +msgstr "%s အကောင့်" + +#: ../libempathy-gtk/empathy-account-widget.c:2107 +msgid "New account" +msgstr "အကောင့်အသစ်" + +#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:1 +msgid "Example: MyScreenName" +msgstr "ဥပမာ: စခရင်အမည်" + +#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:2 +#: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1 +#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:2 +#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:2 +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3 +#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:2 +#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:1 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:2 +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:2 +msgid "Advanced" +msgstr "အဆင့်မြင့်" + +#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:3 +#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:4 +#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:5 +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:8 +#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:4 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:12 +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:5 +msgid "Pass_word:" +msgstr "_W စကားဝှက်" + +#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:4 +msgid "Screen _Name:" +msgstr "_N ရုပ်ပြအမည် -" + +#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:5 +msgid "What is your AIM password?" +msgstr "AIM စကားဝှက် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:6 +msgid "What is your AIM screen name?" +msgstr "AIM ရုပ်ပြအမည် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:7 +#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:7 +#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:8 +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:24 +#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7 +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9 +msgid "_Port:" +msgstr "_P ဆက်သွယ်ပေါက် -" + +#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:8 +#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:8 +#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:9 +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:25 +#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:8 +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:11 +#: ../src/empathy-new-chatroom-dialog.ui.h:9 +msgid "_Server:" +msgstr "_S ဆာဗာ -" + +#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:1 +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:1 +msgid "Example: username" +msgstr "ဥပမာ: သုံးစွဲသူအမည်" + +#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:3 +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:6 +#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:3 +msgid "Login I_D:" +msgstr "_D ဝင်ရောက်ရန် အမည် -" + +#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:5 +msgid "What is your GroupWise User ID?" +msgstr "GroupWise အမည် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:6 +msgid "What is your GroupWise password?" +msgstr "GroupWise စကားဝှက် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:1 +msgid "Example: 123456789" +msgstr "ဥပမာ: ၁၂၃၄၅၆၇၈၉" + +#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:3 +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:3 +msgid "Ch_aracter set:" +msgstr "_A သင်္ကေတ သတ်မှတ်ချက် -" + +#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:4 +msgid "ICQ _UIN:" +msgstr "_U ICQ အမည်" + +#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:6 +msgid "What is your ICQ UIN?" +msgstr "ICQ အမည် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:7 +msgid "What is your ICQ password?" +msgstr "ICQ စကားဝှက် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-sip.c:183 +#: ../libempathy-gtk/empathy-account-widget-sip.c:216 +msgid "Auto" +msgstr "အလိုအလျောက်" + +#: ../libempathy-gtk/empathy-account-widget-sip.c:186 +msgid "UDP" +msgstr "" + +#: ../libempathy-gtk/empathy-account-widget-sip.c:189 +msgid "TCP" +msgstr "" + +#: ../libempathy-gtk/empathy-account-widget-sip.c:192 +msgid "TLS" +msgstr "" + +#. translators: this string is very specific to SIP's internal; maybe +#. * best to keep the English version. +#: ../libempathy-gtk/empathy-account-widget-sip.c:221 +msgid "Register" +msgstr "မှတ်ပုံတင်" + +#. translators: this string is very specific to SIP's internal; maybe +#. * best to keep the English version. +#: ../libempathy-gtk/empathy-account-widget-sip.c:226 +msgid "Options" +msgstr "ရွေးစရာများ" + +#: ../libempathy-gtk/empathy-account-widget-sip.c:229 +msgid "None" +msgstr "ဘာမှမရွေး" + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1 +msgid "Character set:" +msgstr "သင်္ကေတ အတွဲ - " + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2 +msgid "Network" +msgstr "ကွန်ယက်" + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3 +msgid "Network:" +msgstr "ကွန်ယက် - " + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4 +msgid "Nickname:" +msgstr "သီးသန့်အမည် - " + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5 +msgid "Password:" +msgstr "စကားဝှက် - " + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6 +msgid "Quit message:" +msgstr "နှုတ်ဆက် စကား - " + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7 +msgid "Real name:" +msgstr "အမည်ရင်း - " + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8 +msgid "Servers" +msgstr "ဆာဗာ" + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9 +msgid "What is your IRC nickname?" +msgstr "သင်၏ IRC သီးသန့်အမည် ကို ဖော်ပြပါ?" + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10 +msgid "Which IRC network?" +msgstr "သင်၏ IRC ကွန်ယက် ကို ဖော်ပြပါ?" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:1 +msgid "Example: user@gmail.com" +msgstr "ဥပမာ: user@gmail.com" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:2 +msgid "Example: user@jabber.org" +msgstr "ဥပမာ: user@gmail.com" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:4 +msgid "Encr_yption required (TLS/SSL)" +msgstr "_Y သိမ်းထုတ်ခြင်းစနစ် လိုအပ်သော(TLS/SSL)" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:5 +msgid "I_gnore SSL certificate errors" +msgstr "_G SSL အသိအမှတ်ပြုလွှာ ချို့ယွင်းချက်များ မသိချင်ပါ" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7 +msgid "Override server settings" +msgstr "ဆာဗာ ဆက်တင်ပေါ်ကို ထပ်သွားပြင်ပါ" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:9 +msgid "Priori_ty:" +msgstr "_T ဦးစားပေး" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:10 +msgid "Reso_urce:" +msgstr "_U သယံဇာတ" + +#. This string is not wrapped in the dialog so you may have to add some '\n' to make it look nice. +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:12 +msgid "" +"This is your username, not your normal Facebook login.\n" +"If you are facebook.com/badger, enter badger.\n" +"Use this page to choose a " +"Facebook username if you don't have one." +msgstr "" +"This is your username, not your normal Facebook login.\n" +"If you are facebook.com/badger, enter badger.\n" +"Use this page to choose a " +"Facebook username if you don't have one." + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:15 +msgid "Use old SS_L" +msgstr "_L SSL အဟောင်းကို သုံးပါ" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:16 +msgid "What is your Facebook password?" +msgstr "Facebook စကားဝှက် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:17 +msgid "What is your Facebook username?" +msgstr "Facebook အသုံးပြအမည် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:18 +msgid "What is your Google ID?" +msgstr "Google အမည် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:19 +msgid "What is your Google password?" +msgstr "Google စကားဝှက် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:20 +msgid "What is your Jabber ID?" +msgstr "Jabber အမည် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:21 +msgid "What is your Jabber password?" +msgstr "Jabber စကားဝှက် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:22 +msgid "What is your desired Jabber ID?" +msgstr "သုံးလိုသည့် Jabber အမည် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23 +msgid "What is your desired Jabber password?" +msgstr "သုံးလိုသည့် Jabber စကားဝှက် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:1 +msgid "Example: user@hotmail.com" +msgstr "ဥပမာ: user@hotmail.com" + +#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:5 +msgid "What is your Windows Live ID?" +msgstr "Windows Live အမည် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:6 +msgid "What is your Windows Live password?" +msgstr "Windows Live စကားဝှက် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:2 +msgid "E-_mail address:" +msgstr "_M လျှပ်လိပ်စာ - " + +#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:3 +msgid "Nic_kname:" +msgstr "_K သီးသန့်အမည်" + +#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:4 +msgid "_First Name:" +msgstr "_F အမည် အစစာလုံး" + +#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:5 +msgid "_Jabber ID:" +msgstr "_J abber အမည် -" + +#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:6 +msgid "_Last Name:" +msgstr "_L အမည် နောက်ဆုံးစာလုံး" + +#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7 +msgid "_Published Name:" +msgstr "_P အများမြင်ရသည့် အမည်" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:1 +msgid "Example: user@my.sip.server" +msgstr "ဥပမာ: user@my.sip.server" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:3 +msgid "Authentication username:" +msgstr "ခွင့်ပြုထားသော သုံးစွဲသူအမည်" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:4 +msgid "Discover Binding" +msgstr "တွဲချည်ထားသည်များ လိုက်ရှာပါ" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:5 +msgid "Discover the STUN server automatically" +msgstr "STUN ဆာဗာကို အလိုအလျောက် လိုက်ရှာပါ" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:6 +msgid "Interval (seconds)" +msgstr "အချိန်ပိုင်း (စက္ကန့်)" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:7 +msgid "Keep-Alive Options" +msgstr "အမြဲတမ်း ရွေးစရာများ" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:8 +msgid "Loose Routing" +msgstr "အတည်မရှိလမ်းကြောင်း" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:9 +msgid "Mechanism:" +msgstr "မက္ကင်းနစ် - " + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:10 +msgid "Miscellaneous Options" +msgstr "ထွေလီကာလီ ရွေးစရာများ" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:11 +msgid "NAT Traversal Options" +msgstr "NAT Traversal ရွေးစရာများ" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:13 +msgid "Port:" +msgstr "ဆက်သွယ်ပေါက်" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:14 +msgid "Proxy Options" +msgstr "ပရောက်ဆီ ရွေးစရာများ" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:15 +msgid "STUN Server:" +msgstr "STUN ဆာဗာ - " + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:16 +msgid "Server:" +msgstr "ဆာဗာ - " + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17 +msgid "Transport:" +msgstr "ပို့ဆောင်ရေး -" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:18 +msgid "What is your SIP account password?" +msgstr "SIP အကောင့် စကားဝှက် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19 +msgid "What is your SIP login ID?" +msgstr "SIP အကောင့် အမည် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:20 +msgid "_Username:" +msgstr "_U သုံးစွဲသူအမည် -" + +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:4 +msgid "I_gnore conference and chat room invitations" +msgstr "_G ဆွေးနွေးပွဲ၊ စကားပြောခန်း ဖိတ်ကြားချက်များကို မသိချင်ပါ" + +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6 +msgid "What is your Yahoo! ID?" +msgstr "Yahoo! အမည် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:7 +msgid "What is your Yahoo! password?" +msgstr "Yahoo! စကားဝှက် သွင်းပါ" + +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:8 +msgid "Yahoo! I_D:" +msgstr "_D Yahoo! အမည် " + +#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:10 +msgid "_Room List locale:" +msgstr "_R အခန်းစာရင်း နေရာ-" + +#: ../libempathy-gtk/empathy-avatar-chooser.c:443 +#: ../libempathy-gtk/empathy-avatar-chooser.c:519 +msgid "Couldn't convert image" +msgstr "ပုံကို ပြောင်းလို့မရပါ" + +#: ../libempathy-gtk/empathy-avatar-chooser.c:444 +msgid "None of the accepted image formats are supported on your system" +msgstr "မည်သည့် ပုံအမျိုးအစားကိုမှ သင်၏စနစ်က လက်မခံပါ" + +#: ../libempathy-gtk/empathy-avatar-chooser.c:935 +msgid "Select Your Avatar Image" +msgstr "မျက်နှာစာပုံ ရွေးချယ်ပါ" + +#: ../libempathy-gtk/empathy-avatar-chooser.c:938 +msgid "No Image" +msgstr "ပုံ မရှိ" + +#: ../libempathy-gtk/empathy-avatar-chooser.c:1000 +msgid "Images" +msgstr "ပုံများ" + +#: ../libempathy-gtk/empathy-avatar-chooser.c:1004 +msgid "All Files" +msgstr "ဖိုင်များအားလုံး" + +#: ../libempathy-gtk/empathy-avatar-image.c:323 +msgid "Click to enlarge" +msgstr "အကျယ်ချဲ့ဖို့ ကလစ်ပါ" + +#: ../libempathy-gtk/empathy-chat.c:642 +msgid "Failed to open private chat" +msgstr "သီးခြားစကားပြောကွက် ဖွင့်လို့မရပါ" + +#: ../libempathy-gtk/empathy-chat.c:682 +msgid "Topic not supported on this conversation" +msgstr "စကားပြောရာတွင် ဤခေါင်းစဉ်ကို လက်မခံပါ" + +#: ../libempathy-gtk/empathy-chat.c:688 +msgid "You are not allowed to change the topic" +msgstr "ဤခေါင်းစဉ်ကို သင် မပြောင်းလဲနိုင်ပါ" + +#: ../libempathy-gtk/empathy-chat.c:822 +msgid "/clear: clear all messages from the current conversation" +msgstr "/clear - အခုစကားပြောရာမှ စာကြောင်းများအားလုံး ရှင်းလင်းပါ" + +#: ../libempathy-gtk/empathy-chat.c:825 +msgid "/topic : set the topic of the current conversation" +msgstr "/topic - အခုစကားပြောရာမှာ ခေါင်းစဉ်တင်ပါ" + +#: ../libempathy-gtk/empathy-chat.c:828 +msgid "/join : join a new chat room" +msgstr "/join - စကားပြောခန်းအသစ်မှာ ပါဝင်" + +#: ../libempathy-gtk/empathy-chat.c:831 +msgid "/j : join a new chat room" +msgstr "/j - စကားပြောခန်းအသစ်မှာ ပါဝင်" + +#: ../libempathy-gtk/empathy-chat.c:836 +msgid "/query []: open a private chat" +msgstr "/query []: သီးခြား စကားပြောခန်း ဖွင့်ပါ" + +#: ../libempathy-gtk/empathy-chat.c:839 +msgid "/msg : open a private chat" +msgstr "/msg : သီးခြား စကားပြောခန်း ဖွင့်ပါ" + +#: ../libempathy-gtk/empathy-chat.c:843 +msgid "/nick : change your nickname on the current server" +msgstr "/nick : လက်ရှိဆာဗာပေါ်မှ သီးသန့်အမည်ကို ပြောင်းပါ" + +#: ../libempathy-gtk/empathy-chat.c:846 +msgid "/me : send an ACTION message to the current conversation" +msgstr "/me : လက်ရှိ စကားပြောရာကို အဖြစ်အပျက်အကြောင်းစာပို့" + +#: ../libempathy-gtk/empathy-chat.c:849 +msgid "" +"/say : send to the current conversation. This is used to " +"send a message starting with a '/'. For example: \"/say /join is used to " +"join a new chat room\"" +msgstr "" +"/say : လက်ရှိ စကားပြောရာကို ပေးပို့သည်။ ' /' နှင့် အစပြုသော " +"စာသားများကို ပေးပို့ရာတွင် ဤအမိန့်ပေးချက်ကို သုံးသည်။ဥပမာ - \"/say /join ကိုသုံးပြီး " +"စကားပြောခန်းအသစ်မှာ ပါဝင်နိုင်တယ်။\" " + +#: ../libempathy-gtk/empathy-chat.c:854 +msgid "" +"/help []: show all supported commands. If is defined, " +"show its usage." +msgstr "" +"/help []: လက်ခံနိုင်သည့် အမိန့်ပေးချက်များ အားလုံးပြသည်။ အကယ်၍ " +"အတိအကျရှိလျှင် အသုံးပြုနည်း ပြသည်။" + +#: ../libempathy-gtk/empathy-chat.c:864 +#, c-format +msgid "Usage: %s" +msgstr "သုံးစွဲမှု: %s" + +#: ../libempathy-gtk/empathy-chat.c:893 +msgid "Unknown command" +msgstr "အမျိုးအမည်မသိ တောင်းဆိုချက်" + +#: ../libempathy-gtk/empathy-chat.c:1014 +msgid "Unknown command; see /help for the available commands" +msgstr "အမျိုးအမည်မသိ တောင်းဆိုချက် - ပေးနိုင်သော တောင်းဆိုချက်များကို /အကူအညီ တွင် ကြည့်ပါ" + +#: ../libempathy-gtk/empathy-chat.c:1152 +msgid "offline" +msgstr "လိုင်းပြင်" + +#: ../libempathy-gtk/empathy-chat.c:1155 +msgid "invalid contact" +msgstr "စည်းကမ်းနှင့်မညီသော အမည်" + +#: ../libempathy-gtk/empathy-chat.c:1158 +msgid "permission denied" +msgstr "ခွင့်ပြုရင် ငြင်းပယ်သည်" + +#: ../libempathy-gtk/empathy-chat.c:1161 +msgid "too long message" +msgstr "စကား အလွန်ရှည်သည်" + +#: ../libempathy-gtk/empathy-chat.c:1164 +msgid "not implemented" +msgstr "မတည်ဆောက်ခဲ့ပါ" + +#: ../libempathy-gtk/empathy-chat.c:1168 +msgid "unknown" +msgstr "အမျိုးအမည်မသိ" + +#: ../libempathy-gtk/empathy-chat.c:1172 +#, c-format +msgid "Error sending message '%s': %s" +msgstr "စကား ပို့ရာတွင် ချို့ယွင်းမှု '%s': %s" + +#: ../libempathy-gtk/empathy-chat.c:1282 ../src/empathy-chat-window.c:691 +msgid "Topic:" +msgstr "ခေါင်းစဉ် -" + +#: ../libempathy-gtk/empathy-chat.c:1294 +#, c-format +msgid "Topic set to: %s" +msgstr "ပေးထားသော ခေါင်းစဉ် - %s" + +#: ../libempathy-gtk/empathy-chat.c:1296 +msgid "No topic defined" +msgstr "ခေါင်းစဉ် မရှိပါ" + +#: ../libempathy-gtk/empathy-chat.c:1775 +msgid "(No Suggestions)" +msgstr "(အကြံမပြုထားပါ)" + +#: ../libempathy-gtk/empathy-chat.c:1829 +msgid "Insert Smiley" +msgstr "ရုပ်ပြောင်များထည့်ပါ" + +#. send button +#: ../libempathy-gtk/empathy-chat.c:1847 +#: ../libempathy-gtk/empathy-ui-utils.c:1808 +msgid "_Send" +msgstr "_S ပေးပို့" + +#: ../libempathy-gtk/empathy-chat.c:1881 +msgid "_Spelling Suggestions" +msgstr "_S စာလုံးပေါင်းအကြံပြု" + +#: ../libempathy-gtk/empathy-chat.c:1959 +msgid "Failed to retrieve recent logs" +msgstr "လောလောဆယ် မှတ်တမ်းများကို ပြတ်ထုတ်ယူဖို့ မအောင်မြင်ပါ" + +#: ../libempathy-gtk/empathy-chat.c:2065 +#, c-format +msgid "%s has disconnected" +msgstr "%s အဆက်အသွယ် ပြတ်သွားပြီ" + +#. translators: reverse the order of these arguments +#. * if the kicked should come before the kicker in your locale. +#. +#: ../libempathy-gtk/empathy-chat.c:2072 +#, c-format +msgid "%1$s was kicked by %2$s" +msgstr "%1$s သည် %2$s ကန်ထုတ်ခံရသည်" + +#: ../libempathy-gtk/empathy-chat.c:2075 +#, c-format +msgid "%s was kicked" +msgstr "%s ကန်ထုတ်ခံရသည်" + +#. translators: reverse the order of these arguments +#. * if the banned should come before the banner in your locale. +#. +#: ../libempathy-gtk/empathy-chat.c:2083 +#, c-format +msgid "%1$s was banned by %2$s" +msgstr "%1$s သည် %2$s မှ ပိတ်ပင်ခံရသည်" + +#: ../libempathy-gtk/empathy-chat.c:2086 +#, c-format +msgid "%s was banned" +msgstr "%s ပိတ်ပင်ခံရသည်" + +#: ../libempathy-gtk/empathy-chat.c:2090 +#, c-format +msgid "%s has left the room" +msgstr "%s အခန်းမှ ထွက်သွားသည်" + +#. Note to translators: this string is appended to +#. * notifications like "foo has left the room", with the message +#. * given by the user living the room. If this poses a problem, +#. * please let us know. :-) +#. +#: ../libempathy-gtk/empathy-chat.c:2099 +#, c-format +msgid " (%s)" +msgstr " (%s)" + +#: ../libempathy-gtk/empathy-chat.c:2124 +#, c-format +msgid "%s has joined the room" +msgstr "%s အခန်းထဲ ဝင်လာပြီ" + +#: ../libempathy-gtk/empathy-chat.c:2149 +#, c-format +msgid "%s is now known as %s" +msgstr "%s သည် %s ဖြစ်သည်" + +#: ../libempathy-gtk/empathy-chat.c:2288 ../src/empathy-call-window.c:1947 +msgid "Disconnected" +msgstr "ချိတ်ဆက် ပြတ်သွားသည်" + +#: ../libempathy-gtk/empathy-chat.c:2935 +msgid "Wrong password; please try again:" +msgstr "စာဝှက် မှားသည်။ ထပ်ကြိုးစားကြည့်ပါ။" + +#: ../libempathy-gtk/empathy-chat.c:2936 +msgid "Retry" +msgstr "ထပ်ကြိုးစား" + +#: ../libempathy-gtk/empathy-chat.c:2941 +msgid "This room is protected by a password:" +msgstr "သည်အခန်းကို စာဝှက်ဖြင့် ကာကွယ်ထားသည်" + +#: ../libempathy-gtk/empathy-chat.c:2942 +msgid "Join" +msgstr "ပူးပေါင်း" + +#: ../libempathy-gtk/empathy-chat.c:3082 +msgid "Connected" +msgstr "ဆက်သွယ်ထား" + +#: ../libempathy-gtk/empathy-chat.c:3135 +#: ../libempathy-gtk/empathy-log-window.c:653 +msgid "Conversation" +msgstr "စကားပြောဆိုမှု" + +#. Copy Link Address menu item +#: ../libempathy-gtk/empathy-chat-text-view.c:324 +#: ../libempathy-gtk/empathy-theme-adium.c:791 +msgid "_Copy Link Address" +msgstr "_C လင့်ခ် လိပ်စာ ကူးပါ" + +#. Open Link menu item +#: ../libempathy-gtk/empathy-chat-text-view.c:331 +#: ../libempathy-gtk/empathy-theme-adium.c:798 +msgid "_Open Link" +msgstr "_O လင့်ခ် ဖွင့်" + +#. Translators: timestamp displayed between conversations in +#. * chat windows (strftime format string) +#: ../libempathy-gtk/empathy-chat-text-view.c:424 +msgid "%A %B %d %Y" +msgstr "%A %B %Id %Y" + +#: ../libempathy-gtk/empathy-contact-dialogs.c:241 +#: ../libempathy-gtk/empathy-individual-edit-dialog.c:247 +msgid "Edit Contact Information" +msgstr "အဆက်အသွယ်၏ အချက်အလက်များ တည်းဖြတ်ပါ" + +#: ../libempathy-gtk/empathy-contact-dialogs.c:292 +msgid "Personal Information" +msgstr "ကိုယ်ရေးကိုယ်တာ အချက်များ" + +#: ../libempathy-gtk/empathy-contact-dialogs.c:397 +#: ../libempathy-gtk/empathy-individual-dialogs.c:111 +msgid "New Contact" +msgstr "အဆက်အသွယ် အသစ်" + +#: ../libempathy-gtk/empathy-contact-dialogs.ui.h:1 +msgid "Decide _Later" +msgstr "_L နောက်မှ ဆုံးဖြတ်ဖို့" + +#: ../libempathy-gtk/empathy-contact-dialogs.ui.h:2 +msgid "Subscription Request" +msgstr "စာရင်းဝင်ရန် တောင်းဆို" + +#: ../libempathy-gtk/empathy-contact-list-store.h:71 +msgid "Ungrouped" +msgstr "အဖွဲ့မဖွဲ့ထား" + +#: ../libempathy-gtk/empathy-contact-list-store.h:72 +msgid "Favorite People" +msgstr "နှစ်သက်ရာ ပုဂ္ဂိုလ်များ" + +#: ../libempathy-gtk/empathy-contact-list-view.c:2004 +#: ../libempathy-gtk/empathy-individual-view.c:2232 +#, c-format +msgid "Do you really want to remove the group '%s'?" +msgstr "အဖွဲ့ '%s'ကို တကယ် ပယ်ဖျက်မှာလား" + +#: ../libempathy-gtk/empathy-contact-list-view.c:2006 +#: ../libempathy-gtk/empathy-individual-view.c:2235 +msgid "Removing group" +msgstr "အဖွဲ့ကို ပယ်ဖျက်နေသည်" + +#. Remove +#: ../libempathy-gtk/empathy-contact-list-view.c:2055 +#: ../libempathy-gtk/empathy-contact-list-view.c:2132 +#: ../libempathy-gtk/empathy-individual-view.c:2290 +#: ../libempathy-gtk/empathy-individual-view.c:2388 +#: ../src/empathy-accounts-dialog.ui.h:7 +msgid "_Remove" +msgstr "_R ဖယ်ပစ်ပါ" + +#: ../libempathy-gtk/empathy-contact-list-view.c:2085 +#: ../libempathy-gtk/empathy-individual-view.c:2321 +#, c-format +msgid "Do you really want to remove the contact '%s'?" +msgstr "သည် '%s'အဆက်အသွယ်ကို တကယ် ပယ်ဖျက်မှာလား" + +#: ../libempathy-gtk/empathy-contact-list-view.c:2087 +#: ../libempathy-gtk/empathy-individual-view.c:2323 +msgid "Removing contact" +msgstr "အဆက်အသွယ် ပြန်ဖျက်" + +#: ../libempathy-gtk/empathy-contact-menu.c:203 +#: ../src/empathy-main-window.ui.h:13 +msgid "_Add Contact…" +msgstr "_A အဆက်အသွယ် ထပ်ပေါင်း" + +#: ../libempathy-gtk/empathy-contact-menu.c:230 +#: ../libempathy-gtk/empathy-individual-menu.c:516 +#: ../src/empathy-main-window.ui.h:14 +msgid "_Chat" +msgstr "_C စကားဆို" + +#: ../libempathy-gtk/empathy-contact-menu.c:260 +#: ../libempathy-gtk/empathy-individual-menu.c:559 +msgctxt "menu item" +msgid "_Audio Call" +msgstr "_A အသံ စကား" + +#: ../libempathy-gtk/empathy-contact-menu.c:290 +#: ../libempathy-gtk/empathy-individual-menu.c:601 +msgctxt "menu item" +msgid "_Video Call" +msgstr "_V ရုပ်သံ စကား" + +#: ../libempathy-gtk/empathy-contact-menu.c:330 +#: ../libempathy-gtk/empathy-individual-menu.c:644 +#: ../src/empathy-main-window.ui.h:25 +msgid "_Previous Conversations" +msgstr "_P ယခင်ပြောစကားများ" + +#: ../libempathy-gtk/empathy-contact-menu.c:352 +#: ../libempathy-gtk/empathy-individual-menu.c:685 +#, fuzzy +#| msgid "Send file" +msgid "Send File" +msgstr "ဖိုင်ပို့" + +#: ../libempathy-gtk/empathy-contact-menu.c:374 +#: ../libempathy-gtk/empathy-individual-menu.c:727 +#, fuzzy +#| msgid "Share my desktop" +msgid "Share My Desktop" +msgstr "ကိုယ့်အလုပ်ခုံကို ဝေမျှမယ်" + +#: ../libempathy-gtk/empathy-contact-menu.c:414 +#: ../libempathy-gtk/empathy-contact-widget.c:1570 +#: ../libempathy-gtk/empathy-individual-menu.c:761 +#: ../libempathy-gtk/empathy-individual-widget.c:1292 +msgid "Favorite" +msgstr "နှစ်သက်ရာ" + +#: ../libempathy-gtk/empathy-contact-menu.c:443 +#: ../libempathy-gtk/empathy-individual-menu.c:788 +msgid "Infor_mation" +msgstr "_M အချက်အလက်များ" + +#: ../libempathy-gtk/empathy-contact-menu.c:489 +msgctxt "Edit contact (contextual menu)" +msgid "_Edit" +msgstr "_E တည်းဖြတ်" + +#: ../libempathy-gtk/empathy-contact-menu.c:543 +#: ../libempathy-gtk/empathy-individual-menu.c:972 +#: ../src/empathy-chat-window.c:903 +msgid "Inviting you to this room" +msgstr "ဤအခန်းမှ ဖိတ်ခေါ်နေသည်" + +#: ../libempathy-gtk/empathy-contact-menu.c:574 +#: ../libempathy-gtk/empathy-individual-menu.c:1019 +#, fuzzy +#| msgid "_Invite to chat room" +msgid "_Invite to Chat Room" +msgstr "_I စကားပြောခန်းကို ဖိတ်ခေါ်" + +#: ../libempathy-gtk/empathy-contact-selector.c:129 +msgid "Select a contact" +msgstr "အဆက်အသွယ် တစ်ခုရွေးပါ။" + +#: ../libempathy-gtk/empathy-contact-widget.c:226 +#: ../libempathy-gtk/empathy-individual-widget.c:148 +msgid "Full name:" +msgstr "အမည်ရင်း - " + +#: ../libempathy-gtk/empathy-contact-widget.c:227 +#: ../libempathy-gtk/empathy-individual-widget.c:149 +msgid "Phone number:" +msgstr "ဖုံးနံပါတ် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:228 +#: ../libempathy-gtk/empathy-individual-widget.c:150 +msgid "E-mail address:" +msgstr "လျှပ်လိပ်စာ - " + +#: ../libempathy-gtk/empathy-contact-widget.c:229 +#: ../libempathy-gtk/empathy-individual-widget.c:151 +msgid "Website:" +msgstr "ဝဘ်ဆိုက် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:230 +#: ../libempathy-gtk/empathy-individual-widget.c:152 +msgid "Birthday:" +msgstr "မွေးနေ့ - " + +#: ../libempathy-gtk/empathy-contact-widget.c:609 +#: ../libempathy-gtk/empathy-individual-widget.c:454 +msgid "Country ISO Code:" +msgstr "နိုင်ငံ ISO ကုဒ် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:611 +#: ../libempathy-gtk/empathy-individual-widget.c:456 +msgid "Country:" +msgstr "နိုင်ငံ - " + +#: ../libempathy-gtk/empathy-contact-widget.c:613 +#: ../libempathy-gtk/empathy-individual-widget.c:458 +msgid "State:" +msgstr "တိုင်းဒေသ - " + +#: ../libempathy-gtk/empathy-contact-widget.c:615 +#: ../libempathy-gtk/empathy-individual-widget.c:460 +msgid "City:" +msgstr "မြို့ - " + +#: ../libempathy-gtk/empathy-contact-widget.c:617 +#: ../libempathy-gtk/empathy-individual-widget.c:462 +msgid "Area:" +msgstr "ဧရိယာ - " + +#: ../libempathy-gtk/empathy-contact-widget.c:619 +#: ../libempathy-gtk/empathy-individual-widget.c:464 +msgid "Postal Code:" +msgstr "စာတိုက်အမှတ် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:621 +#: ../libempathy-gtk/empathy-individual-widget.c:466 +msgid "Street:" +msgstr "လမ်း - " + +#: ../libempathy-gtk/empathy-contact-widget.c:623 +#: ../libempathy-gtk/empathy-individual-widget.c:468 +msgid "Building:" +msgstr "အိမ်အမှတ် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:625 +#: ../libempathy-gtk/empathy-individual-widget.c:470 +msgid "Floor:" +msgstr "အထပ် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:627 +#: ../libempathy-gtk/empathy-individual-widget.c:472 +msgid "Room:" +msgstr "အခန်း - " + +#: ../libempathy-gtk/empathy-contact-widget.c:629 +#: ../libempathy-gtk/empathy-individual-widget.c:474 +msgid "Text:" +msgstr "စာသား - " + +#: ../libempathy-gtk/empathy-contact-widget.c:631 +#: ../libempathy-gtk/empathy-individual-widget.c:476 +msgid "Description:" +msgstr "ရှင်းလင်းချက် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:633 +#: ../libempathy-gtk/empathy-individual-widget.c:478 +msgid "URI:" +msgstr "URI-" + +#: ../libempathy-gtk/empathy-contact-widget.c:635 +#: ../libempathy-gtk/empathy-individual-widget.c:480 +msgid "Accuracy Level:" +msgstr "တိကျမှု အဆင့် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:637 +#: ../libempathy-gtk/empathy-individual-widget.c:482 +msgid "Error:" +msgstr "အမှား - " + +#: ../libempathy-gtk/empathy-contact-widget.c:639 +#: ../libempathy-gtk/empathy-individual-widget.c:484 +msgid "Vertical Error (meters):" +msgstr "ဒေါင်လိုက် အမှား (မီတာ) - " + +#: ../libempathy-gtk/empathy-contact-widget.c:641 +#: ../libempathy-gtk/empathy-individual-widget.c:486 +msgid "Horizontal Error (meters):" +msgstr "ဘေးတိုက် အမှား (မီတာ) - " + +#: ../libempathy-gtk/empathy-contact-widget.c:643 +#: ../libempathy-gtk/empathy-individual-widget.c:488 +msgid "Speed:" +msgstr "အလျင် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:645 +#: ../libempathy-gtk/empathy-individual-widget.c:490 +msgid "Bearing:" +msgstr "ဝန်ဆောင်ပုံ" + +#: ../libempathy-gtk/empathy-contact-widget.c:647 +#: ../libempathy-gtk/empathy-individual-widget.c:492 +msgid "Climb Speed:" +msgstr "တက်နှုန်း အလျင် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:649 +#: ../libempathy-gtk/empathy-individual-widget.c:494 +msgid "Last Updated on:" +msgstr "နောက်ဆုံး မွမ်းမံရက် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:651 +#: ../libempathy-gtk/empathy-individual-widget.c:496 +msgid "Longitude:" +msgstr "လောင်ဂျီကျု - " + +#: ../libempathy-gtk/empathy-contact-widget.c:653 +#: ../libempathy-gtk/empathy-individual-widget.c:498 +msgid "Latitude:" +msgstr "လတ္တီကျု - " + +#: ../libempathy-gtk/empathy-contact-widget.c:655 +#: ../libempathy-gtk/empathy-individual-widget.c:500 +msgid "Altitude:" +msgstr "အမြင့် - " + +#: ../libempathy-gtk/empathy-contact-widget.c:718 +#: ../libempathy-gtk/empathy-contact-widget.c:735 +#: ../libempathy-gtk/empathy-individual-widget.c:582 +#: ../libempathy-gtk/empathy-individual-widget.c:599 +#: ../src/empathy-preferences.ui.h:12 +msgid "Location" +msgstr "တည်နေရာ - " + +#. translators: format is "Location, $date" +#: ../libempathy-gtk/empathy-contact-widget.c:737 +#: ../libempathy-gtk/empathy-individual-widget.c:601 +#, c-format +msgid "%s, %s" +msgstr "" + +#: ../libempathy-gtk/empathy-contact-widget.c:789 +#: ../libempathy-gtk/empathy-individual-widget.c:650 +msgid "%B %e, %Y at %R UTC" +msgstr "" + +#: ../libempathy-gtk/empathy-contact-widget.c:872 +#: ../libempathy-gtk/empathy-individual-widget.c:841 +msgid "Save Avatar" +msgstr "အရုပ်ပုံ သိမ်း" + +#: ../libempathy-gtk/empathy-contact-widget.c:928 +#: ../libempathy-gtk/empathy-individual-widget.c:899 +msgid "Unable to save avatar" +msgstr "အရုပ်ပုံ သိမ်းရန် အဆင်မပြေပါ" + +#: ../libempathy-gtk/empathy-contact-widget.ui.h:1 +msgid "Location at (date)\t" +msgstr "တည်နေရာ (နေ့ရက်)\t" + +#. Alias +#: ../libempathy-gtk/empathy-contact-widget.ui.h:3 +#: ../libempathy-gtk/empathy-individual-widget.c:1227 +msgid "Alias:" +msgstr "ခေါ်လိုသည့် အမည် - " + +#: ../libempathy-gtk/empathy-contact-widget.ui.h:4 +msgid "Client Information" +msgstr "ကလိုင်းယင့် အချက်အလက်များ" + +#: ../libempathy-gtk/empathy-contact-widget.ui.h:5 +msgid "Client:" +msgstr "ကလိုင်းယင့် - " + +#: ../libempathy-gtk/empathy-contact-widget.ui.h:6 +#: ../libempathy-gtk/empathy-individual-widget.ui.h:2 +msgid "Contact Details" +msgstr "အဆက်အသွယ် အပြည့်အစုံ" + +#. Identifier to connect to Instant Messaging network +#. Translators: Identifier to connect to Instant Messaging network +#: ../libempathy-gtk/empathy-contact-widget.ui.h:8 +#: ../libempathy-gtk/empathy-individual-widget.c:1431 +msgid "Identifier:" +msgstr "အမည်၊လိပ်စာ - " + +#: ../libempathy-gtk/empathy-contact-widget.ui.h:9 +#: ../libempathy-gtk/empathy-individual-widget.ui.h:3 +msgid "Information requested…" +msgstr "တောင်းထားသော အချက်အလက်များ" + +#: ../libempathy-gtk/empathy-contact-widget.ui.h:10 +msgid "OS:" +msgstr "OS - " + +#: ../libempathy-gtk/empathy-contact-widget.ui.h:11 +msgid "Version:" +msgstr "မူ - " + +#: ../libempathy-gtk/empathy-groups-widget.c:332 +msgid "Groups" +msgstr "အဖွဲ့" + +#: ../libempathy-gtk/empathy-groups-widget.c:344 +msgid "" +"Select the groups you want this contact to appear in. Note that you can " +"select more than one group or no groups." +msgstr "အဖွဲ့ တစ်ခုတက်ပိုရွေး၊ သို့မဟုတ် မည်သည့်အဖွဲ့မှ မရွေးဘဲ ထားနိုင်သည်။" + +#: ../libempathy-gtk/empathy-groups-widget.c:363 +msgid "_Add Group" +msgstr "_A အဖွဲ့အမည် ထပ်ထည့်" + +#: ../libempathy-gtk/empathy-groups-widget.c:397 +#: ../libempathy-gtk/empathy-irc-network-chooser-dialog.c:554 +msgid "Select" +msgstr "ရွေး" + +#: ../libempathy-gtk/empathy-groups-widget.c:407 +#: ../src/empathy-main-window.c:1250 +msgid "Group" +msgstr "အဖွဲ့" + +#. Translators: the heading at the top of the Information dialogue +#: ../libempathy-gtk/empathy-individual-information-dialog.c:281 +msgid "Linked Contacts" +msgstr "ချိတ်ထားသော အဆက်အသွယ်များ" + +#: ../libempathy-gtk/empathy-individual-linker.c:354 +msgid "Select contacts to link" +msgstr "ချိတ်ဖို့ အဆက်အသွယ်များ ရွေးပါ" + +#: ../libempathy-gtk/empathy-individual-linker.c:428 +msgid "New contact preview" +msgstr "အဆက်အသွယ် လူသစ် ပရီဗျူး" + +#: ../libempathy-gtk/empathy-individual-linker.c:472 +msgid "Contacts selected in the list on the left will be linked together." +msgstr "လက်ဝဲဘက် စာရင်းမှ ရွေးထားသော အဆက်အသွယ်များကို အချင်းချင်း ချိတ်ဆက်မည်။" + +#. Translators: this is used in the context menu for a contact. The first +#. * parameter is a contact ID (e.g. foo@jabber.org) and the second is one +#. * of the user's account IDs (e.g. me@hotmail.com). +#: ../libempathy-gtk/empathy-individual-menu.c:132 +#, c-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#: ../libempathy-gtk/empathy-individual-menu.c:839 +msgctxt "Edit individual (contextual menu)" +msgid "_Edit" +msgstr "_E တည်းဖြတ်" + +#. Translators: this is a verb meaning "to connect two contacts together +#. * to form a meta-contact". +#: ../libempathy-gtk/empathy-individual-menu.c:865 +msgctxt "Link individual (contextual menu)" +msgid "_Link Contacts…" +msgstr "_L အဆက်အသွယ်များကို ချိတ်" + +#: ../libempathy-gtk/empathy-individual-widget.c:1569 +#, c-format +msgid "Meta-contact containing %u contact" +msgid_plural "Meta-contact containing %u contacts" +msgstr[0] "Meta-contact တွင် ဆက်သွယ်သူ %Iu ပါဝင်သည်။" + +#: ../libempathy-gtk/empathy-individual-widget.ui.h:1 +msgid "Location at (date)" +msgstr "တည်နေရာ at (နေ့စွဲ)" + +#: ../libempathy-gtk/empathy-irc-network-chooser-dialog.c:328 +msgid "New Network" +msgstr "ကွန်ယက် အသစ်" + +#: ../libempathy-gtk/empathy-irc-network-chooser-dialog.c:495 +msgid "Choose an IRC network" +msgstr "IRC ကွန်ယက်တစ်ခု ရွေးပါ" + +#: ../libempathy-gtk/empathy-irc-network-dialog.c:280 +msgid "new server" +msgstr "ဆာဗာ အသစ်" + +#: ../libempathy-gtk/empathy-irc-network-dialog.c:535 +msgid "SSL" +msgstr "SSL" + +#. Translators: this is the title of the linking dialogue (reached by +#. * right-clicking on a contact and selecting "Link…"). "Link" in this title +#. * is a verb. +#: ../libempathy-gtk/empathy-linking-dialog.c:115 +msgid "Link Contacts" +msgstr "ဆက်သွယ်သူများ လင့်ချိတ်ပါ" + +#: ../libempathy-gtk/empathy-linking-dialog.c:120 +msgctxt "Unlink individual (button)" +msgid "_Unlink…" +msgstr "_U လင့်ဖြုတ်" + +#: ../libempathy-gtk/empathy-linking-dialog.c:121 +msgid "" +"Completely split the displayed meta-contact into the contacts it contains." +msgstr "ပြထားသော လုံးဝခွဲထုတ်ပါ။ " + +#. Add button +#. Translators: this is an action button in the linking dialogue. "Link" is +#. * used here as a verb meaning "to connect two contacts to form a +#. * meta-contact". +#: ../libempathy-gtk/empathy-linking-dialog.c:136 +msgid "_Link" +msgstr "_L လင့်ချိတ်" + +#: ../libempathy-gtk/empathy-linking-dialog.c:182 +#, c-format +msgid "Unlink meta-contact '%s'?" +msgstr "မီတာ-အဆက်အသွယ် '%s'ကို လင့်ဖြုတ်ပါ " + +#: ../libempathy-gtk/empathy-linking-dialog.c:185 +msgid "" +"Are you sure you want to unlink this meta-contact? This will completely " +"split the meta-contact into the contacts it contains." +msgstr "မီတာ-အဆက်အသွယ်ကို လင့်ဖြုတ်ဖို့ သေချာပါသလား? မီတာ-အဆက်အသွယ်ကို " + +#: ../libempathy-gtk/empathy-linking-dialog.c:190 +msgctxt "Unlink individual (button)" +msgid "_Unlink" +msgstr "_U လင့်ဖြုတ်" + +#: ../libempathy-gtk/empathy-log-window.c:663 +msgid "Date" +msgstr "နေ့စွဲ" + +#. Tab Label +#: ../libempathy-gtk/empathy-log-window.ui.h:2 +msgid "Conversations" +msgstr "စကားပြောများ" + +#: ../libempathy-gtk/empathy-log-window.ui.h:3 +#: ../libempathy-gtk/empathy-search-bar.ui.h:1 +msgid "Find Next" +msgstr "ရှေ့ဆက် ရှာ" + +#: ../libempathy-gtk/empathy-log-window.ui.h:4 +#: ../libempathy-gtk/empathy-search-bar.ui.h:2 +msgid "Find Previous" +msgstr "နောက်ပြန် ရှာ" + +#: ../libempathy-gtk/empathy-log-window.ui.h:5 +msgid "Previous Conversations" +msgstr "ယခင်ပြောစကားများ" + +#. Tab Label +#: ../libempathy-gtk/empathy-log-window.ui.h:7 +msgid "Search" +msgstr "ရှာဖွေ" + +#. Searching *for* something +#: ../libempathy-gtk/empathy-log-window.ui.h:9 +msgid "_For:" +msgstr "_F အတွက် -" + +#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2 +msgid "Contact ID:" +msgstr "ဆက်သွယ်ရန် အမည် -" + +#. add chat button +#: ../libempathy-gtk/empathy-new-message-dialog.c:145 +msgid "C_hat" +msgstr "_H စကားဆို" + +#. Tweak the dialog +#: ../libempathy-gtk/empathy-new-message-dialog.c:155 +msgid "New Conversation" +msgstr "စကားပြောဆိုမှု အသစ်" + +#. add video toggle +#: ../libempathy-gtk/empathy-new-call-dialog.c:205 +msgid "Send _Video" +msgstr "_V ရုပ်သံ ပေးပို့" + +#. add chat button +#: ../libempathy-gtk/empathy-new-call-dialog.c:213 +msgid "C_all" +msgstr "_A ခေါ်ဆို" + +#. Tweak the dialog +#: ../libempathy-gtk/empathy-new-call-dialog.c:223 +msgid "New Call" +msgstr "ခေါ်ဆိုမှု အသစ်" + +#. COL_STATUS_TEXT +#. COL_STATE_ICON_NAME +#. COL_STATE +#. COL_DISPLAY_MARKUP +#. COL_STATUS_CUSTOMISABLE +#. COL_TYPE +#: ../libempathy-gtk/empathy-presence-chooser.c:168 +#: ../libempathy-gtk/empathy-presence-chooser.c:204 +msgid "Custom Message…" +msgstr "ကိုယ်ပိုင်စကား..." + +#: ../libempathy-gtk/empathy-presence-chooser.c:221 +#: ../libempathy-gtk/empathy-presence-chooser.c:223 +msgid "Edit Custom Messages…" +msgstr "ကိုယ်ပိုင်စကား တည်းဖြတ်..." + +#: ../libempathy-gtk/empathy-presence-chooser.c:346 +msgid "Click to remove this status as a favorite" +msgstr "ဤ ကြော်ငြာချက်ကို နှစ်သက်ရာအဖြစ်မှ ဖယ်ထုတ်ရန် ကလစ်ပါ" + +#: ../libempathy-gtk/empathy-presence-chooser.c:355 +msgid "Click to make this status a favorite" +msgstr "ဤ ကြော်ငြာချက်ကို နှစ်သက်ရာ ဖြစ်စေရန် ကလစ်ပါ" + +#: ../libempathy-gtk/empathy-presence-chooser.c:389 +msgid "Set status" +msgstr "အခြေအနေ သတ်မှတ်ပြပါ" + +#: ../libempathy-gtk/empathy-presence-chooser.c:939 +msgid "Set your presence and current status" +msgstr "သင် ရောက်နေရာ နှင့် လက်ရှိအခြေအနေကို သတ်မှတ်ပြပါ" + +#. Custom messages +#: ../libempathy-gtk/empathy-presence-chooser.c:1124 +msgid "Custom messages…" +msgstr "ကိုယ်ပိုင်စကားများ..." + +#: ../libempathy-gtk/empathy-search-bar.ui.h:3 +msgid "Find:" +msgstr "ရှာဖွေ -" + +#: ../libempathy-gtk/empathy-search-bar.ui.h:4 +msgid "Match case" +msgstr "တူညီသော ကိစ္စ" + +#: ../libempathy-gtk/empathy-search-bar.ui.h:5 +msgid "Phrase not found" +msgstr "စာဖြတ်စ ရှာမတွေ့ပါ" + +#: ../libempathy-gtk/empathy-sound.c:50 +msgid "Received an instant message" +msgstr "ချက်ချင်းတုံ့ပြန်စကား လက်ခံပြီး" + +#: ../libempathy-gtk/empathy-sound.c:52 +msgid "Sent an instant message" +msgstr "ချက်ချင်းတုံ့ပြန်စကား ပို့ပြီး" + +#: ../libempathy-gtk/empathy-sound.c:54 +msgid "Incoming chat request" +msgstr "စကားပြောရန် ခွင့်တောင်းချက် ဝင်လာသည်" + +#: ../libempathy-gtk/empathy-sound.c:56 +msgid "Contact connected" +msgstr "အဆက်အသွယ် ချိတ်မိပြီ" + +#: ../libempathy-gtk/empathy-sound.c:58 +msgid "Contact disconnected" +msgstr "အဆက်အသွယ် ပြတ်သွားပြီ" + +#: ../libempathy-gtk/empathy-sound.c:60 +msgid "Connected to server" +msgstr "ဆာဗာကို ချိတ်မိပြီ" + +#: ../libempathy-gtk/empathy-sound.c:62 +msgid "Disconnected from server" +msgstr "ဆာဗာမှ ဖြတ်လိုက်သည်" + +#: ../libempathy-gtk/empathy-sound.c:64 +msgid "Incoming voice call" +msgstr "အသံ ခေါ်ဆိုမှု အဝင်" + +#: ../libempathy-gtk/empathy-sound.c:66 +msgid "Outgoing voice call" +msgstr "အသံ ခေါ်ဆိုမှု အထွက်" + +#: ../libempathy-gtk/empathy-sound.c:68 +msgid "Voice call ended" +msgstr "ရုပ်သံ ခေါ်ဆိုမှု အဝင်" + +#: ../libempathy-gtk/empathy-status-preset-dialog.c:364 +msgid "Enter Custom Message" +msgstr "ရုပ်သံ ခေါ်ဆိုမှု အထွက်" + +#: ../libempathy-gtk/empathy-status-preset-dialog.c:523 +msgid "Edit Custom Messages" +msgstr "ကိုယ်ပိုင်စကားများ တည်းဖြတ်" + +#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1 +msgid "Add _New Preset" +msgstr "_N ကြိုတင်သတ်မှတ်ချက် အသစ် ထည့်ပါ" + +#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:2 +msgid "Saved Presets" +msgstr "ကြိုတင်သတ်မှတ်ချက်များ သိမ်းပါ" + +#: ../libempathy-gtk/empathy-theme-manager.c:67 +msgid "Classic" +msgstr "ဂန္ထဝင်" + +#: ../libempathy-gtk/empathy-theme-manager.c:68 +msgid "Simple" +msgstr "ရိုးရိုး" + +#: ../libempathy-gtk/empathy-theme-manager.c:69 +msgid "Clean" +msgstr "ရှင်းသန့်" + +#: ../libempathy-gtk/empathy-theme-manager.c:70 +msgid "Blue" +msgstr "ကြည်ပြာ" + +#: ../libempathy-gtk/empathy-tls-dialog.c:150 +msgid "The identity provided by the chat server cannot be verified.\n" +msgstr "စကားပြောဆာဗာမှ မှတ်ပုံတင်ကို စိစစ်အတည်ပြုလို့ မရပါ။ \n" + +#: ../libempathy-gtk/empathy-tls-dialog.c:156 +msgid "The certificate is not signed by a Certification Authority" +msgstr "အသိအမှတ်ပြုလွှာကို အသိအမှတ်ပြုပိုင်ခွင့်ရှိသူ လက်မှတ်မနှိပ်ထားပါ။" + +#: ../libempathy-gtk/empathy-tls-dialog.c:160 +msgid "The certificate has expired" +msgstr "အသိအမှတ်ပြုလွှာ သက်တမ်းကုန်ပြီ။" + +#: ../libempathy-gtk/empathy-tls-dialog.c:163 +msgid "The certificate hasn't yet been activated" +msgstr "အသိအမှတ်ပြုလွှာကို သုံးခွင့်မပြုရသေးပါ။" + +#: ../libempathy-gtk/empathy-tls-dialog.c:166 +msgid "The certificate does not have the expected fingerprint" +msgstr "အသိအမှတ်ပြုလွှာတွင် ရှိသင့်သည့် လက်ဗွေပုံစံ မပါရှိပါ။" + +#: ../libempathy-gtk/empathy-tls-dialog.c:169 +msgid "The hostname verified by the certificate doesn't match the server name" +msgstr "အသိအမှတ်ပြုလွှာမှ အတည်ပြုထားသော အိမ်ရှင်အမည်နှင့် ဆာဗာအမည် မတူညီပါ။" + +#: ../libempathy-gtk/empathy-tls-dialog.c:173 +msgid "The certificate is self-signed" +msgstr "အသိအမှတ်ပြုလွှာက သူ့ကိုယ်သူသာ အတည်ပြုသည်။" + +#: ../libempathy-gtk/empathy-tls-dialog.c:176 +msgid "The certificate has been revoked by the issuing Certification Authority" +msgstr "အသိအမှတ်ပြုလွှာကို အသိအမှတ်ပြုပိုင်ခွင့်ရှိသူမှ ပြန်ရုတ်သိမ်းထားသည်။" + +#: ../libempathy-gtk/empathy-tls-dialog.c:180 +msgid "The certificate is cryptographically weak" +msgstr "အသိအမှတ်ပြုလွှာ တည်ဆောက်ပုံ အားနည်းသည်။" + +#: ../libempathy-gtk/empathy-tls-dialog.c:183 +msgid "The certificate length exceeds verifiable limits" +msgstr "အသိအမှတ်ပြုလွှာ ရှည်လားလွန်း၍ စိစစ်နိုင်သော ကန့်သန်ချက် ကျော်လွန်နေသည်" + +#: ../libempathy-gtk/empathy-tls-dialog.c:187 +msgid "The certificate is malformed" +msgstr "အသိအမှတ်ပြုလွှာ" + +#: ../libempathy-gtk/empathy-tls-dialog.c:205 +#, c-format +msgid "Expected hostname: %s" +msgstr "ရှိသင့်သည့် အိမ်ရှင်အမည် - %s" + +#: ../libempathy-gtk/empathy-tls-dialog.c:208 +#, c-format +msgid "Certificate hostname: %s" +msgstr "အသိအမှတ်ပြုလွှာ ပေးသူအမည် - %s" + +#: ../libempathy-gtk/empathy-tls-dialog.c:263 +msgid "Continue" +msgstr "ဆက်လုပ်" + +#: ../libempathy-gtk/empathy-tls-dialog.c:269 +msgid "This connection is untrusted. Would you like to continue anyway?" +msgstr "ဆက်သွယ်မှုသည် မခိုင်မာပါ။ ဘယ်လိုဖြစ်ဖြစ် ရှေ့ဆက်လိုပါသလား?" + +#: ../libempathy-gtk/empathy-tls-dialog.c:286 +msgid "Remember this choice for future connections" +msgstr "နောက်ထပ် ဆက်သွယ်မှုများတွင် ဤရွေးချယ်မှုကို ဆက်သုံးပါ" + +#: ../libempathy-gtk/empathy-tls-dialog.c:294 +msgid "Certificate Details" +msgstr "အသိအမှတ်ပြုလွှာ အသေးစိတ်များ" + +#: ../libempathy-gtk/empathy-ui-utils.c:1705 +msgid "Unable to open URI" +msgstr "URI ကို ဖွင့်လို့မရပါ" + +#: ../libempathy-gtk/empathy-ui-utils.c:1800 +msgid "Select a file" +msgstr "ဖိုင်တစ်ခု ရွေးပါ" + +#: ../libempathy-gtk/empathy-ui-utils.c:1869 +#, c-format +msgid "Incoming file from %s" +msgstr "%s ထံမှ ဝင်လာသောဖိုင်" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:158 +msgid "Current Locale" +msgstr "လက်ရှိ လိုကေး" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:161 +#: ../libempathy-gtk/totem-subtitle-encoding.c:163 +#: ../libempathy-gtk/totem-subtitle-encoding.c:165 +#: ../libempathy-gtk/totem-subtitle-encoding.c:167 +msgid "Arabic" +msgstr "အာရေဗစ်" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:170 +msgid "Armenian" +msgstr "အာမေနီယံ" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:173 +#: ../libempathy-gtk/totem-subtitle-encoding.c:175 +#: ../libempathy-gtk/totem-subtitle-encoding.c:177 +msgid "Baltic" +msgstr "ဘယ်လ်တစ်" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:180 +msgid "Celtic" +msgstr "ဆယ်လ်တစ်" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:183 +#: ../libempathy-gtk/totem-subtitle-encoding.c:185 +#: ../libempathy-gtk/totem-subtitle-encoding.c:187 +#: ../libempathy-gtk/totem-subtitle-encoding.c:189 +msgid "Central European" +msgstr "ဥရောပ အလယ်ပိုင်း" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:192 +#: ../libempathy-gtk/totem-subtitle-encoding.c:194 +#: ../libempathy-gtk/totem-subtitle-encoding.c:196 +#: ../libempathy-gtk/totem-subtitle-encoding.c:198 +msgid "Chinese Simplified" +msgstr "ရိုးရှင်း တရုတ်စာ" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:201 +#: ../libempathy-gtk/totem-subtitle-encoding.c:203 +#: ../libempathy-gtk/totem-subtitle-encoding.c:205 +msgid "Chinese Traditional" +msgstr "ရိုးရာ တရုတ်စာ" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:208 +msgid "Croatian" +msgstr "ခရိုအေးရှန်း" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:211 +#: ../libempathy-gtk/totem-subtitle-encoding.c:213 +#: ../libempathy-gtk/totem-subtitle-encoding.c:215 +#: ../libempathy-gtk/totem-subtitle-encoding.c:217 +#: ../libempathy-gtk/totem-subtitle-encoding.c:219 +#: ../libempathy-gtk/totem-subtitle-encoding.c:221 +msgid "Cyrillic" +msgstr "ခရစ်လစ်" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:224 +msgid "Cyrillic/Russian" +msgstr "ခရစ်လစ်/ ရုရှား" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:227 +#: ../libempathy-gtk/totem-subtitle-encoding.c:229 +msgid "Cyrillic/Ukrainian" +msgstr "ခရစ်လစ်/ ယူကရေးနီးယန်း" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:232 +msgid "Georgian" +msgstr "ဂျော်ဂျီယံ" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:235 +#: ../libempathy-gtk/totem-subtitle-encoding.c:237 +#: ../libempathy-gtk/totem-subtitle-encoding.c:239 +msgid "Greek" +msgstr "ဂရိ" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:242 +msgid "Gujarati" +msgstr "ဂူဂျာရတီ" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:245 +msgid "Gurmukhi" +msgstr "ဂူရ်မူခီ" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:248 +#: ../libempathy-gtk/totem-subtitle-encoding.c:250 +#: ../libempathy-gtk/totem-subtitle-encoding.c:252 +#: ../libempathy-gtk/totem-subtitle-encoding.c:254 +msgid "Hebrew" +msgstr "ဟီဗရူး" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:257 +msgid "Hebrew Visual" +msgstr "ဟီဗရူး Visual" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:260 +msgid "Hindi" +msgstr "ဟိန္ဒီ" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:263 +msgid "Icelandic" +msgstr "အိုင်လန်းဒစ်" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:266 +#: ../libempathy-gtk/totem-subtitle-encoding.c:268 +#: ../libempathy-gtk/totem-subtitle-encoding.c:270 +msgid "Japanese" +msgstr "ဂျပန်" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:273 +#: ../libempathy-gtk/totem-subtitle-encoding.c:275 +#: ../libempathy-gtk/totem-subtitle-encoding.c:277 +#: ../libempathy-gtk/totem-subtitle-encoding.c:279 +msgid "Korean" +msgstr "ကိုရီးယား" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:282 +msgid "Nordic" +msgstr "နော်ဒစ်" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:285 +msgid "Persian" +msgstr "ပါရှန်း" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:288 +#: ../libempathy-gtk/totem-subtitle-encoding.c:290 +msgid "Romanian" +msgstr "ရိုမေနီယံ" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:293 +msgid "South European" +msgstr "ဥရောပတောင်ပိုင်း" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:296 +msgid "Thai" +msgstr "ထိုင်း" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:299 +#: ../libempathy-gtk/totem-subtitle-encoding.c:301 +#: ../libempathy-gtk/totem-subtitle-encoding.c:303 +#: ../libempathy-gtk/totem-subtitle-encoding.c:305 +msgid "Turkish" +msgstr "တူရကီ" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:308 +#: ../libempathy-gtk/totem-subtitle-encoding.c:310 +#: ../libempathy-gtk/totem-subtitle-encoding.c:312 +#: ../libempathy-gtk/totem-subtitle-encoding.c:314 +#: ../libempathy-gtk/totem-subtitle-encoding.c:316 +msgid "Unicode" +msgstr "ယူနီကုဒ်" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:319 +#: ../libempathy-gtk/totem-subtitle-encoding.c:321 +#: ../libempathy-gtk/totem-subtitle-encoding.c:323 +#: ../libempathy-gtk/totem-subtitle-encoding.c:325 +#: ../libempathy-gtk/totem-subtitle-encoding.c:327 +msgid "Western" +msgstr "အနောက်တိုင်း" + +#: ../libempathy-gtk/totem-subtitle-encoding.c:330 +#: ../libempathy-gtk/totem-subtitle-encoding.c:332 +#: ../libempathy-gtk/totem-subtitle-encoding.c:334 +msgid "Vietnamese" +msgstr "ဗီယက်နမ်" + +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108 +msgid "The selected contact cannot receive files." +msgstr "ရွေးထားသော အဆက်အသွယ်မှာ ဖိုင်များကို လက်မခံနိုင်ပါ။" + +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114 +msgid "The selected contact is offline." +msgstr "ရွေးထားသော အဆက်အသွယ်မှာ လိုင်းပြင်ပရောက်နေသည်။" + +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169 +msgid "No error message" +msgstr "ချို့ယွင်းမှု အကြောင်းကြားစာ မရှိပါ" + +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242 +msgid "Instant Message (Empathy)" +msgstr "ချက်ချင်းတုံ့ပြန်စကား (အမ်ပသီ)" + +#: ../src/empathy.c:414 +msgid "Don't connect on startup" +msgstr "စက်စစချင်း ဆက်သွယ်မှု မပြုနဲ့" + +#: ../src/empathy.c:418 +msgid "Don't display the contact list or any other dialogs on startup" +msgstr "စက်စစချင်းမှာ အဆက်အသွယ်စာရင်း သို့မဟုတ် စကားပြောတွေကို မဖော်ပြပါနှင့်" + +#: ../src/empathy.c:435 +msgid "- Empathy IM Client" +msgstr "- အမ်ပသီ ဆက်သွယ်မှု ကလိုင်းယင့်" + +#: ../src/empathy-about-dialog.c:85 +msgid "" +"Empathy 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." +msgstr "" +"အမ်ပသီ မှာ အခမဲ့ဆော့ဝဲ ဖြစ်ပါသည်။ ပြုပြင်၍ ပြန်လည်ဖြန့်ဝေခြင်းကို " +"အခမဲ့ဆော့ဝဲဖောင်ဒေးရှင်းမှ ပြဌာန်းထားသော အများဆိုင်လိုင်စင် (GNU General Public " +"License) မူအရ၊ သို့မဟုတ် မူကွဲ-၂၊ သို့မဟုတ် နောက်ဆုံးပေါ်မူအရ ပြုလုပ်နိုင်ပါသည်။" + +#: ../src/empathy-about-dialog.c:89 +msgid "" +"Empathy 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." +msgstr "" +"အမ်ပသီကို အသုံးဝင်ဖို့ ရည်ရွယ်၍ ဖြန့်ဝေပါသည်။ သို့သော် မည်သည့်အာမခံချက်မှ ပေးမထားပါ။ " +"ရောင်းဝယ်ရန် သို့မဟုတ် အကြောင်းကိစ္စတစ်ခုအတွက် သင့်လျော်ကြောင်းကိုပင် ဝန်ခံကတိထားခြင်း " +"မရှိပါ။ အသေးစိတ်အချက်များ သိလိုလျှင် အများဆိုင်လိုင်စင် (GNU General Public License) " +"တွင် ကြည့်ပါ။" + +#: ../src/empathy-about-dialog.c:93 +msgid "" +"You should have received a copy of the GNU General Public License along with " +"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin " +"Street, Fifth Floor, Boston, MA 02110-130159 USA" +msgstr "" +"အမ်ပသီ ဆော့ဝဲနှင့်အတူ အများဆိုင်လိုင်စင် (GNU General Public License) ကို တစ်ပါတည်း " +"ပေးထားပါသည်။မရရှိပါက Free Software Foundation, Inc., 51 Franklin Street, " +"Fifth Floor, Boston, MA 02110-130159 USA သို့ စာရေးပါ။" + +#: ../src/empathy-about-dialog.c:121 +msgid "An Instant Messaging client for GNOME" +msgstr "ဂနုမ်းအတွက် စကားပြောဆိုမှု ကလိုင်းယင့်" + +#: ../src/empathy-about-dialog.c:127 +msgid "translator-credits" +msgstr "ဘာသာပြန်သူ - မှတ်တမ်းများ" + +#: ../src/empathy-account-assistant.c:167 +msgid "There was an error while importing the accounts." +msgstr "အကောင့်များကို တင်သွင်းစဉ်တွင် ချို့ယွင်းမှု ဖြစ်ခဲ့သည်။" + +#: ../src/empathy-account-assistant.c:170 +msgid "There was an error while parsing the account details." +msgstr "အကောင့်အသေးစိတ်များကို စိစစ်ရာတွင် ချို့ယွင်းမှု ဖြစ်ခဲ့သည်။" + +#: ../src/empathy-account-assistant.c:173 +msgid "There was an error while creating the account." +msgstr "အကောင့်ကို ဖန်တီးရာတွင် ချို့ယွင်းမှု ဖြစ်ခဲ့သည်။" + +#: ../src/empathy-account-assistant.c:175 +msgid "There was an error." +msgstr "ချို့ယွင်းမှု ဖြစ်ခဲ့သည်။" + +#: ../src/empathy-account-assistant.c:179 +#, c-format +msgid "The error message was: %s" +msgstr "ချို့ယွင်းမှု အကြောင်းကြားစာမှာ - %s" + +#: ../src/empathy-account-assistant.c:183 +msgid "" +"You can either go back and try to enter your accounts' details again or quit " +"this assistant and add accounts later from the Edit menu." +msgstr "အကောင့် အသေးစိတ်များကို ပြန်ကြိုးစား ထည့်သွင်း / သို့ ထွက်သွား နိုင်သည်" + +#: ../src/empathy-account-assistant.c:220 +#: ../src/empathy-account-assistant.c:1315 +msgid "An error occurred" +msgstr "ချို့ယွင်းချက်တစ်ခု ဖြစ်သွားသည်" + +#. To translator: %s is the protocol name +#. Create account +#. To translator: %s is the name of the protocol, such as "Google Talk" or +#. * "Yahoo!" +#. +#: ../src/empathy-account-assistant.c:412 ../src/empathy-accounts-dialog.c:614 +#, c-format +msgid "New %s account" +msgstr "%s အကောင့်အသစ်" + +#: ../src/empathy-account-assistant.c:514 +msgid "What kind of chat account do you have?" +msgstr "ဘယ်လို စကားပြောအကောင့် အမျိုးအစားများ ရှိပါသလဲ?" + +#: ../src/empathy-account-assistant.c:520 +msgid "Do you have any other chat accounts you want to set up?" +msgstr "နောက်ထပ် ပြင်ဆင်လိုသော အခြား စကားပြောအကောင့် ရှိပါသလား" + +#: ../src/empathy-account-assistant.c:526 +msgid "Enter your account details" +msgstr "အကောင့် အသေးစိတ်အချက်များ ထည့်သွင်းပါ" + +#: ../src/empathy-account-assistant.c:531 +msgid "What kind of chat account do you want to create?" +msgstr "ဘယ်လို စကားပြောအကောင့် အမျိုးအစားများ ဖန်တီးချင်ပါသလဲ?" + +#: ../src/empathy-account-assistant.c:537 +msgid "Do you want to create other chat accounts?" +msgstr "အခြား စကားပြောအကောင့် ထပ်ဖန်တီးချင်ပါသလား?" + +#: ../src/empathy-account-assistant.c:544 +msgid "Enter the details for the new account" +msgstr "အကောင့် အသစ်အတွက် အသေးစိတ်အချက်များ ထည့်သွင်းပါ" + +#: ../src/empathy-account-assistant.c:659 +msgid "" +"With Empathy you can chat with people online nearby and with friends and " +"colleagues who use Google Talk, AIM, Windows Live and many other chat " +"programs. With a microphone or a webcam you can also have audio or video " +"calls." +msgstr "" +"အမ်ပသီဖြင့် Google Talk, AIM, Windows Live နှင့် အခြားစကားပြော ဆော့ဝဲများကို " +"အသုံးပြုသော အသိမိတ်ဆွေများနှင့် စာရိုက်စကားဆိုနိုင်သည်။ မိုက်၊ ကင်မရာများ အသုံးပြုပြီး " +"အသံခေါ်ဆိုမှု၊ ရုပ်သံခေါ်ဆိုမှုများကိုလည်း ပြုလုပ်နိုင်သည်။" + +#: ../src/empathy-account-assistant.c:676 +msgid "Do you have an account you've been using with another chat program?" +msgstr "အခြား စကားပြောပရိုဂရမ်နှင့် အသုံးပြုနေသော အခြားအကောင့် ရှိပါသလား?" + +#: ../src/empathy-account-assistant.c:699 +msgid "Yes, import my account details from " +msgstr "ဟုတ်၊ အကောင့် အသေးစိတ်အချက်အလက်များကို ယူသွင်းပါ" + +#: ../src/empathy-account-assistant.c:720 +msgid "Yes, I'll enter my account details now" +msgstr "ဟုတ်၊ အကောင့် အသေးစိတ်အချက်အလက်များကို အခုရိုက်သွင်းပါမယ်။=" + +#: ../src/empathy-account-assistant.c:742 +msgid "No, I want a new account" +msgstr "ဟင့်အင်း၊ အကောင့်အသစ် လိုချင်ပါတယ်" + +#: ../src/empathy-account-assistant.c:752 +msgid "No, I just want to see people online nearby for now" +msgstr "ဟင့်အင်း၊ အနီးအနားရှိ အခု လိုင်းပေါ်ရောက်နေသူများကိုသာ မြင်ချင်တယ်။" + +#: ../src/empathy-account-assistant.c:773 +msgid "Select the accounts you want to import:" +msgstr "ယူသွင်းစေလိုသည့် အကောင့်များကို ရွေးချယ်ပါ" + +#: ../src/empathy-account-assistant.c:857 +#: ../src/empathy-new-chatroom-dialog.c:609 +#: ../src/empathy-new-chatroom-dialog.c:610 +msgid "Yes" +msgstr "ဟုတ်ကဲ့" + +#: ../src/empathy-account-assistant.c:864 +msgid "No, that's all for now" +msgstr "ဟင့်အင်း" + +#: ../src/empathy-account-assistant.c:1129 +msgid "" +"Empathy can automatically discover and chat with the people connected on the " +"same network as you. If you want to use this feature, please check that the " +"details below are correct. You can easily change these details later or " +"disable this feature by using the 'Accounts' dialog" +msgstr "" +"တူညီကွန်ယက်တွင်းမှ ချိတ်ထားသူများနှင့် စကားပြောဆိုနိုင်ရန် အမ်ပသီက အလိုအလျောက် " +"ဖော်ထုတ်နိုင်သည်။ဤအပိုင်းကို ခွင့်ပြုစေလိုလျှင် အောက်ပါအချက်များ မှန်မမှန် စစ်ဆေးပါ။ " +"သို့မဟုတ် ပိတ်စေလိုလျှင် အကောင့်ဒိုင်ယာလော့မှ သွားပိတ်ပါ။ " + +#: ../src/empathy-account-assistant.c:1135 +#: ../src/empathy-account-assistant.c:1191 +msgid "Edit->Accounts" +msgstr "တည်းဖြတ် -> အကောင့်များ" + +#: ../src/empathy-account-assistant.c:1151 +msgid "I don't want to enable this feature for now" +msgstr "ဤအပိုင်းကို လောလောဆယ် ခွင့်မပြု" + +#: ../src/empathy-account-assistant.c:1187 +msgid "" +"You won't be able to chat with people connected to your local network, as " +"telepathy-salut is not installed. If you want to enable this feature, please " +"install the telepathy-salut package and create a People Nearby account from " +"the Accounts dialog" +msgstr "" +"telepathy-salut ကို ထည့်သွင်းမထားသည့်တွက် ဒေသတွင်းကွန်ယက်ထဲမှ ချိတ်ထားသူများနှင့် " +"စကားပြောနိုင်မည် မဟုတ်ပါ။ဤအပိုင်းကို ခွင့်ပြုစေလိုလျှင် telepathy-salut ကို ထည့်သွင်းပြီး " +"အနီးအနားရှိသူများ အကောင့်ကို အကောင့်ဒိုင်ယာလော့မှ ပြုလုပ်ဖန်တီးပါ။" + +#: ../src/empathy-account-assistant.c:1193 +msgid "telepathy-salut not installed" +msgstr "telepathy-salut ကို ထည့်သွင်းတပ်ဆင်ထားခြင်း မရှိပါ" + +#: ../src/empathy-account-assistant.c:1239 +msgid "Messaging and VoIP Accounts Assistant" +msgstr "စာပို့ခြင်းနှင့် VoIP အကောင့်များ အကူအညီ" + +#: ../src/empathy-account-assistant.c:1273 +msgid "Welcome to Empathy" +msgstr "အမ်ပသီမှ ကြိုဆိုပါ၏" + +#: ../src/empathy-account-assistant.c:1282 +msgid "Import your existing accounts" +msgstr "ရှိထားသော အကောင့်များကို ထည့်သွင်းပါ" + +#: ../src/empathy-account-assistant.c:1300 +msgid "Please enter personal details" +msgstr "ကိုယ်ရေးအချက်အလက်များကို သွင်းပါ" + +#. The primary text of the dialog shown to the user when he is about to lose +#. * unsaved changes +#: ../src/empathy-accounts-dialog.c:65 +#, c-format +msgid "There are unsaved modifications to your %s account." +msgstr "သင်၏ %s အကောင့်ပေါ်တွင် မသိမ်းဆည်းရသေးသော ပြုပြင်ပြောင်းလဲမှုများ ရှိသည်။" + +#. The primary text of the dialog shown to the user when he is about to lose +#. * an unsaved new account +#: ../src/empathy-accounts-dialog.c:69 +msgid "Your new account has not been saved yet." +msgstr "သင့်အကောင့်အသစ်ကို မသိမ်းဆည်းရသေးပါ။" + +#: ../src/empathy-accounts-dialog.c:281 ../src/empathy-call-window.c:818 +msgid "Connecting…" +msgstr "ဆက်သွယ်နေသည်…" + +#: ../src/empathy-accounts-dialog.c:322 +#, c-format +msgid "Offline — %s" +msgstr "လိုင်းပြင်ရောက် — %s" + +#: ../src/empathy-accounts-dialog.c:334 +#, c-format +msgid "Disconnected — %s" +msgstr "လိုင်းပြတ်သွား — %s" + +#: ../src/empathy-accounts-dialog.c:345 +msgid "Offline — No Network Connection" +msgstr "လိုင်းပြင်ရောက် — ကွန်ယက်ဆက်သွယ်မှု မရှိ" + +#: ../src/empathy-accounts-dialog.c:352 +msgid "Unknown Status" +msgstr "အခြေအနေ မသိရ" + +#: ../src/empathy-accounts-dialog.c:364 +msgid "Offline — Account Disabled" +msgstr "လိုင်းပြင်ရောက် — အကောင့် ဝင်ခွင့်မရှိ" + +#: ../src/empathy-accounts-dialog.c:810 +msgid "" +"You are about to create a new account, which will discard\n" +"your changes. Are you sure you want to proceed?" +msgstr "" +"သင်ပြောင်းလဲထားသည်များကို ဆက်မသုံးမည့် အကောင့်အသစ်ကို သင်ဖန်တီးတော့မည်။သည်တိုင်းဆက်သွားဖို့ " +"သေချာပါသလား?" + +#: ../src/empathy-accounts-dialog.c:1157 +#, c-format +msgid "Do you want to remove %s from your computer?" +msgstr "%s ကို ကွန်ပြူတာမှ ဖျက်ပစ်ချင်ပါသလား" + +#: ../src/empathy-accounts-dialog.c:1161 +msgid "This will not remove your account on the server." +msgstr "ဤတွင် သင့်အကောင့်ကို ဆာဗာမှ ပယ်ဖျက်မည်မဟုတ်ပါ။" + +#: ../src/empathy-accounts-dialog.c:1399 +msgid "" +"You are about to select another account, which will discard\n" +"your changes. Are you sure you want to proceed?" +msgstr "" +"အခြားအကောင့်ကို ရွေးခြင်းဖြင့် သင်ပြောင်းလဲထားသည်များကို အသုံးမပြုတော့ပါ။ရှေ့ဆက်သွားဖို့ " +"သေချာပါသလား?" + +#: ../src/empathy-accounts-dialog.c:2002 +msgid "" +"You are about to close the window, which will discard\n" +"your changes. Are you sure you want to proceed?" +msgstr "" +"ဝင်းဒိုးကို ပိတ်ခြင်းဖြင့် သင်ပြောင်းလဲထားသည်များကို အသုံးမပြုတော့ပါ။ရှေ့ဆက်သွားဖို့ " +"သေချာပါသလား?" + +#: ../src/empathy-accounts-dialog.ui.h:1 +msgid "Loading account information" +msgstr "အကောင့်အချက်အလက်များ " + +#: ../src/empathy-accounts-dialog.ui.h:2 +msgid "No protocol installed" +msgstr "ပရိုတိုကော ထည့်သွင်းတပ်ဆင်ခြင်း မရှိ" + +#: ../src/empathy-accounts-dialog.ui.h:3 +msgid "Protocol:" +msgstr "ပရိုတိုကော -" + +#: ../src/empathy-accounts-dialog.ui.h:4 +msgid "" +"To add a new account, you first have to install a backend for each protocol " +"you want to use." +msgstr "အကောင့်သစ် ပေါင်းထည့်ရန် ပရိုတိုကောတစ်ခုစီအတွက် backend များ ထည့်သွင်းပေးပါ" + +#: ../src/empathy-accounts-dialog.ui.h:5 +msgid "_Add…" +msgstr "_A ပေါင်းထည့်..." + +#: ../src/empathy-accounts-dialog.ui.h:6 +msgid "_Import…" +msgstr "_I သွင်းယူ..." + +#: ../src/empathy-auth-client.c:217 +msgid " - Empathy authentication client" +msgstr " - အမ်ပသီ စစ်ဆေးခြင်း ကလိုင်းယင့်" + +#: ../src/empathy-auth-client.c:233 +msgid "Empathy authentication client" +msgstr "အမ်ပသီ စစ်ဆေးခြင်း ကလိုင်းယင့်" + +#: ../src/empathy-auto-salut-account-helper.c:83 +msgid "People nearby" +msgstr "အနီးအနားရှိသူများ" + +#: ../src/empathy-av.c:133 +msgid "- Empathy Audio/Video Client" +msgstr "- အမ်ပသီ အသံ/ရုပ်သံ ကလိုင်းယင့်" + +#: ../src/empathy-av.c:149 +msgid "Empathy Audio/Video Client" +msgstr "အမ်ပသီ အသံ/ရုပ်သံ ကလိုင်းယင့်" + +#: ../src/empathy-call-window.c:479 +msgid "Contrast" +msgstr "အရောင်ပြင်းအား" + +#: ../src/empathy-call-window.c:482 +msgid "Brightness" +msgstr "အလင်းအမှောင်" + +#: ../src/empathy-call-window.c:485 +msgid "Gamma" +msgstr "အလင်းပိတ်နှုန်း" + +#: ../src/empathy-call-window.c:590 +msgid "Volume" +msgstr "အသံအတိုးအကျယ်" + +#: ../src/empathy-call-window.c:1175 +msgid "_Sidebar" +msgstr "_S ဘေးတန်း" + +#: ../src/empathy-call-window.c:1194 +msgid "Audio input" +msgstr "အသံ အဝင်" + +#: ../src/empathy-call-window.c:1198 +msgid "Video input" +msgstr "ရုပ်သံ အဝင်" + +#: ../src/empathy-call-window.c:1202 +msgid "Dialpad" +msgstr "ခလုတ်ကွက်" + +#: ../src/empathy-call-window.c:1207 +msgid "Details" +msgstr "အသေးစိတ်များ" + +#. translators: Call is a noun and %s is the contact name. This string +#. * is used in the window title +#: ../src/empathy-call-window.c:1275 +#, c-format +msgid "Call with %s" +msgstr "%s နှင့် ခေါ်ဆိုမှု" + +#. translators: Call is a noun. This string is used in the window +#. * title +#: ../src/empathy-call-window.c:1354 +msgid "Call" +msgstr "ခေါ်ဆိုမှု" + +#: ../src/empathy-call-window.c:1508 +msgid "The IP address as seen by the machine" +msgstr "စက်မှ မြင်ရသည့် အိုင်ပီလိပ်စာ" + +#: ../src/empathy-call-window.c:1510 +msgid "The IP address as seen by a server on the Internet" +msgstr "အင်တာနက်ပေါ်က ဆာဗာမှ မြင်ရသည့် အိုင်ပီလိပ်စာ" + +#: ../src/empathy-call-window.c:1512 +msgid "The IP address of the peer as seen by the other side" +msgstr "အနီးနားချင်းများဘက်မှ မြင်ရသည့် အိုင်ပီလိပ်စာ" + +#: ../src/empathy-call-window.c:1514 +msgid "The IP address of a relay server" +msgstr "ရီလေးဆာဗာ၏ အိုင်ပီလိပ်စာ" + +#: ../src/empathy-call-window.c:1516 +msgid "The IP address of the multicast group" +msgstr "အစုအဖွဲ့၏ အိုင်ပီလိပ်စာ" + +#. Translators: number of minutes:seconds the caller has been connected +#: ../src/empathy-call-window.c:2263 +#, c-format +msgid "Connected — %d:%02dm" +msgstr "ဆက်သွယ်ချိန် —%d:%02dm" + +#: ../src/empathy-call-window.c:2324 +msgid "Technical Details" +msgstr "နည်းပညာဆိုင်ရာ အသေးစိတ်များ" + +#: ../src/empathy-call-window.c:2362 +#, c-format +msgid "" +"%s's software does not understand any of the audio formats supported by your " +"computer" +msgstr "%s ၏ ဆော့ဝဲသည် သင့်ကွန်ပြူတာဘက်မှ အသံဖော်မက်များကို နားမလည်နိုင်ပါ" + +#: ../src/empathy-call-window.c:2367 +#, c-format +msgid "" +"%s's software does not understand any of the video formats supported by your " +"computer" +msgstr "%s ၏ ဆော့ဝဲသည် သင့်ကွန်ပြူတာဘက်မှ ရုပ်သံဖော်မက်များကို နားမလည်နိုင်ပါ" + +#: ../src/empathy-call-window.c:2373 +#, c-format +msgid "" +"Can't establish a connection to %s. One of you might be on a network that " +"does not allow direct connections." +msgstr "" +"%s သို့ ဆက်သွယ်မှုကို မဆောင်ရွက်နိုင်ပါ။ တစ်ယောက်ယောက်မှာ တိုက်ရိုက်ဆက်သွယ်ခွင့် မရှိသော " +"ကွန်ယက်ပေါ်ရောက်နေခြင်း ဖြစ်နိုင်သည်။" + +#: ../src/empathy-call-window.c:2379 +msgid "There was a failure on the network" +msgstr "ကွန်ယက်ချိတ်ဆက်မှု ပြတ်တောက်ခဲ့သည်" + +#: ../src/empathy-call-window.c:2383 +msgid "" +"The audio formats necessary for this call are not installed on your computer" +msgstr "ခေါ်ဆိုမှုအတွက် လိုအပ်သော အသံဖော်မက်များ ဤစက်မှာ ထည့်သွင်းမထားပါ" + +#: ../src/empathy-call-window.c:2386 +msgid "" +"The video formats necessary for this call are not installed on your computer" +msgstr "ခေါ်ဆိုမှုအတွက် လိုအပ်သော ရုပ်သံဖော်မက်များ ဤစက်မှာ ထည့်သွင်းမထားပါ" + +#: ../src/empathy-call-window.c:2396 +#, c-format +msgid "" +"Something unexpected happened in a Telepathy component. Please report this bug and attach logs gathered from the 'Debug' window in " +"the Help menu." +msgstr "" +"မမျှော်လင့်သောအရာများ တယ်လီပသီ အစိတ်အပိုင်းထဲတွင် ဖြစ်ပေါ်ခဲ့သည်။ ကျေးဇူးပြု၍ အစီရင်ခံစာပို့ ပြီးလျှင် ကူညီ မီနူး အမှားပြင် ဝင်းဒိုးမှ မှတ်တမ်းများကို " +"စုဆောင်းတွဲချိတ်ပေးပါ။" + +#: ../src/empathy-call-window.c:2404 +msgid "There was a failure in the call engine" +msgstr "ခေါ်ဆိုမှုအင်ဂျင် ချို့ယွင်းမှု ဖြစ်ခဲ့သည်" + +#: ../src/empathy-call-window.c:2407 +msgid "The end of the stream was reached" +msgstr "သွယ်ယူမှု အဆုံးထိ ရောက်ရှိပြီ" + +#: ../src/empathy-call-window.c:2447 +msgid "Can't establish audio stream" +msgstr "အသံသွယ်ယူမှု မဆောင်ရွက်နိုင်ပါ" + +#: ../src/empathy-call-window.c:2457 +msgid "Can't establish video stream" +msgstr "ရုပ်သံ(ဗီဒီယို) သွယ်ယူမှု မဆောင်ရွက်နိုင်ပါ" + +#: ../src/empathy-call-window.ui.h:1 +msgid "Audio" +msgstr "အသံပိုင်း" + +#: ../src/empathy-call-window.ui.h:2 +msgid "Call the contact again" +msgstr "ပြန်လည်ခေါ်ဆိုပါ" + +#: ../src/empathy-call-window.ui.h:3 +msgid "Camera Off" +msgstr "ကင်မရာ ပိတ်" + +#: ../src/empathy-call-window.ui.h:4 +msgid "Camera On" +msgstr "ကင်မရာ ဖွင့်" + +#: ../src/empathy-call-window.ui.h:5 +msgid "Decoding Codec:" +msgstr "ကိုဒက် ကုဒ်ဖြေ -" + +#: ../src/empathy-call-window.ui.h:6 +msgid "Disable camera and stop sending video" +msgstr "ကင်မရာကို ခွင့်ပိတ်ပြီး ရုပ်သံ ပေးပို့မှု ရပ်ဆိုင်းပါ" + +#: ../src/empathy-call-window.ui.h:7 +msgid "Enable camera and send video" +msgstr "ကင်မရာကို ခွင့်ပြုပြီး ရုပ်သံ ပေးပို့ပါ" + +#: ../src/empathy-call-window.ui.h:8 +msgid "Enable camera but don't send video" +msgstr "ကင်မရာကို ခွင့်ပြုပေမဲ့ ရုပ်သံ မပေးပို့စေနဲ့" + +#: ../src/empathy-call-window.ui.h:9 +msgid "Encoding Codec:" +msgstr "ကိုဒက် ကုဒ်ပြောင်း -" + +#: ../src/empathy-call-window.ui.h:10 +msgid "Hang up" +msgstr "ရပ်နား" + +#: ../src/empathy-call-window.ui.h:11 +msgid "Hang up current call" +msgstr "လက်ရှိ ခေါ်ဆိုမှုကို ရပ်နားပါ" + +#: ../src/empathy-call-window.ui.h:12 +msgid "Local Candidate:" +msgstr "ဒေသတွင်းရှိပါဝင်သူ -" + +#: ../src/empathy-call-window.ui.h:13 +msgid "Preview" +msgstr "နမူနာ" + +#: ../src/empathy-call-window.ui.h:14 +msgid "Redial" +msgstr "ပြန်ခေါ်ဆို" + +#: ../src/empathy-call-window.ui.h:15 +msgid "Remote Candidate:" +msgstr "အဝေးရောက် ပါဝင်သူ -" + +#: ../src/empathy-call-window.ui.h:16 +msgid "Send Audio" +msgstr "အသံ ပေးပို့" + +#: ../src/empathy-call-window.ui.h:17 +msgid "Toggle audio transmission" +msgstr "အသံပေးပို့မှု စတင်/ ရပ်နား ရန်" + +#: ../src/empathy-call-window.ui.h:19 +msgid "V_ideo" +msgstr "_I ရုပ်သံ" + +#: ../src/empathy-call-window.ui.h:20 +msgid "Video" +msgstr "ဗီဒီယို" + +#: ../src/empathy-call-window.ui.h:21 +msgid "Video Off" +msgstr "ရုပ်သံပိတ်" + +#: ../src/empathy-call-window.ui.h:22 +msgid "Video On" +msgstr "ရုပ်သံဖွင့်" + +#: ../src/empathy-call-window.ui.h:23 +msgid "Video Preview" +msgstr "ရုပ်သံ နမူနာ" + +#: ../src/empathy-call-window.ui.h:24 +msgid "_Call" +msgstr "_C ခေါ်ဆို" + +#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:27 +msgid "_View" +msgstr "_V မြင်ကွင်း" + +#: ../src/empathy-chat-window.c:452 ../src/empathy-chat-window.c:472 +#, c-format +msgid "%s (%d unread)" +msgid_plural "%s (%d unread)" +msgstr[0] "%s (မဖတ်ရသေးသော %Id ခု)" + +#: ../src/empathy-chat-window.c:464 +#, c-format +msgid "%s (and %u other)" +msgid_plural "%s (and %u others)" +msgstr[0] "%s (နှင့် %u အခြား)" + +#: ../src/empathy-chat-window.c:480 +#, c-format +msgid "%s (%d unread from others)" +msgid_plural "%s (%d unread from others)" +msgstr[0] "%s (အခြားမှ %Id မဖွင့်ရသေး)" + +#: ../src/empathy-chat-window.c:489 +#, c-format +msgid "%s (%d unread from all)" +msgid_plural "%s (%d unread from all)" +msgstr[0] "%s (အားလုံးမှ %Id မဖွင့်ရသေး)" + +#: ../src/empathy-chat-window.c:695 +msgid "Typing a message." +msgstr "စကား ရေးနေသည်" + +#: ../src/empathy-chat-window.ui.h:1 +msgid "C_lear" +msgstr "_L ရှင်းလင်း" + +#: ../src/empathy-chat-window.ui.h:2 +msgid "C_ontact" +msgstr "_O အဆက်အသွယ်" + +#: ../src/empathy-chat-window.ui.h:3 +msgid "Chat" +msgstr "စကားဆို" + +#: ../src/empathy-chat-window.ui.h:4 +msgid "Insert _Smiley" +msgstr "_S ရုပ်ပြောင်လေး ထည့်" + +#: ../src/empathy-chat-window.ui.h:5 +msgid "Invite _Participant…" +msgstr "_P ပါဝင်မည့်သူ ဖိတ်ခေါ်" + +#: ../src/empathy-chat-window.ui.h:6 +msgid "Move Tab _Left" +msgstr "_L စာမျက်နှာခွဲ ဘယ်ရွှေ့" + +#: ../src/empathy-chat-window.ui.h:7 +msgid "Move Tab _Right" +msgstr "_R စာမျက်နှာခွဲ ညာရွှေ့" + +#: ../src/empathy-chat-window.ui.h:8 +msgid "Notify for All Messages" +msgstr "အကြောင်းကြားစာ အားလုံးအတွက် အသိပေးပါ" + +#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:16 +msgid "_Contents" +msgstr "_C မာတိကာ" + +#: ../src/empathy-chat-window.ui.h:10 +msgid "_Conversation" +msgstr "_C စကားပြောဆိုမှု" + +#: ../src/empathy-chat-window.ui.h:11 +msgid "_Detach Tab" +msgstr "_D စာမျက်နှာခွဲ ဖြုတ်" + +#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:18 +msgid "_Edit" +msgstr "_E တည်းဖြတ်" + +#: ../src/empathy-chat-window.ui.h:13 +msgid "_Favorite Chat Room" +msgstr "_F နှစ်သက်သော စကားဆိုခန်း" + +#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:20 +msgid "_Help" +msgstr "_H အကူအညီ" + +#: ../src/empathy-chat-window.ui.h:15 +msgid "_Next Tab" +msgstr "_N နောက် စာမျက်နှာခွဲ" + +#: ../src/empathy-chat-window.ui.h:16 +msgid "_Previous Tab" +msgstr "_P ယခင် စာမျက်နှာခွဲ" + +#: ../src/empathy-chat-window.ui.h:17 ../src/empathy-status-icon.ui.h:5 +msgid "_Show Contact List" +msgstr "_S အမည်စာရင်း ပြပါ" + +#: ../src/empathy-chat-window.ui.h:18 +msgid "_Tabs" +msgstr "_T စာမျက်နှာခွဲများ" + +#: ../src/empathy-chat-window.ui.h:19 +msgid "_Undo Close Tab" +msgstr "_U စာမျက်နှာခွဲ ပိတ်ခြင်း မလုပ်တော့" + +#: ../src/empathy-chatrooms-window.c:241 +msgid "Name" +msgstr "အမည်" + +#: ../src/empathy-chatrooms-window.c:259 +msgid "Room" +msgstr "အခန်း" + +#: ../src/empathy-chatrooms-window.c:267 +msgid "Auto-Connect" +msgstr "အလိုအလျောက် ဆက်သွယ်" + +#: ../src/empathy-chatrooms-window.ui.h:2 +msgid "Manage Favorite Rooms" +msgstr "နှစ်သက်ရာ အခန်းများ စီမံမှု" + +#: ../src/empathy-event-manager.c:468 +msgid "Incoming video call" +msgstr "ဝင်လာသော ရုပ်သံ ခေါ်ဆိုမှု" + +#: ../src/empathy-event-manager.c:468 +msgid "Incoming call" +msgstr "ဝင်လာသော ခေါ်ဆိုမှု" + +#: ../src/empathy-event-manager.c:472 +#, c-format +msgid "%s is video calling you. Do you want to answer?" +msgstr "%s မှ ရုပ်သံဖြင့် ခေါ်ဆိုနေသည်။ ဖြေကြားလိုပါသလား" + +#: ../src/empathy-event-manager.c:473 +#, c-format +msgid "%s is calling you. Do you want to answer?" +msgstr "%s မှ ခေါ်ဆိုနေသည်။ ဖြေကြားလိုပါသလား?" + +#: ../src/empathy-event-manager.c:476 ../src/empathy-event-manager.c:618 +#, c-format +msgid "Incoming call from %s" +msgstr "%s မှ ခေါ်ဆိုမှု" + +#: ../src/empathy-event-manager.c:501 +msgid "_Reject" +msgstr "_R ငြင်းပယ်" + +#: ../src/empathy-event-manager.c:507 +msgid "_Answer" +msgstr "_A ဖြေဆို" + +#: ../src/empathy-event-manager.c:618 +#, c-format +msgid "Incoming video call from %s" +msgstr "%s မှ ရုပ်သံခေါ်ဆိုမှု" + +#: ../src/empathy-event-manager.c:695 +msgid "Room invitation" +msgstr "အခန်း ဖိတ်စာ" + +#: ../src/empathy-event-manager.c:697 +#, c-format +msgid "Invitation to join %s" +msgstr "%s သို့ ပါဝင်ရန် ဖိတ်စာ" + +#: ../src/empathy-event-manager.c:704 +#, c-format +msgid "%s is inviting you to join %s" +msgstr "%s မှ %s တွင် ပါဝင်ရန် ဖိတ်ကြားခြင်း" + +#: ../src/empathy-event-manager.c:712 +msgid "_Decline" +msgstr "_D ငြင်းပယ်" + +#: ../src/empathy-event-manager.c:717 +#: ../src/empathy-new-chatroom-dialog.ui.h:7 +msgid "_Join" +msgstr "_J ပါဝင်" + +#: ../src/empathy-event-manager.c:743 +#, c-format +msgid "%s invited you to join %s" +msgstr "%s မှ %s တွင် ပါဝင်ရန် ဖိတ်ကြားသည်" + +#: ../src/empathy-event-manager.c:749 +#, c-format +msgid "You have been invited to join %s" +msgstr "%s တွင် ပါဝင်ရန် သင်ဖိတ်ကြားခံရသည်" + +#: ../src/empathy-event-manager.c:797 +#, c-format +msgid "Incoming file transfer from %s" +msgstr "%s မှ ဖိုင်ဝေမျှမှု ဝင်လာသည်" + +#: ../src/empathy-event-manager.c:1005 +#, c-format +msgid "Subscription requested by %s" +msgstr "%s မှ စာရင်းဝင်ထားရန် တောင်းဆိုသည်" + +#: ../src/empathy-event-manager.c:1009 +#, c-format +msgid "" +"\n" +"Message: %s" +msgstr "" +"\n" +"အကြောင်းကြားစာ - %s" + +#: ../src/empathy-event-manager.c:1052 +#, c-format +msgid "%s is now offline." +msgstr "%s လိုင်းပြင်ရောက်နေသည်" + +#: ../src/empathy-event-manager.c:1072 +#, c-format +msgid "%s is now online." +msgstr "%s လိုင်းပေါ်ရောက်နေသည်" + +#. Translators: time left, when it is more than one hour +#: ../src/empathy-ft-manager.c:99 +#, c-format +msgid "%u:%02u.%02u" +msgstr "" + +#. Translators: time left, when is is less than one hour +#: ../src/empathy-ft-manager.c:102 +#, c-format +msgid "%02u.%02u" +msgstr "" + +#: ../src/empathy-ft-manager.c:178 +msgctxt "file transfer percent" +msgid "Unknown" +msgstr "မသိရ" + +#: ../src/empathy-ft-manager.c:273 +#, c-format +msgid "%s of %s at %s/s" +msgstr "%s of %s at %s/s" + +#: ../src/empathy-ft-manager.c:274 +#, c-format +msgid "%s of %s" +msgstr "%s သည် %s မှ" + +#. translators: first %s is filename, second %s is the contact name +#: ../src/empathy-ft-manager.c:305 +#, c-format +msgid "Receiving \"%s\" from %s" +msgstr "\"%s\" ကို %s ဆီမှ လက်ခံနေသည်" + +#. translators: first %s is filename, second %s is the contact name +#: ../src/empathy-ft-manager.c:308 +#, c-format +msgid "Sending \"%s\" to %s" +msgstr " \"%s\" ကို %s ဆီသို့ ပေးပို့နေသည်" + +#. translators: first %s is filename, second %s +#. * is the contact name +#: ../src/empathy-ft-manager.c:338 +#, c-format +msgid "Error receiving \"%s\" from %s" +msgstr " \"%s\" ကို %s ဆီမှ လက်ခံရာ အမှားတွေ့သည်" + +#: ../src/empathy-ft-manager.c:341 +msgid "Error receiving a file" +msgstr "ဖိုက်လက်ခံရာ အမှားတွေ့သည်" + +#: ../src/empathy-ft-manager.c:346 +#, c-format +msgid "Error sending \"%s\" to %s" +msgstr " \"%s\" ကို %s ဆီသို့ ပေးပို့ရာ အမှားတွေ့သည်" + +#: ../src/empathy-ft-manager.c:349 +msgid "Error sending a file" +msgstr "ဖိုင်ပေးပို့ရာ အမှားတွေ့သည်" + +#. translators: first %s is filename, second %s +#. * is the contact name +#: ../src/empathy-ft-manager.c:488 +#, c-format +msgid "\"%s\" received from %s" +msgstr " \"%s\" ကို %s ဆီမှ လက်ခံ" + +#. translators: first %s is filename, second %s +#. * is the contact name +#: ../src/empathy-ft-manager.c:493 +#, c-format +msgid "\"%s\" sent to %s" +msgstr "\"%s\" ကို %s ဆီသို့ ပေးပို့" + +#: ../src/empathy-ft-manager.c:496 +msgid "File transfer completed" +msgstr "ဖိုင် လှမ်းပို့ခြင်း ပြီးဆုံး" + +#: ../src/empathy-ft-manager.c:615 ../src/empathy-ft-manager.c:782 +msgid "Waiting for the other participant's response" +msgstr "ဟိုဘက်က တုံ့ပြန်မှုကို စောင့်ဆိုင်းနေသည်" + +#: ../src/empathy-ft-manager.c:641 ../src/empathy-ft-manager.c:679 +#, c-format +msgid "Checking integrity of \"%s\"" +msgstr "\"%s\" ၏ ဖိုင်မဏ္ဏိုင်စနစ် ကို စစ်ဆေးနေသည်" + +#: ../src/empathy-ft-manager.c:644 ../src/empathy-ft-manager.c:682 +#, c-format +msgid "Hashing \"%s\"" +msgstr "\"%s\" ကို တစ်စစီခွဲသည်" + +#: ../src/empathy-ft-manager.c:996 +msgid "%" +msgstr "%" + +#: ../src/empathy-ft-manager.c:1008 +msgid "File" +msgstr "ဖိုင်" + +#: ../src/empathy-ft-manager.c:1030 +msgid "Remaining" +msgstr "ကျန်ရှိသည်များ" + +#: ../src/empathy-ft-manager.ui.h:1 +msgid "File Transfers" +msgstr "ဖိုင် ဝေမျှ" + +#: ../src/empathy-ft-manager.ui.h:2 +msgid "Remove completed, canceled and failed file transfers from the list" +msgstr "" +"ပြီးဆုံးသော၊ ပြန်ရုတ်သိမ်းလိုက်သော၊ မအောင်မြင်သော ဖိုင်ဝေမျှမှုများကို စာရင်းမှ ဖယ်ပစ်ပါ" + +#: ../src/empathy-import-dialog.c:84 +msgid "" +"No accounts to import could be found. Empathy currently only supports " +"importing accounts from Pidgin." +msgstr "" +"ထည့်သွင်းရမည် အကောင့်များ ရှာဖွေမတွေ့ပါ။ Pidgin မှ ထည့်သွင်းသည့် အကောင့်များကိုသာ " +"အမ်ပသီက လက်ခံထောက်ပံ့နိုင်ပါသည်" + +#: ../src/empathy-import-dialog.c:199 +msgid "Import Accounts" +msgstr "အကောင့်များ ထည့်သွင်း" + +#. Translators: this is the header of a treeview column +#: ../src/empathy-import-widget.c:292 +msgid "Import" +msgstr "ထည့်သွင်း" + +#: ../src/empathy-import-widget.c:301 +msgid "Protocol" +msgstr "ပရိုတိုကော" + +#: ../src/empathy-import-widget.c:325 +msgid "Source" +msgstr "ပင်ရင်း" + +#: ../src/empathy-main-window.c:383 +msgid "No match found" +msgstr "ဆင်တူ ရှာမတွေ့ပါ" + +#: ../src/empathy-main-window.c:538 +msgid "Reconnect" +msgstr "ပြန်ဆက်သွယ်" + +#: ../src/empathy-main-window.c:544 +msgid "Edit Account" +msgstr "အကောင့် တည်းဖြတ်" + +#: ../src/empathy-main-window.c:550 +msgid "Close" +msgstr "ပိတ်သိမ်း" + +#: ../src/empathy-main-window.c:1232 +msgid "Contact" +msgstr "အဆက်အသွယ်" + +#: ../src/empathy-main-window.c:1557 +msgid "Contact List" +msgstr "အဆက်အသွယ်စာရင်း" + +#: ../src/empathy-main-window.c:1666 +msgid "Show and edit accounts" +msgstr "အကောင့်များကို ဖော်ပြပြီး တည်းဖြတ်ပါ" + +#: ../src/empathy-main-window.ui.h:1 +msgid "Contacts on a _Map" +msgstr "_M မြေပုံကပြသော အဆက်အသွယ်များ" + +#: ../src/empathy-main-window.ui.h:2 +msgid "Context" +msgstr "ပါဝင်သည်များ" + +#: ../src/empathy-main-window.ui.h:3 +msgid "Join _Favorites" +msgstr "_F နှစ်သက်ရာများ တွင် ပါဝင်" + +#: ../src/empathy-main-window.ui.h:4 +msgid "Manage Favorites" +msgstr "နှစ်သက်ရာများ စီမံခန့်ခွဲ" + +#: ../src/empathy-main-window.ui.h:5 +msgid "N_ormal Size" +msgstr "_O ပုံမှန်အရွယ်" + +#: ../src/empathy-main-window.ui.h:6 ../src/empathy-status-icon.ui.h:1 +msgid "New _Call…" +msgstr "_C အသစ် ခေါ်" + +#: ../src/empathy-main-window.ui.h:7 +msgid "Normal Size With _Avatars" +msgstr "_A ရုပ်ပုံပါ ပုံမှန်အရွယ်" + +#: ../src/empathy-main-window.ui.h:8 +msgid "P_references" +msgstr "_R နှစ်သက်ရာများ" + +#: ../src/empathy-main-window.ui.h:9 +msgid "Show P_rotocols" +msgstr "_R ပရိုတိုကောများ ပြပါ" + +#: ../src/empathy-main-window.ui.h:10 +msgid "Sort by _Name" +msgstr "_N အမည်အရ စီစဉ်ပါ" + +#: ../src/empathy-main-window.ui.h:11 +msgid "Sort by _Status" +msgstr "_S အခြေအနေအရ စီစဉ်ပါ" + +#: ../src/empathy-main-window.ui.h:12 +msgid "_Accounts" +msgstr "_A အကောင့်များ" + +#: ../src/empathy-main-window.ui.h:15 +msgid "_Compact Size" +msgstr "_C ကျစ်လစ် အရွယ်အစား" + +#: ../src/empathy-main-window.ui.h:17 +msgid "_Debug" +msgstr "_D အမှားစစ်" + +#: ../src/empathy-main-window.ui.h:19 +msgid "_File Transfers" +msgstr "_F ဖိုင်လှမ်းပို့" + +#: ../src/empathy-main-window.ui.h:21 +msgid "_Join…" +msgstr "_J ပါဝင်" + +#: ../src/empathy-main-window.ui.h:22 ../src/empathy-status-icon.ui.h:3 +msgid "_New Conversation…" +msgstr "_N စကားပွဲအသစ်" + +#: ../src/empathy-main-window.ui.h:23 +msgid "_Offline Contacts" +msgstr "_O လိုင်းပြင်ရောက် ဆက်သွယ်သူများ" + +#: ../src/empathy-main-window.ui.h:24 +msgid "_Personal Information" +msgstr "_P ကိုယ်ရေးကိုယ်တာ အချက်အလက်များ" + +#: ../src/empathy-main-window.ui.h:26 +msgid "_Room" +msgstr "_R အခန်း" + +#: ../src/empathy-new-chatroom-dialog.c:379 +msgid "Chat Room" +msgstr "စကားပြောဆိုခန်း" + +#: ../src/empathy-new-chatroom-dialog.c:395 +msgid "Members" +msgstr "ပါဝင်သူများ" + +#. Translators: Room/Join's roomlist tooltip. Parameters are a channel name, +#. yes/no, yes/no and a number. +#: ../src/empathy-new-chatroom-dialog.c:607 +#, c-format +msgid "" +"%s\n" +"Invite required: %s\n" +"Password required: %s\n" +"Members: %s" +msgstr "" +"%s\n" +"ဖိတ်စာ လိုအပ်သော: %s\n" +"စကားဝှက် လိုအပ်သော: %s\n" +"အဖွဲ့ဝင်များ: %s" + +#: ../src/empathy-new-chatroom-dialog.c:609 +#: ../src/empathy-new-chatroom-dialog.c:610 +msgid "No" +msgstr "ဟင့်အင်း" + +#: ../src/empathy-new-chatroom-dialog.c:638 +msgid "Could not start room listing" +msgstr "အခန်း အကဲခတ်မှု မစနိုင်ပါ" + +#: ../src/empathy-new-chatroom-dialog.c:648 +msgid "Could not stop room listing" +msgstr "အခန်း အကဲခတ်မှု မရပ်ဆိုင်းနိုင်ပါ" + +#: ../src/empathy-new-chatroom-dialog.ui.h:2 +msgid "Couldn't load room list" +msgstr "အခန်းစာရင်း မတင်ပြနိုင်ပါ" + +#: ../src/empathy-new-chatroom-dialog.ui.h:3 +msgid "" +"Enter the room name to join here or click on one or more rooms in the list." +msgstr "" +"အခန်းထဲဝင်ရန် အခန်းအမည် ရိုက်သွင်းပါ။ သို့မဟုတ် စာရင်းပေါ်မှ အခန်း(များ)ကို ကလစ်ပါ" + +#: ../src/empathy-new-chatroom-dialog.ui.h:4 +msgid "" +"Enter the server which hosts the room, or leave it empty if the room is on " +"the current account's server" +msgstr "" +"စကားပြောခန်းကို လက်ခံသည့် ဆာဗာအမည် သွင်းပါ၊ (သို့) စကားပြောခန်းသည် လက်ရှိအကောင့်၏ " +"ဆာဗာမှာရှိလျှင် ကွက်လပ်ထားပါ" + +#: ../src/empathy-new-chatroom-dialog.ui.h:5 +msgid "Join Room" +msgstr "အခန်းထဲ ပါဝင်" + +#: ../src/empathy-new-chatroom-dialog.ui.h:6 +msgid "Room List" +msgstr "အခန်းစာရင်း" + +#: ../src/empathy-new-chatroom-dialog.ui.h:8 +msgid "_Room:" +msgstr "_R အခန်း" + +#: ../src/empathy-preferences.c:138 +msgid "Message received" +msgstr "စကား လက်ခံရ" + +#: ../src/empathy-preferences.c:139 +msgid "Message sent" +msgstr "စကား ပေးပို့" + +#: ../src/empathy-preferences.c:140 +msgid "New conversation" +msgstr "စကားပွဲ အသစ်" + +#: ../src/empathy-preferences.c:141 +msgid "Contact goes online" +msgstr "ဆက်သွယ်သူ လိုင်းပေါ် ရောက်လာသည်" + +#: ../src/empathy-preferences.c:142 +msgid "Contact goes offline" +msgstr "ဆက်သွယ်သူ လိုင်းပြင် ထွက်သွားသည်" + +#: ../src/empathy-preferences.c:143 +msgid "Account connected" +msgstr "အကောင့် ဆက်သွယ်ထားပြီ" + +#: ../src/empathy-preferences.c:144 +msgid "Account disconnected" +msgstr "အကောင့် မဆက်သွယ်တော့" + +#: ../src/empathy-preferences.c:445 +msgid "Language" +msgstr "ဘာသာစကား" + +#: ../src/empathy-preferences.c:882 +msgid "Preferences" +msgstr "နှစ်သက်ရာများ" + +#: ../src/empathy-preferences.ui.h:1 +msgid "Appearance" +msgstr "အမြင်" + +#: ../src/empathy-preferences.ui.h:2 +msgid "Behavior" +msgstr "အမူအကျင့်" + +#: ../src/empathy-preferences.ui.h:3 +msgid "Chat Th_eme:" +msgstr "_E စကားပြောခန်း အသွင်အပြင်" + +#: ../src/empathy-preferences.ui.h:4 +msgid "Disable notifications when _away or busy" +msgstr "_A အဝေးရောက် သို့ အလုပ်များချိန်တွင် အသိပေးချက်များ ခွင့်မပြု" + +#: ../src/empathy-preferences.ui.h:5 +msgid "Disable sounds when _away or busy" +msgstr "_A အဝေးရောက် သို့ အလုပ်များချိန်တွင် အသံများ ခွင့်မပြု" + +#: ../src/empathy-preferences.ui.h:6 +msgid "Display incoming events in the notification area" +msgstr "အသိပေးချက်များ ဝင်လာသောနေရာတွင် ဖော်ပြပါ" + +#: ../src/empathy-preferences.ui.h:7 +msgid "Enable notifications when a contact comes online" +msgstr "ဆက်သွယ်သူ လိုင်းထဲဝင်လာလျှင် အသိပေးချက်များ ခွင့်ပြု" + +#: ../src/empathy-preferences.ui.h:8 +msgid "Enable notifications when a contact goes offline" +msgstr "ဆက်သွယ်သူ လိုင်းပြင်ထွက်သွားလျှင် အသိပေးချက်များ ခွင့်ပြု" + +#: ../src/empathy-preferences.ui.h:9 +msgid "Enable notifications when the _chat is not focused" +msgstr "_C အတည်တကျ စကားဆိုမနေချိန်တွင် အသိပေးချက်များ ခွင့်ပြု" + +#: ../src/empathy-preferences.ui.h:10 +msgid "Enable spell checking for languages:" +msgstr "ဘာသာစကားများအတွက် စာလုံးပေါင်းစစ်ဆေးခြင်း ခွင့်ပြု - " + +#: ../src/empathy-preferences.ui.h:11 +msgid "General" +msgstr "ယေဘုယျ" + +#: ../src/empathy-preferences.ui.h:13 +msgid "Location sources:" +msgstr "တည်နေရာ ပင်ရင်း - " + +#: ../src/empathy-preferences.ui.h:14 +msgid "Log conversations" +msgstr "စကားပြောဆိုမှု မှတ်တမ်း" + +#: ../src/empathy-preferences.ui.h:15 +msgid "Notifications" +msgstr "အသိပေးချက်" + +#: ../src/empathy-preferences.ui.h:16 +msgid "Play sound for events" +msgstr "ဖြစ်စဉ်များအတွက် အသံဖွင့်ပါ" + +#: ../src/empathy-preferences.ui.h:17 +msgid "Privacy" +msgstr "ပရိုင်ဗေစီ" + +#: ../src/empathy-preferences.ui.h:18 +msgid "" +"Reduced location accuracy means that nothing more precise than your city, " +"state and country will be published. GPS coordinates will be accurate to 1 " +"decimal place." +msgstr "" +"လျှော့ချထားသော နေရာတိကျမှု ဆိုသည်မှာ သင်၏ နိုင်ငံ၊ ပြည်နယ်၊ မြို့ရွာ များထက် ပိုပြီး " +"လိပ်စာအတိအကျ မထုတ်ပြန်ပါ။\" \" GPS တည်နေရာသည် ဒဿမနေရာ တစ်ခု တိကျပါသည်။ " + +#: ../src/empathy-preferences.ui.h:19 +msgid "Show _smileys as images" +msgstr "_S ရုပ်ပြောင်များကို ပုံအဖြစ် ပြပါ" + +#: ../src/empathy-preferences.ui.h:20 +msgid "Show contact _list in rooms" +msgstr "_L ဆက်သွယ်သူစာရင်းကို အခန်းတွင် ပြပါ" + +#: ../src/empathy-preferences.ui.h:21 +msgid "Sounds" +msgstr "အသံများ" + +#: ../src/empathy-preferences.ui.h:22 +msgid "Spell Checking" +msgstr "စာလုံးပေါင်းစစ်ဆေး" + +#: ../src/empathy-preferences.ui.h:23 +msgid "" +"The list of languages reflects only the languages for which you have a " +"dictionary installed." +msgstr "အဘိဓာန် ထည့်သွင်းထားသော ဘာသာစကားများကိုသာ ဘာသာစကားစာရင်းက ပြန်ဖော်ပြပါသည်" + +#: ../src/empathy-preferences.ui.h:24 +msgid "Themes" +msgstr "သွင်ပြင်များ" + +#: ../src/empathy-preferences.ui.h:25 +msgid "_Automatically connect on startup" +msgstr "_A ဖွင့်လိုက်သည်နှင့် အလိုအလျောက် ချိတ်ဆက်ပါ" + +#: ../src/empathy-preferences.ui.h:26 +msgid "_Cellphone" +msgstr "_C ပါလေရာဖုန်း" + +#: ../src/empathy-preferences.ui.h:27 +msgid "_Enable bubble notifications" +msgstr "_E တိုးတိုး အချက်ပြရန် ခွင့်ပြုသည်" + +#: ../src/empathy-preferences.ui.h:28 +msgid "_Enable sound notifications" +msgstr "_E အသံ အချက်ပြရန် ခွင့်ပြုသည်" + +#: ../src/empathy-preferences.ui.h:29 +msgid "_GPS" +msgstr "_GPS" + +#: ../src/empathy-preferences.ui.h:30 +msgid "_Network (IP, Wi-Fi)" +msgstr "_N ကွန်ယက် (IP, Wi-Fi)" + +#: ../src/empathy-preferences.ui.h:31 +msgid "_Open new chats in separate windows" +msgstr "_O စကားပြောဝင်းဒိုးများ ခွဲဖွင့်ပါ" + +#: ../src/empathy-preferences.ui.h:32 +msgid "_Publish location to my contacts" +msgstr "_P တည်နေရာသတင်း ထုတ်ပြန်ပါ" + +#. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. +#: ../src/empathy-preferences.ui.h:34 +msgid "_Reduce location accuracy" +msgstr "_R တည်နေရာ တိကျမှု လျှော့ချ" + +#: ../src/empathy-status-icon.c:141 +msgid "Respond" +msgstr "တုံ့ပြန်" + +#: ../src/empathy-status-icon.c:147 +msgid "Reject" +msgstr "ငြင်းထုတ်" + +#: ../src/empathy-status-icon.c:151 +msgid "Answer" +msgstr "ဖြေဆို" + +#: ../src/empathy-status-icon.c:158 +msgid "Decline" +msgstr "ငြင်းပယ်" + +#: ../src/empathy-status-icon.c:162 +msgid "Accept" +msgstr "လက်ခံ" + +#: ../src/empathy-status-icon.ui.h:2 +msgid "Status" +msgstr "အခြေအနေ" + +#: ../src/empathy-status-icon.ui.h:4 +msgid "_Quit" +msgstr "_Q ထွက်ပါ" + +#: ../src/empathy-map-view.c:452 +msgid "Contact Map View" +msgstr "အမည် လိပ်စာများ ဆက်စပ်ပုံ" + +#: ../src/empathy-debug-window.c:1219 +msgid "Save" +msgstr "သိမ်းထား" + +#: ../src/empathy-debug-window.c:1395 +msgid "Debug Window" +msgstr "အမှားစစ် ဝင်းဒိုး" + +#: ../src/empathy-debug-window.c:1475 +msgid "Pause" +msgstr "ခဏနား" + +#: ../src/empathy-debug-window.c:1487 +msgid "Level " +msgstr "အဆင့်" + +#: ../src/empathy-debug-window.c:1507 +msgid "Debug" +msgstr "အမှားစစ်" + +#: ../src/empathy-debug-window.c:1513 +msgid "Info" +msgstr "သတင်း" + +#: ../src/empathy-debug-window.c:1519 ../src/empathy-debug-window.c:1568 +msgid "Message" +msgstr "ပြောစကား" + +#: ../src/empathy-debug-window.c:1525 +msgid "Warning" +msgstr "သတိပြုရန်" + +#: ../src/empathy-debug-window.c:1531 +msgid "Critical" +msgstr "ထင်သာမြင်သာ" + +#: ../src/empathy-debug-window.c:1537 +msgid "Error" +msgstr "ချို့ယွင်းချက်" + +#: ../src/empathy-debug-window.c:1556 +msgid "Time" +msgstr "အချိန်" + +#: ../src/empathy-debug-window.c:1559 +msgid "Domain" +msgstr "ဒိုမိန်း" + +#: ../src/empathy-debug-window.c:1561 +msgid "Category" +msgstr "မျိုးတူရာ" + +#: ../src/empathy-debug-window.c:1563 +msgid "Level" +msgstr "အဆင့်" + +#: ../src/empathy-debug-window.c:1600 +msgid "" +"The selected connection manager does not support the remote debugging " +"extension." +msgstr "" +"ရွေးထားသော ဆက်သွယ်မှု မန်နေဂျာသည် အဝေးမှတစ်ဆင့် အမှားစစ်ခြင်းကို လက်မခံနိုင်ပါ" + +#: ../src/empathy-invite-participant-dialog.c:34 +#: ../src/empathy-invite-participant-dialog.c:48 +msgid "Invite Participant" +msgstr "ပါဝင်သူ ဖိတ်ခေါ်" + +#: ../src/empathy-invite-participant-dialog.c:35 +msgid "Choose a contact to invite into the conversation:" +msgstr "စကားပြောရာသို့ ဖိတ်ခေါ်ရန် လိပ်စာတစ်ခုကို ရွေးပါ" + +#: ../src/empathy-invite-participant-dialog.c:45 +msgid "Invite" +msgstr "ဖိတ်ခေါ်" + +#: ../src/empathy-accounts.c:182 +msgid "Don't display any dialogs; do any work (eg, importing) and exit" +msgstr "" +"မည်သည့် စကားပြောကိုမှ မဖော်ပြပါနှင့်၊၊ အလုပ် (ဥပမာ- ခေါ်သွင်းခြင်း) မလုပ်ပါနှင့်၊ " +"ထွက်ပါ" + +#: ../src/empathy-accounts.c:186 +msgid "Don't display any dialogs if there are any non-Salut accounts" +msgstr "အရေးမကြီးသော အကောင့်များထံမှ ဆိုလျှင် စကားပြောများကို မဖော်ပြပါနှင့်" + +#: ../src/empathy-accounts.c:190 +msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)" +msgstr "စစချင်းမှာ ရွေးဖို့ အကောင့် (ဥပမာ, gabble/jabber/foo_40example_2eorg0 )" + +#: ../src/empathy-accounts.c:192 +msgid "" +msgstr "မှတ်ပုံတင် အကောင့်" + +#: ../src/empathy-accounts.c:200 +msgid "- Empathy Accounts" +msgstr "- အမ်ပသီ အကောင့်များ" + +#: ../src/empathy-accounts.c:216 +msgid "Empathy Accounts" +msgstr "အမ်ပသီ အကောင့်များ" + +#: ../src/empathy-debugger.c:40 +msgid "Empathy Debugger" +msgstr "အမ်ပသီ အမှားစစ်စနစ်" diff --git a/po/ro.po b/po/ro.po index 90609b75..e93fe926 100644 --- a/po/ro.po +++ b/po/ro.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Empathy\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=empathy&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-03-17 08:55+0000\n" -"PO-Revision-Date: 2011-03-17 10:48+0200\n" +"product=empathy&keywords=I18N+L10N&component=General\n" +"POT-Creation-Date: 2011-11-25 20:22+0000\n" +"PO-Revision-Date: 2011-11-26 03:37+0300\n" "Last-Translator: Lucian Adrian Grijincu \n" "Language-Team: Romanian Gnome Team \n" "MIME-Version: 1.0\n" @@ -19,7 +19,8 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2);;\n" -"X-Generator: Virtaal 0.6.1\n" +"X-Generator: Virtaal 0.7.0\n" +"X-Project-Style: gnome\n" #: ../data/empathy.desktop.in.in.h:1 msgid "Chat on Google Talk, Facebook, MSN and many other chat services" @@ -44,53 +45,73 @@ msgid "Always open a separate chat window for new chats." msgstr "Deschide întotdeauna o fereastră separată pentru discuțiile noi." #: ../data/org.gnome.Empathy.gschema.xml.in.h:2 +msgid "Camera device" +msgstr "Cameră" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 +msgid "Camera position" +msgstr "Poziția camerei" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 msgid "" "Character to add after nickname when using nick completion (tab) in group " "chat." msgstr "" "Caracterul de adăugat după un pseudonim când se folosește completarea cu tab " -"în grupurile de discuții." +"a pseudonimului în grupurile de discuții." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 msgid "Chat window theme" -msgstr "Temă ferestră discuții" +msgstr "Tema ferestrei de discuții" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 +msgid "Chat window theme variant" +msgstr "Varianta de temă pentru fereastra de discuții" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 msgid "" "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")." msgstr "" "Listă de corectoare ortografice de folosit, separate prin virgulă (de ex: " "„en, fr, ro”)." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 msgid "Compact contact list" msgstr "Listă de contacte compactă" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 msgid "Connection managers should be used" msgstr "Ar trebui folosiți administratori de conexiune" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 msgid "Contact list sort criterion" msgstr "Criteriu de sortare a listei de contacte" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 +msgid "D-Bus object path of the last account selected to join a room." +msgstr "Calea D-Bus a ultimului cont selectat pentru a intra într-o fereastră." + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 +msgid "Default camera device to use in video calls, e.g. /dev/video0." +msgstr "Camera implicită folosită în apeluri video, ex: /dev/video0." + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 msgid "Default directory to select an avatar image from" -msgstr "Dosar implicit pentru alegerea imaginii avatarului" +msgstr "Dosarul implicit din care se alege imaginea avatarului" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 msgid "Disable popup notifications when away" -msgstr "Dezactivează notificările de tip popup când sunt plecat" +msgstr "Dezactivează notificările de tip popup când utilizatorul este plecat" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 msgid "Disable sounds when away" -msgstr "Dezactivează sunetele când sunt plecat" +msgstr "Dezactivează sunetele când utilizatorul este plecat" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 msgid "Display incoming events in the status area" -msgstr "Afișează evenimentele primite în zona de stare" +msgstr "Afișează evenimentele sosite în zona de stare" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 msgid "" "Display incoming events in the status area. If false, present them to the " "user immediately." @@ -98,244 +119,260 @@ msgstr "" "Afișează evenimente sosite în zona de stare. Dacă are valoarea „fals”, " "prezintă-le utilizatorului imediat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 +msgid "Echo cancellation support" +msgstr "Asistență pentru anularea ecoului" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 msgid "Empathy can publish the user's location" msgstr "Empathy poate publica locația utilizatorului" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 msgid "Empathy can use the GPS to guess the location" msgstr "Empathy poate folosi GPS-ul pentru a estima locația" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 msgid "Empathy can use the cellular network to guess the location" msgstr "" "Empathy poate folosi rețeaua de telefonie mobilă pentru a estima locația" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 msgid "Empathy can use the network to guess the location" msgstr "Empathy poate folosi rețeaua pentru a estima locația" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 msgid "Empathy default download folder" msgstr "Dosarul implicit de descărcare pentru Empathy" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 -msgid "Empathy has migrated butterfly logs" -msgstr "Empathy a migrat înregistrările butterfly" - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 msgid "Empathy should auto-away when idle" msgstr "" "Empathy ar trebui să schimbe starea în „plecat” când calculatorul este " "inactiv" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 msgid "Empathy should auto-connect on startup" msgstr "La pornire, Empathy ar trebui să se conecteze automat" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 msgid "Empathy should reduce the location's accuracy" msgstr "Empathy ar trebui să reducă acuratețea locației" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 msgid "Empathy should use the avatar of the contact as the chat window icon" msgstr "" "Empathy ar trebui să folosească avatarul contactului ca iconiță a ferestrei " "de discuții" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 msgid "Enable WebKit Developer Tools" msgstr "Activează uneltele de dezvoltare WebKit" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 msgid "Enable popup notifications for new messages" msgstr "Activează notificările de tip popup pentru mesaje noi" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 msgid "Enable spell checker" msgstr "Activează corectorul ortografic" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 msgid "Hide main window" msgstr "Ascunde fereastra principală" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 msgid "Hide the main window." msgstr "Ascunde fereastra principală." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 +msgid "Last account selected in Join Room dialog" +msgstr "Ultimul cont selectat în dialogul de alăturare la canale de discuții" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 msgid "Nick completed character" msgstr "Caracter de completare a pseudonimului" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 msgid "Open new chats in separate windows" msgstr "Deschide discuțiile noi în ferestre separate" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 msgid "Path of the Adium theme to use" msgstr "Calea către tema Adium de utilizat" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 msgid "Path of the Adium theme to use if the theme used for chat is Adium." msgstr "" "Calea către tema Adium de utilizat, dacă tema utilizată pentru conversații " "este Adium." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 msgid "Play a sound for incoming messages" msgstr "Redă un sunet la primirea mesajelor" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 msgid "Play a sound for new conversations" msgstr "Redă un sunet pentru conversațiile noi" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 msgid "Play a sound for outgoing messages" msgstr "Redă un sunet pentru mesajele trimise" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 msgid "Play a sound when a contact logs in" msgstr "Redă un sunet la conectarea unui contact" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 msgid "Play a sound when a contact logs out" msgstr "Redă un sunet la deconectarea unui contact" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Play a sound when we log in" msgstr "Redă un sunet când mă conectez" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Play a sound when we log out" msgstr "Redă un sunet când mă deconectez" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Pop up notifications if the chat isn't focused" msgstr "Notificări popup dacă conversația nu este focalizată" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Pop up notifications when a contact logs in" msgstr "Notificări popup la autentificarea unui contact" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Pop up notifications when a contact logs out" msgstr "Notificări popup la deconectarea unui contact" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +msgid "Position the camera preview should be during a call." +msgstr "" +"Poziția la care previzualizarea camerei ar trebui să fie în timpul unui apel." + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +msgid "Show Balance in contact list" +msgstr "Arată soldul curent în lista de contacte" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "Show avatars" msgstr "Arată avatare" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "Show contact list in rooms" msgstr "Arată lista contactelor în canale de discuții" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "Show hint about closing the main window" msgstr "Arată un indiciu despre închiderea ferestrei principale" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "Show offline contacts" msgstr "Arată contactele deconectate" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Show protocols" msgstr "Arată protocoalele" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Spell checking languages" -msgstr "Limbi corectare ortografică" +msgstr "Corectare ortografică a limbilor" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "The default folder to save file transfers in." msgstr "Dosarul implicit în care se salvează fișierele transferate." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "The last directory that an avatar image was chosen from." -msgstr "Ultimul dosar de unde a fost aleasă o imagine pentru avatar." +msgstr "Ultimul dosar din care a fost aleasă o imagine pentru avatar." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "The position for the chat window side pane" msgstr "Poziția panoului lateral din fereastra de discuții" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "The stored position (in pixels) of the chat window side pane." msgstr "" "Poziția memorată (în pixeli) a panoului lateral din fereastra de discuții." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "The theme that is used to display the conversation in chat windows." msgstr "" "Tema care este folosită pentru a afișa conversația în ferestrele de discuții." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +msgid "" +"The theme variant that is used to display the conversation in chat windows." +msgstr "" +"Varianta de temă care este folosită pentru a afișa conversația în ferestrele " +"de discuții." + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "Use graphical smileys" msgstr "Folosește emoticoane grafice" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "Use notification sounds" msgstr "Folosește sunete de notificare" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "Use theme for chat rooms" msgstr "Folosește tema pentru canalele de discuții" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "Dacă Empathy poate să publice contactelor locația utilizatorului." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "Whether Empathy can use the GPS to guess the location." msgstr "Dacă Empathy poate să utilizeze GPS-ul pentru a estima locația." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "" "Dacă Empathy poate să utilizeze rețeaua de telefonie mobilă pentru a estima " "locația." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "Whether Empathy can use the network to guess the location." msgstr "Dacă Empathy poate să utilizeze rețeaua pentru a estima locația." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 -msgid "Whether Empathy has migrated butterfly logs." -msgstr "Dacă Empathy a migrat înregistrările butterfly." - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "" "Dacă Empathy ar trebui să vă autentifice automat în conturile dumneavoastră " "la pornire." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "" "Whether Empathy should go into away mode automatically if the user is idle." msgstr "" "Dacă Empathy ar trebui să schimbe automat starea în „plecat” când " "calculatorul este inactiv." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "" "Whether Empathy should reduce the location's accuracy for privacy reasons." msgstr "" "Dacă Empathy ar trebui să reducă acuratețea locației din motive de " "intimitate." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 msgid "" "Whether Empathy should use the avatar of the contact as the chat window icon." msgstr "" "Dacă Empathy ar trebui să folosească avatarul contactului ca iconiță a " "ferestrei de discuții." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 msgid "" "Whether WebKit developer tools, such as the Web Inspector, should be enabled." msgstr "" -"Dacă ar trebui activate uneltele de dezvoltare Webkit, cum ar fi Inspectorul " +"Dacă ar trebui activate uneltele de dezvoltare WebKit, cum ar fi Inspectorul " "Web." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 msgid "" "Whether connectivity managers should be used to automatically disconnect/" "reconnect." @@ -343,118 +380,129 @@ msgstr "" "Dacă administratorii conexiunilor de rețea ar trebui folosiți pentru " "deconectare/reconectare automată." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 msgid "" "Whether to check words typed against the languages you want to check with." -msgstr "" -"Dacă să se verifice, în limbile alese, corectitudinea cuvintelor tastate." +msgstr "Dacă să fie verificate cuvintele tastate după limbile selectate." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 msgid "Whether to convert smileys into graphical images in conversations." msgstr "" -"Dacă să se afișeze emoticoanele ca imagini (și nu ca text) în conversații." +"Dacă să fie afișate emoticoanele ca imagini (și nu ca text) în conversații." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +msgid "Whether to enable Pulseaudio's echo cancellation filter." +msgstr "" +"Specifică dacă se va activa filtrul de anulare a ecoului a lui Pulseaudio." + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 msgid "Whether to play a sound to notify of contacts logging into the network." -msgstr "Dacă se redau notificări sonore la autentificarea unui contact." +msgstr "Dacă să fie redate notificări sonore la autentificarea unui contact." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 msgid "" "Whether to play a sound to notify of contacts logging out of the network." -msgstr "Dacă se redau notificări sonore la deconectarea unui contact." +msgstr "Dacă să fie redate notificări sonore la deconectarea unui contact." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 msgid "Whether to play a sound to notify of events." -msgstr "Dacă se redau notificări sonore pentru evenimente." +msgstr "Dacă să fie redate notificări sonore pentru evenimente." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 msgid "Whether to play a sound to notify of incoming messages." -msgstr "Dacă se redau un sunet la primirea mesajelor." +msgstr "Dacă să fie redat un sunet la primirea mesajelor." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 msgid "Whether to play a sound to notify of new conversations." -msgstr "Dacă se redau un sunet la începerea unei conversații noi." +msgstr "Dacă să fie redat un sunet la începerea unei conversații noi." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 msgid "Whether to play a sound to notify of outgoing messages." -msgstr "Dacă se redau un sunet la trimiterea mesajelor." +msgstr "Dacă să fie redat un sunet la trimiterea mesajelor." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 msgid "Whether to play a sound when logging into a network." -msgstr "Dacă se redau un sunet la conectarea la rețea." +msgstr "Dacă să fie redat un sunet la conectarea la rețea." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 msgid "Whether to play a sound when logging out of a network." -msgstr "Dacă să se redea un sunet, la deconectarea de la o rețea." +msgstr "Dacă să fie redat un sunet, la deconectarea de la o rețea." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 msgid "Whether to play sound notifications when away or busy." -msgstr "Dacă să se redea notificări sonore când sunteți plecat sau ocupat." +msgstr "" +"Dacă să fie redate notificări sonore când utilizatorul este plecat sau " +"ocupat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 msgid "Whether to show a popup notification when a contact goes offline." msgstr "" -"Dacă să afișeze o notificare popup, atunci când un contact se deconectează." +"Dacă să fie afișată o notificare popup atunci când un contact se " +"deconectează." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 msgid "Whether to show a popup notification when a contact goes online." msgstr "" -"Dacă să afișeze o notificare popup, atunci când un contact se conectează." +"Dacă să fie afișată o notificare popup atunci când un contact se conectează." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 msgid "" "Whether to show a popup notification when receiving a new message even if " "the chat is already opened, but not focused." msgstr "" -"Dacă să fie afișate notificări popup la primirea de mesaje noi, chiar dacă " +"Dacă să fie afișată o notificare popup la primirea de mesaje noi, chiar dacă " "conversația este deja deschisă, dar nu este focalizată." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 msgid "Whether to show a popup notification when receiving a new message." -msgstr "Dacă să fie afișate notificări popup la primirea de mesaje noi." +msgstr "Dacă să fie afișată o notificare popup la primirea de mesaje noi." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 +msgid "Whether to show account balances in the contact list." +msgstr "Dacă să fie afișat soldul curent în lista de contacte." + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 msgid "" "Whether to show avatars for contacts in the contact list and chat windows." msgstr "" -"Dacă să se afișeze avatare pentru contacte în lista de contacte și " +"Dacă să fie afișate avatare pentru contacte în lista de contacte și " "ferestrele de discuții." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:93 msgid "Whether to show contacts that are offline in the contact list." -msgstr "Dacă să se arate contactele deconectate în lista de contacte." +msgstr "Dacă să fie afișate contactele deconectate în lista de contacte." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:94 msgid "Whether to show popup notifications when away or busy." -msgstr "Dacă să fie afișate notificări popup când sunteți plecat sau ocupat." +msgstr "" +"Dacă să fie afișate notificări popup când utilizatorul este plecat sau " +"ocupat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:95 msgid "Whether to show protocols for contacts in the contact list." -msgstr "" -"Dacă să se afișeze în lista de contacte și ferestrele de discuții avatare " -"pentru contacte." +msgstr "Dacă să fie afișate protocoalele contactelor în lista de contacte." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:96 msgid "Whether to show the contact list in chat rooms." -msgstr "Dacă să afișeze lista de contacte în canalele de discuții." +msgstr "Dacă să fie afișată lista de contacte în ferestrele de discuții." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:97 msgid "Whether to show the contact list in compact mode." -msgstr "Dacă să se arate lista de contacte compactă." +msgstr "Dacă să fie afișată lista de contacte într-un mod compact." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:98 msgid "" "Whether to show the message dialog about closing the main window with the " "'x' button in the title bar." msgstr "" -"Dacă să se arate un dialog de confirmare la închiderea ferestrei principale " -"de la butonul „x” din bara de titlu." +"Dacă să fie afișat un dialog de confirmare la închiderea ferestrei " +"principale de la butonul „x” din bara de titlu." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:99 msgid "Whether to use the theme for chat rooms." -msgstr "Dacă să se folosească tema pentru canalele de discuții." +msgstr "Dacă să fie folosită tema pentru canalele de discuții." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:100 msgid "" "Which criterion to use when sorting the contact list. Default is to sort by " "the contact's name with the value \"name\". A value of \"state\" will sort " @@ -470,193 +518,207 @@ msgstr "Administrare conturi de mesagerie și VoIP" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2242 +#: ../src/empathy-accounts-dialog.c:2312 msgid "Messaging and VoIP Accounts" msgstr "Conturi de mesagerie și VoIP" -#: ../libempathy/empathy-ft-handler.c:825 +#: ../libempathy/empathy-ft-handler.c:838 msgid "File transfer completed, but the file was corrupted" msgstr "Transfer de fișiere finalizat, dar fișierul a fost corupt" -#: ../libempathy/empathy-ft-handler.c:1116 +#: ../libempathy/empathy-ft-handler.c:1124 msgid "File transfer not supported by remote contact" msgstr "Transferul de fișiere nu este suportat de contactul cu care discutați" -#: ../libempathy/empathy-ft-handler.c:1172 +#: ../libempathy/empathy-ft-handler.c:1180 msgid "The selected file is not a regular file" msgstr "Fișierul ales nu este unul obișnuit" -#: ../libempathy/empathy-ft-handler.c:1181 +#: ../libempathy/empathy-ft-handler.c:1189 msgid "The selected file is empty" msgstr "Fișierul selectat este gol" -#: ../libempathy/empathy-tp-file.c:268 +#: ../libempathy/empathy-message.c:415 ../src/empathy-call-observer.c:131 +#, c-format +msgid "Missed call from %s" +msgstr "Apel pierdut de la %s" + +#. Translators: this is an outgoing call, e.g. 'Called Alice' +#: ../libempathy/empathy-message.c:419 +#, c-format +msgid "Called %s" +msgstr "Ați sunat pe %s" + +#: ../libempathy/empathy-message.c:422 +#, c-format +msgid "Call from %s" +msgstr "Apel de la %s" + +#: ../libempathy/empathy-tp-file.c:258 msgid "Socket type not supported" -msgstr "Tipul socketului nu este suportat" +msgstr "Tipul socket-ului nu este suportat" -#: ../libempathy/empathy-tp-file.c:387 +#: ../libempathy/empathy-tp-file.c:377 msgid "No reason was specified" msgstr "Nu a fost specificat vreun motiv" -#: ../libempathy/empathy-tp-file.c:390 +#: ../libempathy/empathy-tp-file.c:380 msgid "The change in state was requested" msgstr "S-a cerut schimbarea de stare" -#: ../libempathy/empathy-tp-file.c:393 +#: ../libempathy/empathy-tp-file.c:383 msgid "You canceled the file transfer" msgstr "Ați anulat transferul de fișiere" -#: ../libempathy/empathy-tp-file.c:396 +#: ../libempathy/empathy-tp-file.c:386 msgid "The other participant canceled the file transfer" msgstr "Celălalt participant a anulat transferul de fișiere" -#: ../libempathy/empathy-tp-file.c:399 +#: ../libempathy/empathy-tp-file.c:389 msgid "Error while trying to transfer the file" msgstr "Eroare la încercarea de a transfera fișierul" -#: ../libempathy/empathy-tp-file.c:402 +#: ../libempathy/empathy-tp-file.c:392 msgid "The other participant is unable to transfer the file" msgstr "Celălalt participant nu poate transfera fișierul" -#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:382 +#: ../libempathy/empathy-tp-file.c:395 ../libempathy/empathy-utils.c:312 msgid "Unknown reason" msgstr "Motiv necunoscut" -#: ../libempathy/empathy-utils.c:304 +#: ../libempathy/empathy-utils.c:232 msgid "Available" msgstr "Disponibil" -#: ../libempathy/empathy-utils.c:306 +#: ../libempathy/empathy-utils.c:234 msgid "Busy" msgstr "Ocupat" -#: ../libempathy/empathy-utils.c:309 +#: ../libempathy/empathy-utils.c:237 msgid "Away" msgstr "Plecat" -#: ../libempathy/empathy-utils.c:311 +#: ../libempathy/empathy-utils.c:239 msgid "Invisible" msgstr "Invizibil" -#: ../libempathy/empathy-utils.c:313 +#: ../libempathy/empathy-utils.c:241 msgid "Offline" msgstr "Deconectat" -#: ../libempathy/empathy-utils.c:315 -#: ../src/empathy-streamed-media-window.c:1904 -#: ../src/empathy-streamed-media-window.c:1905 -#: ../src/empathy-streamed-media-window.c:1906 -#: ../src/empathy-streamed-media-window.c:1907 -#: ../src/empathy-call-window.ui.h:18 +#. translators: presence type is unknown +#: ../libempathy/empathy-utils.c:244 +msgctxt "presence" msgid "Unknown" msgstr "Necunoscut" -#: ../libempathy/empathy-utils.c:354 +#: ../libempathy/empathy-utils.c:284 msgid "No reason specified" -msgstr "Nu a fost specificat niciun motiv" +msgstr "Niciun motiv specificat" -#: ../libempathy/empathy-utils.c:356 ../libempathy/empathy-utils.c:412 +#: ../libempathy/empathy-utils.c:286 ../libempathy/empathy-utils.c:342 msgid "Status is set to offline" msgstr "Mesajul de stare este trecut ca deconectat." -#: ../libempathy/empathy-utils.c:358 ../libempathy/empathy-utils.c:392 +#: ../libempathy/empathy-utils.c:288 ../libempathy/empathy-utils.c:322 +#: ../libempathy-gtk/empathy-call-utils.c:49 +#: ../libempathy-gtk/empathy-new-message-dialog.c:82 msgid "Network error" msgstr "Eroare de rețea" -#: ../libempathy/empathy-utils.c:360 ../libempathy/empathy-utils.c:394 +#: ../libempathy/empathy-utils.c:290 ../libempathy/empathy-utils.c:324 msgid "Authentication failed" msgstr "Autentificare eșuată" -#: ../libempathy/empathy-utils.c:362 ../libempathy/empathy-utils.c:396 +#: ../libempathy/empathy-utils.c:292 ../libempathy/empathy-utils.c:326 msgid "Encryption error" msgstr "Eroare de criptare" -#: ../libempathy/empathy-utils.c:364 +#: ../libempathy/empathy-utils.c:294 msgid "Name in use" msgstr "Nume în uz" -#: ../libempathy/empathy-utils.c:366 ../libempathy/empathy-utils.c:398 +#: ../libempathy/empathy-utils.c:296 ../libempathy/empathy-utils.c:328 msgid "Certificate not provided" msgstr "Nu s-a furnizat un certificat" -#: ../libempathy/empathy-utils.c:368 ../libempathy/empathy-utils.c:400 +#: ../libempathy/empathy-utils.c:298 ../libempathy/empathy-utils.c:330 msgid "Certificate untrusted" -msgstr "Certificatul nu e de încredere" +msgstr "Certificatul nu este de încredere" -#: ../libempathy/empathy-utils.c:370 ../libempathy/empathy-utils.c:402 +#: ../libempathy/empathy-utils.c:300 ../libempathy/empathy-utils.c:332 msgid "Certificate expired" -msgstr "Certificat expirat" +msgstr "Certificatul a expirat" -#: ../libempathy/empathy-utils.c:372 ../libempathy/empathy-utils.c:404 +#: ../libempathy/empathy-utils.c:302 ../libempathy/empathy-utils.c:334 msgid "Certificate not activated" -msgstr "Certificat inactiv" +msgstr "Certificatul nu este activat" -#: ../libempathy/empathy-utils.c:374 ../libempathy/empathy-utils.c:406 +#: ../libempathy/empathy-utils.c:304 ../libempathy/empathy-utils.c:336 msgid "Certificate hostname mismatch" msgstr "Nepotrivire de nume de gazdă în certificat" -#: ../libempathy/empathy-utils.c:376 ../libempathy/empathy-utils.c:408 +#: ../libempathy/empathy-utils.c:306 ../libempathy/empathy-utils.c:338 msgid "Certificate fingerprint mismatch" msgstr "Nepotrivire de amprentă în certificat" -#: ../libempathy/empathy-utils.c:378 ../libempathy/empathy-utils.c:410 +#: ../libempathy/empathy-utils.c:308 ../libempathy/empathy-utils.c:340 msgid "Certificate self-signed" msgstr "Certificat semnat de el însuși" -#: ../libempathy/empathy-utils.c:380 +#: ../libempathy/empathy-utils.c:310 msgid "Certificate error" msgstr "Eroare de certificat" -#: ../libempathy/empathy-utils.c:414 +#: ../libempathy/empathy-utils.c:344 msgid "Encryption is not available" msgstr "Criptarea nu este disponibilă" -#: ../libempathy/empathy-utils.c:416 +#: ../libempathy/empathy-utils.c:346 msgid "Certificate is invalid" -msgstr "Certificat nevalid" +msgstr "Certificatul nu este valid" -#: ../libempathy/empathy-utils.c:418 +#: ../libempathy/empathy-utils.c:348 msgid "Connection has been refused" msgstr "Conexiunea a fost refuzată" -#: ../libempathy/empathy-utils.c:420 +#: ../libempathy/empathy-utils.c:350 msgid "Connection can't be established" msgstr "Conexiunea nu poate fi stabilită" -#: ../libempathy/empathy-utils.c:422 +#: ../libempathy/empathy-utils.c:352 msgid "Connection has been lost" msgstr "Conexiunea a fost pierdută" -#: ../libempathy/empathy-utils.c:424 +#: ../libempathy/empathy-utils.c:354 msgid "This resource is already connected to the server" msgstr "Această resursă este deja conectată la server" -#: ../libempathy/empathy-utils.c:426 +#: ../libempathy/empathy-utils.c:356 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "" "Conexiunea a fost înlocuită de o nouă conexiune utilizând aceeași resursă" -#: ../libempathy/empathy-utils.c:429 +#: ../libempathy/empathy-utils.c:359 msgid "The account already exists on the server" -msgstr "Acest cont există deja de pe server." +msgstr "Acest cont există deja de pe server" -#: ../libempathy/empathy-utils.c:431 +#: ../libempathy/empathy-utils.c:361 msgid "Server is currently too busy to handle the connection" msgstr "Serverul este în prezent prea ocupat să se ocupe de conexiune" -#: ../libempathy/empathy-utils.c:433 +#: ../libempathy/empathy-utils.c:363 msgid "Certificate has been revoked" msgstr "Certificatul a fost revocat" -#: ../libempathy/empathy-utils.c:435 +#: ../libempathy/empathy-utils.c:365 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" -"Certificatul folosește un algoritm de criptare nesigur sau este slab " -"criptografic" +"Certificatul folosește un algoritm de criptare nesigur sau slab criptografic" -#: ../libempathy/empathy-utils.c:438 +#: ../libempathy/empathy-utils.c:368 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" @@ -664,156 +726,153 @@ msgstr "" "Lungimea certificatului serverului sau adâncimea lanțului de certificate al " "serverului depășește limitele impuse de biblioteca de criptografie" -#: ../libempathy/empathy-utils.c:601 -#: ../libempathy-gtk/empathy-contact-list-store.h:73 +#: ../libempathy/empathy-utils.c:372 +msgid "Your software is too old" +msgstr "Programul este prea vechi" + +#: ../libempathy/empathy-utils.c:531 msgid "People Nearby" msgstr "Persoane din apropiere" -#: ../libempathy/empathy-utils.c:606 +#: ../libempathy/empathy-utils.c:536 msgid "Yahoo! Japan" msgstr "Yahoo! Japonia" -#: ../libempathy/empathy-utils.c:635 +#: ../libempathy/empathy-utils.c:565 msgid "Google Talk" msgstr "Google Talk" -#: ../libempathy/empathy-utils.c:636 +#: ../libempathy/empathy-utils.c:566 msgid "Facebook Chat" msgstr "Discuție Facebook" -#: ../libempathy/empathy-time.c:137 +#: ../libempathy/empathy-time.c:88 #, c-format msgid "%d second ago" msgid_plural "%d seconds ago" -msgstr[0] "acum o secundă" -msgstr[1] "acum %d secunde" -msgstr[2] "acum %d de secunde" +msgstr[0] "o secundă" +msgstr[1] "%d secunde" +msgstr[2] "%d de secunde" -#: ../libempathy/empathy-time.c:142 +#: ../libempathy/empathy-time.c:93 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" -msgstr[0] "acum un minut" -msgstr[1] "acum %d minute" -msgstr[2] "acum %d de minute" +msgstr[0] "un minut" +msgstr[1] "%d minute" +msgstr[2] "%d de minute" -#: ../libempathy/empathy-time.c:147 +#: ../libempathy/empathy-time.c:98 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" -msgstr[0] "acum o oră" -msgstr[1] "acum %d ore" -msgstr[2] "acum %d de ore" +msgstr[0] "o oră" +msgstr[1] "%d ore" +msgstr[2] "%d de ore" -#: ../libempathy/empathy-time.c:152 +#: ../libempathy/empathy-time.c:103 #, c-format msgid "%d day ago" msgid_plural "%d days ago" -msgstr[0] "acum o zi" -msgstr[1] "acum %d zile" -msgstr[2] "acum %d de zile" +msgstr[0] "o zi" +msgstr[1] "%d zile" +msgstr[2] "%d de zile" -#: ../libempathy/empathy-time.c:157 +#: ../libempathy/empathy-time.c:108 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" -msgstr[0] "acum o săptămână" -msgstr[1] "acum %d săptămâni" -msgstr[2] "acum %d de săptămâni" +msgstr[0] "o săptămână" +msgstr[1] "%d săptămâni" +msgstr[2] "%d de săptămâni" -#: ../libempathy/empathy-time.c:162 +#: ../libempathy/empathy-time.c:113 #, c-format msgid "%d month ago" msgid_plural "%d months ago" -msgstr[0] "acum o lună" -msgstr[1] "acum %d luni" -msgstr[2] "acum %d de luni" +msgstr[0] "o lună" +msgstr[1] "%d luni" +msgstr[2] "%d de luni" -#: ../libempathy/empathy-time.c:167 +#: ../libempathy/empathy-time.c:136 msgid "in the future" msgstr "în viitor" -#: ../libempathy-gtk/empathy-account-chooser.c:501 -msgid "All" -msgstr "Toate" +#: ../libempathy-gtk/empathy-account-chooser.c:688 +msgid "All accounts" +msgstr "Toate conturile" -#: ../libempathy-gtk/empathy-account-widget.c:679 -#: ../libempathy-gtk/empathy-log-window.c:647 +#: ../libempathy-gtk/empathy-account-widget.c:694 #: ../src/empathy-import-widget.c:321 msgid "Account" msgstr "Cont" -#: ../libempathy-gtk/empathy-account-widget.c:680 +#: ../libempathy-gtk/empathy-account-widget.c:695 msgid "Password" msgstr "Parolă" -#: ../libempathy-gtk/empathy-account-widget.c:681 +#: ../libempathy-gtk/empathy-account-widget.c:696 #: ../libempathy-gtk/empathy-irc-network-dialog.c:507 msgid "Server" msgstr "Server" -#: ../libempathy-gtk/empathy-account-widget.c:682 +#: ../libempathy-gtk/empathy-account-widget.c:697 #: ../libempathy-gtk/empathy-irc-network-dialog.c:522 msgid "Port" msgstr "Port" -#: ../libempathy-gtk/empathy-account-widget.c:754 -#: ../libempathy-gtk/empathy-account-widget.c:811 +#: ../libempathy-gtk/empathy-account-widget.c:776 +#: ../libempathy-gtk/empathy-account-widget.c:828 #, c-format msgid "%s:" msgstr "%s:" -#: ../libempathy-gtk/empathy-account-widget.c:1163 +#: ../libempathy-gtk/empathy-account-widget.c:1182 +msgid "My Web Accounts" +msgstr "Conturile mele web" + +#: ../libempathy-gtk/empathy-account-widget.c:1199 #, c-format -msgid "The account %s is edited via My Web Accounts." -msgstr "Contul %s este editat prin intermediul Conturilor mele web." +msgid "The account %s is edited via %s." +msgstr "Contul %s este editat prin %s." -#: ../libempathy-gtk/empathy-account-widget.c:1169 +#: ../libempathy-gtk/empathy-account-widget.c:1205 #, c-format msgid "The account %s cannot be edited in Empathy." msgstr "Contul %s nu poate fi editat în Empathy." -#: ../libempathy-gtk/empathy-account-widget.c:1189 +#: ../libempathy-gtk/empathy-account-widget.c:1224 msgid "Launch My Web Accounts" msgstr "Lansează Conturile mele web" -#: ../libempathy-gtk/empathy-account-widget.c:1527 +#. general handler +#: ../libempathy-gtk/empathy-account-widget.c:1232 +#, c-format +msgid "Edit %s" +msgstr "Editează %s" + +#: ../libempathy-gtk/empathy-account-widget.c:1582 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11 msgid "Username:" msgstr "Utilizator:" -#: ../libempathy-gtk/empathy-account-widget.c:1894 +#: ../libempathy-gtk/empathy-account-widget.c:1900 msgid "A_pply" msgstr "A_plică" -#: ../libempathy-gtk/empathy-account-widget.c:1924 +#: ../libempathy-gtk/empathy-account-widget.c:1930 msgid "L_og in" msgstr "Autent_ificare" -#. Account and Identifier -#: ../libempathy-gtk/empathy-account-widget.c:1990 -#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:517 -#: ../libempathy-gtk/empathy-contact-widget.ui.h:2 -#: ../libempathy-gtk/empathy-individual-widget.c:1481 -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 -#: ../src/empathy-chatrooms-window.ui.h:1 -#: ../src/empathy-new-chatroom-dialog.ui.h:1 -msgid "Account:" -msgstr "Cont:" - -#: ../libempathy-gtk/empathy-account-widget.c:2001 -msgid "_Enabled" -msgstr "_Activat" - -#: ../libempathy-gtk/empathy-account-widget.c:2066 +#: ../libempathy-gtk/empathy-account-widget.c:2004 msgid "This account already exists on the server" -msgstr "Acest cont există deja de pe server." +msgstr "Acest cont există deja de pe server" -#: ../libempathy-gtk/empathy-account-widget.c:2069 +#: ../libempathy-gtk/empathy-account-widget.c:2007 msgid "Create a new account on the server" -msgstr "Crează un cont nou pe server" +msgstr "Creează un cont nou pe server" -#: ../libempathy-gtk/empathy-account-widget.c:2261 +#: ../libempathy-gtk/empathy-account-widget.c:2201 msgid "Ca_ncel" msgstr "Re_nunță" @@ -822,19 +881,19 @@ msgstr "Re_nunță" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2558 +#: ../libempathy-gtk/empathy-account-widget.c:2479 #, c-format msgid "%1$s on %2$s" msgstr "%1$s pe %2$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2584 +#: ../libempathy-gtk/empathy-account-widget.c:2505 #, c-format msgid "%s Account" msgstr "Cont %s" -#: ../libempathy-gtk/empathy-account-widget.c:2588 +#: ../libempathy-gtk/empathy-account-widget.c:2509 msgid "New account" msgstr "Cont nou" @@ -846,6 +905,7 @@ msgstr "Exemplu: NumeleMeu" #: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1 #: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:2 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:2 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:2 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:1 @@ -859,17 +919,17 @@ msgstr "Avansat" #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:5 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:8 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:4 -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:12 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:13 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:5 msgid "Pass_word:" -msgstr "_Parolă:" +msgstr "Paro_lă:" #: ../libempathy-gtk/empathy-account-widget-aim.ui.h:4 #: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:5 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:6 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:10 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:5 -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:15 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:16 msgid "Remember Password" msgstr "Memorează parola" @@ -879,9 +939,9 @@ msgstr "Memorează parola" #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:7 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:11 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:6 -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:16 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6 -#: ../libempathy-gtk/empathy-password-dialog.c:311 +#: ../libempathy-gtk/empathy-base-password-dialog.c:261 msgid "Remember password" msgstr "Memorează parola" @@ -941,7 +1001,7 @@ msgstr "Exemplu: 123456789" #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:3 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:3 msgid "Ch_aracter set:" -msgstr "Set c_aractere:" +msgstr "Set de c_aractere:" #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:4 msgid "ICQ _UIN:" @@ -955,76 +1015,84 @@ msgstr "Care este UIN-ul de ICQ?" msgid "What is your ICQ password?" msgstr "Care este parola ICQ?" -#: ../libempathy-gtk/empathy-account-widget-sip.c:183 -#: ../libempathy-gtk/empathy-account-widget-sip.c:216 +#: ../libempathy-gtk/empathy-account-widget-sip.c:206 +#: ../libempathy-gtk/empathy-account-widget-sip.c:239 msgid "Auto" msgstr "Auto" -#: ../libempathy-gtk/empathy-account-widget-sip.c:186 +#: ../libempathy-gtk/empathy-account-widget-sip.c:209 msgid "UDP" msgstr "UDP" -#: ../libempathy-gtk/empathy-account-widget-sip.c:189 +#: ../libempathy-gtk/empathy-account-widget-sip.c:212 msgid "TCP" msgstr "TCP" -#: ../libempathy-gtk/empathy-account-widget-sip.c:192 +#: ../libempathy-gtk/empathy-account-widget-sip.c:215 msgid "TLS" msgstr "TLS" #. translators: this string is very specific to SIP's internal; maybe #. * best to keep the English version. -#: ../libempathy-gtk/empathy-account-widget-sip.c:221 +#: ../libempathy-gtk/empathy-account-widget-sip.c:244 msgid "Register" msgstr "Register" #. translators: this string is very specific to SIP's internal; maybe #. * best to keep the English version. -#: ../libempathy-gtk/empathy-account-widget-sip.c:226 +#: ../libempathy-gtk/empathy-account-widget-sip.c:249 msgid "Options" -msgstr "Opțiuni" +msgstr "Options" -#: ../libempathy-gtk/empathy-account-widget-sip.c:229 +#: ../libempathy-gtk/empathy-account-widget-sip.c:252 msgid "None" msgstr "Niciunul" -#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2 msgid "Character set:" -msgstr "Set caractere:" +msgstr "Set de caractere:" -#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3 +msgid "" +"Most IRC servers don't need a password, so if you're not sure, don't enter a " +"password." +msgstr "" +"Multe servere IRC nu necesită o parolă, dacă nu sunteți siguri, nu scrieți " +"nimic." + +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4 msgid "Network" msgstr "Rețea" -#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5 msgid "Network:" msgstr "Rețea:" -#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6 msgid "Nickname:" msgstr "Pseudonim:" -#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7 msgid "Password:" msgstr "Parolă:" -#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8 msgid "Quit message:" msgstr "Mesaj de ieșire:" -#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9 msgid "Real name:" msgstr "Nume real:" -#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10 msgid "Servers" msgstr "Servere" -#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12 msgid "What is your IRC nickname?" msgstr "Care este pseudonimul IRC?" -#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10 +#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13 msgid "Which IRC network?" msgstr "Care rețea IRC?" @@ -1046,7 +1114,7 @@ msgstr "I_gnoră erorile certificatelor SSL" #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7 msgid "Override server settings" -msgstr "Impune aceste configurări serverului" +msgstr "Folosește configurările locale în locul celor ale serverului" #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:9 msgid "Priori_ty:" @@ -1158,58 +1226,67 @@ msgid "Discover the STUN server automatically" msgstr "Descoperă serverul STUN automat" #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:6 +msgid "Ignore TLS Errors" +msgstr "Ignoră erorile TLS" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:7 msgid "Interval (seconds)" msgstr "Interval (secunde)" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:7 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:8 msgid "Keep-Alive Options" msgstr "Opțiuni Keep-Alive (menținere în viață a conexiunii)" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:8 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:9 msgid "Loose Routing" msgstr "Rutare relaxată" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:9 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:10 msgid "Mechanism:" msgstr "Mecanism:" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:10 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:11 msgid "Miscellaneous Options" msgstr "Opțiuni diverse" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:11 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:12 msgid "NAT Traversal Options" msgstr "Opțiuni de traversare a NAT-ului" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:13 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:14 msgid "Port:" msgstr "Port:" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:14 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:15 msgid "Proxy Options" msgstr "Opțiuni proxy" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:18 msgid "STUN Server:" msgstr "Server STUN:" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:18 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:114 msgid "Server:" msgstr "Server:" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:20 msgid "Transport:" msgstr "Transport:" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:20 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21 +msgid "Use this account to call _landlines and mobile phones" +msgstr "Folosiți acest cont să sunați te_lefoane fixe sau telefoane mobile" + +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22 msgid "What is your SIP account password?" msgstr "Care este parola contului SIP?" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23 msgid "What is your SIP login ID?" msgstr "Care este ID-ul de autentificare SIP?" -#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22 +#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24 msgid "_Username:" msgstr "_Utilizator:" @@ -1219,11 +1296,11 @@ msgstr "I_gnoră invitații la canale de discuții și conferințe" #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:7 msgid "What is your Yahoo! ID?" -msgstr "Care este ID-ul Yahoo! ?" +msgstr "Care este ID-ul Yahoo!?" #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:8 msgid "What is your Yahoo! password?" -msgstr "Care este parola Yahoo! ?" +msgstr "Care este parola Yahoo!?" #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9 msgid "Yahoo! I_D:" @@ -1231,31 +1308,39 @@ msgstr "I_D Yahoo!:" #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:11 msgid "_Room List locale:" -msgstr "Configurări regionale listă cana_le:" +msgstr "Configu_rări regionale listă canale:" -#: ../libempathy-gtk/empathy-avatar-chooser.c:448 -#: ../libempathy-gtk/empathy-avatar-chooser.c:524 +#: ../libempathy-gtk/empathy-avatar-chooser.c:471 +#: ../libempathy-gtk/empathy-avatar-chooser.c:556 msgid "Couldn't convert image" msgstr "Nu s-a putut converti imaginea" -#: ../libempathy-gtk/empathy-avatar-chooser.c:449 +#: ../libempathy-gtk/empathy-avatar-chooser.c:472 msgid "None of the accepted image formats are supported on your system" msgstr "" "Sistemul dumneavoastră nu suportă niciunul din formatele de imagine acceptate" -#: ../libempathy-gtk/empathy-avatar-chooser.c:936 +#: ../libempathy-gtk/empathy-avatar-chooser.c:819 +msgid "Couldn't save picture to file" +msgstr "Nu s-a putut converti imaginea" + +#: ../libempathy-gtk/empathy-avatar-chooser.c:939 msgid "Select Your Avatar Image" msgstr "Alegeți avatarul" -#: ../libempathy-gtk/empathy-avatar-chooser.c:939 +#: ../libempathy-gtk/empathy-avatar-chooser.c:947 +msgid "Take a picture..." +msgstr "Faceți o poză..." + +#: ../libempathy-gtk/empathy-avatar-chooser.c:960 msgid "No Image" msgstr "Nicio imagine" -#: ../libempathy-gtk/empathy-avatar-chooser.c:1001 +#: ../libempathy-gtk/empathy-avatar-chooser.c:1017 msgid "Images" msgstr "Imagini" -#: ../libempathy-gtk/empathy-avatar-chooser.c:1005 +#: ../libempathy-gtk/empathy-avatar-chooser.c:1021 msgid "All Files" msgstr "Toate fișierele" @@ -1263,35 +1348,65 @@ msgstr "Toate fișierele" msgid "Click to enlarge" msgstr "Clic pentru mărire" -#: ../libempathy-gtk/empathy-chat.c:655 +#: ../libempathy-gtk/empathy-call-utils.c:44 +#: ../libempathy-gtk/empathy-call-utils.c:62 +msgid "There was an error starting the call" +msgstr "A apărut o eroare la pornirea apelului" + +#: ../libempathy-gtk/empathy-call-utils.c:51 +msgid "The specified contact doesn't support calls" +msgstr "Contactul selectat nu suportă apeluri" + +#: ../libempathy-gtk/empathy-call-utils.c:53 +msgid "The specified contact is offline" +msgstr "Contactul selectat este deconectat" + +#: ../libempathy-gtk/empathy-call-utils.c:55 +msgid "The specified contact is not valid" +msgstr "Contactul selectat nu este valid" + +#: ../libempathy-gtk/empathy-call-utils.c:57 +msgid "Emergency calls are not supported on this protocol" +msgstr "Apelurile de urgență nu sunt suportate de către acest protocol" + +#: ../libempathy-gtk/empathy-call-utils.c:59 +msgid "You don't have enough credit in order to place this call" +msgstr "Nu aveți sold suficient pentru a efectua acest apel" + +#: ../libempathy-gtk/empathy-chat.c:706 msgid "Failed to open private chat" msgstr "Nu s-a putut deschide conversația privată" -#: ../libempathy-gtk/empathy-chat.c:720 +#: ../libempathy-gtk/empathy-chat.c:764 msgid "Topic not supported on this conversation" msgstr "Această conversație nu are un subiect definit" -#: ../libempathy-gtk/empathy-chat.c:726 +#: ../libempathy-gtk/empathy-chat.c:770 msgid "You are not allowed to change the topic" msgstr "Nu aveți dreptul să modificați subiectul" -#: ../libempathy-gtk/empathy-chat.c:909 +#: ../libempathy-gtk/empathy-chat.c:971 +#, c-format +msgid "“%s” is not a valid contact ID" +msgstr "„%s” nu este un identificator de contact valid" + +#: ../libempathy-gtk/empathy-chat.c:1066 msgid "/clear: clear all messages from the current conversation" msgstr "/clear: curăță toate mesajele din conversația curentă" -#: ../libempathy-gtk/empathy-chat.c:912 +#: ../libempathy-gtk/empathy-chat.c:1069 msgid "/topic : set the topic of the current conversation" msgstr "/topic : modifică subiectul conversației curente" -#: ../libempathy-gtk/empathy-chat.c:915 +#: ../libempathy-gtk/empathy-chat.c:1072 msgid "/join : join a new chat room" msgstr "/join : alăturare la un nou canal de discuții" -#: ../libempathy-gtk/empathy-chat.c:918 +#: ../libempathy-gtk/empathy-chat.c:1075 msgid "/j : join a new chat room" msgstr "/j : alăturare la un nou canal de discuții" -#: ../libempathy-gtk/empathy-chat.c:923 +#: ../libempathy-gtk/empathy-chat.c:1079 msgid "" "/part [] []: leave the chat room, by default the " "current one" @@ -1299,23 +1414,23 @@ msgstr "" "/part [] []: părăsește canalul de discuții, implicit " "cel curent" -#: ../libempathy-gtk/empathy-chat.c:928 +#: ../libempathy-gtk/empathy-chat.c:1083 msgid "/query []: open a private chat" msgstr "/query []: deschide o conversație privată" -#: ../libempathy-gtk/empathy-chat.c:931 +#: ../libempathy-gtk/empathy-chat.c:1086 msgid "/msg : open a private chat" msgstr "/msg : deschide o conversație privată" -#: ../libempathy-gtk/empathy-chat.c:934 +#: ../libempathy-gtk/empathy-chat.c:1089 msgid "/nick : change your nickname on the current server" msgstr "/nick : modifică pseudonimul pe serverul curent" -#: ../libempathy-gtk/empathy-chat.c:937 +#: ../libempathy-gtk/empathy-chat.c:1092 msgid "/me : send an ACTION message to the current conversation" msgstr "/me : trimite un mesaj de tip ACTION conversației curente" -#: ../libempathy-gtk/empathy-chat.c:940 +#: ../libempathy-gtk/empathy-chat.c:1095 msgid "" "/say : send to the current conversation. This is used to " "send a message starting with a '/'. For example: \"/say /join is used to " @@ -1325,7 +1440,11 @@ msgstr "" "permite să trimiteți un mesaj ce începe cu „/”. De exemplu: „/say /join este " "folosit pentru alăturarea la un nou canal de discuții”" -#: ../libempathy-gtk/empathy-chat.c:945 +#: ../libempathy-gtk/empathy-chat.c:1100 +msgid "/whois : display information about a contact" +msgstr "/whois : afișează informații despre un contact" + +#: ../libempathy-gtk/empathy-chat.c:1103 msgid "" "/help []: show all supported commands. If is defined, " "show its usage." @@ -1333,99 +1452,121 @@ msgstr "" "/help []: afișează toate comenzile suportate. Dacă este " "definită, se va afișa un ghid de utilizare pentru aceasta." -#: ../libempathy-gtk/empathy-chat.c:955 +#: ../libempathy-gtk/empathy-chat.c:1122 #, c-format msgid "Usage: %s" -msgstr "Utlizare: %s" +msgstr "Utilizare: %s" -#: ../libempathy-gtk/empathy-chat.c:997 +#: ../libempathy-gtk/empathy-chat.c:1167 msgid "Unknown command" msgstr "Comandă necunoscută" -#: ../libempathy-gtk/empathy-chat.c:1123 +#: ../libempathy-gtk/empathy-chat.c:1293 msgid "Unknown command; see /help for the available commands" msgstr "" "Comandă necunoscută: utilizați /help pentru a vedea comenzile disponibile" -#: ../libempathy-gtk/empathy-chat.c:1263 +#: ../libempathy-gtk/empathy-chat.c:1457 +msgid "insufficient balance to send message" +msgstr "sold insuficient pentru a trimite mesajul" + +#: ../libempathy-gtk/empathy-chat.c:1461 ../libempathy-gtk/empathy-chat.c:1475 +#: ../libempathy-gtk/empathy-chat.c:1538 +#, c-format +msgid "Error sending message '%s': %s" +msgstr "Eroare la trimiterea mesajului „%s”: %s" + +#: ../libempathy-gtk/empathy-chat.c:1463 ../libempathy-gtk/empathy-chat.c:1480 +#: ../libempathy-gtk/empathy-chat.c:1542 +#, c-format +msgid "Error sending message: %s" +msgstr "Eroare la trimiterea mesajului : %s" + +#. translators: error used when user doesn't have enough credit on his +#. * account to send the message. +#: ../libempathy-gtk/empathy-chat.c:1469 +#, c-format +msgid "insufficient balance to send message. Top up." +msgstr "sold insuficient pentru a trimite mesajul. Încărcați." + +#: ../libempathy-gtk/empathy-chat.c:1509 +msgid "not capable" +msgstr "incapabil" + +#: ../libempathy-gtk/empathy-chat.c:1516 msgid "offline" msgstr "deconectat" -#: ../libempathy-gtk/empathy-chat.c:1266 +#: ../libempathy-gtk/empathy-chat.c:1519 msgid "invalid contact" -msgstr "contact nevalid" +msgstr "contact invalid" -#: ../libempathy-gtk/empathy-chat.c:1269 +#: ../libempathy-gtk/empathy-chat.c:1522 msgid "permission denied" msgstr "permisiune respinsă" -#: ../libempathy-gtk/empathy-chat.c:1272 +#: ../libempathy-gtk/empathy-chat.c:1525 msgid "too long message" msgstr "mesaj prea lung" -#: ../libempathy-gtk/empathy-chat.c:1275 +#: ../libempathy-gtk/empathy-chat.c:1528 msgid "not implemented" msgstr "neimplementat" -#: ../libempathy-gtk/empathy-chat.c:1279 +#: ../libempathy-gtk/empathy-chat.c:1532 msgid "unknown" msgstr "necunoscut" -#: ../libempathy-gtk/empathy-chat.c:1283 -#, c-format -msgid "Error sending message '%s': %s" -msgstr "Eroare la trimiterea mesajului „%s”: %s" - -#: ../libempathy-gtk/empathy-chat.c:1344 ../src/empathy-chat-window.c:708 +#: ../libempathy-gtk/empathy-chat.c:1599 ../src/empathy-chat-window.c:761 msgid "Topic:" msgstr "Subiect:" -#: ../libempathy-gtk/empathy-chat.c:1356 +#: ../libempathy-gtk/empathy-chat.c:1611 #, c-format msgid "Topic set to: %s" msgstr "Subiect definit la: %s" -#: ../libempathy-gtk/empathy-chat.c:1358 +#: ../libempathy-gtk/empathy-chat.c:1613 msgid "No topic defined" msgstr "Niciun subiect definit" -#: ../libempathy-gtk/empathy-chat.c:1857 +#: ../libempathy-gtk/empathy-chat.c:2126 msgid "(No Suggestions)" msgstr "(Nicio sugestie)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:1925 +#: ../libempathy-gtk/empathy-chat.c:2194 #, c-format msgid "Add '%s' to Dictionary" msgstr "Adaugă „%s” în dicționar" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:1962 +#: ../libempathy-gtk/empathy-chat.c:2231 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "Adaugă „%s” în dicționarul de limbă %s" -#: ../libempathy-gtk/empathy-chat.c:2021 +#: ../libempathy-gtk/empathy-chat.c:2301 msgid "Insert Smiley" msgstr "Inserează un emoticon" #. send button -#: ../libempathy-gtk/empathy-chat.c:2039 -#: ../libempathy-gtk/empathy-ui-utils.c:1809 +#: ../libempathy-gtk/empathy-chat.c:2319 +#: ../libempathy-gtk/empathy-ui-utils.c:1867 msgid "_Send" msgstr "_Trimite" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2074 +#: ../libempathy-gtk/empathy-chat.c:2376 msgid "_Spelling Suggestions" -msgstr "_Sugestii corectare ortografică" +msgstr "_Sugestii de corectare ortografică" -#: ../libempathy-gtk/empathy-chat.c:2163 +#: ../libempathy-gtk/empathy-chat.c:2465 msgid "Failed to retrieve recent logs" -msgstr "Nu s-a putut obține înregistrările recente" +msgstr "Nu s-au putut obține înregistrările recente" -#: ../libempathy-gtk/empathy-chat.c:2274 +#: ../libempathy-gtk/empathy-chat.c:2602 #, c-format msgid "%s has disconnected" msgstr "%s s-a deconectat" @@ -1433,12 +1574,12 @@ msgstr "%s s-a deconectat" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2281 +#: ../libempathy-gtk/empathy-chat.c:2609 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%1$s a fost dat afară de %2$s" -#: ../libempathy-gtk/empathy-chat.c:2284 +#: ../libempathy-gtk/empathy-chat.c:2612 #, c-format msgid "%s was kicked" msgstr "%s a fost dat afară" @@ -1446,17 +1587,17 @@ msgstr "%s a fost dat afară" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2292 +#: ../libempathy-gtk/empathy-chat.c:2620 #, c-format msgid "%1$s was banned by %2$s" msgstr "%2$s a blocat accesul lui de %1$s" -#: ../libempathy-gtk/empathy-chat.c:2295 +#: ../libempathy-gtk/empathy-chat.c:2623 #, c-format msgid "%s was banned" msgstr "%s a fost blocat" -#: ../libempathy-gtk/empathy-chat.c:2299 +#: ../libempathy-gtk/empathy-chat.c:2627 #, c-format msgid "%s has left the room" msgstr "%s a părăsit canalul de discuții" @@ -1466,141 +1607,173 @@ msgstr "%s a părăsit canalul de discuții" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2308 +#: ../libempathy-gtk/empathy-chat.c:2636 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2333 +#: ../libempathy-gtk/empathy-chat.c:2661 #, c-format msgid "%s has joined the room" msgstr "%s s-a alăturat canalului de discuții" -#: ../libempathy-gtk/empathy-chat.c:2358 +#: ../libempathy-gtk/empathy-chat.c:2686 #, c-format msgid "%s is now known as %s" msgstr "%s este acum cunoscut ca %s" -#: ../libempathy-gtk/empathy-chat.c:2497 -#: ../src/empathy-streamed-media-window.c:1949 -#: ../src/empathy-event-manager.c:1122 +#. We don't know if the incoming call has been accepted or not, so we +#. * assume it hasn't and if it has, we'll set the proper status when +#. * we get the new handler. +#: ../libempathy-gtk/empathy-chat.c:2847 +#: ../src/empathy-streamed-media-window.c:1889 +#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1538 +#: ../src/empathy-call-window.c:1588 ../src/empathy-call-window.c:2631 msgid "Disconnected" msgstr "Deconectat" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3127 +#: ../libempathy-gtk/empathy-chat.c:3493 msgid "Would you like to store this password?" msgstr "Doriți să se stocheze această parolă?" -#: ../libempathy-gtk/empathy-chat.c:3133 +#: ../libempathy-gtk/empathy-chat.c:3499 msgid "Remember" msgstr "Reține" -#: ../libempathy-gtk/empathy-chat.c:3143 +#: ../libempathy-gtk/empathy-chat.c:3509 msgid "Not now" msgstr "Nu acum" -#: ../libempathy-gtk/empathy-chat.c:3187 +#: ../libempathy-gtk/empathy-chat.c:3553 +#: ../libempathy-gtk/empathy-bad-password-dialog.c:142 msgid "Retry" -msgstr "Încearcă din nou" +msgstr "Încercați din nou" -#: ../libempathy-gtk/empathy-chat.c:3191 +#: ../libempathy-gtk/empathy-chat.c:3557 msgid "Wrong password; please try again:" msgstr "Parolă incorectă; încercați din nou:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3308 +#: ../libempathy-gtk/empathy-chat.c:3687 msgid "This room is protected by a password:" -msgstr "Acest canal este protejată de o parolă:" +msgstr "Acest canal este protejat de o parolă:" -#: ../libempathy-gtk/empathy-chat.c:3335 +#: ../libempathy-gtk/empathy-chat.c:3714 msgid "Join" msgstr "Alăturare" -#: ../libempathy-gtk/empathy-chat.c:3505 ../src/empathy-event-manager.c:1144 +#: ../libempathy-gtk/empathy-chat.c:3902 ../src/empathy-event-manager.c:1281 msgid "Connected" msgstr "Conectat" -#: ../libempathy-gtk/empathy-chat.c:3558 -#: ../libempathy-gtk/empathy-log-window.c:654 +#: ../libempathy-gtk/empathy-chat.c:3957 msgid "Conversation" msgstr "Conversație" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:422 +#. Translators: this string is a something like +#. * "Escher Cat (SMS)" +#: ../libempathy-gtk/empathy-chat.c:3962 +#, c-format +msgid "%s (SMS)" +msgstr "%s (SMS)" + +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265 msgid "Unknown or invalid identifier" msgstr "Identificator necunoscut sau nevalid" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267 msgid "Contact blocking temporarily unavailable" msgstr "Blocarea contactelor nu este disponibilă temporar" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269 msgid "Contact blocking unavailable" msgstr "Blocarea contactelor nu este disponibilă" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271 msgid "Permission Denied" msgstr "Permisiune respinsă" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:432 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275 msgid "Could not block contact" msgstr "Nu s-a putut bloca contactul" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:701 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622 msgid "Edit Blocked Contacts" msgstr "Editează contactele blocate" +#. Account and Identifier +#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:506 +#: ../libempathy-gtk/empathy-contact-widget.ui.h:2 +#: ../libempathy-gtk/empathy-individual-widget.c:1475 +#: ../src/empathy-chatrooms-window.ui.h:1 +#: ../src/empathy-new-chatroom-dialog.ui.h:1 +msgid "Account:" +msgstr "Cont:" + +#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:2 +msgid "Blocked Contacts" +msgstr "Contacte blocate" + +#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:3 +#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1 +#: ../src/empathy-accounts-dialog.ui.h:5 +#: ../src/empathy-chatrooms-window.ui.h:3 +msgid "Remove" +msgstr "Elimină" + #. Copy Link Address menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:320 -#: ../libempathy-gtk/empathy-theme-adium.c:794 +#: ../libempathy-gtk/empathy-chat-text-view.c:322 +#: ../libempathy-gtk/empathy-webkit-utils.c:277 msgid "_Copy Link Address" msgstr "_Copiază adresa legăturii" #. Open Link menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:327 -#: ../libempathy-gtk/empathy-theme-adium.c:801 +#: ../libempathy-gtk/empathy-chat-text-view.c:329 +#: ../libempathy-gtk/empathy-webkit-utils.c:284 msgid "_Open Link" msgstr "_Deschide legătura" #. Translators: timestamp displayed between conversations in #. * chat windows (strftime format string) -#: ../libempathy-gtk/empathy-chat-text-view.c:420 +#: ../libempathy-gtk/empathy-chat-text-view.c:417 msgid "%A %B %d %Y" -msgstr "%A, %d %B %Y" +msgstr "%A %d %B %Y" -#: ../libempathy-gtk/empathy-contact-dialogs.c:299 +#: ../libempathy-gtk/empathy-contact-dialogs.c:287 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247 msgid "Edit Contact Information" msgstr "Modifică informațiile contactului" -#: ../libempathy-gtk/empathy-contact-dialogs.c:350 +#: ../libempathy-gtk/empathy-contact-dialogs.c:338 msgid "Personal Information" msgstr "Informații personale" -#: ../libempathy-gtk/empathy-contact-dialogs.c:459 +#: ../libempathy-gtk/empathy-contact-dialogs.c:439 #: ../libempathy-gtk/empathy-individual-dialogs.c:119 msgid "New Contact" msgstr "Contact nou" -#: ../libempathy-gtk/empathy-contact-dialogs.c:532 +#: ../libempathy-gtk/empathy-contact-dialogs.c:508 #: ../libempathy-gtk/empathy-individual-dialogs.c:198 #, c-format msgid "Block %s?" msgstr "Blocați %s?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:537 -#: ../libempathy-gtk/empathy-individual-dialogs.c:239 +#: ../libempathy-gtk/empathy-contact-dialogs.c:513 +#: ../libempathy-gtk/empathy-individual-dialogs.c:253 #, c-format msgid "Are you sure you want to block '%s' from contacting you again?" msgstr "Sigur doriți să blocați „%s”? Nu vă va mai putea contacta de acum." -#: ../libempathy-gtk/empathy-contact-dialogs.c:542 -#: ../libempathy-gtk/empathy-individual-dialogs.c:261 +#: ../libempathy-gtk/empathy-contact-dialogs.c:518 +#: ../libempathy-gtk/empathy-individual-dialogs.c:275 msgid "_Block" msgstr "_Blochează" -#: ../libempathy-gtk/empathy-contact-dialogs.c:552 -#: ../libempathy-gtk/empathy-individual-dialogs.c:270 +#: ../libempathy-gtk/empathy-contact-dialogs.c:536 +#: ../libempathy-gtk/empathy-individual-dialogs.c:284 msgid "_Report this contact as abusive" msgid_plural "_Report these contacts as abusive" msgstr[0] "_Raportează acest contact ca abuziv" @@ -1619,327 +1792,337 @@ msgstr "Cerere de abonare" msgid "_Block User" msgstr "_Blochează utilizatorul" -#: ../libempathy-gtk/empathy-contact-list-store.h:71 -msgid "Ungrouped" -msgstr "Negrupate" - -#: ../libempathy-gtk/empathy-contact-list-store.h:72 -msgid "Favorite People" -msgstr "Persoane favorite" - -#: ../libempathy-gtk/empathy-contact-list-view.c:2012 -#: ../libempathy-gtk/empathy-individual-view.c:2337 -#, c-format -msgid "Do you really want to remove the group '%s'?" -msgstr "Sigur doriți să eliminați grupul „%s”?" - -# LG: aici e titlul unui dialog, deși nu pare :) -#: ../libempathy-gtk/empathy-contact-list-view.c:2014 -#: ../libempathy-gtk/empathy-individual-view.c:2340 -msgid "Removing group" -msgstr "Eliminare grup" - -#. Remove -#: ../libempathy-gtk/empathy-contact-list-view.c:2063 -#: ../libempathy-gtk/empathy-contact-list-view.c:2140 -#: ../libempathy-gtk/empathy-individual-view.c:2395 -#: ../libempathy-gtk/empathy-individual-view.c:2563 -#: ../src/empathy-accounts-dialog.ui.h:7 -msgid "_Remove" -msgstr "_Elimină" - -#: ../libempathy-gtk/empathy-contact-list-view.c:2093 -#: ../libempathy-gtk/empathy-individual-view.c:2448 -#, c-format -msgid "Do you really want to remove the contact '%s'?" -msgstr "Sigur doriți să eliminați contactul „%s”?" - -# LG: aici e vorba de titlul unui dialog -#: ../libempathy-gtk/empathy-contact-list-view.c:2095 -#: ../libempathy-gtk/empathy-individual-view.c:2469 -msgid "Removing contact" -msgstr "Eliminare contact" - -#: ../libempathy-gtk/empathy-contact-menu.c:219 -#: ../src/empathy-main-window.ui.h:13 +#: ../libempathy-gtk/empathy-contact-menu.c:212 +#: ../libempathy-gtk/empathy-individual-menu.c:1558 +#: ../src/empathy-main-window-menubar.ui.h:14 msgid "_Add Contact…" -msgstr "_Adaugă contact…" +msgstr "_Adaugă un contact…" -#: ../libempathy-gtk/empathy-contact-menu.c:296 +#: ../libempathy-gtk/empathy-contact-menu.c:287 msgid "_Block Contact" -msgstr "_Blochează contactul" +msgstr "_Blochează un contact" -#: ../libempathy-gtk/empathy-contact-menu.c:325 -#: ../libempathy-gtk/empathy-individual-menu.c:517 -#: ../src/empathy-main-window.ui.h:15 +#. add chat button +#: ../libempathy-gtk/empathy-contact-menu.c:316 +#: ../libempathy-gtk/empathy-individual-menu.c:789 +#: ../libempathy-gtk/empathy-new-message-dialog.c:320 +#: ../src/empathy-main-window-menubar.ui.h:16 msgid "_Chat" msgstr "Dis_cuție" -#: ../libempathy-gtk/empathy-contact-menu.c:356 -#: ../libempathy-gtk/empathy-individual-menu.c:560 +#: ../libempathy-gtk/empathy-contact-menu.c:348 +#: ../libempathy-gtk/empathy-individual-menu.c:881 msgctxt "menu item" msgid "_Audio Call" msgstr "Apel _audio" -#: ../libempathy-gtk/empathy-contact-menu.c:387 -#: ../libempathy-gtk/empathy-individual-menu.c:602 +#: ../libempathy-gtk/empathy-contact-menu.c:381 +#: ../libempathy-gtk/empathy-individual-menu.c:926 msgctxt "menu item" msgid "_Video Call" msgstr "Apel _video" -#: ../libempathy-gtk/empathy-contact-menu.c:433 -#: ../libempathy-gtk/empathy-individual-menu.c:645 -#: ../src/empathy-main-window.ui.h:26 +#: ../libempathy-gtk/empathy-contact-menu.c:427 +#: ../libempathy-gtk/empathy-individual-menu.c:979 +#: ../src/empathy-main-window-menubar.ui.h:27 msgid "_Previous Conversations" msgstr "Conversații an_terioare" -#: ../libempathy-gtk/empathy-contact-menu.c:455 -#: ../libempathy-gtk/empathy-individual-menu.c:686 +#: ../libempathy-gtk/empathy-contact-menu.c:449 +#: ../libempathy-gtk/empathy-individual-menu.c:1020 msgid "Send File" msgstr "Trimite un fișier" -#: ../libempathy-gtk/empathy-contact-menu.c:478 -#: ../libempathy-gtk/empathy-individual-menu.c:728 +#: ../libempathy-gtk/empathy-contact-menu.c:472 +#: ../libempathy-gtk/empathy-individual-menu.c:1062 msgid "Share My Desktop" msgstr "Partajează desktopul" -#: ../libempathy-gtk/empathy-contact-menu.c:518 -#: ../libempathy-gtk/empathy-contact-widget.c:1763 -#: ../libempathy-gtk/empathy-individual-menu.c:763 -#: ../libempathy-gtk/empathy-individual-widget.c:1372 -msgid "Favorite" -msgstr "Favorite" - -#: ../libempathy-gtk/empathy-contact-menu.c:547 -#: ../libempathy-gtk/empathy-individual-menu.c:791 +#: ../libempathy-gtk/empathy-contact-menu.c:501 +#: ../libempathy-gtk/empathy-individual-menu.c:1125 msgid "Infor_mation" msgstr "Infor_mații" -#: ../libempathy-gtk/empathy-contact-menu.c:593 +#: ../libempathy-gtk/empathy-contact-menu.c:547 msgctxt "Edit contact (contextual menu)" msgid "_Edit" msgstr "_Editare" -#: ../libempathy-gtk/empathy-contact-menu.c:647 -#: ../libempathy-gtk/empathy-individual-menu.c:972 -#: ../src/empathy-chat-window.c:920 +#: ../libempathy-gtk/empathy-contact-menu.c:601 +#: ../libempathy-gtk/empathy-individual-menu.c:1316 +#: ../src/empathy-chat-window.c:1011 msgid "Inviting you to this room" msgstr "Sunteți invitat în acest canal de discuții" -#: ../libempathy-gtk/empathy-contact-menu.c:678 -#: ../libempathy-gtk/empathy-individual-menu.c:1019 +#: ../libempathy-gtk/empathy-contact-menu.c:632 +#: ../libempathy-gtk/empathy-individual-menu.c:1362 msgid "_Invite to Chat Room" msgstr "_Invită într-un canal de discuții" #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:510 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:499 msgid "Search contacts" msgstr "Caută contacte" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:540 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:529 msgid "Search: " msgstr "Caută:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:598 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:587 msgid "_Add Contact" msgstr "_Adaugă contact" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:616 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:605 msgid "No contacts found" msgstr "Nu s-a găsit niciun contact" -#: ../libempathy-gtk/empathy-contact-selector.c:129 -msgid "Select a contact" -msgstr "Alege un contact" - -#: ../libempathy-gtk/empathy-contact-widget.c:295 -#: ../libempathy-gtk/empathy-individual-widget.c:153 -msgid "Full name:" -msgstr "Nume întreg:" - -#: ../libempathy-gtk/empathy-contact-widget.c:296 -#: ../libempathy-gtk/empathy-individual-widget.c:154 -msgid "Phone number:" -msgstr "Numărul de telefon:" - -#: ../libempathy-gtk/empathy-contact-widget.c:297 -#: ../libempathy-gtk/empathy-individual-widget.c:155 -msgid "E-mail address:" -msgstr "Adresă email:" - -#: ../libempathy-gtk/empathy-contact-widget.c:298 -#: ../libempathy-gtk/empathy-individual-widget.c:156 -msgid "Website:" -msgstr "Pagină web:" - -#: ../libempathy-gtk/empathy-contact-widget.c:299 -#: ../libempathy-gtk/empathy-individual-widget.c:157 -msgid "Birthday:" -msgstr "Zi de naștere:" - -#: ../libempathy-gtk/empathy-contact-widget.c:762 -#: ../libempathy-gtk/empathy-individual-widget.c:488 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:621 +msgid "Your message introducing yourself:" +msgstr "Mesajul dumneavoastră de introducere:" + +#: ../libempathy-gtk/empathy-contact-search-dialog.c:629 +msgid "Please let me see when you're online. Thanks!" +msgstr "Te rog permite-mi să văd când ești conectat. Mulțumesc!" + +#: ../libempathy-gtk/empathy-contact-widget.c:571 +#: ../libempathy-gtk/empathy-individual-widget.c:304 +msgid "Channels:" +msgstr "Canale:" + +#: ../libempathy-gtk/empathy-contact-widget.c:751 +#: ../libempathy-gtk/empathy-individual-widget.c:455 msgid "Country ISO Code:" msgstr "Codul ISO al țării:" -#: ../libempathy-gtk/empathy-contact-widget.c:764 -#: ../libempathy-gtk/empathy-individual-widget.c:490 +#: ../libempathy-gtk/empathy-contact-widget.c:753 +#: ../libempathy-gtk/empathy-individual-widget.c:457 msgid "Country:" msgstr "Țară:" -#: ../libempathy-gtk/empathy-contact-widget.c:766 -#: ../libempathy-gtk/empathy-individual-widget.c:492 +#: ../libempathy-gtk/empathy-contact-widget.c:755 +#: ../libempathy-gtk/empathy-individual-widget.c:459 msgid "State:" msgstr "Stat:" -#: ../libempathy-gtk/empathy-contact-widget.c:768 -#: ../libempathy-gtk/empathy-individual-widget.c:494 +#: ../libempathy-gtk/empathy-contact-widget.c:757 +#: ../libempathy-gtk/empathy-individual-widget.c:461 msgid "City:" msgstr "Oraș:" -#: ../libempathy-gtk/empathy-contact-widget.c:770 -#: ../libempathy-gtk/empathy-individual-widget.c:496 +#: ../libempathy-gtk/empathy-contact-widget.c:759 +#: ../libempathy-gtk/empathy-individual-widget.c:463 msgid "Area:" msgstr "Zonă:" -#: ../libempathy-gtk/empathy-contact-widget.c:772 -#: ../libempathy-gtk/empathy-individual-widget.c:498 +#: ../libempathy-gtk/empathy-contact-widget.c:761 +#: ../libempathy-gtk/empathy-individual-widget.c:465 msgid "Postal Code:" msgstr "Cod poștal:" -#: ../libempathy-gtk/empathy-contact-widget.c:774 -#: ../libempathy-gtk/empathy-individual-widget.c:500 +#: ../libempathy-gtk/empathy-contact-widget.c:763 +#: ../libempathy-gtk/empathy-individual-widget.c:467 msgid "Street:" msgstr "Stradă:" -#: ../libempathy-gtk/empathy-contact-widget.c:776 -#: ../libempathy-gtk/empathy-individual-widget.c:502 +#: ../libempathy-gtk/empathy-contact-widget.c:765 +#: ../libempathy-gtk/empathy-individual-widget.c:469 msgid "Building:" msgstr "Clădire:" -#: ../libempathy-gtk/empathy-contact-widget.c:778 -#: ../libempathy-gtk/empathy-individual-widget.c:504 +#: ../libempathy-gtk/empathy-contact-widget.c:767 +#: ../libempathy-gtk/empathy-individual-widget.c:471 msgid "Floor:" msgstr "Etaj:" -#: ../libempathy-gtk/empathy-contact-widget.c:780 -#: ../libempathy-gtk/empathy-individual-widget.c:506 +#: ../libempathy-gtk/empathy-contact-widget.c:769 +#: ../libempathy-gtk/empathy-individual-widget.c:473 msgid "Room:" msgstr "Canal de discuții:" -#: ../libempathy-gtk/empathy-contact-widget.c:782 -#: ../libempathy-gtk/empathy-individual-widget.c:508 +#: ../libempathy-gtk/empathy-contact-widget.c:771 +#: ../libempathy-gtk/empathy-individual-widget.c:475 msgid "Text:" msgstr "Text:" -#: ../libempathy-gtk/empathy-contact-widget.c:784 -#: ../libempathy-gtk/empathy-individual-widget.c:510 +#: ../libempathy-gtk/empathy-contact-widget.c:773 +#: ../libempathy-gtk/empathy-individual-widget.c:477 msgid "Description:" msgstr "Descriere:" -#: ../libempathy-gtk/empathy-contact-widget.c:786 -#: ../libempathy-gtk/empathy-individual-widget.c:512 +#: ../libempathy-gtk/empathy-contact-widget.c:775 +#: ../libempathy-gtk/empathy-individual-widget.c:479 msgid "URI:" msgstr "URI:" -#: ../libempathy-gtk/empathy-contact-widget.c:788 -#: ../libempathy-gtk/empathy-individual-widget.c:514 +#: ../libempathy-gtk/empathy-contact-widget.c:777 +#: ../libempathy-gtk/empathy-individual-widget.c:481 msgid "Accuracy Level:" msgstr "Nivel acuratețe:" -#: ../libempathy-gtk/empathy-contact-widget.c:790 -#: ../libempathy-gtk/empathy-individual-widget.c:516 +#: ../libempathy-gtk/empathy-contact-widget.c:779 +#: ../libempathy-gtk/empathy-individual-widget.c:483 msgid "Error:" msgstr "Eroare:" -#: ../libempathy-gtk/empathy-contact-widget.c:792 -#: ../libempathy-gtk/empathy-individual-widget.c:518 +#: ../libempathy-gtk/empathy-contact-widget.c:781 +#: ../libempathy-gtk/empathy-individual-widget.c:485 msgid "Vertical Error (meters):" msgstr "Eroare verticală (metri):" -#: ../libempathy-gtk/empathy-contact-widget.c:794 -#: ../libempathy-gtk/empathy-individual-widget.c:520 +#: ../libempathy-gtk/empathy-contact-widget.c:783 +#: ../libempathy-gtk/empathy-individual-widget.c:487 msgid "Horizontal Error (meters):" msgstr "Eroare orizontală (metri):" -#: ../libempathy-gtk/empathy-contact-widget.c:796 -#: ../libempathy-gtk/empathy-individual-widget.c:522 +#: ../libempathy-gtk/empathy-contact-widget.c:785 +#: ../libempathy-gtk/empathy-individual-widget.c:489 msgid "Speed:" msgstr "Viteză:" -#: ../libempathy-gtk/empathy-contact-widget.c:798 -#: ../libempathy-gtk/empathy-individual-widget.c:524 +#: ../libempathy-gtk/empathy-contact-widget.c:787 +#: ../libempathy-gtk/empathy-individual-widget.c:491 msgid "Bearing:" msgstr "Orientare:" -#: ../libempathy-gtk/empathy-contact-widget.c:800 -#: ../libempathy-gtk/empathy-individual-widget.c:526 +#: ../libempathy-gtk/empathy-contact-widget.c:789 +#: ../libempathy-gtk/empathy-individual-widget.c:493 msgid "Climb Speed:" msgstr "Viteză de urcare:" -#: ../libempathy-gtk/empathy-contact-widget.c:802 -#: ../libempathy-gtk/empathy-individual-widget.c:528 +#: ../libempathy-gtk/empathy-contact-widget.c:791 +#: ../libempathy-gtk/empathy-individual-widget.c:495 msgid "Last Updated on:" msgstr "Actualizat ultima dată pe:" -#: ../libempathy-gtk/empathy-contact-widget.c:804 -#: ../libempathy-gtk/empathy-individual-widget.c:530 +#: ../libempathy-gtk/empathy-contact-widget.c:793 +#: ../libempathy-gtk/empathy-individual-widget.c:497 msgid "Longitude:" msgstr "Longitudine:" -#: ../libempathy-gtk/empathy-contact-widget.c:806 -#: ../libempathy-gtk/empathy-individual-widget.c:532 +#: ../libempathy-gtk/empathy-contact-widget.c:795 +#: ../libempathy-gtk/empathy-individual-widget.c:499 msgid "Latitude:" msgstr "Latitudine:" -#: ../libempathy-gtk/empathy-contact-widget.c:808 -#: ../libempathy-gtk/empathy-individual-widget.c:534 +#: ../libempathy-gtk/empathy-contact-widget.c:797 +#: ../libempathy-gtk/empathy-individual-widget.c:501 msgid "Altitude:" msgstr "Altitudine:" -#: ../libempathy-gtk/empathy-contact-widget.c:871 -#: ../libempathy-gtk/empathy-contact-widget.c:888 -#: ../libempathy-gtk/empathy-individual-widget.c:616 -#: ../libempathy-gtk/empathy-individual-widget.c:633 -#: ../src/empathy-preferences.ui.h:12 +#: ../libempathy-gtk/empathy-contact-widget.c:850 +#: ../libempathy-gtk/empathy-contact-widget.c:865 +#: ../libempathy-gtk/empathy-individual-widget.c:593 +#: ../libempathy-gtk/empathy-individual-widget.c:608 +#: ../src/empathy-preferences.ui.h:15 msgid "Location" msgstr "Locație" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:890 -#: ../libempathy-gtk/empathy-individual-widget.c:635 +#: ../libempathy-gtk/empathy-contact-widget.c:867 +#: ../libempathy-gtk/empathy-individual-widget.c:610 #, c-format msgid "%s, %s" msgstr "%s, %s" -#: ../libempathy-gtk/empathy-contact-widget.c:942 -#: ../libempathy-gtk/empathy-individual-widget.c:684 +#: ../libempathy-gtk/empathy-contact-widget.c:919 +#: ../libempathy-gtk/empathy-individual-widget.c:659 msgid "%B %e, %Y at %R UTC" -msgstr "%e %B %Y la ora %R UTC" +msgstr "%e %B %Y la %R UTC" -#: ../libempathy-gtk/empathy-contact-widget.c:1024 -#: ../libempathy-gtk/empathy-individual-widget.c:919 +#: ../libempathy-gtk/empathy-contact-widget.c:1001 +#: ../libempathy-gtk/empathy-individual-widget.c:901 msgid "Save Avatar" -msgstr "Salvează avatar" +msgstr "Salvează avatarul" -#: ../libempathy-gtk/empathy-contact-widget.c:1080 -#: ../libempathy-gtk/empathy-individual-widget.c:977 +#: ../libempathy-gtk/empathy-contact-widget.c:1057 +#: ../libempathy-gtk/empathy-individual-widget.c:959 msgid "Unable to save avatar" msgstr "Nu se poate salva avatarul" +#: ../libempathy-gtk/empathy-contact-widget.c:1745 +#: ../libempathy-gtk/empathy-individual-menu.c:1097 +#: ../libempathy-gtk/empathy-individual-widget.c:1358 +msgid "Favorite" +msgstr "Favorite" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:104 +msgid "Full name" +msgstr "Nume întreg" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:105 +msgid "Phone number" +msgstr "Număr de telefon:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:106 +msgid "E-mail address" +msgstr "Adresă de email" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:107 +msgid "Website" +msgstr "Pagină web" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:108 +msgid "Birthday" +msgstr "Zi de naștere" + +#. Note to translators: this is the caption for a string of the form "5 +#. * minutes ago", and refers to the time since the contact last interacted +#. * with their IM client. +#: ../libempathy-gtk/empathy-contactinfo-utils.c:113 +msgid "Last seen:" +msgstr "Văzut ultima dată pe:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:115 +msgid "Connected from:" +msgstr "Conectat din:" + +#. FIXME: once Idle implements SimplePresence using this information, we can +#. * and should bin this. +#: ../libempathy-gtk/empathy-contactinfo-utils.c:119 +msgid "Away message:" +msgstr "Mesaj de ieșire:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:132 +msgid "work" +msgstr "muncă" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:133 +msgid "home" +msgstr "acasă" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:134 +msgid "mobile" +msgstr "telefon mobil" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:135 +msgid "voice" +msgstr "voce" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:136 +msgid "preferred" +msgstr "preferințe" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:137 +msgid "postal" +msgstr "poștal" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:138 +msgid "parcel" +msgstr "pachet" + #: ../libempathy-gtk/empathy-contact-widget.ui.h:1 msgid "Location at (date)\t" msgstr "Locație la (data)\t" #. Alias #: ../libempathy-gtk/empathy-contact-widget.ui.h:3 -#: ../libempathy-gtk/empathy-individual-widget.c:1307 +#: ../libempathy-gtk/empathy-individual-widget.c:1294 msgid "Alias:" msgstr "Alias:" #: ../libempathy-gtk/empathy-contact-widget.ui.h:4 msgid "Client Information" -msgstr "Informații client" +msgstr "Informații despre client" #: ../libempathy-gtk/empathy-contact-widget.ui.h:5 msgid "Client:" @@ -1948,12 +2131,12 @@ msgstr "Client:" #: ../libempathy-gtk/empathy-contact-widget.ui.h:6 #: ../libempathy-gtk/empathy-individual-widget.ui.h:2 msgid "Contact Details" -msgstr "Detalii contact" +msgstr "Detalii despre contact" #. Identifier to connect to Instant Messaging network #. Translators: Identifier to connect to Instant Messaging network #: ../libempathy-gtk/empathy-contact-widget.ui.h:8 -#: ../libempathy-gtk/empathy-individual-widget.c:1511 +#: ../libempathy-gtk/empathy-individual-widget.c:1503 msgid "Identifier:" msgstr "Identificator:" @@ -1970,11 +2153,11 @@ msgstr "SO:" msgid "Version:" msgstr "Versiune:" -#: ../libempathy-gtk/empathy-groups-widget.c:332 +#: ../libempathy-gtk/empathy-groups-widget.c:333 msgid "Groups" msgstr "Grupuri" -#: ../libempathy-gtk/empathy-groups-widget.c:344 +#: ../libempathy-gtk/empathy-groups-widget.c:345 msgid "" "Select the groups you want this contact to appear in. Note that you can " "select more than one group or no groups." @@ -1982,28 +2165,28 @@ msgstr "" "Selectați grupurile în care doriți să apară acest contact. Rețineți că " "puteți selecta mai mult de un grup sau niciun grup." -#: ../libempathy-gtk/empathy-groups-widget.c:363 +#: ../libempathy-gtk/empathy-groups-widget.c:364 msgid "_Add Group" -msgstr "_Adaugă grup" +msgstr "_Adaugă un grup" -#: ../libempathy-gtk/empathy-groups-widget.c:398 +#: ../libempathy-gtk/empathy-groups-widget.c:399 msgctxt "verb in a column header displaying group names" msgid "Select" msgstr "Selectează" -#: ../libempathy-gtk/empathy-groups-widget.c:408 -#: ../src/empathy-main-window.c:1436 +#: ../libempathy-gtk/empathy-groups-widget.c:409 +#: ../src/empathy-main-window.c:1952 msgid "Group" msgstr "Grup" -#: ../libempathy-gtk/empathy-individual-dialogs.c:244 +#: ../libempathy-gtk/empathy-individual-dialogs.c:258 msgid "The following identity will be blocked:" msgid_plural "The following identities will be blocked:" msgstr[0] "Identitatea următoare va fi blocată:" msgstr[1] "Identitățile următoare vor fi blocate:" msgstr[2] "Identitățile următoare vor fi blocate:" -#: ../libempathy-gtk/empathy-individual-dialogs.c:251 +#: ../libempathy-gtk/empathy-individual-dialogs.c:265 msgid "The following identity can not be blocked:" msgid_plural "The following identities can not be blocked:" msgstr[0] "Identitatea următoare nu poate fi blocată:" @@ -2011,19 +2194,19 @@ msgstr[1] "Identitățile următoare nu pot fi blocate:" msgstr[2] "Identitățile următoare nu pot fi blocate:" #. Translators: the heading at the top of the Information dialogue -#: ../libempathy-gtk/empathy-individual-information-dialog.c:281 +#: ../libempathy-gtk/empathy-individual-information-dialog.c:288 msgid "Linked Contacts" msgstr "Contacte îmbinate" -#: ../libempathy-gtk/empathy-individual-linker.c:354 +#: ../libempathy-gtk/empathy-individual-linker.c:372 msgid "Select contacts to link" msgstr "Selectați contacte de îmbinat" -#: ../libempathy-gtk/empathy-individual-linker.c:428 +#: ../libempathy-gtk/empathy-individual-linker.c:447 msgid "New contact preview" msgstr "Previzualizare contact nou" -#: ../libempathy-gtk/empathy-individual-linker.c:472 +#: ../libempathy-gtk/empathy-individual-linker.c:491 msgid "Contacts selected in the list on the left will be linked together." msgstr "" "Contactele selectate în lista din partea stângă vor fi grupate împreună." @@ -2031,28 +2214,80 @@ msgstr "" #. Translators: this is used in the context menu for a contact. The first #. * parameter is a contact ID (e.g. foo@jabber.org) and the second is one #. * of the user's account IDs (e.g. me@hotmail.com). -#: ../libempathy-gtk/empathy-individual-menu.c:131 +#: ../libempathy-gtk/empathy-individual-menu.c:148 #, c-format msgid "%s (%s)" msgstr "%s (%s)" -#: ../libempathy-gtk/empathy-individual-menu.c:839 +#: ../libempathy-gtk/empathy-individual-menu.c:312 +msgid "Select account to use to place the call" +msgstr "Selectați contul pe care doriți să îl utilizați pentru a apela" + +#. translators: Call is a noun. This string is used in the window +#. * title +#: ../libempathy-gtk/empathy-individual-menu.c:316 +#: ../libempathy-gtk/empathy-log-window.ui.h:2 +#: ../src/empathy-streamed-media-window.c:1288 +#: ../src/empathy-call-window.ui.h:2 +msgid "Call" +msgstr "Apel" + +#: ../libempathy-gtk/empathy-individual-menu.c:381 +msgid "Mobile" +msgstr "Telefon mobil" + +#: ../libempathy-gtk/empathy-individual-menu.c:383 +msgid "Work" +msgstr "Muncă" + +#: ../libempathy-gtk/empathy-individual-menu.c:385 +msgid "HOME" +msgstr "ACASĂ" + +#. add SMS button +#: ../libempathy-gtk/empathy-individual-menu.c:836 +#: ../libempathy-gtk/empathy-new-message-dialog.c:314 +msgid "_SMS" +msgstr "_SMS" + +#: ../libempathy-gtk/empathy-individual-menu.c:1174 msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "_Editare" #. Translators: this is a verb meaning "to connect two contacts together #. * to form a meta-contact". -#: ../libempathy-gtk/empathy-individual-menu.c:865 +#: ../libempathy-gtk/empathy-individual-menu.c:1200 msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "Îm_bină contactele…" -#: ../libempathy-gtk/empathy-individual-view.c:2302 +#: ../libempathy-gtk/empathy-individual-view.c:2362 msgid "Delete and _Block" msgstr "Șterge și _blochează" -#: ../libempathy-gtk/empathy-individual-view.c:2457 +#: ../libempathy-gtk/empathy-individual-view.c:2397 +#, c-format +msgid "Do you really want to remove the group '%s'?" +msgstr "Sigur doriți să eliminați grupul „%s”?" + +# LG: aici e titlul unui dialog, deși nu pare :) +#: ../libempathy-gtk/empathy-individual-view.c:2400 +msgid "Removing group" +msgstr "Eliminare grup" + +#. Remove +#: ../libempathy-gtk/empathy-individual-view.c:2455 +#: ../libempathy-gtk/empathy-individual-view.c:2672 +msgid "_Remove" +msgstr "_Elimină" + +#: ../libempathy-gtk/empathy-individual-view.c:2532 +#, c-format +msgid "Do you really want to remove the contact '%s'?" +msgstr "Sigur doriți să eliminați contactul „%s”?" + +#: ../libempathy-gtk/empathy-individual-view.c:2541 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " @@ -2061,7 +2296,12 @@ msgstr "" "Sigur doriți să eliminați contactul îmbinat „%s”? Rețineți că acest lucru va " "elimina toate contactele care alcătuiesc acest contact îmbinat." -#: ../libempathy-gtk/empathy-individual-widget.c:1652 +# LG: aici e vorba de titlul unui dialog +#: ../libempathy-gtk/empathy-individual-view.c:2553 +msgid "Removing contact" +msgstr "Eliminare contact" + +#: ../libempathy-gtk/empathy-individual-widget.c:1642 #, c-format msgid "Linked contact containing %u contact" msgid_plural "Linked contacts containing %u contacts" @@ -2145,69 +2385,253 @@ msgctxt "Unlink individual (button)" msgid "_Unlink" msgstr "_Dezbină" -#: ../libempathy-gtk/empathy-log-window.c:664 -msgid "Date" -msgstr "Dată" +#: ../libempathy-gtk/empathy-log-window.c:621 +msgid "History" +msgstr "Istoric" -#. Tab Label -#: ../libempathy-gtk/empathy-log-window.ui.h:2 -msgid "Conversations" -msgstr "Conversații" +#: ../libempathy-gtk/empathy-log-window.c:676 +msgid "Show" +msgstr "Arată" + +#: ../libempathy-gtk/empathy-log-window.c:698 +msgid "Search" +msgstr "Caută" + +#: ../libempathy-gtk/empathy-log-window.c:1147 +#, c-format +msgid "Chat in %s" +msgstr "Conversație în %s" + +#: ../libempathy-gtk/empathy-log-window.c:1149 +#, c-format +msgid "Chat with %s" +msgstr "Conversație cu %s" + +#: ../libempathy-gtk/empathy-log-window.c:1199 +#: ../libempathy-gtk/empathy-log-window.c:1346 +msgctxt "A date with the time" +msgid "%A, %e %B %Y %X" +msgstr "%A, %e %B %Y %X" + +#. Translators: this is an emote: '* Danielle waves' +#: ../libempathy-gtk/empathy-log-window.c:1288 +#, c-format +msgid "* %s %s" +msgstr "* %s %s" + +#. Translators: this is a message: 'Danielle: hello' +#. * The string in bold is the sender's name +#: ../libempathy-gtk/empathy-log-window.c:1294 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: ../libempathy-gtk/empathy-log-window.c:1370 +#, c-format +msgid "%s second" +msgid_plural "%s seconds" +msgstr[0] "o secundă" +msgstr[1] "%s secunde" +msgstr[2] "%s de secunde" + +#: ../libempathy-gtk/empathy-log-window.c:1377 +#, c-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "un minut" +msgstr[1] "%s minute" +msgstr[2] "%s de minute" + +#: ../libempathy-gtk/empathy-log-window.c:1385 +#, c-format +msgid "Call took %s, ended at %s" +msgstr "Apelul a durat %s și s-a terminat la %s" + +#: ../libempathy-gtk/empathy-log-window.c:1719 +msgid "Today" +msgstr "Azi" + +#: ../libempathy-gtk/empathy-log-window.c:1723 +msgid "Yesterday" +msgstr "Ieri" + +#. Translators: A date such as '23 May 2010' (strftime format) +#: ../libempathy-gtk/empathy-log-window.c:1738 +msgid "%e %B %Y" +msgstr "%e %B %Y" + +#: ../libempathy-gtk/empathy-log-window.c:1826 +#: ../libempathy-gtk/empathy-log-window.c:3458 +msgid "Anytime" +msgstr "Oricând" + +#: ../libempathy-gtk/empathy-log-window.c:1915 +#: ../libempathy-gtk/empathy-log-window.c:2371 +msgid "Anyone" +msgstr "Oricine" + +#: ../libempathy-gtk/empathy-log-window.c:2684 +msgid "Who" +msgstr "Cine" + +#: ../libempathy-gtk/empathy-log-window.c:2893 +msgid "When" +msgstr "Când" + +#: ../libempathy-gtk/empathy-log-window.c:3009 +msgid "Anything" +msgstr "Orice" + +#: ../libempathy-gtk/empathy-log-window.c:3011 +msgid "Text chats" +msgstr "Conversații text" + +#: ../libempathy-gtk/empathy-log-window.c:3013 +#: ../src/empathy-preferences.ui.h:4 +msgid "Calls" +msgstr "Apeluri" + +#: ../libempathy-gtk/empathy-log-window.c:3018 +msgid "Incoming calls" +msgstr "Apeluri primite" + +#: ../libempathy-gtk/empathy-log-window.c:3019 +msgid "Outgoing calls" +msgstr "Apeluri expediate" + +#: ../libempathy-gtk/empathy-log-window.c:3020 +msgid "Missed calls" +msgstr "Apeluri pierdute" + +#: ../libempathy-gtk/empathy-log-window.c:3042 +msgid "What" +msgstr "Ce" + +#: ../libempathy-gtk/empathy-log-window.c:3751 +msgid "Are you sure you want to delete all logs of previous conversations?" +msgstr "Sigur doriți să ștergeți conversațiile anterioare?" + +#: ../libempathy-gtk/empathy-log-window.c:3755 +msgid "Clear All" +msgstr "Șterge tot" + +#: ../libempathy-gtk/empathy-log-window.c:3762 +msgid "Delete from:" +msgstr "Șters din:" + +#: ../libempathy-gtk/empathy-log-window.ui.h:1 +msgid "Loading..." +msgstr "Se încarcă..." #: ../libempathy-gtk/empathy-log-window.ui.h:3 -#: ../libempathy-gtk/empathy-search-bar.ui.h:1 -msgid "Find Next" -msgstr "Caută următorul" +#: ../src/empathy-chat-window.ui.h:3 +msgid "Chat" +msgstr "Discută" #: ../libempathy-gtk/empathy-log-window.ui.h:4 -#: ../libempathy-gtk/empathy-search-bar.ui.h:2 -msgid "Find Previous" -msgstr "Caută precedentul" +msgid "Delete All History..." +msgstr "Șterge tot istoricul..." #: ../libempathy-gtk/empathy-log-window.ui.h:5 -msgid "Previous Conversations" -msgstr "Conversații anterioare" +msgid "Profile" +msgstr "Profil" + +#: ../libempathy-gtk/empathy-log-window.ui.h:6 +#: ../src/empathy-call-window.ui.h:22 +#: ../src/empathy-streamed-media-window.ui.h:20 +msgid "Video" +msgstr "Video" -#. Tab Label #: ../libempathy-gtk/empathy-log-window.ui.h:7 -msgid "Search" -msgstr "Caută" +#: ../src/empathy-call-window.ui.h:28 ../src/empathy-chat-window.ui.h:12 +#: ../src/empathy-main-window-menubar.ui.h:20 +msgid "_Edit" +msgstr "_Editare" + +#: ../libempathy-gtk/empathy-log-window.ui.h:8 +msgid "_File" +msgstr "_Fișier" -#. Searching *for* something #: ../libempathy-gtk/empathy-log-window.ui.h:9 -msgid "_For:" -msgstr "_După:" +msgid "page 2" +msgstr "pagina 2" -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2 -msgid "Contact ID:" -msgstr "ID contact:" +#: ../libempathy-gtk/empathy-new-message-dialog.c:84 +msgid "The contact is offline" +msgstr "Contactul selectat este deconectat" -#. add chat button -#: ../libempathy-gtk/empathy-new-message-dialog.c:171 -msgid "C_hat" -msgstr "_Discută" +#: ../libempathy-gtk/empathy-new-message-dialog.c:86 +msgid "The specified contact is either invalid or unknown" +msgstr "Contactul specificat este invalid sau necunoscut" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:88 +msgid "The contact does not support this kind of conversation" +msgstr "Această conversație nu are un subiect definit" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:90 +msgid "The requested functionality is not implemented for this protocol" +msgstr "Funcționalitatea solicitată nu este implementată pentru acest protocol" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:96 +msgid "Could not start a conversation with the given contact" +msgstr "Nu se poate începe o conversație cu contactul precizat" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:98 +msgid "You are banned from this channel" +msgstr "Aveți interdicție pe acest canal" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:100 +msgid "This channel is full" +msgstr "Canalul este plin" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:102 +msgid "You must be invited to join this channel" +msgstr "Trebuie să fiți invitat pentru a intra în acest canal" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:104 +msgid "Can't proceed while disconnected" +msgstr "Nu se poate continua în timp ce contactul este deconectat" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:106 +msgid "Permission denied" +msgstr "Permisiune respinsă" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:112 +msgid "There was an error starting the conversation" +msgstr "A apărut o eroare în timpul pornirii conversației" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:291 +#: ../libempathy-gtk/empathy-new-call-dialog.c:203 +msgid "Enter a contact identifier or phone number:" +msgstr "Introduceți un identificator al persoanei sau un număr de telefon:" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-message-dialog.c:181 +#: ../libempathy-gtk/empathy-new-message-dialog.c:334 msgid "New Conversation" msgstr "Conversație nouă" -#. add video toggle -#: ../libempathy-gtk/empathy-new-call-dialog.c:253 -msgid "Send _Video" -msgstr "Trimite _video" +#. add video button +#: ../libempathy-gtk/empathy-new-call-dialog.c:226 +msgid "_Video Call" +msgstr "Apel _video" -#. add chat button -#: ../libempathy-gtk/empathy-new-call-dialog.c:261 -msgid "C_all" -msgstr "_Apelează" +#. add audio button +#: ../libempathy-gtk/empathy-new-call-dialog.c:236 +msgid "_Audio Call" +msgstr "Apel _audio" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-call-dialog.c:271 +#: ../libempathy-gtk/empathy-new-call-dialog.c:246 msgid "New Call" msgstr "Apel nou" -#: ../libempathy-gtk/empathy-password-dialog.c:274 +#: ../libempathy-gtk/empathy-bad-password-dialog.c:130 +#, c-format +msgid "Authentification failed for account %s" +msgstr "Autentificarea pentru contul %s a eșuat" + +#: ../libempathy-gtk/empathy-base-password-dialog.c:224 +#: ../libempathy-gtk/empathy-password-dialog.c:134 #, c-format msgid "" "Enter your password for account\n" @@ -2222,34 +2646,30 @@ msgstr "" #. COL_DISPLAY_MARKUP #. COL_STATUS_CUSTOMISABLE #. COL_TYPE -#: ../libempathy-gtk/empathy-presence-chooser.c:170 -#: ../libempathy-gtk/empathy-presence-chooser.c:206 +#: ../libempathy-gtk/empathy-presence-chooser.c:167 +#: ../libempathy-gtk/empathy-presence-chooser.c:203 msgid "Custom Message…" msgstr "Mesaj personalizat…" -#: ../libempathy-gtk/empathy-presence-chooser.c:223 -#: ../libempathy-gtk/empathy-presence-chooser.c:225 +#: ../libempathy-gtk/empathy-presence-chooser.c:220 +#: ../libempathy-gtk/empathy-presence-chooser.c:222 msgid "Edit Custom Messages…" -msgstr "Modifică mesajele personalizate…" +msgstr "Editează mesajele personalizate…" -#: ../libempathy-gtk/empathy-presence-chooser.c:348 +#: ../libempathy-gtk/empathy-presence-chooser.c:345 msgid "Click to remove this status as a favorite" msgstr "Apăsați pentru a elimina acest mesaj de stare din lista de favorite" -#: ../libempathy-gtk/empathy-presence-chooser.c:357 +#: ../libempathy-gtk/empathy-presence-chooser.c:354 msgid "Click to make this status a favorite" msgstr "Apăsați pentru a adăuga acest mesaj de stare în lista de favorite" -#: ../libempathy-gtk/empathy-presence-chooser.c:391 +#: ../libempathy-gtk/empathy-presence-chooser.c:388 msgid "Set status" -msgstr "Definește mesaj de stare" - -#: ../libempathy-gtk/empathy-presence-chooser.c:948 -msgid "Set your presence and current status" -msgstr "Definiți preferințele și mesajul de stare curent" +msgstr "Setează mesajul de status" #. Custom messages -#: ../libempathy-gtk/empathy-presence-chooser.c:1136 +#: ../libempathy-gtk/empathy-presence-chooser.c:1135 msgid "Custom messages…" msgstr "Mesaje personalizate…" @@ -2262,18 +2682,26 @@ msgstr "Mesaje personalizate…" msgid "New %s account" msgstr "Cont %s nou" -#: ../libempathy-gtk/empathy-search-bar.ui.h:3 +#: ../libempathy-gtk/empathy-search-bar.ui.h:1 msgid "Find:" msgstr "Caută:" -#: ../libempathy-gtk/empathy-search-bar.ui.h:4 -msgid "Match case" -msgstr "Majuscule semnificative" +#: ../libempathy-gtk/empathy-search-bar.ui.h:2 +msgid "Mat_ch case" +msgstr "Majus_cule semnificative" -#: ../libempathy-gtk/empathy-search-bar.ui.h:5 +#: ../libempathy-gtk/empathy-search-bar.ui.h:3 msgid "Phrase not found" msgstr "Fraza n-a fost găsită" +#: ../libempathy-gtk/empathy-search-bar.ui.h:4 +msgid "_Next" +msgstr "_Tabul următor" + +#: ../libempathy-gtk/empathy-search-bar.ui.h:5 +msgid "_Previous" +msgstr "Tabul _precedent" + #: ../libempathy-gtk/empathy-sound-manager.c:51 msgid "Received an instant message" msgstr "Ați primit un mesaj instant" @@ -2314,35 +2742,32 @@ msgstr "Ați lansat un apel vocal" msgid "Voice call ended" msgstr "Apel vocal terminat" -#: ../libempathy-gtk/empathy-status-preset-dialog.c:364 -msgid "Enter Custom Message" -msgstr "Introduceți mesajul personalizat" - -#: ../libempathy-gtk/empathy-status-preset-dialog.c:523 +#: ../libempathy-gtk/empathy-status-preset-dialog.c:296 msgid "Edit Custom Messages" msgstr "Modificare mesajele personalizate" -#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1 -msgid "Save _New Status Message" -msgstr "Salvează mesaj de stare _nou" +#: ../libempathy-gtk/empathy-theme-adium.c:1047 +#, c-format +msgid "Message edited at %s" +msgstr "Mesaj modificat la %s" -#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:2 -msgid "Saved Status Messages" -msgstr "Mesaje de stare salvate" +#: ../libempathy-gtk/empathy-theme-adium.c:1752 +msgid "Normal" +msgstr "Normal" -#: ../libempathy-gtk/empathy-theme-manager.c:67 +#: ../libempathy-gtk/empathy-theme-manager.c:70 msgid "Classic" msgstr "Clasic" -#: ../libempathy-gtk/empathy-theme-manager.c:68 +#: ../libempathy-gtk/empathy-theme-manager.c:71 msgid "Simple" msgstr "Simplu" -#: ../libempathy-gtk/empathy-theme-manager.c:69 +#: ../libempathy-gtk/empathy-theme-manager.c:72 msgid "Clean" msgstr "Curat" -#: ../libempathy-gtk/empathy-theme-manager.c:70 +#: ../libempathy-gtk/empathy-theme-manager.c:73 msgid "Blue" msgstr "Albastru" @@ -2353,7 +2778,7 @@ msgstr "" #: ../libempathy-gtk/empathy-tls-dialog.c:157 msgid "The certificate is not signed by a Certification Authority." -msgstr "Certificatul nu este semnat de o Autoritate de certificare." +msgstr "Certificatul nu este semnat de o autoritate de certificare." #: ../libempathy-gtk/empathy-tls-dialog.c:161 msgid "The certificate has expired." @@ -2381,7 +2806,7 @@ msgstr "Certificatul este auto-semnat." msgid "" "The certificate has been revoked by the issuing Certification Authority." msgstr "" -"Certificatul a fost revocat de către Autoritatea de Certificare emitentă." +"Certificatul a fost revocat de către autoritatea de certificare emitentă." #: ../libempathy-gtk/empathy-tls-dialog.c:181 msgid "The certificate is cryptographically weak." @@ -2421,28 +2846,28 @@ msgstr "Ține minte această alegere pentru viitoarele conexiuni" msgid "Certificate Details" msgstr "Detalii certificat" -#: ../libempathy-gtk/empathy-ui-utils.c:1706 +#: ../libempathy-gtk/empathy-ui-utils.c:1741 msgid "Unable to open URI" -msgstr "Nu se poate deschide URI" +msgstr "Nu se poate deschide URI-ul" -#: ../libempathy-gtk/empathy-ui-utils.c:1801 +#: ../libempathy-gtk/empathy-ui-utils.c:1859 msgid "Select a file" msgstr "Alegeți un fișier" -#: ../libempathy-gtk/empathy-ui-utils.c:1873 +#: ../libempathy-gtk/empathy-ui-utils.c:1934 msgid "Insufficient free space to save file" -msgstr "Spațiu liber insuficient pentru a salva fișierul" +msgstr "Nu este suficient spațiu liber pentru a salva fișierul" -#: ../libempathy-gtk/empathy-ui-utils.c:1881 +#: ../libempathy-gtk/empathy-ui-utils.c:1942 #, c-format msgid "" "%s of free space are required to save this file, but only %s is available. " "Please choose another location." msgstr "" -"Este necesari un spațiu liber de %s pentru a salva acest fișier, dar doar %s " -"sunt disponibili. Alegeți altă locație." +"Este necesar un spațiu liber de %s pentru a salva acest fișier, dar doar %s " +"sunt disponibili. Alegeți o altă locație." -#: ../libempathy-gtk/empathy-ui-utils.c:1925 +#: ../libempathy-gtk/empathy-ui-utils.c:1986 #, c-format msgid "Incoming file from %s" msgstr "Se primește un fișier de la %s" @@ -2570,7 +2995,7 @@ msgstr "Nordică" #: ../libempathy-gtk/totem-subtitle-encoding.c:285 msgid "Persian" -msgstr "Persiană" +msgstr "Persană" #: ../libempathy-gtk/totem-subtitle-encoding.c:288 #: ../libempathy-gtk/totem-subtitle-encoding.c:290 @@ -2614,39 +3039,31 @@ msgstr "Occidentală" msgid "Vietnamese" msgstr "Vietnameză" -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108 -msgid "The selected contact cannot receive files." -msgstr "Contactul selectat nu poate primi fișiere." - -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114 -msgid "The selected contact is offline." -msgstr "Contactul selectat este deconectat." - -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169 +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:203 msgid "No error message" msgstr "Niciun mesaj de eroare" -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242 +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:276 msgid "Instant Message (Empathy)" msgstr "Mesaj instant (Empathy)" -#: ../src/empathy.c:308 +#: ../src/empathy.c:433 msgid "Don't connect on startup" msgstr "Nu conecta la pornire" -#: ../src/empathy.c:312 +#: ../src/empathy.c:437 msgid "Don't display the contact list or any other dialogs on startup" msgstr "Nu arăta lista de contacte sau orice alt dialog la pornire" -#: ../src/empathy.c:320 +#: ../src/empathy.c:452 msgid "- Empathy IM Client" msgstr "- Mesagerie instant Empathy" -#: ../src/empathy.c:499 +#: ../src/empathy.c:639 msgid "Error contacting the Account Manager" msgstr "Eroare la contactarea managerului de conturi" -#: ../src/empathy.c:501 +#: ../src/empathy.c:641 #, c-format msgid "" "There was an error while trying to connect to the Telepathy Account Manager. " @@ -2654,7 +3071,7 @@ msgid "" "\n" "%s" msgstr "" -"S-a produs o eroare în timp ce se încerca conectarea la managerul de conturi " +"A apărut o eroare în timp ce se încerca conectarea la managerul de conturi " "Telepathy. Eroarea a fost:\n" "\n" "%s" @@ -2715,19 +3132,19 @@ msgstr "" #: ../src/empathy-account-assistant.c:167 msgid "There was an error while importing the accounts." -msgstr "S-a produs o eroare în timpul importării conturilor." +msgstr "A apărut o eroare în timpul importării conturilor." #: ../src/empathy-account-assistant.c:170 msgid "There was an error while parsing the account details." -msgstr "S-a produs o eroare în timpul analizării detaliilor contului." +msgstr "A apărut o eroare în timpul analizării detaliilor contului." #: ../src/empathy-account-assistant.c:173 msgid "There was an error while creating the account." -msgstr "S-a produs o eroare în timpul creării contului." +msgstr "A apărut o eroare în timpul creării contului." #: ../src/empathy-account-assistant.c:175 msgid "There was an error." -msgstr "S-a produs o eroare." +msgstr "A apărut o eroare." #: ../src/empathy-account-assistant.c:179 #, c-format @@ -2744,9 +3161,9 @@ msgstr "" "contului din meniul Editare." #: ../src/empathy-account-assistant.c:220 -#: ../src/empathy-account-assistant.c:1268 +#: ../src/empathy-account-assistant.c:1272 msgid "An error occurred" -msgstr "S-a produs o eroare" +msgstr "A apărut o eroare" #: ../src/empathy-account-assistant.c:467 msgid "What kind of chat account do you have?" @@ -2789,59 +3206,59 @@ msgid "Do you have an account you've been using with another chat program?" msgstr "" "Aveți un cont pe care l-ați folosit în alt program de mesagerie instant?" -#: ../src/empathy-account-assistant.c:652 +#: ../src/empathy-account-assistant.c:653 msgid "Yes, import my account details from " msgstr "Da, importă detaliile contului din " -#: ../src/empathy-account-assistant.c:673 +#: ../src/empathy-account-assistant.c:674 msgid "Yes, I'll enter my account details now" msgstr "Da, voi introduce acum detaliile contului" -#: ../src/empathy-account-assistant.c:695 +#: ../src/empathy-account-assistant.c:696 msgid "No, I want a new account" msgstr "Nu, doresc un cont nou" -#: ../src/empathy-account-assistant.c:705 +#: ../src/empathy-account-assistant.c:706 msgid "No, I just want to see people online nearby for now" msgstr "Nu, pentru moment vreau doar să descopăr persoane din apropiere" -#: ../src/empathy-account-assistant.c:726 +#: ../src/empathy-account-assistant.c:727 msgid "Select the accounts you want to import:" msgstr "Alegeți conturile pe care doriți să le importați:" -#: ../src/empathy-account-assistant.c:810 -#: ../src/empathy-new-chatroom-dialog.c:562 -#: ../src/empathy-new-chatroom-dialog.c:563 +#: ../src/empathy-account-assistant.c:814 +#: ../src/empathy-new-chatroom-dialog.c:625 +#: ../src/empathy-new-chatroom-dialog.c:626 msgid "Yes" msgstr "Da" -#: ../src/empathy-account-assistant.c:817 +#: ../src/empathy-account-assistant.c:821 msgid "No, that's all for now" msgstr "Nu, atât pentru acum" -#: ../src/empathy-account-assistant.c:1082 +#: ../src/empathy-account-assistant.c:1086 msgid "" "Empathy can automatically discover and chat with the people connected on the " "same network as you. If you want to use this feature, please check that the " "details below are correct. You can easily change these details later or " "disable this feature by using the 'Accounts' dialog" msgstr "" -"Empathy poate descoperi automat și comunica cu persoane conectate la aceeași " -"rețea ca dumneavoastră. Dacă doriți să utilizați această facilitate, " +"Empathy poate descoperi automat și poate comunica cu persoane conectate la " +"aceeași rețea ca dumneavoastră. Dacă doriți să utilizați această facilitate, " "verificați dacă detaliile de mai jos sunt corecte. Puteți modifica cu " "ușurință aceste detalii mai târziu sau puteți dezactiva această facilitate " "utilizând dialogul „Conturi”" -#: ../src/empathy-account-assistant.c:1088 -#: ../src/empathy-account-assistant.c:1144 +#: ../src/empathy-account-assistant.c:1092 +#: ../src/empathy-account-assistant.c:1148 msgid "Edit->Accounts" msgstr "Editare->Conturi" -#: ../src/empathy-account-assistant.c:1104 +#: ../src/empathy-account-assistant.c:1108 msgid "I do _not want to enable this feature for now" msgstr "_Nu vreau să activez această facilitate acum" -#: ../src/empathy-account-assistant.c:1140 +#: ../src/empathy-account-assistant.c:1144 msgid "" "You won't be able to chat with people connected to your local network, as " "telepathy-salut is not installed. If you want to enable this feature, please " @@ -2853,23 +3270,23 @@ msgstr "" "activați această facilitate, instalați pachetul telepathy-salut și creați un " "contact „Persoane din apropiere” din dialogul Conturi" -#: ../src/empathy-account-assistant.c:1146 +#: ../src/empathy-account-assistant.c:1150 msgid "telepathy-salut not installed" msgstr "telepathy-salut nu este instalat" -#: ../src/empathy-account-assistant.c:1192 +#: ../src/empathy-account-assistant.c:1196 msgid "Messaging and VoIP Accounts Assistant" msgstr "Asistent conturi de mesagerie și VoIP" -#: ../src/empathy-account-assistant.c:1226 +#: ../src/empathy-account-assistant.c:1230 msgid "Welcome to Empathy" msgstr "Bun venit la Empathy" -#: ../src/empathy-account-assistant.c:1235 +#: ../src/empathy-account-assistant.c:1239 msgid "Import your existing accounts" msgstr "Importă conturile existente" -#: ../src/empathy-account-assistant.c:1253 +#: ../src/empathy-account-assistant.c:1257 msgid "Please enter personal details" msgstr "Introduceți datele personale" @@ -2886,34 +3303,35 @@ msgstr "Există modificări nesalvate pentru contul %s." msgid "Your new account has not been saved yet." msgstr "Contul nou nu a fost încă salvat." -#: ../src/empathy-accounts-dialog.c:286 -#: ../src/empathy-streamed-media-window.c:809 +#: ../src/empathy-accounts-dialog.c:345 +#: ../src/empathy-streamed-media-window.c:757 +#: ../src/empathy-call-window.c:1325 msgid "Connecting…" msgstr "Se conectează…" -#: ../src/empathy-accounts-dialog.c:327 +#: ../src/empathy-accounts-dialog.c:386 #, c-format msgid "Offline — %s" msgstr "Deconectat – %s" -#: ../src/empathy-accounts-dialog.c:339 +#: ../src/empathy-accounts-dialog.c:398 #, c-format msgid "Disconnected — %s" msgstr "Deconectat – %s" -#: ../src/empathy-accounts-dialog.c:350 +#: ../src/empathy-accounts-dialog.c:409 msgid "Offline — No Network Connection" msgstr "Deconectat – Nicio conexiune la rețea" -#: ../src/empathy-accounts-dialog.c:357 +#: ../src/empathy-accounts-dialog.c:416 msgid "Unknown Status" msgstr "Mesaj de stare necunoscut" -#: ../src/empathy-accounts-dialog.c:369 +#: ../src/empathy-accounts-dialog.c:428 msgid "Offline — Account Disabled" msgstr "Deconectat – Cont dezactivat" -#: ../src/empathy-accounts-dialog.c:772 +#: ../src/empathy-accounts-dialog.c:831 msgid "" "You are about to create a new account, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2921,16 +3339,16 @@ msgstr "" "Sunteți pe cale să creați un nou cont, ceea ce va duce\n" "la pierderea modificărilor curente. Doriți să continuați?" -#: ../src/empathy-accounts-dialog.c:1133 +#: ../src/empathy-accounts-dialog.c:1192 #, c-format msgid "Do you want to remove %s from your computer?" msgstr "Doriți să eliminați %s de pe calculatorul dumneavoastră?" -#: ../src/empathy-accounts-dialog.c:1137 +#: ../src/empathy-accounts-dialog.c:1196 msgid "This will not remove your account on the server." msgstr "Această acțiune nu va elimina contul de pe server." -#: ../src/empathy-accounts-dialog.c:1375 +#: ../src/empathy-accounts-dialog.c:1432 msgid "" "You are about to select another account, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2939,15 +3357,15 @@ msgstr "" "la pierderea modificărilor curente. Doriți să continuați?" #. Menu items: to enabled/disable the account -#: ../src/empathy-accounts-dialog.c:1571 +#: ../src/empathy-accounts-dialog.c:1643 msgid "_Enable" msgstr "Activ_ează" -#: ../src/empathy-accounts-dialog.c:1572 +#: ../src/empathy-accounts-dialog.c:1644 msgid "_Disable" msgstr "_Dezactivează" -#: ../src/empathy-accounts-dialog.c:2086 +#: ../src/empathy-accounts-dialog.c:2154 msgid "" "You are about to close the window, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2956,18 +3374,22 @@ msgstr "" "la pierderea modificărilor curente. Doriți să continuați?" #: ../src/empathy-accounts-dialog.ui.h:1 +msgid "Add…" +msgstr "Adaugă…" + +#: ../src/empathy-accounts-dialog.ui.h:2 msgid "Loading account information" msgstr "Se încarcă informațiile despre cont" -#: ../src/empathy-accounts-dialog.ui.h:2 +#: ../src/empathy-accounts-dialog.ui.h:3 msgid "No protocol installed" msgstr "Niciun protocol instalat" -#: ../src/empathy-accounts-dialog.ui.h:3 +#: ../src/empathy-accounts-dialog.ui.h:4 msgid "Protocol:" msgstr "Protocol:" -#: ../src/empathy-accounts-dialog.ui.h:4 +#: ../src/empathy-accounts-dialog.ui.h:6 msgid "" "To add a new account, you first have to install a backend for each protocol " "you want to use." @@ -2975,19 +3397,15 @@ msgstr "" "Pentru a adăuga un cont nou, trebuie să instalați întâi suportul pentru " "fiecare protocol pe care doriți să-l folosiți." -#: ../src/empathy-accounts-dialog.ui.h:5 -msgid "_Add…" -msgstr "_Adaugă…" - -#: ../src/empathy-accounts-dialog.ui.h:6 +#: ../src/empathy-accounts-dialog.ui.h:7 msgid "_Import…" -msgstr "_Importă..." +msgstr "_Importă…" -#: ../src/empathy-auth-client.c:243 +#: ../src/empathy-auth-client.c:284 msgid " - Empathy authentication client" msgstr " - Client de autentificare Empathy" -#: ../src/empathy-auth-client.c:259 +#: ../src/empathy-auth-client.c:300 msgid "Empathy authentication client" msgstr "Client de autentificare Empathy" @@ -2995,112 +3413,124 @@ msgstr "Client de autentificare Empathy" msgid "People nearby" msgstr "Persoane din apropiere" -#: ../src/empathy-av.c:118 +#: ../src/empathy-av.c:118 ../src/empathy-call.c:193 msgid "- Empathy Audio/Video Client" msgstr "- Client audio/video Empathy" -#: ../src/empathy-av.c:134 +#: ../src/empathy-av.c:134 ../src/empathy-call.c:218 msgid "Empathy Audio/Video Client" msgstr "Client audio/video Empathy" -#: ../src/empathy-streamed-media-window.c:479 +#: ../src/empathy-streamed-media-window.c:433 msgid "Contrast" msgstr "Contrast" -#: ../src/empathy-streamed-media-window.c:482 +#: ../src/empathy-streamed-media-window.c:436 msgid "Brightness" msgstr "Luminozitate" -#: ../src/empathy-streamed-media-window.c:485 +#: ../src/empathy-streamed-media-window.c:439 msgid "Gamma" -msgstr "Gamă" +msgstr "Gama" -#: ../src/empathy-streamed-media-window.c:590 +#: ../src/empathy-streamed-media-window.c:545 msgid "Volume" msgstr "Volum" -#: ../src/empathy-streamed-media-window.c:1166 +#: ../src/empathy-streamed-media-window.c:1097 msgid "_Sidebar" msgstr "Bară _laterală" -#: ../src/empathy-streamed-media-window.c:1186 +#: ../src/empathy-streamed-media-window.c:1117 msgid "Audio input" msgstr "Intrare audio" -#: ../src/empathy-streamed-media-window.c:1190 +#: ../src/empathy-streamed-media-window.c:1121 msgid "Video input" msgstr "Intrare video" -#: ../src/empathy-streamed-media-window.c:1194 +#: ../src/empathy-streamed-media-window.c:1129 msgid "Dialpad" msgstr "Tastatură numerică" -#: ../src/empathy-streamed-media-window.c:1205 +#: ../src/empathy-streamed-media-window.c:1140 msgid "Details" msgstr "Detalii" #. translators: Call is a noun and %s is the contact name. This string #. * is used in the window title -#: ../src/empathy-streamed-media-window.c:1274 +#: ../src/empathy-streamed-media-window.c:1209 +#: ../src/empathy-call-window.c:1927 #, c-format msgid "Call with %s" msgstr "Apel către %s" -#. translators: Call is a noun. This string is used in the window -#. * title -#: ../src/empathy-streamed-media-window.c:1353 -msgid "Call" -msgstr "Apel" - -#: ../src/empathy-streamed-media-window.c:1507 +#: ../src/empathy-streamed-media-window.c:1442 +#: ../src/empathy-call-window.c:2171 msgid "The IP address as seen by the machine" msgstr "Adresa IP așa cum este văzută de mașină" -#: ../src/empathy-streamed-media-window.c:1509 +#: ../src/empathy-streamed-media-window.c:1444 +#: ../src/empathy-call-window.c:2173 msgid "The IP address as seen by a server on the Internet" msgstr "Adresa de IP așa cum este văzută de către un server de pe Internet" -#: ../src/empathy-streamed-media-window.c:1511 +#: ../src/empathy-streamed-media-window.c:1446 +#: ../src/empathy-call-window.c:2175 msgid "The IP address of the peer as seen by the other side" msgstr "Adresa IP așa cum este văzută de către partenerul de conexiune" -#: ../src/empathy-streamed-media-window.c:1513 +#: ../src/empathy-streamed-media-window.c:1448 +#: ../src/empathy-call-window.c:2177 msgid "The IP address of a relay server" msgstr "Adresa IP a unui server releu" -#: ../src/empathy-streamed-media-window.c:1515 +#: ../src/empathy-streamed-media-window.c:1450 +#: ../src/empathy-call-window.c:2179 msgid "The IP address of the multicast group" msgstr "Adresa IP a grupului multicast" -#. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-streamed-media-window.c:2266 +#: ../src/empathy-streamed-media-window.c:1838 +#: ../src/empathy-streamed-media-window.c:1841 +#: ../src/empathy-streamed-media-window.c:1844 +#: ../src/empathy-streamed-media-window.c:1847 +msgctxt "codec" +msgid "Unknown" +msgstr "Necunoscut" + +#. Translators: number of minutes:seconds the caller has been connected +#: ../src/empathy-streamed-media-window.c:2139 #, c-format msgid "Connected — %d:%02dm" msgstr "Conectat — %d:%02dm" -#: ../src/empathy-streamed-media-window.c:2327 +#: ../src/empathy-streamed-media-window.c:2200 +#: ../src/empathy-call-window.c:3033 msgid "Technical Details" msgstr "Detalii tehnice" -#: ../src/empathy-streamed-media-window.c:2365 +#: ../src/empathy-streamed-media-window.c:2238 +#: ../src/empathy-call-window.c:3072 #, c-format msgid "" "%s's software does not understand any of the audio formats supported by your " "computer" msgstr "" -"Software-ul utiliazatorului %s nu înțelege niciunul dintre formatele audio " +"Software-ul utilizatorului %s nu înțelege niciunul dintre formatele audio " "suportate de calculatorul dumneavoastră" -#: ../src/empathy-streamed-media-window.c:2370 +#: ../src/empathy-streamed-media-window.c:2243 +#: ../src/empathy-call-window.c:3077 #, c-format msgid "" "%s's software does not understand any of the video formats supported by your " "computer" msgstr "" -"Software-ul utiliazatorului %s nu înțelege niciunul dintre formatele video " +"Software-ul utilizatorului %s nu înțelege niciunul dintre formatele video " "suportate de calculatorul dumneavoastră" -#: ../src/empathy-streamed-media-window.c:2376 +#: ../src/empathy-streamed-media-window.c:2249 +#: ../src/empathy-call-window.c:3083 #, c-format msgid "" "Can't establish a connection to %s. One of you might be on a network that " @@ -3110,25 +3540,29 @@ msgstr "" "fie calculatorul la care încercați să vă conectați se află într-o rețea ce " "nu permite conexiuni directe." -#: ../src/empathy-streamed-media-window.c:2382 +#: ../src/empathy-streamed-media-window.c:2255 +#: ../src/empathy-call-window.c:3089 msgid "There was a failure on the network" msgstr "A apărut un eșec pe rețea" -#: ../src/empathy-streamed-media-window.c:2386 +#: ../src/empathy-streamed-media-window.c:2259 +#: ../src/empathy-call-window.c:3093 msgid "" "The audio formats necessary for this call are not installed on your computer" msgstr "" "Formatele audio necesare pentru acest apel nu sunt instalate pe calculatorul " "dumneavoastră" -#: ../src/empathy-streamed-media-window.c:2389 +#: ../src/empathy-streamed-media-window.c:2262 +#: ../src/empathy-call-window.c:3096 msgid "" "The video formats necessary for this call are not installed on your computer" msgstr "" "Formatele video necesare pentru acest apel nu sunt instalate pe calculatorul " "dumneavoastră" -#: ../src/empathy-streamed-media-window.c:2399 +#: ../src/empathy-streamed-media-window.c:2272 +#: ../src/empathy-call-window.c:3108 #, c-format msgid "" "Something unexpected happened in a Telepathy component. Please Trimiteți un raport al erorii și atașați mesajele din fereastra " "„Depanare” din meniul Ajutor." -#: ../src/empathy-streamed-media-window.c:2407 +#: ../src/empathy-streamed-media-window.c:2280 +#: ../src/empathy-call-window.c:3117 msgid "There was a failure in the call engine" msgstr "A apărut un eșec în motorul apelurilor" -#: ../src/empathy-streamed-media-window.c:2410 +#: ../src/empathy-streamed-media-window.c:2283 +#: ../src/empathy-call-window.c:3120 msgid "The end of the stream was reached" msgstr "S-a ajuns la sfârșitul fluxului" -#: ../src/empathy-streamed-media-window.c:2450 +#: ../src/empathy-streamed-media-window.c:2323 +#: ../src/empathy-call-window.c:3160 msgid "Can't establish audio stream" msgstr "Nu s-a putut realiza fluxul audio" -#: ../src/empathy-streamed-media-window.c:2460 +#: ../src/empathy-streamed-media-window.c:2333 +#: ../src/empathy-call-window.c:3170 msgid "Can't establish video stream" msgstr "Nu s-a putut realiza fluxul video" -#: ../src/empathy-call-window.ui.h:1 +#: ../src/empathy-call-window.ui.h:1 ../src/empathy-preferences.ui.h:2 +#: ../src/empathy-streamed-media-window.ui.h:1 msgid "Audio" msgstr "Audio" -#: ../src/empathy-call-window.ui.h:2 -msgid "Call the contact again" -msgstr "Apelează din nou contactul" - #: ../src/empathy-call-window.ui.h:3 -msgid "Camera Off" -msgstr "Cameră dezactivată" +#: ../src/empathy-streamed-media-window.ui.h:5 +msgid "Decoding Codec:" +msgstr "Codec de decodificare:" #: ../src/empathy-call-window.ui.h:4 -msgid "Camera On" -msgstr "Cameră activată" +msgid "Disable camera" +msgstr "Dezactivează camera" #: ../src/empathy-call-window.ui.h:5 -msgid "Decoding Codec:" -msgstr "Codec de decodificare:" +msgid "Display the dialpad" +msgstr "Afișează tastatura numerică" #: ../src/empathy-call-window.ui.h:6 -msgid "Disable camera and stop sending video" -msgstr "Dezactivează camera și oprește transmisia video" +#: ../src/empathy-streamed-media-window.ui.h:9 +msgid "Encoding Codec:" +msgstr "Codec de codificare:" #: ../src/empathy-call-window.ui.h:7 -msgid "Enable camera and send video" -msgstr "Activează camera și trimite video" +#: ../src/empathy-streamed-media-window.ui.h:10 +msgid "Hang up" +msgstr "Închide" #: ../src/empathy-call-window.ui.h:8 -msgid "Enable camera but don't send video" -msgstr "Activează camera, dar nu trimite video" +#: ../src/empathy-streamed-media-window.ui.h:11 +msgid "Hang up current call" +msgstr "Închide apelul curent" #: ../src/empathy-call-window.ui.h:9 -msgid "Encoding Codec:" -msgstr "Codec de codificare:" +#: ../src/empathy-streamed-media-window.ui.h:12 +msgid "Local Candidate:" +msgstr "Candidat local:" #: ../src/empathy-call-window.ui.h:10 -msgid "Hang up" -msgstr "Închide" +msgid "Maximise me" +msgstr "Mărește-mă" #: ../src/empathy-call-window.ui.h:11 -msgid "Hang up current call" -msgstr "Închide apelul curent" +msgid "Minimise me" +msgstr "Micșorează-mă" #: ../src/empathy-call-window.ui.h:12 -msgid "Local Candidate:" -msgstr "Candidat local:" +#: ../src/empathy-streamed-media-window.ui.h:15 +msgid "Remote Candidate:" +msgstr "Candidat la distanță:" #: ../src/empathy-call-window.ui.h:13 -msgid "Preview" -msgstr "Previzualizare" +#: ../src/empathy-streamed-media-window.ui.h:16 +msgid "Send Audio" +msgstr "Trimite audio" #: ../src/empathy-call-window.ui.h:14 -msgid "Redial" -msgstr "Formează din nou" +msgid "Send Video" +msgstr "Trimite video" #: ../src/empathy-call-window.ui.h:15 -msgid "Remote Candidate:" -msgstr "Candidat la distanță:" +msgid "Show dialpad" +msgstr "Arată tastatura numerică" #: ../src/empathy-call-window.ui.h:16 -msgid "Send Audio" -msgstr "Trimite audio" +msgid "Start a video call" +msgstr "Începe un apel video" #: ../src/empathy-call-window.ui.h:17 -msgid "Toggle audio transmission" -msgstr "Comută transmisia audio" +msgid "Start an audio call" +msgstr "Începe un apel audio" + +#: ../src/empathy-call-window.ui.h:18 +msgid "Swap camera" +msgstr "Înlocuiți camera" #: ../src/empathy-call-window.ui.h:19 -msgid "V_ideo" -msgstr "V_ideo" +#: ../src/empathy-streamed-media-window.ui.h:17 +msgid "Toggle audio transmission" +msgstr "Comută transmisia audio" #: ../src/empathy-call-window.ui.h:20 -msgid "Video" -msgstr "Video" +msgid "Toggle video transmission" +msgstr "Comută transmisia video" #: ../src/empathy-call-window.ui.h:21 -msgid "Video Off" -msgstr "Video dezactivat" - -#: ../src/empathy-call-window.ui.h:22 -msgid "Video On" -msgstr "Video activat" +#: ../src/empathy-streamed-media-window.ui.h:18 +#: ../src/empathy-call-window.c:2580 ../src/empathy-call-window.c:2581 +#: ../src/empathy-call-window.c:2582 ../src/empathy-call-window.c:2583 +msgid "Unknown" +msgstr "Necunoscut" #: ../src/empathy-call-window.ui.h:23 -msgid "Video Preview" -msgstr "Previzualizare video" +msgid "Video call" +msgstr "Apel video" #: ../src/empathy-call-window.ui.h:24 +#: ../src/empathy-streamed-media-window.ui.h:24 msgid "_Call" msgstr "_Apelează" -#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:29 +#: ../src/empathy-call-window.ui.h:25 +msgid "_Camera" +msgstr "_Camera" + +#: ../src/empathy-call-window.ui.h:26 ../src/empathy-chat-window.ui.h:9 +#: ../src/empathy-main-window-menubar.ui.h:18 +msgid "_Contents" +msgstr "_Conținut" + +#: ../src/empathy-call-window.ui.h:27 +#: ../src/empathy-main-window-menubar.ui.h:19 +msgid "_Debug" +msgstr "_Depanare" + +#: ../src/empathy-call-window.ui.h:29 ../src/empathy-chat-window.ui.h:14 +#: ../src/empathy-main-window-menubar.ui.h:22 +msgid "_Help" +msgstr "_Ajutor" + +#: ../src/empathy-call-window.ui.h:30 +msgid "_Microphone" +msgstr "_Microfon" + +#: ../src/empathy-call-window.ui.h:31 +msgid "_Settings" +msgstr "_Setări" + +#: ../src/empathy-call-window.ui.h:32 +#: ../src/empathy-main-window-menubar.ui.h:30 +#: ../src/empathy-streamed-media-window.ui.h:25 msgid "_View" msgstr "_Vizualizare" -#: ../src/empathy-chat-window.c:473 ../src/empathy-chat-window.c:493 +#: ../src/empathy-chat-window.c:481 ../src/empathy-chat-window.c:501 #, c-format msgid "%s (%d unread)" msgid_plural "%s (%d unread)" @@ -3259,7 +3735,7 @@ msgstr[0] "%s (%d necitit)" msgstr[1] "%s (%d necitite)" msgstr[2] "%s (%d necitite)" -#: ../src/empathy-chat-window.c:485 +#: ../src/empathy-chat-window.c:493 #, c-format msgid "%s (and %u other)" msgid_plural "%s (and %u others)" @@ -3267,7 +3743,7 @@ msgstr[0] "%s (și %u altul)" msgstr[1] "%s (și altele %u)" msgstr[2] "%s (și altele %u)" -#: ../src/empathy-chat-window.c:501 +#: ../src/empathy-chat-window.c:509 #, c-format msgid "%s (%d unread from others)" msgid_plural "%s (%d unread from others)" @@ -3275,7 +3751,7 @@ msgstr[0] "%s (%d necitit de la alții)" msgstr[1] "%s (%d necitite de la alții)" msgstr[2] "%s (%d necitite de la alții)" -#: ../src/empathy-chat-window.c:510 +#: ../src/empathy-chat-window.c:518 #, c-format msgid "%s (%d unread from all)" msgid_plural "%s (%d unread from all)" @@ -3283,7 +3759,19 @@ msgstr[0] "%s (%d necitit de la toți)" msgstr[1] "%s (%d necitite de la toți)" msgstr[2] "%s (%d necitite de la toți)" -#: ../src/empathy-chat-window.c:712 +#: ../src/empathy-chat-window.c:733 +msgid "SMS:" +msgstr "SMS:" + +#: ../src/empathy-chat-window.c:743 +#, c-format +msgid "Sending %d message" +msgid_plural "Sending %d messages" +msgstr[0] "Trimite %d mesaj" +msgstr[1] "Trimite %d mesaje" +msgstr[2] "Trimite %d de mesaje" + +#: ../src/empathy-chat-window.c:765 msgid "Typing a message." msgstr "Tastează un mesaj." @@ -3295,54 +3783,38 @@ msgstr "_Curăță" msgid "C_ontact" msgstr "C_ontact" -#: ../src/empathy-chat-window.ui.h:3 -msgid "Chat" -msgstr "Discută" - #: ../src/empathy-chat-window.ui.h:4 msgid "Insert _Smiley" msgstr "Inserează un e_moticon" #: ../src/empathy-chat-window.ui.h:5 msgid "Invite _Participant…" -msgstr "Invită _participant…" +msgstr "Invită un _participant…" #: ../src/empathy-chat-window.ui.h:6 msgid "Move Tab _Left" -msgstr "Mută tabu_l în stânga" +msgstr "Mută tabu_l la stânga" #: ../src/empathy-chat-window.ui.h:7 msgid "Move Tab _Right" -msgstr "Mută tabul în d_reapta" +msgstr "Mută tabul la d_reapta" #: ../src/empathy-chat-window.ui.h:8 msgid "Notify for All Messages" msgstr "Anunță-mă pentru toate mesajele" -#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:17 -msgid "_Contents" -msgstr "_Conținut" - #: ../src/empathy-chat-window.ui.h:10 msgid "_Conversation" msgstr "_Conversație" #: ../src/empathy-chat-window.ui.h:11 msgid "_Detach Tab" -msgstr "_Detașează tab" - -#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:19 -msgid "_Edit" -msgstr "_Editare" +msgstr "_Detașează tabul" #: ../src/empathy-chat-window.ui.h:13 msgid "_Favorite Chat Room" msgstr "Canal de discuții _favorit" -#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:21 -msgid "_Help" -msgstr "_Ajutor" - #: ../src/empathy-chat-window.ui.h:15 msgid "_Next Tab" msgstr "_Tabul următor" @@ -3363,15 +3835,15 @@ msgstr "_Taburi" msgid "_Undo Close Tab" msgstr "An_ulează închiderea tabului" -#: ../src/empathy-chatrooms-window.c:241 +#: ../src/empathy-chatrooms-window.c:251 msgid "Name" msgstr "Nume" -#: ../src/empathy-chatrooms-window.c:259 +#: ../src/empathy-chatrooms-window.c:269 msgid "Room" msgstr "Canal de discuții" -#: ../src/empathy-chatrooms-window.c:267 +#: ../src/empathy-chatrooms-window.c:277 msgid "Auto-Connect" msgstr "Conectare automată" @@ -3379,90 +3851,96 @@ msgstr "Conectare automată" msgid "Manage Favorite Rooms" msgstr "Gestionează canalele de discuții favorite" -#: ../src/empathy-event-manager.c:507 +#: ../src/empathy-event-manager.c:521 msgid "Incoming video call" msgstr "Ați primit un apel video" -#: ../src/empathy-event-manager.c:507 +#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1555 msgid "Incoming call" msgstr "Apel primit" -#: ../src/empathy-event-manager.c:511 +#: ../src/empathy-event-manager.c:525 #, c-format msgid "%s is video calling you. Do you want to answer?" msgstr "%s vă apelează video. Doriți să răspundeți?" -#: ../src/empathy-event-manager.c:512 +#: ../src/empathy-event-manager.c:526 #, c-format msgid "%s is calling you. Do you want to answer?" msgstr "%s vă apelează. Doriți să răspundeți?" -#: ../src/empathy-event-manager.c:515 ../src/empathy-event-manager.c:660 +#: ../src/empathy-event-manager.c:529 ../src/empathy-event-manager.c:730 +#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1561 #, c-format msgid "Incoming call from %s" msgstr "Apel primit de la %s" -#: ../src/empathy-event-manager.c:540 +#: ../src/empathy-event-manager.c:554 msgid "_Reject" msgstr "_Respinge" -#: ../src/empathy-event-manager.c:546 +#: ../src/empathy-event-manager.c:562 ../src/empathy-event-manager.c:570 msgid "_Answer" msgstr "Ră_spunde" -#: ../src/empathy-event-manager.c:660 +#: ../src/empathy-event-manager.c:570 +msgid "_Answer with video" +msgstr "_Răspunde cu imagine video" + +#: ../src/empathy-event-manager.c:730 ../src/empathy-event-manager.c:763 +#: ../src/empathy-call-window.c:1561 #, c-format msgid "Incoming video call from %s" msgstr "Apel video primit de la %s" -#: ../src/empathy-event-manager.c:737 +#: ../src/empathy-event-manager.c:836 msgid "Room invitation" msgstr "Invitație canal de discuție" -#: ../src/empathy-event-manager.c:739 +#: ../src/empathy-event-manager.c:838 #, c-format msgid "Invitation to join %s" msgstr "Invitație de alăturare la %s" -#: ../src/empathy-event-manager.c:746 +#: ../src/empathy-event-manager.c:845 #, c-format msgid "%s is inviting you to join %s" msgstr "%s vă invită să vă alăturați la %s" -#: ../src/empathy-event-manager.c:754 +#: ../src/empathy-event-manager.c:853 msgid "_Decline" msgstr "_Refuză" -#: ../src/empathy-event-manager.c:759 +#: ../src/empathy-event-manager.c:858 #: ../src/empathy-new-chatroom-dialog.ui.h:7 msgid "_Join" msgstr "A_lăturare" -#: ../src/empathy-event-manager.c:786 +#: ../src/empathy-event-manager.c:885 #, c-format msgid "%s invited you to join %s" msgstr "%s v-a invitat să vă alăturați la %s" -#: ../src/empathy-event-manager.c:792 +#: ../src/empathy-event-manager.c:891 #, c-format msgid "You have been invited to join %s" msgstr "Ați fost invitat să vă alăturați la %s" -#: ../src/empathy-event-manager.c:843 +#: ../src/empathy-event-manager.c:942 #, c-format msgid "Incoming file transfer from %s" msgstr "Transfer de fișiere primit de la %s" -#: ../src/empathy-event-manager.c:1013 ../src/empathy-main-window.c:370 +#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:377 msgid "Password required" msgstr "Necesită parolă" -#: ../src/empathy-event-manager.c:1069 +#: ../src/empathy-event-manager.c:1210 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s cere permisiunea să vadă când sunteți conectat" -#: ../src/empathy-event-manager.c:1073 +#: ../src/empathy-event-manager.c:1214 #, c-format msgid "" "\n" @@ -3472,105 +3950,105 @@ msgstr "" "Mesaj: %s" #. Translators: time left, when it is more than one hour -#: ../src/empathy-ft-manager.c:99 +#: ../src/empathy-ft-manager.c:100 #, c-format msgid "%u:%02u.%02u" msgstr "%u:%02u.%02u" #. Translators: time left, when is is less than one hour -#: ../src/empathy-ft-manager.c:102 +#: ../src/empathy-ft-manager.c:103 #, c-format msgid "%02u.%02u" msgstr "%02u.%02u" -#: ../src/empathy-ft-manager.c:178 +#: ../src/empathy-ft-manager.c:179 msgctxt "file transfer percent" msgid "Unknown" msgstr "Necunoscut" -#: ../src/empathy-ft-manager.c:273 +#: ../src/empathy-ft-manager.c:274 #, c-format msgid "%s of %s at %s/s" msgstr "%s din %s cu %s/s" -#: ../src/empathy-ft-manager.c:274 +#: ../src/empathy-ft-manager.c:275 #, c-format msgid "%s of %s" msgstr "%s din %s" #. translators: first %s is filename, second %s is the contact name -#: ../src/empathy-ft-manager.c:305 +#: ../src/empathy-ft-manager.c:306 #, c-format msgid "Receiving \"%s\" from %s" msgstr "Se primește „%s” de la %s" #. translators: first %s is filename, second %s is the contact name -#: ../src/empathy-ft-manager.c:308 +#: ../src/empathy-ft-manager.c:309 #, c-format msgid "Sending \"%s\" to %s" msgstr "Se trimite „%s” la %s" #. translators: first %s is filename, second %s #. * is the contact name -#: ../src/empathy-ft-manager.c:338 +#: ../src/empathy-ft-manager.c:339 #, c-format msgid "Error receiving \"%s\" from %s" msgstr "Eroare la recepționarea „%s” de la %s" -#: ../src/empathy-ft-manager.c:341 +#: ../src/empathy-ft-manager.c:342 msgid "Error receiving a file" msgstr "Eroare la primirea unui fișier" -#: ../src/empathy-ft-manager.c:346 +#: ../src/empathy-ft-manager.c:347 #, c-format msgid "Error sending \"%s\" to %s" msgstr "Eroare la trimiterea „%s” către %s" -#: ../src/empathy-ft-manager.c:349 +#: ../src/empathy-ft-manager.c:350 msgid "Error sending a file" msgstr "Eroare la trimiterea unui fișier" #. translators: first %s is filename, second %s #. * is the contact name -#: ../src/empathy-ft-manager.c:488 +#: ../src/empathy-ft-manager.c:489 #, c-format msgid "\"%s\" received from %s" msgstr "„%s” primit de la %s" #. translators: first %s is filename, second %s #. * is the contact name -#: ../src/empathy-ft-manager.c:493 +#: ../src/empathy-ft-manager.c:494 #, c-format msgid "\"%s\" sent to %s" msgstr "„%s” trimis către %s" -#: ../src/empathy-ft-manager.c:496 +#: ../src/empathy-ft-manager.c:497 msgid "File transfer completed" msgstr "Transfer de fișiere încheiat" -#: ../src/empathy-ft-manager.c:615 ../src/empathy-ft-manager.c:782 +#: ../src/empathy-ft-manager.c:616 ../src/empathy-ft-manager.c:780 msgid "Waiting for the other participant's response" msgstr "Se așteaptă răspunsul celuilalt participant" -#: ../src/empathy-ft-manager.c:641 ../src/empathy-ft-manager.c:679 +#: ../src/empathy-ft-manager.c:642 ../src/empathy-ft-manager.c:680 #, c-format msgid "Checking integrity of \"%s\"" -msgstr "Se verifică integritatea „%s”" +msgstr "Se verifică integritatea pentru „%s”" -#: ../src/empathy-ft-manager.c:644 ../src/empathy-ft-manager.c:682 +#: ../src/empathy-ft-manager.c:645 ../src/empathy-ft-manager.c:683 #, c-format msgid "Hashing \"%s\"" msgstr "Se calculează valoarea de dispersie pentru „%s”" -#: ../src/empathy-ft-manager.c:1016 +#: ../src/empathy-ft-manager.c:1026 msgid "%" msgstr "%" -#: ../src/empathy-ft-manager.c:1028 +#: ../src/empathy-ft-manager.c:1038 msgid "File" msgstr "Fișier" -#: ../src/empathy-ft-manager.c:1050 +#: ../src/empathy-ft-manager.c:1060 msgid "Remaining" msgstr "Rămas" @@ -3608,141 +4086,165 @@ msgstr "Protocol" msgid "Source" msgstr "Sursă" -#: ../src/empathy-main-window.c:387 +#: ../src/empathy-main-window.c:394 msgid "Provide Password" msgstr "Furnizați parola" -#: ../src/empathy-main-window.c:393 +#: ../src/empathy-main-window.c:400 msgid "Disconnect" msgstr "Deconectează" -#: ../src/empathy-main-window.c:533 +#: ../src/empathy-main-window.c:637 msgid "No match found" msgstr "Nicio potrivire" -#: ../src/empathy-main-window.c:688 +#: ../src/empathy-main-window.c:745 +#, c-format +msgid "Sorry, %s accounts can’t be used until your %s software is updated." +msgstr "" +"Ne pare rău, %s conturile nu pot fi utilizate până versiunea programului %s " +"nu este actualizată." + +#: ../src/empathy-main-window.c:813 +msgid "Update software..." +msgstr "Actualizează programul..." + +#: ../src/empathy-main-window.c:819 ../src/empathy-main-window.c:940 +msgid "Close" +msgstr "Închide" + +#: ../src/empathy-main-window.c:928 msgid "Reconnect" msgstr "Reconectează" -#: ../src/empathy-main-window.c:694 +#: ../src/empathy-main-window.c:934 msgid "Edit Account" msgstr "Editare cont" -#: ../src/empathy-main-window.c:700 -msgid "Close" -msgstr "Închide" +#. Translators: this string will be something like: +#. * Top up My Account ($1.23)..." +#: ../src/empathy-main-window.c:1073 +#, c-format +msgid "Top up %s (%s)..." +msgstr "Încarcă %s (%s)..." + +#: ../src/empathy-main-window.c:1120 +msgid "Top up account credit" +msgstr "Încarcă creditul contului" -#: ../src/empathy-main-window.c:1418 +#. top up button +#: ../src/empathy-main-window.c:1191 +msgid "Top Up..." +msgstr "Încarcă..." + +#: ../src/empathy-main-window.c:1934 msgid "Contact" msgstr "Contact" -#: ../src/empathy-main-window.c:1765 +#: ../src/empathy-main-window.c:2309 msgid "Contact List" -msgstr "Listă contacte" - -#: ../src/empathy-main-window.c:1881 -msgid "Show and edit accounts" -msgstr "Arată și modifică conturile" +msgstr "Listă de contacte" -#: ../src/empathy-main-window.ui.h:1 +#: ../src/empathy-main-window-menubar.ui.h:1 msgid "Contacts on a _Map" msgstr "Contactele pe o _hartă" -#: ../src/empathy-main-window.ui.h:2 +#: ../src/empathy-main-window-menubar.ui.h:2 +msgid "Credit Balance" +msgstr "Soldul creditului" + +#: ../src/empathy-main-window-menubar.ui.h:3 msgid "Find in Contact _List" msgstr "Caută în _lista de contacte" -#: ../src/empathy-main-window.ui.h:3 +#: ../src/empathy-main-window-menubar.ui.h:4 msgid "Join _Favorites" msgstr "Alăturare la camerele de discuții _favorite" -#: ../src/empathy-main-window.ui.h:4 +#: ../src/empathy-main-window-menubar.ui.h:5 msgid "Manage Favorites" msgstr "Gestionează favoritele" -#: ../src/empathy-main-window.ui.h:5 +#: ../src/empathy-main-window-menubar.ui.h:6 msgid "N_ormal Size" msgstr "Dimensiune n_ormală" -#: ../src/empathy-main-window.ui.h:6 ../src/empathy-status-icon.ui.h:1 +#: ../src/empathy-main-window-menubar.ui.h:7 ../src/empathy-status-icon.ui.h:1 msgid "New _Call…" msgstr "Ape_l nou…" -#: ../src/empathy-main-window.ui.h:7 +#: ../src/empathy-main-window-menubar.ui.h:8 msgid "Normal Size With _Avatars" msgstr "Dimensiune normală cu _avatare" -#: ../src/empathy-main-window.ui.h:8 +#: ../src/empathy-main-window-menubar.ui.h:9 msgid "P_references" msgstr "P_referințe" -#: ../src/empathy-main-window.ui.h:9 +#: ../src/empathy-main-window-menubar.ui.h:10 msgid "Show P_rotocols" msgstr "Arată p_rotocoalele" -#: ../src/empathy-main-window.ui.h:10 +#: ../src/empathy-main-window-menubar.ui.h:11 msgid "Sort by _Name" msgstr "Sortare după _nume" -#: ../src/empathy-main-window.ui.h:11 +#: ../src/empathy-main-window-menubar.ui.h:12 msgid "Sort by _Status" msgstr "Sortează după mesajul de _stare" -#: ../src/empathy-main-window.ui.h:12 +#: ../src/empathy-main-window-menubar.ui.h:13 msgid "_Accounts" msgstr "_Conturi" -#: ../src/empathy-main-window.ui.h:14 +#: ../src/empathy-main-window-menubar.ui.h:15 msgid "_Blocked Contacts" msgstr "Contacte _blocate" -#: ../src/empathy-main-window.ui.h:16 +#: ../src/empathy-main-window-menubar.ui.h:17 msgid "_Compact Size" msgstr "Dimensiune _compactă" -#: ../src/empathy-main-window.ui.h:18 -msgid "_Debug" -msgstr "_Depanare" - -#: ../src/empathy-main-window.ui.h:20 +#: ../src/empathy-main-window-menubar.ui.h:21 msgid "_File Transfers" msgstr "Transfer de _fișiere" -#: ../src/empathy-main-window.ui.h:22 +#: ../src/empathy-main-window-menubar.ui.h:23 msgid "_Join…" msgstr "A_lăturare…" -#: ../src/empathy-main-window.ui.h:23 ../src/empathy-status-icon.ui.h:3 +#: ../src/empathy-main-window-menubar.ui.h:24 +#: ../src/empathy-status-icon.ui.h:3 msgid "_New Conversation…" msgstr "Conversație _nouă…" -#: ../src/empathy-main-window.ui.h:24 +#: ../src/empathy-main-window-menubar.ui.h:25 msgid "_Offline Contacts" msgstr "C_ontacte deconectate" -#: ../src/empathy-main-window.ui.h:25 +#: ../src/empathy-main-window-menubar.ui.h:26 msgid "_Personal Information" msgstr "Informații _personale" -#: ../src/empathy-main-window.ui.h:27 +#: ../src/empathy-main-window-menubar.ui.h:28 msgid "_Room" msgstr "Cana_l de discuții" -#: ../src/empathy-main-window.ui.h:28 +#: ../src/empathy-main-window-menubar.ui.h:29 msgid "_Search for Contacts…" msgstr "_Caută contacte…" -#: ../src/empathy-new-chatroom-dialog.c:337 +#: ../src/empathy-new-chatroom-dialog.c:369 msgid "Chat Room" msgstr "Canal de discuții" -#: ../src/empathy-new-chatroom-dialog.c:353 +#: ../src/empathy-new-chatroom-dialog.c:385 msgid "Members" msgstr "Membri" #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name, #. yes/no, yes/no and a number. -#: ../src/empathy-new-chatroom-dialog.c:560 +#: ../src/empathy-new-chatroom-dialog.c:623 #, c-format msgid "" "%s\n" @@ -3755,16 +4257,16 @@ msgstr "" "Parolă necesară: %s\n" "Membri: %s" -#: ../src/empathy-new-chatroom-dialog.c:562 -#: ../src/empathy-new-chatroom-dialog.c:563 +#: ../src/empathy-new-chatroom-dialog.c:625 +#: ../src/empathy-new-chatroom-dialog.c:626 msgid "No" msgstr "Nu" -#: ../src/empathy-new-chatroom-dialog.c:591 +#: ../src/empathy-new-chatroom-dialog.c:654 msgid "Could not start room listing" msgstr "Nu s-a putut porni afișarea canalelor de discuții" -#: ../src/empathy-new-chatroom-dialog.c:601 +#: ../src/empathy-new-chatroom-dialog.c:664 msgid "Could not stop room listing" msgstr "Nu s-a putut opri afișarea canalelor de discuții" @@ -3789,7 +4291,7 @@ msgstr "" #: ../src/empathy-new-chatroom-dialog.ui.h:5 msgid "Join Room" -msgstr "Alăturare la canal de discuții" +msgstr "Alăturare la canale de discuții" #: ../src/empathy-new-chatroom-dialog.ui.h:6 msgid "Room List" @@ -3799,39 +4301,79 @@ msgstr "Listă canale de discuții" msgid "_Room:" msgstr "Cana_l:" -#: ../src/empathy-preferences.c:139 +#: ../src/empathy-preferences.c:166 msgid "Message received" msgstr "Mesaj primit" -#: ../src/empathy-preferences.c:140 +#: ../src/empathy-preferences.c:167 msgid "Message sent" msgstr "Mesaj trimis" -#: ../src/empathy-preferences.c:141 +#: ../src/empathy-preferences.c:168 msgid "New conversation" msgstr "Conversație nouă" -#: ../src/empathy-preferences.c:142 +#: ../src/empathy-preferences.c:169 msgid "Contact goes online" msgstr "Contactul se conectează" -#: ../src/empathy-preferences.c:143 +#: ../src/empathy-preferences.c:170 msgid "Contact goes offline" msgstr "Contactul se deconectează" -#: ../src/empathy-preferences.c:144 +#: ../src/empathy-preferences.c:171 msgid "Account connected" msgstr "Cont conectat" -#: ../src/empathy-preferences.c:145 +#: ../src/empathy-preferences.c:172 msgid "Account disconnected" msgstr "Cont deconectat" -#: ../src/empathy-preferences.c:446 +#: ../src/empathy-preferences.c:475 msgid "Language" msgstr "Limbă" -#: ../src/empathy-preferences.c:875 +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:725 +msgid "Juliet" +msgstr "Julieta" + +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:732 +msgid "Romeo" +msgstr "Romeo" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:738 +msgid "O Romeo, Romeo, wherefore art thou Romeo?" +msgstr "O Romeo, Romeo, pentru ce ești Romeo?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:741 +msgid "Deny thy father and refuse thy name;" +msgstr "Respinge-l pe tatăl tău și refuză numele lui;" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:744 +msgid "Or if thou wilt not, be but sworn my love" +msgstr "Sau dacă nu vei fi, jur pe dragostea mea" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:747 +msgid "And I'll no longer be a Capulet." +msgstr "Și nu voi mai fi un Capulet." + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:750 +msgid "Shall I hear more, or shall I speak at this?" +msgstr "Voi auzi mai multe sau voi vorbi mai multe?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:753 +msgid "Juliet has disconnected" +msgstr "Julieta s-a deconectat" + +#: ../src/empathy-preferences.c:1157 msgid "Preferences" msgstr "Preferințe" @@ -3839,67 +4381,80 @@ msgstr "Preferințe" msgid "Appearance" msgstr "Aspect" -#: ../src/empathy-preferences.ui.h:2 +#: ../src/empathy-preferences.ui.h:3 msgid "Behavior" msgstr "Comportament" -#: ../src/empathy-preferences.ui.h:3 +#: ../src/empathy-preferences.ui.h:5 msgid "Chat Th_eme:" msgstr "T_ema conversațiilor:" -#: ../src/empathy-preferences.ui.h:4 +#: ../src/empathy-preferences.ui.h:6 msgid "Disable notifications when _away or busy" -msgstr "Dez_activează notificările când sunt plecat sau ocupat" +msgstr "Dez_activează notificările când utilizatorul este plecat sau ocupat" -#: ../src/empathy-preferences.ui.h:5 +#: ../src/empathy-preferences.ui.h:7 msgid "Disable sounds when _away or busy" -msgstr "Dez_activează sunetele când sunt plecat sau ocupat" +msgstr "Dez_activează sunetele când utilizatorul este plecat sau ocupat" -#: ../src/empathy-preferences.ui.h:6 +#: ../src/empathy-preferences.ui.h:8 msgid "Display incoming events in the notification area" -msgstr "Afișează evenimentele primite în zona de notificare" +msgstr "Afișează evenimentele sosite în zona de notificare" -#: ../src/empathy-preferences.ui.h:7 +#: ../src/empathy-preferences.ui.h:9 +msgid "" +"Echo cancellation helps to make your voice sound clearer to the other " +"person, but may cause problems on some computers. If you or the other person " +"hear strange noises or glitches during calls, try turning echo cancellation " +"off and restarting the call." +msgstr "" +"Funcția de reducere a ecoului vă va face vocea mai clară pentru cealaltă " +"persoană, dar poate crea probleme pe unele calculatoare. Dacă dumneavoastră " +"sau altă persoană auziți zgomote ciudate sau scăpări de sunete în timpul " +"apelului, încercați să opriți funcția de reducere a ecoului, iar apoi " +"reporniți apelul." + +#: ../src/empathy-preferences.ui.h:10 msgid "Enable notifications when a contact comes online" msgstr "Activează notificările când un contact se conectează" -#: ../src/empathy-preferences.ui.h:8 +#: ../src/empathy-preferences.ui.h:11 msgid "Enable notifications when a contact goes offline" msgstr "Activează notificările când un contact se deconectează" -#: ../src/empathy-preferences.ui.h:9 +#: ../src/empathy-preferences.ui.h:12 msgid "Enable notifications when the _chat is not focused" -msgstr "Activează notificările când dis_cuția nu este în prim plan" +msgstr "Activează notificările _când discuția nu este în prim plan" -#: ../src/empathy-preferences.ui.h:10 +#: ../src/empathy-preferences.ui.h:13 msgid "Enable spell checking for languages:" msgstr "Activează verificarea ortografică pentru aceste limbi:" -#: ../src/empathy-preferences.ui.h:11 +#: ../src/empathy-preferences.ui.h:14 msgid "General" msgstr "Generale" -#: ../src/empathy-preferences.ui.h:13 +#: ../src/empathy-preferences.ui.h:16 msgid "Location sources:" msgstr "Surse locații:" -#: ../src/empathy-preferences.ui.h:14 +#: ../src/empathy-preferences.ui.h:17 msgid "Log conversations" msgstr "Jurnal conversații" -#: ../src/empathy-preferences.ui.h:15 +#: ../src/empathy-preferences.ui.h:18 msgid "Notifications" msgstr "Notificări" -#: ../src/empathy-preferences.ui.h:16 +#: ../src/empathy-preferences.ui.h:19 msgid "Play sound for events" msgstr "Redă sunete pentru evenimente" -#: ../src/empathy-preferences.ui.h:17 +#: ../src/empathy-preferences.ui.h:20 msgid "Privacy" msgstr "Intimitate" -#: ../src/empathy-preferences.ui.h:18 +#: ../src/empathy-preferences.ui.h:21 msgid "" "Reduced location accuracy means that nothing more precise than your city, " "state and country will be published. GPS coordinates will be accurate to 1 " @@ -3909,67 +4464,77 @@ msgstr "" "statul și țara dumneavoastră nu vor fi publicate. Coordonatele GPS vor avea " "o precizie de o cifră zecimală." -#: ../src/empathy-preferences.ui.h:19 +#: ../src/empathy-preferences.ui.h:22 msgid "Show _smileys as images" msgstr "Arată e_moticoanele ca imagini" -#: ../src/empathy-preferences.ui.h:20 +#: ../src/empathy-preferences.ui.h:23 msgid "Show contact _list in rooms" msgstr "Afișează _lista de contacte în canale de discuții" -#: ../src/empathy-preferences.ui.h:21 +#: ../src/empathy-preferences.ui.h:24 msgid "Sounds" msgstr "Sunete" -#: ../src/empathy-preferences.ui.h:22 +#: ../src/empathy-preferences.ui.h:25 msgid "Spell Checking" msgstr "Verificare ortografică" -#: ../src/empathy-preferences.ui.h:23 +#: ../src/empathy-preferences.ui.h:26 msgid "" "The list of languages reflects only the languages for which you have a " "dictionary installed." msgstr "" "Lista limbilor reflectă doar limbile pentru care aveți instalat un dicționar." -#: ../src/empathy-preferences.ui.h:24 +#: ../src/empathy-preferences.ui.h:27 msgid "Themes" msgstr "Teme" -#: ../src/empathy-preferences.ui.h:25 +#: ../src/empathy-preferences.ui.h:28 +msgid "Use _echo cancellation to improve call quality" +msgstr "" +"Utilizați funcția de reducere a _ecoului pentru a îmbunătăți calitatea " +"apelului" + +#: ../src/empathy-preferences.ui.h:29 +msgid "Variant:" +msgstr "Variantă:" + +#: ../src/empathy-preferences.ui.h:30 msgid "_Automatically connect on startup" msgstr "Conectare _automată la pornire " -#: ../src/empathy-preferences.ui.h:26 +#: ../src/empathy-preferences.ui.h:31 msgid "_Cellphone" msgstr "Telefon mobi_l" -#: ../src/empathy-preferences.ui.h:27 +#: ../src/empathy-preferences.ui.h:32 msgid "_Enable bubble notifications" -msgstr "Activar_e notificări balon" +msgstr "Activ_ează notificările balon" -#: ../src/empathy-preferences.ui.h:28 +#: ../src/empathy-preferences.ui.h:33 msgid "_Enable sound notifications" msgstr "Activ_ează notificările sonore" -#: ../src/empathy-preferences.ui.h:29 +#: ../src/empathy-preferences.ui.h:34 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:30 +#: ../src/empathy-preferences.ui.h:35 msgid "_Network (IP, Wi-Fi)" msgstr "Rețea (IP, _Wifi)" -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:36 msgid "_Open new chats in separate windows" msgstr "Deschide discuțiile n_oi în ferestre separate" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:37 msgid "_Publish location to my contacts" msgstr "_Publică contactelor locația mea" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:39 msgid "_Reduce location accuracy" msgstr "_Redu acuratețea locației" @@ -3981,67 +4546,115 @@ msgstr "Stare" msgid "_Quit" msgstr "_Ieșire" -#: ../src/empathy-map-view.c:442 +#: ../src/empathy-streamed-media-window.ui.h:2 +msgid "Call the contact again" +msgstr "Apelează din nou contactul" + +#: ../src/empathy-streamed-media-window.ui.h:3 +msgid "Camera Off" +msgstr "Cameră dezactivată" + +#: ../src/empathy-streamed-media-window.ui.h:4 +msgid "Camera On" +msgstr "Cameră activată" + +#: ../src/empathy-streamed-media-window.ui.h:6 +msgid "Disable camera and stop sending video" +msgstr "Dezactivează camera și oprește transmisia video" + +#: ../src/empathy-streamed-media-window.ui.h:7 +msgid "Enable camera and send video" +msgstr "Activează camera și trimite video" + +#: ../src/empathy-streamed-media-window.ui.h:8 +msgid "Enable camera but don't send video" +msgstr "Activează camera, dar nu trimite video" + +#: ../src/empathy-streamed-media-window.ui.h:13 +msgid "Preview" +msgstr "Previzualizare" + +#: ../src/empathy-streamed-media-window.ui.h:14 +msgid "Redial" +msgstr "Formează din nou" + +#: ../src/empathy-streamed-media-window.ui.h:19 +msgid "V_ideo" +msgstr "V_ideo" + +#: ../src/empathy-streamed-media-window.ui.h:21 +msgid "Video Off" +msgstr "Video dezactivat" + +#: ../src/empathy-streamed-media-window.ui.h:22 +msgid "Video On" +msgstr "Video activat" + +#: ../src/empathy-streamed-media-window.ui.h:23 +msgid "Video Preview" +msgstr "Previzualizare video" + +#: ../src/empathy-map-view.c:448 msgid "Contact Map View" msgstr "Vizualizare hartă de contacte" -#: ../src/empathy-debug-window.c:1218 +#: ../src/empathy-debug-window.c:1228 msgid "Save" msgstr "Salvează" -#: ../src/empathy-debug-window.c:1394 +#: ../src/empathy-debug-window.c:1435 msgid "Debug Window" msgstr "Fereastră de depanare" -#: ../src/empathy-debug-window.c:1476 +#: ../src/empathy-debug-window.c:1517 msgid "Pause" msgstr "Pauză" -#: ../src/empathy-debug-window.c:1488 +#: ../src/empathy-debug-window.c:1529 msgid "Level " msgstr "Nivel " -#: ../src/empathy-debug-window.c:1508 +#: ../src/empathy-debug-window.c:1549 msgid "Debug" msgstr "Depanare" -#: ../src/empathy-debug-window.c:1514 +#: ../src/empathy-debug-window.c:1555 msgid "Info" msgstr "Informativ" -#: ../src/empathy-debug-window.c:1520 ../src/empathy-debug-window.c:1569 +#: ../src/empathy-debug-window.c:1561 ../src/empathy-debug-window.c:1610 msgid "Message" msgstr "Mesaj" -#: ../src/empathy-debug-window.c:1526 +#: ../src/empathy-debug-window.c:1567 msgid "Warning" msgstr "Avertisment" -#: ../src/empathy-debug-window.c:1532 +#: ../src/empathy-debug-window.c:1573 msgid "Critical" msgstr "Critic" -#: ../src/empathy-debug-window.c:1538 +#: ../src/empathy-debug-window.c:1579 msgid "Error" msgstr "Eroare" -#: ../src/empathy-debug-window.c:1557 +#: ../src/empathy-debug-window.c:1598 msgid "Time" msgstr "Timp" -#: ../src/empathy-debug-window.c:1560 +#: ../src/empathy-debug-window.c:1601 msgid "Domain" msgstr "Domeniu" -#: ../src/empathy-debug-window.c:1562 +#: ../src/empathy-debug-window.c:1603 msgid "Category" msgstr "Categorie" -#: ../src/empathy-debug-window.c:1564 +#: ../src/empathy-debug-window.c:1605 msgid "Level" msgstr "Nivel" -#: ../src/empathy-debug-window.c:1601 +#: ../src/empathy-debug-window.c:1642 msgid "" "The selected connection manager does not support the remote debugging " "extension." @@ -4049,22 +4662,22 @@ msgstr "" "Administratorul de conexiuni ales nu suportă extensia de depanare la " "distanță." -#: ../src/empathy-invite-participant-dialog.c:34 -#: ../src/empathy-invite-participant-dialog.c:48 +#: ../src/empathy-invite-participant-dialog.c:197 +#: ../src/empathy-invite-participant-dialog.c:225 msgid "Invite Participant" -msgstr "Invită participant" +msgstr "Invită un participant" -#: ../src/empathy-invite-participant-dialog.c:35 +#: ../src/empathy-invite-participant-dialog.c:198 msgid "Choose a contact to invite into the conversation:" msgstr "Alegeți contactul care va fi invitat în conversație:" -#: ../src/empathy-invite-participant-dialog.c:45 +#: ../src/empathy-invite-participant-dialog.c:221 msgid "Invite" msgstr "Invită" #: ../src/empathy-accounts.c:183 msgid "Don't display any dialogs; do any work (eg, importing) and exit" -msgstr "Nu afișa niciun dialog; fă orice acțiune (ex: importare) și ieși" +msgstr "Nu afișa niciun dialog; fă orice acțiune (de ex: importare) și ieși" #: ../src/empathy-accounts.c:187 msgid "" @@ -4075,21 +4688,33 @@ msgstr "" #: ../src/empathy-accounts.c:191 msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)" -msgstr "Alege inițial contul dat (ex: gabble/jabber/foo_40example_2eorg0)" +msgstr "Alege inițial contul dat (de ex: gabble/jabber/foo_40example_2eorg0)" #: ../src/empathy-accounts.c:193 msgid "" msgstr "" -#: ../src/empathy-accounts.c:198 +#: ../src/empathy-accounts.c:196 +msgid "Show account assistant" +msgstr "Arată asistentul de contacte" + +#: ../src/empathy-accounts.c:202 msgid "- Empathy Accounts" msgstr "- Conturi Empathy" -#: ../src/empathy-accounts.c:237 +#: ../src/empathy-accounts.c:238 msgid "Empathy Accounts" msgstr "Conturi Empathy" -#: ../src/empathy-debugger.c:66 +#: ../src/empathy-debugger.c:69 +msgid "Show a particular service" +msgstr "Afișează un anumit serviciu" + +#: ../src/empathy-debugger.c:74 +msgid "- Empathy Debugger" +msgstr "- Depanator Empathy" + +#: ../src/empathy-debugger.c:113 msgid "Empathy Debugger" msgstr "Depanator Empathy" @@ -4097,38 +4722,154 @@ msgstr "Depanator Empathy" msgid "- Empathy Chat Client" msgstr "- Client de chat Empathy" -#: ../src/empathy-notifications-approver.c:184 +#: ../src/empathy-notifications-approver.c:190 msgid "Respond" msgstr "Răspunde" -#: ../src/empathy-notifications-approver.c:190 +#: ../src/empathy-notifications-approver.c:204 +#: ../src/empathy-call-window.c:1565 msgid "Reject" msgstr "Respinge" -#: ../src/empathy-notifications-approver.c:194 +#: ../src/empathy-notifications-approver.c:209 +#: ../src/empathy-notifications-approver.c:214 +#: ../src/empathy-call-window.c:1566 msgid "Answer" msgstr "Răspunde" -#: ../src/empathy-notifications-approver.c:201 -#: ../src/empathy-notifications-approver.c:211 +#: ../src/empathy-notifications-approver.c:214 +msgid "Answer with video" +msgstr "Răspunde cu imagine video" + +#: ../src/empathy-notifications-approver.c:222 +#: ../src/empathy-notifications-approver.c:232 msgid "Decline" msgstr "Refuză" -#: ../src/empathy-notifications-approver.c:205 -#: ../src/empathy-notifications-approver.c:216 +#: ../src/empathy-notifications-approver.c:226 +#: ../src/empathy-notifications-approver.c:237 msgid "Accept" msgstr "Acceptă" -#: ../src/empathy-call-observer.c:130 -#, c-format -msgid "Missed call from %s" -msgstr "Apel pierdut de la %s" +#. translators: the 'Provide' button is displayed in a notification +#. * bubble when Empathy is asking for an account password; clicking on it +#. * brings the password popup. +#: ../src/empathy-notifications-approver.c:247 +msgid "Provide" +msgstr "Previzualizare" -#: ../src/empathy-call-observer.c:133 +#: ../src/empathy-call-observer.c:134 #, c-format msgid "%s just tried to call you, but you were in another call." msgstr "%s a încercat să vă sune, dar erați deja în alt apel." +#. Translators: this is an "Info" label. It should be as short +#. * as possible. +#: ../src/empathy-call-window.c:1172 ../src/empathy-call-window.c:1195 +msgid "i" +msgstr "i" + +#: ../src/empathy-call-window.c:2929 +msgid "On hold" +msgstr "În așteptare" + +#: ../src/empathy-call-window.c:2932 +msgid "Mute" +msgstr "Mut" + +#: ../src/empathy-call-window.c:2934 +msgid "Duration" +msgstr "Durată" + +#. Translators: 'status - minutes:seconds' the caller has been connected +#: ../src/empathy-call-window.c:2937 +#, c-format +msgid "%s — %d:%02dm" +msgstr "%s — %d:%02dm" + +#: ../src/empathy-call-window.c:3207 +#, c-format +msgid "Your current balance is %s." +msgstr "Soldul curent este %s." + +#: ../src/empathy-call-window.c:3211 +msgid "Sorry, you don’t have enough credit for that call." +msgstr "Ne pare rău, nu aveți sold suficient pentru a efectua acest apel." + +#: ../src/empathy-call-window.c:3213 +msgid "Top Up" +msgstr "Încarcă" + +#: ../libempathy-gtk/empathy-search-bar.c:243 +msgid "_Match case" +msgstr "_Majuscule semnificative" + +#~ msgid "Empathy has migrated butterfly logs" +#~ msgstr "Empathy a migrat înregistrările butterfly" + +#~ msgid "Whether Empathy has migrated butterfly logs." +#~ msgstr "Dacă Empathy a migrat înregistrările butterfly." + +#~ msgid "All" +#~ msgstr "Toate" + +#~ msgid "_Enabled" +#~ msgstr "_Activat" + +#~ msgid "Ungrouped" +#~ msgstr "Negrupate" + +#~ msgid "Favorite People" +#~ msgstr "Persoane favorite" + +#~ msgid "Select a contact" +#~ msgstr "Alege un contact" + +#~ msgid "Date" +#~ msgstr "Dată" + +#~ msgid "Conversations" +#~ msgstr "Conversații" + +#~ msgid "Find Next" +#~ msgstr "Caută următorul" + +#~ msgid "Find Previous" +#~ msgstr "Caută precedentul" + +#~ msgid "Previous Conversations" +#~ msgstr "Conversații anterioare" + +#~ msgid "_For:" +#~ msgstr "_După:" + +#~ msgid "Contact ID:" +#~ msgstr "ID contact:" + +#~ msgid "C_hat" +#~ msgstr "_Discută" + +#~ msgid "C_all" +#~ msgstr "_Apelează" + +#~ msgid "Set your presence and current status" +#~ msgstr "Definiți preferințele și mesajul de stare curent" + +#~ msgid "Enter Custom Message" +#~ msgstr "Introduceți mesajul personalizat" + +#~ msgid "Save _New Status Message" +#~ msgstr "Salvează mesaj de stare _nou" + +#~ msgid "Saved Status Messages" +#~ msgstr "Mesaje de stare salvate" + +#~ msgid "The selected contact cannot receive files." +#~ msgstr "Contactul selectat nu poate primi fișiere." + +#~ msgid "Show and edit accounts" +#~ msgstr "Arată și modifică conturile" + #~ msgid "%s is now offline." #~ msgstr "%s s-a deconectat." diff --git a/po/sl.po b/po/sl.po index 4fde21ab..7a69de31 100644 --- a/po/sl.po +++ b/po/sl.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: empathy master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=empathy&keywords=I18N+L10N&component=General\n" -"POT-Creation-Date: 2011-10-25 14:00+0000\n" -"PO-Revision-Date: 2011-10-25 21:14+0100\n" +"POT-Creation-Date: 2011-11-25 16:24+0000\n" +"PO-Revision-Date: 2011-11-25 21:04+0100\n" "Last-Translator: Matej Urbančič \n" "Language-Team: Slovenščina \n" "Language: \n" @@ -44,406 +44,398 @@ msgid "Always open a separate chat window for new chats." msgstr "Za nov klepet vedno odpri ločeno klepetalno okno." #: ../data/org.gnome.Empathy.gschema.xml.in.h:2 -msgid "Call volume" -msgstr "Glasnost klica" - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 -msgid "Call volume, as a percentage." -msgstr "Glasnost klica kot odstotek." - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 msgid "Camera device" msgstr "Naprava kamere" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 msgid "Camera position" msgstr "Položaj kamere" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 msgid "Character to add after nickname when using nick completion (tab) in group chat." msgstr "Znak, ki naj bo dodan vzdevku ob uporabi možnosti dopolnjevanja vzdevkov (zavihek) v skupinskem klepetu." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 msgid "Chat window theme" msgstr "Tema klepetalnega okna" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 msgid "Chat window theme variant" msgstr "Različica teme klepetalnega okna" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 msgid "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")." msgstr "Z vejico ločen seznam uporabljenih črkovalnikov (primer: \"sl, en, fr\")." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 msgid "Compact contact list" msgstr "Skrči seznam stikov" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 msgid "Connection managers should be used" msgstr "Uporabljen naj bo upravljalnik omrežja" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 msgid "Contact list sort criterion" msgstr "Kriterij razvrščanja seznama stikov" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 msgid "D-Bus object path of the last account selected to join a room." msgstr "Pot predmeta vodila D-Bus zadnjega izbranega računa pri pridruženju klepetalnici." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 msgid "Default camera device to use in video calls, e.g. /dev/video0." msgstr "Privzeta naprava kamere za uporabo pri video klicih, na primer /dev/video0." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 msgid "Default directory to select an avatar image from" msgstr "Privzeta mapa slik za izbor podobe" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 msgid "Disable popup notifications when away" msgstr "Onemogoči pojavna obvestila ob odsotnosti" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 msgid "Disable sounds when away" msgstr "Onemogoči zvok ob odsotnosti" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 msgid "Display incoming events in the status area" msgstr "Prikaz prihajajočih dogodkov v vrstici stanja." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 msgid "Display incoming events in the status area. If false, present them to the user immediately." msgstr "Prikaz prihajajočih dogodkov v vrstici stanja. V primeru, da možnost ni izbrana, bodo prikazane takoj." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 msgid "Echo cancellation support" msgstr "Podpora odpravljanju odmevov" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 msgid "Empathy can publish the user's location" msgstr "Program Empathy lahko objavi mesto nahajanja uporabnika" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 msgid "Empathy can use the GPS to guess the location" msgstr "Program Empathy lahko uporabi GPS za ugotavljanje mesta nahajanja" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 msgid "Empathy can use the cellular network to guess the location" msgstr "Program Empathy lahko uporabi mobilni telefon za ugotavljanje mesta nahajanja" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 msgid "Empathy can use the network to guess the location" msgstr "Program Empathy lahko uporabi omrežje za ugotavljanje mesta nahajanja" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 msgid "Empathy default download folder" msgstr "Privzeta mapa za prenos datotek" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 msgid "Empathy should auto-away when idle" msgstr "Ob nedejavnosti samodejno preklopi na stanje odsotnosti" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 msgid "Empathy should auto-connect on startup" msgstr "Program Empathy naj se samodejno poveže ob zagonu" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 msgid "Empathy should reduce the location's accuracy" msgstr "Program Empathy naj zmanjša natančnost določevanja nahajanja" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 msgid "Empathy should use the avatar of the contact as the chat window icon" msgstr "Program naj uporabi podobo stika kot ikono klepetalnega okna" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 msgid "Enable WebKit Developer Tools" msgstr "Omogoči razvojna orodja WebKit" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 msgid "Enable popup notifications for new messages" msgstr "Omogoči pojavna obvestila ob novih sporočilih" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 msgid "Enable spell checker" msgstr "Omogoči črkovalnik" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 msgid "Hide main window" msgstr "Skrij glavno okno" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 msgid "Hide the main window." msgstr "Skrivanje glavnega okna." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 msgid "Last account selected in Join Room dialog" msgstr "Zadnji izbran račun v pogovornem oknu pridruženja klepetalnici" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 msgid "Nick completed character" msgstr "Znak na koncu vzdevka" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 msgid "Open new chats in separate windows" msgstr "Nov klepet naj se odpre v ločenem oknu" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 msgid "Path of the Adium theme to use" msgstr "Pot do želene teme Adium " -#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 msgid "Path of the Adium theme to use if the theme used for chat is Adium." msgstr "Pot do želene teme Adium, kadar je ta določena za klepet." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 msgid "Play a sound for incoming messages" msgstr "Predvajaj zvok ob prejetju novih sporočil" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 msgid "Play a sound for new conversations" msgstr "Predvajaj zvok ob novih pogovorih" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 msgid "Play a sound for outgoing messages" msgstr "Predvajaj zvok ob pošiljanju sporočil" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 msgid "Play a sound when a contact logs in" msgstr "Predvajaj zvok ob prijavi stika" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 msgid "Play a sound when a contact logs out" msgstr "Predvajaj zvok ob odjavi stika" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Play a sound when we log in" msgstr "Predvajaj zvok ob prijavi" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Play a sound when we log out" msgstr "Predvajaj zvok ob odjavi" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Pop up notifications if the chat isn't focused" msgstr "Pokaži pojavna obvestila, ko klepetalno okno ni v žarišču." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Pop up notifications when a contact logs in" msgstr "Pokaži pojavna obvestila ob prijavi stikov" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Pop up notifications when a contact logs out" msgstr "Pokaži pojavna obvestila ob odjavi stikov" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 msgid "Position the camera preview should be during a call." msgstr "Položaj predogleda kamere med klicem." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 msgid "Show Balance in contact list" msgstr "Pokaži stanje na računu v seznamu stikov" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "Show avatars" msgstr "Pokaži podobe" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "Show contact list in rooms" msgstr "Pokaži seznam stikov v klepetalnicah" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "Show hint about closing the main window" msgstr "Pokaži namig ob zapiranju glavnega okna" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "Show offline contacts" msgstr "Pokaži tudi nepovezane stike" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Show protocols" msgstr "Pokaži protokole" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Spell checking languages" msgstr "Jeziki za črkovanje" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "The default folder to save file transfers in." msgstr "Privzeta mapa za shranjevanje prejetih datotek." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "The last directory that an avatar image was chosen from." msgstr "Zadnja mapa iz katere je bila izbrana podoba." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "The position for the chat window side pane" msgstr "Položaj stranskega pladnja v klepetalnem oknu" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "The stored position (in pixels) of the chat window side pane." msgstr "Shranjen položaj (v točkah) stranskega pladnja v klepetalnem oknu." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "The theme that is used to display the conversation in chat windows." msgstr "Tema uporabljena za prikaz pogovorov v klepetalnih oknih." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 msgid "The theme variant that is used to display the conversation in chat windows." msgstr "Različica teme, ki je uporabljena za prikaz pogovorov v klepetalnih oknih." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "Use graphical smileys" msgstr "Uporabi slikovne smeške" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "Use notification sounds" msgstr "Uporabi zvoke obvestil" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "Use theme for chat rooms" msgstr "Uporabi temo za klepetalnice" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "Ali naj program Empathy objavlja mesta nahajanja uporabnika njegovim stikom." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "Whether Empathy can use the GPS to guess the location." msgstr "Ali naj program Empathy za pridobivanje mesta nahajanja uporablja GPS." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "Ali naj Empathy za pridobivanje mesta nahajanja uporablja podatke mobilnega omrežja." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "Whether Empathy can use the network to guess the location." msgstr "Ali naj Empathy za pridobivanje mesta nahajanja uporablja omrežje." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "Ali naj se ob zagonu program Empathy samodejno prijavi v vaše račune." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "Whether Empathy should go into away mode automatically if the user is idle." msgstr "Ali naj ob nedejavnosti program Empathy samodejno vzpostavi stanje odsotnosti." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "Whether Empathy should reduce the location's accuracy for privacy reasons." msgstr "Ali naj program Empathy zaradi zasebnosti zmanjšuje natančnost položaja." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 msgid "Whether Empathy should use the avatar of the contact as the chat window icon." msgstr "Ali naj program Empathy uporablja podobe stikov za ikone klepetalnih oken." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 msgid "Whether WebKit developer tools, such as the Web Inspector, should be enabled." msgstr "Ali naj bodo vključena razvijalna orodja WebKit kot je na primer Web Inspector." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 msgid "Whether connectivity managers should be used to automatically disconnect/reconnect." msgstr "Ali naj upravljalnik omrežja samodejno vzpostavi in prekine povezavo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 msgid "Whether to check words typed against the languages you want to check with." msgstr "Ali naj se preverja črkovanje besed v želenih jezikih." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 msgid "Whether to convert smileys into graphical images in conversations." msgstr "Ali naj se pri pogovorih smeški pretvorijo v sličice." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 msgid "Whether to enable Pulseaudio's echo cancellation filter." msgstr "Ali naj se omogoči filter odpravljanja odmevov Pulseaudio." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 msgid "Whether to play a sound to notify of contacts logging into the network." msgstr "Ali naj se predvaja zvok ob prijavi stika v omrežje." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 msgid "Whether to play a sound to notify of contacts logging out of the network." msgstr "Ali naj se predvaja zvok ob odjavi stika iz omrežja." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 msgid "Whether to play a sound to notify of events." msgstr "Ali naj se predvaja zvok ob dogodkih." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 msgid "Whether to play a sound to notify of incoming messages." msgstr "Ali naj se predvaja zvok ob prejetju novega sporočila." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 msgid "Whether to play a sound to notify of new conversations." msgstr "Ali naj se predvaja zvok ob novih pogovorih." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 msgid "Whether to play a sound to notify of outgoing messages." msgstr "Ali naj se predvaja zvok ob pošiljanju sporočil." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 msgid "Whether to play a sound when logging into a network." msgstr "Ali naj se predvaja zvok ob prijavi v omrežje." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 msgid "Whether to play a sound when logging out of a network." msgstr "Ali naj se predvaja zvok ob odjavi iz omrežja." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 msgid "Whether to play sound notifications when away or busy." msgstr "Ali naj se predvaja zvok ob odsotnosti in zaposlenosti." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 msgid "Whether to show a popup notification when a contact goes offline." msgstr "Ali naj se pojavi obvestilo, ko stik izklopi povezavo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 msgid "Whether to show a popup notification when a contact goes online." msgstr "Ali naj se pojavi obvestilo ob vzpostavitvi povezave stika." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 msgid "Whether to show a popup notification when receiving a new message even if the chat is already opened, but not focused." msgstr "Ali naj se pojavi obvestilo ob prejetju novega sporočila tudi, kadar je klepetalno okno že odprto, vendar ni v žarišču." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 msgid "Whether to show a popup notification when receiving a new message." msgstr "Ali naj se pojavi obvestilo ob prejetju novega sporočila." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:93 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 msgid "Whether to show account balances in the contact list." msgstr "Ali naj se v seznamu stikov pokaže tudi stanje na računu." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:94 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 msgid "Whether to show avatars for contacts in the contact list and chat windows." msgstr "Ali naj bodo podobe stikov prikazane v seznamih in klepetalnih oknih." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:95 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:93 msgid "Whether to show contacts that are offline in the contact list." msgstr "Ali naj bodo na seznamu stikov prikazani tudi nepovezani stiki." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:96 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:94 msgid "Whether to show popup notifications when away or busy." msgstr "Ali naj bodo pojavna obvestila prikazana ob odsotnosti ali zaposlenosti." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:97 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:95 msgid "Whether to show protocols for contacts in the contact list." msgstr "Ali naj bodo v seznamih stikov in klepetalnih oknih prikazani protokoli stikov." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:98 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:96 msgid "Whether to show the contact list in chat rooms." msgstr "Ali naj bo v klepetalnicah prikazan seznam stikov." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:99 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:97 msgid "Whether to show the contact list in compact mode." msgstr "Ali naj bo v skrčenem pogledu prikazan seznam stikov." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:100 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:98 msgid "Whether to show the message dialog about closing the main window with the 'x' button in the title bar." msgstr "Ali naj bo pogovorno okno sporočila o zapiranju glavnega okna prikazano z gumbom 'x' v nazivni vrstici." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:101 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:99 msgid "Whether to use the theme for chat rooms." msgstr "Ali naj se za klepetalnice uporablja tema." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:102 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:100 msgid "Which criterion to use when sorting the contact list. Default is to sort by the contact's name with the value \"name\". A value of \"state\" will sort the contact list by state." msgstr "Kateri kriterij naj se uporabi za razvrščanje seznama stikov. Privzeto je razvrščanje po imenu stika z vrednostjo \"ime\". Vrednost \"stanje\" pa razvrsti seznam glede na stanje stikov." @@ -453,7 +445,7 @@ msgstr "Upravljanje s sporočanjem in računi VoIP" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2324 +#: ../src/empathy-accounts-dialog.c:2312 msgid "Messaging and VoIP Accounts" msgstr "Sporočanje in računi VoIP" @@ -744,7 +736,7 @@ msgstr[3] "Pred %d meseci" msgid "in the future" msgstr "v prihodnosti" -#: ../libempathy-gtk/empathy-account-chooser.c:540 +#: ../libempathy-gtk/empathy-account-chooser.c:688 msgid "All accounts" msgstr "Vsi računi" @@ -767,58 +759,58 @@ msgstr "Strežnik" msgid "Port" msgstr "Vrata" -#: ../libempathy-gtk/empathy-account-widget.c:769 -#: ../libempathy-gtk/empathy-account-widget.c:826 +#: ../libempathy-gtk/empathy-account-widget.c:776 +#: ../libempathy-gtk/empathy-account-widget.c:828 #, c-format msgid "%s:" msgstr "%s:" -#: ../libempathy-gtk/empathy-account-widget.c:1192 +#: ../libempathy-gtk/empathy-account-widget.c:1182 msgid "My Web Accounts" msgstr "Moji spletni računi" -#: ../libempathy-gtk/empathy-account-widget.c:1209 +#: ../libempathy-gtk/empathy-account-widget.c:1199 #, c-format msgid "The account %s is edited via %s." msgstr "Račun %s se ureja preko %s." -#: ../libempathy-gtk/empathy-account-widget.c:1215 +#: ../libempathy-gtk/empathy-account-widget.c:1205 #, c-format msgid "The account %s cannot be edited in Empathy." msgstr "Računa %s s programom Empathy ni mogoče urejati." -#: ../libempathy-gtk/empathy-account-widget.c:1234 +#: ../libempathy-gtk/empathy-account-widget.c:1224 msgid "Launch My Web Accounts" msgstr "Zaženi spletne račune" #. general handler -#: ../libempathy-gtk/empathy-account-widget.c:1242 +#: ../libempathy-gtk/empathy-account-widget.c:1232 #, c-format msgid "Edit %s" msgstr "Uredi %s" -#: ../libempathy-gtk/empathy-account-widget.c:1592 +#: ../libempathy-gtk/empathy-account-widget.c:1582 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11 msgid "Username:" msgstr "Uporabniško ime:" -#: ../libempathy-gtk/empathy-account-widget.c:1910 +#: ../libempathy-gtk/empathy-account-widget.c:1900 msgid "A_pply" msgstr "_Uveljavi" -#: ../libempathy-gtk/empathy-account-widget.c:1940 +#: ../libempathy-gtk/empathy-account-widget.c:1930 msgid "L_og in" msgstr "_Prijava" -#: ../libempathy-gtk/empathy-account-widget.c:2014 +#: ../libempathy-gtk/empathy-account-widget.c:2004 msgid "This account already exists on the server" msgstr "Ta račun na strežniku že obstaja" -#: ../libempathy-gtk/empathy-account-widget.c:2017 +#: ../libempathy-gtk/empathy-account-widget.c:2007 msgid "Create a new account on the server" msgstr "Ustvari nov račun na strežniku" -#: ../libempathy-gtk/empathy-account-widget.c:2209 +#: ../libempathy-gtk/empathy-account-widget.c:2201 msgid "Ca_ncel" msgstr "_Prekliči" @@ -827,19 +819,19 @@ msgstr "_Prekliči" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2487 +#: ../libempathy-gtk/empathy-account-widget.c:2479 #, c-format msgid "%1$s on %2$s" msgstr "%1$s na %2$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2513 +#: ../libempathy-gtk/empathy-account-widget.c:2505 #, c-format msgid "%s Account" msgstr "%s račun" -#: ../libempathy-gtk/empathy-account-widget.c:2517 +#: ../libempathy-gtk/empathy-account-widget.c:2509 msgid "New account" msgstr "Nov račun" @@ -887,7 +879,7 @@ msgstr "Zapomni si geslo" #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:6 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6 -#: ../libempathy-gtk/empathy-password-dialog.c:311 +#: ../libempathy-gtk/empathy-base-password-dialog.c:261 msgid "Remember password" msgstr "Zapomni si geslo" @@ -1206,7 +1198,7 @@ msgid "STUN Server:" msgstr "Strežnik STUN:" #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19 -#: ../libempathy-gtk/empathy-contactinfo-utils.c:112 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:114 msgid "Server:" msgstr "Strežnik:" @@ -1480,20 +1472,20 @@ msgstr "Vstavi smeška" #. send button #: ../libempathy-gtk/empathy-chat.c:2319 -#: ../libempathy-gtk/empathy-ui-utils.c:1843 +#: ../libempathy-gtk/empathy-ui-utils.c:1867 msgid "_Send" msgstr "_Pošlji" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2373 +#: ../libempathy-gtk/empathy-chat.c:2376 msgid "_Spelling Suggestions" msgstr "Predlogi čr_kovalnika" -#: ../libempathy-gtk/empathy-chat.c:2462 +#: ../libempathy-gtk/empathy-chat.c:2465 msgid "Failed to retrieve recent logs" msgstr "Napaka med pridobivanjem nedavnih dnevnikov" -#: ../libempathy-gtk/empathy-chat.c:2599 +#: ../libempathy-gtk/empathy-chat.c:2602 #, c-format msgid "%s has disconnected" msgstr "%s je prekinil povezavo" @@ -1501,12 +1493,12 @@ msgstr "%s je prekinil povezavo" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2606 +#: ../libempathy-gtk/empathy-chat.c:2609 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%2$s je izgnal %1$s" -#: ../libempathy-gtk/empathy-chat.c:2609 +#: ../libempathy-gtk/empathy-chat.c:2612 #, c-format msgid "%s was kicked" msgstr "%s je bil izgnan" @@ -1514,17 +1506,17 @@ msgstr "%s je bil izgnan" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2617 +#: ../libempathy-gtk/empathy-chat.c:2620 #, c-format msgid "%1$s was banned by %2$s" msgstr "%2$s je izobčil %1$s" -#: ../libempathy-gtk/empathy-chat.c:2620 +#: ../libempathy-gtk/empathy-chat.c:2623 #, c-format msgid "%s was banned" msgstr "%s je izobčen" -#: ../libempathy-gtk/empathy-chat.c:2624 +#: ../libempathy-gtk/empathy-chat.c:2627 #, c-format msgid "%s has left the room" msgstr "%s je zapustil klepetalnico" @@ -1534,17 +1526,17 @@ msgstr "%s je zapustil klepetalnico" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2633 +#: ../libempathy-gtk/empathy-chat.c:2636 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2658 +#: ../libempathy-gtk/empathy-chat.c:2661 #, c-format msgid "%s has joined the room" msgstr "%s je vstopil v klepetalnico" -#: ../libempathy-gtk/empathy-chat.c:2683 +#: ../libempathy-gtk/empathy-chat.c:2686 #, c-format msgid "%s is now known as %s" msgstr "%s je preimenovan v %s" @@ -1552,90 +1544,91 @@ msgstr "%s je preimenovan v %s" #. We don't know if the incoming call has been accepted or not, so we #. * assume it hasn't and if it has, we'll set the proper status when #. * we get the new handler. -#: ../libempathy-gtk/empathy-chat.c:2836 -#: ../src/empathy-streamed-media-window.c:1896 +#: ../libempathy-gtk/empathy-chat.c:2847 +#: ../src/empathy-streamed-media-window.c:1889 #: ../src/empathy-event-manager.c:1260 -#: ../src/empathy-call-window.c:1536 -#: ../src/empathy-call-window.c:1586 -#: ../src/empathy-call-window.c:2632 +#: ../src/empathy-call-window.c:1538 +#: ../src/empathy-call-window.c:1588 +#: ../src/empathy-call-window.c:2631 msgid "Disconnected" msgstr "Prekinjena povezava" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3482 +#: ../libempathy-gtk/empathy-chat.c:3493 msgid "Would you like to store this password?" msgstr "Ali želite shraniti geslo?" -#: ../libempathy-gtk/empathy-chat.c:3488 +#: ../libempathy-gtk/empathy-chat.c:3499 msgid "Remember" msgstr "Zapomni si" -#: ../libempathy-gtk/empathy-chat.c:3498 +#: ../libempathy-gtk/empathy-chat.c:3509 msgid "Not now" msgstr "Ne zdaj" -#: ../libempathy-gtk/empathy-chat.c:3542 +#: ../libempathy-gtk/empathy-chat.c:3553 +#: ../libempathy-gtk/empathy-bad-password-dialog.c:142 msgid "Retry" msgstr "Poskusi znova" -#: ../libempathy-gtk/empathy-chat.c:3546 +#: ../libempathy-gtk/empathy-chat.c:3557 msgid "Wrong password; please try again:" msgstr "Napačno geslo; poskusite znova:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3676 +#: ../libempathy-gtk/empathy-chat.c:3687 msgid "This room is protected by a password:" msgstr "Klepetalnica je zaščitena z geslom:" -#: ../libempathy-gtk/empathy-chat.c:3703 +#: ../libempathy-gtk/empathy-chat.c:3714 msgid "Join" msgstr "Pridruži se" -#: ../libempathy-gtk/empathy-chat.c:3891 +#: ../libempathy-gtk/empathy-chat.c:3902 #: ../src/empathy-event-manager.c:1281 msgid "Connected" msgstr "Povezano" -#: ../libempathy-gtk/empathy-chat.c:3946 +#: ../libempathy-gtk/empathy-chat.c:3957 msgid "Conversation" msgstr "Pogovor" #. Translators: this string is a something like #. * "Escher Cat (SMS)" -#: ../libempathy-gtk/empathy-chat.c:3951 +#: ../libempathy-gtk/empathy-chat.c:3962 #, c-format msgid "%s (SMS)" msgstr "%s (SMS)" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265 msgid "Unknown or invalid identifier" msgstr "Neznano ali neveljavno določilo" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:432 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267 msgid "Contact blocking temporarily unavailable" msgstr "Blokiranje stikov začasno ni na voljo" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269 msgid "Contact blocking unavailable" msgstr "Blokiranje stika ni na voljo" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:436 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271 msgid "Permission Denied" msgstr "Dovoljenje je zavrnjeno" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:440 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275 msgid "Could not block contact" msgstr "Stika ni mogoče blokirati" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:783 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622 msgid "Edit Blocked Contacts" msgstr "Uredi blokirane stike" #. Account and Identifier #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:512 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:506 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2 -#: ../libempathy-gtk/empathy-individual-widget.c:1441 +#: ../libempathy-gtk/empathy-individual-widget.c:1475 #: ../src/empathy-chatrooms-window.ui.h:1 #: ../src/empathy-new-chatroom-dialog.ui.h:1 msgid "Account:" @@ -1653,56 +1646,56 @@ msgid "Remove" msgstr "Odstrani" #. Copy Link Address menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:320 +#: ../libempathy-gtk/empathy-chat-text-view.c:322 #: ../libempathy-gtk/empathy-webkit-utils.c:277 msgid "_Copy Link Address" msgstr "Kopiraj _naslov povezave" #. Open Link menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:327 +#: ../libempathy-gtk/empathy-chat-text-view.c:329 #: ../libempathy-gtk/empathy-webkit-utils.c:284 msgid "_Open Link" msgstr "_Odpri povezavo" #. Translators: timestamp displayed between conversations in #. * chat windows (strftime format string) -#: ../libempathy-gtk/empathy-chat-text-view.c:415 +#: ../libempathy-gtk/empathy-chat-text-view.c:417 msgid "%A %B %d %Y" msgstr "%A, %d. %B %Y" -#: ../libempathy-gtk/empathy-contact-dialogs.c:299 +#: ../libempathy-gtk/empathy-contact-dialogs.c:287 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247 msgid "Edit Contact Information" msgstr "Uredi podrobnosti stika" -#: ../libempathy-gtk/empathy-contact-dialogs.c:350 +#: ../libempathy-gtk/empathy-contact-dialogs.c:338 msgid "Personal Information" msgstr "Osebni podatki" -#: ../libempathy-gtk/empathy-contact-dialogs.c:459 +#: ../libempathy-gtk/empathy-contact-dialogs.c:439 #: ../libempathy-gtk/empathy-individual-dialogs.c:119 msgid "New Contact" msgstr "Nov stik" -#: ../libempathy-gtk/empathy-contact-dialogs.c:533 -#: ../libempathy-gtk/empathy-individual-dialogs.c:200 +#: ../libempathy-gtk/empathy-contact-dialogs.c:508 +#: ../libempathy-gtk/empathy-individual-dialogs.c:198 #, c-format msgid "Block %s?" msgstr "Ali želite blokirati %s?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:538 -#: ../libempathy-gtk/empathy-individual-dialogs.c:255 +#: ../libempathy-gtk/empathy-contact-dialogs.c:513 +#: ../libempathy-gtk/empathy-individual-dialogs.c:253 #, c-format msgid "Are you sure you want to block '%s' from contacting you again?" msgstr "Ali ste prepričani, da želite blokirati ponovno vzpostavitev stika med '%s' in vami?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:543 -#: ../libempathy-gtk/empathy-individual-dialogs.c:277 +#: ../libempathy-gtk/empathy-contact-dialogs.c:518 +#: ../libempathy-gtk/empathy-individual-dialogs.c:275 msgid "_Block" msgstr "_Blokiraj" -#: ../libempathy-gtk/empathy-contact-dialogs.c:559 -#: ../libempathy-gtk/empathy-individual-dialogs.c:286 +#: ../libempathy-gtk/empathy-contact-dialogs.c:536 +#: ../libempathy-gtk/empathy-individual-dialogs.c:284 msgid "_Report this contact as abusive" msgid_plural "_Report these contacts as abusive" msgstr[0] "_Poročaj te stike kot žaljive" @@ -1722,349 +1715,321 @@ msgstr "Zahteva po naročilu" msgid "_Block User" msgstr "_Blokiraj_uporabnika" -#: ../libempathy-gtk/empathy-contact-list-view.c:1935 -#: ../libempathy-gtk/empathy-individual-view.c:2375 -#, c-format -msgid "Do you really want to remove the group '%s'?" -msgstr "Ali zares želite odstraniti skupino '%s'?" - -#: ../libempathy-gtk/empathy-contact-list-view.c:1937 -#: ../libempathy-gtk/empathy-individual-view.c:2378 -msgid "Removing group" -msgstr "Odstranjevanje skupine" - -#. Remove -#: ../libempathy-gtk/empathy-contact-list-view.c:1986 -#: ../libempathy-gtk/empathy-contact-list-view.c:2063 -#: ../libempathy-gtk/empathy-individual-view.c:2433 -#: ../libempathy-gtk/empathy-individual-view.c:2636 -msgid "_Remove" -msgstr "_Odstrani" - -#: ../libempathy-gtk/empathy-contact-list-view.c:2016 -#: ../libempathy-gtk/empathy-individual-view.c:2500 -#, c-format -msgid "Do you really want to remove the contact '%s'?" -msgstr "Ali zares želite odstraniti stik '%s'?" - -#: ../libempathy-gtk/empathy-contact-list-view.c:2018 -#: ../libempathy-gtk/empathy-individual-view.c:2521 -msgid "Removing contact" -msgstr "Odstranjevanje stika" - #: ../libempathy-gtk/empathy-contact-menu.c:212 +#: ../libempathy-gtk/empathy-individual-menu.c:1558 #: ../src/empathy-main-window-menubar.ui.h:14 msgid "_Add Contact…" msgstr "_Dodaj stik ..." -#: ../libempathy-gtk/empathy-contact-menu.c:292 +#: ../libempathy-gtk/empathy-contact-menu.c:287 msgid "_Block Contact" msgstr "_Blokiraj stik" #. add chat button -#: ../libempathy-gtk/empathy-contact-menu.c:321 -#: ../libempathy-gtk/empathy-individual-menu.c:758 +#: ../libempathy-gtk/empathy-contact-menu.c:316 +#: ../libempathy-gtk/empathy-individual-menu.c:789 #: ../libempathy-gtk/empathy-new-message-dialog.c:320 #: ../src/empathy-main-window-menubar.ui.h:16 msgid "_Chat" msgstr "_Klepet" -#: ../libempathy-gtk/empathy-contact-menu.c:353 -#: ../libempathy-gtk/empathy-individual-menu.c:850 +#: ../libempathy-gtk/empathy-contact-menu.c:348 +#: ../libempathy-gtk/empathy-individual-menu.c:881 msgctxt "menu item" msgid "_Audio Call" msgstr "_Zvočni klic" -#: ../libempathy-gtk/empathy-contact-menu.c:386 -#: ../libempathy-gtk/empathy-individual-menu.c:895 +#: ../libempathy-gtk/empathy-contact-menu.c:381 +#: ../libempathy-gtk/empathy-individual-menu.c:926 msgctxt "menu item" msgid "_Video Call" msgstr "_Video klic" -#: ../libempathy-gtk/empathy-contact-menu.c:432 -#: ../libempathy-gtk/empathy-individual-menu.c:948 +#: ../libempathy-gtk/empathy-contact-menu.c:427 +#: ../libempathy-gtk/empathy-individual-menu.c:979 #: ../src/empathy-main-window-menubar.ui.h:27 msgid "_Previous Conversations" msgstr "Predhodni po_govori" -#: ../libempathy-gtk/empathy-contact-menu.c:454 -#: ../libempathy-gtk/empathy-individual-menu.c:989 +#: ../libempathy-gtk/empathy-contact-menu.c:449 +#: ../libempathy-gtk/empathy-individual-menu.c:1020 msgid "Send File" msgstr "Pošlji datoteko" -#: ../libempathy-gtk/empathy-contact-menu.c:477 -#: ../libempathy-gtk/empathy-individual-menu.c:1031 +#: ../libempathy-gtk/empathy-contact-menu.c:472 +#: ../libempathy-gtk/empathy-individual-menu.c:1062 msgid "Share My Desktop" msgstr "Souporaba namizja" -#: ../libempathy-gtk/empathy-contact-menu.c:506 -#: ../libempathy-gtk/empathy-individual-menu.c:1094 +#: ../libempathy-gtk/empathy-contact-menu.c:501 +#: ../libempathy-gtk/empathy-individual-menu.c:1125 msgid "Infor_mation" msgstr "_Podrobnosti" -#: ../libempathy-gtk/empathy-contact-menu.c:552 +#: ../libempathy-gtk/empathy-contact-menu.c:547 msgctxt "Edit contact (contextual menu)" msgid "_Edit" msgstr "_Uredi" -#: ../libempathy-gtk/empathy-contact-menu.c:606 -#: ../libempathy-gtk/empathy-individual-menu.c:1285 +#: ../libempathy-gtk/empathy-contact-menu.c:601 +#: ../libempathy-gtk/empathy-individual-menu.c:1316 #: ../src/empathy-chat-window.c:1011 msgid "Inviting you to this room" msgstr "Vabila v klepetalnico" -#: ../libempathy-gtk/empathy-contact-menu.c:637 -#: ../libempathy-gtk/empathy-individual-menu.c:1331 +#: ../libempathy-gtk/empathy-contact-menu.c:632 +#: ../libempathy-gtk/empathy-individual-menu.c:1362 msgid "_Invite to Chat Room" msgstr "_Povabi v klepetalnico" #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:505 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:499 msgid "Search contacts" msgstr "Iskanje stikov" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:535 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:529 msgid "Search: " msgstr "Poišči:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:593 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:587 msgid "_Add Contact" msgstr "_Dodaj stik" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:611 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:605 msgid "No contacts found" msgstr "Ni najdenih stikov." -#: ../libempathy-gtk/empathy-contact-search-dialog.c:627 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:621 msgid "Your message introducing yourself:" msgstr "Predstavitveno sporočilo:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:635 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:629 msgid "Please let me see when you're online. Thanks!" msgstr "Želel bi videti, kdaj ste na zvezi. Hvala!" -#: ../libempathy-gtk/empathy-contact-widget.c:502 +#: ../libempathy-gtk/empathy-contact-widget.c:571 +#: ../libempathy-gtk/empathy-individual-widget.c:304 msgid "Channels:" msgstr "Kanali:" -#: ../libempathy-gtk/empathy-contact-widget.c:797 -#: ../libempathy-gtk/empathy-individual-widget.c:421 +#: ../libempathy-gtk/empathy-contact-widget.c:751 +#: ../libempathy-gtk/empathy-individual-widget.c:455 msgid "Country ISO Code:" msgstr "ISO oznaka države:" -#: ../libempathy-gtk/empathy-contact-widget.c:799 -#: ../libempathy-gtk/empathy-individual-widget.c:423 +#: ../libempathy-gtk/empathy-contact-widget.c:753 +#: ../libempathy-gtk/empathy-individual-widget.c:457 msgid "Country:" msgstr "Država:" -#: ../libempathy-gtk/empathy-contact-widget.c:801 -#: ../libempathy-gtk/empathy-individual-widget.c:425 +#: ../libempathy-gtk/empathy-contact-widget.c:755 +#: ../libempathy-gtk/empathy-individual-widget.c:459 msgid "State:" msgstr "Okraj:" -#: ../libempathy-gtk/empathy-contact-widget.c:803 -#: ../libempathy-gtk/empathy-individual-widget.c:427 +#: ../libempathy-gtk/empathy-contact-widget.c:757 +#: ../libempathy-gtk/empathy-individual-widget.c:461 msgid "City:" msgstr "Mesto:" -#: ../libempathy-gtk/empathy-contact-widget.c:805 -#: ../libempathy-gtk/empathy-individual-widget.c:429 +#: ../libempathy-gtk/empathy-contact-widget.c:759 +#: ../libempathy-gtk/empathy-individual-widget.c:463 msgid "Area:" msgstr "Področje:" -#: ../libempathy-gtk/empathy-contact-widget.c:807 -#: ../libempathy-gtk/empathy-individual-widget.c:431 +#: ../libempathy-gtk/empathy-contact-widget.c:761 +#: ../libempathy-gtk/empathy-individual-widget.c:465 msgid "Postal Code:" msgstr "Poštna številka:" -#: ../libempathy-gtk/empathy-contact-widget.c:809 -#: ../libempathy-gtk/empathy-individual-widget.c:433 +#: ../libempathy-gtk/empathy-contact-widget.c:763 +#: ../libempathy-gtk/empathy-individual-widget.c:467 msgid "Street:" msgstr "Ulica:" -#: ../libempathy-gtk/empathy-contact-widget.c:811 -#: ../libempathy-gtk/empathy-individual-widget.c:435 +#: ../libempathy-gtk/empathy-contact-widget.c:765 +#: ../libempathy-gtk/empathy-individual-widget.c:469 msgid "Building:" msgstr "Stavba:" -#: ../libempathy-gtk/empathy-contact-widget.c:813 -#: ../libempathy-gtk/empathy-individual-widget.c:437 +#: ../libempathy-gtk/empathy-contact-widget.c:767 +#: ../libempathy-gtk/empathy-individual-widget.c:471 msgid "Floor:" msgstr "Nadstropje:" -#: ../libempathy-gtk/empathy-contact-widget.c:815 -#: ../libempathy-gtk/empathy-individual-widget.c:439 +#: ../libempathy-gtk/empathy-contact-widget.c:769 +#: ../libempathy-gtk/empathy-individual-widget.c:473 msgid "Room:" msgstr "Klepetalnica:" -#: ../libempathy-gtk/empathy-contact-widget.c:817 -#: ../libempathy-gtk/empathy-individual-widget.c:441 +#: ../libempathy-gtk/empathy-contact-widget.c:771 +#: ../libempathy-gtk/empathy-individual-widget.c:475 msgid "Text:" msgstr "Besedilo:" -#: ../libempathy-gtk/empathy-contact-widget.c:819 -#: ../libempathy-gtk/empathy-individual-widget.c:443 +#: ../libempathy-gtk/empathy-contact-widget.c:773 +#: ../libempathy-gtk/empathy-individual-widget.c:477 msgid "Description:" msgstr "Opis:" -#: ../libempathy-gtk/empathy-contact-widget.c:821 -#: ../libempathy-gtk/empathy-individual-widget.c:445 +#: ../libempathy-gtk/empathy-contact-widget.c:775 +#: ../libempathy-gtk/empathy-individual-widget.c:479 msgid "URI:" msgstr "URI:" -#: ../libempathy-gtk/empathy-contact-widget.c:823 -#: ../libempathy-gtk/empathy-individual-widget.c:447 +#: ../libempathy-gtk/empathy-contact-widget.c:777 +#: ../libempathy-gtk/empathy-individual-widget.c:481 msgid "Accuracy Level:" msgstr "Raven natančnosti:" -#: ../libempathy-gtk/empathy-contact-widget.c:825 -#: ../libempathy-gtk/empathy-individual-widget.c:449 +#: ../libempathy-gtk/empathy-contact-widget.c:779 +#: ../libempathy-gtk/empathy-individual-widget.c:483 msgid "Error:" msgstr "Napaka:" -#: ../libempathy-gtk/empathy-contact-widget.c:827 -#: ../libempathy-gtk/empathy-individual-widget.c:451 +#: ../libempathy-gtk/empathy-contact-widget.c:781 +#: ../libempathy-gtk/empathy-individual-widget.c:485 msgid "Vertical Error (meters):" msgstr "Napaka navpično (v metrih):" -#: ../libempathy-gtk/empathy-contact-widget.c:829 -#: ../libempathy-gtk/empathy-individual-widget.c:453 +#: ../libempathy-gtk/empathy-contact-widget.c:783 +#: ../libempathy-gtk/empathy-individual-widget.c:487 msgid "Horizontal Error (meters):" msgstr "Napaka vodoravno (v metrih):" -#: ../libempathy-gtk/empathy-contact-widget.c:831 -#: ../libempathy-gtk/empathy-individual-widget.c:455 +#: ../libempathy-gtk/empathy-contact-widget.c:785 +#: ../libempathy-gtk/empathy-individual-widget.c:489 msgid "Speed:" msgstr "Hitrost:" -#: ../libempathy-gtk/empathy-contact-widget.c:833 -#: ../libempathy-gtk/empathy-individual-widget.c:457 +#: ../libempathy-gtk/empathy-contact-widget.c:787 +#: ../libempathy-gtk/empathy-individual-widget.c:491 msgid "Bearing:" msgstr "Smer:" -#: ../libempathy-gtk/empathy-contact-widget.c:835 -#: ../libempathy-gtk/empathy-individual-widget.c:459 +#: ../libempathy-gtk/empathy-contact-widget.c:789 +#: ../libempathy-gtk/empathy-individual-widget.c:493 msgid "Climb Speed:" msgstr "Hitrost dviganja:" -#: ../libempathy-gtk/empathy-contact-widget.c:837 -#: ../libempathy-gtk/empathy-individual-widget.c:461 +#: ../libempathy-gtk/empathy-contact-widget.c:791 +#: ../libempathy-gtk/empathy-individual-widget.c:495 msgid "Last Updated on:" msgstr "Zadnjič posodobljeno:" -#: ../libempathy-gtk/empathy-contact-widget.c:839 -#: ../libempathy-gtk/empathy-individual-widget.c:463 +#: ../libempathy-gtk/empathy-contact-widget.c:793 +#: ../libempathy-gtk/empathy-individual-widget.c:497 msgid "Longitude:" msgstr "Zemljepisna dolžina:" -#: ../libempathy-gtk/empathy-contact-widget.c:841 -#: ../libempathy-gtk/empathy-individual-widget.c:465 +#: ../libempathy-gtk/empathy-contact-widget.c:795 +#: ../libempathy-gtk/empathy-individual-widget.c:499 msgid "Latitude:" msgstr "Zemljepisna širina:" -#: ../libempathy-gtk/empathy-contact-widget.c:843 -#: ../libempathy-gtk/empathy-individual-widget.c:467 +#: ../libempathy-gtk/empathy-contact-widget.c:797 +#: ../libempathy-gtk/empathy-individual-widget.c:501 msgid "Altitude:" msgstr "Nadmorska višina:" -#: ../libempathy-gtk/empathy-contact-widget.c:896 -#: ../libempathy-gtk/empathy-contact-widget.c:911 -#: ../libempathy-gtk/empathy-individual-widget.c:559 -#: ../libempathy-gtk/empathy-individual-widget.c:574 -#: ../src/empathy-preferences.ui.h:17 +#: ../libempathy-gtk/empathy-contact-widget.c:850 +#: ../libempathy-gtk/empathy-contact-widget.c:865 +#: ../libempathy-gtk/empathy-individual-widget.c:593 +#: ../libempathy-gtk/empathy-individual-widget.c:608 +#: ../src/empathy-preferences.ui.h:15 msgid "Location" msgstr "Mesto" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:913 -#: ../libempathy-gtk/empathy-individual-widget.c:576 +#: ../libempathy-gtk/empathy-contact-widget.c:867 +#: ../libempathy-gtk/empathy-individual-widget.c:610 #, c-format msgid "%s, %s" msgstr "%s, %s" -#: ../libempathy-gtk/empathy-contact-widget.c:965 -#: ../libempathy-gtk/empathy-individual-widget.c:625 +#: ../libempathy-gtk/empathy-contact-widget.c:919 +#: ../libempathy-gtk/empathy-individual-widget.c:659 msgid "%B %e, %Y at %R UTC" msgstr "%e.%B %Y ob %R UTC" -#: ../libempathy-gtk/empathy-contact-widget.c:1047 -#: ../libempathy-gtk/empathy-individual-widget.c:867 +#: ../libempathy-gtk/empathy-contact-widget.c:1001 +#: ../libempathy-gtk/empathy-individual-widget.c:901 msgid "Save Avatar" msgstr "Shrani podobo" -#: ../libempathy-gtk/empathy-contact-widget.c:1103 -#: ../libempathy-gtk/empathy-individual-widget.c:925 +#: ../libempathy-gtk/empathy-contact-widget.c:1057 +#: ../libempathy-gtk/empathy-individual-widget.c:959 msgid "Unable to save avatar" msgstr "Ni mogoče shraniti podobe" -#: ../libempathy-gtk/empathy-contact-widget.c:1787 -#: ../libempathy-gtk/empathy-individual-menu.c:1066 -#: ../libempathy-gtk/empathy-individual-widget.c:1324 +#: ../libempathy-gtk/empathy-contact-widget.c:1745 +#: ../libempathy-gtk/empathy-individual-menu.c:1097 +#: ../libempathy-gtk/empathy-individual-widget.c:1358 msgid "Favorite" msgstr "Priljubljeno" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:102 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:104 msgid "Full name" msgstr "Polno Ime" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:103 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:105 msgid "Phone number" msgstr "Telefonska številka" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:104 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:106 msgid "E-mail address" msgstr "Elektronski naslov" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:105 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:107 msgid "Website" msgstr "Spletišče" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:106 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:108 msgid "Birthday" msgstr "Rojstni dan" #. Note to translators: this is the caption for a string of the form "5 #. * minutes ago", and refers to the time since the contact last interacted #. * with their IM client. -#: ../libempathy-gtk/empathy-contactinfo-utils.c:111 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:113 msgid "Last seen:" msgstr "Zadnjič viden:" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:113 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:115 msgid "Connected from:" msgstr "Povezan od:" #. FIXME: once Idle implements SimplePresence using this information, we can #. * and should bin this. -#: ../libempathy-gtk/empathy-contactinfo-utils.c:117 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:119 msgid "Away message:" msgstr "Sporočilo odsotnosti:" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:130 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:132 msgid "work" msgstr "delovno" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:131 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:133 msgid "home" msgstr "domače" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:132 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:134 msgid "mobile" msgstr "prenosni telefon" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:133 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:135 msgid "voice" msgstr "glasovno" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:134 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:136 msgid "preferred" msgstr "prednostno" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:135 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:137 msgid "postal" msgstr "poštno" -#: ../libempathy-gtk/empathy-contactinfo-utils.c:136 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:138 msgid "parcel" msgstr "paketno" @@ -2074,7 +2039,7 @@ msgstr "Mesto na (datum)\t" #. Alias #: ../libempathy-gtk/empathy-contact-widget.ui.h:3 -#: ../libempathy-gtk/empathy-individual-widget.c:1260 +#: ../libempathy-gtk/empathy-individual-widget.c:1294 msgid "Alias:" msgstr "Vzdevek:" @@ -2094,7 +2059,7 @@ msgstr "Podrobnosti stika" #. Identifier to connect to Instant Messaging network #. Translators: Identifier to connect to Instant Messaging network #: ../libempathy-gtk/empathy-contact-widget.ui.h:8 -#: ../libempathy-gtk/empathy-individual-widget.c:1469 +#: ../libempathy-gtk/empathy-individual-widget.c:1503 msgid "Identifier:" msgstr "Določilo:" @@ -2129,11 +2094,11 @@ msgid "Select" msgstr "Izbor" #: ../libempathy-gtk/empathy-groups-widget.c:409 -#: ../src/empathy-main-window.c:1967 +#: ../src/empathy-main-window.c:1952 msgid "Group" msgstr "Skupina" -#: ../libempathy-gtk/empathy-individual-dialogs.c:260 +#: ../libempathy-gtk/empathy-individual-dialogs.c:258 msgid "The following identity will be blocked:" msgid_plural "The following identities will be blocked:" msgstr[0] "Naslednje identitete bodo blokirane:" @@ -2141,7 +2106,7 @@ msgstr[1] "Naslednja identiteta bo blokirana:" msgstr[2] "Naslednji identiteti bosta blokirani:" msgstr[3] "Naslednje identitete bodo blokirane:" -#: ../libempathy-gtk/empathy-individual-dialogs.c:267 +#: ../libempathy-gtk/empathy-individual-dialogs.c:265 msgid "The following identity can not be blocked:" msgid_plural "The following identities can not be blocked:" msgstr[0] "Naslednjih identitet ni mogoče blokirati:" @@ -2154,79 +2119,103 @@ msgstr[3] "Naslednjih identitet ni mogoče blokirati:" msgid "Linked Contacts" msgstr "Povezani stiki" -#: ../libempathy-gtk/empathy-individual-linker.c:370 +#: ../libempathy-gtk/empathy-individual-linker.c:372 msgid "Select contacts to link" msgstr "Izbor stikov za povezovanje" -#: ../libempathy-gtk/empathy-individual-linker.c:444 +#: ../libempathy-gtk/empathy-individual-linker.c:447 msgid "New contact preview" msgstr "Nov predogled stika" -#: ../libempathy-gtk/empathy-individual-linker.c:488 +#: ../libempathy-gtk/empathy-individual-linker.c:491 msgid "Contacts selected in the list on the left will be linked together." msgstr "Stiki izbrani na seznamu na levi, bodo povezani skupaj." #. Translators: this is used in the context menu for a contact. The first #. * parameter is a contact ID (e.g. foo@jabber.org) and the second is one #. * of the user's account IDs (e.g. me@hotmail.com). -#: ../libempathy-gtk/empathy-individual-menu.c:145 +#: ../libempathy-gtk/empathy-individual-menu.c:148 #, c-format msgid "%s (%s)" msgstr "%s (%s)" -#: ../libempathy-gtk/empathy-individual-menu.c:309 +#: ../libempathy-gtk/empathy-individual-menu.c:312 msgid "Select account to use to place the call" msgstr "Izbor računa za klicanje" #. translators: Call is a noun. This string is used in the window #. * title -#: ../libempathy-gtk/empathy-individual-menu.c:313 +#: ../libempathy-gtk/empathy-individual-menu.c:316 #: ../libempathy-gtk/empathy-log-window.ui.h:2 -#: ../src/empathy-streamed-media-window.c:1301 +#: ../src/empathy-streamed-media-window.c:1288 #: ../src/empathy-call-window.ui.h:2 msgid "Call" msgstr "Kliči" -#: ../libempathy-gtk/empathy-individual-menu.c:378 +#: ../libempathy-gtk/empathy-individual-menu.c:381 msgid "Mobile" msgstr "Mobilni telefon" -#: ../libempathy-gtk/empathy-individual-menu.c:380 +#: ../libempathy-gtk/empathy-individual-menu.c:383 msgid "Work" msgstr "Delo" -#: ../libempathy-gtk/empathy-individual-menu.c:382 +#: ../libempathy-gtk/empathy-individual-menu.c:385 msgid "HOME" msgstr "Domača mapa" #. add SMS button -#: ../libempathy-gtk/empathy-individual-menu.c:805 +#: ../libempathy-gtk/empathy-individual-menu.c:836 #: ../libempathy-gtk/empathy-new-message-dialog.c:314 msgid "_SMS" msgstr "_SMS" -#: ../libempathy-gtk/empathy-individual-menu.c:1143 +#: ../libempathy-gtk/empathy-individual-menu.c:1174 msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "_Uredi" #. Translators: this is a verb meaning "to connect two contacts together #. * to form a meta-contact". -#: ../libempathy-gtk/empathy-individual-menu.c:1169 +#: ../libempathy-gtk/empathy-individual-menu.c:1200 msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "_Poveži stike ..." -#: ../libempathy-gtk/empathy-individual-view.c:2340 +#: ../libempathy-gtk/empathy-individual-view.c:2362 msgid "Delete and _Block" msgstr "Izbriši in _blokiraj" -#: ../libempathy-gtk/empathy-individual-view.c:2509 +#: ../libempathy-gtk/empathy-individual-view.c:2397 +#, c-format +msgid "Do you really want to remove the group '%s'?" +msgstr "Ali zares želite odstraniti skupino '%s'?" + +#: ../libempathy-gtk/empathy-individual-view.c:2400 +msgid "Removing group" +msgstr "Odstranjevanje skupine" + +#. Remove +#: ../libempathy-gtk/empathy-individual-view.c:2455 +#: ../libempathy-gtk/empathy-individual-view.c:2672 +msgid "_Remove" +msgstr "_Odstrani" + +#: ../libempathy-gtk/empathy-individual-view.c:2532 +#, c-format +msgid "Do you really want to remove the contact '%s'?" +msgstr "Ali zares želite odstraniti stik '%s'?" + +#: ../libempathy-gtk/empathy-individual-view.c:2541 #, c-format msgid "Do you really want to remove the linked contact '%s'? Note that this will remove all the contacts which make up this linked contact." msgstr "Ali res želite odstraniti povezan stik '%s'? S tem bo odstranjeni tudi vsi stiki, ki so opredeljeni kot povezani." -#: ../libempathy-gtk/empathy-individual-widget.c:1608 +#: ../libempathy-gtk/empathy-individual-view.c:2553 +msgid "Removing contact" +msgstr "Odstranjevanje stika" + +#: ../libempathy-gtk/empathy-individual-widget.c:1642 #, c-format msgid "Linked contact containing %u contact" msgid_plural "Linked contacts containing %u contacts" @@ -2306,48 +2295,48 @@ msgctxt "Unlink individual (button)" msgid "_Unlink" msgstr "_Odstrani povezavo" -#: ../libempathy-gtk/empathy-log-window.c:634 +#: ../libempathy-gtk/empathy-log-window.c:621 msgid "History" msgstr "Zgodovina" -#: ../libempathy-gtk/empathy-log-window.c:689 +#: ../libempathy-gtk/empathy-log-window.c:676 msgid "Show" msgstr "Pokaži" -#: ../libempathy-gtk/empathy-log-window.c:711 +#: ../libempathy-gtk/empathy-log-window.c:698 msgid "Search" msgstr "Poišči" -#: ../libempathy-gtk/empathy-log-window.c:1159 +#: ../libempathy-gtk/empathy-log-window.c:1147 #, c-format msgid "Chat in %s" msgstr "Klepet v %s" -#: ../libempathy-gtk/empathy-log-window.c:1161 +#: ../libempathy-gtk/empathy-log-window.c:1149 #, c-format msgid "Chat with %s" msgstr "Klepet s stikom %s" -#: ../libempathy-gtk/empathy-log-window.c:1211 -#: ../libempathy-gtk/empathy-log-window.c:1358 +#: ../libempathy-gtk/empathy-log-window.c:1199 +#: ../libempathy-gtk/empathy-log-window.c:1346 msgctxt "A date with the time" msgid "%A, %e %B %Y %X" msgstr "%A, %d. %B %Y" #. Translators: this is an emote: '* Danielle waves' -#: ../libempathy-gtk/empathy-log-window.c:1300 +#: ../libempathy-gtk/empathy-log-window.c:1288 #, c-format msgid "* %s %s" msgstr "* %s %s" #. Translators: this is a message: 'Danielle: hello' #. * The string in bold is the sender's name -#: ../libempathy-gtk/empathy-log-window.c:1306 +#: ../libempathy-gtk/empathy-log-window.c:1294 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: ../libempathy-gtk/empathy-log-window.c:1382 +#: ../libempathy-gtk/empathy-log-window.c:1370 #, c-format msgid "%s second" msgid_plural "%s seconds" @@ -2356,7 +2345,7 @@ msgstr[1] "%s sekunda" msgstr[2] "%s sekundi" msgstr[3] "%s sekunde" -#: ../libempathy-gtk/empathy-log-window.c:1389 +#: ../libempathy-gtk/empathy-log-window.c:1377 #, c-format msgid "%s minute" msgid_plural "%s minutes" @@ -2365,80 +2354,80 @@ msgstr[1] "%s minuta" msgstr[2] "%s minuti" msgstr[3] "%s minute" -#: ../libempathy-gtk/empathy-log-window.c:1397 +#: ../libempathy-gtk/empathy-log-window.c:1385 #, c-format msgid "Call took %s, ended at %s" msgstr "Klic začet %s, končan %s" -#: ../libempathy-gtk/empathy-log-window.c:1729 +#: ../libempathy-gtk/empathy-log-window.c:1719 msgid "Today" msgstr "Danes" -#: ../libempathy-gtk/empathy-log-window.c:1733 +#: ../libempathy-gtk/empathy-log-window.c:1723 msgid "Yesterday" msgstr "Včeraj" #. Translators: A date such as '23 May 2010' (strftime format) -#: ../libempathy-gtk/empathy-log-window.c:1748 +#: ../libempathy-gtk/empathy-log-window.c:1738 msgid "%e %B %Y" msgstr "%e. %B %Y" -#: ../libempathy-gtk/empathy-log-window.c:1829 -#: ../libempathy-gtk/empathy-log-window.c:3444 +#: ../libempathy-gtk/empathy-log-window.c:1826 +#: ../libempathy-gtk/empathy-log-window.c:3458 msgid "Anytime" msgstr "Kadarkoli" -#: ../libempathy-gtk/empathy-log-window.c:1916 -#: ../libempathy-gtk/empathy-log-window.c:2372 +#: ../libempathy-gtk/empathy-log-window.c:1915 +#: ../libempathy-gtk/empathy-log-window.c:2371 msgid "Anyone" msgstr "Kdorkoli" -#: ../libempathy-gtk/empathy-log-window.c:2685 +#: ../libempathy-gtk/empathy-log-window.c:2684 msgid "Who" msgstr "Kdo" -#: ../libempathy-gtk/empathy-log-window.c:2889 +#: ../libempathy-gtk/empathy-log-window.c:2893 msgid "When" msgstr "Kdaj" -#: ../libempathy-gtk/empathy-log-window.c:3005 +#: ../libempathy-gtk/empathy-log-window.c:3009 msgid "Anything" msgstr "Karkoli" -#: ../libempathy-gtk/empathy-log-window.c:3007 +#: ../libempathy-gtk/empathy-log-window.c:3011 msgid "Text chats" msgstr "Besedilni klepet" -#: ../libempathy-gtk/empathy-log-window.c:3009 +#: ../libempathy-gtk/empathy-log-window.c:3013 #: ../src/empathy-preferences.ui.h:4 msgid "Calls" msgstr "Klici" -#: ../libempathy-gtk/empathy-log-window.c:3014 +#: ../libempathy-gtk/empathy-log-window.c:3018 msgid "Incoming calls" msgstr "Dohodni klici" -#: ../libempathy-gtk/empathy-log-window.c:3015 +#: ../libempathy-gtk/empathy-log-window.c:3019 msgid "Outgoing calls" msgstr "Odhodni klici" -#: ../libempathy-gtk/empathy-log-window.c:3016 +#: ../libempathy-gtk/empathy-log-window.c:3020 msgid "Missed calls" msgstr "Prezrti klici" -#: ../libempathy-gtk/empathy-log-window.c:3038 +#: ../libempathy-gtk/empathy-log-window.c:3042 msgid "What" msgstr "Kaj" -#: ../libempathy-gtk/empathy-log-window.c:3747 +#: ../libempathy-gtk/empathy-log-window.c:3751 msgid "Are you sure you want to delete all logs of previous conversations?" msgstr "Ali ste prepričani, da želite izbrisati vse podatke beležanja predhodnih pogovorov?" -#: ../libempathy-gtk/empathy-log-window.c:3751 +#: ../libempathy-gtk/empathy-log-window.c:3755 msgid "Clear All" msgstr "Počisti vse" -#: ../libempathy-gtk/empathy-log-window.c:3758 +#: ../libempathy-gtk/empathy-log-window.c:3762 msgid "Delete from:" msgstr "Izbriši iz:" @@ -2549,7 +2538,13 @@ msgstr "_Zvočni klic" msgid "New Call" msgstr "Nov klic" -#: ../libempathy-gtk/empathy-password-dialog.c:274 +#: ../libempathy-gtk/empathy-bad-password-dialog.c:130 +#, c-format +msgid "Authentification failed for account %s" +msgstr "Overitev za račun %s je spodletela." + +#: ../libempathy-gtk/empathy-base-password-dialog.c:224 +#: ../libempathy-gtk/empathy-password-dialog.c:134 #, c-format msgid "" "Enter your password for account\n" @@ -2759,24 +2754,24 @@ msgstr "Zapomni si izbor za prihodnje povezave" msgid "Certificate Details" msgstr "Podrobnosti potrdila" -#: ../libempathy-gtk/empathy-ui-utils.c:1738 +#: ../libempathy-gtk/empathy-ui-utils.c:1741 msgid "Unable to open URI" msgstr "Ni mogoče odpreti naslova URI" -#: ../libempathy-gtk/empathy-ui-utils.c:1835 +#: ../libempathy-gtk/empathy-ui-utils.c:1859 msgid "Select a file" msgstr "Izbor datoteke" -#: ../libempathy-gtk/empathy-ui-utils.c:1907 +#: ../libempathy-gtk/empathy-ui-utils.c:1934 msgid "Insufficient free space to save file" msgstr "Ni dovolj prostora za shranjevanje datoteke" -#: ../libempathy-gtk/empathy-ui-utils.c:1915 +#: ../libempathy-gtk/empathy-ui-utils.c:1942 #, c-format msgid "%s of free space are required to save this file, but only %s is available. Please choose another location." msgstr "%s prostora mora biti na voljo za shranjevanje te datoteke, vendar je na voljo le %s. Izbrati bo treba drugo mesto." -#: ../libempathy-gtk/empathy-ui-utils.c:1959 +#: ../libempathy-gtk/empathy-ui-utils.c:1986 #, c-format msgid "Incoming file from %s" msgstr "Prihajajoča datoteka od %s" @@ -2956,23 +2951,23 @@ msgstr "Ni sporočil o napakah" msgid "Instant Message (Empathy)" msgstr "Hipno sporočanje (Empathy)" -#: ../src/empathy.c:434 +#: ../src/empathy.c:433 msgid "Don't connect on startup" msgstr "Brez samodejne povezave ob zagonu" -#: ../src/empathy.c:438 +#: ../src/empathy.c:437 msgid "Don't display the contact list or any other dialogs on startup" msgstr "Ne prikaži seznama stikov in drugih pogovornih oken ob zagonu" -#: ../src/empathy.c:453 +#: ../src/empathy.c:452 msgid "- Empathy IM Client" msgstr "- Empathy sporočilnik" -#: ../src/empathy.c:640 +#: ../src/empathy.c:639 msgid "Error contacting the Account Manager" msgstr "Napaka delovanja upravljalnika računov" -#: ../src/empathy.c:642 +#: ../src/empathy.c:641 #, c-format msgid "" "There was an error while trying to connect to the Telepathy Account Manager. The error was:\n" @@ -3028,7 +3023,7 @@ msgid "You can either go back and try to enter your accounts' details again or q msgstr "Lahko ponovno vnesete podatke svojega računa ali pa končate pomočnika in dodate račune kasneje preko menija Uredi." #: ../src/empathy-account-assistant.c:220 -#: ../src/empathy-account-assistant.c:1271 +#: ../src/empathy-account-assistant.c:1272 msgid "An error occurred" msgstr "Prišlo je do napake" @@ -3064,70 +3059,70 @@ msgstr "S programom Empathy lahko klepetate s posamezniki, ki uporabljajo Google msgid "Do you have an account you've been using with another chat program?" msgstr "Ali imate račun, ki ste ga uporabljali z drugim programom?" -#: ../src/empathy-account-assistant.c:652 +#: ../src/empathy-account-assistant.c:653 msgid "Yes, import my account details from " msgstr "Da, uvoziti želim podrobnosti računa iz" -#: ../src/empathy-account-assistant.c:673 +#: ../src/empathy-account-assistant.c:674 msgid "Yes, I'll enter my account details now" msgstr "Da, takoj želim vnesti podrobnosti računa" -#: ../src/empathy-account-assistant.c:695 +#: ../src/empathy-account-assistant.c:696 msgid "No, I want a new account" msgstr "Ne, ustvariti želim nov račun" -#: ../src/empathy-account-assistant.c:705 +#: ../src/empathy-account-assistant.c:706 msgid "No, I just want to see people online nearby for now" msgstr "Ne, želim le videti ljudi, povezane v bližini" -#: ../src/empathy-account-assistant.c:726 +#: ../src/empathy-account-assistant.c:727 msgid "Select the accounts you want to import:" msgstr "Izbor račune za uvoz:" -#: ../src/empathy-account-assistant.c:813 +#: ../src/empathy-account-assistant.c:814 #: ../src/empathy-new-chatroom-dialog.c:625 #: ../src/empathy-new-chatroom-dialog.c:626 msgid "Yes" msgstr "Da" -#: ../src/empathy-account-assistant.c:820 +#: ../src/empathy-account-assistant.c:821 msgid "No, that's all for now" msgstr "Ne, to je trenutno vse" -#: ../src/empathy-account-assistant.c:1085 +#: ../src/empathy-account-assistant.c:1086 msgid "Empathy can automatically discover and chat with the people connected on the same network as you. If you want to use this feature, please check that the details below are correct. You can easily change these details later or disable this feature by using the 'Accounts' dialog" msgstr "Program Empathy lahko samodejno odkrije in izmenjuje podatke z uporabniki istega omrežja. V primeru, da želite uporabljati to možnost, preverite spodnje podatke. Možnosti je mogoče spreminjati tudi kasneje v pogovornemu oknu 'računi'." -#: ../src/empathy-account-assistant.c:1091 -#: ../src/empathy-account-assistant.c:1147 +#: ../src/empathy-account-assistant.c:1092 +#: ../src/empathy-account-assistant.c:1148 msgid "Edit->Accounts" msgstr "Uredi->Računi" -#: ../src/empathy-account-assistant.c:1107 +#: ../src/empathy-account-assistant.c:1108 msgid "I do _not want to enable this feature for now" msgstr "Te možnosti trenutno _ne želim omogočiti" -#: ../src/empathy-account-assistant.c:1143 +#: ../src/empathy-account-assistant.c:1144 msgid "You won't be able to chat with people connected to your local network, as telepathy-salut is not installed. If you want to enable this feature, please install the telepathy-salut package and create a People Nearby account from the Accounts dialog" msgstr "Ni mogoče klepetati z uporabniki, povezanimi v krajevnem omrežju, saj paket telepathy-salut ni nameščen. V primeru, da želite to možnost omogočiti, namestite zahtevani paket in ustvarite račun bližnjih uporabnikov med možnostmi računa." -#: ../src/empathy-account-assistant.c:1149 +#: ../src/empathy-account-assistant.c:1150 msgid "telepathy-salut not installed" msgstr "telepathy-salut ni nameščen" -#: ../src/empathy-account-assistant.c:1195 +#: ../src/empathy-account-assistant.c:1196 msgid "Messaging and VoIP Accounts Assistant" msgstr "Pomočnik sporočanja in računov VoIP" -#: ../src/empathy-account-assistant.c:1229 +#: ../src/empathy-account-assistant.c:1230 msgid "Welcome to Empathy" msgstr "Dobrodošli v program Empathy" -#: ../src/empathy-account-assistant.c:1238 +#: ../src/empathy-account-assistant.c:1239 msgid "Import your existing accounts" msgstr "Uvozite svoje obstoječe račune" -#: ../src/empathy-account-assistant.c:1256 +#: ../src/empathy-account-assistant.c:1257 msgid "Please enter personal details" msgstr "Vnesite osebne podatke" @@ -3145,8 +3140,8 @@ msgid "Your new account has not been saved yet." msgstr "Novi račun še ni bil shranjen." #: ../src/empathy-accounts-dialog.c:345 -#: ../src/empathy-streamed-media-window.c:754 -#: ../src/empathy-call-window.c:1320 +#: ../src/empathy-streamed-media-window.c:757 +#: ../src/empathy-call-window.c:1325 msgid "Connecting…" msgstr "Povezovanje ..." @@ -3238,11 +3233,11 @@ msgstr "Za dodajanje novega računa morate najprej namestiti zaledje za vsak pro msgid "_Import…" msgstr "_Uvozi ..." -#: ../src/empathy-auth-client.c:249 +#: ../src/empathy-auth-client.c:284 msgid " - Empathy authentication client" msgstr "- Empathy odjemalec overitve" -#: ../src/empathy-auth-client.c:265 +#: ../src/empathy-auth-client.c:300 msgid "Empathy authentication client" msgstr "Empathy odjemalec overitve" @@ -3260,150 +3255,150 @@ msgstr "- Empathy odjemalec zvoka in slike" msgid "Empathy Audio/Video Client" msgstr "Empathy odjemalec zvoka in slike" -#: ../src/empathy-streamed-media-window.c:431 +#: ../src/empathy-streamed-media-window.c:433 msgid "Contrast" msgstr "Kontrast" -#: ../src/empathy-streamed-media-window.c:434 +#: ../src/empathy-streamed-media-window.c:436 msgid "Brightness" msgstr "Svetlost" -#: ../src/empathy-streamed-media-window.c:437 +#: ../src/empathy-streamed-media-window.c:439 msgid "Gamma" msgstr "Gama" -#: ../src/empathy-streamed-media-window.c:542 +#: ../src/empathy-streamed-media-window.c:545 msgid "Volume" msgstr "Glasnost" -#: ../src/empathy-streamed-media-window.c:1110 +#: ../src/empathy-streamed-media-window.c:1097 msgid "_Sidebar" msgstr "_Stranska vrstica" -#: ../src/empathy-streamed-media-window.c:1130 +#: ../src/empathy-streamed-media-window.c:1117 msgid "Audio input" msgstr "Zvočni vhod" -#: ../src/empathy-streamed-media-window.c:1134 +#: ../src/empathy-streamed-media-window.c:1121 msgid "Video input" msgstr "Video vhod" -#: ../src/empathy-streamed-media-window.c:1142 +#: ../src/empathy-streamed-media-window.c:1129 msgid "Dialpad" msgstr "Številčnica" -#: ../src/empathy-streamed-media-window.c:1153 +#: ../src/empathy-streamed-media-window.c:1140 msgid "Details" msgstr "Podrobnosti" #. translators: Call is a noun and %s is the contact name. This string #. * is used in the window title -#: ../src/empathy-streamed-media-window.c:1222 -#: ../src/empathy-call-window.c:1929 +#: ../src/empathy-streamed-media-window.c:1209 +#: ../src/empathy-call-window.c:1927 #, c-format msgid "Call with %s" msgstr "Klic z %s" -#: ../src/empathy-streamed-media-window.c:1455 -#: ../src/empathy-call-window.c:2173 +#: ../src/empathy-streamed-media-window.c:1442 +#: ../src/empathy-call-window.c:2171 msgid "The IP address as seen by the machine" msgstr "Naslov IP kot ga zazna strojna oprema" -#: ../src/empathy-streamed-media-window.c:1457 -#: ../src/empathy-call-window.c:2175 +#: ../src/empathy-streamed-media-window.c:1444 +#: ../src/empathy-call-window.c:2173 msgid "The IP address as seen by a server on the Internet" msgstr "Naslov IP kot ga zazna strežnik v omrežju" -#: ../src/empathy-streamed-media-window.c:1459 -#: ../src/empathy-call-window.c:2177 +#: ../src/empathy-streamed-media-window.c:1446 +#: ../src/empathy-call-window.c:2175 msgid "The IP address of the peer as seen by the other side" msgstr "Naslov IP kot ga zazna uporabnik na drugi strani" -#: ../src/empathy-streamed-media-window.c:1461 -#: ../src/empathy-call-window.c:2179 +#: ../src/empathy-streamed-media-window.c:1448 +#: ../src/empathy-call-window.c:2177 msgid "The IP address of a relay server" msgstr "Naslov IP posredovalnega strežnika" -#: ../src/empathy-streamed-media-window.c:1463 -#: ../src/empathy-call-window.c:2181 +#: ../src/empathy-streamed-media-window.c:1450 +#: ../src/empathy-call-window.c:2179 msgid "The IP address of the multicast group" msgstr "Naslov IP skupine za večsmerno oddajanje" -#: ../src/empathy-streamed-media-window.c:1845 -#: ../src/empathy-streamed-media-window.c:1848 -#: ../src/empathy-streamed-media-window.c:1851 -#: ../src/empathy-streamed-media-window.c:1854 +#: ../src/empathy-streamed-media-window.c:1838 +#: ../src/empathy-streamed-media-window.c:1841 +#: ../src/empathy-streamed-media-window.c:1844 +#: ../src/empathy-streamed-media-window.c:1847 msgctxt "codec" msgid "Unknown" msgstr "Neznano" #. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-streamed-media-window.c:2146 +#: ../src/empathy-streamed-media-window.c:2139 #, c-format msgid "Connected — %d:%02dm" msgstr "Povezan - %d:%02d m" -#: ../src/empathy-streamed-media-window.c:2207 -#: ../src/empathy-call-window.c:2984 +#: ../src/empathy-streamed-media-window.c:2200 +#: ../src/empathy-call-window.c:3033 msgid "Technical Details" msgstr "Tehnične podrobnosti" -#: ../src/empathy-streamed-media-window.c:2245 -#: ../src/empathy-call-window.c:3023 +#: ../src/empathy-streamed-media-window.c:2238 +#: ../src/empathy-call-window.c:3072 #, c-format msgid "%s's software does not understand any of the audio formats supported by your computer" msgstr "Program stika %s ne prepozna zvočnih zapisov podprtih na vašem sistemu" -#: ../src/empathy-streamed-media-window.c:2250 -#: ../src/empathy-call-window.c:3028 +#: ../src/empathy-streamed-media-window.c:2243 +#: ../src/empathy-call-window.c:3077 #, c-format msgid "%s's software does not understand any of the video formats supported by your computer" msgstr "Program stika %s ne prepozna video zapisov podprtih na vašem sistemu" -#: ../src/empathy-streamed-media-window.c:2256 -#: ../src/empathy-call-window.c:3034 +#: ../src/empathy-streamed-media-window.c:2249 +#: ../src/empathy-call-window.c:3083 #, c-format msgid "Can't establish a connection to %s. One of you might be on a network that does not allow direct connections." msgstr "Ni mogoče vzpostaviti povezave z %s. Morda je eden od odjemalcev je v omrežju, ki ne dovoli neposrednih povezav." -#: ../src/empathy-streamed-media-window.c:2262 -#: ../src/empathy-call-window.c:3040 +#: ../src/empathy-streamed-media-window.c:2255 +#: ../src/empathy-call-window.c:3089 msgid "There was a failure on the network" msgstr "Prišlo je do napake na omrežju" -#: ../src/empathy-streamed-media-window.c:2266 -#: ../src/empathy-call-window.c:3044 +#: ../src/empathy-streamed-media-window.c:2259 +#: ../src/empathy-call-window.c:3093 msgid "The audio formats necessary for this call are not installed on your computer" msgstr "Zvočni zapisi za ta klic niso nameščeni" -#: ../src/empathy-streamed-media-window.c:2269 -#: ../src/empathy-call-window.c:3047 +#: ../src/empathy-streamed-media-window.c:2262 +#: ../src/empathy-call-window.c:3096 msgid "The video formats necessary for this call are not installed on your computer" msgstr "Video zapisi za ta klic niso nameščeni" -#: ../src/empathy-streamed-media-window.c:2279 -#: ../src/empathy-call-window.c:3059 +#: ../src/empathy-streamed-media-window.c:2272 +#: ../src/empathy-call-window.c:3108 #, c-format msgid "Something unexpected happened in a Telepathy component. Please report this bug and attach logs gathered from the 'Debug' window in the Help menu." msgstr "Prišlo je do nepričakovane napake v delu programa Telepathy. Pošljite poročilo o hrošču in pripnite dnevnik razhroščevanja iz menija pomoči." -#: ../src/empathy-streamed-media-window.c:2287 -#: ../src/empathy-call-window.c:3068 +#: ../src/empathy-streamed-media-window.c:2280 +#: ../src/empathy-call-window.c:3117 msgid "There was a failure in the call engine" msgstr "Prišlo je do napake v klicnem programniku" -#: ../src/empathy-streamed-media-window.c:2290 -#: ../src/empathy-call-window.c:3071 +#: ../src/empathy-streamed-media-window.c:2283 +#: ../src/empathy-call-window.c:3120 msgid "The end of the stream was reached" msgstr "Dosežen je konec pretoka" -#: ../src/empathy-streamed-media-window.c:2330 -#: ../src/empathy-call-window.c:3111 +#: ../src/empathy-streamed-media-window.c:2323 +#: ../src/empathy-call-window.c:3160 msgid "Can't establish audio stream" msgstr "Ni mogoče vzpostaviti zvočnega pretoka" -#: ../src/empathy-streamed-media-window.c:2340 -#: ../src/empathy-call-window.c:3121 +#: ../src/empathy-streamed-media-window.c:2333 +#: ../src/empathy-call-window.c:3170 msgid "Can't establish video stream" msgstr "Ni mogoče vzpostaviti video pretoka" @@ -3495,10 +3490,10 @@ msgstr "Preklopi prenos videa" #: ../src/empathy-call-window.ui.h:21 #: ../src/empathy-streamed-media-window.ui.h:18 +#: ../src/empathy-call-window.c:2580 #: ../src/empathy-call-window.c:2581 #: ../src/empathy-call-window.c:2582 #: ../src/empathy-call-window.c:2583 -#: ../src/empathy-call-window.c:2584 msgid "Unknown" msgstr "Neznano" @@ -3682,7 +3677,7 @@ msgid "Incoming video call" msgstr "Dohodni video klic" #: ../src/empathy-event-manager.c:521 -#: ../src/empathy-call-window.c:1553 +#: ../src/empathy-call-window.c:1555 msgid "Incoming call" msgstr "Dohodni klic" @@ -3699,7 +3694,7 @@ msgstr "%s vas kliče. Ali se želite javiti?" #: ../src/empathy-event-manager.c:529 #: ../src/empathy-event-manager.c:730 #: ../src/empathy-event-manager.c:763 -#: ../src/empathy-call-window.c:1559 +#: ../src/empathy-call-window.c:1561 #, c-format msgid "Incoming call from %s" msgstr "Dohodni klic od %s" @@ -3719,7 +3714,7 @@ msgstr "_Odgovori z videom" #: ../src/empathy-event-manager.c:730 #: ../src/empathy-event-manager.c:763 -#: ../src/empathy-call-window.c:1559 +#: ../src/empathy-call-window.c:1561 #, c-format msgid "Incoming video call from %s" msgstr "Dohodni video klic od %s" @@ -3763,7 +3758,7 @@ msgid "Incoming file transfer from %s" msgstr "Prihajajoč prenos datoteke od %s" #: ../src/empathy-event-manager.c:1145 -#: ../src/empathy-main-window.c:378 +#: ../src/empathy-main-window.c:377 msgid "Password required" msgstr "Zahtevano geslo" @@ -3916,61 +3911,61 @@ msgstr "Protokol" msgid "Source" msgstr "Vir" -#: ../src/empathy-main-window.c:395 +#: ../src/empathy-main-window.c:394 msgid "Provide Password" msgstr "Vpis gesla" -#: ../src/empathy-main-window.c:401 +#: ../src/empathy-main-window.c:400 msgid "Disconnect" msgstr "Prekini povezavo" -#: ../src/empathy-main-window.c:642 +#: ../src/empathy-main-window.c:637 msgid "No match found" msgstr "Ni najdenih zadetkov." -#: ../src/empathy-main-window.c:750 +#: ../src/empathy-main-window.c:745 #, c-format msgid "Sorry, %s accounts can’t be used until your %s software is updated." msgstr "Računov %s ni mogoče uporabljati, dokler ni posodobljena programska oprema %s." -#: ../src/empathy-main-window.c:818 +#: ../src/empathy-main-window.c:813 msgid "Update software..." msgstr "Posodobitev programske opreme ..." -#: ../src/empathy-main-window.c:824 -#: ../src/empathy-main-window.c:949 +#: ../src/empathy-main-window.c:819 +#: ../src/empathy-main-window.c:940 msgid "Close" msgstr "Zapri" -#: ../src/empathy-main-window.c:937 +#: ../src/empathy-main-window.c:928 msgid "Reconnect" msgstr "Ponovno se poveži" -#: ../src/empathy-main-window.c:943 +#: ../src/empathy-main-window.c:934 msgid "Edit Account" msgstr "Uredi račun" #. Translators: this string will be something like: #. * Top up My Account ($1.23)..." -#: ../src/empathy-main-window.c:1088 +#: ../src/empathy-main-window.c:1073 #, c-format msgid "Top up %s (%s)..." msgstr "Povišaj %s (%s) ..." -#: ../src/empathy-main-window.c:1135 +#: ../src/empathy-main-window.c:1120 msgid "Top up account credit" msgstr "Povišaj znesek na računu" #. top up button -#: ../src/empathy-main-window.c:1206 +#: ../src/empathy-main-window.c:1191 msgid "Top Up..." msgstr "Povišaj ..." -#: ../src/empathy-main-window.c:1949 +#: ../src/empathy-main-window.c:1934 msgid "Contact" msgstr "Stik" -#: ../src/empathy-main-window.c:2324 +#: ../src/empathy-main-window.c:2309 msgid "Contact List" msgstr "Seznam stikov" @@ -4124,79 +4119,79 @@ msgstr "Seznam klepetalnic" msgid "_Room:" msgstr "_Klepetalnica:" -#: ../src/empathy-preferences.c:169 +#: ../src/empathy-preferences.c:166 msgid "Message received" msgstr "Sporočilo je bilo prejeto" -#: ../src/empathy-preferences.c:170 +#: ../src/empathy-preferences.c:167 msgid "Message sent" msgstr "Sporočilo je bilo poslano" -#: ../src/empathy-preferences.c:171 +#: ../src/empathy-preferences.c:168 msgid "New conversation" msgstr "Nov pogovor" -#: ../src/empathy-preferences.c:172 +#: ../src/empathy-preferences.c:169 msgid "Contact goes online" msgstr "Stik se je povezal" -#: ../src/empathy-preferences.c:173 +#: ../src/empathy-preferences.c:170 msgid "Contact goes offline" msgstr "Stik se je odjavil" -#: ../src/empathy-preferences.c:174 +#: ../src/empathy-preferences.c:171 msgid "Account connected" msgstr "Povezava z računom je vzpostavljena" -#: ../src/empathy-preferences.c:175 +#: ../src/empathy-preferences.c:172 msgid "Account disconnected" msgstr "Povezava z računom je prekinjena" -#: ../src/empathy-preferences.c:484 +#: ../src/empathy-preferences.c:475 msgid "Language" msgstr "Jezik" #. translators: Contact name for the chat theme preview -#: ../src/empathy-preferences.c:734 +#: ../src/empathy-preferences.c:725 msgid "Juliet" msgstr "Julija" #. translators: Contact name for the chat theme preview -#: ../src/empathy-preferences.c:741 +#: ../src/empathy-preferences.c:732 msgid "Romeo" msgstr "Romeo" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:747 +#: ../src/empathy-preferences.c:738 msgid "O Romeo, Romeo, wherefore art thou Romeo?" msgstr "O, Romeo, Romeo, zakaj li Romeo?!" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:750 +#: ../src/empathy-preferences.c:741 msgid "Deny thy father and refuse thy name;" msgstr "Odreci se rodu, odvrzi ime," #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:753 +#: ../src/empathy-preferences.c:744 msgid "Or if thou wilt not, be but sworn my love" msgstr "če ne, prisezi večno mi ljubezen," #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:756 +#: ../src/empathy-preferences.c:747 msgid "And I'll no longer be a Capulet." msgstr "in dlje nisem Kapuletova." #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:759 +#: ../src/empathy-preferences.c:750 msgid "Shall I hear more, or shall I speak at this?" msgstr "Al' bi poslušal še, al govoril? " #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:762 +#: ../src/empathy-preferences.c:753 msgid "Juliet has disconnected" msgstr "Julija je prekinila povezavo." -#: ../src/empathy-preferences.c:1175 +#: ../src/empathy-preferences.c:1157 msgid "Preferences" msgstr "Možnosti" @@ -4248,104 +4243,96 @@ msgstr "Omogoči preverjanje črkovanja za jezike:" msgid "General" msgstr "Splošno" -#: ../src/empathy-preferences.ui.h:15 -msgid "Input level:" -msgstr "Vhodna raven:" - #: ../src/empathy-preferences.ui.h:16 -msgid "Input volume:" -msgstr "Vhodna glasnost:" - -#: ../src/empathy-preferences.ui.h:18 msgid "Location sources:" msgstr "Mesta virov:" -#: ../src/empathy-preferences.ui.h:19 +#: ../src/empathy-preferences.ui.h:17 msgid "Log conversations" msgstr "Beleži pogovore" -#: ../src/empathy-preferences.ui.h:20 +#: ../src/empathy-preferences.ui.h:18 msgid "Notifications" msgstr "Obvestila" -#: ../src/empathy-preferences.ui.h:21 +#: ../src/empathy-preferences.ui.h:19 msgid "Play sound for events" msgstr "Predvajaj zvoke ob dogodkih" -#: ../src/empathy-preferences.ui.h:22 +#: ../src/empathy-preferences.ui.h:20 msgid "Privacy" msgstr "Zasebnost" -#: ../src/empathy-preferences.ui.h:23 +#: ../src/empathy-preferences.ui.h:21 msgid "Reduced location accuracy means that nothing more precise than your city, state and country will be published. GPS coordinates will be accurate to 1 decimal place." msgstr "Zmanjšana natančnost mesta pomeni, da ne bo objavljenih podatkov natančnejših od mesta in države. Koordinate GPS bodo natančne na eno decimalno mesto." -#: ../src/empathy-preferences.ui.h:24 +#: ../src/empathy-preferences.ui.h:22 msgid "Show _smileys as images" msgstr "Pokaži _smeške kot slike" -#: ../src/empathy-preferences.ui.h:25 +#: ../src/empathy-preferences.ui.h:23 msgid "Show contact _list in rooms" msgstr "Pokaži _seznam stikov v klepetalnicah" -#: ../src/empathy-preferences.ui.h:26 +#: ../src/empathy-preferences.ui.h:24 msgid "Sounds" msgstr "Zvoki" -#: ../src/empathy-preferences.ui.h:27 +#: ../src/empathy-preferences.ui.h:25 msgid "Spell Checking" msgstr "Preverjanje črkovanja" -#: ../src/empathy-preferences.ui.h:28 +#: ../src/empathy-preferences.ui.h:26 msgid "The list of languages reflects only the languages for which you have a dictionary installed." msgstr "Na seznamu jezikov so le tisti, za katere imate nameščene slovarje." -#: ../src/empathy-preferences.ui.h:29 +#: ../src/empathy-preferences.ui.h:27 msgid "Themes" msgstr "Teme" -#: ../src/empathy-preferences.ui.h:30 +#: ../src/empathy-preferences.ui.h:28 msgid "Use _echo cancellation to improve call quality" msgstr "Uporabi _podporo odpravljanja odmevov za izboljšanje kakovosti klica." -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:29 msgid "Variant:" msgstr "Različica:" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:30 msgid "_Automatically connect on startup" msgstr "Samodejno _poveži ob zagonu " -#: ../src/empathy-preferences.ui.h:33 +#: ../src/empathy-preferences.ui.h:31 msgid "_Cellphone" msgstr "_Mobilni telefon" -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:32 msgid "_Enable bubble notifications" msgstr "_Omogoči obvestila v oblačkih" -#: ../src/empathy-preferences.ui.h:35 +#: ../src/empathy-preferences.ui.h:33 msgid "_Enable sound notifications" msgstr "_Omogoči zvočna obvestila" -#: ../src/empathy-preferences.ui.h:36 +#: ../src/empathy-preferences.ui.h:34 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:37 +#: ../src/empathy-preferences.ui.h:35 msgid "_Network (IP, Wi-Fi)" msgstr "_Omrežje (IP, Wifi)" -#: ../src/empathy-preferences.ui.h:38 +#: ../src/empathy-preferences.ui.h:36 msgid "_Open new chats in separate windows" msgstr "N_ove klepete odpiraj v ločenih oknih" -#: ../src/empathy-preferences.ui.h:39 +#: ../src/empathy-preferences.ui.h:37 msgid "_Publish location to my contacts" msgstr "O_bjavi mesto mojim stikom" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:41 +#: ../src/empathy-preferences.ui.h:39 msgid "_Reduce location accuracy" msgstr "_Zmanjšaj natančnost mesta" @@ -4470,56 +4457,56 @@ msgstr "Raven" msgid "The selected connection manager does not support the remote debugging extension." msgstr "Izbrani upravljalnik povezav ne podpira razširitve za oddaljeno razhroščevanje." -#: ../src/empathy-invite-participant-dialog.c:186 -#: ../src/empathy-invite-participant-dialog.c:214 +#: ../src/empathy-invite-participant-dialog.c:197 +#: ../src/empathy-invite-participant-dialog.c:225 msgid "Invite Participant" msgstr "Povabi udeležence" -#: ../src/empathy-invite-participant-dialog.c:187 +#: ../src/empathy-invite-participant-dialog.c:198 msgid "Choose a contact to invite into the conversation:" msgstr "Izbor stika za povabilo v pogovor:" -#: ../src/empathy-invite-participant-dialog.c:210 +#: ../src/empathy-invite-participant-dialog.c:221 msgid "Invite" msgstr "Povabi" -#: ../src/empathy-accounts.c:184 +#: ../src/empathy-accounts.c:183 msgid "Don't display any dialogs; do any work (eg, importing) and exit" msgstr "Ne pokaži pogovornih oken; opravi nalogo (na primer: uvažanje) in končaj" -#: ../src/empathy-accounts.c:188 +#: ../src/empathy-accounts.c:187 msgid "Don't display any dialogs unless there are only \"People Nearby\" accounts" msgstr "Ne prikaži pogovornega okna, če so na voljo le računov \"uporabnikov v bližini\" " -#: ../src/empathy-accounts.c:192 +#: ../src/empathy-accounts.c:191 msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)" msgstr "Predhodno izberite račun (na primer: gabble/jabber/foo_40primer_2eorg0)" -#: ../src/empathy-accounts.c:194 +#: ../src/empathy-accounts.c:193 msgid "" msgstr "" -#: ../src/empathy-accounts.c:197 +#: ../src/empathy-accounts.c:196 msgid "Show account assistant" msgstr "Pokaži pomočnika za ustvarjanje računov" -#: ../src/empathy-accounts.c:203 +#: ../src/empathy-accounts.c:202 msgid "- Empathy Accounts" msgstr "- Empathy računi" -#: ../src/empathy-accounts.c:242 +#: ../src/empathy-accounts.c:238 msgid "Empathy Accounts" msgstr "Empathy računi" -#: ../src/empathy-debugger.c:70 +#: ../src/empathy-debugger.c:69 msgid "Show a particular service" msgstr "Pokaži posebno storitev" -#: ../src/empathy-debugger.c:75 +#: ../src/empathy-debugger.c:74 msgid "- Empathy Debugger" msgstr "- razhroščevalnik Empathy" -#: ../src/empathy-debugger.c:114 +#: ../src/empathy-debugger.c:113 msgid "Empathy Debugger" msgstr "Empathy razhroščevalnik" @@ -4527,39 +4514,39 @@ msgstr "Empathy razhroščevalnik" msgid "- Empathy Chat Client" msgstr "- sporočilnik Empathy" -#: ../src/empathy-notifications-approver.c:203 +#: ../src/empathy-notifications-approver.c:190 msgid "Respond" msgstr "Odgovori" -#: ../src/empathy-notifications-approver.c:217 -#: ../src/empathy-call-window.c:1563 +#: ../src/empathy-notifications-approver.c:204 +#: ../src/empathy-call-window.c:1565 msgid "Reject" msgstr "Zavrni" -#: ../src/empathy-notifications-approver.c:222 -#: ../src/empathy-notifications-approver.c:227 -#: ../src/empathy-call-window.c:1564 +#: ../src/empathy-notifications-approver.c:209 +#: ../src/empathy-notifications-approver.c:214 +#: ../src/empathy-call-window.c:1566 msgid "Answer" msgstr "Odgovori" -#: ../src/empathy-notifications-approver.c:227 +#: ../src/empathy-notifications-approver.c:214 msgid "Answer with video" msgstr "Odgovori z videom" -#: ../src/empathy-notifications-approver.c:235 -#: ../src/empathy-notifications-approver.c:245 +#: ../src/empathy-notifications-approver.c:222 +#: ../src/empathy-notifications-approver.c:232 msgid "Decline" msgstr "Odkloni" -#: ../src/empathy-notifications-approver.c:239 -#: ../src/empathy-notifications-approver.c:250 +#: ../src/empathy-notifications-approver.c:226 +#: ../src/empathy-notifications-approver.c:237 msgid "Accept" msgstr "Sprejmi" #. translators: the 'Provide' button is displayed in a notification #. * bubble when Empathy is asking for an account password; clicking on it #. * brings the password popup. -#: ../src/empathy-notifications-approver.c:260 +#: ../src/empathy-notifications-approver.c:247 msgid "Provide" msgstr "Zagotovi" @@ -4570,39 +4557,39 @@ msgstr "%s je klical med drugim pogovorom." #. Translators: this is an "Info" label. It should be as short #. * as possible. -#: ../src/empathy-call-window.c:1173 -#: ../src/empathy-call-window.c:1196 +#: ../src/empathy-call-window.c:1172 +#: ../src/empathy-call-window.c:1195 msgid "i" msgstr "i" -#: ../src/empathy-call-window.c:2880 +#: ../src/empathy-call-window.c:2929 msgid "On hold" msgstr "Zadržano" -#: ../src/empathy-call-window.c:2883 +#: ../src/empathy-call-window.c:2932 msgid "Mute" msgstr "Utišaj" -#: ../src/empathy-call-window.c:2885 +#: ../src/empathy-call-window.c:2934 msgid "Duration" msgstr "Trajanje" #. Translators: 'status - minutes:seconds' the caller has been connected -#: ../src/empathy-call-window.c:2888 +#: ../src/empathy-call-window.c:2937 #, c-format msgid "%s — %d:%02dm" msgstr "%s — %d:%02dm" -#: ../src/empathy-call-window.c:3158 +#: ../src/empathy-call-window.c:3207 #, c-format msgid "Your current balance is %s." msgstr "Trenutno stanje je %s." -#: ../src/empathy-call-window.c:3162 +#: ../src/empathy-call-window.c:3211 msgid "Sorry, you don’t have enough credit for that call." msgstr "Na računu ni dovolj visokega zneska za vzpostavitev klica." -#: ../src/empathy-call-window.c:3164 +#: ../src/empathy-call-window.c:3213 msgid "Top Up" msgstr "Povišaj" @@ -4610,6 +4597,18 @@ msgstr "Povišaj" msgid "_Match case" msgstr "_Upoštevaj velikost črk" +#~ msgid "Call volume" +#~ msgstr "Glasnost klica" + +#~ msgid "Call volume, as a percentage." +#~ msgstr "Glasnost klica kot odstotek." + +#~ msgid "Input level:" +#~ msgstr "Vhodna raven:" + +#~ msgid "Input volume:" +#~ msgstr "Vhodna glasnost:" + #~ msgid "Set your presence and current status" #~ msgstr "Nastavitev navzočnosti in trenutnega stanja" diff --git a/po/zh_CN.po b/po/zh_CN.po index 7ce02524..1f83f27e 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -23,9 +23,9 @@ msgstr "" "Project-Id-Version: empathy master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=empathy&keywords=I18N+L10N&component=General\n" -"POT-Creation-Date: 2011-09-26 10:41+0000\n" -"PO-Revision-Date: 2011-09-27 16:14+0000\n" -"Last-Translator: Julius Wong \n" +"POT-Creation-Date: 2011-11-24 11:51+0000\n" +"PO-Revision-Date: 2011-11-25 21:46+0800\n" +"Last-Translator: Yangtse Su \n" "Language-Team: Chinese (simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -54,425 +54,417 @@ msgid "Always open a separate chat window for new chats." msgstr "总是为新聊天打开单独的聊天窗口。" #: ../data/org.gnome.Empathy.gschema.xml.in.h:2 -msgid "Call volume" -msgstr "来电音量" - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 -msgid "Call volume, as a percentage." -msgstr "来电音量,以百分比计。" - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 msgid "Camera device" msgstr "相机设备" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:3 msgid "Camera position" msgstr "相机位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:4 msgid "" "Character to add after nickname when using nick completion (tab) in group " "chat." msgstr "在群聊中使用昵称补全时在昵称后面添加的字符。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:5 msgid "Chat window theme" msgstr "聊天窗口主题" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:6 msgid "Chat window theme variant" msgstr "聊天窗口主题衍生" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:7 msgid "" "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")." msgstr "用于拼写检查器的语言的列表,以逗号分隔(例如:en, fr, nl)。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:8 msgid "Compact contact list" msgstr "紧凑显示联系人列表" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:9 msgid "Connection managers should be used" msgstr "应该使用连接管理器" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:10 msgid "Contact list sort criterion" msgstr "联系人列表排序条件" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:11 +msgid "D-Bus object path of the last account selected to join a room." +msgstr "" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:12 msgid "Default camera device to use in video calls, e.g. /dev/video0." msgstr "视频呼叫时默认使用的相机设备,例如 /dev/video0。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:13 msgid "Default directory to select an avatar image from" msgstr "默认的选取头像图片的目录" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 msgid "Disable popup notifications when away" msgstr "离开时禁用弹出提示" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 msgid "Disable sounds when away" msgstr "离开时禁用声音" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 msgid "Display incoming events in the status area" msgstr "在状态栏显示呼入事件。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 msgid "" "Display incoming events in the status area. If false, present them to the " "user immediately." msgstr "在状态栏显示呼入事件。如果为 false 则立即显示给用户。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 msgid "Echo cancellation support" msgstr "回声抑制支持" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 msgid "Empathy can publish the user's location" msgstr "Empathy 能够发布用户的位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 msgid "Empathy can use the GPS to guess the location" msgstr "Empathy 能够通过 GPS 来估计位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 msgid "Empathy can use the cellular network to guess the location" msgstr "Empathy 能够通过手机来估计位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 msgid "Empathy can use the network to guess the location" msgstr "Empathy 能够通过网络来估计位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 msgid "Empathy default download folder" msgstr "Empathy 默认下载文件夹" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 -msgid "Empathy has migrated butterfly logs" -msgstr "Empathy 已经迁移至 telepathy-butterfly 日志" - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 msgid "Empathy should auto-away when idle" msgstr "Empathy 空闲时是否自动离开" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 msgid "Empathy should auto-connect on startup" msgstr "Empathy 启动时是否自动连接" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:26 msgid "Empathy should reduce the location's accuracy" msgstr "降低 Emapthy 位置信息的准确度" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:27 msgid "Empathy should use the avatar of the contact as the chat window icon" msgstr "Empathy 是否使用联系人头像作为聊天窗口图标" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:28 msgid "Enable WebKit Developer Tools" msgstr "启用 WebKit 开发工具" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:29 msgid "Enable popup notifications for new messages" msgstr "启用新消息弹出提示" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:30 msgid "Enable spell checker" msgstr "启用拼写检查器" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:31 msgid "Hide main window" msgstr "隐藏主窗口" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:32 msgid "Hide the main window." msgstr "隐藏主窗口。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:33 +msgid "Last account selected in Join Room dialog" +msgstr "在加入聊天室对话框中最后选择的帐号" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:34 msgid "Nick completed character" msgstr "昵称补全字符" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:35 msgid "Open new chats in separate windows" msgstr "在单独窗口中打开新聊天" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 msgid "Path of the Adium theme to use" msgstr "Adium 主题的路径" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 msgid "Path of the Adium theme to use if the theme used for chat is Adium." msgstr "如果聊天使用 Adium 主题,使用 Adium 主题的路径" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 msgid "Play a sound for incoming messages" msgstr "收到消息时播放声音" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 msgid "Play a sound for new conversations" msgstr "新对话时播放声音" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 msgid "Play a sound for outgoing messages" msgstr "发出消息时播放声音" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 msgid "Play a sound when a contact logs in" msgstr "联系人登录时播放声音" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 msgid "Play a sound when a contact logs out" msgstr "联系人注销时播放声音" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Play a sound when we log in" msgstr "登录时播放声音" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Play a sound when we log out" msgstr "注销时播放声音" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Pop up notifications if the chat isn't focused" msgstr "如果聊天窗口不是焦点则弹出消息通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Pop up notifications when a contact logs in" msgstr "当联系人登录时弹出通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Pop up notifications when a contact logs out" msgstr "当联系人注销时弹出通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 msgid "Position the camera preview should be during a call." msgstr "在通话时摄像头预览的位置。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 msgid "Show Balance in contact list" msgstr "在联系人列表中显示余额" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "Show avatars" msgstr "显示头像" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "Show contact list in rooms" msgstr "在聊天室显示联系人列表" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "Show hint about closing the main window" msgstr "关闭主窗口时显示提示" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "Show offline contacts" msgstr "显示离线联系人" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Show protocols" msgstr "显示协议" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Spell checking languages" msgstr "拼写检查器语言" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "The default folder to save file transfers in." msgstr "保存传送文件的默认文件夹。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "The last directory that an avatar image was chosen from." msgstr "上次选取头像图片的目录。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "The position for the chat window side pane" msgstr "聊天窗口边栏的位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "The stored position (in pixels) of the chat window side pane." msgstr "聊天窗口边栏保存的位置(像素)。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "The theme that is used to display the conversation in chat windows." msgstr "用于在聊天窗口中显示会话的主题。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 msgid "" "The theme variant that is used to display the conversation in chat windows." msgstr "用于在聊天窗口中显示会话的主题。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "Use graphical smileys" msgstr "使用表情图标" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "Use notification sounds" msgstr "使用通知声音" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "Use theme for chat rooms" msgstr "为聊天室使用主题" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "是否允许 Empathy 将用户的位置共享给联系人" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "Whether Empathy can use the GPS to guess the location." msgstr "是否允许 Empathy 通过 GPS 估计位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "是否允许 Empathy 通过手机网络估计位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "Whether Empathy can use the network to guess the location." msgstr "是否允许 Empathy 通过网络估计位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 -msgid "Whether Empathy has migrated butterfly logs." -msgstr "Empathy 是否已经迁移至 telepathy-butterfly 日志。" - -#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "Empathy 是否在启动时自动登入您的帐号。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "" "Whether Empathy should go into away mode automatically if the user is idle." msgstr "Empathy 是否应在用户空闲时自动进入离开模式。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "" "Whether Empathy should reduce the location's accuracy for privacy reasons." msgstr "是否出于隐私原因降低 Empathy 位置信息的准确度。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 msgid "" "Whether Empathy should use the avatar of the contact as the chat window icon." msgstr "是否使用联系人的头像作为聊天窗口的图标。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 msgid "" "Whether WebKit developer tools, such as the Web Inspector, should be enabled." msgstr "WebKit 开发工具,例如 Web Inspector 是否应该启用。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 msgid "" "Whether connectivity managers should be used to automatically disconnect/" "reconnect." msgstr "是否使用连接管理器自动断开连接或重新连接。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 msgid "" "Whether to check words typed against the languages you want to check with." msgstr "是否对您想要作拼写检查的单词作拼写检查。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 msgid "Whether to convert smileys into graphical images in conversations." msgstr "对话时是否将表情符号转换为表情图标。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 msgid "Whether to enable Pulseaudio's echo cancellation filter." msgstr "是否启用 Pulseaudio 的回声抑制过滤器。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 msgid "Whether to play a sound to notify of contacts logging into the network." msgstr "是否需要联系人上线提示音。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 msgid "" "Whether to play a sound to notify of contacts logging out of the network." msgstr "是否需要联系人下线提示音。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 msgid "Whether to play a sound to notify of events." msgstr "是否需要事件提示音。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 msgid "Whether to play a sound to notify of incoming messages." msgstr "是否需要消息到达提示音。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 msgid "Whether to play a sound to notify of new conversations." msgstr "是否需要新会话提示音。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 msgid "Whether to play a sound to notify of outgoing messages." msgstr "是否为外出消息使用声音提示。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 msgid "Whether to play a sound when logging into a network." msgstr "当联网登录时是否播放提示音。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 msgid "Whether to play a sound when logging out of a network." msgstr "当网络断开时是否播放提示音。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 msgid "Whether to play sound notifications when away or busy." msgstr "当离开或忙碌时是否使用声音提示。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 msgid "Whether to show a popup notification when a contact goes offline." msgstr "当联系人离线时是否显示弹出通知。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 msgid "Whether to show a popup notification when a contact goes online." msgstr "当联系人上线时是否显示弹出通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 msgid "" "Whether to show a popup notification when receiving a new message even if " "the chat is already opened, but not focused." msgstr "如果聊天窗口已开启,但不是当前窗口,接收新消息时是否弹出提示。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 msgid "Whether to show a popup notification when receiving a new message." msgstr "当收到新消息时是否弹出显示提示框。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:93 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 msgid "Whether to show account balances in the contact list." msgstr "是否在联系人列表和聊天窗口中显示余额。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:94 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 msgid "" "Whether to show avatars for contacts in the contact list and chat windows." msgstr "是否在联系人列表和聊天窗口中显示头像。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:95 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:93 msgid "Whether to show contacts that are offline in the contact list." msgstr "是否显示联系人清单中离线的联系人。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:96 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:94 msgid "Whether to show popup notifications when away or busy." msgstr "当离开或忙碌时是否弹出显示提示框。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:97 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:95 msgid "Whether to show protocols for contacts in the contact list." msgstr "是否在联系人列表和聊天窗口中显示协议。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:98 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:96 msgid "Whether to show the contact list in chat rooms." msgstr "是否在聊天室显示联系人列表。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:99 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:97 msgid "Whether to show the contact list in compact mode." msgstr "是否以紧凑模式显示联系人列表。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:100 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:98 msgid "" "Whether to show the message dialog about closing the main window with the " "'x' button in the title bar." msgstr "当使用标题栏中的“X”按钮关闭主窗口时是否显示提示对话框。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:101 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:99 msgid "Whether to use the theme for chat rooms." msgstr "是否对聊天室使用主题。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:102 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:100 msgid "" "Which criterion to use when sorting the contact list. Default is to sort by " "the contact's name with the value \"name\". A value of \"state\" will sort " @@ -487,23 +479,23 @@ msgstr "管理消息和 VoIP 帐号" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2324 +#: ../src/empathy-accounts-dialog.c:2312 msgid "Messaging and VoIP Accounts" msgstr "消息和 VoIP 帐号" -#: ../libempathy/empathy-ft-handler.c:825 +#: ../libempathy/empathy-ft-handler.c:838 msgid "File transfer completed, but the file was corrupted" msgstr "文件传输完成,但该文件已损坏" -#: ../libempathy/empathy-ft-handler.c:1111 +#: ../libempathy/empathy-ft-handler.c:1124 msgid "File transfer not supported by remote contact" msgstr "文件传输不支持远程连接" -#: ../libempathy/empathy-ft-handler.c:1167 +#: ../libempathy/empathy-ft-handler.c:1180 msgid "The selected file is not a regular file" msgstr "所选文件是非正常的文件" -#: ../libempathy/empathy-ft-handler.c:1176 +#: ../libempathy/empathy-ft-handler.c:1189 msgid "The selected file is empty" msgstr "所选文件是空的" @@ -523,35 +515,35 @@ msgstr "与 %s 通话" msgid "Call from %s" msgstr "来电:%s" -#: ../libempathy/empathy-tp-file.c:268 +#: ../libempathy/empathy-tp-file.c:258 msgid "Socket type not supported" msgstr "不支持 Socket 类型" -#: ../libempathy/empathy-tp-file.c:387 +#: ../libempathy/empathy-tp-file.c:377 msgid "No reason was specified" msgstr "未指定原因" -#: ../libempathy/empathy-tp-file.c:390 +#: ../libempathy/empathy-tp-file.c:380 msgid "The change in state was requested" msgstr "需要状态改变信息" -#: ../libempathy/empathy-tp-file.c:393 +#: ../libempathy/empathy-tp-file.c:383 msgid "You canceled the file transfer" msgstr "您取消了文件传输" -#: ../libempathy/empathy-tp-file.c:396 +#: ../libempathy/empathy-tp-file.c:386 msgid "The other participant canceled the file transfer" msgstr "另外的参与者取消了文件的传输" -#: ../libempathy/empathy-tp-file.c:399 +#: ../libempathy/empathy-tp-file.c:389 msgid "Error while trying to transfer the file" msgstr "当传输这个文件的时候发生错误" -#: ../libempathy/empathy-tp-file.c:402 +#: ../libempathy/empathy-tp-file.c:392 msgid "The other participant is unable to transfer the file" msgstr "另外的参与者无法传输这个文件" -#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:312 +#: ../libempathy/empathy-tp-file.c:395 ../libempathy/empathy-utils.c:312 msgid "Unknown reason" msgstr "未知原因" @@ -591,6 +583,7 @@ msgstr "状态已设置为离线" #: ../libempathy/empathy-utils.c:288 ../libempathy/empathy-utils.c:322 #: ../libempathy-gtk/empathy-call-utils.c:49 +#: ../libempathy-gtk/empathy-new-message-dialog.c:82 msgid "Network error" msgstr "网络错误" @@ -692,20 +685,23 @@ msgid "" "chain, exceed the limits imposed by the cryptography library" msgstr "服务器证书的长度——或服务器证书链的深度——超出了加密库的硬性限制" -#: ../libempathy/empathy-utils.c:529 -#: ../libempathy-gtk/empathy-contact-list-store.h:73 +#: ../libempathy/empathy-utils.c:372 +msgid "Your software is too old" +msgstr "你的软件版本太旧了" + +#: ../libempathy/empathy-utils.c:531 msgid "People Nearby" msgstr "附近的人" -#: ../libempathy/empathy-utils.c:534 +#: ../libempathy/empathy-utils.c:536 msgid "Yahoo! Japan" msgstr "Yahoo! 日本" -#: ../libempathy/empathy-utils.c:563 +#: ../libempathy/empathy-utils.c:565 msgid "Google Talk" msgstr "Google Talk" -#: ../libempathy/empathy-utils.c:564 +#: ../libempathy/empathy-utils.c:566 msgid "Facebook Chat" msgstr "Facebook 聊天" @@ -749,7 +745,7 @@ msgstr[0] "%d 月前" msgid "in the future" msgstr "将来" -#: ../libempathy-gtk/empathy-account-chooser.c:540 +#: ../libempathy-gtk/empathy-account-chooser.c:688 msgid "All accounts" msgstr "全部帐号" @@ -772,58 +768,58 @@ msgstr "服务器" msgid "Port" msgstr "端口" -#: ../libempathy-gtk/empathy-account-widget.c:769 -#: ../libempathy-gtk/empathy-account-widget.c:826 +#: ../libempathy-gtk/empathy-account-widget.c:776 +#: ../libempathy-gtk/empathy-account-widget.c:828 #, c-format msgid "%s:" msgstr "%s:" -#: ../libempathy-gtk/empathy-account-widget.c:1192 +#: ../libempathy-gtk/empathy-account-widget.c:1182 msgid "My Web Accounts" msgstr "我的网络帐号" -#: ../libempathy-gtk/empathy-account-widget.c:1208 +#: ../libempathy-gtk/empathy-account-widget.c:1199 #, c-format msgid "The account %s is edited via %s." msgstr "%s 帐号通过 %s 进行了编辑。" -#: ../libempathy-gtk/empathy-account-widget.c:1214 +#: ../libempathy-gtk/empathy-account-widget.c:1205 #, c-format msgid "The account %s cannot be edited in Empathy." msgstr "%s 帐号无法在 Empathy 中编辑。" -#: ../libempathy-gtk/empathy-account-widget.c:1233 +#: ../libempathy-gtk/empathy-account-widget.c:1224 msgid "Launch My Web Accounts" msgstr "启动我的网络帐号" #. general handler -#: ../libempathy-gtk/empathy-account-widget.c:1241 +#: ../libempathy-gtk/empathy-account-widget.c:1232 #, c-format msgid "Edit %s" msgstr "编辑 %s" -#: ../libempathy-gtk/empathy-account-widget.c:1591 +#: ../libempathy-gtk/empathy-account-widget.c:1582 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11 msgid "Username:" msgstr "用户名:" -#: ../libempathy-gtk/empathy-account-widget.c:1909 +#: ../libempathy-gtk/empathy-account-widget.c:1900 msgid "A_pply" msgstr "应用(_P)" -#: ../libempathy-gtk/empathy-account-widget.c:1939 +#: ../libempathy-gtk/empathy-account-widget.c:1930 msgid "L_og in" msgstr "登录(_O)" -#: ../libempathy-gtk/empathy-account-widget.c:2013 +#: ../libempathy-gtk/empathy-account-widget.c:2004 msgid "This account already exists on the server" msgstr "服务器上已存在该帐号" -#: ../libempathy-gtk/empathy-account-widget.c:2016 +#: ../libempathy-gtk/empathy-account-widget.c:2007 msgid "Create a new account on the server" msgstr "在服务器上创建新的帐号" -#: ../libempathy-gtk/empathy-account-widget.c:2208 +#: ../libempathy-gtk/empathy-account-widget.c:2201 msgid "Ca_ncel" msgstr "取消(_N)" @@ -832,19 +828,19 @@ msgstr "取消(_N)" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2486 +#: ../libempathy-gtk/empathy-account-widget.c:2479 #, c-format msgid "%1$s on %2$s" msgstr "%2$s 中的 %1$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2512 +#: ../libempathy-gtk/empathy-account-widget.c:2505 #, c-format msgid "%s Account" msgstr "%s 帐号" -#: ../libempathy-gtk/empathy-account-widget.c:2516 +#: ../libempathy-gtk/empathy-account-widget.c:2509 msgid "New account" msgstr "新建帐号" @@ -892,7 +888,7 @@ msgstr "记住密码" #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:6 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6 -#: ../libempathy-gtk/empathy-password-dialog.c:311 +#: ../libempathy-gtk/empathy-base-password-dialog.c:261 msgid "Remember password" msgstr "记住密码" @@ -1215,7 +1211,7 @@ msgid "STUN Server:" msgstr "STUN 服务器:" #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19 -#: ../libempathy-gtk/empathy-contact-widget.c:347 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:114 msgid "Server:" msgstr "服务器:" @@ -1225,7 +1221,7 @@ msgstr "传输:" #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21 msgid "Use this account to call _landlines and mobile phones" -msgstr "用此账户拨打固定电话和手机(_L)" +msgstr "用此帐户拨打固定电话和手机(_L)" #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22 msgid "What is your SIP account password?" @@ -1297,7 +1293,7 @@ msgid "Click to enlarge" msgstr "单击以放大" #: ../libempathy-gtk/empathy-call-utils.c:44 -#: ../libempathy-gtk/empathy-call-utils.c:60 +#: ../libempathy-gtk/empathy-call-utils.c:62 msgid "There was an error starting the call" msgstr "发起呼叫时出错" @@ -1317,62 +1313,66 @@ msgstr "选择的联系人无效" msgid "Emergency calls are not supported on this protocol" msgstr "不支持在此会话上进行紧急呼叫" -#: ../libempathy-gtk/empathy-chat.c:704 +#: ../libempathy-gtk/empathy-call-utils.c:59 +msgid "You don't have enough credit in order to place this call" +msgstr "您信用卡余额不足以支付此次通话" + +#: ../libempathy-gtk/empathy-chat.c:706 msgid "Failed to open private chat" msgstr "建立私人对话失败" -#: ../libempathy-gtk/empathy-chat.c:765 +#: ../libempathy-gtk/empathy-chat.c:764 msgid "Topic not supported on this conversation" msgstr "不支持在此会话上设置主题" -#: ../libempathy-gtk/empathy-chat.c:771 +#: ../libempathy-gtk/empathy-chat.c:770 msgid "You are not allowed to change the topic" msgstr "您不能更改主题" -#: ../libempathy-gtk/empathy-chat.c:975 +#: ../libempathy-gtk/empathy-chat.c:971 #, c-format msgid "“%s” is not a valid contact ID" msgstr "%s 是无效的联系人 ID" -#: ../libempathy-gtk/empathy-chat.c:1060 +#: ../libempathy-gtk/empathy-chat.c:1066 msgid "/clear: clear all messages from the current conversation" msgstr "/clear:清空当前会话的所有消息" -#: ../libempathy-gtk/empathy-chat.c:1063 +#: ../libempathy-gtk/empathy-chat.c:1069 msgid "/topic : set the topic of the current conversation" msgstr "/topic <主题>:设定当前对话的主题" -#: ../libempathy-gtk/empathy-chat.c:1066 +#: ../libempathy-gtk/empathy-chat.c:1072 msgid "/join : join a new chat room" msgstr "/join <聊天室名>:加入一个新的聊天室" -#: ../libempathy-gtk/empathy-chat.c:1069 +#: ../libempathy-gtk/empathy-chat.c:1075 msgid "/j : join a new chat room" msgstr "/j <聊天室名>:加入一个新的聊天室" -#: ../libempathy-gtk/empathy-chat.c:1073 +#: ../libempathy-gtk/empathy-chat.c:1079 msgid "" "/part [] []: leave the chat room, by default the " "current one" msgstr "/用户[<聊天室ID>] [<原因>]:当前默认离开聊天室" -#: ../libempathy-gtk/empathy-chat.c:1077 +#: ../libempathy-gtk/empathy-chat.c:1083 msgid "/query []: open a private chat" msgstr "/query <昵称> [<消息>]:打开一个私人聊天" -#: ../libempathy-gtk/empathy-chat.c:1080 +#: ../libempathy-gtk/empathy-chat.c:1086 msgid "/msg : open a private chat" msgstr "/msg <昵称> <消息>:打开一个私人聊天" -#: ../libempathy-gtk/empathy-chat.c:1083 +#: ../libempathy-gtk/empathy-chat.c:1089 msgid "/nick : change your nickname on the current server" msgstr "/nick <昵称>:在当前服务器上改变您的昵称" -#: ../libempathy-gtk/empathy-chat.c:1086 +#: ../libempathy-gtk/empathy-chat.c:1092 msgid "/me : send an ACTION message to the current conversation" msgstr "/me <动作消息>:向当前对话中发送一个动作消息" -#: ../libempathy-gtk/empathy-chat.c:1089 +#: ../libempathy-gtk/empathy-chat.c:1095 msgid "" "/say : send to the current conversation. This is used to " "send a message starting with a '/'. For example: \"/say /join is used to " @@ -1381,124 +1381,131 @@ msgstr "" "/say <消息>:发送 <消息> 到当前对话。这是用来发送一个“/”开始的信息。例如:“/" "say /join 是用来加入一个新的聊天室”" -#: ../libempathy-gtk/empathy-chat.c:1094 +#: ../libempathy-gtk/empathy-chat.c:1100 msgid "/whois : display information about a contact" msgstr "/whois <联系人 ID>:显示一个联系人的信息" -#: ../libempathy-gtk/empathy-chat.c:1097 +#: ../libempathy-gtk/empathy-chat.c:1103 msgid "" "/help []: show all supported commands. If is defined, " "show its usage." msgstr "" "/help [<命令>]:显示所有支持的命令。如果 <命令> 是有定义的,则显示它的用法。" -#: ../libempathy-gtk/empathy-chat.c:1114 +#: ../libempathy-gtk/empathy-chat.c:1122 #, c-format msgid "Usage: %s" msgstr "用法:%s" -#: ../libempathy-gtk/empathy-chat.c:1159 +#: ../libempathy-gtk/empathy-chat.c:1167 msgid "Unknown command" msgstr "未知命令" -#: ../libempathy-gtk/empathy-chat.c:1285 +#: ../libempathy-gtk/empathy-chat.c:1293 msgid "Unknown command; see /help for the available commands" msgstr "未知命令,请使用 /help 查阅可用命令" -#. translators: error used when user doesn't have enough credit on his -#. * account to send the message. -#: ../libempathy-gtk/empathy-chat.c:1455 +#: ../libempathy-gtk/empathy-chat.c:1457 msgid "insufficient balance to send message" msgstr "余额不足,无法发送消息" -#: ../libempathy-gtk/empathy-chat.c:1457 +#: ../libempathy-gtk/empathy-chat.c:1461 ../libempathy-gtk/empathy-chat.c:1475 +#: ../libempathy-gtk/empathy-chat.c:1538 +#, c-format +msgid "Error sending message '%s': %s" +msgstr "发送消息“%s”出错:%s" + +#: ../libempathy-gtk/empathy-chat.c:1463 ../libempathy-gtk/empathy-chat.c:1480 +#: ../libempathy-gtk/empathy-chat.c:1542 +#, c-format +msgid "Error sending message: %s" +msgstr "发送消息出错:%s" + +#. translators: error used when user doesn't have enough credit on his +#. * account to send the message. +#: ../libempathy-gtk/empathy-chat.c:1469 +#, c-format +msgid "insufficient balance to send message. Top up." +msgstr "余额不足,无法发送消息。 充值。" + +#: ../libempathy-gtk/empathy-chat.c:1509 msgid "not capable" msgstr "做不到" -#: ../libempathy-gtk/empathy-chat.c:1464 +#: ../libempathy-gtk/empathy-chat.c:1516 msgid "offline" msgstr "离线" -#: ../libempathy-gtk/empathy-chat.c:1467 +#: ../libempathy-gtk/empathy-chat.c:1519 msgid "invalid contact" msgstr "无效联系人" -#: ../libempathy-gtk/empathy-chat.c:1470 +#: ../libempathy-gtk/empathy-chat.c:1522 msgid "permission denied" msgstr "权限不足" -#: ../libempathy-gtk/empathy-chat.c:1473 +#: ../libempathy-gtk/empathy-chat.c:1525 msgid "too long message" msgstr "消息太长" -#: ../libempathy-gtk/empathy-chat.c:1476 +#: ../libempathy-gtk/empathy-chat.c:1528 msgid "not implemented" msgstr "尚未实现" -#: ../libempathy-gtk/empathy-chat.c:1480 +#: ../libempathy-gtk/empathy-chat.c:1532 msgid "unknown" msgstr "未知" -#: ../libempathy-gtk/empathy-chat.c:1486 -#, c-format -msgid "Error sending message '%s': %s" -msgstr "发送消息“%s”出错:%s" - -#: ../libempathy-gtk/empathy-chat.c:1490 -#, c-format -msgid "Error sending message: %s" -msgstr "发送消息出错:%s" - -#: ../libempathy-gtk/empathy-chat.c:1551 ../src/empathy-chat-window.c:761 +#: ../libempathy-gtk/empathy-chat.c:1599 ../src/empathy-chat-window.c:761 msgid "Topic:" msgstr "话题:" -#: ../libempathy-gtk/empathy-chat.c:1563 +#: ../libempathy-gtk/empathy-chat.c:1611 #, c-format msgid "Topic set to: %s" msgstr "话题被设置为:%s" -#: ../libempathy-gtk/empathy-chat.c:1565 +#: ../libempathy-gtk/empathy-chat.c:1613 msgid "No topic defined" msgstr "未设置话题" -#: ../libempathy-gtk/empathy-chat.c:2074 +#: ../libempathy-gtk/empathy-chat.c:2126 msgid "(No Suggestions)" msgstr "(没有建议)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:2142 +#: ../libempathy-gtk/empathy-chat.c:2194 #, c-format msgid "Add '%s' to Dictionary" msgstr "添加“%s”到字典" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:2179 +#: ../libempathy-gtk/empathy-chat.c:2231 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "添加“%s”到 %s 字典" -#: ../libempathy-gtk/empathy-chat.c:2249 +#: ../libempathy-gtk/empathy-chat.c:2301 msgid "Insert Smiley" msgstr "插入表情" #. send button -#: ../libempathy-gtk/empathy-chat.c:2267 -#: ../libempathy-gtk/empathy-ui-utils.c:1839 +#: ../libempathy-gtk/empathy-chat.c:2319 +#: ../libempathy-gtk/empathy-ui-utils.c:1867 msgid "_Send" msgstr "发送(_S)" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2321 +#: ../libempathy-gtk/empathy-chat.c:2376 msgid "_Spelling Suggestions" msgstr "拼写建议(_S)" -#: ../libempathy-gtk/empathy-chat.c:2410 +#: ../libempathy-gtk/empathy-chat.c:2465 msgid "Failed to retrieve recent logs" msgstr "获取最近日志失败" -#: ../libempathy-gtk/empathy-chat.c:2547 +#: ../libempathy-gtk/empathy-chat.c:2602 #, c-format msgid "%s has disconnected" msgstr "%s 已断开连接" @@ -1506,12 +1513,12 @@ msgstr "%s 已断开连接" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2554 +#: ../libempathy-gtk/empathy-chat.c:2609 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%1$s 被 %2$s 踢出" -#: ../libempathy-gtk/empathy-chat.c:2557 +#: ../libempathy-gtk/empathy-chat.c:2612 #, c-format msgid "%s was kicked" msgstr "%s 被踢出" @@ -1519,17 +1526,17 @@ msgstr "%s 被踢出" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2565 +#: ../libempathy-gtk/empathy-chat.c:2620 #, c-format msgid "%1$s was banned by %2$s" msgstr "%s 已被 %s 禁止" -#: ../libempathy-gtk/empathy-chat.c:2568 +#: ../libempathy-gtk/empathy-chat.c:2623 #, c-format msgid "%s was banned" msgstr "%s 被禁止" -#: ../libempathy-gtk/empathy-chat.c:2572 +#: ../libempathy-gtk/empathy-chat.c:2627 #, c-format msgid "%s has left the room" msgstr "%s 离开了聊天室" @@ -1539,17 +1546,17 @@ msgstr "%s 离开了聊天室" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2581 +#: ../libempathy-gtk/empathy-chat.c:2636 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2606 +#: ../libempathy-gtk/empathy-chat.c:2661 #, c-format msgid "%s has joined the room" msgstr "%s 加入了聊天室" -#: ../libempathy-gtk/empathy-chat.c:2631 +#: ../libempathy-gtk/empathy-chat.c:2686 #, c-format msgid "%s is now known as %s" msgstr "%s 现在叫做 %s" @@ -1557,88 +1564,88 @@ msgstr "%s 现在叫做 %s" #. We don't know if the incoming call has been accepted or not, so we #. * assume it hasn't and if it has, we'll set the proper status when #. * we get the new handler. -#: ../libempathy-gtk/empathy-chat.c:2784 -#: ../src/empathy-streamed-media-window.c:1894 -#: ../src/empathy-event-manager.c:1240 ../src/empathy-call-window.c:1432 -#: ../src/empathy-call-window.c:1482 ../src/empathy-call-window.c:2527 +#: ../libempathy-gtk/empathy-chat.c:2847 +#: ../src/empathy-streamed-media-window.c:1889 +#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1538 +#: ../src/empathy-call-window.c:1588 ../src/empathy-call-window.c:2631 msgid "Disconnected" msgstr "已断开连接" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3428 +#: ../libempathy-gtk/empathy-chat.c:3493 msgid "Would you like to store this password?" msgstr "是否保存密码?" -#: ../libempathy-gtk/empathy-chat.c:3434 +#: ../libempathy-gtk/empathy-chat.c:3499 msgid "Remember" msgstr "记录" -#: ../libempathy-gtk/empathy-chat.c:3444 +#: ../libempathy-gtk/empathy-chat.c:3509 msgid "Not now" msgstr "不是现在" -#: ../libempathy-gtk/empathy-chat.c:3488 +#: ../libempathy-gtk/empathy-chat.c:3553 +#: ../libempathy-gtk/empathy-bad-password-dialog.c:142 msgid "Retry" msgstr "重试" -#: ../libempathy-gtk/empathy-chat.c:3492 +#: ../libempathy-gtk/empathy-chat.c:3557 msgid "Wrong password; please try again:" msgstr "密码错误,请重试:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3622 +#: ../libempathy-gtk/empathy-chat.c:3687 msgid "This room is protected by a password:" msgstr "这个房间是由一个密码保护的:" -#: ../libempathy-gtk/empathy-chat.c:3649 +#: ../libempathy-gtk/empathy-chat.c:3714 msgid "Join" msgstr "加入" -#: ../libempathy-gtk/empathy-chat.c:3851 ../src/empathy-event-manager.c:1261 +#: ../libempathy-gtk/empathy-chat.c:3902 ../src/empathy-event-manager.c:1281 msgid "Connected" msgstr "已连接" -#: ../libempathy-gtk/empathy-chat.c:3906 +#: ../libempathy-gtk/empathy-chat.c:3957 msgid "Conversation" msgstr "对话" #. Translators: this string is a something like #. * "Escher Cat (SMS)" -#: ../libempathy-gtk/empathy-chat.c:3911 +#: ../libempathy-gtk/empathy-chat.c:3962 #, c-format msgid "%s (SMS)" msgstr "%s (短信)" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265 msgid "Unknown or invalid identifier" msgstr "未知或无效的识别符" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267 msgid "Contact blocking temporarily unavailable" msgstr "联系人屏蔽暂时不可用" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269 msgid "Contact blocking unavailable" msgstr "联系人屏蔽不可用" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271 msgid "Permission Denied" msgstr "权限不足" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275 msgid "Could not block contact" msgstr "无法屏蔽联系人" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:774 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622 msgid "Edit Blocked Contacts" msgstr "编辑屏蔽的联系人" #. Account and Identifier #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:512 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:506 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2 -#: ../libempathy-gtk/empathy-individual-widget.c:1489 -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 +#: ../libempathy-gtk/empathy-individual-widget.c:1475 #: ../src/empathy-chatrooms-window.ui.h:1 #: ../src/empathy-new-chatroom-dialog.ui.h:1 msgid "Account:" @@ -1656,56 +1663,56 @@ msgid "Remove" msgstr "删除" #. Copy Link Address menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:320 +#: ../libempathy-gtk/empathy-chat-text-view.c:322 #: ../libempathy-gtk/empathy-webkit-utils.c:277 msgid "_Copy Link Address" msgstr "复制链接地址(_C)" #. Open Link menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:327 +#: ../libempathy-gtk/empathy-chat-text-view.c:329 #: ../libempathy-gtk/empathy-webkit-utils.c:284 msgid "_Open Link" msgstr "打开链接(_O)" #. Translators: timestamp displayed between conversations in #. * chat windows (strftime format string) -#: ../libempathy-gtk/empathy-chat-text-view.c:415 +#: ../libempathy-gtk/empathy-chat-text-view.c:417 msgid "%A %B %d %Y" msgstr "%A %B %d %Y" -#: ../libempathy-gtk/empathy-contact-dialogs.c:299 +#: ../libempathy-gtk/empathy-contact-dialogs.c:287 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247 msgid "Edit Contact Information" msgstr "编辑联系人信息" -#: ../libempathy-gtk/empathy-contact-dialogs.c:350 +#: ../libempathy-gtk/empathy-contact-dialogs.c:338 msgid "Personal Information" msgstr "个人信息" -#: ../libempathy-gtk/empathy-contact-dialogs.c:459 +#: ../libempathy-gtk/empathy-contact-dialogs.c:439 #: ../libempathy-gtk/empathy-individual-dialogs.c:119 msgid "New Contact" msgstr "新建联系人" -#: ../libempathy-gtk/empathy-contact-dialogs.c:533 -#: ../libempathy-gtk/empathy-individual-dialogs.c:200 +#: ../libempathy-gtk/empathy-contact-dialogs.c:508 +#: ../libempathy-gtk/empathy-individual-dialogs.c:198 #, c-format msgid "Block %s?" msgstr "屏蔽 %s?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:538 -#: ../libempathy-gtk/empathy-individual-dialogs.c:255 +#: ../libempathy-gtk/empathy-contact-dialogs.c:513 +#: ../libempathy-gtk/empathy-individual-dialogs.c:253 #, c-format msgid "Are you sure you want to block '%s' from contacting you again?" msgstr "确定要屏蔽 %s 以阻止他再次联系您吗?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:543 -#: ../libempathy-gtk/empathy-individual-dialogs.c:277 +#: ../libempathy-gtk/empathy-contact-dialogs.c:518 +#: ../libempathy-gtk/empathy-individual-dialogs.c:275 msgid "_Block" msgstr "屏蔽(_B)" -#: ../libempathy-gtk/empathy-contact-dialogs.c:559 -#: ../libempathy-gtk/empathy-individual-dialogs.c:286 +#: ../libempathy-gtk/empathy-contact-dialogs.c:536 +#: ../libempathy-gtk/empathy-individual-dialogs.c:284 msgid "_Report this contact as abusive" msgid_plural "_Report these contacts as abusive" msgstr[0] "举报联系人滥用" @@ -1722,349 +1729,331 @@ msgstr "订阅请求" msgid "_Block User" msgstr "屏蔽用户(_B)" -#: ../libempathy-gtk/empathy-contact-list-store.h:71 -msgid "Ungrouped" -msgstr "未分组" - -#: ../libempathy-gtk/empathy-contact-list-store.h:72 -msgid "Favorite People" -msgstr "收藏夹" - -#: ../libempathy-gtk/empathy-contact-list-view.c:1986 -#: ../libempathy-gtk/empathy-individual-view.c:2376 -#, c-format -msgid "Do you really want to remove the group '%s'?" -msgstr "您真的要删除群组“%s”吗?" - -#: ../libempathy-gtk/empathy-contact-list-view.c:1988 -#: ../libempathy-gtk/empathy-individual-view.c:2379 -msgid "Removing group" -msgstr "删除群组" - -#. Remove -#: ../libempathy-gtk/empathy-contact-list-view.c:2037 -#: ../libempathy-gtk/empathy-contact-list-view.c:2114 -#: ../libempathy-gtk/empathy-individual-view.c:2434 -#: ../libempathy-gtk/empathy-individual-view.c:2637 -msgid "_Remove" -msgstr "删除(_R)" - -#: ../libempathy-gtk/empathy-contact-list-view.c:2067 -#: ../libempathy-gtk/empathy-individual-view.c:2501 -#, c-format -msgid "Do you really want to remove the contact '%s'?" -msgstr "您真的想要删除联系人“%s”吗?" - -#: ../libempathy-gtk/empathy-contact-list-view.c:2069 -#: ../libempathy-gtk/empathy-individual-view.c:2522 -msgid "Removing contact" -msgstr "删除联系人" - -#: ../libempathy-gtk/empathy-contact-menu.c:220 +#: ../libempathy-gtk/empathy-contact-menu.c:212 +#: ../libempathy-gtk/empathy-individual-menu.c:1558 #: ../src/empathy-main-window-menubar.ui.h:14 msgid "_Add Contact…" msgstr "添加联系人(_A)..." -#: ../libempathy-gtk/empathy-contact-menu.c:300 +#: ../libempathy-gtk/empathy-contact-menu.c:287 msgid "_Block Contact" msgstr "屏蔽联系人" -#: ../libempathy-gtk/empathy-contact-menu.c:329 -#: ../libempathy-gtk/empathy-individual-menu.c:758 +#. add chat button +#: ../libempathy-gtk/empathy-contact-menu.c:316 +#: ../libempathy-gtk/empathy-individual-menu.c:789 +#: ../libempathy-gtk/empathy-new-message-dialog.c:320 #: ../src/empathy-main-window-menubar.ui.h:16 msgid "_Chat" msgstr "聊天(_C)" -#: ../libempathy-gtk/empathy-contact-menu.c:361 -#: ../libempathy-gtk/empathy-individual-menu.c:849 +#: ../libempathy-gtk/empathy-contact-menu.c:348 +#: ../libempathy-gtk/empathy-individual-menu.c:881 msgctxt "menu item" msgid "_Audio Call" msgstr "音频呼叫(_A)" -#: ../libempathy-gtk/empathy-contact-menu.c:394 -#: ../libempathy-gtk/empathy-individual-menu.c:894 +#: ../libempathy-gtk/empathy-contact-menu.c:381 +#: ../libempathy-gtk/empathy-individual-menu.c:926 msgctxt "menu item" msgid "_Video Call" msgstr "视频呼叫(_V)" -#: ../libempathy-gtk/empathy-contact-menu.c:440 -#: ../libempathy-gtk/empathy-individual-menu.c:947 +#: ../libempathy-gtk/empathy-contact-menu.c:427 +#: ../libempathy-gtk/empathy-individual-menu.c:979 #: ../src/empathy-main-window-menubar.ui.h:27 msgid "_Previous Conversations" msgstr "最近会话(_P)" -#: ../libempathy-gtk/empathy-contact-menu.c:462 -#: ../libempathy-gtk/empathy-individual-menu.c:988 +#: ../libempathy-gtk/empathy-contact-menu.c:449 +#: ../libempathy-gtk/empathy-individual-menu.c:1020 msgid "Send File" msgstr "发送文件" -#: ../libempathy-gtk/empathy-contact-menu.c:485 -#: ../libempathy-gtk/empathy-individual-menu.c:1030 +#: ../libempathy-gtk/empathy-contact-menu.c:472 +#: ../libempathy-gtk/empathy-individual-menu.c:1062 msgid "Share My Desktop" msgstr "共享我的桌面" -#: ../libempathy-gtk/empathy-contact-menu.c:525 -#: ../libempathy-gtk/empathy-contact-widget.c:1887 -#: ../libempathy-gtk/empathy-individual-menu.c:1065 -#: ../libempathy-gtk/empathy-individual-widget.c:1372 -msgid "Favorite" -msgstr "收藏" - -#: ../libempathy-gtk/empathy-contact-menu.c:554 -#: ../libempathy-gtk/empathy-individual-menu.c:1093 +#: ../libempathy-gtk/empathy-contact-menu.c:501 +#: ../libempathy-gtk/empathy-individual-menu.c:1125 msgid "Infor_mation" msgstr "信息(_M)" -#: ../libempathy-gtk/empathy-contact-menu.c:600 +#: ../libempathy-gtk/empathy-contact-menu.c:547 msgctxt "Edit contact (contextual menu)" msgid "_Edit" msgstr "编辑(_E)" -#: ../libempathy-gtk/empathy-contact-menu.c:654 -#: ../libempathy-gtk/empathy-individual-menu.c:1284 +#: ../libempathy-gtk/empathy-contact-menu.c:601 +#: ../libempathy-gtk/empathy-individual-menu.c:1316 #: ../src/empathy-chat-window.c:1011 msgid "Inviting you to this room" msgstr "邀请到此聊天室" -#: ../libempathy-gtk/empathy-contact-menu.c:685 -#: ../libempathy-gtk/empathy-individual-menu.c:1330 +#: ../libempathy-gtk/empathy-contact-menu.c:632 +#: ../libempathy-gtk/empathy-individual-menu.c:1362 msgid "_Invite to Chat Room" msgstr "邀请到聊天室(_I)" #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:505 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:499 msgid "Search contacts" msgstr "搜索联系人" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:535 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:529 msgid "Search: " msgstr "搜索" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:593 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:587 msgid "_Add Contact" msgstr "添加联系人(_A)" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:611 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:605 msgid "No contacts found" msgstr "未找到联系人" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:627 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:621 msgid "Your message introducing yourself:" msgstr "您的自我介绍信息:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:635 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:629 msgid "Please let me see when you're online. Thanks!" msgstr "你在线时请让我知道,谢谢!" -#: ../libempathy-gtk/empathy-contact-selector.c:129 -msgid "Select a contact" -msgstr "选择一个联系" - -#: ../libempathy-gtk/empathy-contact-widget.c:336 -#: ../libempathy-gtk/empathy-individual-widget.c:153 -msgid "Full name:" -msgstr "全称:" - -#: ../libempathy-gtk/empathy-contact-widget.c:337 -#: ../libempathy-gtk/empathy-individual-widget.c:154 -msgid "Phone number:" -msgstr "电话号码:" - -#: ../libempathy-gtk/empathy-contact-widget.c:338 -#: ../libempathy-gtk/empathy-individual-widget.c:155 -msgid "E-mail address:" -msgstr "电子邮件地址:" - -#: ../libempathy-gtk/empathy-contact-widget.c:339 -#: ../libempathy-gtk/empathy-individual-widget.c:156 -msgid "Website:" -msgstr "网站:" - -#: ../libempathy-gtk/empathy-contact-widget.c:340 -#: ../libempathy-gtk/empathy-individual-widget.c:157 -msgid "Birthday:" -msgstr "生日:" - -#. Note to translators: this is the caption for a string of the form "5 -#. * minutes ago", and refers to the time since the contact last interacted -#. * with their IM client. -#. -#: ../libempathy-gtk/empathy-contact-widget.c:346 -msgid "Last seen:" -msgstr "最近上线:" - -#: ../libempathy-gtk/empathy-contact-widget.c:348 -msgid "Connected from:" -msgstr "连接来源:" - -#. FIXME: once Idle implements SimplePresence using this information, we can -#. * and should bin this. -#. -#: ../libempathy-gtk/empathy-contact-widget.c:353 -msgid "Away message:" -msgstr "离开消息:" - -#: ../libempathy-gtk/empathy-contact-widget.c:606 +#: ../libempathy-gtk/empathy-contact-widget.c:571 +#: ../libempathy-gtk/empathy-individual-widget.c:304 msgid "Channels:" msgstr "频道:" -#: ../libempathy-gtk/empathy-contact-widget.c:897 -#: ../libempathy-gtk/empathy-individual-widget.c:469 +#: ../libempathy-gtk/empathy-contact-widget.c:751 +#: ../libempathy-gtk/empathy-individual-widget.c:455 msgid "Country ISO Code:" msgstr "包括 ISO 编码:" -#: ../libempathy-gtk/empathy-contact-widget.c:899 -#: ../libempathy-gtk/empathy-individual-widget.c:471 +#: ../libempathy-gtk/empathy-contact-widget.c:753 +#: ../libempathy-gtk/empathy-individual-widget.c:457 msgid "Country:" msgstr "国家:" -#: ../libempathy-gtk/empathy-contact-widget.c:901 -#: ../libempathy-gtk/empathy-individual-widget.c:473 +#: ../libempathy-gtk/empathy-contact-widget.c:755 +#: ../libempathy-gtk/empathy-individual-widget.c:459 msgid "State:" msgstr "省:" -#: ../libempathy-gtk/empathy-contact-widget.c:903 -#: ../libempathy-gtk/empathy-individual-widget.c:475 +#: ../libempathy-gtk/empathy-contact-widget.c:757 +#: ../libempathy-gtk/empathy-individual-widget.c:461 msgid "City:" msgstr "城市:" -#: ../libempathy-gtk/empathy-contact-widget.c:905 -#: ../libempathy-gtk/empathy-individual-widget.c:477 +#: ../libempathy-gtk/empathy-contact-widget.c:759 +#: ../libempathy-gtk/empathy-individual-widget.c:463 msgid "Area:" msgstr "地区:" -#: ../libempathy-gtk/empathy-contact-widget.c:907 -#: ../libempathy-gtk/empathy-individual-widget.c:479 +#: ../libempathy-gtk/empathy-contact-widget.c:761 +#: ../libempathy-gtk/empathy-individual-widget.c:465 msgid "Postal Code:" msgstr "邮政编码:" -#: ../libempathy-gtk/empathy-contact-widget.c:909 -#: ../libempathy-gtk/empathy-individual-widget.c:481 +#: ../libempathy-gtk/empathy-contact-widget.c:763 +#: ../libempathy-gtk/empathy-individual-widget.c:467 msgid "Street:" msgstr "街道:" -#: ../libempathy-gtk/empathy-contact-widget.c:911 -#: ../libempathy-gtk/empathy-individual-widget.c:483 +#: ../libempathy-gtk/empathy-contact-widget.c:765 +#: ../libempathy-gtk/empathy-individual-widget.c:469 msgid "Building:" msgstr "建筑物:" -#: ../libempathy-gtk/empathy-contact-widget.c:913 -#: ../libempathy-gtk/empathy-individual-widget.c:485 +#: ../libempathy-gtk/empathy-contact-widget.c:767 +#: ../libempathy-gtk/empathy-individual-widget.c:471 msgid "Floor:" msgstr "楼层:" -#: ../libempathy-gtk/empathy-contact-widget.c:915 -#: ../libempathy-gtk/empathy-individual-widget.c:487 +#: ../libempathy-gtk/empathy-contact-widget.c:769 +#: ../libempathy-gtk/empathy-individual-widget.c:473 msgid "Room:" msgstr "房间:" -#: ../libempathy-gtk/empathy-contact-widget.c:917 -#: ../libempathy-gtk/empathy-individual-widget.c:489 +#: ../libempathy-gtk/empathy-contact-widget.c:771 +#: ../libempathy-gtk/empathy-individual-widget.c:475 msgid "Text:" msgstr "文本:" -#: ../libempathy-gtk/empathy-contact-widget.c:919 -#: ../libempathy-gtk/empathy-individual-widget.c:491 +#: ../libempathy-gtk/empathy-contact-widget.c:773 +#: ../libempathy-gtk/empathy-individual-widget.c:477 msgid "Description:" msgstr "描述:" -#: ../libempathy-gtk/empathy-contact-widget.c:921 -#: ../libempathy-gtk/empathy-individual-widget.c:493 +#: ../libempathy-gtk/empathy-contact-widget.c:775 +#: ../libempathy-gtk/empathy-individual-widget.c:479 msgid "URI:" msgstr "URI:" -#: ../libempathy-gtk/empathy-contact-widget.c:923 -#: ../libempathy-gtk/empathy-individual-widget.c:495 +#: ../libempathy-gtk/empathy-contact-widget.c:777 +#: ../libempathy-gtk/empathy-individual-widget.c:481 msgid "Accuracy Level:" msgstr "准确程度:" -#: ../libempathy-gtk/empathy-contact-widget.c:925 -#: ../libempathy-gtk/empathy-individual-widget.c:497 +#: ../libempathy-gtk/empathy-contact-widget.c:779 +#: ../libempathy-gtk/empathy-individual-widget.c:483 msgid "Error:" msgstr "错误:" -#: ../libempathy-gtk/empathy-contact-widget.c:927 -#: ../libempathy-gtk/empathy-individual-widget.c:499 +#: ../libempathy-gtk/empathy-contact-widget.c:781 +#: ../libempathy-gtk/empathy-individual-widget.c:485 msgid "Vertical Error (meters):" msgstr "垂直误差(米):" -#: ../libempathy-gtk/empathy-contact-widget.c:929 -#: ../libempathy-gtk/empathy-individual-widget.c:501 +#: ../libempathy-gtk/empathy-contact-widget.c:783 +#: ../libempathy-gtk/empathy-individual-widget.c:487 msgid "Horizontal Error (meters):" msgstr "水平误差(米):" -#: ../libempathy-gtk/empathy-contact-widget.c:931 -#: ../libempathy-gtk/empathy-individual-widget.c:503 +#: ../libempathy-gtk/empathy-contact-widget.c:785 +#: ../libempathy-gtk/empathy-individual-widget.c:489 msgid "Speed:" msgstr "速度:" -#: ../libempathy-gtk/empathy-contact-widget.c:933 -#: ../libempathy-gtk/empathy-individual-widget.c:505 +#: ../libempathy-gtk/empathy-contact-widget.c:787 +#: ../libempathy-gtk/empathy-individual-widget.c:491 msgid "Bearing:" msgstr "方位朝向:" -#: ../libempathy-gtk/empathy-contact-widget.c:935 -#: ../libempathy-gtk/empathy-individual-widget.c:507 +#: ../libempathy-gtk/empathy-contact-widget.c:789 +#: ../libempathy-gtk/empathy-individual-widget.c:493 msgid "Climb Speed:" msgstr "爬升速度:" -#: ../libempathy-gtk/empathy-contact-widget.c:937 -#: ../libempathy-gtk/empathy-individual-widget.c:509 +#: ../libempathy-gtk/empathy-contact-widget.c:791 +#: ../libempathy-gtk/empathy-individual-widget.c:495 msgid "Last Updated on:" msgstr "最近更新于:" -#: ../libempathy-gtk/empathy-contact-widget.c:939 -#: ../libempathy-gtk/empathy-individual-widget.c:511 +#: ../libempathy-gtk/empathy-contact-widget.c:793 +#: ../libempathy-gtk/empathy-individual-widget.c:497 msgid "Longitude:" msgstr "经度:" -#: ../libempathy-gtk/empathy-contact-widget.c:941 -#: ../libempathy-gtk/empathy-individual-widget.c:513 +#: ../libempathy-gtk/empathy-contact-widget.c:795 +#: ../libempathy-gtk/empathy-individual-widget.c:499 msgid "Latitude:" msgstr "纬度:" -#: ../libempathy-gtk/empathy-contact-widget.c:943 -#: ../libempathy-gtk/empathy-individual-widget.c:515 +#: ../libempathy-gtk/empathy-contact-widget.c:797 +#: ../libempathy-gtk/empathy-individual-widget.c:501 msgid "Altitude:" msgstr "海拔:" -#: ../libempathy-gtk/empathy-contact-widget.c:996 -#: ../libempathy-gtk/empathy-contact-widget.c:1011 -#: ../libempathy-gtk/empathy-individual-widget.c:607 -#: ../libempathy-gtk/empathy-individual-widget.c:622 -#: ../src/empathy-preferences.ui.h:17 +#: ../libempathy-gtk/empathy-contact-widget.c:850 +#: ../libempathy-gtk/empathy-contact-widget.c:865 +#: ../libempathy-gtk/empathy-individual-widget.c:593 +#: ../libempathy-gtk/empathy-individual-widget.c:608 +#: ../src/empathy-preferences.ui.h:15 msgid "Location" msgstr "位置" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:1013 -#: ../libempathy-gtk/empathy-individual-widget.c:624 +#: ../libempathy-gtk/empathy-contact-widget.c:867 +#: ../libempathy-gtk/empathy-individual-widget.c:610 #, c-format msgid "%s, %s" msgstr "%s, %s" -#: ../libempathy-gtk/empathy-contact-widget.c:1065 -#: ../libempathy-gtk/empathy-individual-widget.c:673 +#: ../libempathy-gtk/empathy-contact-widget.c:919 +#: ../libempathy-gtk/empathy-individual-widget.c:659 msgid "%B %e, %Y at %R UTC" msgstr "%B %e,%Y 于 %R UTC 时间" -#: ../libempathy-gtk/empathy-contact-widget.c:1147 -#: ../libempathy-gtk/empathy-individual-widget.c:915 +#: ../libempathy-gtk/empathy-contact-widget.c:1001 +#: ../libempathy-gtk/empathy-individual-widget.c:901 msgid "Save Avatar" msgstr "保存头像" -#: ../libempathy-gtk/empathy-contact-widget.c:1203 -#: ../libempathy-gtk/empathy-individual-widget.c:973 +#: ../libempathy-gtk/empathy-contact-widget.c:1057 +#: ../libempathy-gtk/empathy-individual-widget.c:959 msgid "Unable to save avatar" msgstr "无法保存头像" +#: ../libempathy-gtk/empathy-contact-widget.c:1745 +#: ../libempathy-gtk/empathy-individual-menu.c:1097 +#: ../libempathy-gtk/empathy-individual-widget.c:1358 +msgid "Favorite" +msgstr "收藏" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:104 +msgid "Full name" +msgstr "全名" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:105 +msgid "Phone number" +msgstr "电话号码" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:106 +msgid "E-mail address" +msgstr "电子邮件地址" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:107 +msgid "Website" +msgstr "网站" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:108 +msgid "Birthday" +msgstr "生日" + +#. Note to translators: this is the caption for a string of the form "5 +#. * minutes ago", and refers to the time since the contact last interacted +#. * with their IM client. +#: ../libempathy-gtk/empathy-contactinfo-utils.c:113 +msgid "Last seen:" +msgstr "最近上线:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:115 +msgid "Connected from:" +msgstr "连接来源:" + +#. FIXME: once Idle implements SimplePresence using this information, we can +#. * and should bin this. +#: ../libempathy-gtk/empathy-contactinfo-utils.c:119 +msgid "Away message:" +msgstr "离开消息:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:132 +msgid "work" +msgstr "办公" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:133 +msgid "home" +msgstr "主页" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:134 +msgid "mobile" +msgstr "手机" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:135 +msgid "voice" +msgstr "音频" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:136 +msgid "preferred" +msgstr "首选" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:137 +msgid "postal" +msgstr "邮政" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:138 +msgid "parcel" +msgstr "邮件" + #: ../libempathy-gtk/empathy-contact-widget.ui.h:1 msgid "Location at (date)\t" msgstr "位置于(日期)\t" #. Alias #: ../libempathy-gtk/empathy-contact-widget.ui.h:3 -#: ../libempathy-gtk/empathy-individual-widget.c:1308 +#: ../libempathy-gtk/empathy-individual-widget.c:1294 msgid "Alias:" msgstr "别名:" @@ -2084,7 +2073,7 @@ msgstr "联系人详情" #. Identifier to connect to Instant Messaging network #. Translators: Identifier to connect to Instant Messaging network #: ../libempathy-gtk/empathy-contact-widget.ui.h:8 -#: ../libempathy-gtk/empathy-individual-widget.c:1517 +#: ../libempathy-gtk/empathy-individual-widget.c:1503 msgid "Identifier:" msgstr "标识符:" @@ -2121,16 +2110,16 @@ msgid "Select" msgstr "选择" #: ../libempathy-gtk/empathy-groups-widget.c:409 -#: ../src/empathy-main-window.c:1807 +#: ../src/empathy-main-window.c:1952 msgid "Group" msgstr "群组" -#: ../libempathy-gtk/empathy-individual-dialogs.c:260 +#: ../libempathy-gtk/empathy-individual-dialogs.c:258 msgid "The following identity will be blocked:" msgid_plural "The following identities will be blocked:" msgstr[0] "以下用户将被屏蔽:" -#: ../libempathy-gtk/empathy-individual-dialogs.c:267 +#: ../libempathy-gtk/empathy-individual-dialogs.c:265 msgid "The following identity can not be blocked:" msgid_plural "The following identities can not be blocked:" msgstr[0] "以下用户无法被屏蔽:" @@ -2140,74 +2129,94 @@ msgstr[0] "以下用户无法被屏蔽:" msgid "Linked Contacts" msgstr "已绑定的联系人" -#: ../libempathy-gtk/empathy-individual-linker.c:370 +#: ../libempathy-gtk/empathy-individual-linker.c:372 msgid "Select contacts to link" msgstr "选择要绑定的联系人" -#: ../libempathy-gtk/empathy-individual-linker.c:444 +#: ../libempathy-gtk/empathy-individual-linker.c:447 msgid "New contact preview" msgstr "新联系人预览" -#: ../libempathy-gtk/empathy-individual-linker.c:488 +#: ../libempathy-gtk/empathy-individual-linker.c:491 msgid "Contacts selected in the list on the left will be linked together." msgstr "在左侧列表中选中的联系人将被绑定在一起。" #. Translators: this is used in the context menu for a contact. The first #. * parameter is a contact ID (e.g. foo@jabber.org) and the second is one #. * of the user's account IDs (e.g. me@hotmail.com). -#: ../libempathy-gtk/empathy-individual-menu.c:145 +#: ../libempathy-gtk/empathy-individual-menu.c:148 #, c-format msgid "%s (%s)" msgstr "%s (%s)" -#: ../libempathy-gtk/empathy-individual-menu.c:309 +#: ../libempathy-gtk/empathy-individual-menu.c:312 msgid "Select account to use to place the call" -msgstr "选择要用于拨打电话的账户" +msgstr "选择要用于拨打电话的帐户" #. translators: Call is a noun. This string is used in the window #. * title -#: ../libempathy-gtk/empathy-individual-menu.c:313 +#: ../libempathy-gtk/empathy-individual-menu.c:316 #: ../libempathy-gtk/empathy-log-window.ui.h:2 -#: ../src/empathy-streamed-media-window.c:1299 +#: ../src/empathy-streamed-media-window.c:1288 #: ../src/empathy-call-window.ui.h:2 msgid "Call" msgstr "通话" -#: ../libempathy-gtk/empathy-individual-menu.c:378 +#: ../libempathy-gtk/empathy-individual-menu.c:381 msgid "Mobile" msgstr "手机" -#: ../libempathy-gtk/empathy-individual-menu.c:380 +#: ../libempathy-gtk/empathy-individual-menu.c:383 msgid "Work" msgstr "办公" -#: ../libempathy-gtk/empathy-individual-menu.c:382 +#: ../libempathy-gtk/empathy-individual-menu.c:385 msgid "HOME" msgstr "家庭" -#. add an SMS button -#: ../libempathy-gtk/empathy-individual-menu.c:804 -#: ../libempathy-gtk/empathy-new-message-dialog.c:215 +#. add SMS button +#: ../libempathy-gtk/empathy-individual-menu.c:836 +#: ../libempathy-gtk/empathy-new-message-dialog.c:314 msgid "_SMS" msgstr "短信(_S)" -#: ../libempathy-gtk/empathy-individual-menu.c:1142 +#: ../libempathy-gtk/empathy-individual-menu.c:1174 msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "编辑(_E)" #. Translators: this is a verb meaning "to connect two contacts together #. * to form a meta-contact". -#: ../libempathy-gtk/empathy-individual-menu.c:1168 +#: ../libempathy-gtk/empathy-individual-menu.c:1200 msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "绑定联系人(_L)…" -#: ../libempathy-gtk/empathy-individual-view.c:2341 +#: ../libempathy-gtk/empathy-individual-view.c:2362 msgid "Delete and _Block" msgstr "删除并屏蔽(_B)" -#: ../libempathy-gtk/empathy-individual-view.c:2510 +#: ../libempathy-gtk/empathy-individual-view.c:2397 +#, c-format +msgid "Do you really want to remove the group '%s'?" +msgstr "您真的要删除群组“%s”吗?" + +#: ../libempathy-gtk/empathy-individual-view.c:2400 +msgid "Removing group" +msgstr "删除群组" + +#. Remove +#: ../libempathy-gtk/empathy-individual-view.c:2455 +#: ../libempathy-gtk/empathy-individual-view.c:2672 +msgid "_Remove" +msgstr "删除(_R)" + +#: ../libempathy-gtk/empathy-individual-view.c:2532 +#, c-format +msgid "Do you really want to remove the contact '%s'?" +msgstr "您真的想要删除联系人“%s”吗?" + +#: ../libempathy-gtk/empathy-individual-view.c:2541 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " @@ -2215,7 +2224,11 @@ msgid "" msgstr "" "您是否真正地想要删除已绑定的联系人'%s' ? 注意这将删除所有联系已绑定的联系人" -#: ../libempathy-gtk/empathy-individual-widget.c:1656 +#: ../libempathy-gtk/empathy-individual-view.c:2553 +msgid "Removing contact" +msgstr "删除联系人" + +#: ../libempathy-gtk/empathy-individual-widget.c:1642 #, c-format msgid "Linked contact containing %u contact" msgid_plural "Linked contacts containing %u contacts" @@ -2297,133 +2310,133 @@ msgctxt "Unlink individual (button)" msgid "_Unlink" msgstr "解除绑定(_U)" -#: ../libempathy-gtk/empathy-log-window.c:634 +#: ../libempathy-gtk/empathy-log-window.c:621 msgid "History" msgstr "历史" -#: ../libempathy-gtk/empathy-log-window.c:689 +#: ../libempathy-gtk/empathy-log-window.c:676 msgid "Show" msgstr "显示" -#: ../libempathy-gtk/empathy-log-window.c:711 +#: ../libempathy-gtk/empathy-log-window.c:698 msgid "Search" msgstr "搜索" -#: ../libempathy-gtk/empathy-log-window.c:1159 +#: ../libempathy-gtk/empathy-log-window.c:1147 #, c-format msgid "Chat in %s" msgstr "在 %s 聊天" -#: ../libempathy-gtk/empathy-log-window.c:1161 +#: ../libempathy-gtk/empathy-log-window.c:1149 #, c-format msgid "Chat with %s" msgstr "与 %s 聊天" -#: ../libempathy-gtk/empathy-log-window.c:1211 -#: ../libempathy-gtk/empathy-log-window.c:1358 +#: ../libempathy-gtk/empathy-log-window.c:1199 +#: ../libempathy-gtk/empathy-log-window.c:1346 msgctxt "A date with the time" msgid "%A, %e %B %Y %X" msgstr "%Y年%m月%d日 %A" #. Translators: this is an emote: '* Danielle waves' -#: ../libempathy-gtk/empathy-log-window.c:1300 +#: ../libempathy-gtk/empathy-log-window.c:1288 #, c-format msgid "* %s %s" msgstr "* %s %s" #. Translators: this is a message: 'Danielle: hello' #. * The string in bold is the sender's name -#: ../libempathy-gtk/empathy-log-window.c:1306 +#: ../libempathy-gtk/empathy-log-window.c:1294 #, c-format msgid "%s: %s" msgstr "%s:%s" -#: ../libempathy-gtk/empathy-log-window.c:1382 +#: ../libempathy-gtk/empathy-log-window.c:1370 #, c-format msgid "%s second" msgid_plural "%s seconds" msgstr[0] "%s 秒" -#: ../libempathy-gtk/empathy-log-window.c:1389 +#: ../libempathy-gtk/empathy-log-window.c:1377 #, c-format msgid "%s minute" msgid_plural "%s minutes" msgstr[0] "%s 分" -#: ../libempathy-gtk/empathy-log-window.c:1397 +#: ../libempathy-gtk/empathy-log-window.c:1385 #, c-format msgid "Call took %s, ended at %s" msgstr "通话时长:%s,结束于 %s" -#: ../libempathy-gtk/empathy-log-window.c:1729 +#: ../libempathy-gtk/empathy-log-window.c:1719 msgid "Today" msgstr "今天" -#: ../libempathy-gtk/empathy-log-window.c:1733 +#: ../libempathy-gtk/empathy-log-window.c:1723 msgid "Yesterday" msgstr "昨天" #. Translators: A date such as '23 May 2010' (strftime format) -#: ../libempathy-gtk/empathy-log-window.c:1748 +#: ../libempathy-gtk/empathy-log-window.c:1738 msgid "%e %B %Y" msgstr "%Y年%m月%d日" -#: ../libempathy-gtk/empathy-log-window.c:1829 -#: ../libempathy-gtk/empathy-log-window.c:3444 +#: ../libempathy-gtk/empathy-log-window.c:1826 +#: ../libempathy-gtk/empathy-log-window.c:3458 msgid "Anytime" msgstr "随时" -#: ../libempathy-gtk/empathy-log-window.c:1916 -#: ../libempathy-gtk/empathy-log-window.c:2372 +#: ../libempathy-gtk/empathy-log-window.c:1915 +#: ../libempathy-gtk/empathy-log-window.c:2371 msgid "Anyone" msgstr "任何人" -#: ../libempathy-gtk/empathy-log-window.c:2685 +#: ../libempathy-gtk/empathy-log-window.c:2684 msgid "Who" msgstr "谁" -#: ../libempathy-gtk/empathy-log-window.c:2889 +#: ../libempathy-gtk/empathy-log-window.c:2893 msgid "When" msgstr "何时" -#: ../libempathy-gtk/empathy-log-window.c:3005 +#: ../libempathy-gtk/empathy-log-window.c:3009 msgid "Anything" msgstr "任何事" -#: ../libempathy-gtk/empathy-log-window.c:3007 +#: ../libempathy-gtk/empathy-log-window.c:3011 msgid "Text chats" msgstr "文本聊天" -#: ../libempathy-gtk/empathy-log-window.c:3009 +#: ../libempathy-gtk/empathy-log-window.c:3013 #: ../src/empathy-preferences.ui.h:4 msgid "Calls" msgstr "通话" -#: ../libempathy-gtk/empathy-log-window.c:3014 +#: ../libempathy-gtk/empathy-log-window.c:3018 msgid "Incoming calls" msgstr "来电" -#: ../libempathy-gtk/empathy-log-window.c:3015 +#: ../libempathy-gtk/empathy-log-window.c:3019 msgid "Outgoing calls" msgstr "呼出的语音通话" -#: ../libempathy-gtk/empathy-log-window.c:3016 +#: ../libempathy-gtk/empathy-log-window.c:3020 msgid "Missed calls" msgstr "未接来电" -#: ../libempathy-gtk/empathy-log-window.c:3038 +#: ../libempathy-gtk/empathy-log-window.c:3042 msgid "What" msgstr "什么事" -#: ../libempathy-gtk/empathy-log-window.c:3747 +#: ../libempathy-gtk/empathy-log-window.c:3751 msgid "Are you sure you want to delete all logs of previous conversations?" msgstr "确定要删除以前的全部对话日志?" -#: ../libempathy-gtk/empathy-log-window.c:3751 +#: ../libempathy-gtk/empathy-log-window.c:3755 msgid "Clear All" msgstr "全部清除" -#: ../libempathy-gtk/empathy-log-window.c:3758 +#: ../libempathy-gtk/empathy-log-window.c:3762 msgid "Delete from:" msgstr "从以下位置删除:" @@ -2464,36 +2477,101 @@ msgstr "文件(_F)" msgid "page 2" msgstr "第 2 页" -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2 -msgid "Contact ID:" -msgstr "联系人 ID:" +#: ../libempathy-gtk/empathy-new-message-dialog.c:84 +#, fuzzy +#| msgid "The specified contact is offline" +msgid "The contact is offline" +msgstr "选择的联系人离线" -#. add chat button -#: ../libempathy-gtk/empathy-new-message-dialog.c:225 -msgid "C_hat" -msgstr "聊天(_H)" +#: ../libempathy-gtk/empathy-new-message-dialog.c:86 +#, fuzzy +#| msgid "The specified contact is not valid" +msgid "The specified contact is either invalid or unknown" +msgstr "选择的联系人无效" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:88 +msgid "The contact does not support this kind of conversation" +msgstr "选择的联系人不支持在该类型会话" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:90 +msgid "The requested functionality is not implemented for this protocol" +msgstr "所要求的功能与此协议不兼容" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:96 +msgid "Could not start a conversation with the given contact" +msgstr "无法与选择的联系人发起对话" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:98 +msgid "You are banned from this channel" +msgstr "您已被此频道屏蔽" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:100 +msgid "This channel is full" +msgstr "频道已满" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:102 +#, fuzzy +#| msgid "You have been invited to join %s" +msgid "You must be invited to join this channel" +msgstr "您被邀请加入 %s" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:104 +#, fuzzy +#| msgid "Contact disconnected" +msgid "Can't proceed while disconnected" +msgstr "联系人已断开" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:106 +#, fuzzy +#| msgid "permission denied" +msgid "Permission denied" +msgstr "权限不足" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:112 +#, fuzzy +#| msgid "There was an error starting the call" +msgid "There was an error starting the conversation" +msgstr "发起呼叫时出错" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:291 +#: ../libempathy-gtk/empathy-new-call-dialog.c:203 +msgid "Enter a contact identifier or phone number:" +msgstr "输入一个联系人标识或电话号码:" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-message-dialog.c:244 +#: ../libempathy-gtk/empathy-new-message-dialog.c:334 msgid "New Conversation" msgstr "新建对话" -#. add video toggle -#: ../libempathy-gtk/empathy-new-call-dialog.c:204 -msgid "Send _Video" -msgstr "发送视频(_V)" +#. add video button +#: ../libempathy-gtk/empathy-new-call-dialog.c:226 +#, fuzzy +#| msgctxt "menu item" +#| msgid "_Video Call" +msgid "_Video Call" +msgstr "视频呼叫(_V)" -#. add chat button -#: ../libempathy-gtk/empathy-new-call-dialog.c:215 -msgid "C_all" -msgstr "通话(_A)" +#. add audio button +#: ../libempathy-gtk/empathy-new-call-dialog.c:236 +#, fuzzy +#| msgctxt "menu item" +#| msgid "_Audio Call" +msgid "_Audio Call" +msgstr "音频呼叫(_A)" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-call-dialog.c:225 +#: ../libempathy-gtk/empathy-new-call-dialog.c:246 msgid "New Call" msgstr "新建通话" -#: ../libempathy-gtk/empathy-password-dialog.c:274 +#: ../libempathy-gtk/empathy-bad-password-dialog.c:130 +#, fuzzy, c-format +#| msgid "Authentication failed" +msgid "Authentification failed for account %s" +msgstr "验证失败" + +#: ../libempathy-gtk/empathy-base-password-dialog.c:224 +#: ../libempathy-gtk/empathy-password-dialog.c:134 #, c-format msgid "" "Enter your password for account\n" @@ -2530,12 +2608,8 @@ msgstr "点击设置自定义状态" msgid "Set status" msgstr "设置状态" -#: ../libempathy-gtk/empathy-presence-chooser.c:943 -msgid "Set your presence and current status" -msgstr "设置您的状态信息和现在的状态" - #. Custom messages -#: ../libempathy-gtk/empathy-presence-chooser.c:1131 +#: ../libempathy-gtk/empathy-presence-chooser.c:1135 msgid "Custom messages…" msgstr "自定义消息..." @@ -2612,12 +2686,12 @@ msgstr "语音通话结束" msgid "Edit Custom Messages" msgstr "编辑自定义状态" -#: ../libempathy-gtk/empathy-theme-adium.c:1036 +#: ../libempathy-gtk/empathy-theme-adium.c:1047 #, c-format msgid "Message edited at %s" msgstr "消息于 %s 被编辑" -#: ../libempathy-gtk/empathy-theme-adium.c:1726 +#: ../libempathy-gtk/empathy-theme-adium.c:1752 msgid "Normal" msgstr "普通" @@ -2708,26 +2782,26 @@ msgstr "为将来的连接记住本次选择" msgid "Certificate Details" msgstr "证书详情" -#: ../libempathy-gtk/empathy-ui-utils.c:1735 +#: ../libempathy-gtk/empathy-ui-utils.c:1741 msgid "Unable to open URI" msgstr "无法打开 URI" -#: ../libempathy-gtk/empathy-ui-utils.c:1831 +#: ../libempathy-gtk/empathy-ui-utils.c:1859 msgid "Select a file" msgstr "选择文件" -#: ../libempathy-gtk/empathy-ui-utils.c:1903 +#: ../libempathy-gtk/empathy-ui-utils.c:1934 msgid "Insufficient free space to save file" msgstr "空间不足,无法保存文件" -#: ../libempathy-gtk/empathy-ui-utils.c:1911 +#: ../libempathy-gtk/empathy-ui-utils.c:1942 #, c-format msgid "" "%s of free space are required to save this file, but only %s is available. " "Please choose another location." msgstr "保存此文件需要 %s 空闲空间,但目前仅有 %s,请选择其他位置。" -#: ../libempathy-gtk/empathy-ui-utils.c:1955 +#: ../libempathy-gtk/empathy-ui-utils.c:1986 #, c-format msgid "Incoming file from %s" msgstr "从 %s 传来的文件" @@ -2899,39 +2973,31 @@ msgstr "西方语言" msgid "Vietnamese" msgstr "越南语" -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108 -msgid "The selected contact cannot receive files." -msgstr "选择的联系人无法接收文件。" - -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114 -msgid "The selected contact is offline." -msgstr "选择的联系人离线。" - -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169 +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:203 msgid "No error message" msgstr "无错误信息" -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242 +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:276 msgid "Instant Message (Empathy)" msgstr "即时消息(Empathy)" -#: ../src/empathy.c:431 +#: ../src/empathy.c:433 msgid "Don't connect on startup" msgstr "启动时不自动连接" -#: ../src/empathy.c:435 +#: ../src/empathy.c:437 msgid "Don't display the contact list or any other dialogs on startup" msgstr "启动时不显示联系人列表" -#: ../src/empathy.c:450 +#: ../src/empathy.c:452 msgid "- Empathy IM Client" msgstr " - Empathy 即时通讯客户端" -#: ../src/empathy.c:637 +#: ../src/empathy.c:639 msgid "Error contacting the Account Manager" msgstr "联系帐号管理器出错" -#: ../src/empathy.c:639 +#: ../src/empathy.c:641 #, c-format msgid "" "There was an error while trying to connect to the Telepathy Account Manager. " @@ -3030,7 +3096,7 @@ msgstr "" "您可以返回尝试重新输入您的帐号信息,或者退出助理,然后从编辑菜单中加入帐户。" #: ../src/empathy-account-assistant.c:220 -#: ../src/empathy-account-assistant.c:1271 +#: ../src/empathy-account-assistant.c:1272 msgid "An error occurred" msgstr "发生错误" @@ -3073,37 +3139,37 @@ msgstr "" msgid "Do you have an account you've been using with another chat program?" msgstr "您有没有其它聊天软件的帐号?" -#: ../src/empathy-account-assistant.c:652 +#: ../src/empathy-account-assistant.c:653 msgid "Yes, import my account details from " msgstr "有,请导入我的帐号信息" -#: ../src/empathy-account-assistant.c:673 +#: ../src/empathy-account-assistant.c:674 msgid "Yes, I'll enter my account details now" msgstr "有,我现在就输入我的帐号信息" -#: ../src/empathy-account-assistant.c:695 +#: ../src/empathy-account-assistant.c:696 msgid "No, I want a new account" msgstr "不,我想要一个新的帐号" -#: ../src/empathy-account-assistant.c:705 +#: ../src/empathy-account-assistant.c:706 msgid "No, I just want to see people online nearby for now" msgstr "没有,我只是想看看附近现在谁在线上" -#: ../src/empathy-account-assistant.c:726 +#: ../src/empathy-account-assistant.c:727 msgid "Select the accounts you want to import:" msgstr "选择您要导入的帐号:" -#: ../src/empathy-account-assistant.c:813 -#: ../src/empathy-new-chatroom-dialog.c:555 -#: ../src/empathy-new-chatroom-dialog.c:556 +#: ../src/empathy-account-assistant.c:814 +#: ../src/empathy-new-chatroom-dialog.c:625 +#: ../src/empathy-new-chatroom-dialog.c:626 msgid "Yes" msgstr "是" -#: ../src/empathy-account-assistant.c:820 +#: ../src/empathy-account-assistant.c:821 msgid "No, that's all for now" msgstr "没有,就这样吧" -#: ../src/empathy-account-assistant.c:1085 +#: ../src/empathy-account-assistant.c:1086 msgid "" "Empathy can automatically discover and chat with the people connected on the " "same network as you. If you want to use this feature, please check that the " @@ -3114,16 +3180,16 @@ msgstr "" "想使用这个功能,请仔细查看下列信息是否正确。您之后也可以通过“帐号”对话框轻松" "的修改这些信息或关闭这个功能" -#: ../src/empathy-account-assistant.c:1091 -#: ../src/empathy-account-assistant.c:1147 +#: ../src/empathy-account-assistant.c:1092 +#: ../src/empathy-account-assistant.c:1148 msgid "Edit->Accounts" msgstr "编辑->帐号" -#: ../src/empathy-account-assistant.c:1107 +#: ../src/empathy-account-assistant.c:1108 msgid "I do _not want to enable this feature for now" msgstr "暂不启用此特性(_N)" -#: ../src/empathy-account-assistant.c:1143 +#: ../src/empathy-account-assistant.c:1144 msgid "" "You won't be able to chat with people connected to your local network, as " "telepathy-salut is not installed. If you want to enable this feature, please " @@ -3134,23 +3200,23 @@ msgstr "" "用该功能,请安装 telepathy-salut 包,并且在帐号对话框中创建附近的人(People " "Nearby)帐号" -#: ../src/empathy-account-assistant.c:1149 +#: ../src/empathy-account-assistant.c:1150 msgid "telepathy-salut not installed" msgstr "telepathy-salut 未安装" -#: ../src/empathy-account-assistant.c:1195 +#: ../src/empathy-account-assistant.c:1196 msgid "Messaging and VoIP Accounts Assistant" msgstr "消息和 VoIP 帐号助手" -#: ../src/empathy-account-assistant.c:1229 +#: ../src/empathy-account-assistant.c:1230 msgid "Welcome to Empathy" msgstr "欢迎使用 Empathy" -#: ../src/empathy-account-assistant.c:1238 +#: ../src/empathy-account-assistant.c:1239 msgid "Import your existing accounts" msgstr "导入现有帐号" -#: ../src/empathy-account-assistant.c:1256 +#: ../src/empathy-account-assistant.c:1257 msgid "Please enter personal details" msgstr "请输入个人信息" @@ -3168,8 +3234,8 @@ msgid "Your new account has not been saved yet." msgstr "您的新帐号还没有保存。" #: ../src/empathy-accounts-dialog.c:345 -#: ../src/empathy-streamed-media-window.c:754 -#: ../src/empathy-call-window.c:1216 +#: ../src/empathy-streamed-media-window.c:757 +#: ../src/empathy-call-window.c:1325 msgid "Connecting…" msgstr "正在连接..." @@ -3257,11 +3323,11 @@ msgstr "要添加一个新帐号,您首先需要为您想要使用的每个协 msgid "_Import…" msgstr "导入(_I)..." -#: ../src/empathy-auth-client.c:249 +#: ../src/empathy-auth-client.c:284 msgid " - Empathy authentication client" msgstr " - Empathy 认证客户端" -#: ../src/empathy-auth-client.c:265 +#: ../src/empathy-auth-client.c:300 msgid "Empathy authentication client" msgstr "Empathy 认证客户端" @@ -3269,157 +3335,147 @@ msgstr "Empathy 认证客户端" msgid "People nearby" msgstr "附近的人" -#: ../src/empathy-av.c:118 ../src/empathy-call.c:192 +#: ../src/empathy-av.c:118 ../src/empathy-call.c:193 msgid "- Empathy Audio/Video Client" msgstr " - Empathy 语音/视频客户端" -#: ../src/empathy-av.c:134 ../src/empathy-call.c:217 +#: ../src/empathy-av.c:134 ../src/empathy-call.c:218 msgid "Empathy Audio/Video Client" msgstr "Empathy 语音/视频客户端" -#: ../src/empathy-streamed-media-window.c:431 +#: ../src/empathy-streamed-media-window.c:433 msgid "Contrast" msgstr "对比度" -#: ../src/empathy-streamed-media-window.c:434 +#: ../src/empathy-streamed-media-window.c:436 msgid "Brightness" msgstr "亮度" -#: ../src/empathy-streamed-media-window.c:437 +#: ../src/empathy-streamed-media-window.c:439 msgid "Gamma" msgstr "伽马" -#: ../src/empathy-streamed-media-window.c:542 +#: ../src/empathy-streamed-media-window.c:545 msgid "Volume" msgstr "音量" -#: ../src/empathy-streamed-media-window.c:1110 +#: ../src/empathy-streamed-media-window.c:1097 msgid "_Sidebar" msgstr "侧边栏(_S)" -#: ../src/empathy-streamed-media-window.c:1130 +#: ../src/empathy-streamed-media-window.c:1117 msgid "Audio input" msgstr "音频输入" -#: ../src/empathy-streamed-media-window.c:1134 +#: ../src/empathy-streamed-media-window.c:1121 msgid "Video input" msgstr "视频输入" -#: ../src/empathy-streamed-media-window.c:1140 +#: ../src/empathy-streamed-media-window.c:1129 msgid "Dialpad" msgstr "电话键盘" -#: ../src/empathy-streamed-media-window.c:1151 +#: ../src/empathy-streamed-media-window.c:1140 msgid "Details" msgstr "详细信息" #. translators: Call is a noun and %s is the contact name. This string #. * is used in the window title -#: ../src/empathy-streamed-media-window.c:1220 -#: ../src/empathy-call-window.c:1825 +#: ../src/empathy-streamed-media-window.c:1209 +#: ../src/empathy-call-window.c:1927 #, c-format msgid "Call with %s" msgstr "与 %s 通话" -#: ../src/empathy-streamed-media-window.c:1453 -#: ../src/empathy-call-window.c:2069 +#: ../src/empathy-streamed-media-window.c:1442 +#: ../src/empathy-call-window.c:2171 msgid "The IP address as seen by the machine" msgstr "机器所见的 IP 地址" -#: ../src/empathy-streamed-media-window.c:1455 -#: ../src/empathy-call-window.c:2071 +#: ../src/empathy-streamed-media-window.c:1444 +#: ../src/empathy-call-window.c:2173 msgid "The IP address as seen by a server on the Internet" msgstr "Internet 上服务器所见的 IP 地址" -#: ../src/empathy-streamed-media-window.c:1457 -#: ../src/empathy-call-window.c:2073 +#: ../src/empathy-streamed-media-window.c:1446 +#: ../src/empathy-call-window.c:2175 msgid "The IP address of the peer as seen by the other side" msgstr "另一方所见的 IP 地址" -#: ../src/empathy-streamed-media-window.c:1459 -#: ../src/empathy-call-window.c:2075 +#: ../src/empathy-streamed-media-window.c:1448 +#: ../src/empathy-call-window.c:2177 msgid "The IP address of a relay server" msgstr "中转服务器 IP 地址" -#: ../src/empathy-streamed-media-window.c:1461 -#: ../src/empathy-call-window.c:2077 +#: ../src/empathy-streamed-media-window.c:1450 +#: ../src/empathy-call-window.c:2179 msgid "The IP address of the multicast group" msgstr "多播组的 IP 地址" -#: ../src/empathy-streamed-media-window.c:1843 -msgctxt "encoding video codec" -msgid "Unknown" -msgstr "未知" - -#: ../src/empathy-streamed-media-window.c:1846 -msgctxt "encoding audio codec" -msgid "Unknown" -msgstr "未知" - -#: ../src/empathy-streamed-media-window.c:1849 -msgctxt "decoding video codec" -msgid "Unknown" -msgstr "未知" - -#: ../src/empathy-streamed-media-window.c:1852 -msgctxt "decoding audio codec" +#: ../src/empathy-streamed-media-window.c:1838 +#: ../src/empathy-streamed-media-window.c:1841 +#: ../src/empathy-streamed-media-window.c:1844 +#: ../src/empathy-streamed-media-window.c:1847 +#, fuzzy +#| msgid "Unknown" +msgctxt "codec" msgid "Unknown" msgstr "未知" #. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-streamed-media-window.c:2144 +#: ../src/empathy-streamed-media-window.c:2139 #, c-format msgid "Connected — %d:%02dm" msgstr "已连接 — %d:%02dm" -#: ../src/empathy-streamed-media-window.c:2205 -#: ../src/empathy-call-window.c:2846 +#: ../src/empathy-streamed-media-window.c:2200 +#: ../src/empathy-call-window.c:3033 msgid "Technical Details" msgstr "技术细节" -#: ../src/empathy-streamed-media-window.c:2243 -#: ../src/empathy-call-window.c:2884 +#: ../src/empathy-streamed-media-window.c:2238 +#: ../src/empathy-call-window.c:3072 #, c-format msgid "" "%s's software does not understand any of the audio formats supported by your " "computer" msgstr "%s 软件无法理解您计算机所支持的任何音频格式。" -#: ../src/empathy-streamed-media-window.c:2248 -#: ../src/empathy-call-window.c:2889 +#: ../src/empathy-streamed-media-window.c:2243 +#: ../src/empathy-call-window.c:3077 #, c-format msgid "" "%s's software does not understand any of the video formats supported by your " "computer" msgstr "%s 软件无法理解您计算机所支持的任何视频格式。" -#: ../src/empathy-streamed-media-window.c:2254 -#: ../src/empathy-call-window.c:2895 +#: ../src/empathy-streamed-media-window.c:2249 +#: ../src/empathy-call-window.c:3083 #, c-format msgid "" "Can't establish a connection to %s. One of you might be on a network that " "does not allow direct connections." msgstr "不能与 %s 建立连接。可能是两台计算机之一不允许直接连接。" -#: ../src/empathy-streamed-media-window.c:2260 -#: ../src/empathy-call-window.c:2901 +#: ../src/empathy-streamed-media-window.c:2255 +#: ../src/empathy-call-window.c:3089 msgid "There was a failure on the network" msgstr "网络出现一个错误" -#: ../src/empathy-streamed-media-window.c:2264 -#: ../src/empathy-call-window.c:2905 +#: ../src/empathy-streamed-media-window.c:2259 +#: ../src/empathy-call-window.c:3093 msgid "" "The audio formats necessary for this call are not installed on your computer" msgstr "呼叫所需要的音频格式还没有在您的电脑上安装" -#: ../src/empathy-streamed-media-window.c:2267 -#: ../src/empathy-call-window.c:2908 +#: ../src/empathy-streamed-media-window.c:2262 +#: ../src/empathy-call-window.c:3096 msgid "" "The video formats necessary for this call are not installed on your computer" msgstr "呼叫所需要的视频格式还没有在您的电脑上安装" -#: ../src/empathy-streamed-media-window.c:2277 -#: ../src/empathy-call-window.c:2920 +#: ../src/empathy-streamed-media-window.c:2272 +#: ../src/empathy-call-window.c:3108 #, c-format msgid "" "Something unexpected happened in a Telepathy component. Please 汇报这个错误,并附上帮助菜" "单里“调试”窗口收集到的日志。" -#: ../src/empathy-streamed-media-window.c:2285 -#: ../src/empathy-call-window.c:2929 +#: ../src/empathy-streamed-media-window.c:2280 +#: ../src/empathy-call-window.c:3117 msgid "There was a failure in the call engine" msgstr "呼叫引擎里出现了一个故障" -#: ../src/empathy-streamed-media-window.c:2288 -#: ../src/empathy-call-window.c:2932 +#: ../src/empathy-streamed-media-window.c:2283 +#: ../src/empathy-call-window.c:3120 msgid "The end of the stream was reached" msgstr "已到达流的末尾" -#: ../src/empathy-streamed-media-window.c:2328 -#: ../src/empathy-call-window.c:2972 +#: ../src/empathy-streamed-media-window.c:2323 +#: ../src/empathy-call-window.c:3160 msgid "Can't establish audio stream" msgstr "不能建立音频流" -#: ../src/empathy-streamed-media-window.c:2338 -#: ../src/empathy-call-window.c:2982 +#: ../src/empathy-streamed-media-window.c:2333 +#: ../src/empathy-call-window.c:3170 msgid "Can't establish video stream" msgstr "不能建立视频流" @@ -3536,8 +3592,8 @@ msgstr "切换视频传输" #: ../src/empathy-call-window.ui.h:21 #: ../src/empathy-streamed-media-window.ui.h:18 -#: ../src/empathy-call-window.c:2476 ../src/empathy-call-window.c:2477 -#: ../src/empathy-call-window.c:2478 ../src/empathy-call-window.c:2479 +#: ../src/empathy-call-window.c:2580 ../src/empathy-call-window.c:2581 +#: ../src/empathy-call-window.c:2582 ../src/empathy-call-window.c:2583 msgid "Unknown" msgstr "未知" @@ -3701,7 +3757,7 @@ msgstr "管理聊天室收藏" msgid "Incoming video call" msgstr "呼入的视频通话" -#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1449 +#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1555 msgid "Incoming call" msgstr "来电" @@ -3716,7 +3772,7 @@ msgid "%s is calling you. Do you want to answer?" msgstr "%s 来电,您想要接听吗?" #: ../src/empathy-event-manager.c:529 ../src/empathy-event-manager.c:730 -#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1455 +#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1561 #, c-format msgid "Incoming call from %s" msgstr "%s 的来电" @@ -3734,7 +3790,7 @@ msgid "_Answer with video" msgstr "使用视频接听(_A)" #: ../src/empathy-event-manager.c:730 ../src/empathy-event-manager.c:763 -#: ../src/empathy-call-window.c:1455 +#: ../src/empathy-call-window.c:1561 #, c-format msgid "Incoming video call from %s" msgstr "%s 的视频呼叫" @@ -3777,16 +3833,16 @@ msgstr "您被邀请加入 %s" msgid "Incoming file transfer from %s" msgstr "接收 %s 文件传输" -#: ../src/empathy-event-manager.c:1134 ../src/empathy-main-window.c:375 +#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:377 msgid "Password required" msgstr "需要密码" -#: ../src/empathy-event-manager.c:1190 +#: ../src/empathy-event-manager.c:1210 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s 当您在线的时候可见" -#: ../src/empathy-event-manager.c:1194 +#: ../src/empathy-event-manager.c:1214 #, c-format msgid "" "\n" @@ -3929,51 +3985,60 @@ msgstr "协议" msgid "Source" msgstr "源" -#: ../src/empathy-main-window.c:392 +#: ../src/empathy-main-window.c:394 msgid "Provide Password" msgstr "提供密码" -#: ../src/empathy-main-window.c:398 +#: ../src/empathy-main-window.c:400 msgid "Disconnect" msgstr "已断开连接" -#: ../src/empathy-main-window.c:622 +#: ../src/empathy-main-window.c:637 msgid "No match found" msgstr "没有找到匹配项" -#: ../src/empathy-main-window.c:777 +#: ../src/empathy-main-window.c:745 +#, c-format +msgid "Sorry, %s accounts can’t be used until your %s software is updated." +msgstr "很抱歉,在软件 %2$s 更新前,您不能使用 %1$s 帐户。" + +#: ../src/empathy-main-window.c:813 +msgid "Update software..." +msgstr "升级软件" + +#: ../src/empathy-main-window.c:819 ../src/empathy-main-window.c:940 +msgid "Close" +msgstr "关闭" + +#: ../src/empathy-main-window.c:928 msgid "Reconnect" msgstr "重新连接" -#: ../src/empathy-main-window.c:783 +#: ../src/empathy-main-window.c:934 msgid "Edit Account" msgstr "编辑帐号" -#: ../src/empathy-main-window.c:789 -msgid "Close" -msgstr "关闭" - #. Translators: this string will be something like: #. * Top up My Account ($1.23)..." -#: ../src/empathy-main-window.c:928 +#: ../src/empathy-main-window.c:1073 #, c-format msgid "Top up %s (%s)..." msgstr "给 %s 充值(%s)..." -#: ../src/empathy-main-window.c:975 +#: ../src/empathy-main-window.c:1120 msgid "Top up account credit" -msgstr "账户充值" +msgstr "帐户充值" #. top up button -#: ../src/empathy-main-window.c:1046 +#: ../src/empathy-main-window.c:1191 msgid "Top Up..." msgstr "充值..." -#: ../src/empathy-main-window.c:1789 +#: ../src/empathy-main-window.c:1934 msgid "Contact" msgstr "联系人" -#: ../src/empathy-main-window.c:2121 +#: ../src/empathy-main-window.c:2309 msgid "Contact List" msgstr "联系人列表" @@ -3983,7 +4048,7 @@ msgstr "联系人地图(_M)" #: ../src/empathy-main-window-menubar.ui.h:2 msgid "Credit Balance" -msgstr "账户余额" +msgstr "帐户余额" #: ../src/empathy-main-window-menubar.ui.h:3 msgid "Find in Contact _List" @@ -4066,17 +4131,17 @@ msgstr "聊天室(_R)" msgid "_Search for Contacts…" msgstr "搜索联系人(_S)..." -#: ../src/empathy-new-chatroom-dialog.c:337 +#: ../src/empathy-new-chatroom-dialog.c:369 msgid "Chat Room" msgstr "聊天室" -#: ../src/empathy-new-chatroom-dialog.c:353 +#: ../src/empathy-new-chatroom-dialog.c:385 msgid "Members" msgstr "成员" #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name, #. yes/no, yes/no and a number. -#: ../src/empathy-new-chatroom-dialog.c:553 +#: ../src/empathy-new-chatroom-dialog.c:623 #, c-format msgid "" "%s\n" @@ -4089,16 +4154,16 @@ msgstr "" "需要密码: %s\n" "成员: %s" -#: ../src/empathy-new-chatroom-dialog.c:555 -#: ../src/empathy-new-chatroom-dialog.c:556 +#: ../src/empathy-new-chatroom-dialog.c:625 +#: ../src/empathy-new-chatroom-dialog.c:626 msgid "No" msgstr "否" -#: ../src/empathy-new-chatroom-dialog.c:584 +#: ../src/empathy-new-chatroom-dialog.c:654 msgid "Could not start room listing" msgstr "无法开始聊天室列表" -#: ../src/empathy-new-chatroom-dialog.c:594 +#: ../src/empathy-new-chatroom-dialog.c:664 msgid "Could not stop room listing" msgstr "无法停止聊天室列表" @@ -4129,79 +4194,79 @@ msgstr "聊天室列表" msgid "_Room:" msgstr "聊天室(_R):" -#: ../src/empathy-preferences.c:169 +#: ../src/empathy-preferences.c:166 msgid "Message received" msgstr "收到了消息" -#: ../src/empathy-preferences.c:170 +#: ../src/empathy-preferences.c:167 msgid "Message sent" msgstr "发出了消息" -#: ../src/empathy-preferences.c:171 +#: ../src/empathy-preferences.c:168 msgid "New conversation" msgstr "新对话" -#: ../src/empathy-preferences.c:172 +#: ../src/empathy-preferences.c:169 msgid "Contact goes online" msgstr "离线人上线" -#: ../src/empathy-preferences.c:173 +#: ../src/empathy-preferences.c:170 msgid "Contact goes offline" msgstr "联系人离线" -#: ../src/empathy-preferences.c:174 +#: ../src/empathy-preferences.c:171 msgid "Account connected" msgstr "帐号已连接" -#: ../src/empathy-preferences.c:175 +#: ../src/empathy-preferences.c:172 msgid "Account disconnected" msgstr "帐号已断开" -#: ../src/empathy-preferences.c:484 +#: ../src/empathy-preferences.c:475 msgid "Language" msgstr "语言" #. translators: Contact name for the chat theme preview -#: ../src/empathy-preferences.c:734 +#: ../src/empathy-preferences.c:725 msgid "Juliet" msgstr "朱立叶" #. translators: Contact name for the chat theme preview -#: ../src/empathy-preferences.c:741 +#: ../src/empathy-preferences.c:732 msgid "Romeo" msgstr "罗密欧" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:747 +#: ../src/empathy-preferences.c:738 msgid "O Romeo, Romeo, wherefore art thou Romeo?" msgstr "O Romeo, Romeo, wherefore art thou Romeo?" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:750 +#: ../src/empathy-preferences.c:741 msgid "Deny thy father and refuse thy name;" msgstr "Deny thy father and refuse thy name;" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:753 +#: ../src/empathy-preferences.c:744 msgid "Or if thou wilt not, be but sworn my love" msgstr "Or if thou wilt not, be but sworn my love" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:756 +#: ../src/empathy-preferences.c:747 msgid "And I'll no longer be a Capulet." msgstr "And I'll no longer be a Capulet." #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:759 +#: ../src/empathy-preferences.c:750 msgid "Shall I hear more, or shall I speak at this?" msgstr "Shall I hear more, or shall I speak at this?" #. translators: Quote from Romeo & Julier, for chat theme preview -#: ../src/empathy-preferences.c:762 +#: ../src/empathy-preferences.c:753 msgid "Juliet has disconnected" msgstr "朱立叶已断开连接" -#: ../src/empathy-preferences.c:1166 +#: ../src/empathy-preferences.c:1157 msgid "Preferences" msgstr "首选项" @@ -4259,35 +4324,27 @@ msgstr "允许拼写检查的语言:" msgid "General" msgstr "常规" -#: ../src/empathy-preferences.ui.h:15 -msgid "Input level:" -msgstr "输入级别:" - #: ../src/empathy-preferences.ui.h:16 -msgid "Input volume:" -msgstr "输入音量:" - -#: ../src/empathy-preferences.ui.h:18 msgid "Location sources:" msgstr "位置来源:" -#: ../src/empathy-preferences.ui.h:19 +#: ../src/empathy-preferences.ui.h:17 msgid "Log conversations" msgstr "记录对话" -#: ../src/empathy-preferences.ui.h:20 +#: ../src/empathy-preferences.ui.h:18 msgid "Notifications" msgstr "提示" -#: ../src/empathy-preferences.ui.h:21 +#: ../src/empathy-preferences.ui.h:19 msgid "Play sound for events" msgstr "播放事件声音" -#: ../src/empathy-preferences.ui.h:22 +#: ../src/empathy-preferences.ui.h:20 msgid "Privacy" msgstr "隐私" -#: ../src/empathy-preferences.ui.h:23 +#: ../src/empathy-preferences.ui.h:21 msgid "" "Reduced location accuracy means that nothing more precise than your city, " "state and country will be published. GPS coordinates will be accurate to 1 " @@ -4296,70 +4353,74 @@ msgstr "" "降低定位精度意味着比您所在的城市、州和国家更明确的信息将不会被公布。 GPS 坐标" "将精确到一位小数。 " -#: ../src/empathy-preferences.ui.h:24 +#: ../src/empathy-preferences.ui.h:22 msgid "Show _smileys as images" msgstr "显示表情符号为图形(_S)" -#: ../src/empathy-preferences.ui.h:25 +#: ../src/empathy-preferences.ui.h:23 msgid "Show contact _list in rooms" msgstr "在聊天室显示联系人列表(_L)" -#: ../src/empathy-preferences.ui.h:26 +#: ../src/empathy-preferences.ui.h:24 msgid "Sounds" msgstr "声音" -#: ../src/empathy-preferences.ui.h:27 +#: ../src/empathy-preferences.ui.h:25 msgid "Spell Checking" msgstr "拼写检查" -#: ../src/empathy-preferences.ui.h:28 +#: ../src/empathy-preferences.ui.h:26 msgid "" "The list of languages reflects only the languages for which you have a " "dictionary installed." msgstr "语言列表仅反映已安装的字典" -#: ../src/empathy-preferences.ui.h:29 +#: ../src/empathy-preferences.ui.h:27 msgid "Themes" msgstr "主题" -#: ../src/empathy-preferences.ui.h:30 +#: ../src/empathy-preferences.ui.h:28 +msgid "Use _echo cancellation to improve call quality" +msgstr "使用回声抑制,以改善通话质量" + +#: ../src/empathy-preferences.ui.h:29 msgid "Variant:" msgstr "版本:" -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:30 msgid "_Automatically connect on startup" msgstr "启动时自动连接(_A) " -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:31 msgid "_Cellphone" msgstr "手机(_C)" -#: ../src/empathy-preferences.ui.h:33 +#: ../src/empathy-preferences.ui.h:32 msgid "_Enable bubble notifications" msgstr "允许气泡通知(_E)" -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:33 msgid "_Enable sound notifications" msgstr "启用声音通知(_E)" -#: ../src/empathy-preferences.ui.h:35 +#: ../src/empathy-preferences.ui.h:34 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:36 +#: ../src/empathy-preferences.ui.h:35 msgid "_Network (IP, Wi-Fi)" msgstr "网络(_N)(IP,Wi-Fi)" -#: ../src/empathy-preferences.ui.h:37 +#: ../src/empathy-preferences.ui.h:36 msgid "_Open new chats in separate windows" msgstr "在单独窗口中打开新聊天(_O)" -#: ../src/empathy-preferences.ui.h:38 +#: ../src/empathy-preferences.ui.h:37 msgid "_Publish location to my contacts" msgstr "向我的联系人公布位置信息(_P)" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:40 +#: ../src/empathy-preferences.ui.h:39 msgid "_Reduce location accuracy" msgstr "降低位置信息精度(_R)" @@ -4485,16 +4546,16 @@ msgid "" "extension." msgstr "已选定的连接管理不支持远程调试扩展" -#: ../src/empathy-invite-participant-dialog.c:179 -#: ../src/empathy-invite-participant-dialog.c:205 +#: ../src/empathy-invite-participant-dialog.c:197 +#: ../src/empathy-invite-participant-dialog.c:225 msgid "Invite Participant" msgstr "邀请参与者" -#: ../src/empathy-invite-participant-dialog.c:180 +#: ../src/empathy-invite-participant-dialog.c:198 msgid "Choose a contact to invite into the conversation:" msgstr "选择一个联系人以加入该会话:" -#: ../src/empathy-invite-participant-dialog.c:201 +#: ../src/empathy-invite-participant-dialog.c:221 msgid "Invite" msgstr "邀请" @@ -4516,23 +4577,29 @@ msgstr "首先选择给定帐号(如 gabble/jabber/foo_40example_2eorg0)" msgid "" msgstr "<帐号 ID>" -#: ../src/empathy-accounts.c:198 +#: ../src/empathy-accounts.c:196 +#, fuzzy +#| msgid "Show the accounts dialog" +msgid "Show account assistant" +msgstr "显示帐号对话框" + +#: ../src/empathy-accounts.c:202 msgid "- Empathy Accounts" msgstr "- Empathy 帐号" -#: ../src/empathy-accounts.c:237 +#: ../src/empathy-accounts.c:238 msgid "Empathy Accounts" msgstr "Empathy 帐号" -#: ../src/empathy-debugger.c:70 +#: ../src/empathy-debugger.c:69 msgid "Show a particular service" msgstr "显示特定的服务" -#: ../src/empathy-debugger.c:75 +#: ../src/empathy-debugger.c:74 msgid "- Empathy Debugger" msgstr "- Empathy 调试器" -#: ../src/empathy-debugger.c:114 +#: ../src/empathy-debugger.c:113 msgid "Empathy Debugger" msgstr "Empathy 调试器" @@ -4540,39 +4607,39 @@ msgstr "Empathy 调试器" msgid "- Empathy Chat Client" msgstr " - Empathy IM 客户端" -#: ../src/empathy-notifications-approver.c:203 +#: ../src/empathy-notifications-approver.c:190 msgid "Respond" msgstr "响应" -#: ../src/empathy-notifications-approver.c:217 -#: ../src/empathy-call-window.c:1459 +#: ../src/empathy-notifications-approver.c:204 +#: ../src/empathy-call-window.c:1565 msgid "Reject" msgstr "拒绝" -#: ../src/empathy-notifications-approver.c:222 -#: ../src/empathy-notifications-approver.c:227 -#: ../src/empathy-call-window.c:1460 +#: ../src/empathy-notifications-approver.c:209 +#: ../src/empathy-notifications-approver.c:214 +#: ../src/empathy-call-window.c:1566 msgid "Answer" msgstr "接听" -#: ../src/empathy-notifications-approver.c:227 +#: ../src/empathy-notifications-approver.c:214 msgid "Answer with video" msgstr "以视频应答" -#: ../src/empathy-notifications-approver.c:235 -#: ../src/empathy-notifications-approver.c:245 +#: ../src/empathy-notifications-approver.c:222 +#: ../src/empathy-notifications-approver.c:232 msgid "Decline" msgstr "拒绝" -#: ../src/empathy-notifications-approver.c:239 -#: ../src/empathy-notifications-approver.c:250 +#: ../src/empathy-notifications-approver.c:226 +#: ../src/empathy-notifications-approver.c:237 msgid "Accept" msgstr "接受" #. translators: the 'Provide' button is displayed in a notification #. * bubble when Empathy is asking for an account password; clicking on it #. * brings the password popup. -#: ../src/empathy-notifications-approver.c:260 +#: ../src/empathy-notifications-approver.c:247 msgid "Provide" msgstr "提供" @@ -4583,32 +4650,109 @@ msgstr "%s 刚刚尝试呼叫您,但您当时正在与其他人通话。" #. Translators: this is an "Info" label. It should be as short #. * as possible. -#: ../src/empathy-call-window.c:1088 ../src/empathy-call-window.c:1111 +#: ../src/empathy-call-window.c:1172 ../src/empathy-call-window.c:1195 msgid "i" msgstr "i" -#: ../src/empathy-call-window.c:2775 +#: ../src/empathy-call-window.c:2929 msgid "On hold" msgstr "挂起" -#: ../src/empathy-call-window.c:2778 +#: ../src/empathy-call-window.c:2932 msgid "Mute" msgstr "静音" -#: ../src/empathy-call-window.c:2780 +#: ../src/empathy-call-window.c:2934 msgid "Duration" msgstr "时长" #. Translators: 'status - minutes:seconds' the caller has been connected -#: ../src/empathy-call-window.c:2783 +#: ../src/empathy-call-window.c:2937 #, c-format msgid "%s — %d:%02dm" msgstr "%s — %d:%02dm" +#: ../src/empathy-call-window.c:3207 +#, c-format +msgid "Your current balance is %s." +msgstr "您当前的余额为 %s。" + +#: ../src/empathy-call-window.c:3211 +msgid "Sorry, you don’t have enough credit for that call." +msgstr "对不起,您信用卡余额不足以支付此次通话。" + +#: ../src/empathy-call-window.c:3213 +msgid "Top Up" +msgstr "充值" + #: ../libempathy-gtk/empathy-search-bar.c:243 msgid "_Match case" msgstr "区分大小写(_M)" +#~ msgid "Call volume" +#~ msgstr "来电音量" + +#~ msgid "Call volume, as a percentage." +#~ msgstr "来电音量,以百分比计。" + +#~ msgid "Input level:" +#~ msgstr "输入级别:" + +#~ msgid "Input volume:" +#~ msgstr "输入音量:" + +#~ msgid "Empathy has migrated butterfly logs" +#~ msgstr "Empathy 已经迁移至 telepathy-butterfly 日志" + +#~ msgid "Whether Empathy has migrated butterfly logs." +#~ msgstr "Empathy 是否已经迁移至 telepathy-butterfly 日志。" + +#~ msgid "Ungrouped" +#~ msgstr "未分组" + +#~ msgid "Favorite People" +#~ msgstr "收藏夹" + +#~ msgid "Select a contact" +#~ msgstr "选择一个联系" + +#~ msgid "Contact ID:" +#~ msgstr "联系人 ID:" + +#~ msgid "C_hat" +#~ msgstr "聊天(_H)" + +#~ msgid "Send _Video" +#~ msgstr "发送视频(_V)" + +#~ msgid "C_all" +#~ msgstr "通话(_A)" + +#~ msgid "Set your presence and current status" +#~ msgstr "设置您的状态信息和现在的状态" + +#~ msgid "The selected contact cannot receive files." +#~ msgstr "选择的联系人无法接收文件。" + +#~ msgid "The selected contact is offline." +#~ msgstr "选择的联系人离线。" + +#~ msgctxt "encoding video codec" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "encoding audio codec" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "decoding video codec" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "decoding audio codec" +#~ msgid "Unknown" +#~ msgstr "未知" + #~ msgid "Find Next" #~ msgstr "向下查找" @@ -4743,9 +4887,6 @@ msgstr "区分大小写(_M)" #~ msgid "Custom messages..." #~ msgstr "自定义状态..." -#~ msgid "Show the accounts dialog" -#~ msgstr "显示帐号对话框" - #~ msgid "The error message was: %s" #~ msgstr "错误信息是:%s" diff --git a/po/zh_HK.po b/po/zh_HK.po index 88cd526e..0bb97f1f 100644 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -7,10 +7,10 @@ # msgid "" msgstr "" -"Project-Id-Version: empathy 3.1.92\n" +"Project-Id-Version: empathy 3.3.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-09-25 14:31+0800\n" -"PO-Revision-Date: 2011-09-25 14:32+0800\n" +"POT-Creation-Date: 2011-11-12 19:09+0800\n" +"PO-Revision-Date: 2011-11-12 19:10+0800\n" "Last-Translator: Cheng-Chia Tseng \n" "Language-Team: Chinese (Hong Kong) \n" "Language: zh_TW\n" @@ -87,59 +87,59 @@ msgid "Contact list sort criterion" msgstr "聯絡人清單排序準則" #: ../data/org.gnome.Empathy.gschema.xml.in.h:13 +msgid "D-Bus object path of the last account selected to join a room." +msgstr "上次要加入聊天室所選取帳號的 D-Bus 物件路徑。" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 msgid "Default camera device to use in video calls, e.g. /dev/video0." msgstr "要用於視像通話的預設攝影機裝置,例:/dev/video0。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 msgid "Default directory to select an avatar image from" msgstr "用來選擇大頭貼圖片的預設目錄" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 msgid "Disable popup notifications when away" msgstr "當狀態為離開時停用彈出式通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 msgid "Disable sounds when away" msgstr "當狀態為離開時停用音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 msgid "Display incoming events in the status area" msgstr "在狀態區域顯示收到事件" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 msgid "" "Display incoming events in the status area. If false, present them to the " "user immediately." msgstr "在狀態區域顯示收到事件。如果不啟用的話,收到事件會直接呈現給使用者。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 msgid "Echo cancellation support" msgstr "回音消除支援" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 msgid "Empathy can publish the user's location" msgstr "Empathy 可以發布使用者的位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 msgid "Empathy can use the GPS to guess the location" msgstr "Empathy 可以利用 GPS 來推測位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 msgid "Empathy can use the cellular network to guess the location" msgstr "Empathy 可以利用流動電話網絡基地臺來推測位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 msgid "Empathy can use the network to guess the location" msgstr "Empathy 可以利用網絡來推測位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 msgid "Empathy default download folder" msgstr "Empathy 預設下載資料夾" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 -msgid "Empathy has migrated butterfly logs" -msgstr "Empathy 已轉移 butterfly 日誌" - #: ../data/org.gnome.Empathy.gschema.xml.in.h:26 msgid "Empathy should auto-away when idle" msgstr "Empathy 當閒置時應該自動設為離開" @@ -177,150 +177,150 @@ msgid "Hide the main window." msgstr "隱藏主視窗。" #: ../data/org.gnome.Empathy.gschema.xml.in.h:35 +msgid "Last account selected in Join Room dialog" +msgstr "上次在「參加聊天室」對話盒選取的帳號" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 msgid "Nick completed character" msgstr "網名補齊字符" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 msgid "Open new chats in separate windows" msgstr "在個別視窗開啟新的聊天" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 msgid "Path of the Adium theme to use" msgstr "要使用的 Adium 佈景主題路徑" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 msgid "Path of the Adium theme to use if the theme used for chat is Adium." msgstr "如果聊天室使用的主題是 Adium 時要使用的 Adium 佈景主題路徑。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 msgid "Play a sound for incoming messages" msgstr "收到訊息時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 msgid "Play a sound for new conversations" msgstr "當開啟新的談話時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 msgid "Play a sound for outgoing messages" msgstr "送出訊息時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Play a sound when a contact logs in" msgstr "當聯絡人登入時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Play a sound when a contact logs out" msgstr "當有聯絡人登出時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Play a sound when we log in" msgstr "當我們登入時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Play a sound when we log out" msgstr "當我們登出時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Pop up notifications if the chat isn't focused" msgstr "如果聊天視窗失去焦點則彈出通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 msgid "Pop up notifications when a contact logs in" msgstr "當聯絡人登入時彈出通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 msgid "Pop up notifications when a contact logs out" msgstr "當聯絡人登出時彈出通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "Position the camera preview should be during a call." msgstr "通話時攝影機預覽應該擺放的位置。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "Show Balance in contact list" msgstr "於聯絡人清單內顯示餘額" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "Show avatars" msgstr "顯示大頭貼" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "Show contact list in rooms" msgstr "在聊天室顯示聯絡人清單" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Show hint about closing the main window" msgstr "關閉主視窗時顯示提示" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Show offline contacts" msgstr "顯示離線聯絡人" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "Show protocols" msgstr "顯示協定" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "Spell checking languages" msgstr "拼字檢查的語言" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "The default folder to save file transfers in." msgstr "用來儲存檔案傳輸接收檔案的預設資料夾。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "The last directory that an avatar image was chosen from." msgstr "上次選擇大頭貼圖片的目錄。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "The position for the chat window side pane" msgstr "聊天視窗側窗格的位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 msgid "The stored position (in pixels) of the chat window side pane." msgstr "聊天視窗側窗格的儲存位置 (單位為像素)。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "The theme that is used to display the conversation in chat windows." msgstr "用來顯示在聊天視窗中談話的佈景主題。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "" "The theme variant that is used to display the conversation in chat windows." msgstr "用來在聊天視窗顯示談話的佈景主題樣式。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "Use graphical smileys" msgstr "使用圖片式表情符號" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "Use notification sounds" msgstr "使用通知音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "Use theme for chat rooms" msgstr "在聊天室使用佈景主題" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "Empathy 是否要將使用者的位置發布給他的聯絡人。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "Whether Empathy can use the GPS to guess the location." msgstr "Empathy 是否使用 GPS 來推測位置。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "Empathy 是否使用流動電話網絡來推測位置。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "Whether Empathy can use the network to guess the location." msgstr "Empathy 是否使用網絡來推測位置。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 -msgid "Whether Empathy has migrated butterfly logs." -msgstr "Empathy 是否應轉移 butterfly 日誌。" - #: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "Empathy 是否應在啟動時自動登入你的帳號。" @@ -471,23 +471,23 @@ msgstr "管理訊息與 VoIP 帳號" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2324 +#: ../src/empathy-accounts-dialog.c:2312 msgid "Messaging and VoIP Accounts" msgstr "訊息與 VoIP 帳號" -#: ../libempathy/empathy-ft-handler.c:825 +#: ../libempathy/empathy-ft-handler.c:838 msgid "File transfer completed, but the file was corrupted" msgstr "檔案傳輸完畢,但是檔案已損毀" -#: ../libempathy/empathy-ft-handler.c:1111 +#: ../libempathy/empathy-ft-handler.c:1124 msgid "File transfer not supported by remote contact" msgstr "遠端聯絡人不支援檔案傳輸" -#: ../libempathy/empathy-ft-handler.c:1167 +#: ../libempathy/empathy-ft-handler.c:1180 msgid "The selected file is not a regular file" msgstr "選取的檔案不是正規的檔案" -#: ../libempathy/empathy-ft-handler.c:1176 +#: ../libempathy/empathy-ft-handler.c:1189 msgid "The selected file is empty" msgstr "選取的檔案是空白的" @@ -507,35 +507,35 @@ msgstr "已播打 %s" msgid "Call from %s" msgstr "%s 的來電" -#: ../libempathy/empathy-tp-file.c:268 +#: ../libempathy/empathy-tp-file.c:258 msgid "Socket type not supported" msgstr "Socket 類型不支援" -#: ../libempathy/empathy-tp-file.c:387 +#: ../libempathy/empathy-tp-file.c:377 msgid "No reason was specified" msgstr "沒有指定原因" -#: ../libempathy/empathy-tp-file.c:390 +#: ../libempathy/empathy-tp-file.c:380 msgid "The change in state was requested" msgstr "已要求更改狀態" -#: ../libempathy/empathy-tp-file.c:393 +#: ../libempathy/empathy-tp-file.c:383 msgid "You canceled the file transfer" msgstr "你已取消檔案傳輸" -#: ../libempathy/empathy-tp-file.c:396 +#: ../libempathy/empathy-tp-file.c:386 msgid "The other participant canceled the file transfer" msgstr "其他的參與者取消了檔案傳輸" -#: ../libempathy/empathy-tp-file.c:399 +#: ../libempathy/empathy-tp-file.c:389 msgid "Error while trying to transfer the file" msgstr "嘗試傳輸檔案時發生錯誤" -#: ../libempathy/empathy-tp-file.c:402 +#: ../libempathy/empathy-tp-file.c:392 msgid "The other participant is unable to transfer the file" msgstr "其他的參與者無法傳輸該檔案" -#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:312 +#: ../libempathy/empathy-tp-file.c:395 ../libempathy/empathy-utils.c:312 msgid "Unknown reason" msgstr "不明原因" @@ -575,6 +575,7 @@ msgstr "狀態設為離線" #: ../libempathy/empathy-utils.c:288 ../libempathy/empathy-utils.c:322 #: ../libempathy-gtk/empathy-call-utils.c:49 +#: ../libempathy-gtk/empathy-new-message-dialog.c:82 msgid "Network error" msgstr "網絡錯誤" @@ -674,20 +675,23 @@ msgid "" "chain, exceed the limits imposed by the cryptography library" msgstr "伺服器證書的長度,或是伺服器證書鏈的深度超過密碼函式庫所能處理的範圍" -#: ../libempathy/empathy-utils.c:529 -#: ../libempathy-gtk/empathy-contact-list-store.h:73 +#: ../libempathy/empathy-utils.c:372 +msgid "Your software is too old" +msgstr "你的軟件過舊" + +#: ../libempathy/empathy-utils.c:531 msgid "People Nearby" msgstr "附近的人" -#: ../libempathy/empathy-utils.c:534 +#: ../libempathy/empathy-utils.c:536 msgid "Yahoo! Japan" msgstr "Yahoo! 日本" -#: ../libempathy/empathy-utils.c:563 +#: ../libempathy/empathy-utils.c:565 msgid "Google Talk" msgstr "Google Talk" -#: ../libempathy/empathy-utils.c:564 +#: ../libempathy/empathy-utils.c:566 msgid "Facebook Chat" msgstr "Facebook 聊天" @@ -731,7 +735,7 @@ msgstr[0] "%d 個月以前" msgid "in the future" msgstr "未來" -#: ../libempathy-gtk/empathy-account-chooser.c:540 +#: ../libempathy-gtk/empathy-account-chooser.c:688 msgid "All accounts" msgstr "所有帳號" @@ -754,58 +758,58 @@ msgstr "伺服器" msgid "Port" msgstr "連接埠" -#: ../libempathy-gtk/empathy-account-widget.c:769 -#: ../libempathy-gtk/empathy-account-widget.c:826 +#: ../libempathy-gtk/empathy-account-widget.c:776 +#: ../libempathy-gtk/empathy-account-widget.c:828 #, c-format msgid "%s:" msgstr "%s:" -#: ../libempathy-gtk/empathy-account-widget.c:1192 +#: ../libempathy-gtk/empathy-account-widget.c:1182 msgid "My Web Accounts" msgstr "我的網絡帳號" -#: ../libempathy-gtk/empathy-account-widget.c:1208 +#: ../libempathy-gtk/empathy-account-widget.c:1199 #, c-format msgid "The account %s is edited via %s." msgstr "%s 帳號已透過 %s 修改。" -#: ../libempathy-gtk/empathy-account-widget.c:1214 +#: ../libempathy-gtk/empathy-account-widget.c:1205 #, c-format msgid "The account %s cannot be edited in Empathy." msgstr "%s 帳號無法於 Empathy 內修改。" -#: ../libempathy-gtk/empathy-account-widget.c:1233 +#: ../libempathy-gtk/empathy-account-widget.c:1224 msgid "Launch My Web Accounts" msgstr "啟動我的網絡帳號" #. general handler -#: ../libempathy-gtk/empathy-account-widget.c:1241 +#: ../libempathy-gtk/empathy-account-widget.c:1232 #, c-format msgid "Edit %s" msgstr "編輯 %s" -#: ../libempathy-gtk/empathy-account-widget.c:1591 +#: ../libempathy-gtk/empathy-account-widget.c:1582 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11 msgid "Username:" msgstr "使用者名稱:" -#: ../libempathy-gtk/empathy-account-widget.c:1909 +#: ../libempathy-gtk/empathy-account-widget.c:1900 msgid "A_pply" msgstr "套用(_A)" -#: ../libempathy-gtk/empathy-account-widget.c:1939 +#: ../libempathy-gtk/empathy-account-widget.c:1930 msgid "L_og in" msgstr "登入(_O)" -#: ../libempathy-gtk/empathy-account-widget.c:2013 +#: ../libempathy-gtk/empathy-account-widget.c:2004 msgid "This account already exists on the server" msgstr "此帳號已經存在這個伺服器上" -#: ../libempathy-gtk/empathy-account-widget.c:2016 +#: ../libempathy-gtk/empathy-account-widget.c:2007 msgid "Create a new account on the server" msgstr "在這個伺服器上建立新的帳號" -#: ../libempathy-gtk/empathy-account-widget.c:2208 +#: ../libempathy-gtk/empathy-account-widget.c:2199 msgid "Ca_ncel" msgstr "取消(_N)" @@ -814,19 +818,19 @@ msgstr "取消(_N)" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2486 +#: ../libempathy-gtk/empathy-account-widget.c:2477 #, c-format msgid "%1$s on %2$s" msgstr "%2$s 上的 %1$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2512 +#: ../libempathy-gtk/empathy-account-widget.c:2503 #, c-format msgid "%s Account" msgstr "%s 帳號" -#: ../libempathy-gtk/empathy-account-widget.c:2516 +#: ../libempathy-gtk/empathy-account-widget.c:2507 msgid "New account" msgstr "新增帳號" @@ -1196,7 +1200,7 @@ msgid "STUN Server:" msgstr "STUN 伺服器:" #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19 -#: ../libempathy-gtk/empathy-contact-widget.c:347 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:112 msgid "Server:" msgstr "伺服器:" @@ -1278,7 +1282,7 @@ msgid "Click to enlarge" msgstr "請按這裏放大" #: ../libempathy-gtk/empathy-call-utils.c:44 -#: ../libempathy-gtk/empathy-call-utils.c:60 +#: ../libempathy-gtk/empathy-call-utils.c:62 msgid "There was an error starting the call" msgstr "啟動通話時發生錯誤" @@ -1298,185 +1302,196 @@ msgstr "指定的聯絡人無效" msgid "Emergency calls are not supported on this protocol" msgstr "此協定不支援緊急通話功能" -#: ../libempathy-gtk/empathy-chat.c:704 +#: ../libempathy-gtk/empathy-call-utils.c:59 +msgid "You don't have enough credit in order to place this call" +msgstr "你的存額不足以買下該通話。" + +#: ../libempathy-gtk/empathy-chat.c:706 msgid "Failed to open private chat" msgstr "開啟私人聊天失敗" -#: ../libempathy-gtk/empathy-chat.c:765 +#: ../libempathy-gtk/empathy-chat.c:764 msgid "Topic not supported on this conversation" msgstr "此談話的主題不被支援" -#: ../libempathy-gtk/empathy-chat.c:771 +#: ../libempathy-gtk/empathy-chat.c:770 msgid "You are not allowed to change the topic" msgstr "你不被允許更改這個主題" -#: ../libempathy-gtk/empathy-chat.c:975 +#: ../libempathy-gtk/empathy-chat.c:971 #, c-format msgid "“%s” is not a valid contact ID" msgstr "「%s」不是有效的聯絡人 ID" -#: ../libempathy-gtk/empathy-chat.c:1060 +#: ../libempathy-gtk/empathy-chat.c:1066 msgid "/clear: clear all messages from the current conversation" msgstr "/clear:清除目前談話的所有訊息" -#: ../libempathy-gtk/empathy-chat.c:1063 +#: ../libempathy-gtk/empathy-chat.c:1069 msgid "/topic : set the topic of the current conversation" msgstr "/topic <主題>:設置目前談話的主題" -#: ../libempathy-gtk/empathy-chat.c:1066 +#: ../libempathy-gtk/empathy-chat.c:1072 msgid "/join : join a new chat room" msgstr "/join <聊天室 ID>:參加新的聊天室" -#: ../libempathy-gtk/empathy-chat.c:1069 +#: ../libempathy-gtk/empathy-chat.c:1075 msgid "/j : join a new chat room" msgstr "/j <聊天室 ID>:參加新的聊天室" -#: ../libempathy-gtk/empathy-chat.c:1073 +#: ../libempathy-gtk/empathy-chat.c:1079 msgid "" "/part [] []: leave the chat room, by default the " "current one" msgstr "/part [<聊天室 ID>] [<原因>]:離開聊天室,預設為目前的聊天室" -#: ../libempathy-gtk/empathy-chat.c:1077 +#: ../libempathy-gtk/empathy-chat.c:1083 msgid "/query []: open a private chat" msgstr "/query <聯絡人 ID> [<訊息>]:開啟私人聊天" -#: ../libempathy-gtk/empathy-chat.c:1080 +#: ../libempathy-gtk/empathy-chat.c:1086 msgid "/msg : open a private chat" msgstr "/msg <聯絡人 ID> <訊息>:開啟私人聊天" -#: ../libempathy-gtk/empathy-chat.c:1083 +#: ../libempathy-gtk/empathy-chat.c:1089 msgid "/nick : change your nickname on the current server" msgstr "/nick <網名>:更改在目前伺服器上的你的網名" -#: ../libempathy-gtk/empathy-chat.c:1086 +#: ../libempathy-gtk/empathy-chat.c:1092 msgid "/me : send an ACTION message to the current conversation" msgstr "/me <訊息>:送出一個 ACTION 訊息到目前的談話中" -#: ../libempathy-gtk/empathy-chat.c:1089 +#: ../libempathy-gtk/empathy-chat.c:1095 msgid "" "/say : send to the current conversation. This is used to " "send a message starting with a '/'. For example: \"/say /join is used to " "join a new chat room\"" msgstr "/say <訊息>:送出 <訊息> 到目前的談話中。這用於傳送以「/」開頭的訊息。舉例來說:「/say /join 是用來參加新的聊天室」" -#: ../libempathy-gtk/empathy-chat.c:1094 +#: ../libempathy-gtk/empathy-chat.c:1100 msgid "/whois : display information about a contact" msgstr "/whois <聯絡人 ID>:顯示聯絡人的相關資訊" -#: ../libempathy-gtk/empathy-chat.c:1097 +#: ../libempathy-gtk/empathy-chat.c:1103 msgid "" "/help []: show all supported commands. If is defined, " "show its usage." msgstr "/help [<命令>]:顯示所有支援的指令。如果有定義這個 <命令> 的話,便顯示它的用法。" -#: ../libempathy-gtk/empathy-chat.c:1114 +#: ../libempathy-gtk/empathy-chat.c:1122 #, c-format msgid "Usage: %s" msgstr "用法:%s" -#: ../libempathy-gtk/empathy-chat.c:1159 +#: ../libempathy-gtk/empathy-chat.c:1167 msgid "Unknown command" msgstr "未知的命令" -#: ../libempathy-gtk/empathy-chat.c:1285 +#: ../libempathy-gtk/empathy-chat.c:1293 msgid "Unknown command; see /help for the available commands" msgstr "未知的指令;請參見 /help 以取得可用的指令" -#. translators: error used when user doesn't have enough credit on his -#. * account to send the message. -#: ../libempathy-gtk/empathy-chat.c:1455 +#: ../libempathy-gtk/empathy-chat.c:1457 msgid "insufficient balance to send message" msgstr "餘額不足以傳送訊息" -#: ../libempathy-gtk/empathy-chat.c:1457 +#: ../libempathy-gtk/empathy-chat.c:1461 ../libempathy-gtk/empathy-chat.c:1475 +#: ../libempathy-gtk/empathy-chat.c:1538 +#, c-format +msgid "Error sending message '%s': %s" +msgstr "傳送訊息「%s」時發生錯誤:%s" + +#: ../libempathy-gtk/empathy-chat.c:1463 ../libempathy-gtk/empathy-chat.c:1480 +#: ../libempathy-gtk/empathy-chat.c:1542 +#, c-format +msgid "Error sending message: %s" +msgstr "傳送訊息時發生錯誤:%s" + +#. translators: error used when user doesn't have enough credit on his +#. * account to send the message. +#: ../libempathy-gtk/empathy-chat.c:1469 +#, c-format +msgid "insufficient balance to send message. Top up." +msgstr "餘額不足以傳送訊息。加值。" + +#: ../libempathy-gtk/empathy-chat.c:1509 msgid "not capable" msgstr "無法" -#: ../libempathy-gtk/empathy-chat.c:1464 +#: ../libempathy-gtk/empathy-chat.c:1516 msgid "offline" msgstr "離線" -#: ../libempathy-gtk/empathy-chat.c:1467 +#: ../libempathy-gtk/empathy-chat.c:1519 msgid "invalid contact" msgstr "無效的聯絡人" -#: ../libempathy-gtk/empathy-chat.c:1470 +#: ../libempathy-gtk/empathy-chat.c:1522 msgid "permission denied" msgstr "權限被拒絕" -#: ../libempathy-gtk/empathy-chat.c:1473 +#: ../libempathy-gtk/empathy-chat.c:1525 msgid "too long message" msgstr "太長的訊息" -#: ../libempathy-gtk/empathy-chat.c:1476 +#: ../libempathy-gtk/empathy-chat.c:1528 msgid "not implemented" msgstr "未實作" -#: ../libempathy-gtk/empathy-chat.c:1480 +#: ../libempathy-gtk/empathy-chat.c:1532 msgid "unknown" msgstr "不明" -#: ../libempathy-gtk/empathy-chat.c:1486 -#, c-format -msgid "Error sending message '%s': %s" -msgstr "傳送訊息「%s」時發生錯誤:%s" - -#: ../libempathy-gtk/empathy-chat.c:1490 -#, c-format -msgid "Error sending message: %s" -msgstr "傳送訊息時發生錯誤:%s" - -#: ../libempathy-gtk/empathy-chat.c:1551 ../src/empathy-chat-window.c:761 +#: ../libempathy-gtk/empathy-chat.c:1599 ../src/empathy-chat-window.c:761 msgid "Topic:" msgstr "主題:" -#: ../libempathy-gtk/empathy-chat.c:1563 +#: ../libempathy-gtk/empathy-chat.c:1611 #, c-format msgid "Topic set to: %s" msgstr "主題設定為: %s" -#: ../libempathy-gtk/empathy-chat.c:1565 +#: ../libempathy-gtk/empathy-chat.c:1613 msgid "No topic defined" msgstr "尚未定義主題" -#: ../libempathy-gtk/empathy-chat.c:2074 +#: ../libempathy-gtk/empathy-chat.c:2126 msgid "(No Suggestions)" msgstr "(沒有建議)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:2142 +#: ../libempathy-gtk/empathy-chat.c:2194 #, c-format msgid "Add '%s' to Dictionary" msgstr "加入「%s」至字典" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:2179 +#: ../libempathy-gtk/empathy-chat.c:2231 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "加入「%s」至 %s 字典" -#: ../libempathy-gtk/empathy-chat.c:2249 +#: ../libempathy-gtk/empathy-chat.c:2301 msgid "Insert Smiley" msgstr "插入表情符號" #. send button -#: ../libempathy-gtk/empathy-chat.c:2267 -#: ../libempathy-gtk/empathy-ui-utils.c:1839 +#: ../libempathy-gtk/empathy-chat.c:2319 +#: ../libempathy-gtk/empathy-ui-utils.c:1867 msgid "_Send" msgstr "傳送(_S)" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2321 +#: ../libempathy-gtk/empathy-chat.c:2376 msgid "_Spelling Suggestions" msgstr "拼字建議(_S)" -#: ../libempathy-gtk/empathy-chat.c:2410 +#: ../libempathy-gtk/empathy-chat.c:2465 msgid "Failed to retrieve recent logs" msgstr "無法取得最近的日誌" -#: ../libempathy-gtk/empathy-chat.c:2547 +#: ../libempathy-gtk/empathy-chat.c:2602 #, c-format msgid "%s has disconnected" msgstr "%s 已斷線" @@ -1484,12 +1499,12 @@ msgstr "%s 已斷線" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2554 +#: ../libempathy-gtk/empathy-chat.c:2609 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%1$s 被 %2$s 踢出去" -#: ../libempathy-gtk/empathy-chat.c:2557 +#: ../libempathy-gtk/empathy-chat.c:2612 #, c-format msgid "%s was kicked" msgstr "%s 被踢出" @@ -1497,17 +1512,17 @@ msgstr "%s 被踢出" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2565 +#: ../libempathy-gtk/empathy-chat.c:2620 #, c-format msgid "%1$s was banned by %2$s" msgstr "%1$s 被 %2$s 設為黑名單" -#: ../libempathy-gtk/empathy-chat.c:2568 +#: ../libempathy-gtk/empathy-chat.c:2623 #, c-format msgid "%s was banned" msgstr "%s 被設為黑名單" -#: ../libempathy-gtk/empathy-chat.c:2572 +#: ../libempathy-gtk/empathy-chat.c:2627 #, c-format msgid "%s has left the room" msgstr "%s 已經離開此聊天室" @@ -1517,17 +1532,17 @@ msgstr "%s 已經離開此聊天室" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2581 +#: ../libempathy-gtk/empathy-chat.c:2636 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2606 +#: ../libempathy-gtk/empathy-chat.c:2661 #, c-format msgid "%s has joined the room" msgstr "%s 已經參加此聊天室" -#: ../libempathy-gtk/empathy-chat.c:2631 +#: ../libempathy-gtk/empathy-chat.c:2686 #, c-format msgid "%s is now known as %s" msgstr "%s 現在被稱為 %s" @@ -1535,88 +1550,87 @@ msgstr "%s 現在被稱為 %s" #. We don't know if the incoming call has been accepted or not, so we #. * assume it hasn't and if it has, we'll set the proper status when #. * we get the new handler. -#: ../libempathy-gtk/empathy-chat.c:2784 -#: ../src/empathy-streamed-media-window.c:1894 -#: ../src/empathy-event-manager.c:1240 ../src/empathy-call-window.c:1432 -#: ../src/empathy-call-window.c:1482 ../src/empathy-call-window.c:2527 +#: ../libempathy-gtk/empathy-chat.c:2839 +#: ../src/empathy-streamed-media-window.c:1886 +#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1539 +#: ../src/empathy-call-window.c:1589 ../src/empathy-call-window.c:2635 msgid "Disconnected" msgstr "已斷線" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3428 +#: ../libempathy-gtk/empathy-chat.c:3485 msgid "Would you like to store this password?" msgstr "你想要儲存此密碼?" -#: ../libempathy-gtk/empathy-chat.c:3434 +#: ../libempathy-gtk/empathy-chat.c:3491 msgid "Remember" msgstr "記住" -#: ../libempathy-gtk/empathy-chat.c:3444 +#: ../libempathy-gtk/empathy-chat.c:3501 msgid "Not now" msgstr "現在不要" -#: ../libempathy-gtk/empathy-chat.c:3488 +#: ../libempathy-gtk/empathy-chat.c:3545 msgid "Retry" msgstr "重試" -#: ../libempathy-gtk/empathy-chat.c:3492 +#: ../libempathy-gtk/empathy-chat.c:3549 msgid "Wrong password; please try again:" msgstr "密碼錯誤;請再試一次:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3622 +#: ../libempathy-gtk/empathy-chat.c:3679 msgid "This room is protected by a password:" msgstr "此聊天室已被密碼保護:" -#: ../libempathy-gtk/empathy-chat.c:3649 +#: ../libempathy-gtk/empathy-chat.c:3706 msgid "Join" msgstr "參加" -#: ../libempathy-gtk/empathy-chat.c:3851 ../src/empathy-event-manager.c:1261 +#: ../libempathy-gtk/empathy-chat.c:3894 ../src/empathy-event-manager.c:1281 msgid "Connected" msgstr "成功連線" -#: ../libempathy-gtk/empathy-chat.c:3906 +#: ../libempathy-gtk/empathy-chat.c:3949 msgid "Conversation" msgstr "談話" #. Translators: this string is a something like #. * "Escher Cat (SMS)" -#: ../libempathy-gtk/empathy-chat.c:3911 +#: ../libempathy-gtk/empathy-chat.c:3954 #, c-format msgid "%s (SMS)" msgstr "%s (SMS)" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265 msgid "Unknown or invalid identifier" msgstr "未知或無效的識別身分" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267 msgid "Contact blocking temporarily unavailable" msgstr "聯絡人封鎖暫時無法使用" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269 msgid "Contact blocking unavailable" msgstr "聯絡人封鎖無法使用" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271 msgid "Permission Denied" msgstr "已拒絕授權" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275 msgid "Could not block contact" msgstr "無法封鎖聯絡人" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:774 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622 msgid "Edit Blocked Contacts" msgstr "編輯封鎖的聯絡人" #. Account and Identifier #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:512 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:506 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2 -#: ../libempathy-gtk/empathy-individual-widget.c:1489 -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 +#: ../libempathy-gtk/empathy-individual-widget.c:1441 #: ../src/empathy-chatrooms-window.ui.h:1 #: ../src/empathy-new-chatroom-dialog.ui.h:1 msgid "Account:" @@ -1634,56 +1648,56 @@ msgid "Remove" msgstr "移除" #. Copy Link Address menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:320 +#: ../libempathy-gtk/empathy-chat-text-view.c:322 #: ../libempathy-gtk/empathy-webkit-utils.c:277 msgid "_Copy Link Address" msgstr "複製連結位址(_C)" #. Open Link menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:327 +#: ../libempathy-gtk/empathy-chat-text-view.c:329 #: ../libempathy-gtk/empathy-webkit-utils.c:284 msgid "_Open Link" msgstr "開啟連結(_O)" #. Translators: timestamp displayed between conversations in #. * chat windows (strftime format string) -#: ../libempathy-gtk/empathy-chat-text-view.c:415 +#: ../libempathy-gtk/empathy-chat-text-view.c:417 msgid "%A %B %d %Y" msgstr "%Y %B %d %A" -#: ../libempathy-gtk/empathy-contact-dialogs.c:299 +#: ../libempathy-gtk/empathy-contact-dialogs.c:287 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247 msgid "Edit Contact Information" msgstr "編輯聯絡人資訊" -#: ../libempathy-gtk/empathy-contact-dialogs.c:350 +#: ../libempathy-gtk/empathy-contact-dialogs.c:338 msgid "Personal Information" msgstr "個人資料" -#: ../libempathy-gtk/empathy-contact-dialogs.c:459 +#: ../libempathy-gtk/empathy-contact-dialogs.c:439 #: ../libempathy-gtk/empathy-individual-dialogs.c:119 msgid "New Contact" msgstr "新增聯絡人" -#: ../libempathy-gtk/empathy-contact-dialogs.c:533 -#: ../libempathy-gtk/empathy-individual-dialogs.c:200 +#: ../libempathy-gtk/empathy-contact-dialogs.c:508 +#: ../libempathy-gtk/empathy-individual-dialogs.c:198 #, c-format msgid "Block %s?" msgstr "封鎖 %s?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:538 -#: ../libempathy-gtk/empathy-individual-dialogs.c:255 +#: ../libempathy-gtk/empathy-contact-dialogs.c:513 +#: ../libempathy-gtk/empathy-individual-dialogs.c:253 #, c-format msgid "Are you sure you want to block '%s' from contacting you again?" msgstr "你確定想要封鎖「%s」讓他無法再與你聯絡嗎?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:543 -#: ../libempathy-gtk/empathy-individual-dialogs.c:277 +#: ../libempathy-gtk/empathy-contact-dialogs.c:518 +#: ../libempathy-gtk/empathy-individual-dialogs.c:275 msgid "_Block" msgstr "封鎖(_B)" -#: ../libempathy-gtk/empathy-contact-dialogs.c:559 -#: ../libempathy-gtk/empathy-individual-dialogs.c:286 +#: ../libempathy-gtk/empathy-contact-dialogs.c:536 +#: ../libempathy-gtk/empathy-individual-dialogs.c:284 msgid "_Report this contact as abusive" msgid_plural "_Report these contacts as abusive" msgstr[0] "回報這些聯絡人濫用帳號(_R)" @@ -1700,349 +1714,359 @@ msgstr "訂閱要求" msgid "_Block User" msgstr "封鎖使用者(_B)" -#: ../libempathy-gtk/empathy-contact-list-store.h:71 -msgid "Ungrouped" -msgstr "未羣組" - -#: ../libempathy-gtk/empathy-contact-list-store.h:72 -msgid "Favorite People" -msgstr "喜好的人" - -#: ../libempathy-gtk/empathy-contact-list-view.c:1986 -#: ../libempathy-gtk/empathy-individual-view.c:2376 +#: ../libempathy-gtk/empathy-contact-list-view.c:1935 +#: ../libempathy-gtk/empathy-individual-view.c:2375 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "是否想要移除羣組「%s」?" -#: ../libempathy-gtk/empathy-contact-list-view.c:1988 -#: ../libempathy-gtk/empathy-individual-view.c:2379 +#: ../libempathy-gtk/empathy-contact-list-view.c:1937 +#: ../libempathy-gtk/empathy-individual-view.c:2378 msgid "Removing group" msgstr "正在移除羣組" #. Remove -#: ../libempathy-gtk/empathy-contact-list-view.c:2037 -#: ../libempathy-gtk/empathy-contact-list-view.c:2114 -#: ../libempathy-gtk/empathy-individual-view.c:2434 -#: ../libempathy-gtk/empathy-individual-view.c:2637 +#: ../libempathy-gtk/empathy-contact-list-view.c:1986 +#: ../libempathy-gtk/empathy-contact-list-view.c:2059 +#: ../libempathy-gtk/empathy-individual-view.c:2433 +#: ../libempathy-gtk/empathy-individual-view.c:2636 msgid "_Remove" msgstr "移除(_R)" -#: ../libempathy-gtk/empathy-contact-list-view.c:2067 -#: ../libempathy-gtk/empathy-individual-view.c:2501 +#: ../libempathy-gtk/empathy-contact-list-view.c:2015 +#: ../libempathy-gtk/empathy-individual-view.c:2500 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "是否想要移除聯絡人「%s」?" -#: ../libempathy-gtk/empathy-contact-list-view.c:2069 -#: ../libempathy-gtk/empathy-individual-view.c:2522 +#: ../libempathy-gtk/empathy-contact-list-view.c:2017 +#: ../libempathy-gtk/empathy-individual-view.c:2521 msgid "Removing contact" msgstr "正在移除聯絡人" -#: ../libempathy-gtk/empathy-contact-menu.c:220 +#: ../libempathy-gtk/empathy-contact-menu.c:212 #: ../src/empathy-main-window-menubar.ui.h:14 msgid "_Add Contact…" msgstr "加入聯絡人(_A)…" -#: ../libempathy-gtk/empathy-contact-menu.c:300 +#: ../libempathy-gtk/empathy-contact-menu.c:287 msgid "_Block Contact" msgstr "封鎖聯絡人(_B)" -#: ../libempathy-gtk/empathy-contact-menu.c:329 +#. add chat button +#: ../libempathy-gtk/empathy-contact-menu.c:316 #: ../libempathy-gtk/empathy-individual-menu.c:758 +#: ../libempathy-gtk/empathy-new-message-dialog.c:320 #: ../src/empathy-main-window-menubar.ui.h:16 msgid "_Chat" msgstr "聊天(_C)" -#: ../libempathy-gtk/empathy-contact-menu.c:361 -#: ../libempathy-gtk/empathy-individual-menu.c:849 +#: ../libempathy-gtk/empathy-contact-menu.c:348 +#: ../libempathy-gtk/empathy-individual-menu.c:850 msgctxt "menu item" msgid "_Audio Call" msgstr "語音通話(_A)" -#: ../libempathy-gtk/empathy-contact-menu.c:394 -#: ../libempathy-gtk/empathy-individual-menu.c:894 +#: ../libempathy-gtk/empathy-contact-menu.c:381 +#: ../libempathy-gtk/empathy-individual-menu.c:895 msgctxt "menu item" msgid "_Video Call" msgstr "視像通話(_V)" -#: ../libempathy-gtk/empathy-contact-menu.c:440 -#: ../libempathy-gtk/empathy-individual-menu.c:947 +#: ../libempathy-gtk/empathy-contact-menu.c:427 +#: ../libempathy-gtk/empathy-individual-menu.c:948 #: ../src/empathy-main-window-menubar.ui.h:27 msgid "_Previous Conversations" msgstr "過往談話(_P)" -#: ../libempathy-gtk/empathy-contact-menu.c:462 -#: ../libempathy-gtk/empathy-individual-menu.c:988 +#: ../libempathy-gtk/empathy-contact-menu.c:449 +#: ../libempathy-gtk/empathy-individual-menu.c:989 msgid "Send File" msgstr "傳送檔案" -#: ../libempathy-gtk/empathy-contact-menu.c:485 -#: ../libempathy-gtk/empathy-individual-menu.c:1030 +#: ../libempathy-gtk/empathy-contact-menu.c:472 +#: ../libempathy-gtk/empathy-individual-menu.c:1031 msgid "Share My Desktop" msgstr "分享我的桌面" -#: ../libempathy-gtk/empathy-contact-menu.c:525 -#: ../libempathy-gtk/empathy-contact-widget.c:1886 -#: ../libempathy-gtk/empathy-individual-menu.c:1065 -#: ../libempathy-gtk/empathy-individual-widget.c:1372 -msgid "Favorite" -msgstr "喜好" - -#: ../libempathy-gtk/empathy-contact-menu.c:554 -#: ../libempathy-gtk/empathy-individual-menu.c:1093 +#: ../libempathy-gtk/empathy-contact-menu.c:501 +#: ../libempathy-gtk/empathy-individual-menu.c:1094 msgid "Infor_mation" msgstr "資訊(_M)" -#: ../libempathy-gtk/empathy-contact-menu.c:600 +#: ../libempathy-gtk/empathy-contact-menu.c:547 msgctxt "Edit contact (contextual menu)" msgid "_Edit" msgstr "編輯(_E)" -#: ../libempathy-gtk/empathy-contact-menu.c:654 -#: ../libempathy-gtk/empathy-individual-menu.c:1284 +#: ../libempathy-gtk/empathy-contact-menu.c:601 +#: ../libempathy-gtk/empathy-individual-menu.c:1285 #: ../src/empathy-chat-window.c:1011 msgid "Inviting you to this room" msgstr "邀請你到這個聊天室" -#: ../libempathy-gtk/empathy-contact-menu.c:685 -#: ../libempathy-gtk/empathy-individual-menu.c:1330 +#: ../libempathy-gtk/empathy-contact-menu.c:632 +#: ../libempathy-gtk/empathy-individual-menu.c:1331 msgid "_Invite to Chat Room" msgstr "邀請到聊天室(_I)" #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:505 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:499 msgid "Search contacts" msgstr "搜尋聯絡人" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:535 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:529 msgid "Search: " msgstr "搜尋:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:593 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:587 msgid "_Add Contact" msgstr "加入聯絡人(_A)" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:611 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:605 msgid "No contacts found" msgstr "找不到聯絡人" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:627 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:621 msgid "Your message introducing yourself:" msgstr "你的訊息" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:635 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:629 msgid "Please let me see when you're online. Thanks!" msgstr "當你上線時請讓我知道。感謝!" -#: ../libempathy-gtk/empathy-contact-selector.c:129 -msgid "Select a contact" -msgstr "選擇聯絡人" - -#: ../libempathy-gtk/empathy-contact-widget.c:336 -#: ../libempathy-gtk/empathy-individual-widget.c:153 -msgid "Full name:" -msgstr "全名:" - -#: ../libempathy-gtk/empathy-contact-widget.c:337 -#: ../libempathy-gtk/empathy-individual-widget.c:154 -msgid "Phone number:" -msgstr "電話號碼:" - -#: ../libempathy-gtk/empathy-contact-widget.c:338 -#: ../libempathy-gtk/empathy-individual-widget.c:155 -msgid "E-mail address:" -msgstr "電子信箱位址:" - -#: ../libempathy-gtk/empathy-contact-widget.c:339 -#: ../libempathy-gtk/empathy-individual-widget.c:156 -msgid "Website:" -msgstr "網站:" - -#: ../libempathy-gtk/empathy-contact-widget.c:340 -#: ../libempathy-gtk/empathy-individual-widget.c:157 -msgid "Birthday:" -msgstr "生日:" - -#. Note to translators: this is the caption for a string of the form "5 -#. * minutes ago", and refers to the time since the contact last interacted -#. * with their IM client. -#. -#: ../libempathy-gtk/empathy-contact-widget.c:346 -msgid "Last seen:" -msgstr "上次看見:" - -#: ../libempathy-gtk/empathy-contact-widget.c:348 -msgid "Connected from:" -msgstr "已連接從:" - -#. FIXME: once Idle implements SimplePresence using this information, we can -#. * and should bin this. -#. -#: ../libempathy-gtk/empathy-contact-widget.c:353 -msgid "Away message:" -msgstr "離開訊息:" - -#: ../libempathy-gtk/empathy-contact-widget.c:606 +#: ../libempathy-gtk/empathy-contact-widget.c:504 msgid "Channels:" msgstr "頻道:" -#: ../libempathy-gtk/empathy-contact-widget.c:897 -#: ../libempathy-gtk/empathy-individual-widget.c:469 +#: ../libempathy-gtk/empathy-contact-widget.c:799 +#: ../libempathy-gtk/empathy-individual-widget.c:421 msgid "Country ISO Code:" msgstr "國家 ISO 碼:" -#: ../libempathy-gtk/empathy-contact-widget.c:899 -#: ../libempathy-gtk/empathy-individual-widget.c:471 +#: ../libempathy-gtk/empathy-contact-widget.c:801 +#: ../libempathy-gtk/empathy-individual-widget.c:423 msgid "Country:" msgstr "國家:" -#: ../libempathy-gtk/empathy-contact-widget.c:901 -#: ../libempathy-gtk/empathy-individual-widget.c:473 +#: ../libempathy-gtk/empathy-contact-widget.c:803 +#: ../libempathy-gtk/empathy-individual-widget.c:425 msgid "State:" msgstr "州:" -#: ../libempathy-gtk/empathy-contact-widget.c:903 -#: ../libempathy-gtk/empathy-individual-widget.c:475 +#: ../libempathy-gtk/empathy-contact-widget.c:805 +#: ../libempathy-gtk/empathy-individual-widget.c:427 msgid "City:" msgstr "市:" -#: ../libempathy-gtk/empathy-contact-widget.c:905 -#: ../libempathy-gtk/empathy-individual-widget.c:477 +#: ../libempathy-gtk/empathy-contact-widget.c:807 +#: ../libempathy-gtk/empathy-individual-widget.c:429 msgid "Area:" msgstr "區域:" -#: ../libempathy-gtk/empathy-contact-widget.c:907 -#: ../libempathy-gtk/empathy-individual-widget.c:479 +#: ../libempathy-gtk/empathy-contact-widget.c:809 +#: ../libempathy-gtk/empathy-individual-widget.c:431 msgid "Postal Code:" msgstr "郵遞區號:" -#: ../libempathy-gtk/empathy-contact-widget.c:909 -#: ../libempathy-gtk/empathy-individual-widget.c:481 +#: ../libempathy-gtk/empathy-contact-widget.c:811 +#: ../libempathy-gtk/empathy-individual-widget.c:433 msgid "Street:" msgstr "街:" -#: ../libempathy-gtk/empathy-contact-widget.c:911 -#: ../libempathy-gtk/empathy-individual-widget.c:483 +#: ../libempathy-gtk/empathy-contact-widget.c:813 +#: ../libempathy-gtk/empathy-individual-widget.c:435 msgid "Building:" msgstr "建築:" -#: ../libempathy-gtk/empathy-contact-widget.c:913 -#: ../libempathy-gtk/empathy-individual-widget.c:485 +#: ../libempathy-gtk/empathy-contact-widget.c:815 +#: ../libempathy-gtk/empathy-individual-widget.c:437 msgid "Floor:" msgstr "樓層:" -#: ../libempathy-gtk/empathy-contact-widget.c:915 -#: ../libempathy-gtk/empathy-individual-widget.c:487 +#: ../libempathy-gtk/empathy-contact-widget.c:817 +#: ../libempathy-gtk/empathy-individual-widget.c:439 msgid "Room:" msgstr "室:" -#: ../libempathy-gtk/empathy-contact-widget.c:917 -#: ../libempathy-gtk/empathy-individual-widget.c:489 +#: ../libempathy-gtk/empathy-contact-widget.c:819 +#: ../libempathy-gtk/empathy-individual-widget.c:441 msgid "Text:" msgstr "文字:" -#: ../libempathy-gtk/empathy-contact-widget.c:919 -#: ../libempathy-gtk/empathy-individual-widget.c:491 +#: ../libempathy-gtk/empathy-contact-widget.c:821 +#: ../libempathy-gtk/empathy-individual-widget.c:443 msgid "Description:" msgstr "描述:" -#: ../libempathy-gtk/empathy-contact-widget.c:921 -#: ../libempathy-gtk/empathy-individual-widget.c:493 +#: ../libempathy-gtk/empathy-contact-widget.c:823 +#: ../libempathy-gtk/empathy-individual-widget.c:445 msgid "URI:" msgstr "URI:" -#: ../libempathy-gtk/empathy-contact-widget.c:923 -#: ../libempathy-gtk/empathy-individual-widget.c:495 +#: ../libempathy-gtk/empathy-contact-widget.c:825 +#: ../libempathy-gtk/empathy-individual-widget.c:447 msgid "Accuracy Level:" msgstr "準確度等級:" -#: ../libempathy-gtk/empathy-contact-widget.c:925 -#: ../libempathy-gtk/empathy-individual-widget.c:497 +#: ../libempathy-gtk/empathy-contact-widget.c:827 +#: ../libempathy-gtk/empathy-individual-widget.c:449 msgid "Error:" msgstr "錯誤:" -#: ../libempathy-gtk/empathy-contact-widget.c:927 -#: ../libempathy-gtk/empathy-individual-widget.c:499 +#: ../libempathy-gtk/empathy-contact-widget.c:829 +#: ../libempathy-gtk/empathy-individual-widget.c:451 msgid "Vertical Error (meters):" msgstr "垂直誤差 (米):" -#: ../libempathy-gtk/empathy-contact-widget.c:929 -#: ../libempathy-gtk/empathy-individual-widget.c:501 +#: ../libempathy-gtk/empathy-contact-widget.c:831 +#: ../libempathy-gtk/empathy-individual-widget.c:453 msgid "Horizontal Error (meters):" msgstr "水平誤差 (米):" -#: ../libempathy-gtk/empathy-contact-widget.c:931 -#: ../libempathy-gtk/empathy-individual-widget.c:503 +#: ../libempathy-gtk/empathy-contact-widget.c:833 +#: ../libempathy-gtk/empathy-individual-widget.c:455 msgid "Speed:" msgstr "速度:" -#: ../libempathy-gtk/empathy-contact-widget.c:933 -#: ../libempathy-gtk/empathy-individual-widget.c:505 +#: ../libempathy-gtk/empathy-contact-widget.c:835 +#: ../libempathy-gtk/empathy-individual-widget.c:457 msgid "Bearing:" msgstr "方位:" -#: ../libempathy-gtk/empathy-contact-widget.c:935 -#: ../libempathy-gtk/empathy-individual-widget.c:507 +#: ../libempathy-gtk/empathy-contact-widget.c:837 +#: ../libempathy-gtk/empathy-individual-widget.c:459 msgid "Climb Speed:" msgstr "爬升速度:" -#: ../libempathy-gtk/empathy-contact-widget.c:937 -#: ../libempathy-gtk/empathy-individual-widget.c:509 +#: ../libempathy-gtk/empathy-contact-widget.c:839 +#: ../libempathy-gtk/empathy-individual-widget.c:461 msgid "Last Updated on:" msgstr "上次更新於:" -#: ../libempathy-gtk/empathy-contact-widget.c:939 -#: ../libempathy-gtk/empathy-individual-widget.c:511 +#: ../libempathy-gtk/empathy-contact-widget.c:841 +#: ../libempathy-gtk/empathy-individual-widget.c:463 msgid "Longitude:" msgstr "經度:" -#: ../libempathy-gtk/empathy-contact-widget.c:941 -#: ../libempathy-gtk/empathy-individual-widget.c:513 +#: ../libempathy-gtk/empathy-contact-widget.c:843 +#: ../libempathy-gtk/empathy-individual-widget.c:465 msgid "Latitude:" msgstr "緯度:" -#: ../libempathy-gtk/empathy-contact-widget.c:943 -#: ../libempathy-gtk/empathy-individual-widget.c:515 +#: ../libempathy-gtk/empathy-contact-widget.c:845 +#: ../libempathy-gtk/empathy-individual-widget.c:467 msgid "Altitude:" msgstr "緯度:" -#: ../libempathy-gtk/empathy-contact-widget.c:996 -#: ../libempathy-gtk/empathy-contact-widget.c:1011 -#: ../libempathy-gtk/empathy-individual-widget.c:607 -#: ../libempathy-gtk/empathy-individual-widget.c:622 +#: ../libempathy-gtk/empathy-contact-widget.c:898 +#: ../libempathy-gtk/empathy-contact-widget.c:913 +#: ../libempathy-gtk/empathy-individual-widget.c:559 +#: ../libempathy-gtk/empathy-individual-widget.c:574 #: ../src/empathy-preferences.ui.h:17 msgid "Location" msgstr "位置" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:1013 -#: ../libempathy-gtk/empathy-individual-widget.c:624 +#: ../libempathy-gtk/empathy-contact-widget.c:915 +#: ../libempathy-gtk/empathy-individual-widget.c:576 #, c-format msgid "%s, %s" msgstr "%s,%s" -#: ../libempathy-gtk/empathy-contact-widget.c:1065 -#: ../libempathy-gtk/empathy-individual-widget.c:673 +#: ../libempathy-gtk/empathy-contact-widget.c:967 +#: ../libempathy-gtk/empathy-individual-widget.c:625 msgid "%B %e, %Y at %R UTC" msgstr "%Y %B %e 於 %R UTC" -#: ../libempathy-gtk/empathy-contact-widget.c:1147 -#: ../libempathy-gtk/empathy-individual-widget.c:915 +#: ../libempathy-gtk/empathy-contact-widget.c:1049 +#: ../libempathy-gtk/empathy-individual-widget.c:867 msgid "Save Avatar" msgstr "儲存大頭貼" -#: ../libempathy-gtk/empathy-contact-widget.c:1203 -#: ../libempathy-gtk/empathy-individual-widget.c:973 +#: ../libempathy-gtk/empathy-contact-widget.c:1105 +#: ../libempathy-gtk/empathy-individual-widget.c:925 msgid "Unable to save avatar" msgstr "無法儲存大頭貼" +#: ../libempathy-gtk/empathy-contact-widget.c:1793 +#: ../libempathy-gtk/empathy-individual-menu.c:1066 +#: ../libempathy-gtk/empathy-individual-widget.c:1324 +msgid "Favorite" +msgstr "喜好" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:102 +msgid "Full name" +msgstr "全名" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:103 +msgid "Phone number" +msgstr "電話號碼" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:104 +msgid "E-mail address" +msgstr "電子信箱位址" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:105 +msgid "Website" +msgstr "網站" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:106 +msgid "Birthday" +msgstr "生日" + +#. Note to translators: this is the caption for a string of the form "5 +#. * minutes ago", and refers to the time since the contact last interacted +#. * with their IM client. +#: ../libempathy-gtk/empathy-contactinfo-utils.c:111 +msgid "Last seen:" +msgstr "上次看見:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:113 +msgid "Connected from:" +msgstr "已連接從:" + +#. FIXME: once Idle implements SimplePresence using this information, we can +#. * and should bin this. +#: ../libempathy-gtk/empathy-contactinfo-utils.c:117 +msgid "Away message:" +msgstr "離開訊息:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:130 +msgid "work" +msgstr "工作" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:131 +msgid "home" +msgstr "住家" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:132 +msgid "mobile" +msgstr "行動" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:133 +msgid "voice" +msgstr "聲音" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:134 +msgid "preferred" +msgstr "偏好" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:135 +msgid "postal" +msgstr "郵遞" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:136 +msgid "parcel" +msgstr "包裹" + #: ../libempathy-gtk/empathy-contact-widget.ui.h:1 msgid "Location at (date)\t" msgstr "位置 於 (date)\t" #. Alias #: ../libempathy-gtk/empathy-contact-widget.ui.h:3 -#: ../libempathy-gtk/empathy-individual-widget.c:1308 +#: ../libempathy-gtk/empathy-individual-widget.c:1260 msgid "Alias:" msgstr "別名:" @@ -2062,7 +2086,7 @@ msgstr "聯絡人詳細資料" #. Identifier to connect to Instant Messaging network #. Translators: Identifier to connect to Instant Messaging network #: ../libempathy-gtk/empathy-contact-widget.ui.h:8 -#: ../libempathy-gtk/empathy-individual-widget.c:1517 +#: ../libempathy-gtk/empathy-individual-widget.c:1469 msgid "Identifier:" msgstr "識別身分:" @@ -2099,16 +2123,16 @@ msgid "Select" msgstr "選取" #: ../libempathy-gtk/empathy-groups-widget.c:409 -#: ../src/empathy-main-window.c:1807 +#: ../src/empathy-main-window.c:1953 msgid "Group" msgstr "羣組" -#: ../libempathy-gtk/empathy-individual-dialogs.c:260 +#: ../libempathy-gtk/empathy-individual-dialogs.c:258 msgid "The following identity will be blocked:" msgid_plural "The following identities will be blocked:" msgstr[0] "下列識別身分將被封鎖:" -#: ../libempathy-gtk/empathy-individual-dialogs.c:267 +#: ../libempathy-gtk/empathy-individual-dialogs.c:265 msgid "The following identity can not be blocked:" msgid_plural "The following identities can not be blocked:" msgstr[0] "下列識別身分無法被封鎖:" @@ -2146,7 +2170,7 @@ msgstr "選取要用來放置通話的帳號" #. * title #: ../libempathy-gtk/empathy-individual-menu.c:313 #: ../libempathy-gtk/empathy-log-window.ui.h:2 -#: ../src/empathy-streamed-media-window.c:1299 +#: ../src/empathy-streamed-media-window.c:1285 #: ../src/empathy-call-window.ui.h:2 msgid "Call" msgstr "通話" @@ -2163,36 +2187,36 @@ msgstr "工作" msgid "HOME" msgstr "住家" -#. add an SMS button -#: ../libempathy-gtk/empathy-individual-menu.c:804 -#: ../libempathy-gtk/empathy-new-message-dialog.c:215 +#. add SMS button +#: ../libempathy-gtk/empathy-individual-menu.c:805 +#: ../libempathy-gtk/empathy-new-message-dialog.c:314 msgid "_SMS" msgstr "_SMS" -#: ../libempathy-gtk/empathy-individual-menu.c:1142 +#: ../libempathy-gtk/empathy-individual-menu.c:1143 msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "編輯(_E)" #. Translators: this is a verb meaning "to connect two contacts together #. * to form a meta-contact". -#: ../libempathy-gtk/empathy-individual-menu.c:1168 +#: ../libempathy-gtk/empathy-individual-menu.c:1169 msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "連結聯絡人(_L)…" -#: ../libempathy-gtk/empathy-individual-view.c:2341 +#: ../libempathy-gtk/empathy-individual-view.c:2340 msgid "Delete and _Block" msgstr "刪除並封鎖(_B)" -#: ../libempathy-gtk/empathy-individual-view.c:2510 +#: ../libempathy-gtk/empathy-individual-view.c:2509 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " "remove all the contacts which make up this linked contact." msgstr "你真的想要移除連結聯絡人「%s」嗎?請注意這會移除所有構成此連結聯絡羣的聯絡人。" -#: ../libempathy-gtk/empathy-individual-widget.c:1656 +#: ../libempathy-gtk/empathy-individual-widget.c:1608 #, c-format msgid "Linked contact containing %u contact" msgid_plural "Linked contacts containing %u contacts" @@ -2272,133 +2296,133 @@ msgctxt "Unlink individual (button)" msgid "_Unlink" msgstr "取消連結(_U)" -#: ../libempathy-gtk/empathy-log-window.c:634 +#: ../libempathy-gtk/empathy-log-window.c:620 msgid "History" msgstr "歷史" -#: ../libempathy-gtk/empathy-log-window.c:689 +#: ../libempathy-gtk/empathy-log-window.c:675 msgid "Show" msgstr "顯示" -#: ../libempathy-gtk/empathy-log-window.c:711 +#: ../libempathy-gtk/empathy-log-window.c:697 msgid "Search" msgstr "搜尋" -#: ../libempathy-gtk/empathy-log-window.c:1159 +#: ../libempathy-gtk/empathy-log-window.c:1145 #, c-format msgid "Chat in %s" msgstr "於 %s 內聊天" -#: ../libempathy-gtk/empathy-log-window.c:1161 +#: ../libempathy-gtk/empathy-log-window.c:1147 #, c-format msgid "Chat with %s" msgstr "與 %s 聊天中" -#: ../libempathy-gtk/empathy-log-window.c:1211 -#: ../libempathy-gtk/empathy-log-window.c:1358 +#: ../libempathy-gtk/empathy-log-window.c:1197 +#: ../libempathy-gtk/empathy-log-window.c:1344 msgctxt "A date with the time" msgid "%A, %e %B %Y %X" msgstr "%Y %B %d %A" #. Translators: this is an emote: '* Danielle waves' -#: ../libempathy-gtk/empathy-log-window.c:1300 +#: ../libempathy-gtk/empathy-log-window.c:1286 #, c-format msgid "* %s %s" msgstr "* %s %s" #. Translators: this is a message: 'Danielle: hello' #. * The string in bold is the sender's name -#: ../libempathy-gtk/empathy-log-window.c:1306 +#: ../libempathy-gtk/empathy-log-window.c:1292 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: ../libempathy-gtk/empathy-log-window.c:1382 +#: ../libempathy-gtk/empathy-log-window.c:1368 #, c-format msgid "%s second" msgid_plural "%s seconds" msgstr[0] "%s 秒" -#: ../libempathy-gtk/empathy-log-window.c:1389 +#: ../libempathy-gtk/empathy-log-window.c:1375 #, c-format msgid "%s minute" msgid_plural "%s minutes" msgstr[0] "%s 分鐘" -#: ../libempathy-gtk/empathy-log-window.c:1397 +#: ../libempathy-gtk/empathy-log-window.c:1383 #, c-format msgid "Call took %s, ended at %s" msgstr "通話時間 %s,結束於 %s" -#: ../libempathy-gtk/empathy-log-window.c:1729 +#: ../libempathy-gtk/empathy-log-window.c:1715 msgid "Today" msgstr "今日" -#: ../libempathy-gtk/empathy-log-window.c:1733 +#: ../libempathy-gtk/empathy-log-window.c:1719 msgid "Yesterday" msgstr "昨日" #. Translators: A date such as '23 May 2010' (strftime format) -#: ../libempathy-gtk/empathy-log-window.c:1748 +#: ../libempathy-gtk/empathy-log-window.c:1734 msgid "%e %B %Y" msgstr "%Y年%B%e日" -#: ../libempathy-gtk/empathy-log-window.c:1829 -#: ../libempathy-gtk/empathy-log-window.c:3444 +#: ../libempathy-gtk/empathy-log-window.c:1815 +#: ../libempathy-gtk/empathy-log-window.c:3430 msgid "Anytime" msgstr "任何時間" -#: ../libempathy-gtk/empathy-log-window.c:1916 -#: ../libempathy-gtk/empathy-log-window.c:2372 +#: ../libempathy-gtk/empathy-log-window.c:1902 +#: ../libempathy-gtk/empathy-log-window.c:2358 msgid "Anyone" msgstr "任一個" -#: ../libempathy-gtk/empathy-log-window.c:2685 +#: ../libempathy-gtk/empathy-log-window.c:2671 msgid "Who" msgstr "誰" -#: ../libempathy-gtk/empathy-log-window.c:2889 +#: ../libempathy-gtk/empathy-log-window.c:2875 msgid "When" msgstr "何時" -#: ../libempathy-gtk/empathy-log-window.c:3005 +#: ../libempathy-gtk/empathy-log-window.c:2991 msgid "Anything" msgstr "任何事" -#: ../libempathy-gtk/empathy-log-window.c:3007 +#: ../libempathy-gtk/empathy-log-window.c:2993 msgid "Text chats" msgstr "文字聊天" -#: ../libempathy-gtk/empathy-log-window.c:3009 +#: ../libempathy-gtk/empathy-log-window.c:2995 #: ../src/empathy-preferences.ui.h:4 msgid "Calls" msgstr "通話" -#: ../libempathy-gtk/empathy-log-window.c:3014 +#: ../libempathy-gtk/empathy-log-window.c:3000 msgid "Incoming calls" msgstr "來電" -#: ../libempathy-gtk/empathy-log-window.c:3015 +#: ../libempathy-gtk/empathy-log-window.c:3001 msgid "Outgoing calls" msgstr "播出" -#: ../libempathy-gtk/empathy-log-window.c:3016 +#: ../libempathy-gtk/empathy-log-window.c:3002 msgid "Missed calls" msgstr "漏接來電" -#: ../libempathy-gtk/empathy-log-window.c:3038 +#: ../libempathy-gtk/empathy-log-window.c:3024 msgid "What" msgstr "什麼" -#: ../libempathy-gtk/empathy-log-window.c:3747 +#: ../libempathy-gtk/empathy-log-window.c:3719 msgid "Are you sure you want to delete all logs of previous conversations?" msgstr "你確定要刪除過往談話的所有紀錄嗎?" -#: ../libempathy-gtk/empathy-log-window.c:3751 +#: ../libempathy-gtk/empathy-log-window.c:3723 msgid "Clear All" msgstr "清除全部" -#: ../libempathy-gtk/empathy-log-window.c:3758 +#: ../libempathy-gtk/empathy-log-window.c:3730 msgid "Delete from:" msgstr "刪除從:" @@ -2439,32 +2463,72 @@ msgstr "檔案(_F)" msgid "page 2" msgstr "頁面 2" -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2 -msgid "Contact ID:" -msgstr "聯絡人 ID:" +#: ../libempathy-gtk/empathy-new-message-dialog.c:84 +msgid "The contact is offline" +msgstr "聯絡人已經離線" -#. add chat button -#: ../libempathy-gtk/empathy-new-message-dialog.c:225 -msgid "C_hat" -msgstr "聊天(_C)" +#: ../libempathy-gtk/empathy-new-message-dialog.c:86 +msgid "The specified contact is either invalid or unknown" +msgstr "指定的聯絡人無效或未知" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:88 +msgid "The contact does not support this kind of conversation" +msgstr "該聯絡人不支援這類談話" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:90 +msgid "The requested functionality is not implemented for this protocol" +msgstr "請求的功能尚未在此協定中實作" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:96 +msgid "Could not start a conversation with the given contact" +msgstr "無法啟動與給定聯絡人的談話" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:98 +msgid "You are banned from this channel" +msgstr "你被此頻道禁封" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:100 +msgid "This channel is full" +msgstr "此頻道已滿" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:102 +msgid "You must be invited to join this channel" +msgstr "你必須被邀請才能參加此頻道" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:104 +msgid "Can't proceed while disconnected" +msgstr "斷線時無法處理" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:106 +msgid "Permission denied" +msgstr "許可被拒絕" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:112 +msgid "There was an error starting the conversation" +msgstr "啟動談話時發生錯誤" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:291 +#: ../libempathy-gtk/empathy-new-call-dialog.c:203 +msgid "Enter a contact identifier or phone number:" +msgstr "請輸入聯絡人辨識身份或電話號碼:" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-message-dialog.c:244 +#: ../libempathy-gtk/empathy-new-message-dialog.c:334 msgid "New Conversation" msgstr "新增談話" -#. add video toggle -#: ../libempathy-gtk/empathy-new-call-dialog.c:204 -msgid "Send _Video" -msgstr "傳送視像(_V)" +#. add video button +#: ../libempathy-gtk/empathy-new-call-dialog.c:226 +msgid "_Video Call" +msgstr "視像通話(_V)" -#. add chat button -#: ../libempathy-gtk/empathy-new-call-dialog.c:215 -msgid "C_all" -msgstr "通話(_A)" +#. add audio button +#: ../libempathy-gtk/empathy-new-call-dialog.c:236 +msgid "_Audio Call" +msgstr "語音通話(_A)" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-call-dialog.c:225 +#: ../libempathy-gtk/empathy-new-call-dialog.c:246 msgid "New Call" msgstr "新增通話" @@ -2505,12 +2569,8 @@ msgstr "按這裏將這個狀態設為喜好" msgid "Set status" msgstr "設定狀態" -#: ../libempathy-gtk/empathy-presence-chooser.c:943 -msgid "Set your presence and current status" -msgstr "設定你的上線與目前的狀態" - #. Custom messages -#: ../libempathy-gtk/empathy-presence-chooser.c:1131 +#: ../libempathy-gtk/empathy-presence-chooser.c:1135 msgid "Custom messages…" msgstr "自選訊息…" @@ -2587,12 +2647,12 @@ msgstr "語音通話結束" msgid "Edit Custom Messages" msgstr "編輯自選訊息" -#: ../libempathy-gtk/empathy-theme-adium.c:1036 +#: ../libempathy-gtk/empathy-theme-adium.c:1047 #, c-format msgid "Message edited at %s" msgstr "訊息編輯於 %s" -#: ../libempathy-gtk/empathy-theme-adium.c:1726 +#: ../libempathy-gtk/empathy-theme-adium.c:1752 msgid "Normal" msgstr "一般" @@ -2683,26 +2743,26 @@ msgstr "請記住此選擇以供未來連線使用" msgid "Certificate Details" msgstr "證書詳細資料" -#: ../libempathy-gtk/empathy-ui-utils.c:1735 +#: ../libempathy-gtk/empathy-ui-utils.c:1741 msgid "Unable to open URI" msgstr "無法開啓 URI" -#: ../libempathy-gtk/empathy-ui-utils.c:1831 +#: ../libempathy-gtk/empathy-ui-utils.c:1859 msgid "Select a file" msgstr "選擇一個檔案" -#: ../libempathy-gtk/empathy-ui-utils.c:1903 +#: ../libempathy-gtk/empathy-ui-utils.c:1934 msgid "Insufficient free space to save file" msgstr "空間不足以儲存檔案" -#: ../libempathy-gtk/empathy-ui-utils.c:1911 +#: ../libempathy-gtk/empathy-ui-utils.c:1942 #, c-format msgid "" "%s of free space are required to save this file, but only %s is available. " "Please choose another location." msgstr "需要 %s 的空間以儲存此檔案,但僅有 %s 可用。請選擇其他位置。" -#: ../libempathy-gtk/empathy-ui-utils.c:1955 +#: ../libempathy-gtk/empathy-ui-utils.c:1986 #, c-format msgid "Incoming file from %s" msgstr "收到來自 %s 的檔案" @@ -2874,39 +2934,31 @@ msgstr "西歐語系" msgid "Vietnamese" msgstr "越南文" -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108 -msgid "The selected contact cannot receive files." -msgstr "所選的聯絡人無法接收檔案。" - -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114 -msgid "The selected contact is offline." -msgstr "所選的聯絡人已經離線。" - -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169 +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:203 msgid "No error message" msgstr "沒有錯誤訊息" -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242 +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:276 msgid "Instant Message (Empathy)" msgstr "即時通訊 (Empathy)" -#: ../src/empathy.c:431 +#: ../src/empathy.c:433 msgid "Don't connect on startup" msgstr "啟動時不要自動連線" -#: ../src/empathy.c:435 +#: ../src/empathy.c:437 msgid "Don't display the contact list or any other dialogs on startup" msgstr "啟動時不顯示聯絡人清單或任何其他對話窗" -#: ../src/empathy.c:450 +#: ../src/empathy.c:452 msgid "- Empathy IM Client" msgstr "- Empathy 即時通用戶端" -#: ../src/empathy.c:637 +#: ../src/empathy.c:639 msgid "Error contacting the Account Manager" msgstr "聯絡帳號管理程式時發生錯誤" -#: ../src/empathy.c:639 +#: ../src/empathy.c:641 #, c-format msgid "" "There was an error while trying to connect to the Telepathy Account Manager. " @@ -3046,8 +3098,8 @@ msgid "Select the accounts you want to import:" msgstr "選擇要匯入的帳號:" #: ../src/empathy-account-assistant.c:813 -#: ../src/empathy-new-chatroom-dialog.c:555 -#: ../src/empathy-new-chatroom-dialog.c:556 +#: ../src/empathy-new-chatroom-dialog.c:625 +#: ../src/empathy-new-chatroom-dialog.c:626 msgid "Yes" msgstr "是" @@ -3114,8 +3166,8 @@ msgid "Your new account has not been saved yet." msgstr "尚未儲存你的新帳號。" #: ../src/empathy-accounts-dialog.c:345 -#: ../src/empathy-streamed-media-window.c:754 -#: ../src/empathy-call-window.c:1216 +#: ../src/empathy-streamed-media-window.c:755 +#: ../src/empathy-call-window.c:1326 msgid "Connecting…" msgstr "連線中…" @@ -3209,11 +3261,11 @@ msgstr "要加入新的帳號,你必須先安裝每個會用到的通訊協定 msgid "_Import…" msgstr "匯入(_I)…" -#: ../src/empathy-auth-client.c:249 +#: ../src/empathy-auth-client.c:251 msgid " - Empathy authentication client" msgstr "- Empathy 認證用戶端" -#: ../src/empathy-auth-client.c:265 +#: ../src/empathy-auth-client.c:267 msgid "Empathy authentication client" msgstr "Empathy 認證用戶端" @@ -3221,157 +3273,145 @@ msgstr "Empathy 認證用戶端" msgid "People nearby" msgstr "附近的人" -#: ../src/empathy-av.c:118 ../src/empathy-call.c:192 +#: ../src/empathy-av.c:118 ../src/empathy-call.c:193 msgid "- Empathy Audio/Video Client" msgstr "- Empathy 音訊視像用戶端" -#: ../src/empathy-av.c:134 ../src/empathy-call.c:217 +#: ../src/empathy-av.c:134 ../src/empathy-call.c:218 msgid "Empathy Audio/Video Client" msgstr "Empathy 音訊視像用戶端" -#: ../src/empathy-streamed-media-window.c:431 +#: ../src/empathy-streamed-media-window.c:432 msgid "Contrast" msgstr "對比" -#: ../src/empathy-streamed-media-window.c:434 +#: ../src/empathy-streamed-media-window.c:435 msgid "Brightness" msgstr "亮度" -#: ../src/empathy-streamed-media-window.c:437 +#: ../src/empathy-streamed-media-window.c:438 msgid "Gamma" msgstr "Gamma" -#: ../src/empathy-streamed-media-window.c:542 +#: ../src/empathy-streamed-media-window.c:543 msgid "Volume" msgstr "音量" -#: ../src/empathy-streamed-media-window.c:1110 +#: ../src/empathy-streamed-media-window.c:1094 msgid "_Sidebar" msgstr "側邊欄(_S)" -#: ../src/empathy-streamed-media-window.c:1130 +#: ../src/empathy-streamed-media-window.c:1114 msgid "Audio input" msgstr "音效輸入" -#: ../src/empathy-streamed-media-window.c:1134 +#: ../src/empathy-streamed-media-window.c:1118 msgid "Video input" msgstr "視像輸入" -#: ../src/empathy-streamed-media-window.c:1140 +#: ../src/empathy-streamed-media-window.c:1126 msgid "Dialpad" msgstr "播號盤" -#: ../src/empathy-streamed-media-window.c:1151 +#: ../src/empathy-streamed-media-window.c:1137 msgid "Details" msgstr "詳細資料" #. translators: Call is a noun and %s is the contact name. This string #. * is used in the window title -#: ../src/empathy-streamed-media-window.c:1220 -#: ../src/empathy-call-window.c:1825 +#: ../src/empathy-streamed-media-window.c:1206 +#: ../src/empathy-call-window.c:1932 #, c-format msgid "Call with %s" msgstr "與 %s 通話中" -#: ../src/empathy-streamed-media-window.c:1453 -#: ../src/empathy-call-window.c:2069 +#: ../src/empathy-streamed-media-window.c:1439 +#: ../src/empathy-call-window.c:2176 msgid "The IP address as seen by the machine" msgstr "機器看見的 IP 位址" -#: ../src/empathy-streamed-media-window.c:1455 -#: ../src/empathy-call-window.c:2071 +#: ../src/empathy-streamed-media-window.c:1441 +#: ../src/empathy-call-window.c:2178 msgid "The IP address as seen by a server on the Internet" msgstr "互聯網上的伺服器看見的 IP 位址" -#: ../src/empathy-streamed-media-window.c:1457 -#: ../src/empathy-call-window.c:2073 +#: ../src/empathy-streamed-media-window.c:1443 +#: ../src/empathy-call-window.c:2180 msgid "The IP address of the peer as seen by the other side" msgstr "其他端看見的點的 IP 位址" -#: ../src/empathy-streamed-media-window.c:1459 -#: ../src/empathy-call-window.c:2075 +#: ../src/empathy-streamed-media-window.c:1445 +#: ../src/empathy-call-window.c:2182 msgid "The IP address of a relay server" msgstr "中繼伺服器的 IP 位址" -#: ../src/empathy-streamed-media-window.c:1461 -#: ../src/empathy-call-window.c:2077 +#: ../src/empathy-streamed-media-window.c:1447 +#: ../src/empathy-call-window.c:2184 msgid "The IP address of the multicast group" msgstr "多點廣播羣組的 IP 位址" -#: ../src/empathy-streamed-media-window.c:1843 -msgctxt "encoding video codec" -msgid "Unknown" -msgstr "未知" - -#: ../src/empathy-streamed-media-window.c:1846 -msgctxt "encoding audio codec" -msgid "Unknown" -msgstr "未知" - -#: ../src/empathy-streamed-media-window.c:1849 -msgctxt "decoding video codec" -msgid "Unknown" -msgstr "未知" - -#: ../src/empathy-streamed-media-window.c:1852 -msgctxt "decoding audio codec" +#: ../src/empathy-streamed-media-window.c:1835 +#: ../src/empathy-streamed-media-window.c:1838 +#: ../src/empathy-streamed-media-window.c:1841 +#: ../src/empathy-streamed-media-window.c:1844 +msgctxt "codec" msgid "Unknown" msgstr "未知" #. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-streamed-media-window.c:2144 +#: ../src/empathy-streamed-media-window.c:2136 #, c-format msgid "Connected — %d:%02dm" msgstr "已連線 — %d:%02dm" -#: ../src/empathy-streamed-media-window.c:2205 -#: ../src/empathy-call-window.c:2846 +#: ../src/empathy-streamed-media-window.c:2197 +#: ../src/empathy-call-window.c:3045 msgid "Technical Details" msgstr "技術細節" -#: ../src/empathy-streamed-media-window.c:2243 -#: ../src/empathy-call-window.c:2884 +#: ../src/empathy-streamed-media-window.c:2235 +#: ../src/empathy-call-window.c:3084 #, c-format msgid "" "%s's software does not understand any of the audio formats supported by your " "computer" msgstr "%s 的軟件不瞭解任何你電腦上所支援的音訊格式" -#: ../src/empathy-streamed-media-window.c:2248 -#: ../src/empathy-call-window.c:2889 +#: ../src/empathy-streamed-media-window.c:2240 +#: ../src/empathy-call-window.c:3089 #, c-format msgid "" "%s's software does not understand any of the video formats supported by your " "computer" msgstr "%s 的軟件不瞭解任何你電腦上所支援的視像格式" -#: ../src/empathy-streamed-media-window.c:2254 -#: ../src/empathy-call-window.c:2895 +#: ../src/empathy-streamed-media-window.c:2246 +#: ../src/empathy-call-window.c:3095 #, c-format msgid "" "Can't establish a connection to %s. One of you might be on a network that " "does not allow direct connections." msgstr "無法和 %s 建立連線。你們其中之一可能在一個不允許直接連線的網絡之上。" -#: ../src/empathy-streamed-media-window.c:2260 -#: ../src/empathy-call-window.c:2901 +#: ../src/empathy-streamed-media-window.c:2252 +#: ../src/empathy-call-window.c:3101 msgid "There was a failure on the network" msgstr "這個網絡上有錯誤發生" -#: ../src/empathy-streamed-media-window.c:2264 -#: ../src/empathy-call-window.c:2905 +#: ../src/empathy-streamed-media-window.c:2256 +#: ../src/empathy-call-window.c:3105 msgid "" "The audio formats necessary for this call are not installed on your computer" msgstr "此通話所必要的音訊格式尚未在你的電腦上安裝" -#: ../src/empathy-streamed-media-window.c:2267 -#: ../src/empathy-call-window.c:2908 +#: ../src/empathy-streamed-media-window.c:2259 +#: ../src/empathy-call-window.c:3108 msgid "" "The video formats necessary for this call are not installed on your computer" msgstr "此通話所必要的視像格式尚未在你的電腦上安裝" -#: ../src/empathy-streamed-media-window.c:2277 -#: ../src/empathy-call-window.c:2920 +#: ../src/empathy-streamed-media-window.c:2269 +#: ../src/empathy-call-window.c:3120 #, c-format msgid "" "Something unexpected happened in a Telepathy component. Please 匯報這個錯誤並附上從求助選單內的「除錯」視窗中所收集的紀錄。" -#: ../src/empathy-streamed-media-window.c:2285 -#: ../src/empathy-call-window.c:2929 +#: ../src/empathy-streamed-media-window.c:2277 +#: ../src/empathy-call-window.c:3129 msgid "There was a failure in the call engine" msgstr "通話引擎內有錯誤發生" -#: ../src/empathy-streamed-media-window.c:2288 -#: ../src/empathy-call-window.c:2932 +#: ../src/empathy-streamed-media-window.c:2280 +#: ../src/empathy-call-window.c:3132 msgid "The end of the stream was reached" msgstr "已達串流末端" -#: ../src/empathy-streamed-media-window.c:2328 -#: ../src/empathy-call-window.c:2972 +#: ../src/empathy-streamed-media-window.c:2320 +#: ../src/empathy-call-window.c:3172 msgid "Can't establish audio stream" msgstr "無法建立音訊串流" -#: ../src/empathy-streamed-media-window.c:2338 -#: ../src/empathy-call-window.c:2982 +#: ../src/empathy-streamed-media-window.c:2330 +#: ../src/empathy-call-window.c:3182 msgid "Can't establish video stream" msgstr "無法建立視像串流" @@ -3486,8 +3526,8 @@ msgstr "切換視像傳播" #: ../src/empathy-call-window.ui.h:21 #: ../src/empathy-streamed-media-window.ui.h:18 -#: ../src/empathy-call-window.c:2476 ../src/empathy-call-window.c:2477 -#: ../src/empathy-call-window.c:2478 ../src/empathy-call-window.c:2479 +#: ../src/empathy-call-window.c:2584 ../src/empathy-call-window.c:2585 +#: ../src/empathy-call-window.c:2586 ../src/empathy-call-window.c:2587 msgid "Unknown" msgstr "不明" @@ -3651,7 +3691,7 @@ msgstr "管理喜好的聊天室" msgid "Incoming video call" msgstr "傳入的視像通話" -#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1449 +#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1556 msgid "Incoming call" msgstr "來電" @@ -3666,7 +3706,7 @@ msgid "%s is calling you. Do you want to answer?" msgstr "%s 要與你進行通話。你是否要接聽?" #: ../src/empathy-event-manager.c:529 ../src/empathy-event-manager.c:730 -#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1455 +#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1562 #, c-format msgid "Incoming call from %s" msgstr "%s 的來電" @@ -3684,7 +3724,7 @@ msgid "_Answer with video" msgstr "以視像接聽(_A)" #: ../src/empathy-event-manager.c:730 ../src/empathy-event-manager.c:763 -#: ../src/empathy-call-window.c:1455 +#: ../src/empathy-call-window.c:1562 #, c-format msgid "Incoming video call from %s" msgstr "來自 %s 的視像通話" @@ -3727,16 +3767,16 @@ msgstr "你被邀請參加 %s" msgid "Incoming file transfer from %s" msgstr "收到來自 %s 的檔案傳輸" -#: ../src/empathy-event-manager.c:1134 ../src/empathy-main-window.c:375 +#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:378 msgid "Password required" msgstr "需要密碼" -#: ../src/empathy-event-manager.c:1190 +#: ../src/empathy-event-manager.c:1210 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s 想要得到查看你是否上線的許可" -#: ../src/empathy-event-manager.c:1194 +#: ../src/empathy-event-manager.c:1214 #, c-format msgid "" "\n" @@ -3879,51 +3919,60 @@ msgstr "通訊協定" msgid "Source" msgstr "來源" -#: ../src/empathy-main-window.c:392 +#: ../src/empathy-main-window.c:395 msgid "Provide Password" msgstr "提供密碼" -#: ../src/empathy-main-window.c:398 +#: ../src/empathy-main-window.c:401 msgid "Disconnect" msgstr "斷線" -#: ../src/empathy-main-window.c:622 +#: ../src/empathy-main-window.c:638 msgid "No match found" msgstr "找不到符合項目" -#: ../src/empathy-main-window.c:777 +#: ../src/empathy-main-window.c:746 +#, c-format +msgid "Sorry, %s accounts can’t be used until your %s software is updated." +msgstr "很抱歉,%s 帳號無法使用,除非你的 %s 軟件已更新。" + +#: ../src/empathy-main-window.c:814 +msgid "Update software..." +msgstr "更新軟件..." + +#: ../src/empathy-main-window.c:820 ../src/empathy-main-window.c:941 +msgid "Close" +msgstr "關閉" + +#: ../src/empathy-main-window.c:929 msgid "Reconnect" msgstr "重新連接" -#: ../src/empathy-main-window.c:783 +#: ../src/empathy-main-window.c:935 msgid "Edit Account" msgstr "編輯帳號" -#: ../src/empathy-main-window.c:789 -msgid "Close" -msgstr "關閉" - #. Translators: this string will be something like: #. * Top up My Account ($1.23)..." -#: ../src/empathy-main-window.c:928 +#: ../src/empathy-main-window.c:1074 #, c-format msgid "Top up %s (%s)..." msgstr "加值 %s (%s)..." -#: ../src/empathy-main-window.c:975 +#: ../src/empathy-main-window.c:1121 msgid "Top up account credit" -msgstr "加值帳號額度" +msgstr "加值帳號存額" #. top up button -#: ../src/empathy-main-window.c:1046 +#: ../src/empathy-main-window.c:1192 msgid "Top Up..." msgstr "加值..." -#: ../src/empathy-main-window.c:1789 +#: ../src/empathy-main-window.c:1935 msgid "Contact" msgstr "聯絡人" -#: ../src/empathy-main-window.c:2121 +#: ../src/empathy-main-window.c:2310 msgid "Contact List" msgstr "聯絡人清單" @@ -4016,17 +4065,17 @@ msgstr "聊天室(_R)" msgid "_Search for Contacts…" msgstr "搜尋聯絡人(_S)…" -#: ../src/empathy-new-chatroom-dialog.c:337 +#: ../src/empathy-new-chatroom-dialog.c:369 msgid "Chat Room" msgstr "聊天室" -#: ../src/empathy-new-chatroom-dialog.c:353 +#: ../src/empathy-new-chatroom-dialog.c:385 msgid "Members" msgstr "成員" #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name, #. yes/no, yes/no and a number. -#: ../src/empathy-new-chatroom-dialog.c:553 +#: ../src/empathy-new-chatroom-dialog.c:623 #, c-format msgid "" "%s\n" @@ -4039,16 +4088,16 @@ msgstr "" "需要密碼:%s\n" "成員:%s" -#: ../src/empathy-new-chatroom-dialog.c:555 -#: ../src/empathy-new-chatroom-dialog.c:556 +#: ../src/empathy-new-chatroom-dialog.c:625 +#: ../src/empathy-new-chatroom-dialog.c:626 msgid "No" msgstr "否" -#: ../src/empathy-new-chatroom-dialog.c:584 +#: ../src/empathy-new-chatroom-dialog.c:654 msgid "Could not start room listing" msgstr "無法開始列出聊天室清單" -#: ../src/empathy-new-chatroom-dialog.c:594 +#: ../src/empathy-new-chatroom-dialog.c:664 msgid "Could not stop room listing" msgstr "無法停止列出聊天室清單" @@ -4151,7 +4200,7 @@ msgstr "將來有命終相見,無命今生不相逄。" msgid "Juliet has disconnected" msgstr "祝英台已斷線" -#: ../src/empathy-preferences.c:1166 +#: ../src/empathy-preferences.c:1175 msgid "Preferences" msgstr "偏好設定" @@ -4269,43 +4318,47 @@ msgid "Themes" msgstr "佈景主題" #: ../src/empathy-preferences.ui.h:30 +msgid "Use _echo cancellation to improve call quality" +msgstr "使用回音消除來改善通話品質(_E)" + +#: ../src/empathy-preferences.ui.h:31 msgid "Variant:" msgstr "樣式:" -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:32 msgid "_Automatically connect on startup" msgstr "啟動時自動連線(_A)" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:33 msgid "_Cellphone" msgstr "手機(_C)" -#: ../src/empathy-preferences.ui.h:33 +#: ../src/empathy-preferences.ui.h:34 msgid "_Enable bubble notifications" msgstr "啟用氣泡式通知(_E)" -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:35 msgid "_Enable sound notifications" msgstr "啟用音效通知(_E)" -#: ../src/empathy-preferences.ui.h:35 +#: ../src/empathy-preferences.ui.h:36 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:36 +#: ../src/empathy-preferences.ui.h:37 msgid "_Network (IP, Wi-Fi)" msgstr "網絡 (IP, Wi-Fi)(_N)" -#: ../src/empathy-preferences.ui.h:37 +#: ../src/empathy-preferences.ui.h:38 msgid "_Open new chats in separate windows" msgstr "在個別視窗開啟新的聊天(_O)" -#: ../src/empathy-preferences.ui.h:38 +#: ../src/empathy-preferences.ui.h:39 msgid "_Publish location to my contacts" msgstr "對我的聯絡人公開位置(_P)" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:40 +#: ../src/empathy-preferences.ui.h:41 msgid "_Reduce location accuracy" msgstr "降低位置準確度(_R)" @@ -4431,16 +4484,16 @@ msgid "" "extension." msgstr "選取的連線管理程式不支援遠端偵錯擴充功能。" -#: ../src/empathy-invite-participant-dialog.c:179 -#: ../src/empathy-invite-participant-dialog.c:205 +#: ../src/empathy-invite-participant-dialog.c:197 +#: ../src/empathy-invite-participant-dialog.c:225 msgid "Invite Participant" msgstr "邀請參與" -#: ../src/empathy-invite-participant-dialog.c:180 +#: ../src/empathy-invite-participant-dialog.c:198 msgid "Choose a contact to invite into the conversation:" msgstr "選擇想要邀請進入談話的聯絡人:" -#: ../src/empathy-invite-participant-dialog.c:201 +#: ../src/empathy-invite-participant-dialog.c:221 msgid "Invite" msgstr "邀請" @@ -4461,23 +4514,27 @@ msgstr "初始選取所給予的帳號 (例:gabble/jabber/foo_40example_2eorg0 msgid "" msgstr "" -#: ../src/empathy-accounts.c:198 +#: ../src/empathy-accounts.c:196 +msgid "Show account assistant" +msgstr "顯示帳號助理" + +#: ../src/empathy-accounts.c:202 msgid "- Empathy Accounts" msgstr "- Empathy 帳號" -#: ../src/empathy-accounts.c:237 +#: ../src/empathy-accounts.c:238 msgid "Empathy Accounts" msgstr "Empathy 帳號" -#: ../src/empathy-debugger.c:70 +#: ../src/empathy-debugger.c:69 msgid "Show a particular service" msgstr "顯示特定服務" -#: ../src/empathy-debugger.c:75 +#: ../src/empathy-debugger.c:74 msgid "- Empathy Debugger" msgstr "- Empathy 除錯器" -#: ../src/empathy-debugger.c:114 +#: ../src/empathy-debugger.c:113 msgid "Empathy Debugger" msgstr "Empathy 除錯程式" @@ -4485,39 +4542,39 @@ msgstr "Empathy 除錯程式" msgid "- Empathy Chat Client" msgstr "- Empathy 聊天用戶端" -#: ../src/empathy-notifications-approver.c:203 +#: ../src/empathy-notifications-approver.c:190 msgid "Respond" msgstr "回應" -#: ../src/empathy-notifications-approver.c:217 -#: ../src/empathy-call-window.c:1459 +#: ../src/empathy-notifications-approver.c:204 +#: ../src/empathy-call-window.c:1566 msgid "Reject" msgstr "拒絕" -#: ../src/empathy-notifications-approver.c:222 -#: ../src/empathy-notifications-approver.c:227 -#: ../src/empathy-call-window.c:1460 +#: ../src/empathy-notifications-approver.c:209 +#: ../src/empathy-notifications-approver.c:214 +#: ../src/empathy-call-window.c:1567 msgid "Answer" msgstr "接聽" -#: ../src/empathy-notifications-approver.c:227 +#: ../src/empathy-notifications-approver.c:214 msgid "Answer with video" msgstr "以視像接聽" -#: ../src/empathy-notifications-approver.c:235 -#: ../src/empathy-notifications-approver.c:245 +#: ../src/empathy-notifications-approver.c:222 +#: ../src/empathy-notifications-approver.c:232 msgid "Decline" msgstr "拒絕" -#: ../src/empathy-notifications-approver.c:239 -#: ../src/empathy-notifications-approver.c:250 +#: ../src/empathy-notifications-approver.c:226 +#: ../src/empathy-notifications-approver.c:237 msgid "Accept" msgstr "接受" #. translators: the 'Provide' button is displayed in a notification #. * bubble when Empathy is asking for an account password; clicking on it #. * brings the password popup. -#: ../src/empathy-notifications-approver.c:260 +#: ../src/empathy-notifications-approver.c:247 msgid "Provide" msgstr "提供" @@ -4528,32 +4585,97 @@ msgstr "%s 剛剛播打給你,但你正與他人通話。" #. Translators: this is an "Info" label. It should be as short #. * as possible. -#: ../src/empathy-call-window.c:1088 ../src/empathy-call-window.c:1111 +#: ../src/empathy-call-window.c:1173 ../src/empathy-call-window.c:1196 msgid "i" msgstr "訊" -#: ../src/empathy-call-window.c:2775 +#: ../src/empathy-call-window.c:2941 msgid "On hold" msgstr "保留" -#: ../src/empathy-call-window.c:2778 +#: ../src/empathy-call-window.c:2944 msgid "Mute" msgstr "靜音" -#: ../src/empathy-call-window.c:2780 +#: ../src/empathy-call-window.c:2946 msgid "Duration" msgstr "時間" #. Translators: 'status - minutes:seconds' the caller has been connected -#: ../src/empathy-call-window.c:2783 +#: ../src/empathy-call-window.c:2949 #, c-format msgid "%s — %d:%02dm" msgstr "%s — %d:%02dm" +#: ../src/empathy-call-window.c:3219 +#, c-format +msgid "Your current balance is %s." +msgstr "你目前的餘額為 %s。" + +#: ../src/empathy-call-window.c:3223 +msgid "Sorry, you don’t have enough credit for that call." +msgstr "很抱歉,你的存額不足以進行該通話。" + +#: ../src/empathy-call-window.c:3225 +msgid "Top Up" +msgstr "加值" + #: ../libempathy-gtk/empathy-search-bar.c:243 msgid "_Match case" msgstr "比對大小寫(_M)" +#~ msgid "Empathy has migrated butterfly logs" +#~ msgstr "Empathy 已轉移 butterfly 日誌" + +#~ msgid "Whether Empathy has migrated butterfly logs." +#~ msgstr "Empathy 是否應轉移 butterfly 日誌。" + +#~ msgid "Ungrouped" +#~ msgstr "未群組" + +#~ msgid "Favorite People" +#~ msgstr "喜好的人" + +#~ msgid "Select a contact" +#~ msgstr "選擇連絡人" + +#~ msgid "Contact ID:" +#~ msgstr "連絡人 ID:" + +#~ msgid "C_hat" +#~ msgstr "聊天(_C)" + +#~ msgid "Send _Video" +#~ msgstr "傳送視訊(_V)" + +#~ msgid "C_all" +#~ msgstr "通話(_A)" + +#~ msgid "Set your presence and current status" +#~ msgstr "設定您的上線與目前的狀態" + +#~ msgid "The selected contact cannot receive files." +#~ msgstr "所選的聯絡人無法接收檔案。" + +#~ msgid "The selected contact is offline." +#~ msgstr "所選的聯絡人已經離線。" + +#~ msgctxt "encoding video codec" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "encoding audio codec" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "decoding video codec" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "decoding audio codec" +#~ msgid "Unknown" +#~ msgstr "未知" + #~ msgid "Find Next" #~ msgstr "尋找下一個" @@ -4715,9 +4837,6 @@ msgstr "比對大小寫(_M)" #~ "fails" #~ msgstr "嘗試匯入任何認識的帳號,若失敗時則顯示協助" -#~ msgid "Show the accounts dialog" -#~ msgstr "顯示帳號對話盒" - #~ msgid "The error message was: %s" #~ msgstr "錯誤訊息為: %s" diff --git a/po/zh_TW.po b/po/zh_TW.po index fad653e9..26d7e05a 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -7,10 +7,10 @@ # msgid "" msgstr "" -"Project-Id-Version: empathy 3.1.92\n" +"Project-Id-Version: empathy 3.3.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-09-25 14:31+0800\n" -"PO-Revision-Date: 2011-09-23 19:23+0800\n" +"POT-Creation-Date: 2011-11-12 19:09+0800\n" +"PO-Revision-Date: 2011-11-12 13:49+0800\n" "Last-Translator: Cheng-Chia Tseng \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" @@ -87,59 +87,59 @@ msgid "Contact list sort criterion" msgstr "連絡人清單排序準則" #: ../data/org.gnome.Empathy.gschema.xml.in.h:13 +msgid "D-Bus object path of the last account selected to join a room." +msgstr "上次要加入聊天室所選取帳號的 D-Bus 物件路徑。" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 msgid "Default camera device to use in video calls, e.g. /dev/video0." msgstr "要用於視訊通話的預設攝影機裝置,例:/dev/video0。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:14 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 msgid "Default directory to select an avatar image from" msgstr "用來選擇大頭貼圖片的預設目錄" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:15 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 msgid "Disable popup notifications when away" msgstr "當狀態為離開時停用彈出式通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:16 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 msgid "Disable sounds when away" msgstr "當狀態為離開時停用音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:17 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 msgid "Display incoming events in the status area" msgstr "在狀態區域顯示收到事件" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:18 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 msgid "" "Display incoming events in the status area. If false, present them to the " "user immediately." msgstr "在狀態區域顯示收到事件。如果不啟用的話,收到事件會直接呈現給使用者。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:19 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 msgid "Echo cancellation support" msgstr "回音消除支援" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:20 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 msgid "Empathy can publish the user's location" msgstr "Empathy 可以發布使用者的位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:21 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 msgid "Empathy can use the GPS to guess the location" msgstr "Empathy 可以利用 GPS 來推測位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:22 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 msgid "Empathy can use the cellular network to guess the location" msgstr "Empathy 可以利用行動電話網路基地臺來推測位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:23 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 msgid "Empathy can use the network to guess the location" msgstr "Empathy 可以利用網路來推測位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:24 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 msgid "Empathy default download folder" msgstr "Empathy 預設下載資料夾" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:25 -msgid "Empathy has migrated butterfly logs" -msgstr "Empathy 已轉移 butterfly 日誌" - #: ../data/org.gnome.Empathy.gschema.xml.in.h:26 msgid "Empathy should auto-away when idle" msgstr "Empathy 當閒置時應該自動設為離開" @@ -177,150 +177,150 @@ msgid "Hide the main window." msgstr "隱藏主視窗。" #: ../data/org.gnome.Empathy.gschema.xml.in.h:35 +msgid "Last account selected in Join Room dialog" +msgstr "上次在「參加聊天室」對話盒選取的帳號" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 msgid "Nick completed character" msgstr "暱稱補齊字元" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:36 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 msgid "Open new chats in separate windows" msgstr "在個別視窗開啟新的聊天" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:37 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 msgid "Path of the Adium theme to use" msgstr "要使用的 Adium 佈景主題路徑" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:38 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 msgid "Path of the Adium theme to use if the theme used for chat is Adium." msgstr "如果聊天室使用的主題是 Adium 時要使用的 Adium 佈景主題路徑。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:39 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 msgid "Play a sound for incoming messages" msgstr "收到訊息時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:40 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 msgid "Play a sound for new conversations" msgstr "當開啟新的談話時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:41 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 msgid "Play a sound for outgoing messages" msgstr "送出訊息時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Play a sound when a contact logs in" msgstr "當連絡人登入時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Play a sound when a contact logs out" msgstr "當有連絡人登出時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Play a sound when we log in" msgstr "當我們登入時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Play a sound when we log out" msgstr "當我們登出時播放音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Pop up notifications if the chat isn't focused" msgstr "如果聊天視窗失去焦點則彈出通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 msgid "Pop up notifications when a contact logs in" msgstr "當連絡人登入時彈出通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 msgid "Pop up notifications when a contact logs out" msgstr "當連絡人登出時彈出通知" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "Position the camera preview should be during a call." msgstr "通話時攝影機預覽應該擺放的位置。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "Show Balance in contact list" msgstr "於聯絡人清單內顯示餘額" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "Show avatars" msgstr "顯示大頭貼" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "Show contact list in rooms" msgstr "在聊天室顯示連絡人清單" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Show hint about closing the main window" msgstr "關閉主視窗時顯示提示" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Show offline contacts" msgstr "顯示離線連絡人" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "Show protocols" msgstr "顯示協定" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "Spell checking languages" msgstr "拼字檢查的語言" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "The default folder to save file transfers in." msgstr "用來儲存檔案傳輸接收檔案的預設資料夾。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "The last directory that an avatar image was chosen from." msgstr "上次選擇大頭貼圖片的目錄。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "The position for the chat window side pane" msgstr "聊天視窗側窗格的位置" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 msgid "The stored position (in pixels) of the chat window side pane." msgstr "聊天視窗側窗格的儲存位置 (單位為像素)。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "The theme that is used to display the conversation in chat windows." msgstr "用來顯示在聊天視窗中談話的佈景主題。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "" "The theme variant that is used to display the conversation in chat windows." msgstr "用來在聊天視窗顯示談話的佈景主題樣式。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "Use graphical smileys" msgstr "使用圖片式表情符號" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "Use notification sounds" msgstr "使用通知音效" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "Use theme for chat rooms" msgstr "在聊天室使用佈景主題" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "Empathy 是否要將使用者的位置發布給他的連絡人。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "Whether Empathy can use the GPS to guess the location." msgstr "Empathy 是否使用 GPS 來推測位置。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "Empathy 是否使用行動電話網路來推測位置。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "Whether Empathy can use the network to guess the location." msgstr "Empathy 是否使用網路來推測位置。" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 -msgid "Whether Empathy has migrated butterfly logs." -msgstr "Empathy 是否應轉移 butterfly 日誌。" - #: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "Empathy 是否應在啟動時自動登入您的帳號。" @@ -473,23 +473,23 @@ msgstr "管理訊息與 VoIP 帳號" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2324 +#: ../src/empathy-accounts-dialog.c:2312 msgid "Messaging and VoIP Accounts" msgstr "訊息與 VoIP 帳號" -#: ../libempathy/empathy-ft-handler.c:825 +#: ../libempathy/empathy-ft-handler.c:838 msgid "File transfer completed, but the file was corrupted" msgstr "檔案傳輸完畢,但是檔案已損毀" -#: ../libempathy/empathy-ft-handler.c:1111 +#: ../libempathy/empathy-ft-handler.c:1124 msgid "File transfer not supported by remote contact" msgstr "遠端連絡人不支援檔案傳輸" -#: ../libempathy/empathy-ft-handler.c:1167 +#: ../libempathy/empathy-ft-handler.c:1180 msgid "The selected file is not a regular file" msgstr "選取的檔案不是正規的檔案" -#: ../libempathy/empathy-ft-handler.c:1176 +#: ../libempathy/empathy-ft-handler.c:1189 msgid "The selected file is empty" msgstr "選取的檔案是空白的" @@ -509,35 +509,35 @@ msgstr "已播打 %s" msgid "Call from %s" msgstr "%s 的來電" -#: ../libempathy/empathy-tp-file.c:268 +#: ../libempathy/empathy-tp-file.c:258 msgid "Socket type not supported" msgstr "Socket 類型不支援" -#: ../libempathy/empathy-tp-file.c:387 +#: ../libempathy/empathy-tp-file.c:377 msgid "No reason was specified" msgstr "沒有指定原因" -#: ../libempathy/empathy-tp-file.c:390 +#: ../libempathy/empathy-tp-file.c:380 msgid "The change in state was requested" msgstr "已要求變更狀態" -#: ../libempathy/empathy-tp-file.c:393 +#: ../libempathy/empathy-tp-file.c:383 msgid "You canceled the file transfer" msgstr "您已取消檔案傳輸" -#: ../libempathy/empathy-tp-file.c:396 +#: ../libempathy/empathy-tp-file.c:386 msgid "The other participant canceled the file transfer" msgstr "其他的參與者取消了檔案傳輸" -#: ../libempathy/empathy-tp-file.c:399 +#: ../libempathy/empathy-tp-file.c:389 msgid "Error while trying to transfer the file" msgstr "嘗試傳輸檔案時發生錯誤" -#: ../libempathy/empathy-tp-file.c:402 +#: ../libempathy/empathy-tp-file.c:392 msgid "The other participant is unable to transfer the file" msgstr "其他的參與者無法傳輸該檔案" -#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:312 +#: ../libempathy/empathy-tp-file.c:395 ../libempathy/empathy-utils.c:312 msgid "Unknown reason" msgstr "不明原因" @@ -577,6 +577,7 @@ msgstr "狀態設為離線" #: ../libempathy/empathy-utils.c:288 ../libempathy/empathy-utils.c:322 #: ../libempathy-gtk/empathy-call-utils.c:49 +#: ../libempathy-gtk/empathy-new-message-dialog.c:82 msgid "Network error" msgstr "網路錯誤" @@ -676,20 +677,23 @@ msgid "" "chain, exceed the limits imposed by the cryptography library" msgstr "伺服器憑證的長度,或是伺服器憑證鏈的深度超過密碼函式庫所能處理的範圍" -#: ../libempathy/empathy-utils.c:529 -#: ../libempathy-gtk/empathy-contact-list-store.h:73 +#: ../libempathy/empathy-utils.c:372 +msgid "Your software is too old" +msgstr "您的軟體過舊" + +#: ../libempathy/empathy-utils.c:531 msgid "People Nearby" msgstr "附近的人" -#: ../libempathy/empathy-utils.c:534 +#: ../libempathy/empathy-utils.c:536 msgid "Yahoo! Japan" msgstr "Yahoo! 日本" -#: ../libempathy/empathy-utils.c:563 +#: ../libempathy/empathy-utils.c:565 msgid "Google Talk" msgstr "Google Talk" -#: ../libempathy/empathy-utils.c:564 +#: ../libempathy/empathy-utils.c:566 msgid "Facebook Chat" msgstr "Facebook 聊天" @@ -733,7 +737,7 @@ msgstr[0] "%d 個月以前" msgid "in the future" msgstr "未來" -#: ../libempathy-gtk/empathy-account-chooser.c:540 +#: ../libempathy-gtk/empathy-account-chooser.c:688 msgid "All accounts" msgstr "所有帳號" @@ -756,58 +760,58 @@ msgstr "伺服器" msgid "Port" msgstr "連接埠" -#: ../libempathy-gtk/empathy-account-widget.c:769 -#: ../libempathy-gtk/empathy-account-widget.c:826 +#: ../libempathy-gtk/empathy-account-widget.c:776 +#: ../libempathy-gtk/empathy-account-widget.c:828 #, c-format msgid "%s:" msgstr "%s:" -#: ../libempathy-gtk/empathy-account-widget.c:1192 +#: ../libempathy-gtk/empathy-account-widget.c:1182 msgid "My Web Accounts" msgstr "我的網路帳號" -#: ../libempathy-gtk/empathy-account-widget.c:1208 +#: ../libempathy-gtk/empathy-account-widget.c:1199 #, c-format msgid "The account %s is edited via %s." msgstr "%s 帳號已透過 %s 修改。" -#: ../libempathy-gtk/empathy-account-widget.c:1214 +#: ../libempathy-gtk/empathy-account-widget.c:1205 #, c-format msgid "The account %s cannot be edited in Empathy." msgstr "%s 帳號無法於 Empathy 內修改。" -#: ../libempathy-gtk/empathy-account-widget.c:1233 +#: ../libempathy-gtk/empathy-account-widget.c:1224 msgid "Launch My Web Accounts" msgstr "啟動我的網路帳號" #. general handler -#: ../libempathy-gtk/empathy-account-widget.c:1241 +#: ../libempathy-gtk/empathy-account-widget.c:1232 #, c-format msgid "Edit %s" msgstr "編輯 %s" -#: ../libempathy-gtk/empathy-account-widget.c:1591 +#: ../libempathy-gtk/empathy-account-widget.c:1582 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11 msgid "Username:" msgstr "使用者名稱:" -#: ../libempathy-gtk/empathy-account-widget.c:1909 +#: ../libempathy-gtk/empathy-account-widget.c:1900 msgid "A_pply" msgstr "套用(_A)" -#: ../libempathy-gtk/empathy-account-widget.c:1939 +#: ../libempathy-gtk/empathy-account-widget.c:1930 msgid "L_og in" msgstr "登入(_O)" -#: ../libempathy-gtk/empathy-account-widget.c:2013 +#: ../libempathy-gtk/empathy-account-widget.c:2004 msgid "This account already exists on the server" msgstr "此帳號已經存在這個伺服器上" -#: ../libempathy-gtk/empathy-account-widget.c:2016 +#: ../libempathy-gtk/empathy-account-widget.c:2007 msgid "Create a new account on the server" msgstr "在這個伺服器上建立新的帳號" -#: ../libempathy-gtk/empathy-account-widget.c:2208 +#: ../libempathy-gtk/empathy-account-widget.c:2199 msgid "Ca_ncel" msgstr "取消(_N)" @@ -816,19 +820,19 @@ msgstr "取消(_N)" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2486 +#: ../libempathy-gtk/empathy-account-widget.c:2477 #, c-format msgid "%1$s on %2$s" msgstr "%2$s 上的 %1$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2512 +#: ../libempathy-gtk/empathy-account-widget.c:2503 #, c-format msgid "%s Account" msgstr "%s 帳號" -#: ../libempathy-gtk/empathy-account-widget.c:2516 +#: ../libempathy-gtk/empathy-account-widget.c:2507 msgid "New account" msgstr "新增帳號" @@ -1199,7 +1203,7 @@ msgid "STUN Server:" msgstr "STUN 伺服器:" #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19 -#: ../libempathy-gtk/empathy-contact-widget.c:347 +#: ../libempathy-gtk/empathy-contactinfo-utils.c:112 msgid "Server:" msgstr "伺服器:" @@ -1281,7 +1285,7 @@ msgid "Click to enlarge" msgstr "請按這裡放大" #: ../libempathy-gtk/empathy-call-utils.c:44 -#: ../libempathy-gtk/empathy-call-utils.c:60 +#: ../libempathy-gtk/empathy-call-utils.c:62 msgid "There was an error starting the call" msgstr "啟動通話時發生錯誤" @@ -1301,62 +1305,66 @@ msgstr "指定的聯絡人無效" msgid "Emergency calls are not supported on this protocol" msgstr "此協定不支援緊急通話功能" -#: ../libempathy-gtk/empathy-chat.c:704 +#: ../libempathy-gtk/empathy-call-utils.c:59 +msgid "You don't have enough credit in order to place this call" +msgstr "您的存額不足以買下該通話。" + +#: ../libempathy-gtk/empathy-chat.c:706 msgid "Failed to open private chat" msgstr "開啟私人聊天失敗" -#: ../libempathy-gtk/empathy-chat.c:765 +#: ../libempathy-gtk/empathy-chat.c:764 msgid "Topic not supported on this conversation" msgstr "此談話的主題不被支援" -#: ../libempathy-gtk/empathy-chat.c:771 +#: ../libempathy-gtk/empathy-chat.c:770 msgid "You are not allowed to change the topic" msgstr "您不被允許變更這個主題" -#: ../libempathy-gtk/empathy-chat.c:975 +#: ../libempathy-gtk/empathy-chat.c:971 #, c-format msgid "“%s” is not a valid contact ID" msgstr "「%s」不是有效的連絡人 ID" -#: ../libempathy-gtk/empathy-chat.c:1060 +#: ../libempathy-gtk/empathy-chat.c:1066 msgid "/clear: clear all messages from the current conversation" msgstr "/clear:清除目前談話的所有訊息" -#: ../libempathy-gtk/empathy-chat.c:1063 +#: ../libempathy-gtk/empathy-chat.c:1069 msgid "/topic : set the topic of the current conversation" msgstr "/topic <主題>:設置目前談話的主題" -#: ../libempathy-gtk/empathy-chat.c:1066 +#: ../libempathy-gtk/empathy-chat.c:1072 msgid "/join : join a new chat room" msgstr "/join <聊天室 ID>:參加新的聊天室" -#: ../libempathy-gtk/empathy-chat.c:1069 +#: ../libempathy-gtk/empathy-chat.c:1075 msgid "/j : join a new chat room" msgstr "/j <聊天室 ID>:參加新的聊天室" -#: ../libempathy-gtk/empathy-chat.c:1073 +#: ../libempathy-gtk/empathy-chat.c:1079 msgid "" "/part [] []: leave the chat room, by default the " "current one" msgstr "/part [<聊天室 ID>] [<原因>]:離開聊天室,預設為目前的聊天室" -#: ../libempathy-gtk/empathy-chat.c:1077 +#: ../libempathy-gtk/empathy-chat.c:1083 msgid "/query []: open a private chat" msgstr "/query <聯絡人 ID> [<訊息>]:開啟私人聊天" -#: ../libempathy-gtk/empathy-chat.c:1080 +#: ../libempathy-gtk/empathy-chat.c:1086 msgid "/msg : open a private chat" msgstr "/msg <聯絡人 ID> <訊息>:開啟私人聊天" -#: ../libempathy-gtk/empathy-chat.c:1083 +#: ../libempathy-gtk/empathy-chat.c:1089 msgid "/nick : change your nickname on the current server" msgstr "/nick <暱稱>:變更在目前伺服器上的您的暱稱" -#: ../libempathy-gtk/empathy-chat.c:1086 +#: ../libempathy-gtk/empathy-chat.c:1092 msgid "/me : send an ACTION message to the current conversation" msgstr "/me <訊息>:送出一個 ACTION 訊息到目前的談話中" -#: ../libempathy-gtk/empathy-chat.c:1089 +#: ../libempathy-gtk/empathy-chat.c:1095 msgid "" "/say : send to the current conversation. This is used to " "send a message starting with a '/'. For example: \"/say /join is used to " @@ -1365,11 +1373,11 @@ msgstr "" "/say <訊息>:送出 <訊息> 到目前的談話中。這用於傳送以「/」開頭的訊息。舉例來" "說:「/say /join 是用來參加新的聊天室」" -#: ../libempathy-gtk/empathy-chat.c:1094 +#: ../libempathy-gtk/empathy-chat.c:1100 msgid "/whois : display information about a contact" msgstr "/whois <聯絡人 ID>:顯示聯絡人的相關資訊" -#: ../libempathy-gtk/empathy-chat.c:1097 +#: ../libempathy-gtk/empathy-chat.c:1103 msgid "" "/help []: show all supported commands. If is defined, " "show its usage." @@ -1377,113 +1385,120 @@ msgstr "" "/help [<命令>]:顯示所有支援的指令。如果有定義這個 <命令> 的話,便顯示它的用" "法。" -#: ../libempathy-gtk/empathy-chat.c:1114 +#: ../libempathy-gtk/empathy-chat.c:1122 #, c-format msgid "Usage: %s" msgstr "用法:%s" -#: ../libempathy-gtk/empathy-chat.c:1159 +#: ../libempathy-gtk/empathy-chat.c:1167 msgid "Unknown command" msgstr "未知的命令" -#: ../libempathy-gtk/empathy-chat.c:1285 +#: ../libempathy-gtk/empathy-chat.c:1293 msgid "Unknown command; see /help for the available commands" msgstr "未知的指令;請參見 /help 以取得可用的指令" -#. translators: error used when user doesn't have enough credit on his -#. * account to send the message. -#: ../libempathy-gtk/empathy-chat.c:1455 +#: ../libempathy-gtk/empathy-chat.c:1457 msgid "insufficient balance to send message" msgstr "餘額不足以傳送訊息" -#: ../libempathy-gtk/empathy-chat.c:1457 +#: ../libempathy-gtk/empathy-chat.c:1461 ../libempathy-gtk/empathy-chat.c:1475 +#: ../libempathy-gtk/empathy-chat.c:1538 +#, c-format +msgid "Error sending message '%s': %s" +msgstr "傳送訊息「%s」時發生錯誤:%s" + +#: ../libempathy-gtk/empathy-chat.c:1463 ../libempathy-gtk/empathy-chat.c:1480 +#: ../libempathy-gtk/empathy-chat.c:1542 +#, c-format +msgid "Error sending message: %s" +msgstr "傳送訊息時發生錯誤:%s" + +#. translators: error used when user doesn't have enough credit on his +#. * account to send the message. +#: ../libempathy-gtk/empathy-chat.c:1469 +#, c-format +msgid "insufficient balance to send message. Top up." +msgstr "餘額不足以傳送訊息。加值。" + +#: ../libempathy-gtk/empathy-chat.c:1509 msgid "not capable" msgstr "無法" -#: ../libempathy-gtk/empathy-chat.c:1464 +#: ../libempathy-gtk/empathy-chat.c:1516 msgid "offline" msgstr "離線" -#: ../libempathy-gtk/empathy-chat.c:1467 +#: ../libempathy-gtk/empathy-chat.c:1519 msgid "invalid contact" msgstr "無效的連絡人" -#: ../libempathy-gtk/empathy-chat.c:1470 +#: ../libempathy-gtk/empathy-chat.c:1522 msgid "permission denied" msgstr "權限被拒絕" -#: ../libempathy-gtk/empathy-chat.c:1473 +#: ../libempathy-gtk/empathy-chat.c:1525 msgid "too long message" msgstr "太長的訊息" -#: ../libempathy-gtk/empathy-chat.c:1476 +#: ../libempathy-gtk/empathy-chat.c:1528 msgid "not implemented" msgstr "未實作" -#: ../libempathy-gtk/empathy-chat.c:1480 +#: ../libempathy-gtk/empathy-chat.c:1532 msgid "unknown" msgstr "不明" -#: ../libempathy-gtk/empathy-chat.c:1486 -#, c-format -msgid "Error sending message '%s': %s" -msgstr "傳送訊息「%s」時發生錯誤:%s" - -#: ../libempathy-gtk/empathy-chat.c:1490 -#, c-format -msgid "Error sending message: %s" -msgstr "傳送訊息時發生錯誤:%s" - -#: ../libempathy-gtk/empathy-chat.c:1551 ../src/empathy-chat-window.c:761 +#: ../libempathy-gtk/empathy-chat.c:1599 ../src/empathy-chat-window.c:761 msgid "Topic:" msgstr "主題:" -#: ../libempathy-gtk/empathy-chat.c:1563 +#: ../libempathy-gtk/empathy-chat.c:1611 #, c-format msgid "Topic set to: %s" msgstr "主題設定為: %s" -#: ../libempathy-gtk/empathy-chat.c:1565 +#: ../libempathy-gtk/empathy-chat.c:1613 msgid "No topic defined" msgstr "尚未定義主題" -#: ../libempathy-gtk/empathy-chat.c:2074 +#: ../libempathy-gtk/empathy-chat.c:2126 msgid "(No Suggestions)" msgstr "(沒有建議)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:2142 +#: ../libempathy-gtk/empathy-chat.c:2194 #, c-format msgid "Add '%s' to Dictionary" msgstr "加入「%s」至字典" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:2179 +#: ../libempathy-gtk/empathy-chat.c:2231 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "加入「%s」至 %s 字典" -#: ../libempathy-gtk/empathy-chat.c:2249 +#: ../libempathy-gtk/empathy-chat.c:2301 msgid "Insert Smiley" msgstr "插入表情符號" #. send button -#: ../libempathy-gtk/empathy-chat.c:2267 -#: ../libempathy-gtk/empathy-ui-utils.c:1839 +#: ../libempathy-gtk/empathy-chat.c:2319 +#: ../libempathy-gtk/empathy-ui-utils.c:1867 msgid "_Send" msgstr "傳送(_S)" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2321 +#: ../libempathy-gtk/empathy-chat.c:2376 msgid "_Spelling Suggestions" msgstr "拼字建議(_S)" -#: ../libempathy-gtk/empathy-chat.c:2410 +#: ../libempathy-gtk/empathy-chat.c:2465 msgid "Failed to retrieve recent logs" msgstr "無法取得最近的日誌" -#: ../libempathy-gtk/empathy-chat.c:2547 +#: ../libempathy-gtk/empathy-chat.c:2602 #, c-format msgid "%s has disconnected" msgstr "%s 已斷線" @@ -1491,12 +1506,12 @@ msgstr "%s 已斷線" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2554 +#: ../libempathy-gtk/empathy-chat.c:2609 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%1$s 被 %2$s 踢出去" -#: ../libempathy-gtk/empathy-chat.c:2557 +#: ../libempathy-gtk/empathy-chat.c:2612 #, c-format msgid "%s was kicked" msgstr "%s 被踢出" @@ -1504,17 +1519,17 @@ msgstr "%s 被踢出" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2565 +#: ../libempathy-gtk/empathy-chat.c:2620 #, c-format msgid "%1$s was banned by %2$s" msgstr "%1$s 被 %2$s 設為黑名單" -#: ../libempathy-gtk/empathy-chat.c:2568 +#: ../libempathy-gtk/empathy-chat.c:2623 #, c-format msgid "%s was banned" msgstr "%s 被設為黑名單" -#: ../libempathy-gtk/empathy-chat.c:2572 +#: ../libempathy-gtk/empathy-chat.c:2627 #, c-format msgid "%s has left the room" msgstr "%s 已經離開此聊天室" @@ -1524,17 +1539,17 @@ msgstr "%s 已經離開此聊天室" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2581 +#: ../libempathy-gtk/empathy-chat.c:2636 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2606 +#: ../libempathy-gtk/empathy-chat.c:2661 #, c-format msgid "%s has joined the room" msgstr "%s 已經參加此聊天室" -#: ../libempathy-gtk/empathy-chat.c:2631 +#: ../libempathy-gtk/empathy-chat.c:2686 #, c-format msgid "%s is now known as %s" msgstr "%s 現在被稱為 %s" @@ -1542,88 +1557,87 @@ msgstr "%s 現在被稱為 %s" #. We don't know if the incoming call has been accepted or not, so we #. * assume it hasn't and if it has, we'll set the proper status when #. * we get the new handler. -#: ../libempathy-gtk/empathy-chat.c:2784 -#: ../src/empathy-streamed-media-window.c:1894 -#: ../src/empathy-event-manager.c:1240 ../src/empathy-call-window.c:1432 -#: ../src/empathy-call-window.c:1482 ../src/empathy-call-window.c:2527 +#: ../libempathy-gtk/empathy-chat.c:2839 +#: ../src/empathy-streamed-media-window.c:1886 +#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1539 +#: ../src/empathy-call-window.c:1589 ../src/empathy-call-window.c:2635 msgid "Disconnected" msgstr "已斷線" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3428 +#: ../libempathy-gtk/empathy-chat.c:3485 msgid "Would you like to store this password?" msgstr "您想要儲存此密碼?" -#: ../libempathy-gtk/empathy-chat.c:3434 +#: ../libempathy-gtk/empathy-chat.c:3491 msgid "Remember" msgstr "記住" -#: ../libempathy-gtk/empathy-chat.c:3444 +#: ../libempathy-gtk/empathy-chat.c:3501 msgid "Not now" msgstr "現在不要" -#: ../libempathy-gtk/empathy-chat.c:3488 +#: ../libempathy-gtk/empathy-chat.c:3545 msgid "Retry" msgstr "重試" -#: ../libempathy-gtk/empathy-chat.c:3492 +#: ../libempathy-gtk/empathy-chat.c:3549 msgid "Wrong password; please try again:" msgstr "密碼錯誤;請再試一次:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3622 +#: ../libempathy-gtk/empathy-chat.c:3679 msgid "This room is protected by a password:" msgstr "此聊天室已被密碼保護:" -#: ../libempathy-gtk/empathy-chat.c:3649 +#: ../libempathy-gtk/empathy-chat.c:3706 msgid "Join" msgstr "參加" -#: ../libempathy-gtk/empathy-chat.c:3851 ../src/empathy-event-manager.c:1261 +#: ../libempathy-gtk/empathy-chat.c:3894 ../src/empathy-event-manager.c:1281 msgid "Connected" msgstr "成功連線" -#: ../libempathy-gtk/empathy-chat.c:3906 +#: ../libempathy-gtk/empathy-chat.c:3949 msgid "Conversation" msgstr "談話" #. Translators: this string is a something like #. * "Escher Cat (SMS)" -#: ../libempathy-gtk/empathy-chat.c:3911 +#: ../libempathy-gtk/empathy-chat.c:3954 #, c-format msgid "%s (SMS)" msgstr "%s (SMS)" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265 msgid "Unknown or invalid identifier" msgstr "未知或無效的識別身分" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267 msgid "Contact blocking temporarily unavailable" msgstr "聯絡人封鎖暫時無法使用" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269 msgid "Contact blocking unavailable" msgstr "聯絡人封鎖無法使用" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271 msgid "Permission Denied" msgstr "已拒絕授權" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275 msgid "Could not block contact" msgstr "無法封鎖聯絡人" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:774 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622 msgid "Edit Blocked Contacts" msgstr "編輯封鎖的聯絡人" #. Account and Identifier #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:512 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:506 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2 -#: ../libempathy-gtk/empathy-individual-widget.c:1489 -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 +#: ../libempathy-gtk/empathy-individual-widget.c:1441 #: ../src/empathy-chatrooms-window.ui.h:1 #: ../src/empathy-new-chatroom-dialog.ui.h:1 msgid "Account:" @@ -1641,56 +1655,56 @@ msgid "Remove" msgstr "移除" #. Copy Link Address menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:320 +#: ../libempathy-gtk/empathy-chat-text-view.c:322 #: ../libempathy-gtk/empathy-webkit-utils.c:277 msgid "_Copy Link Address" msgstr "複製連結位址(_C)" #. Open Link menu item -#: ../libempathy-gtk/empathy-chat-text-view.c:327 +#: ../libempathy-gtk/empathy-chat-text-view.c:329 #: ../libempathy-gtk/empathy-webkit-utils.c:284 msgid "_Open Link" msgstr "開啟連結(_O)" #. Translators: timestamp displayed between conversations in #. * chat windows (strftime format string) -#: ../libempathy-gtk/empathy-chat-text-view.c:415 +#: ../libempathy-gtk/empathy-chat-text-view.c:417 msgid "%A %B %d %Y" msgstr "%Y %B %d %A" -#: ../libempathy-gtk/empathy-contact-dialogs.c:299 +#: ../libempathy-gtk/empathy-contact-dialogs.c:287 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247 msgid "Edit Contact Information" msgstr "編輯連絡人資訊" -#: ../libempathy-gtk/empathy-contact-dialogs.c:350 +#: ../libempathy-gtk/empathy-contact-dialogs.c:338 msgid "Personal Information" msgstr "個人資訊" -#: ../libempathy-gtk/empathy-contact-dialogs.c:459 +#: ../libempathy-gtk/empathy-contact-dialogs.c:439 #: ../libempathy-gtk/empathy-individual-dialogs.c:119 msgid "New Contact" msgstr "新增連絡人" -#: ../libempathy-gtk/empathy-contact-dialogs.c:533 -#: ../libempathy-gtk/empathy-individual-dialogs.c:200 +#: ../libempathy-gtk/empathy-contact-dialogs.c:508 +#: ../libempathy-gtk/empathy-individual-dialogs.c:198 #, c-format msgid "Block %s?" msgstr "封鎖 %s?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:538 -#: ../libempathy-gtk/empathy-individual-dialogs.c:255 +#: ../libempathy-gtk/empathy-contact-dialogs.c:513 +#: ../libempathy-gtk/empathy-individual-dialogs.c:253 #, c-format msgid "Are you sure you want to block '%s' from contacting you again?" msgstr "您確定想要封鎖「%s」讓他無法再與您聯絡嗎?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:543 -#: ../libempathy-gtk/empathy-individual-dialogs.c:277 +#: ../libempathy-gtk/empathy-contact-dialogs.c:518 +#: ../libempathy-gtk/empathy-individual-dialogs.c:275 msgid "_Block" msgstr "封鎖(_B)" -#: ../libempathy-gtk/empathy-contact-dialogs.c:559 -#: ../libempathy-gtk/empathy-individual-dialogs.c:286 +#: ../libempathy-gtk/empathy-contact-dialogs.c:536 +#: ../libempathy-gtk/empathy-individual-dialogs.c:284 msgid "_Report this contact as abusive" msgid_plural "_Report these contacts as abusive" msgstr[0] "回報這些聯絡人濫用帳號(_R)" @@ -1707,349 +1721,359 @@ msgstr "訂閱要求" msgid "_Block User" msgstr "封鎖使用者(_B)" -#: ../libempathy-gtk/empathy-contact-list-store.h:71 -msgid "Ungrouped" -msgstr "未群組" - -#: ../libempathy-gtk/empathy-contact-list-store.h:72 -msgid "Favorite People" -msgstr "喜好的人" - -#: ../libempathy-gtk/empathy-contact-list-view.c:1986 -#: ../libempathy-gtk/empathy-individual-view.c:2376 +#: ../libempathy-gtk/empathy-contact-list-view.c:1935 +#: ../libempathy-gtk/empathy-individual-view.c:2375 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "是否想要移除群組「%s」?" -#: ../libempathy-gtk/empathy-contact-list-view.c:1988 -#: ../libempathy-gtk/empathy-individual-view.c:2379 +#: ../libempathy-gtk/empathy-contact-list-view.c:1937 +#: ../libempathy-gtk/empathy-individual-view.c:2378 msgid "Removing group" msgstr "正在移除群組" #. Remove -#: ../libempathy-gtk/empathy-contact-list-view.c:2037 -#: ../libempathy-gtk/empathy-contact-list-view.c:2114 -#: ../libempathy-gtk/empathy-individual-view.c:2434 -#: ../libempathy-gtk/empathy-individual-view.c:2637 +#: ../libempathy-gtk/empathy-contact-list-view.c:1986 +#: ../libempathy-gtk/empathy-contact-list-view.c:2059 +#: ../libempathy-gtk/empathy-individual-view.c:2433 +#: ../libempathy-gtk/empathy-individual-view.c:2636 msgid "_Remove" msgstr "移除(_R)" -#: ../libempathy-gtk/empathy-contact-list-view.c:2067 -#: ../libempathy-gtk/empathy-individual-view.c:2501 +#: ../libempathy-gtk/empathy-contact-list-view.c:2015 +#: ../libempathy-gtk/empathy-individual-view.c:2500 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "是否想要移除連絡人「%s」?" -#: ../libempathy-gtk/empathy-contact-list-view.c:2069 -#: ../libempathy-gtk/empathy-individual-view.c:2522 +#: ../libempathy-gtk/empathy-contact-list-view.c:2017 +#: ../libempathy-gtk/empathy-individual-view.c:2521 msgid "Removing contact" msgstr "正在移除連絡人" -#: ../libempathy-gtk/empathy-contact-menu.c:220 +#: ../libempathy-gtk/empathy-contact-menu.c:212 #: ../src/empathy-main-window-menubar.ui.h:14 msgid "_Add Contact…" msgstr "加入聯絡人(_A)…" -#: ../libempathy-gtk/empathy-contact-menu.c:300 +#: ../libempathy-gtk/empathy-contact-menu.c:287 msgid "_Block Contact" msgstr "封鎖聯絡人(_B)" -#: ../libempathy-gtk/empathy-contact-menu.c:329 +#. add chat button +#: ../libempathy-gtk/empathy-contact-menu.c:316 #: ../libempathy-gtk/empathy-individual-menu.c:758 +#: ../libempathy-gtk/empathy-new-message-dialog.c:320 #: ../src/empathy-main-window-menubar.ui.h:16 msgid "_Chat" msgstr "聊天(_C)" -#: ../libempathy-gtk/empathy-contact-menu.c:361 -#: ../libempathy-gtk/empathy-individual-menu.c:849 +#: ../libempathy-gtk/empathy-contact-menu.c:348 +#: ../libempathy-gtk/empathy-individual-menu.c:850 msgctxt "menu item" msgid "_Audio Call" msgstr "語音通話(_A)" -#: ../libempathy-gtk/empathy-contact-menu.c:394 -#: ../libempathy-gtk/empathy-individual-menu.c:894 +#: ../libempathy-gtk/empathy-contact-menu.c:381 +#: ../libempathy-gtk/empathy-individual-menu.c:895 msgctxt "menu item" msgid "_Video Call" msgstr "視訊通話(_V)" -#: ../libempathy-gtk/empathy-contact-menu.c:440 -#: ../libempathy-gtk/empathy-individual-menu.c:947 +#: ../libempathy-gtk/empathy-contact-menu.c:427 +#: ../libempathy-gtk/empathy-individual-menu.c:948 #: ../src/empathy-main-window-menubar.ui.h:27 msgid "_Previous Conversations" msgstr "過往談話(_P)" -#: ../libempathy-gtk/empathy-contact-menu.c:462 -#: ../libempathy-gtk/empathy-individual-menu.c:988 +#: ../libempathy-gtk/empathy-contact-menu.c:449 +#: ../libempathy-gtk/empathy-individual-menu.c:989 msgid "Send File" msgstr "傳送檔案" -#: ../libempathy-gtk/empathy-contact-menu.c:485 -#: ../libempathy-gtk/empathy-individual-menu.c:1030 +#: ../libempathy-gtk/empathy-contact-menu.c:472 +#: ../libempathy-gtk/empathy-individual-menu.c:1031 msgid "Share My Desktop" msgstr "分享我的桌面" -#: ../libempathy-gtk/empathy-contact-menu.c:525 -#: ../libempathy-gtk/empathy-contact-widget.c:1886 -#: ../libempathy-gtk/empathy-individual-menu.c:1065 -#: ../libempathy-gtk/empathy-individual-widget.c:1372 -msgid "Favorite" -msgstr "喜好" - -#: ../libempathy-gtk/empathy-contact-menu.c:554 -#: ../libempathy-gtk/empathy-individual-menu.c:1093 +#: ../libempathy-gtk/empathy-contact-menu.c:501 +#: ../libempathy-gtk/empathy-individual-menu.c:1094 msgid "Infor_mation" msgstr "資訊(_M)" -#: ../libempathy-gtk/empathy-contact-menu.c:600 +#: ../libempathy-gtk/empathy-contact-menu.c:547 msgctxt "Edit contact (contextual menu)" msgid "_Edit" msgstr "編輯(_E)" -#: ../libempathy-gtk/empathy-contact-menu.c:654 -#: ../libempathy-gtk/empathy-individual-menu.c:1284 +#: ../libempathy-gtk/empathy-contact-menu.c:601 +#: ../libempathy-gtk/empathy-individual-menu.c:1285 #: ../src/empathy-chat-window.c:1011 msgid "Inviting you to this room" msgstr "邀請您到這個聊天室" -#: ../libempathy-gtk/empathy-contact-menu.c:685 -#: ../libempathy-gtk/empathy-individual-menu.c:1330 +#: ../libempathy-gtk/empathy-contact-menu.c:632 +#: ../libempathy-gtk/empathy-individual-menu.c:1331 msgid "_Invite to Chat Room" msgstr "邀請到聊天室(_I)" #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:505 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:499 msgid "Search contacts" msgstr "搜尋連絡人" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:535 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:529 msgid "Search: " msgstr "搜尋:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:593 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:587 msgid "_Add Contact" msgstr "加入聯絡人(_A)" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:611 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:605 msgid "No contacts found" msgstr "找不到聯絡人" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:627 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:621 msgid "Your message introducing yourself:" msgstr "您的訊息" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:635 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:629 msgid "Please let me see when you're online. Thanks!" msgstr "當您上線時請讓我知道。感謝!" -#: ../libempathy-gtk/empathy-contact-selector.c:129 -msgid "Select a contact" -msgstr "選擇連絡人" - -#: ../libempathy-gtk/empathy-contact-widget.c:336 -#: ../libempathy-gtk/empathy-individual-widget.c:153 -msgid "Full name:" -msgstr "全名:" - -#: ../libempathy-gtk/empathy-contact-widget.c:337 -#: ../libempathy-gtk/empathy-individual-widget.c:154 -msgid "Phone number:" -msgstr "電話號碼:" - -#: ../libempathy-gtk/empathy-contact-widget.c:338 -#: ../libempathy-gtk/empathy-individual-widget.c:155 -msgid "E-mail address:" -msgstr "電子信箱位址:" - -#: ../libempathy-gtk/empathy-contact-widget.c:339 -#: ../libempathy-gtk/empathy-individual-widget.c:156 -msgid "Website:" -msgstr "網站:" - -#: ../libempathy-gtk/empathy-contact-widget.c:340 -#: ../libempathy-gtk/empathy-individual-widget.c:157 -msgid "Birthday:" -msgstr "生日:" - -#. Note to translators: this is the caption for a string of the form "5 -#. * minutes ago", and refers to the time since the contact last interacted -#. * with their IM client. -#. -#: ../libempathy-gtk/empathy-contact-widget.c:346 -msgid "Last seen:" -msgstr "上次看見:" - -#: ../libempathy-gtk/empathy-contact-widget.c:348 -msgid "Connected from:" -msgstr "已連接從:" - -#. FIXME: once Idle implements SimplePresence using this information, we can -#. * and should bin this. -#. -#: ../libempathy-gtk/empathy-contact-widget.c:353 -msgid "Away message:" -msgstr "離開訊息:" - -#: ../libempathy-gtk/empathy-contact-widget.c:606 +#: ../libempathy-gtk/empathy-contact-widget.c:504 msgid "Channels:" msgstr "頻道:" -#: ../libempathy-gtk/empathy-contact-widget.c:897 -#: ../libempathy-gtk/empathy-individual-widget.c:469 +#: ../libempathy-gtk/empathy-contact-widget.c:799 +#: ../libempathy-gtk/empathy-individual-widget.c:421 msgid "Country ISO Code:" msgstr "國家 ISO 碼:" -#: ../libempathy-gtk/empathy-contact-widget.c:899 -#: ../libempathy-gtk/empathy-individual-widget.c:471 +#: ../libempathy-gtk/empathy-contact-widget.c:801 +#: ../libempathy-gtk/empathy-individual-widget.c:423 msgid "Country:" msgstr "國家:" -#: ../libempathy-gtk/empathy-contact-widget.c:901 -#: ../libempathy-gtk/empathy-individual-widget.c:473 +#: ../libempathy-gtk/empathy-contact-widget.c:803 +#: ../libempathy-gtk/empathy-individual-widget.c:425 msgid "State:" msgstr "州:" -#: ../libempathy-gtk/empathy-contact-widget.c:903 -#: ../libempathy-gtk/empathy-individual-widget.c:475 +#: ../libempathy-gtk/empathy-contact-widget.c:805 +#: ../libempathy-gtk/empathy-individual-widget.c:427 msgid "City:" msgstr "市:" -#: ../libempathy-gtk/empathy-contact-widget.c:905 -#: ../libempathy-gtk/empathy-individual-widget.c:477 +#: ../libempathy-gtk/empathy-contact-widget.c:807 +#: ../libempathy-gtk/empathy-individual-widget.c:429 msgid "Area:" msgstr "區域:" -#: ../libempathy-gtk/empathy-contact-widget.c:907 -#: ../libempathy-gtk/empathy-individual-widget.c:479 +#: ../libempathy-gtk/empathy-contact-widget.c:809 +#: ../libempathy-gtk/empathy-individual-widget.c:431 msgid "Postal Code:" msgstr "郵遞區號:" -#: ../libempathy-gtk/empathy-contact-widget.c:909 -#: ../libempathy-gtk/empathy-individual-widget.c:481 +#: ../libempathy-gtk/empathy-contact-widget.c:811 +#: ../libempathy-gtk/empathy-individual-widget.c:433 msgid "Street:" msgstr "街:" -#: ../libempathy-gtk/empathy-contact-widget.c:911 -#: ../libempathy-gtk/empathy-individual-widget.c:483 +#: ../libempathy-gtk/empathy-contact-widget.c:813 +#: ../libempathy-gtk/empathy-individual-widget.c:435 msgid "Building:" msgstr "建築:" -#: ../libempathy-gtk/empathy-contact-widget.c:913 -#: ../libempathy-gtk/empathy-individual-widget.c:485 +#: ../libempathy-gtk/empathy-contact-widget.c:815 +#: ../libempathy-gtk/empathy-individual-widget.c:437 msgid "Floor:" msgstr "樓層:" -#: ../libempathy-gtk/empathy-contact-widget.c:915 -#: ../libempathy-gtk/empathy-individual-widget.c:487 +#: ../libempathy-gtk/empathy-contact-widget.c:817 +#: ../libempathy-gtk/empathy-individual-widget.c:439 msgid "Room:" msgstr "室:" -#: ../libempathy-gtk/empathy-contact-widget.c:917 -#: ../libempathy-gtk/empathy-individual-widget.c:489 +#: ../libempathy-gtk/empathy-contact-widget.c:819 +#: ../libempathy-gtk/empathy-individual-widget.c:441 msgid "Text:" msgstr "文字:" -#: ../libempathy-gtk/empathy-contact-widget.c:919 -#: ../libempathy-gtk/empathy-individual-widget.c:491 +#: ../libempathy-gtk/empathy-contact-widget.c:821 +#: ../libempathy-gtk/empathy-individual-widget.c:443 msgid "Description:" msgstr "描述:" -#: ../libempathy-gtk/empathy-contact-widget.c:921 -#: ../libempathy-gtk/empathy-individual-widget.c:493 +#: ../libempathy-gtk/empathy-contact-widget.c:823 +#: ../libempathy-gtk/empathy-individual-widget.c:445 msgid "URI:" msgstr "URI:" -#: ../libempathy-gtk/empathy-contact-widget.c:923 -#: ../libempathy-gtk/empathy-individual-widget.c:495 +#: ../libempathy-gtk/empathy-contact-widget.c:825 +#: ../libempathy-gtk/empathy-individual-widget.c:447 msgid "Accuracy Level:" msgstr "準確度等級:" -#: ../libempathy-gtk/empathy-contact-widget.c:925 -#: ../libempathy-gtk/empathy-individual-widget.c:497 +#: ../libempathy-gtk/empathy-contact-widget.c:827 +#: ../libempathy-gtk/empathy-individual-widget.c:449 msgid "Error:" msgstr "錯誤:" -#: ../libempathy-gtk/empathy-contact-widget.c:927 -#: ../libempathy-gtk/empathy-individual-widget.c:499 +#: ../libempathy-gtk/empathy-contact-widget.c:829 +#: ../libempathy-gtk/empathy-individual-widget.c:451 msgid "Vertical Error (meters):" msgstr "垂直誤差 (公尺):" -#: ../libempathy-gtk/empathy-contact-widget.c:929 -#: ../libempathy-gtk/empathy-individual-widget.c:501 +#: ../libempathy-gtk/empathy-contact-widget.c:831 +#: ../libempathy-gtk/empathy-individual-widget.c:453 msgid "Horizontal Error (meters):" msgstr "水平誤差 (公尺):" -#: ../libempathy-gtk/empathy-contact-widget.c:931 -#: ../libempathy-gtk/empathy-individual-widget.c:503 +#: ../libempathy-gtk/empathy-contact-widget.c:833 +#: ../libempathy-gtk/empathy-individual-widget.c:455 msgid "Speed:" msgstr "速度:" -#: ../libempathy-gtk/empathy-contact-widget.c:933 -#: ../libempathy-gtk/empathy-individual-widget.c:505 +#: ../libempathy-gtk/empathy-contact-widget.c:835 +#: ../libempathy-gtk/empathy-individual-widget.c:457 msgid "Bearing:" msgstr "方位:" -#: ../libempathy-gtk/empathy-contact-widget.c:935 -#: ../libempathy-gtk/empathy-individual-widget.c:507 +#: ../libempathy-gtk/empathy-contact-widget.c:837 +#: ../libempathy-gtk/empathy-individual-widget.c:459 msgid "Climb Speed:" msgstr "爬升速度:" -#: ../libempathy-gtk/empathy-contact-widget.c:937 -#: ../libempathy-gtk/empathy-individual-widget.c:509 +#: ../libempathy-gtk/empathy-contact-widget.c:839 +#: ../libempathy-gtk/empathy-individual-widget.c:461 msgid "Last Updated on:" msgstr "上次更新於:" -#: ../libempathy-gtk/empathy-contact-widget.c:939 -#: ../libempathy-gtk/empathy-individual-widget.c:511 +#: ../libempathy-gtk/empathy-contact-widget.c:841 +#: ../libempathy-gtk/empathy-individual-widget.c:463 msgid "Longitude:" msgstr "經度:" -#: ../libempathy-gtk/empathy-contact-widget.c:941 -#: ../libempathy-gtk/empathy-individual-widget.c:513 +#: ../libempathy-gtk/empathy-contact-widget.c:843 +#: ../libempathy-gtk/empathy-individual-widget.c:465 msgid "Latitude:" msgstr "緯度:" -#: ../libempathy-gtk/empathy-contact-widget.c:943 -#: ../libempathy-gtk/empathy-individual-widget.c:515 +#: ../libempathy-gtk/empathy-contact-widget.c:845 +#: ../libempathy-gtk/empathy-individual-widget.c:467 msgid "Altitude:" msgstr "緯度:" -#: ../libempathy-gtk/empathy-contact-widget.c:996 -#: ../libempathy-gtk/empathy-contact-widget.c:1011 -#: ../libempathy-gtk/empathy-individual-widget.c:607 -#: ../libempathy-gtk/empathy-individual-widget.c:622 +#: ../libempathy-gtk/empathy-contact-widget.c:898 +#: ../libempathy-gtk/empathy-contact-widget.c:913 +#: ../libempathy-gtk/empathy-individual-widget.c:559 +#: ../libempathy-gtk/empathy-individual-widget.c:574 #: ../src/empathy-preferences.ui.h:17 msgid "Location" msgstr "位置" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:1013 -#: ../libempathy-gtk/empathy-individual-widget.c:624 +#: ../libempathy-gtk/empathy-contact-widget.c:915 +#: ../libempathy-gtk/empathy-individual-widget.c:576 #, c-format msgid "%s, %s" msgstr "%s,%s" -#: ../libempathy-gtk/empathy-contact-widget.c:1065 -#: ../libempathy-gtk/empathy-individual-widget.c:673 +#: ../libempathy-gtk/empathy-contact-widget.c:967 +#: ../libempathy-gtk/empathy-individual-widget.c:625 msgid "%B %e, %Y at %R UTC" msgstr "%Y %B %e 於 %R UTC" -#: ../libempathy-gtk/empathy-contact-widget.c:1147 -#: ../libempathy-gtk/empathy-individual-widget.c:915 +#: ../libempathy-gtk/empathy-contact-widget.c:1049 +#: ../libempathy-gtk/empathy-individual-widget.c:867 msgid "Save Avatar" msgstr "儲存大頭貼" -#: ../libempathy-gtk/empathy-contact-widget.c:1203 -#: ../libempathy-gtk/empathy-individual-widget.c:973 +#: ../libempathy-gtk/empathy-contact-widget.c:1105 +#: ../libempathy-gtk/empathy-individual-widget.c:925 msgid "Unable to save avatar" msgstr "無法儲存大頭貼" +#: ../libempathy-gtk/empathy-contact-widget.c:1793 +#: ../libempathy-gtk/empathy-individual-menu.c:1066 +#: ../libempathy-gtk/empathy-individual-widget.c:1324 +msgid "Favorite" +msgstr "喜好" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:102 +msgid "Full name" +msgstr "全名" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:103 +msgid "Phone number" +msgstr "電話號碼" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:104 +msgid "E-mail address" +msgstr "電子信箱位址" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:105 +msgid "Website" +msgstr "網站" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:106 +msgid "Birthday" +msgstr "生日" + +#. Note to translators: this is the caption for a string of the form "5 +#. * minutes ago", and refers to the time since the contact last interacted +#. * with their IM client. +#: ../libempathy-gtk/empathy-contactinfo-utils.c:111 +msgid "Last seen:" +msgstr "上次看見:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:113 +msgid "Connected from:" +msgstr "已連接從:" + +#. FIXME: once Idle implements SimplePresence using this information, we can +#. * and should bin this. +#: ../libempathy-gtk/empathy-contactinfo-utils.c:117 +msgid "Away message:" +msgstr "離開訊息:" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:130 +msgid "work" +msgstr "工作" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:131 +msgid "home" +msgstr "住家" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:132 +msgid "mobile" +msgstr "行動" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:133 +msgid "voice" +msgstr "聲音" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:134 +msgid "preferred" +msgstr "偏好" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:135 +msgid "postal" +msgstr "郵遞" + +#: ../libempathy-gtk/empathy-contactinfo-utils.c:136 +msgid "parcel" +msgstr "包裹" + #: ../libempathy-gtk/empathy-contact-widget.ui.h:1 msgid "Location at (date)\t" msgstr "位置 於 (date)\t" #. Alias #: ../libempathy-gtk/empathy-contact-widget.ui.h:3 -#: ../libempathy-gtk/empathy-individual-widget.c:1308 +#: ../libempathy-gtk/empathy-individual-widget.c:1260 msgid "Alias:" msgstr "別名:" @@ -2069,7 +2093,7 @@ msgstr "連絡人詳細資料" #. Identifier to connect to Instant Messaging network #. Translators: Identifier to connect to Instant Messaging network #: ../libempathy-gtk/empathy-contact-widget.ui.h:8 -#: ../libempathy-gtk/empathy-individual-widget.c:1517 +#: ../libempathy-gtk/empathy-individual-widget.c:1469 msgid "Identifier:" msgstr "識別身分:" @@ -2107,16 +2131,16 @@ msgid "Select" msgstr "選取" #: ../libempathy-gtk/empathy-groups-widget.c:409 -#: ../src/empathy-main-window.c:1807 +#: ../src/empathy-main-window.c:1953 msgid "Group" msgstr "群組" -#: ../libempathy-gtk/empathy-individual-dialogs.c:260 +#: ../libempathy-gtk/empathy-individual-dialogs.c:258 msgid "The following identity will be blocked:" msgid_plural "The following identities will be blocked:" msgstr[0] "下列識別身分將被封鎖:" -#: ../libempathy-gtk/empathy-individual-dialogs.c:267 +#: ../libempathy-gtk/empathy-individual-dialogs.c:265 msgid "The following identity can not be blocked:" msgid_plural "The following identities can not be blocked:" msgstr[0] "下列識別身分無法被封鎖:" @@ -2154,7 +2178,7 @@ msgstr "選取要用來放置通話的帳號" #. * title #: ../libempathy-gtk/empathy-individual-menu.c:313 #: ../libempathy-gtk/empathy-log-window.ui.h:2 -#: ../src/empathy-streamed-media-window.c:1299 +#: ../src/empathy-streamed-media-window.c:1285 #: ../src/empathy-call-window.ui.h:2 msgid "Call" msgstr "通話" @@ -2171,29 +2195,29 @@ msgstr "工作" msgid "HOME" msgstr "住家" -#. add an SMS button -#: ../libempathy-gtk/empathy-individual-menu.c:804 -#: ../libempathy-gtk/empathy-new-message-dialog.c:215 +#. add SMS button +#: ../libempathy-gtk/empathy-individual-menu.c:805 +#: ../libempathy-gtk/empathy-new-message-dialog.c:314 msgid "_SMS" msgstr "_SMS" -#: ../libempathy-gtk/empathy-individual-menu.c:1142 +#: ../libempathy-gtk/empathy-individual-menu.c:1143 msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "編輯(_E)" #. Translators: this is a verb meaning "to connect two contacts together #. * to form a meta-contact". -#: ../libempathy-gtk/empathy-individual-menu.c:1168 +#: ../libempathy-gtk/empathy-individual-menu.c:1169 msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "連結聯絡人(_L)…" -#: ../libempathy-gtk/empathy-individual-view.c:2341 +#: ../libempathy-gtk/empathy-individual-view.c:2340 msgid "Delete and _Block" msgstr "刪除並封鎖(_B)" -#: ../libempathy-gtk/empathy-individual-view.c:2510 +#: ../libempathy-gtk/empathy-individual-view.c:2509 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " @@ -2202,7 +2226,7 @@ msgstr "" "您真的想要移除連結聯絡人「%s」嗎?請注意這會移除所有構成此連結聯絡群的聯絡" "人。" -#: ../libempathy-gtk/empathy-individual-widget.c:1656 +#: ../libempathy-gtk/empathy-individual-widget.c:1608 #, c-format msgid "Linked contact containing %u contact" msgid_plural "Linked contacts containing %u contacts" @@ -2283,133 +2307,133 @@ msgctxt "Unlink individual (button)" msgid "_Unlink" msgstr "取消連結(_U)" -#: ../libempathy-gtk/empathy-log-window.c:634 +#: ../libempathy-gtk/empathy-log-window.c:620 msgid "History" msgstr "歷史" -#: ../libempathy-gtk/empathy-log-window.c:689 +#: ../libempathy-gtk/empathy-log-window.c:675 msgid "Show" msgstr "顯示" -#: ../libempathy-gtk/empathy-log-window.c:711 +#: ../libempathy-gtk/empathy-log-window.c:697 msgid "Search" msgstr "搜尋" -#: ../libempathy-gtk/empathy-log-window.c:1159 +#: ../libempathy-gtk/empathy-log-window.c:1145 #, c-format msgid "Chat in %s" msgstr "於 %s 內聊天" -#: ../libempathy-gtk/empathy-log-window.c:1161 +#: ../libempathy-gtk/empathy-log-window.c:1147 #, c-format msgid "Chat with %s" msgstr "與 %s 聊天中" -#: ../libempathy-gtk/empathy-log-window.c:1211 -#: ../libempathy-gtk/empathy-log-window.c:1358 +#: ../libempathy-gtk/empathy-log-window.c:1197 +#: ../libempathy-gtk/empathy-log-window.c:1344 msgctxt "A date with the time" msgid "%A, %e %B %Y %X" msgstr "%Y %B %d %A" #. Translators: this is an emote: '* Danielle waves' -#: ../libempathy-gtk/empathy-log-window.c:1300 +#: ../libempathy-gtk/empathy-log-window.c:1286 #, c-format msgid "* %s %s" msgstr "* %s %s" #. Translators: this is a message: 'Danielle: hello' #. * The string in bold is the sender's name -#: ../libempathy-gtk/empathy-log-window.c:1306 +#: ../libempathy-gtk/empathy-log-window.c:1292 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: ../libempathy-gtk/empathy-log-window.c:1382 +#: ../libempathy-gtk/empathy-log-window.c:1368 #, c-format msgid "%s second" msgid_plural "%s seconds" msgstr[0] "%s 秒" -#: ../libempathy-gtk/empathy-log-window.c:1389 +#: ../libempathy-gtk/empathy-log-window.c:1375 #, c-format msgid "%s minute" msgid_plural "%s minutes" msgstr[0] "%s 分鐘" -#: ../libempathy-gtk/empathy-log-window.c:1397 +#: ../libempathy-gtk/empathy-log-window.c:1383 #, c-format msgid "Call took %s, ended at %s" msgstr "通話時間 %s,結束於 %s" -#: ../libempathy-gtk/empathy-log-window.c:1729 +#: ../libempathy-gtk/empathy-log-window.c:1715 msgid "Today" msgstr "今日" -#: ../libempathy-gtk/empathy-log-window.c:1733 +#: ../libempathy-gtk/empathy-log-window.c:1719 msgid "Yesterday" msgstr "昨日" #. Translators: A date such as '23 May 2010' (strftime format) -#: ../libempathy-gtk/empathy-log-window.c:1748 +#: ../libempathy-gtk/empathy-log-window.c:1734 msgid "%e %B %Y" msgstr "%Y年%B%e日" -#: ../libempathy-gtk/empathy-log-window.c:1829 -#: ../libempathy-gtk/empathy-log-window.c:3444 +#: ../libempathy-gtk/empathy-log-window.c:1815 +#: ../libempathy-gtk/empathy-log-window.c:3430 msgid "Anytime" msgstr "任何時間" -#: ../libempathy-gtk/empathy-log-window.c:1916 -#: ../libempathy-gtk/empathy-log-window.c:2372 +#: ../libempathy-gtk/empathy-log-window.c:1902 +#: ../libempathy-gtk/empathy-log-window.c:2358 msgid "Anyone" msgstr "任一個" -#: ../libempathy-gtk/empathy-log-window.c:2685 +#: ../libempathy-gtk/empathy-log-window.c:2671 msgid "Who" msgstr "誰" -#: ../libempathy-gtk/empathy-log-window.c:2889 +#: ../libempathy-gtk/empathy-log-window.c:2875 msgid "When" msgstr "何時" -#: ../libempathy-gtk/empathy-log-window.c:3005 +#: ../libempathy-gtk/empathy-log-window.c:2991 msgid "Anything" msgstr "任何事" -#: ../libempathy-gtk/empathy-log-window.c:3007 +#: ../libempathy-gtk/empathy-log-window.c:2993 msgid "Text chats" msgstr "文字聊天" -#: ../libempathy-gtk/empathy-log-window.c:3009 +#: ../libempathy-gtk/empathy-log-window.c:2995 #: ../src/empathy-preferences.ui.h:4 msgid "Calls" msgstr "通話" -#: ../libempathy-gtk/empathy-log-window.c:3014 +#: ../libempathy-gtk/empathy-log-window.c:3000 msgid "Incoming calls" msgstr "來電" -#: ../libempathy-gtk/empathy-log-window.c:3015 +#: ../libempathy-gtk/empathy-log-window.c:3001 msgid "Outgoing calls" msgstr "播出" -#: ../libempathy-gtk/empathy-log-window.c:3016 +#: ../libempathy-gtk/empathy-log-window.c:3002 msgid "Missed calls" msgstr "漏接來電" -#: ../libempathy-gtk/empathy-log-window.c:3038 +#: ../libempathy-gtk/empathy-log-window.c:3024 msgid "What" msgstr "什麼" -#: ../libempathy-gtk/empathy-log-window.c:3747 +#: ../libempathy-gtk/empathy-log-window.c:3719 msgid "Are you sure you want to delete all logs of previous conversations?" msgstr "您確定要刪除過往談話的所有紀錄嗎?" -#: ../libempathy-gtk/empathy-log-window.c:3751 +#: ../libempathy-gtk/empathy-log-window.c:3723 msgid "Clear All" msgstr "清除全部" -#: ../libempathy-gtk/empathy-log-window.c:3758 +#: ../libempathy-gtk/empathy-log-window.c:3730 msgid "Delete from:" msgstr "刪除從:" @@ -2450,32 +2474,72 @@ msgstr "檔案(_F)" msgid "page 2" msgstr "頁面 2" -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2 -msgid "Contact ID:" -msgstr "連絡人 ID:" +#: ../libempathy-gtk/empathy-new-message-dialog.c:84 +msgid "The contact is offline" +msgstr "聯絡人已經離線" -#. add chat button -#: ../libempathy-gtk/empathy-new-message-dialog.c:225 -msgid "C_hat" -msgstr "聊天(_C)" +#: ../libempathy-gtk/empathy-new-message-dialog.c:86 +msgid "The specified contact is either invalid or unknown" +msgstr "指定的聯絡人無效或未知" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:88 +msgid "The contact does not support this kind of conversation" +msgstr "該聯絡人不支援這類談話" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:90 +msgid "The requested functionality is not implemented for this protocol" +msgstr "請求的功能尚未在此協定中實作" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:96 +msgid "Could not start a conversation with the given contact" +msgstr "無法啟動與給定聯絡人的談話" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:98 +msgid "You are banned from this channel" +msgstr "您被此頻道禁封" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:100 +msgid "This channel is full" +msgstr "此頻道已滿" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:102 +msgid "You must be invited to join this channel" +msgstr "您必須被邀請才能參加此頻道" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:104 +msgid "Can't proceed while disconnected" +msgstr "斷線時無法處理" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:106 +msgid "Permission denied" +msgstr "許可被拒絕" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:112 +msgid "There was an error starting the conversation" +msgstr "啟動談話時發生錯誤" + +#: ../libempathy-gtk/empathy-new-message-dialog.c:291 +#: ../libempathy-gtk/empathy-new-call-dialog.c:203 +msgid "Enter a contact identifier or phone number:" +msgstr "請輸入聯絡人辨識身份或電話號碼:" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-message-dialog.c:244 +#: ../libempathy-gtk/empathy-new-message-dialog.c:334 msgid "New Conversation" msgstr "新增談話" -#. add video toggle -#: ../libempathy-gtk/empathy-new-call-dialog.c:204 -msgid "Send _Video" -msgstr "傳送視訊(_V)" +#. add video button +#: ../libempathy-gtk/empathy-new-call-dialog.c:226 +msgid "_Video Call" +msgstr "視訊通話(_V)" -#. add chat button -#: ../libempathy-gtk/empathy-new-call-dialog.c:215 -msgid "C_all" -msgstr "通話(_A)" +#. add audio button +#: ../libempathy-gtk/empathy-new-call-dialog.c:236 +msgid "_Audio Call" +msgstr "語音通話(_A)" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-call-dialog.c:225 +#: ../libempathy-gtk/empathy-new-call-dialog.c:246 msgid "New Call" msgstr "新增通話" @@ -2516,12 +2580,8 @@ msgstr "按這裡將這個狀態設為喜好" msgid "Set status" msgstr "設定狀態" -#: ../libempathy-gtk/empathy-presence-chooser.c:943 -msgid "Set your presence and current status" -msgstr "設定您的上線與目前的狀態" - #. Custom messages -#: ../libempathy-gtk/empathy-presence-chooser.c:1131 +#: ../libempathy-gtk/empathy-presence-chooser.c:1135 msgid "Custom messages…" msgstr "自訂訊息…" @@ -2598,12 +2658,12 @@ msgstr "語音通話結束" msgid "Edit Custom Messages" msgstr "編輯自訂訊息" -#: ../libempathy-gtk/empathy-theme-adium.c:1036 +#: ../libempathy-gtk/empathy-theme-adium.c:1047 #, c-format msgid "Message edited at %s" msgstr "訊息編輯於 %s" -#: ../libempathy-gtk/empathy-theme-adium.c:1726 +#: ../libempathy-gtk/empathy-theme-adium.c:1752 msgid "Normal" msgstr "一般" @@ -2694,26 +2754,26 @@ msgstr "請記住此選擇以供未來連線使用" msgid "Certificate Details" msgstr "憑證詳細資料" -#: ../libempathy-gtk/empathy-ui-utils.c:1735 +#: ../libempathy-gtk/empathy-ui-utils.c:1741 msgid "Unable to open URI" msgstr "無法開啓 URI" -#: ../libempathy-gtk/empathy-ui-utils.c:1831 +#: ../libempathy-gtk/empathy-ui-utils.c:1859 msgid "Select a file" msgstr "選擇一個檔案" -#: ../libempathy-gtk/empathy-ui-utils.c:1903 +#: ../libempathy-gtk/empathy-ui-utils.c:1934 msgid "Insufficient free space to save file" msgstr "空間不足以儲存檔案" -#: ../libempathy-gtk/empathy-ui-utils.c:1911 +#: ../libempathy-gtk/empathy-ui-utils.c:1942 #, c-format msgid "" "%s of free space are required to save this file, but only %s is available. " "Please choose another location." msgstr "需要 %s 的空間以儲存此檔案,但僅有 %s 可用。請選擇其他位置。" -#: ../libempathy-gtk/empathy-ui-utils.c:1955 +#: ../libempathy-gtk/empathy-ui-utils.c:1986 #, c-format msgid "Incoming file from %s" msgstr "收到來自 %s 的檔案" @@ -2885,39 +2945,31 @@ msgstr "西歐語系" msgid "Vietnamese" msgstr "越南文" -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108 -msgid "The selected contact cannot receive files." -msgstr "所選的聯絡人無法接收檔案。" - -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114 -msgid "The selected contact is offline." -msgstr "所選的聯絡人已經離線。" - -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169 +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:203 msgid "No error message" msgstr "沒有錯誤訊息" -#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242 +#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:276 msgid "Instant Message (Empathy)" msgstr "即時通訊 (Empathy)" -#: ../src/empathy.c:431 +#: ../src/empathy.c:433 msgid "Don't connect on startup" msgstr "啟動時不要自動連線" -#: ../src/empathy.c:435 +#: ../src/empathy.c:437 msgid "Don't display the contact list or any other dialogs on startup" msgstr "啟動時不顯示連絡人清單或任何其他對話窗" -#: ../src/empathy.c:450 +#: ../src/empathy.c:452 msgid "- Empathy IM Client" msgstr "- Empathy 即時通用戶端" -#: ../src/empathy.c:637 +#: ../src/empathy.c:639 msgid "Error contacting the Account Manager" msgstr "聯絡帳號管理程式時發生錯誤" -#: ../src/empathy.c:639 +#: ../src/empathy.c:641 #, c-format msgid "" "There was an error while trying to connect to the Telepathy Account Manager. " @@ -3070,8 +3122,8 @@ msgid "Select the accounts you want to import:" msgstr "選擇要匯入的帳號:" #: ../src/empathy-account-assistant.c:813 -#: ../src/empathy-new-chatroom-dialog.c:555 -#: ../src/empathy-new-chatroom-dialog.c:556 +#: ../src/empathy-new-chatroom-dialog.c:625 +#: ../src/empathy-new-chatroom-dialog.c:626 msgid "Yes" msgstr "是" @@ -3144,8 +3196,8 @@ msgid "Your new account has not been saved yet." msgstr "尚未儲存您的新帳號。" #: ../src/empathy-accounts-dialog.c:345 -#: ../src/empathy-streamed-media-window.c:754 -#: ../src/empathy-call-window.c:1216 +#: ../src/empathy-streamed-media-window.c:755 +#: ../src/empathy-call-window.c:1326 msgid "Connecting…" msgstr "連線中…" @@ -3239,11 +3291,11 @@ msgstr "要加入新的帳號,您必須先安裝每個會用到的通訊協定 msgid "_Import…" msgstr "匯入(_I)…" -#: ../src/empathy-auth-client.c:249 +#: ../src/empathy-auth-client.c:251 msgid " - Empathy authentication client" msgstr "- Empathy 認證用戶端" -#: ../src/empathy-auth-client.c:265 +#: ../src/empathy-auth-client.c:267 msgid "Empathy authentication client" msgstr "Empathy 認證用戶端" @@ -3251,157 +3303,145 @@ msgstr "Empathy 認證用戶端" msgid "People nearby" msgstr "附近的人" -#: ../src/empathy-av.c:118 ../src/empathy-call.c:192 +#: ../src/empathy-av.c:118 ../src/empathy-call.c:193 msgid "- Empathy Audio/Video Client" msgstr "- Empathy 音訊視訊用戶端" -#: ../src/empathy-av.c:134 ../src/empathy-call.c:217 +#: ../src/empathy-av.c:134 ../src/empathy-call.c:218 msgid "Empathy Audio/Video Client" msgstr "Empathy 音訊視訊用戶端" -#: ../src/empathy-streamed-media-window.c:431 +#: ../src/empathy-streamed-media-window.c:432 msgid "Contrast" msgstr "對比" -#: ../src/empathy-streamed-media-window.c:434 +#: ../src/empathy-streamed-media-window.c:435 msgid "Brightness" msgstr "亮度" -#: ../src/empathy-streamed-media-window.c:437 +#: ../src/empathy-streamed-media-window.c:438 msgid "Gamma" msgstr "Gamma" -#: ../src/empathy-streamed-media-window.c:542 +#: ../src/empathy-streamed-media-window.c:543 msgid "Volume" msgstr "音量" -#: ../src/empathy-streamed-media-window.c:1110 +#: ../src/empathy-streamed-media-window.c:1094 msgid "_Sidebar" msgstr "側邊欄(_S)" -#: ../src/empathy-streamed-media-window.c:1130 +#: ../src/empathy-streamed-media-window.c:1114 msgid "Audio input" msgstr "音效輸入" -#: ../src/empathy-streamed-media-window.c:1134 +#: ../src/empathy-streamed-media-window.c:1118 msgid "Video input" msgstr "視訊輸入" -#: ../src/empathy-streamed-media-window.c:1140 +#: ../src/empathy-streamed-media-window.c:1126 msgid "Dialpad" msgstr "播號盤" -#: ../src/empathy-streamed-media-window.c:1151 +#: ../src/empathy-streamed-media-window.c:1137 msgid "Details" msgstr "詳細資料" #. translators: Call is a noun and %s is the contact name. This string #. * is used in the window title -#: ../src/empathy-streamed-media-window.c:1220 -#: ../src/empathy-call-window.c:1825 +#: ../src/empathy-streamed-media-window.c:1206 +#: ../src/empathy-call-window.c:1932 #, c-format msgid "Call with %s" msgstr "與 %s 通話中" -#: ../src/empathy-streamed-media-window.c:1453 -#: ../src/empathy-call-window.c:2069 +#: ../src/empathy-streamed-media-window.c:1439 +#: ../src/empathy-call-window.c:2176 msgid "The IP address as seen by the machine" msgstr "機器看見的 IP 位址" -#: ../src/empathy-streamed-media-window.c:1455 -#: ../src/empathy-call-window.c:2071 +#: ../src/empathy-streamed-media-window.c:1441 +#: ../src/empathy-call-window.c:2178 msgid "The IP address as seen by a server on the Internet" msgstr "網際網路上的伺服器看見的 IP 位址" -#: ../src/empathy-streamed-media-window.c:1457 -#: ../src/empathy-call-window.c:2073 +#: ../src/empathy-streamed-media-window.c:1443 +#: ../src/empathy-call-window.c:2180 msgid "The IP address of the peer as seen by the other side" msgstr "其他端看見的點的 IP 位址" -#: ../src/empathy-streamed-media-window.c:1459 -#: ../src/empathy-call-window.c:2075 +#: ../src/empathy-streamed-media-window.c:1445 +#: ../src/empathy-call-window.c:2182 msgid "The IP address of a relay server" msgstr "中繼伺服器的 IP 位址" -#: ../src/empathy-streamed-media-window.c:1461 -#: ../src/empathy-call-window.c:2077 +#: ../src/empathy-streamed-media-window.c:1447 +#: ../src/empathy-call-window.c:2184 msgid "The IP address of the multicast group" msgstr "多點廣播群組的 IP 位址" -#: ../src/empathy-streamed-media-window.c:1843 -msgctxt "encoding video codec" -msgid "Unknown" -msgstr "未知" - -#: ../src/empathy-streamed-media-window.c:1846 -msgctxt "encoding audio codec" -msgid "Unknown" -msgstr "未知" - -#: ../src/empathy-streamed-media-window.c:1849 -msgctxt "decoding video codec" -msgid "Unknown" -msgstr "未知" - -#: ../src/empathy-streamed-media-window.c:1852 -msgctxt "decoding audio codec" +#: ../src/empathy-streamed-media-window.c:1835 +#: ../src/empathy-streamed-media-window.c:1838 +#: ../src/empathy-streamed-media-window.c:1841 +#: ../src/empathy-streamed-media-window.c:1844 +msgctxt "codec" msgid "Unknown" msgstr "未知" #. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-streamed-media-window.c:2144 +#: ../src/empathy-streamed-media-window.c:2136 #, c-format msgid "Connected — %d:%02dm" msgstr "已連線 — %d:%02dm" -#: ../src/empathy-streamed-media-window.c:2205 -#: ../src/empathy-call-window.c:2846 +#: ../src/empathy-streamed-media-window.c:2197 +#: ../src/empathy-call-window.c:3045 msgid "Technical Details" msgstr "技術細節" -#: ../src/empathy-streamed-media-window.c:2243 -#: ../src/empathy-call-window.c:2884 +#: ../src/empathy-streamed-media-window.c:2235 +#: ../src/empathy-call-window.c:3084 #, c-format msgid "" "%s's software does not understand any of the audio formats supported by your " "computer" msgstr "%s 的軟體不瞭解任何您電腦上所支援的音訊格式" -#: ../src/empathy-streamed-media-window.c:2248 -#: ../src/empathy-call-window.c:2889 +#: ../src/empathy-streamed-media-window.c:2240 +#: ../src/empathy-call-window.c:3089 #, c-format msgid "" "%s's software does not understand any of the video formats supported by your " "computer" msgstr "%s 的軟體不瞭解任何您電腦上所支援的視訊格式" -#: ../src/empathy-streamed-media-window.c:2254 -#: ../src/empathy-call-window.c:2895 +#: ../src/empathy-streamed-media-window.c:2246 +#: ../src/empathy-call-window.c:3095 #, c-format msgid "" "Can't establish a connection to %s. One of you might be on a network that " "does not allow direct connections." msgstr "無法和 %s 建立連線。您們其中之一可能在一個不允許直接連線的網路之上。" -#: ../src/empathy-streamed-media-window.c:2260 -#: ../src/empathy-call-window.c:2901 +#: ../src/empathy-streamed-media-window.c:2252 +#: ../src/empathy-call-window.c:3101 msgid "There was a failure on the network" msgstr "這個網路上有錯誤發生" -#: ../src/empathy-streamed-media-window.c:2264 -#: ../src/empathy-call-window.c:2905 +#: ../src/empathy-streamed-media-window.c:2256 +#: ../src/empathy-call-window.c:3105 msgid "" "The audio formats necessary for this call are not installed on your computer" msgstr "此通話所必要的音訊格式尚未在您的電腦上安裝" -#: ../src/empathy-streamed-media-window.c:2267 -#: ../src/empathy-call-window.c:2908 +#: ../src/empathy-streamed-media-window.c:2259 +#: ../src/empathy-call-window.c:3108 msgid "" "The video formats necessary for this call are not installed on your computer" msgstr "此通話所必要的視訊格式尚未在您的電腦上安裝" -#: ../src/empathy-streamed-media-window.c:2277 -#: ../src/empathy-call-window.c:2920 +#: ../src/empathy-streamed-media-window.c:2269 +#: ../src/empathy-call-window.c:3120 #, c-format msgid "" "Something unexpected happened in a Telepathy component. Please 回報這個錯誤並附上" "從求助選單內的「除錯」視窗中所收集的紀錄。" -#: ../src/empathy-streamed-media-window.c:2285 -#: ../src/empathy-call-window.c:2929 +#: ../src/empathy-streamed-media-window.c:2277 +#: ../src/empathy-call-window.c:3129 msgid "There was a failure in the call engine" msgstr "通話引擎內有錯誤發生" -#: ../src/empathy-streamed-media-window.c:2288 -#: ../src/empathy-call-window.c:2932 +#: ../src/empathy-streamed-media-window.c:2280 +#: ../src/empathy-call-window.c:3132 msgid "The end of the stream was reached" msgstr "已達串流末端" -#: ../src/empathy-streamed-media-window.c:2328 -#: ../src/empathy-call-window.c:2972 +#: ../src/empathy-streamed-media-window.c:2320 +#: ../src/empathy-call-window.c:3172 msgid "Can't establish audio stream" msgstr "無法建立音訊串流" -#: ../src/empathy-streamed-media-window.c:2338 -#: ../src/empathy-call-window.c:2982 +#: ../src/empathy-streamed-media-window.c:2330 +#: ../src/empathy-call-window.c:3182 msgid "Can't establish video stream" msgstr "無法建立視訊串流" @@ -3518,8 +3558,8 @@ msgstr "切換視訊傳播" #: ../src/empathy-call-window.ui.h:21 #: ../src/empathy-streamed-media-window.ui.h:18 -#: ../src/empathy-call-window.c:2476 ../src/empathy-call-window.c:2477 -#: ../src/empathy-call-window.c:2478 ../src/empathy-call-window.c:2479 +#: ../src/empathy-call-window.c:2584 ../src/empathy-call-window.c:2585 +#: ../src/empathy-call-window.c:2586 ../src/empathy-call-window.c:2587 msgid "Unknown" msgstr "不明" @@ -3683,7 +3723,7 @@ msgstr "管理喜好的聊天室" msgid "Incoming video call" msgstr "傳入的視訊通話" -#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1449 +#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1556 msgid "Incoming call" msgstr "來電" @@ -3698,7 +3738,7 @@ msgid "%s is calling you. Do you want to answer?" msgstr "%s 要與您進行通話。您是否要接聽?" #: ../src/empathy-event-manager.c:529 ../src/empathy-event-manager.c:730 -#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1455 +#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1562 #, c-format msgid "Incoming call from %s" msgstr "%s 的來電" @@ -3716,7 +3756,7 @@ msgid "_Answer with video" msgstr "以視訊接聽(_A)" #: ../src/empathy-event-manager.c:730 ../src/empathy-event-manager.c:763 -#: ../src/empathy-call-window.c:1455 +#: ../src/empathy-call-window.c:1562 #, c-format msgid "Incoming video call from %s" msgstr "來自 %s 的視訊通話" @@ -3759,16 +3799,16 @@ msgstr "您被邀請參加 %s" msgid "Incoming file transfer from %s" msgstr "收到來自 %s 的檔案傳輸" -#: ../src/empathy-event-manager.c:1134 ../src/empathy-main-window.c:375 +#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:378 msgid "Password required" msgstr "需要密碼" -#: ../src/empathy-event-manager.c:1190 +#: ../src/empathy-event-manager.c:1210 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s 想要得到查看您是否上線的許可" -#: ../src/empathy-event-manager.c:1194 +#: ../src/empathy-event-manager.c:1214 #, c-format msgid "" "\n" @@ -3911,51 +3951,60 @@ msgstr "通訊協定" msgid "Source" msgstr "來源" -#: ../src/empathy-main-window.c:392 +#: ../src/empathy-main-window.c:395 msgid "Provide Password" msgstr "提供密碼" -#: ../src/empathy-main-window.c:398 +#: ../src/empathy-main-window.c:401 msgid "Disconnect" msgstr "斷線" -#: ../src/empathy-main-window.c:622 +#: ../src/empathy-main-window.c:638 msgid "No match found" msgstr "找不到符合項目" -#: ../src/empathy-main-window.c:777 +#: ../src/empathy-main-window.c:746 +#, c-format +msgid "Sorry, %s accounts can’t be used until your %s software is updated." +msgstr "很抱歉,%s 帳號無法使用,除非您的 %s 軟體已更新。" + +#: ../src/empathy-main-window.c:814 +msgid "Update software..." +msgstr "更新軟體..." + +#: ../src/empathy-main-window.c:820 ../src/empathy-main-window.c:941 +msgid "Close" +msgstr "關閉" + +#: ../src/empathy-main-window.c:929 msgid "Reconnect" msgstr "重新連接" -#: ../src/empathy-main-window.c:783 +#: ../src/empathy-main-window.c:935 msgid "Edit Account" msgstr "編輯帳號" -#: ../src/empathy-main-window.c:789 -msgid "Close" -msgstr "關閉" - #. Translators: this string will be something like: #. * Top up My Account ($1.23)..." -#: ../src/empathy-main-window.c:928 +#: ../src/empathy-main-window.c:1074 #, c-format msgid "Top up %s (%s)..." msgstr "加值 %s (%s)..." -#: ../src/empathy-main-window.c:975 +#: ../src/empathy-main-window.c:1121 msgid "Top up account credit" -msgstr "加值帳號額度" +msgstr "加值帳號存額" #. top up button -#: ../src/empathy-main-window.c:1046 +#: ../src/empathy-main-window.c:1192 msgid "Top Up..." msgstr "加值..." -#: ../src/empathy-main-window.c:1789 +#: ../src/empathy-main-window.c:1935 msgid "Contact" msgstr "連絡人" -#: ../src/empathy-main-window.c:2121 +#: ../src/empathy-main-window.c:2310 msgid "Contact List" msgstr "連絡人清單" @@ -4048,17 +4097,17 @@ msgstr "聊天室(_R)" msgid "_Search for Contacts…" msgstr "搜尋聯絡人(_S)…" -#: ../src/empathy-new-chatroom-dialog.c:337 +#: ../src/empathy-new-chatroom-dialog.c:369 msgid "Chat Room" msgstr "聊天室" -#: ../src/empathy-new-chatroom-dialog.c:353 +#: ../src/empathy-new-chatroom-dialog.c:385 msgid "Members" msgstr "成員" #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name, #. yes/no, yes/no and a number. -#: ../src/empathy-new-chatroom-dialog.c:553 +#: ../src/empathy-new-chatroom-dialog.c:623 #, c-format msgid "" "%s\n" @@ -4071,16 +4120,16 @@ msgstr "" "需要密碼:%s\n" "成員:%s" -#: ../src/empathy-new-chatroom-dialog.c:555 -#: ../src/empathy-new-chatroom-dialog.c:556 +#: ../src/empathy-new-chatroom-dialog.c:625 +#: ../src/empathy-new-chatroom-dialog.c:626 msgid "No" msgstr "否" -#: ../src/empathy-new-chatroom-dialog.c:584 +#: ../src/empathy-new-chatroom-dialog.c:654 msgid "Could not start room listing" msgstr "無法開始列出聊天室清單" -#: ../src/empathy-new-chatroom-dialog.c:594 +#: ../src/empathy-new-chatroom-dialog.c:664 msgid "Could not stop room listing" msgstr "無法停止列出聊天室清單" @@ -4184,7 +4233,7 @@ msgstr "將來有命終相見,無命今生不相逄。" msgid "Juliet has disconnected" msgstr "祝英台已斷線" -#: ../src/empathy-preferences.c:1166 +#: ../src/empathy-preferences.c:1175 msgid "Preferences" msgstr "偏好設定" @@ -4307,43 +4356,47 @@ msgid "Themes" msgstr "佈景主題" #: ../src/empathy-preferences.ui.h:30 +msgid "Use _echo cancellation to improve call quality" +msgstr "使用回音消除來改善通話品質(_E)" + +#: ../src/empathy-preferences.ui.h:31 msgid "Variant:" msgstr "樣式:" -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:32 msgid "_Automatically connect on startup" msgstr "啟動時自動連線(_A)" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:33 msgid "_Cellphone" msgstr "手機(_C)" -#: ../src/empathy-preferences.ui.h:33 +#: ../src/empathy-preferences.ui.h:34 msgid "_Enable bubble notifications" msgstr "啟用氣泡式通知(_E)" -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:35 msgid "_Enable sound notifications" msgstr "啟用音效通知(_E)" -#: ../src/empathy-preferences.ui.h:35 +#: ../src/empathy-preferences.ui.h:36 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:36 +#: ../src/empathy-preferences.ui.h:37 msgid "_Network (IP, Wi-Fi)" msgstr "網路 (IP, Wi-Fi)(_N)" -#: ../src/empathy-preferences.ui.h:37 +#: ../src/empathy-preferences.ui.h:38 msgid "_Open new chats in separate windows" msgstr "在個別視窗開啟新的聊天(_O)" -#: ../src/empathy-preferences.ui.h:38 +#: ../src/empathy-preferences.ui.h:39 msgid "_Publish location to my contacts" msgstr "對我的連絡人公開位置(_P)" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:40 +#: ../src/empathy-preferences.ui.h:41 msgid "_Reduce location accuracy" msgstr "降低位置準確度(_R)" @@ -4469,16 +4522,16 @@ msgid "" "extension." msgstr "選取的連線管理程式不支援遠端偵錯擴充功能。" -#: ../src/empathy-invite-participant-dialog.c:179 -#: ../src/empathy-invite-participant-dialog.c:205 +#: ../src/empathy-invite-participant-dialog.c:197 +#: ../src/empathy-invite-participant-dialog.c:225 msgid "Invite Participant" msgstr "邀請參與" -#: ../src/empathy-invite-participant-dialog.c:180 +#: ../src/empathy-invite-participant-dialog.c:198 msgid "Choose a contact to invite into the conversation:" msgstr "選擇想要邀請進入談話的聯絡人:" -#: ../src/empathy-invite-participant-dialog.c:201 +#: ../src/empathy-invite-participant-dialog.c:221 msgid "Invite" msgstr "邀請" @@ -4499,23 +4552,27 @@ msgstr "初始選取所給予的帳號 (例:gabble/jabber/foo_40example_2eorg0 msgid "" msgstr "" -#: ../src/empathy-accounts.c:198 +#: ../src/empathy-accounts.c:196 +msgid "Show account assistant" +msgstr "顯示帳號助理" + +#: ../src/empathy-accounts.c:202 msgid "- Empathy Accounts" msgstr "- Empathy 帳號" -#: ../src/empathy-accounts.c:237 +#: ../src/empathy-accounts.c:238 msgid "Empathy Accounts" msgstr "Empathy 帳號" -#: ../src/empathy-debugger.c:70 +#: ../src/empathy-debugger.c:69 msgid "Show a particular service" msgstr "顯示特定服務" -#: ../src/empathy-debugger.c:75 +#: ../src/empathy-debugger.c:74 msgid "- Empathy Debugger" msgstr "- Empathy 除錯器" -#: ../src/empathy-debugger.c:114 +#: ../src/empathy-debugger.c:113 msgid "Empathy Debugger" msgstr "Empathy 除錯程式" @@ -4523,39 +4580,39 @@ msgstr "Empathy 除錯程式" msgid "- Empathy Chat Client" msgstr "- Empathy 聊天用戶端" -#: ../src/empathy-notifications-approver.c:203 +#: ../src/empathy-notifications-approver.c:190 msgid "Respond" msgstr "回應" -#: ../src/empathy-notifications-approver.c:217 -#: ../src/empathy-call-window.c:1459 +#: ../src/empathy-notifications-approver.c:204 +#: ../src/empathy-call-window.c:1566 msgid "Reject" msgstr "拒絕" -#: ../src/empathy-notifications-approver.c:222 -#: ../src/empathy-notifications-approver.c:227 -#: ../src/empathy-call-window.c:1460 +#: ../src/empathy-notifications-approver.c:209 +#: ../src/empathy-notifications-approver.c:214 +#: ../src/empathy-call-window.c:1567 msgid "Answer" msgstr "接聽" -#: ../src/empathy-notifications-approver.c:227 +#: ../src/empathy-notifications-approver.c:214 msgid "Answer with video" msgstr "以視訊接聽" -#: ../src/empathy-notifications-approver.c:235 -#: ../src/empathy-notifications-approver.c:245 +#: ../src/empathy-notifications-approver.c:222 +#: ../src/empathy-notifications-approver.c:232 msgid "Decline" msgstr "拒絕" -#: ../src/empathy-notifications-approver.c:239 -#: ../src/empathy-notifications-approver.c:250 +#: ../src/empathy-notifications-approver.c:226 +#: ../src/empathy-notifications-approver.c:237 msgid "Accept" msgstr "接受" #. translators: the 'Provide' button is displayed in a notification #. * bubble when Empathy is asking for an account password; clicking on it #. * brings the password popup. -#: ../src/empathy-notifications-approver.c:260 +#: ../src/empathy-notifications-approver.c:247 msgid "Provide" msgstr "提供" @@ -4566,32 +4623,97 @@ msgstr "%s 剛剛播打給您,但您正與他人通話。" #. Translators: this is an "Info" label. It should be as short #. * as possible. -#: ../src/empathy-call-window.c:1088 ../src/empathy-call-window.c:1111 +#: ../src/empathy-call-window.c:1173 ../src/empathy-call-window.c:1196 msgid "i" msgstr "訊" -#: ../src/empathy-call-window.c:2775 +#: ../src/empathy-call-window.c:2941 msgid "On hold" msgstr "保留" -#: ../src/empathy-call-window.c:2778 +#: ../src/empathy-call-window.c:2944 msgid "Mute" msgstr "靜音" -#: ../src/empathy-call-window.c:2780 +#: ../src/empathy-call-window.c:2946 msgid "Duration" msgstr "時間" #. Translators: 'status - minutes:seconds' the caller has been connected -#: ../src/empathy-call-window.c:2783 +#: ../src/empathy-call-window.c:2949 #, c-format msgid "%s — %d:%02dm" msgstr "%s — %d:%02dm" +#: ../src/empathy-call-window.c:3219 +#, c-format +msgid "Your current balance is %s." +msgstr "您目前的餘額為 %s。" + +#: ../src/empathy-call-window.c:3223 +msgid "Sorry, you don’t have enough credit for that call." +msgstr "很抱歉,您的存額不足以進行該通話。" + +#: ../src/empathy-call-window.c:3225 +msgid "Top Up" +msgstr "加值" + #: ../libempathy-gtk/empathy-search-bar.c:243 msgid "_Match case" msgstr "比對大小寫(_M)" +#~ msgid "Empathy has migrated butterfly logs" +#~ msgstr "Empathy 已轉移 butterfly 日誌" + +#~ msgid "Whether Empathy has migrated butterfly logs." +#~ msgstr "Empathy 是否應轉移 butterfly 日誌。" + +#~ msgid "Ungrouped" +#~ msgstr "未群組" + +#~ msgid "Favorite People" +#~ msgstr "喜好的人" + +#~ msgid "Select a contact" +#~ msgstr "選擇連絡人" + +#~ msgid "Contact ID:" +#~ msgstr "連絡人 ID:" + +#~ msgid "C_hat" +#~ msgstr "聊天(_C)" + +#~ msgid "Send _Video" +#~ msgstr "傳送視訊(_V)" + +#~ msgid "C_all" +#~ msgstr "通話(_A)" + +#~ msgid "Set your presence and current status" +#~ msgstr "設定您的上線與目前的狀態" + +#~ msgid "The selected contact cannot receive files." +#~ msgstr "所選的聯絡人無法接收檔案。" + +#~ msgid "The selected contact is offline." +#~ msgstr "所選的聯絡人已經離線。" + +#~ msgctxt "encoding video codec" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "encoding audio codec" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "decoding video codec" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "decoding audio codec" +#~ msgid "Unknown" +#~ msgstr "未知" + #~ msgid "Find Next" #~ msgstr "尋找下一個" @@ -4753,9 +4875,6 @@ msgstr "比對大小寫(_M)" #~ "fails" #~ msgstr "嘗試匯入任何認識的帳號,若失敗時則顯示協助" -#~ msgid "Show the accounts dialog" -#~ msgstr "顯示帳號對話盒" - #~ msgid "The error message was: %s" #~ msgstr "錯誤訊息為: %s" diff --git a/release.py b/release.py index 0a4d2675..5d5dc626 100755 --- a/release.py +++ b/release.py @@ -9,7 +9,7 @@ import time from string import Template from optparse import OptionParser -last_tag_pattern = 'EMPATHY_3_2*' +last_tag_pattern = 'EMPATHY_3_3*' upload_server = 'master.gnome.org' template = '''\ $name $version is now available for download from: diff --git a/src/empathy-account-assistant.c b/src/empathy-account-assistant.c index efd6dc18..ecfd7834 100644 --- a/src/empathy-account-assistant.c +++ b/src/empathy-account-assistant.c @@ -119,11 +119,11 @@ build_error_vbox (const gchar *primary_message, GtkWidget *main_vbox, *w, *hbox; PangoAttrList *list; - main_vbox = gtk_vbox_new (FALSE, 12); + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); gtk_widget_show (main_vbox); - hbox = gtk_hbox_new (FALSE, 12); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); @@ -600,11 +600,11 @@ account_assistant_build_introduction_page (EmpathyAccountAssistant *self) GdkPixbuf *pix; const gchar *str; - main_vbox = gtk_vbox_new (FALSE, 12); + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_widget_show (main_vbox); gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); - hbox_1 = gtk_hbox_new (FALSE, 12); + hbox_1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); gtk_box_pack_start (GTK_BOX (main_vbox), hbox_1, TRUE, TRUE, 0); gtk_widget_show (hbox_1); @@ -638,13 +638,14 @@ account_assistant_build_introduction_page (EmpathyAccountAssistant *self) gtk_box_pack_start (GTK_BOX (main_vbox), w, TRUE, TRUE, 0); gtk_widget_show (w); - vbox_1 = gtk_vbox_new (TRUE, 0); + vbox_1 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_box_set_homogeneous (GTK_BOX (vbox_1), TRUE); gtk_container_add (GTK_CONTAINER (w), vbox_1); gtk_widget_show (vbox_1); if (empathy_import_accounts_to_import ()) { - hbox_1 = gtk_hbox_new (FALSE, 0); + hbox_1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (vbox_1), hbox_1, TRUE, TRUE, 0); gtk_widget_show (hbox_1); @@ -721,7 +722,7 @@ account_assistant_build_import_page (EmpathyAccountAssistant *self) EmpathyImportWidget *iw; EmpathyAccountAssistantPriv *priv = GET_PRIV (self); - main_vbox = gtk_vbox_new (FALSE, 12); + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); w = gtk_label_new (_("Select the accounts you want to import:")); gtk_misc_set_alignment (GTK_MISC (w), 0.0, 0.5); @@ -767,11 +768,11 @@ account_assistant_build_enter_or_create_page (EmpathyAccountAssistant *self) EmpathyAccountAssistantPriv *priv = GET_PRIV (self); GtkWidget *main_vbox, *w, *chooser, *vbox, *hbox, *radio; - main_vbox = gtk_vbox_new (FALSE, 12); + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); gtk_widget_show (main_vbox); - hbox = gtk_hbox_new (FALSE, 6); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); @@ -790,7 +791,7 @@ account_assistant_build_enter_or_create_page (EmpathyAccountAssistant *self) gtk_widget_show (chooser); priv->chooser = chooser; - vbox = gtk_vbox_new (FALSE, 6); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_end (GTK_BOX (main_vbox), vbox, FALSE, FALSE, 0); gtk_widget_show (vbox); @@ -806,7 +807,7 @@ account_assistant_build_enter_or_create_page (EmpathyAccountAssistant *self) gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0); gtk_widget_show (w); - hbox = gtk_hbox_new (FALSE, 6); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_container_add (GTK_CONTAINER (w), hbox); gtk_widget_show (hbox); @@ -1072,11 +1073,11 @@ account_assistant_build_salut_page (EmpathyAccountAssistant *self) EmpathyAccountWidget *widget_object; gchar *markup; - main_vbox = gtk_vbox_new (FALSE, 12); + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_widget_show (main_vbox); gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); - hbox_1 = gtk_hbox_new (FALSE, 12); + hbox_1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); gtk_box_pack_start (GTK_BOX (main_vbox), hbox_1, TRUE, TRUE, 0); gtk_widget_show (hbox_1); diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c index d1c7e120..9e2fea78 100644 --- a/src/empathy-accounts-dialog.c +++ b/src/empathy-accounts-dialog.c @@ -2178,7 +2178,7 @@ accounts_dialog_build_ui (EmpathyAccountsDialog *dialog) gchar *filename; EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); GtkWidget *content_area, *action_area; - GtkWidget *grid; + GtkWidget *grid, *hbox; GtkWidget *alig; GtkWidget *sw, *toolbar; GtkStyleContext *context; @@ -2277,7 +2277,13 @@ accounts_dialog_build_ui (EmpathyAccountsDialog *dialog) /* first row */ priv->label_name = gtk_label_new (NULL); - gtk_grid_attach (GTK_GRID (grid), priv->label_name, 1, 0, 3, 1); + gtk_grid_attach (GTK_GRID (grid), priv->label_name, 1, 0, 1, 1); + + /* second row */ + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); + gtk_widget_set_hexpand (hbox, TRUE); + gtk_widget_set_halign (hbox, GTK_ALIGN_CENTER); + gtk_grid_attach (GTK_GRID (grid), hbox, 1, 1, 1, 1); /* set up spinner */ priv->throbber = gtk_spinner_new (); @@ -2288,18 +2294,17 @@ accounts_dialog_build_ui (EmpathyAccountsDialog *dialog) priv->label_status = gtk_label_new (NULL); gtk_label_set_line_wrap (GTK_LABEL (priv->label_status), TRUE); - gtk_widget_set_hexpand (priv->label_status, TRUE); - gtk_grid_attach (GTK_GRID (grid), priv->throbber, 1, 1, 1, 1); - gtk_grid_attach (GTK_GRID (grid), priv->image_status, 2, 1, 1, 1); - gtk_grid_attach (GTK_GRID (grid), priv->label_status, 3, 1, 1, 1); + gtk_box_pack_start (GTK_BOX (hbox), priv->throbber, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), priv->image_status, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), priv->label_status, FALSE, FALSE, 0); /* enabled switch */ priv->enabled_switch = gtk_switch_new (); gtk_widget_set_valign (priv->enabled_switch, GTK_ALIGN_CENTER); g_signal_connect (priv->enabled_switch, "notify::active", G_CALLBACK (accounts_dialog_enable_switch_active_cb), dialog); - gtk_grid_attach (GTK_GRID (grid), priv->enabled_switch, 4, 0, 1, 2); + gtk_grid_attach (GTK_GRID (grid), priv->enabled_switch, 2, 0, 1, 2); gtk_widget_show_all (grid); diff --git a/src/empathy-audio-sink.c b/src/empathy-audio-sink.c index 3d4496cd..5ab14b54 100644 --- a/src/empathy-audio-sink.c +++ b/src/empathy-audio-sink.c @@ -61,6 +61,10 @@ enum { struct _EmpathyGstAudioSinkPrivate { GstElement *sink; + gboolean echo_cancel; + gdouble volume; + gint volume_idle_id; + GStaticMutex volume_mutex; }; #define EMPATHY_GST_AUDIO_SINK_GET_PRIVATE(o) \ @@ -71,6 +75,8 @@ static void empathy_audio_sink_init (EmpathyGstAudioSink *self) { self->priv = EMPATHY_GST_AUDIO_SINK_GET_PRIVATE (self); + self->priv->echo_cancel = TRUE; + g_static_mutex_init (&self->priv->volume_mutex); } static GstPad * empathy_audio_sink_request_new_pad (GstElement *self, @@ -84,11 +90,13 @@ static void empathy_audio_sink_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { + EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (object); switch (property_id) { case PROP_VOLUME: - empathy_audio_sink_set_volume (EMPATHY_GST_AUDIO_SINK (object), - g_value_get_double (value)); + g_static_mutex_lock (&self->priv->volume_mutex); + self->priv->volume = g_value_get_double (value); + g_static_mutex_unlock (&self->priv->volume_mutex); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -99,17 +107,34 @@ static void empathy_audio_sink_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { + EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (object); switch (property_id) { case PROP_VOLUME: - g_value_set_double (value, - empathy_audio_sink_get_volume (EMPATHY_GST_AUDIO_SINK (object))); + g_value_set_double (value, self->priv->volume); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } +static void +empathy_audio_sink_dispose (GObject *object) +{ + EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (object); + EmpathyGstAudioSinkPrivate *priv = self->priv; + + if (priv->volume_idle_id != 0) + g_source_remove (priv->volume_idle_id); + priv->volume_idle_id = 0; + + g_static_mutex_free (&self->priv->volume_mutex); + + /* release any references held by the object here */ + if (G_OBJECT_CLASS (empathy_audio_sink_parent_class)->dispose) + G_OBJECT_CLASS (empathy_audio_sink_parent_class)->dispose (object); +} + static void empathy_audio_sink_class_init (EmpathyGstAudioSinkClass *empathy_audio_sink_class) @@ -127,6 +152,7 @@ empathy_audio_sink_class_init (EmpathyGstAudioSinkClass object_class->set_property = empathy_audio_sink_set_property; object_class->get_property = empathy_audio_sink_get_property; + object_class->dispose = empathy_audio_sink_dispose; element_class->request_new_pad = empathy_audio_sink_request_new_pad; element_class->release_pad = empathy_audio_sink_release_pad; @@ -151,47 +177,22 @@ empathy_audio_sink_new (void) return gst_element_factory_make ("empathyaudiosink", NULL); } -static gboolean -check_volume_support (EmpathyGstAudioSink *self) -{ - gchar *name; - - if (GST_IS_STREAM_VOLUME (self->priv->sink)) - return TRUE; - - name = gst_element_get_name (self->priv->sink); - DEBUG ("Element %s doesn't support volume", name); - - g_free (name); - return FALSE; -} - void empathy_audio_sink_set_volume (EmpathyGstAudioSink *sink, gdouble volume) { - EmpathyGstAudioSinkPrivate *priv = EMPATHY_GST_AUDIO_SINK_GET_PRIVATE (sink); - - if (!check_volume_support (sink)) - return; - - g_object_set (priv->sink, "volume", volume, NULL); + g_object_set (sink, "volume", volume, NULL); } gdouble empathy_audio_sink_get_volume (EmpathyGstAudioSink *sink) { EmpathyGstAudioSinkPrivate *priv = EMPATHY_GST_AUDIO_SINK_GET_PRIVATE (sink); - gdouble volume; - - if (!check_volume_support (sink)) - return 1.0; - g_object_get (priv->sink, "volume", &volume, NULL); - return volume; + return priv->volume; } static GstElement * -create_sink (void) +create_sink (EmpathyGstAudioSink *self) { GstElement *sink; const gchar *description; @@ -217,18 +218,84 @@ create_sink (void) if (sink == NULL) return NULL; - empathy_call_set_stream_properties (sink); + empathy_call_set_stream_properties (sink, self->priv->echo_cancel); + + /* Set latency (buffering on the PulseAudio side) of 40ms and transfer data + * in 10ms chunks */ + g_object_set (sink, "buffer-time", 40000, "latency-time", 10000, NULL); return sink; } +static gboolean +empathy_audio_sink_volume_idle_updated (gpointer user_data) +{ + EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (user_data); + + g_static_mutex_lock (&self->priv->volume_mutex); + self->priv->volume_idle_id = 0; + g_static_mutex_unlock (&self->priv->volume_mutex); + + g_object_notify (G_OBJECT (self), "volume"); + + return FALSE; +} + +static void +empathy_audio_sink_volume_updated (GObject *object, + GParamSpec *pspec, + gpointer user_data) +{ + EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (user_data); + gdouble volume; + + g_static_mutex_lock (&self->priv->volume_mutex); + + g_object_get (object, "volume", &volume, NULL); + if (self->priv->volume == volume) + goto out; + + self->priv->volume = volume; + if (self->priv->volume_idle_id == 0) + self->priv->volume_idle_id = g_idle_add ( + empathy_audio_sink_volume_idle_updated, self); + +out: + g_static_mutex_unlock (&self->priv->volume_mutex); +} + +static gboolean +empathy_audio_sink_volume_idle_setup (gpointer user_data) +{ + EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (user_data); + gdouble volume; + + g_static_mutex_lock (&self->priv->volume_mutex); + self->priv->volume_idle_id = 0; + g_static_mutex_unlock (&self->priv->volume_mutex); + + /* We can't do a bidirection bind as the ::notify comes from another + * thread, for other bits of empathy it's most simpler if it comes from + * the main thread */ + g_object_bind_property (self, "volume", self->priv->sink, "volume", + G_BINDING_DEFAULT); + + /* sync and callback for bouncing */ + g_object_get (self->priv->sink, "volume", &volume, NULL); + g_object_set (self, "volume", volume, NULL); + g_signal_connect (self->priv->sink, "notify::volume", + G_CALLBACK (empathy_audio_sink_volume_updated), self); + + return FALSE; +} + static GstPad * empathy_audio_sink_request_new_pad (GstElement *element, GstPadTemplate *templ, const gchar* name) { EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (element); - GstElement *bin, *volume, *resample, *audioconvert0, *audioconvert1; + GstElement *bin, *resample, *audioconvert0, *audioconvert1; GstPad *pad = NULL; GstPad *subpad, *filterpad; @@ -252,20 +319,30 @@ empathy_audio_sink_request_new_pad (GstElement *element, gst_bin_add (GST_BIN (bin), audioconvert1); - volume = gst_element_factory_make ("volume", NULL); - if (volume == NULL) + self->priv->sink = create_sink (self); + if (self->priv->sink == NULL) goto error; - gst_bin_add (GST_BIN (bin), volume); + if (GST_IS_STREAM_VOLUME (self->priv->sink)) + { + g_static_mutex_lock (&self->priv->volume_mutex); + if (self->priv->volume_idle_id == 0) + self->priv->volume_idle_id = g_idle_add ( + empathy_audio_sink_volume_idle_setup, self); + g_static_mutex_unlock (&self->priv->volume_mutex); + } + else + { + gchar *n = gst_element_get_name (self->priv->sink); - self->priv->sink = create_sink (); - if (self->priv->sink == NULL) - goto error; + DEBUG ("Element %s doesn't support volume", n); + g_free (n); + } gst_bin_add (GST_BIN (bin), self->priv->sink); if (!gst_element_link_many (audioconvert0, resample, audioconvert1, - volume, self->priv->sink, NULL)) + self->priv->sink, NULL)) goto error; filterpad = gst_element_get_static_pad (audioconvert0, "sink"); @@ -311,3 +388,14 @@ empathy_audio_sink_release_pad (GstElement *element, gst_pad_set_active (pad, FALSE); gst_element_remove_pad (element, pad); } + +void +empathy_audio_sink_set_echo_cancel (EmpathyGstAudioSink *sink, + gboolean echo_cancel) +{ + DEBUG ("Sink echo cancellation setting: %s", echo_cancel ? "on" : "off"); + sink->priv->echo_cancel = echo_cancel; + if (sink->priv->sink != NULL) + empathy_call_set_stream_properties (sink->priv->sink, + sink->priv->echo_cancel); +} diff --git a/src/empathy-audio-sink.h b/src/empathy-audio-sink.h index cc21fc46..ceb0bbe3 100644 --- a/src/empathy-audio-sink.h +++ b/src/empathy-audio-sink.h @@ -63,6 +63,8 @@ GstElement *empathy_audio_sink_new (void); void empathy_audio_sink_set_volume (EmpathyGstAudioSink *sink, gdouble volume); gdouble empathy_audio_sink_get_volume (EmpathyGstAudioSink *sink); +void empathy_audio_sink_set_echo_cancel (EmpathyGstAudioSink *sink, + gboolean echo_cancel); G_END_DECLS diff --git a/src/empathy-audio-src.c b/src/empathy-audio-src.c index bd3c433f..aa271fa1 100644 --- a/src/empathy-audio-src.c +++ b/src/empathy-audio-src.c @@ -23,6 +23,8 @@ #include #include +#include + #include #include @@ -47,19 +49,17 @@ static guint signals[LAST_SIGNAL] = {0}; enum { PROP_VOLUME = 1, + PROP_MUTE, PROP_RMS_LEVEL, PROP_PEAK_LEVEL, PROP_MICROPHONE, }; /* private structure */ -typedef struct _EmpathyGstAudioSrcPrivate EmpathyGstAudioSrcPrivate; - struct _EmpathyGstAudioSrcPrivate { gboolean dispose_has_run; GstElement *src; - GstElement *volume; GstElement *level; EmpathyMicMonitor *mic_monitor; @@ -72,14 +72,100 @@ struct _EmpathyGstAudioSrcPrivate gdouble peak_level; gdouble rms_level; + gdouble volume; + gboolean mute; + /* the mixer track on src we follow and adjust */ + GstMixerTrack *track; + GMutex *lock; - guint idle_id; + guint level_idle_id; + guint volume_idle_id; }; #define EMPATHY_GST_AUDIO_SRC_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), EMPATHY_TYPE_GST_AUDIO_SRC, \ EmpathyGstAudioSrcPrivate)) +/* There is no predefined maximum channels by gstreamer, just pick 32, which is + * the same as the pulseaudio maximum */ +#define MAX_MIC_CHANNELS 32 + +static void +empathy_audio_set_hw_mute (EmpathyGstAudioSrc *self, gboolean mute) +{ + g_mutex_lock (self->priv->lock); + /* If there is no mixer available ignore the setting */ + if (self->priv->track == NULL) + goto out; + + gst_mixer_set_mute (GST_MIXER (self->priv->src), self->priv->track, mute); + +out: + g_mutex_unlock (self->priv->lock); + self->priv->mute = mute; +} + +static gboolean +empathy_audio_src_get_hw_mute (EmpathyGstAudioSrc *self) +{ + gboolean result = self->priv->mute; + + g_mutex_lock (self->priv->lock); + if (self->priv->track == NULL) + goto out; + + result = GST_MIXER_TRACK_HAS_FLAG (self->priv->track, GST_MIXER_TRACK_MUTE); +out: + g_mutex_unlock (self->priv->lock); + + return result; +} + +static void +empathy_audio_src_set_hw_volume (EmpathyGstAudioSrc *self, + gdouble volume) +{ + gint volumes[MAX_MIC_CHANNELS]; + int i; + + g_mutex_lock (self->priv->lock); + /* If there is no mixer available ignore the setting */ + if (self->priv->track == NULL) + goto out; + + for (i = 0; i < MAX_MIC_CHANNELS; i++) + volumes[i] = self->priv->track->max_volume * volume; + + gst_mixer_set_volume (GST_MIXER (self->priv->src), + self->priv->track, volumes); + +out: + g_mutex_unlock (self->priv->lock); + + self->priv->volume = volume; +} + +static gdouble +empathy_audio_src_get_hw_volume (EmpathyGstAudioSrc *self) +{ + gint volumes[MAX_MIC_CHANNELS]; + gdouble result = self->priv->volume; + + g_mutex_lock (self->priv->lock); + if (self->priv->track == NULL) + goto out; + + gst_mixer_get_volume (GST_MIXER (self->priv->src), + self->priv->track, volumes); + result = volumes[0]/(gdouble)self->priv->track->max_volume; + +out: + g_mutex_unlock (self->priv->lock); + + return result; +} + + gboolean empathy_audio_src_supports_changing_mic (EmpathyGstAudioSrc *self) { @@ -106,7 +192,6 @@ empathy_audio_src_get_mic_index (EmpathyGstAudioSrc *self) return audio_src_idx; } - static void empathy_audio_src_microphone_changed_cb (EmpathyMicMonitor *monitor, guint source_output_idx, @@ -180,6 +265,43 @@ empathy_audio_src_source_output_index_notify (GObject *object, source_output_idx, empathy_audio_src_get_current_mic_cb, self); } +static GstMixerTrack * +empathy_audio_src_get_track (GstElement *src) +{ + const GList *t; + GstMixerTrack *track = NULL; + + if (!gst_element_implements_interface (src, GST_TYPE_MIXER)) + { + g_warning ("No mixer interface implementation, can't control volume"); + return NULL; + } + + for (t = gst_mixer_list_tracks (GST_MIXER (src)); + t != NULL; t = g_list_next (t)) + { + GstMixerTrack *tr = t->data; + if (!tp_strdiff (tr->label, "Master")) + { + track = tr; + break; + } + } + + if (track == NULL) + { + g_warning ("No suitable track found"); + } + else if (track->num_channels > MAX_MIC_CHANNELS) + { + g_warning ("Microphones with more then %d channels not supported ", + MAX_MIC_CHANNELS); + track = NULL; + } + + return track; +} + static GstElement * create_src (void) { @@ -207,7 +329,10 @@ create_src (void) if (src == NULL) return NULL; - empathy_call_set_stream_properties (src); + empathy_call_set_stream_properties (src, TRUE); + + /* Set latency (buffering on the PulseAudio side) of 20ms */ + g_object_set (src, "buffer-time", 20000, NULL); return src; } @@ -217,9 +342,13 @@ empathy_audio_src_init (EmpathyGstAudioSrc *obj) { EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (obj); GstPad *ghost, *src; + GstElement *capsfilter; + GstCaps *caps; + obj->priv = priv; priv->peak_level = -G_MAXDOUBLE; priv->lock = g_mutex_new (); + priv->volume = 1.0; priv->src = create_src (); if (priv->src == NULL) @@ -227,15 +356,25 @@ empathy_audio_src_init (EmpathyGstAudioSrc *obj) gst_bin_add (GST_BIN (obj), priv->src); - priv->volume = gst_element_factory_make ("volume", NULL); - g_object_ref (priv->volume); - - gst_bin_add (GST_BIN (obj), priv->volume); - gst_element_link (priv->src, priv->volume); + /* Explicitly state what format we want from pulsesrc. This pushes resampling + * and format conversion as early as possible, lowering the amount of data + * transferred and thus improving performance. When moving to GStreamer + * 0.11/1.0, this should change so that we actually request what the encoder + * wants downstream. */ + caps = gst_caps_new_simple ("audio/x-raw-int", + "channels", G_TYPE_INT, 1, + "width", G_TYPE_INT, 16, + "depth", G_TYPE_INT, 16, + "rate", G_TYPE_INT, 32000, + NULL); + capsfilter = gst_element_factory_make ("capsfilter", NULL); + g_object_set (G_OBJECT (capsfilter), "caps", caps, NULL); + gst_bin_add (GST_BIN (obj), capsfilter); + gst_element_link (priv->src, capsfilter); priv->level = gst_element_factory_make ("level", NULL); gst_bin_add (GST_BIN (obj), priv->level); - gst_element_link (priv->volume, priv->level); + gst_element_link (capsfilter, priv->level); src = gst_element_get_static_pad (priv->level, "src"); @@ -272,9 +411,13 @@ empathy_audio_src_set_property (GObject *object, switch (property_id) { case PROP_VOLUME: - empathy_audio_src_set_volume (EMPATHY_GST_AUDIO_SRC (object), + empathy_audio_src_set_hw_volume (EMPATHY_GST_AUDIO_SRC (object), g_value_get_double (value)); break; + case PROP_MUTE: + empathy_audio_set_hw_mute (EMPATHY_GST_AUDIO_SRC (object), + g_value_get_boolean (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } @@ -290,8 +433,10 @@ empathy_audio_src_get_property (GObject *object, switch (property_id) { case PROP_VOLUME: - g_value_set_double (value, - empathy_audio_src_get_volume (self)); + g_value_set_double (value, priv->volume); + break; + case PROP_MUTE: + g_value_set_boolean (value, priv->mute); break; case PROP_PEAK_LEVEL: g_mutex_lock (priv->lock); @@ -336,6 +481,11 @@ empathy_audio_src_class_init (EmpathyGstAudioSrcClass G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_VOLUME, param_spec); + param_spec = g_param_spec_boolean ("mute", "Mute", "mute contol", + FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_MUTE, param_spec); + param_spec = g_param_spec_double ("peak-level", "peak level", "peak level", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); @@ -379,10 +529,13 @@ empathy_audio_src_dispose (GObject *object) priv->dispose_has_run = TRUE; - if (priv->idle_id != 0) - g_source_remove (priv->idle_id); + if (priv->level_idle_id != 0) + g_source_remove (priv->level_idle_id); + priv->level_idle_id = 0; - priv->idle_id = 0; + if (priv->volume_idle_id != 0) + g_source_remove (priv->volume_idle_id); + priv->volume_idle_id = 0; tp_clear_object (&priv->mic_monitor); @@ -414,21 +567,51 @@ empathy_audio_src_levels_updated (gpointer user_data) g_signal_emit (self, signals[PEAK_LEVEL_CHANGED], 0, priv->peak_level); g_signal_emit (self, signals[RMS_LEVEL_CHANGED], 0, priv->rms_level); - priv->idle_id = 0; + priv->level_idle_id = 0; g_mutex_unlock (priv->lock); return FALSE; } +static gboolean +empathy_audio_src_volume_changed (gpointer user_data) +{ + EmpathyGstAudioSrc *self = EMPATHY_GST_AUDIO_SRC (user_data); + EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (self); + gdouble volume; + gboolean mute; + + g_mutex_lock (priv->lock); + priv->volume_idle_id = 0; + g_mutex_unlock (priv->lock); + + volume = empathy_audio_src_get_hw_volume (self); + + if (volume != priv->volume) + { + priv->volume = volume; + g_object_notify (G_OBJECT (self), "volume"); + } + + mute = empathy_audio_src_get_hw_mute (self); + if (mute != priv->mute) + { + priv->mute = mute; + g_object_notify (G_OBJECT (self), "mute"); + } + + return FALSE; +} + static void empathy_audio_src_handle_message (GstBin *bin, GstMessage *message) { EmpathyGstAudioSrc *self = EMPATHY_GST_AUDIO_SRC (bin); EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (self); - if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT && - GST_MESSAGE_SRC (message) == GST_OBJECT (priv->level)) + if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT && + GST_MESSAGE_SRC (message) == GST_OBJECT (priv->level)) { const GstStructure *s; const gchar *name; @@ -473,11 +656,63 @@ empathy_audio_src_handle_message (GstBin *bin, GstMessage *message) priv->peak_level = peak; priv->rms_level = rms; - if (priv->idle_id == 0) - priv->idle_id = g_idle_add (empathy_audio_src_levels_updated, self); + if (priv->level_idle_id == 0) + priv->level_idle_id = g_idle_add ( + empathy_audio_src_levels_updated, self); g_mutex_unlock (priv->lock); } + else if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT && + GST_MESSAGE_SRC (message) == GST_OBJECT (priv->src)) + { + GstMixerTrack *track = NULL; + + /* Listen for mute or volume changes on the src element */ + if (gst_mixer_message_get_type (message) == + GST_MIXER_MESSAGE_VOLUME_CHANGED) + gst_mixer_message_parse_volume_changed (message, &track, + NULL, NULL); + + if (gst_mixer_message_get_type (message) == + GST_MIXER_MESSAGE_MUTE_TOGGLED) + gst_mixer_message_parse_mute_toggled (message, &track, NULL); + + g_mutex_lock (priv->lock); + + if (track != NULL && track == priv->track && priv->volume_idle_id == 0) + priv->volume_idle_id = g_idle_add ( + empathy_audio_src_volume_changed, self); + + g_mutex_unlock (priv->lock); + } + else if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STATE_CHANGED && + GST_MESSAGE_SRC (message) == GST_OBJECT (priv->src)) + { + GstState old, new; + + gst_message_parse_state_changed (message, &old, &new, NULL); + + /* GstMixer is only available in state >= READY, so only start + * controlling the source element when going to ready state and stop + * doing so when going below ready. Furthermore once we have mixer read + * the current volume level from it and remove the settings done by + * Empathy. We want to pick up the level pulseaudio saved */ + if (old == GST_STATE_NULL && new == GST_STATE_READY) + { + g_mutex_lock (priv->lock); + priv->track = empathy_audio_src_get_track (priv->src); + if (priv->track != NULL) + priv->volume_idle_id = g_idle_add ( + empathy_audio_src_volume_changed, self); + g_mutex_unlock (priv->lock); + } + else if (old == GST_STATE_READY && new == GST_STATE_NULL) + { + g_mutex_lock (priv->lock); + priv->track = NULL; + g_mutex_unlock (priv->lock); + } + } out: GST_BIN_CLASS (empathy_audio_src_parent_class)->handle_message (bin, @@ -499,33 +734,23 @@ empathy_audio_src_new (void) } void -empathy_audio_src_set_volume (EmpathyGstAudioSrc *src, gdouble volume) +empathy_audio_src_set_echo_cancel (EmpathyGstAudioSrc *src, + gboolean enable) { - EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (src); - GParamSpec *pspec; - GParamSpecDouble *pspec_double; - - pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (priv->volume), - "volume"); - - g_assert (pspec != NULL); - - pspec_double = G_PARAM_SPEC_DOUBLE (pspec); - - volume = CLAMP (volume, pspec_double->minimum, pspec_double->maximum); + DEBUG ("Src echo cancellation setting: %s", enable ? "on" : "off"); + empathy_call_set_stream_properties (src->priv->src, enable); +} - g_object_set (G_OBJECT (priv->volume), "volume", volume, NULL); +void +empathy_audio_src_set_volume (EmpathyGstAudioSrc *src, gdouble volume) +{ + g_object_set (src, "volume", volume, NULL); } gdouble empathy_audio_src_get_volume (EmpathyGstAudioSrc *src) { - EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (src); - gdouble volume; - - g_object_get (G_OBJECT (priv->volume), "volume", &volume, NULL); - - return volume; + return src->priv->volume; } guint diff --git a/src/empathy-audio-src.h b/src/empathy-audio-src.h index 14813abc..ff568ce3 100644 --- a/src/empathy-audio-src.h +++ b/src/empathy-audio-src.h @@ -29,6 +29,8 @@ G_BEGIN_DECLS typedef struct _EmpathyGstAudioSrc EmpathyGstAudioSrc; typedef struct _EmpathyGstAudioSrcClass EmpathyGstAudioSrcClass; +typedef struct _EmpathyGstAudioSrcPrivate EmpathyGstAudioSrcPrivate; + struct _EmpathyGstAudioSrcClass { GstBinClass parent_class; @@ -36,6 +38,7 @@ struct _EmpathyGstAudioSrcClass { struct _EmpathyGstAudioSrc { GstBin parent; + EmpathyGstAudioSrcPrivate *priv; }; GType empathy_audio_src_get_type (void); @@ -59,6 +62,9 @@ GType empathy_audio_src_get_type (void); GstElement *empathy_audio_src_new (void); +void empathy_audio_src_set_echo_cancel (EmpathyGstAudioSrc *src, gboolean + enable); + void empathy_audio_src_set_volume (EmpathyGstAudioSrc *src, gdouble volume); gdouble empathy_audio_src_get_volume (EmpathyGstAudioSrc *src); diff --git a/src/empathy-auth-client.c b/src/empathy-auth-client.c index bb744684..5b3e48ce 100644 --- a/src/empathy-auth-client.c +++ b/src/empathy-auth-client.c @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -235,6 +236,38 @@ auth_factory_new_sasl_handler_cb (EmpathyAuthFactory *factory, } } +static void +retry_account_cb (GtkWidget *dialog, + TpAccount *account, + const gchar *password, + EmpathyAuthFactory *factory) +{ + DEBUG ("Try reconnecting to %s", tp_account_get_path_suffix (account)); + + empathy_auth_factory_save_retry_password (factory, account, password); + + tp_account_reconnect_async (account, NULL, NULL); +} + +static void +auth_factory_auth_passsword_failed (EmpathyAuthFactory *factory, + TpAccount *account, + const gchar *password, + gpointer user_data) +{ + GtkWidget *dialog; + + DEBUG ("Authentification on %s failed, popup password dialog", + tp_account_get_path_suffix (account)); + + dialog = empathy_bad_password_dialog_new (account, password); + + tp_g_signal_connect_object (dialog, "retry", + G_CALLBACK (retry_account_cb), factory, 0); + + gtk_widget_show (dialog); +} + int main (int argc, char **argv) @@ -294,6 +327,9 @@ main (int argc, g_signal_connect (factory, "new-server-sasl-handler", G_CALLBACK (auth_factory_new_sasl_handler_cb), NULL); + g_signal_connect (factory, "auth-password-failed", + G_CALLBACK (auth_factory_auth_passsword_failed), NULL); + if (!empathy_auth_factory_register (factory, &error)) { g_critical ("Failed to register the auth factory: %s\n", error->message); diff --git a/src/empathy-call-handler.c b/src/empathy-call-handler.c index ef07c503..4014ad6c 100644 --- a/src/empathy-call-handler.c +++ b/src/empathy-call-handler.c @@ -47,8 +47,8 @@ enum { CONFERENCE_ADDED, CONFERENCE_REMOVED, SRC_PAD_ADDED, - SINK_PAD_ADDED, - SINK_PAD_REMOVED, + CONTENT_ADDED, + CONTENT_REMOVED, CLOSED, CANDIDATES_CHANGED, STATE_CHANGED, @@ -479,21 +479,21 @@ empathy_call_handler_class_init (EmpathyCallHandlerClass *klass) G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, - 2, GST_TYPE_PAD, G_TYPE_UINT); + 2, TF_TYPE_CONTENT, GST_TYPE_PAD); - signals[SINK_PAD_ADDED] = - g_signal_new ("sink-pad-added", G_TYPE_FROM_CLASS (klass), + signals[CONTENT_ADDED] = + g_signal_new ("content-added", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, - 2, GST_TYPE_PAD, G_TYPE_UINT); + 1, TF_TYPE_CONTENT); - signals[SINK_PAD_REMOVED] = - g_signal_new ("sink-pad-removed", G_TYPE_FROM_CLASS (klass), + signals[CONTENT_REMOVED] = + g_signal_new ("content-removed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, - 2, GST_TYPE_PAD, G_TYPE_UINT); + 1, TF_TYPE_CONTENT); signals[CLOSED] = g_signal_new ("closed", G_TYPE_FROM_CLASS (klass), @@ -763,13 +763,10 @@ on_tf_content_src_pad_added_cb (TfContent *content, FsCodec *codec, EmpathyCallHandler *handler) { - guint media_type; gboolean retval; - g_object_get (content, "media-type", &media_type, NULL); - g_signal_emit (G_OBJECT (handler), signals[SRC_PAD_ADDED], 0, - pad, media_type, &retval); + content, pad, &retval); if (!retval) g_idle_add (src_pad_added_error_idle, g_object_ref (content)); @@ -806,7 +803,6 @@ on_tf_channel_content_added_cb (TfChannel *tfchannel, EmpathyCallHandler *handler) { FsMediaType mtype; - GstPad *spad; FsSession *session; // FsStream *fs_stream; FsCodec *codec; @@ -822,11 +818,8 @@ on_tf_channel_content_added_cb (TfChannel *tfchannel, G_CALLBACK (on_tf_content_stop_sending_cb), handler); #endif - g_object_get (content, "media-type", &mtype, - "sink-pad", &spad, NULL); - - g_signal_emit (G_OBJECT (handler), signals[SINK_PAD_ADDED], 0, - spad, mtype, &retval); + g_signal_emit (G_OBJECT (handler), signals[CONTENT_ADDED], 0, + content, &retval); if (!retval) tf_content_error (content, 0 /* FIXME */, @@ -852,6 +845,8 @@ on_tf_channel_content_added_cb (TfChannel *tfchannel, tp_clear_object (&fs_stream); */ + g_object_get (content, "media-type", &mtype, NULL); + if (mtype == FS_MEDIA_TYPE_VIDEO) { guint framerate, width, height; @@ -878,8 +873,6 @@ on_tf_channel_content_added_cb (TfChannel *tfchannel, g_signal_emit (G_OBJECT (handler), signals[RESOLUTION_CHANGED], 0, width, height); } - - gst_object_unref (spad); } static void @@ -887,17 +880,12 @@ on_tf_channel_content_removed_cb (TfChannel *tfchannel, TfContent *content, EmpathyCallHandler *handler) { - FsMediaType mtype; - GstPad *spad; gboolean retval; DEBUG ("removing content"); - g_object_get (content, "media-type", &mtype, - "sink-pad", &spad, NULL); - - g_signal_emit (G_OBJECT (handler), signals[SINK_PAD_REMOVED], 0, - spad, mtype, &retval); + g_signal_emit (G_OBJECT (handler), signals[CONTENT_REMOVED], 0, + content, &retval); if (!retval) { diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c index ab7dbeef..7a4994c9 100644 --- a/src/empathy-call-window.c +++ b/src/empathy-call-window.c @@ -167,6 +167,7 @@ struct _EmpathyCallWindowPriv GtkWidget *audio_call_button; GtkWidget *video_call_button; GtkWidget *mic_button; + GtkWidget *volume_button; GtkWidget *camera_button; GtkWidget *dialpad_button; GtkWidget *toolbar; @@ -200,8 +201,6 @@ struct _EmpathyCallWindowPriv gulong video_output_motion_handler_id; guint bus_message_source_id; - gdouble volume; - /* String that contains the queued tones to send after the current ones are sent */ GString *tones; @@ -229,6 +228,7 @@ struct _EmpathyCallWindowPriv GstElement *video_output_sink; GstElement *audio_input; GstElement *audio_output; + gboolean audio_output_added; GstElement *pipeline; GstElement *video_tee; @@ -287,9 +287,6 @@ static gboolean empathy_call_window_state_event_cb (GtkWidget *widget, static void empathy_call_window_set_send_video (EmpathyCallWindow *window, CameraState state); -static void empathy_call_window_mic_toggled_cb ( - GtkToggleToolButton *toggle, EmpathyCallWindow *window); - static void empathy_call_window_hangup_cb (gpointer object, EmpathyCallWindow *window); @@ -323,10 +320,6 @@ static void empathy_call_window_status_message (EmpathyCallWindow *window, static gboolean empathy_call_window_bus_message (GstBus *bus, GstMessage *message, gpointer user_data); -static void -empathy_call_window_volume_changed_cb (GtkScaleButton *button, - gdouble value, EmpathyCallWindow *window); - static void empathy_call_window_show_hangup_button (EmpathyCallWindow *self, gboolean show) @@ -410,39 +403,6 @@ dtmf_start_tone_cb (EmpathyDialpadWidget *dialpad, empathy_call_window_maybe_emit_tones (self); } -static void -empathy_call_window_mic_volume_changed (EmpathyCallWindow *self) -{ - EmpathyCallWindowPriv *priv = GET_PRIV (self); - gdouble volume; - - volume = g_settings_get_double (priv->settings, - EMPATHY_PREFS_CALL_SOUND_VOLUME) / 100.0; - - /* Don't store the volume because of muting */ - if (volume > 0 || gtk_toggle_tool_button_get_active ( - GTK_TOGGLE_TOOL_BUTTON (priv->mic_button))) - priv->volume = volume; - - /* Ensure that the toggle button is active if the volume is > 0 and inactive - * if it's smaller than 0 */ - if ((volume > 0) != gtk_toggle_tool_button_get_active ( - GTK_TOGGLE_TOOL_BUTTON (priv->mic_button))) - gtk_toggle_tool_button_set_active ( - GTK_TOGGLE_TOOL_BUTTON (priv->mic_button), volume > 0); - - empathy_audio_src_set_volume (EMPATHY_GST_AUDIO_SRC (priv->audio_input), - volume); -} - -static void -empathy_call_window_prefs_volume_changed_cb (GSettings *settings, - gchar *key, - EmpathyCallWindow *self) -{ - empathy_call_window_mic_volume_changed (self); -} - static void empathy_call_window_raise_actors (EmpathyCallWindow *self) { @@ -502,6 +462,40 @@ create_video_input (EmpathyCallWindow *self) gst_object_sink (priv->video_input); } +static gboolean +audio_control_volume_to_element (GBinding *binding, + const GValue *source_value, + GValue *target_value, + gpointer user_data) +{ + /* AudioControl volume is 0-255, with -1 for unknown */ + gint hv; + + hv = g_value_get_int (source_value); + if (hv < 0) + return FALSE; + + hv = MIN (hv, 255); + g_value_set_double (target_value, hv/255.0); + + return TRUE; +} + +static gboolean +element_volume_to_audio_control (GBinding *binding, + const GValue *source_value, + GValue *target_value, + gpointer user_data) +{ + gdouble ev; + + ev = g_value_get_double (source_value); + ev = CLAMP (ev, 0.0, 1.0); + + g_value_set_int (target_value, ev * 255); + return TRUE; +} + static void create_audio_input (EmpathyCallWindow *self) { @@ -511,6 +505,11 @@ create_audio_input (EmpathyCallWindow *self) priv->audio_input = empathy_audio_src_new (); gst_object_ref (priv->audio_input); gst_object_sink (priv->audio_input); + + g_object_bind_property (priv->mic_button, "active", + priv->audio_input, "mute", + G_BINDING_BIDIRECTIONAL | + G_BINDING_INVERT_BOOLEAN | G_BINDING_SYNC_CREATE); } static void @@ -1644,6 +1643,7 @@ empathy_call_window_init (EmpathyCallWindow *self) "audiocall", &priv->audio_call_button, "videocall", &priv->video_call_button, "microphone", &priv->mic_button, + "volume", &priv->volume_button, "camera", &priv->camera_button, "hangup", &priv->hangup_button, "dialpad", &priv->dialpad_button, @@ -1672,8 +1672,6 @@ empathy_call_window_init (EmpathyCallWindow *self) "hangup", "clicked", empathy_call_window_hangup_cb, "audiocall", "clicked", empathy_call_window_audio_call_cb, "videocall", "clicked", empathy_call_window_video_call_cb, - "volume", "value-changed", empathy_call_window_volume_changed_cb, - "microphone", "toggled", empathy_call_window_mic_toggled_cb, "camera", "toggled", empathy_call_window_camera_toggled_cb, "dialpad", "toggled", empathy_call_window_dialpad_cb, "menufullscreen", "activate", empathy_call_window_fullscreen_cb, @@ -1704,7 +1702,8 @@ empathy_call_window_init (EmpathyCallWindow *self) gtk_container_add (GTK_CONTAINER (self), top_vbox); - priv->content_hbox = gtk_hbox_new (FALSE, CONTENT_HBOX_SPACING); + priv->content_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, + CONTENT_HBOX_SPACING); gtk_container_set_border_width (GTK_CONTAINER (priv->content_hbox), CONTENT_HBOX_BORDER_WIDTH); gtk_box_pack_start (GTK_BOX (priv->pane), priv->content_hbox, @@ -1718,6 +1717,9 @@ empathy_call_window_init (EmpathyCallWindow *self) priv->video_container = gtk_clutter_embed_new (); + gtk_widget_set_size_request (priv->video_container, + EMPATHY_VIDEO_WIDGET_DEFAULT_WIDTH, EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT); + /* Set the background color to that of the rest of the window */ context = gtk_widget_get_style_context (priv->content_hbox); gtk_style_context_get_background_color (context, @@ -1870,13 +1872,6 @@ empathy_call_window_init (EmpathyCallWindow *self) empathy_call_window_show_hangup_button (self, TRUE); - /* Retrieve initial volume */ - priv->volume = g_settings_get_double (priv->settings, - EMPATHY_PREFS_CALL_SOUND_VOLUME) / 100.0; - - g_signal_connect (priv->settings, "changed::"EMPATHY_PREFS_CALL_SOUND_VOLUME, - G_CALLBACK (empathy_call_window_prefs_volume_changed_cb), self); - empathy_geometry_bind (GTK_WINDOW (self), "call-window"); /* These signals are used to track the window position and save it * when the window is destroyed. We need to do this as we don't want @@ -2540,6 +2535,7 @@ empathy_call_window_reset_pipeline (EmpathyCallWindow *self) if (priv->audio_output != NULL) g_object_unref (priv->audio_output); priv->audio_output = NULL; + priv->audio_output_added = FALSE; if (priv->video_tee != NULL) g_object_unref (priv->video_tee); @@ -2691,15 +2687,34 @@ empathy_call_window_channel_closed_cb (EmpathyCallHandler *handler, } static gboolean -empathy_call_window_sink_removed_cb (EmpathyCallHandler *handler, - GstPad *sink, - FsMediaType media_type, +empathy_call_window_content_is_raw (TfContent *content) +{ + FsConference *conference; + gboolean israw; + + g_object_get (content, "fs-conference", &conference, NULL); + g_assert (conference != NULL); + + /* FIXME: Ugly hack, update when moving a packetization property into + * farstream */ + israw = g_str_has_prefix (GST_OBJECT_NAME (conference), "fsrawconf"); + gst_object_unref (conference); + + return israw; +} + +static gboolean +empathy_call_window_content_removed_cb (EmpathyCallHandler *handler, + TfContent *content, EmpathyCallWindow *self) { EmpathyCallWindowPriv *priv = GET_PRIV (self); + FsMediaType media_type; DEBUG ("removing content"); + g_object_get (content, "media-type", &media_type, NULL); + /* * This assumes that there is only one video stream per channel... */ @@ -2718,7 +2733,6 @@ empathy_call_window_sink_removed_cb (EmpathyCallHandler *handler, gst_bin_remove (GST_BIN (priv->pipeline), output); gst_bin_remove (GST_BIN (priv->pipeline), priv->funnel); priv->funnel = NULL; - return TRUE; } } else if (media_type == FS_MEDIA_TYPE_AUDIO) @@ -2727,13 +2741,18 @@ empathy_call_window_sink_removed_cb (EmpathyCallHandler *handler, { gst_element_set_state (priv->audio_output, GST_STATE_NULL); - gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_output); + if (priv->audio_output_added) + gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_output); priv->audio_output = NULL; - return TRUE; + priv->audio_output_added = FALSE; } } + else + { + g_assert_not_reached (); + } - return FALSE; + return TRUE; } static void @@ -2847,17 +2866,15 @@ empathy_call_window_get_video_sink_pad (EmpathyCallWindow *self) /* Called with global lock held */ static GstPad * -empathy_call_window_get_audio_sink_pad (EmpathyCallWindow *self) +empathy_call_window_get_audio_sink_pad (EmpathyCallWindow *self, + TfContent *content) { EmpathyCallWindowPriv *priv = GET_PRIV (self); GstPad *pad; GstPadTemplate *template; - if (priv->audio_output == NULL) + if (!priv->audio_output_added) { - priv->audio_output = empathy_audio_sink_new (); - g_object_ref_sink (priv->audio_output); - if (!gst_bin_add (GST_BIN (priv->pipeline), priv->audio_output)) { g_warning ("Could not add audio sink to pipeline"); @@ -2986,7 +3003,7 @@ display_error (EmpathyCallWindow *self, content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar)); /* hbox containing the image and the messages vbox */ - hbox = gtk_hbox_new (FALSE, 3); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3); gtk_container_add (GTK_CONTAINER (content_area), hbox); /* Add image */ @@ -2994,7 +3011,7 @@ display_error (EmpathyCallWindow *self, gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0); /* vbox containing the main message and the details expander */ - vbox = gtk_vbox_new (FALSE, 3); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); /* Add text */ @@ -3322,20 +3339,23 @@ empathy_call_window_video_probe_cb (GstPad *pad, /* Called from the streaming thread */ static gboolean empathy_call_window_src_added_cb (EmpathyCallHandler *handler, - GstPad *src, guint media_type, gpointer user_data) + TfContent *content, GstPad *src, gpointer user_data) { EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (user_data); EmpathyCallWindowPriv *priv = GET_PRIV (self); gboolean retval = FALSE; + guint media_type; GstPad *pad; g_mutex_lock (priv->lock); + g_object_get (content, "media-type", &media_type, NULL); + switch (media_type) { case TP_MEDIA_STREAM_TYPE_AUDIO: - pad = empathy_call_window_get_audio_sink_pad (self); + pad = empathy_call_window_get_audio_sink_pad (self, content); break; case TP_MEDIA_STREAM_TYPE_VIDEO: g_idle_add (empathy_call_window_show_video_output_cb, self); @@ -3400,18 +3420,88 @@ empathy_call_window_src_added_cb (EmpathyCallHandler *handler, return TRUE; } +static void +empathy_call_window_prepare_audio_output (EmpathyCallWindow *self, + TfContent *content) +{ + EmpathyCallWindowPriv *priv = self->priv; + + g_assert (priv->audio_output_added == FALSE); + g_assert (priv->audio_output == FALSE); + + priv->audio_output = empathy_audio_sink_new (); + g_object_ref_sink (priv->audio_output); + + /* volume button to output volume linking */ + g_object_bind_property (priv->audio_output, "volume", + priv->volume_button, "value", + G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); + + g_object_bind_property_full (content, "requested-output-volume", + priv->audio_output, "volume", + G_BINDING_DEFAULT, + audio_control_volume_to_element, + element_volume_to_audio_control, + NULL, NULL); + + /* Link volumes together, sync the current audio input volume property + * back to farstream first */ + g_object_bind_property_full (priv->audio_output, "volume", + content, "reported-output-volume", + G_BINDING_SYNC_CREATE, + element_volume_to_audio_control, + audio_control_volume_to_element, + NULL, NULL); + + /* For raw audio conferences assume that the producer of the raw data + * has already processed it, so turn off any echo cancellation and any + * other audio improvements that come with it */ + empathy_audio_sink_set_echo_cancel ( + EMPATHY_GST_AUDIO_SINK (priv->audio_output), + !empathy_call_window_content_is_raw (content)); +} + + static gboolean -empathy_call_window_sink_added_cb (EmpathyCallHandler *handler, - GstPad *sink, FsMediaType media_type, gpointer user_data) +empathy_call_window_content_added_cb (EmpathyCallHandler *handler, + TfContent *content, gpointer user_data) { EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (user_data); EmpathyCallWindowPriv *priv = GET_PRIV (self); - GstPad *pad; + GstPad *sink, *pad; + FsMediaType media_type; gboolean retval = FALSE; + g_object_get (content, "media-type", &media_type, "sink-pad", &sink, NULL); + g_assert (sink != NULL); + switch (media_type) { case FS_MEDIA_TYPE_AUDIO: + + /* For raw audio conferences assume that the receiver of the raw data + * wants it unprocessed, so turn off any echo cancellation and any + * other audio improvements that come with it */ + empathy_audio_src_set_echo_cancel ( + EMPATHY_GST_AUDIO_SRC (priv->audio_input), + !empathy_call_window_content_is_raw (content)); + + /* Link volumes together, sync the current audio input volume property + * back to farstream first */ + g_object_bind_property_full (content, "requested-input-volume", + priv->audio_input, "volume", + G_BINDING_DEFAULT, + audio_control_volume_to_element, + element_volume_to_audio_control, + NULL, NULL); + + g_object_bind_property_full (priv->audio_input, "volume", + content, "reported-input-volume", + G_BINDING_SYNC_CREATE, + element_volume_to_audio_control, + audio_control_volume_to_element, + NULL, NULL); + if (!gst_bin_add (GST_BIN (priv->pipeline), priv->audio_input)) { g_warning ("Could not add audio source to pipeline"); @@ -3441,6 +3531,9 @@ empathy_call_window_sink_added_cb (EmpathyCallHandler *handler, break; } + /* Prepare our audio output, not added yet though */ + empathy_call_window_prepare_audio_output (self, content); + retval = TRUE; break; case FS_MEDIA_TYPE_VIDEO: @@ -3461,6 +3554,7 @@ empathy_call_window_sink_added_cb (EmpathyCallHandler *handler, g_assert_not_reached (); } + gst_object_unref (sink); return retval; } @@ -3705,10 +3799,10 @@ empathy_call_window_connect_handler (EmpathyCallWindow *self) G_CALLBACK (empathy_call_window_channel_closed_cb), self); g_signal_connect (priv->handler, "src-pad-added", G_CALLBACK (empathy_call_window_src_added_cb), self); - g_signal_connect (priv->handler, "sink-pad-added", - G_CALLBACK (empathy_call_window_sink_added_cb), self); - g_signal_connect (priv->handler, "sink-pad-removed", - G_CALLBACK (empathy_call_window_sink_removed_cb), self); + g_signal_connect (priv->handler, "content-added", + G_CALLBACK (empathy_call_window_content_added_cb), self); + g_signal_connect (priv->handler, "content-removed", + G_CALLBACK (empathy_call_window_content_removed_cb), self); /* We connect to ::call-channel unconditionally since we'll * get new channels if we hangup and redial or if we reuse the @@ -3930,40 +4024,6 @@ empathy_call_window_set_send_video (EmpathyCallWindow *window, g_object_unref (call); } -static void -empathy_call_window_mic_toggled_cb (GtkToggleToolButton *toggle, - EmpathyCallWindow *self) -{ - EmpathyCallWindowPriv *priv = GET_PRIV (self); - gboolean active; - - active = (gtk_toggle_tool_button_get_active (toggle)); - - /* We don't want the settings callback to react to this change to avoid - * a loop. */ - g_signal_handlers_block_by_func (priv->settings, - empathy_call_window_prefs_volume_changed_cb, self); - - if (active) - { - g_settings_set_double (priv->settings, EMPATHY_PREFS_CALL_SOUND_VOLUME, - priv->volume * 100); - } - else - { - /* TODO, Instead of setting the input volume to 0 we should probably - * stop sending but this would cause the audio call to drop if both - * sides mute at the same time on certain CMs AFAIK. Need to revisit this - * in the future. GNOME #574574 - */ - g_settings_set_double (priv->settings, EMPATHY_PREFS_CALL_SOUND_VOLUME, - 0); - } - - g_signal_handlers_unblock_by_func (priv->settings, - empathy_call_window_prefs_volume_changed_cb, self); -} - static void empathy_call_window_hangup_cb (gpointer object, EmpathyCallWindow *self) @@ -3983,12 +4043,6 @@ empathy_call_window_restart_call (EmpathyCallWindow *window) (GtkCallback) gtk_widget_destroy, NULL); create_video_output_widget (window); - - /* While the call was disconnected, the input volume might have changed. - * However, since the audio_input source was destroyed, its volume has not - * been updated during that time. That's why we manually update it here */ - empathy_call_window_mic_volume_changed (window); - priv->outgoing = TRUE; empathy_call_window_set_state_connecting (window); @@ -4100,19 +4154,6 @@ empathy_call_window_status_message (EmpathyCallWindow *self, gtk_label_set_label (GTK_LABEL (self->priv->status_label), message); } -static void -empathy_call_window_volume_changed_cb (GtkScaleButton *button, - gdouble value, EmpathyCallWindow *window) -{ - EmpathyCallWindowPriv *priv = GET_PRIV (window); - - if (priv->audio_output == NULL) - return; - - empathy_audio_sink_set_volume (EMPATHY_GST_AUDIO_SINK (priv->audio_output), - value); -} - GtkUIManager * empathy_call_window_get_ui_manager (EmpathyCallWindow *window) { @@ -4134,3 +4175,23 @@ empathy_call_window_get_video_src (EmpathyCallWindow *self) { return EMPATHY_GST_VIDEO_SRC (self->priv->video_input); } + +void +empathy_call_window_change_webcam (EmpathyCallWindow *self, + const gchar *device) +{ + EmpathyGstVideoSrc *video; + gboolean running; + + /* Restart the camera only if it's already running */ + running = (self->priv->video_preview != NULL); + video = empathy_call_window_get_video_src (self); + + if (running) + empathy_call_window_play_camera (self, FALSE); + + empathy_video_src_change_device (video, device); + + if (running) + empathy_call_window_play_camera (self, TRUE); +} diff --git a/src/empathy-call-window.h b/src/empathy-call-window.h index 81cf170a..abaae276 100644 --- a/src/empathy-call-window.h +++ b/src/empathy-call-window.h @@ -78,6 +78,9 @@ EmpathyGstVideoSrc *empathy_call_window_get_video_src (EmpathyCallWindow *window void empathy_call_window_play_camera (EmpathyCallWindow *self, gboolean play); +void empathy_call_window_change_webcam (EmpathyCallWindow *self, + const gchar *device); + G_END_DECLS #endif /* #ifndef __EMPATHY_CALL_WINDOW_H__*/ diff --git a/src/empathy-camera-menu.c b/src/empathy-camera-menu.c index cee11d75..9633d84f 100644 --- a/src/empathy-camera-menu.c +++ b/src/empathy-camera-menu.c @@ -146,9 +146,7 @@ empathy_camera_menu_activate_cb (GtkAction *action, if (!tp_strdiff (device, current_device)) goto out; - empathy_call_window_play_camera (self->priv->window, FALSE); - empathy_video_src_change_device (video, device); - empathy_call_window_play_camera (self->priv->window, TRUE); + empathy_call_window_change_webcam (self->priv->window, device); out: g_free (current_device); diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c index 46f76466..9ad6b297 100644 --- a/src/empathy-chat-window.c +++ b/src/empathy-chat-window.c @@ -269,7 +269,7 @@ chat_window_create_label (EmpathyChatWindow *window, PangoAttribute *attr; /* The spacing between the button and the label. */ - hbox = gtk_hbox_new (FALSE, 0); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); event_box = gtk_event_box_new (); gtk_event_box_set_visible_window (GTK_EVENT_BOX (event_box), FALSE); @@ -295,7 +295,7 @@ chat_window_create_label (EmpathyChatWindow *window, status_image = gtk_image_new (); /* Spacing between the icon and label. */ - event_box_hbox = gtk_hbox_new (FALSE, 0); + event_box_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (event_box_hbox), status_image, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (event_box_hbox), name_label, TRUE, TRUE, 0); diff --git a/src/empathy-debug-window.c b/src/empathy-debug-window.c index 294c6afe..b298600a 100644 --- a/src/empathy-debug-window.c +++ b/src/empathy-debug-window.c @@ -631,7 +631,7 @@ get_cm_display_name (EmpathyDebugWindow *self, retval = g_strdup (cm_name); } - g_hash_table_destroy (protocols); + g_hash_table_unref (protocols); return retval; } @@ -1439,7 +1439,7 @@ am_prepared_cb (GObject *am, g_signal_connect (object, "key-press-event", G_CALLBACK (debug_window_key_press_event_cb), NULL); - vbox = gtk_vbox_new (FALSE, 0); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add (GTK_CONTAINER (object), vbox); gtk_widget_show (vbox); @@ -1721,7 +1721,7 @@ debug_window_finalize (GObject *object) debug_message_list_free (values); } - g_hash_table_destroy (priv->cache); + g_hash_table_unref (priv->cache); (G_OBJECT_CLASS (empathy_debug_window_parent_class)->finalize) (object); } diff --git a/src/empathy-ft-manager.c b/src/empathy-ft-manager.c index bc15262a..18ca1938 100644 --- a/src/empathy-ft-manager.c +++ b/src/empathy-ft-manager.c @@ -1081,7 +1081,7 @@ empathy_ft_manager_finalize (GObject *object) DEBUG ("FT Manager %p", object); - g_hash_table_destroy (priv->ft_handler_to_row_ref); + g_hash_table_unref (priv->ft_handler_to_row_ref); G_OBJECT_CLASS (empathy_ft_manager_parent_class)->finalize (object); } diff --git a/src/empathy-import-dialog.c b/src/empathy-import-dialog.c index da0c9d3e..77d11298 100644 --- a/src/empathy-import-dialog.c +++ b/src/empathy-import-dialog.c @@ -78,8 +78,8 @@ import_dialog_show_warning_message (EmpathyImportDialog *self) { GtkWidget *hbox, *vbox, *w; - vbox = gtk_vbox_new (FALSE, 12); - hbox = gtk_hbox_new (FALSE, 12); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); w = gtk_label_new (_("No accounts to import could be found. Empathy " "currently only supports importing accounts from Pidgin.")); diff --git a/src/empathy-import-utils.c b/src/empathy-import-utils.c index bf7f29e3..0c878e8f 100644 --- a/src/empathy-import-utils.c +++ b/src/empathy-import-utils.c @@ -55,7 +55,7 @@ empathy_import_account_data_free (EmpathyImportAccountData *data) if (data->connection_manager != NULL) g_free (data->connection_manager); if (data->settings != NULL) - g_hash_table_destroy (data->settings); + g_hash_table_unref (data->settings); if (data->source != NULL) g_free (data->source); diff --git a/src/empathy-invite-participant-dialog.c b/src/empathy-invite-participant-dialog.c index 8d9d7129..f905c827 100644 --- a/src/empathy-invite-participant-dialog.c +++ b/src/empathy-invite-participant-dialog.c @@ -15,6 +15,7 @@ #include "empathy-invite-participant-dialog.h" #include +#include #include #include diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c index fe39ca45..2f73acf9 100644 --- a/src/empathy-main-window.c +++ b/src/empathy-main-window.c @@ -47,8 +47,6 @@ #include #include -#include -#include #include #include #include @@ -56,6 +54,7 @@ #include #include #include +#include #include #include #include @@ -569,7 +568,7 @@ main_window_load_events_idle_cb (gpointer user_data) } static void -main_window_row_activated_cb (EmpathyContactListView *view, +main_window_row_activated_cb (EmpathyIndividualView *view, GtkTreePath *path, GtkTreeViewColumn *col, EmpathyMainWindow *window) @@ -1167,7 +1166,7 @@ main_window_setup_balance_create_widget (EmpathyMainWindow *window, EmpathyMainWindowPriv *priv = GET_PRIV (window); GtkWidget *hbox, *image, *label, *button; - hbox = gtk_hbox_new (FALSE, 6); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); /* protocol icon */ image = gtk_image_new (); @@ -1374,8 +1373,8 @@ empathy_main_window_finalize (GObject *window) g_object_unref (priv->individual_store); g_object_unref (priv->contact_manager); g_object_unref (priv->sound_mgr); - g_hash_table_destroy (priv->errors); - g_hash_table_destroy (priv->auths); + g_hash_table_unref (priv->errors); + g_hash_table_unref (priv->auths); /* disconnect all handlers of status-changed signal */ g_hash_table_iter_init (&iter, priv->status_changed_handlers); @@ -1383,7 +1382,7 @@ empathy_main_window_finalize (GObject *window) g_signal_handler_disconnect (TP_ACCOUNT (key), GPOINTER_TO_UINT (value)); - g_hash_table_destroy (priv->status_changed_handlers); + g_hash_table_unref (priv->status_changed_handlers); g_signal_handlers_disconnect_by_func (priv->event_manager, main_window_event_added_cb, @@ -1519,7 +1518,7 @@ main_window_view_sort_contacts_cb (GtkRadioAction *action, EmpathyMainWindow *window) { EmpathyMainWindowPriv *priv = GET_PRIV (window); - EmpathyContactListStoreSort value; + EmpathyIndividualStoreSort value; GSList *group; GType type; GEnumClass *enum_class; @@ -2463,8 +2462,8 @@ empathy_main_window_init (EmpathyMainWindow *window) priv->contact_manager = EMPATHY_CONTACT_LIST ( empathy_contact_manager_dup_singleton ()); individual_manager = empathy_individual_manager_dup_singleton (); - priv->individual_store = empathy_individual_store_new ( - individual_manager); + priv->individual_store = EMPATHY_INDIVIDUAL_STORE ( + empathy_individual_store_manager_new (individual_manager)); g_object_unref (individual_manager); /* For the moment, we disallow Persona drops onto the main contact list (e.g. from things such as @@ -2473,7 +2472,7 @@ empathy_main_window_init (EmpathyMainWindow *window) priv->individual_view = empathy_individual_view_new ( priv->individual_store, EMPATHY_INDIVIDUAL_VIEW_FEATURE_ALL ^ EMPATHY_INDIVIDUAL_VIEW_FEATURE_PERSONA_DROP, - EMPATHY_INDIVIDUAL_FEATURE_ALL); + EMPATHY_INDIVIDUAL_FEATURE_ALL ^ EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT); gtk_widget_show (GTK_WIDGET (priv->individual_view)); gtk_container_add (GTK_CONTAINER (sw), diff --git a/src/empathy-map-view.c b/src/empathy-map-view.c index 9e6cc6de..72aab0b2 100644 --- a/src/empathy-map-view.c +++ b/src/empathy-map-view.c @@ -412,7 +412,7 @@ empathy_map_view_finalize (GObject *object) g_signal_handler_disconnect (priv->contact_list, priv->members_changed_id); - g_hash_table_destroy (priv->markers); + g_hash_table_unref (priv->markers); g_object_unref (priv->contact_list); g_object_unref (priv->layer); diff --git a/src/empathy-notifications-approver.c b/src/empathy-notifications-approver.c index c312a3be..ac51459f 100644 --- a/src/empathy-notifications-approver.c +++ b/src/empathy-notifications-approver.c @@ -27,7 +27,6 @@ #include -#include #include #include @@ -158,18 +157,12 @@ notification_decline_subscription_cb (NotifyNotification *notification, gchar *action, EmpathyNotificationsApprover *self) { - EmpathyContactManager *manager; - if (self->priv->event == NULL) return; - manager = empathy_contact_manager_dup_singleton (); - empathy_contact_list_remove (EMPATHY_CONTACT_LIST (manager), - self->priv->event->contact, ""); + empathy_contact_remove_from_contact_list (self->priv->event->contact); empathy_event_remove (self->priv->event); - - g_object_unref (manager); } static void @@ -177,18 +170,12 @@ notification_accept_subscription_cb (NotifyNotification *notification, gchar *action, EmpathyNotificationsApprover *self) { - EmpathyContactManager *manager; - if (self->priv->event == NULL) return; - manager = empathy_contact_manager_dup_singleton (); - empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager), - self->priv->event->contact, ""); + empathy_contact_add_to_contact_list (self->priv->event->contact, ""); empathy_event_remove (self->priv->event); - - g_object_unref (manager); } static void diff --git a/src/empathy-preferences.c b/src/empathy-preferences.c index 3eb9e608..6775d4a2 100644 --- a/src/empathy-preferences.c +++ b/src/empathy-preferences.c @@ -39,7 +39,6 @@ #include #include #include -#include #include #include @@ -83,8 +82,6 @@ struct _EmpathyPreferencesPriv { GtkWidget *checkbutton_notifications_contact_signin; GtkWidget *checkbutton_notifications_contact_signout; - GtkWidget *scale_call_volume; - GtkWidget *adj_call_volume; GtkWidget *echo_cancellation; GtkWidget *treeview_spell_checker; @@ -272,12 +269,6 @@ preferences_setup_widgets (EmpathyPreferences *preferences) "active", G_SETTINGS_BIND_DEFAULT); - g_settings_bind (priv->gsettings_call, - EMPATHY_PREFS_CALL_SOUND_VOLUME, - priv->adj_call_volume, - "value", - G_SETTINGS_BIND_DEFAULT); - g_settings_bind (priv->gsettings_call, EMPATHY_PREFS_CALL_ECHO_CANCELLATION, priv->echo_cancellation, @@ -1108,13 +1099,6 @@ preferences_themes_setup (EmpathyPreferences *preferences) preferences); } -static gchar * -preferences_call_format_volume_cb (GtkScale *scale, - gdouble value) -{ - return g_strdup_printf ("%g%%", value); -} - static void empathy_preferences_response (GtkDialog *widget, gint response) @@ -1162,8 +1146,6 @@ empathy_preferences_init (EmpathyPreferences *preferences) GtkBuilder *gui; gchar *filename; GtkWidget *page; - GtkWidget *call_volume_scale_box; - GtkWidget *call_volume_bar_box; priv = preferences->priv = G_TYPE_INSTANCE_GET_PRIVATE (preferences, EMPATHY_TYPE_PREFERENCES, EmpathyPreferencesPriv); @@ -1206,10 +1188,6 @@ empathy_preferences_init (EmpathyPreferences *preferences) "checkbutton_location_resource_network", &priv->checkbutton_location_resource_network, "checkbutton_location_resource_cell", &priv->checkbutton_location_resource_cell, "checkbutton_location_resource_gps", &priv->checkbutton_location_resource_gps, - "call_volume_scale_box", &call_volume_scale_box, - "call_volume_bar_box", &call_volume_bar_box, - "call_volume_scale", &priv->scale_call_volume, - "call_volume_adjustment", &priv->adj_call_volume, "call_echo_cancellation", &priv->echo_cancellation, NULL); g_free (filename); @@ -1235,15 +1213,6 @@ empathy_preferences_init (EmpathyPreferences *preferences) preferences, 0); preferences_preview_theme_changed_cb (priv->theme_manager, preferences); - g_signal_connect (priv->scale_call_volume, "format-value", - G_CALLBACK (preferences_call_format_volume_cb), - preferences); - -#ifndef HAVE_CALL - gtk_widget_hide (call_volume_scale_box); - gtk_widget_hide (call_volume_bar_box); -#endif - preferences_themes_setup (preferences); preferences_setup_widgets (preferences); diff --git a/src/empathy-preferences.ui b/src/empathy-preferences.ui index 46d68790..03a628cb 100644 --- a/src/empathy-preferences.ui +++ b/src/empathy-preferences.ui @@ -485,82 +485,6 @@ False vertical 6 - - - True - False - 6 - - - True - False - 0 - Input volume: - - - False - True - 0 - - - - - True - True - call_volume_adjustment - 0 - 0 - bottom - - - True - True - 1 - - - - - False - True - 0 - - - - - True - False - 6 - - - True - False - 0 - Input level: - - - False - True - 0 - - - - - True - False - - - True - True - 1 - - - - - False - True - 1 - - Use _echo cancellation to improve call quality @@ -1125,10 +1049,4 @@ - - - - - - diff --git a/src/empathy-streamed-media-handler.c b/src/empathy-streamed-media-handler.c index 67527d8e..a3c53977 100644 --- a/src/empathy-streamed-media-handler.c +++ b/src/empathy-streamed-media-handler.c @@ -708,27 +708,6 @@ empathy_streamed_media_handler_tf_channel_closed_cb (TfChannel *tfchannel, g_signal_emit (G_OBJECT (handler), signals[CLOSED], 0); } -static GList * -empathy_streamed_media_handler_tf_channel_codec_config_cb (TfChannel *channel, - guint stream_id, FsMediaType media_type, guint direction, gpointer user_data) -{ - gchar *filename = empathy_file_lookup ("codec-preferences", "data"); - GList *codecs; - GError *error = NULL; - - codecs = fs_codec_list_from_keyfile (filename, &error); - g_free (filename); - - if (!codecs) - { - g_warning ("No codec-preferences file: %s", - error ? error->message : "No error message"); - } - g_clear_error (&error); - - return codecs; -} - static void empathy_streamed_media_handler_start_tpfs (EmpathyStreamedMediaHandler *self) { @@ -748,8 +727,6 @@ empathy_streamed_media_handler_start_tpfs (EmpathyStreamedMediaHandler *self) G_CALLBACK (empathy_streamed_media_handler_tf_channel_stream_created_cb), self); g_signal_connect (priv->tfchannel, "closed", G_CALLBACK (empathy_streamed_media_handler_tf_channel_closed_cb), self); - g_signal_connect (priv->tfchannel, "stream-get-codec-config", - G_CALLBACK (empathy_streamed_media_handler_tf_channel_codec_config_cb), self); g_object_unref (channel); } diff --git a/src/empathy-streamed-media-window.c b/src/empathy-streamed-media-window.c index c74910b6..df3fbab0 100644 --- a/src/empathy-streamed-media-window.c +++ b/src/empathy-streamed-media-window.c @@ -35,6 +35,7 @@ #include #include +#include #include #include @@ -370,7 +371,7 @@ static GtkWidget * empathy_streamed_media_window_create_video_input_add_slider (EmpathyStreamedMediaWindow *self, gchar *label_text, GtkWidget *bin) { - GtkWidget *vbox = gtk_vbox_new (FALSE, 2); + GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); GtkWidget *scale = gtk_vscale_new_with_range (0, 100, 10); GtkWidget *label = gtk_label_new (label_text); @@ -425,7 +426,8 @@ empathy_streamed_media_window_create_video_input (EmpathyStreamedMediaWindow *se EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self); GtkWidget *hbox; - hbox = gtk_hbox_new (TRUE, 3); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3); + gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE); priv->video_contrast = empathy_streamed_media_window_create_video_input_add_slider ( self, _("Contrast"), hbox); @@ -532,9 +534,10 @@ empathy_streamed_media_window_create_audio_input (EmpathyStreamedMediaWindow *se EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self); GtkWidget *hbox, *vbox, *label; - hbox = gtk_hbox_new (TRUE, 3); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3); + gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE); - vbox = gtk_vbox_new (FALSE, 3); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 3); priv->volume_scale = gtk_vscale_new_with_range (0, 150, 100); @@ -981,8 +984,6 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self) GtkWidget *arrow; GtkWidget *page; gchar *filename; - GKeyFile *keyfile; - GError *error = NULL; GtkWidget *scroll; filename = empathy_file_lookup ("empathy-streamed-media-window.ui", "src"); @@ -1036,7 +1037,8 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self) gtk_container_add (GTK_CONTAINER (self), top_vbox); - priv->content_hbox = gtk_hbox_new (FALSE, CONTENT_HBOX_SPACING); + priv->content_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, + CONTENT_HBOX_SPACING); gtk_container_set_border_width (GTK_CONTAINER (priv->content_hbox), CONTENT_HBOX_BORDER_WIDTH); gtk_paned_pack1 (GTK_PANED (priv->pane), priv->content_hbox, TRUE, FALSE); @@ -1049,7 +1051,7 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self) priv->remote_user_output_frame, TRUE, TRUE, CONTENT_HBOX_CHILDREN_PACKING_PADDING); - priv->remote_user_output_hbox = gtk_hbox_new (FALSE, 0); + priv->remote_user_output_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); priv->remote_user_avatar_widget = gtk_image_new (); @@ -1064,7 +1066,7 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self) gtk_widget_set_size_request (priv->self_user_output_frame, SELF_VIDEO_SECTION_WIDTH, SELF_VIDEO_SECTION_HEIGTH); - priv->self_user_output_hbox = gtk_hbox_new (FALSE, 0); + priv->self_user_output_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); priv->self_user_avatar_widget = gtk_image_new (); gtk_box_pack_start (GTK_BOX (priv->self_user_output_hbox), @@ -1084,22 +1086,7 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self) /* The call will be started as soon the pipeline is playing */ priv->start_call_when_playing = TRUE; - keyfile = g_key_file_new (); - filename = empathy_file_lookup ("element-properties", "data"); - if (g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, &error)) - { - fs_element_added_notifier_set_properties_from_keyfile (priv->fsnotifier, - keyfile); - } - else - { - g_warning ("Could not load element-properties file: %s", error->message); - g_key_file_free (keyfile); - g_clear_error (&error); - } - g_free (filename); - - priv->vbox = gtk_vbox_new (FALSE, 3); + priv->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3); gtk_box_pack_start (GTK_BOX (priv->content_hbox), priv->vbox, FALSE, FALSE, CONTENT_HBOX_CHILDREN_PACKING_PADDING); gtk_box_pack_start (GTK_BOX (priv->vbox), priv->self_user_output_frame, @@ -1114,7 +1101,7 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self) gtk_button_set_image (GTK_BUTTON (priv->sidebar_button), arrow); - h = gtk_hbox_new (FALSE, 3); + h = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3); gtk_box_pack_end (GTK_BOX (priv->vbox), h, FALSE, FALSE, 3); gtk_box_pack_end (GTK_BOX (h), priv->sidebar_button, FALSE, FALSE, 3); @@ -1759,6 +1746,12 @@ empathy_streamed_media_window_conference_added_cb (EmpathyStreamedMediaHandler * { EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data); EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self); + GKeyFile *keyfile; + + keyfile = fs_utils_get_default_element_properties (conference); + if (keyfile != NULL) + fs_element_added_notifier_set_properties_from_keyfile (priv->fsnotifier, + keyfile); gst_bin_add (GST_BIN (priv->pipeline), conference); @@ -2177,7 +2170,7 @@ display_error (EmpathyStreamedMediaWindow *self, content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar)); /* hbox containing the image and the messages vbox */ - hbox = gtk_hbox_new (FALSE, 3); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3); gtk_container_add (GTK_CONTAINER (content_area), hbox); /* Add image */ @@ -2185,7 +2178,7 @@ display_error (EmpathyStreamedMediaWindow *self, gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0); /* vbox containing the main message and the details expander */ - vbox = gtk_vbox_new (FALSE, 3); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); /* Add text */ diff --git a/src/empathy.c b/src/empathy.c index b73bf1b0..57f5c841 100644 --- a/src/empathy.c +++ b/src/empathy.c @@ -48,6 +48,8 @@ #include +#include +#include #include #include #include @@ -122,6 +124,7 @@ struct _EmpathyApp EmpathyConnectivity *connectivity; GSettings *gsettings; EmpathyNotificationsApprover *notifications_approver; + EmpathyConnectionAggregator *conn_aggregator; #ifdef HAVE_GEOCLUE EmpathyLocationManager *location_manager; #endif @@ -167,6 +170,7 @@ empathy_app_dispose (GObject *object) tp_clear_object (&self->ft_factory); tp_clear_object (&self->gsettings); tp_clear_object (&self->notifications_approver); + tp_clear_object (&self->conn_aggregator); if (dispose != NULL) dispose (object); @@ -808,11 +812,31 @@ empathy_app_constructed (GObject *object) self->location_manager = empathy_location_manager_dup_singleton (); #endif + self->conn_aggregator = empathy_connection_aggregator_dup_singleton (); + self->activated = FALSE; self->ft_factory = NULL; self->window = NULL; } +static void +add_empathy_features (void) +{ + /* Add 'empathy' specific feature before doing any preparation */ + EmpathyClientFactory *factory; + + factory = empathy_client_factory_dup (); + + tp_simple_client_factory_add_connection_features_varargs ( + TP_SIMPLE_CLIENT_FACTORY (factory), + /* empathy_connection_aggregator_get_all_groups(), used by + * EmpathyGroupsWidget relies on it */ + TP_CONNECTION_FEATURE_CONTACT_GROUPS, + NULL); + + g_object_unref (factory); +} + int main (int argc, char *argv[]) { @@ -832,6 +856,8 @@ main (int argc, char *argv[]) gtk_init (&argc, &argv); empathy_gtk_init (); + add_empathy_features (); + app = g_object_new (EMPATHY_TYPE_APP, "application-id", EMPATHY_DBUS_NAME, "flags", G_APPLICATION_HANDLES_COMMAND_LINE, diff --git a/src/ev-sidebar.c b/src/ev-sidebar.c index 1d0b2df2..a5073698 100644 --- a/src/ev-sidebar.c +++ b/src/ev-sidebar.c @@ -152,15 +152,15 @@ ev_sidebar_init (EvSidebar *ev_sidebar) G_TYPE_INT); /* create a 6 6 6 0 border with GtkBoxes */ - hbox = gtk_hbox_new (FALSE, 6); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (ev_sidebar), hbox, TRUE, TRUE, 6); - vbox = gtk_vbox_new (FALSE, 6); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (hbox), gtk_vbox_new (FALSE, 0), FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), gtk_box_new (GTK_ORIENTATION_VERTICAL, 0), FALSE, FALSE, 0); /* top option menu */ - hbox = gtk_hbox_new (FALSE, 6); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); diff --git a/tests/empathy-chatroom-manager-test.c b/tests/empathy-chatroom-manager-test.c index 966027f3..3ba0239f 100644 --- a/tests/empathy-chatroom-manager-test.c +++ b/tests/empathy-chatroom-manager-test.c @@ -76,7 +76,7 @@ check_chatrooms_list (EmpathyChatroomManager *mgr, fail_if (g_hash_table_size (found) != 0); g_list_free (chatrooms); - g_hash_table_destroy (found); + g_hash_table_unref (found); } static gboolean diff --git a/tests/empathy-tls-test.c b/tests/empathy-tls-test.c index f2b667d0..8256da47 100644 --- a/tests/empathy-tls-test.c +++ b/tests/empathy-tls-test.c @@ -102,7 +102,7 @@ mock_tls_certificate_finalize (GObject *object) &self->rejections); g_free (self->cert_type); self->cert_type = NULL; - g_ptr_array_free (self->cert_data, TRUE); + g_ptr_array_unref (self->cert_data); self->cert_data = NULL; G_OBJECT_CLASS (mock_tls_certificate_parent_class)->finalize (object); @@ -226,7 +226,7 @@ mock_tls_certificate_assert_rejected (MockTLSCertificate *self, TP_HASH_TYPE_STRING_VARIANT_MAP, &rejection_details, NULL); g_free (rejection_error); - g_hash_table_destroy (rejection_details); + g_hash_table_unref (rejection_details); if (rejection_reason == reason) return; diff --git a/tests/interactive/Makefile.am b/tests/interactive/Makefile.am index e850d25a..e07ed65f 100644 --- a/tests/interactive/Makefile.am +++ b/tests/interactive/Makefile.am @@ -14,7 +14,6 @@ LDADD = \ $(EDS_LIBS) noinst_PROGRAMS = \ - contact-manager \ empathy-logs \ test-empathy-account-assistant \ test-empathy-contact-blocking-dialog \ @@ -23,7 +22,6 @@ noinst_PROGRAMS = \ test-empathy-protocol-chooser \ test-empathy-account-chooser -contact_manager_SOURCES = contact-manager.c empathy_logs_SOURCES = empathy-logs.c test_empathy_contact_blocking_dialog_SOURCES = test-empathy-contact-blocking-dialog.c test_empathy_presence_chooser_SOURCES = test-empathy-presence-chooser.c diff --git a/tests/interactive/contact-manager.c b/tests/interactive/contact-manager.c deleted file mode 100644 index e391df63..00000000 --- a/tests/interactive/contact-manager.c +++ /dev/null @@ -1,43 +0,0 @@ -#include - -#include -#include -#include -#include - -#include -#include - -int -main (int argc, char **argv) -{ - EmpathyContactManager *manager; - EmpathyContactListStore *store; - GtkWidget *combo; - GtkWidget *window; - GtkCellRenderer *renderer; - - gtk_init (&argc, &argv); - empathy_gtk_init (); - - empathy_debug_set_flags (g_getenv ("EMPATHY_DEBUG")); - g_main_loop_new (NULL, FALSE); - manager = empathy_contact_manager_dup_singleton (); - store = empathy_contact_list_store_new (EMPATHY_CONTACT_LIST (manager)); - empathy_contact_list_store_set_is_compact (store, TRUE); - empathy_contact_list_store_set_show_groups (store, FALSE); - combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store)); - renderer = gtk_cell_renderer_text_new (); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE); - gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), renderer, "text", EMPATHY_CONTACT_LIST_STORE_COL_NAME); - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_container_add (GTK_CONTAINER (window), combo); - gtk_widget_show (combo); - gtk_widget_show (window); - g_object_unref (manager); - - gtk_main (); - - return EXIT_SUCCESS; -} - diff --git a/tests/interactive/empathy-logs.c b/tests/interactive/empathy-logs.c index b9f38e0e..76717596 100644 --- a/tests/interactive/empathy-logs.c +++ b/tests/interactive/empathy-logs.c @@ -1,4 +1,3 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Copyright (C) 2008 Collabora Ltd. * @@ -26,35 +25,52 @@ #include #include +#include #include #include static void destroy_cb (GtkWidget *dialog, - gpointer user_data) + gpointer user_data) { - gtk_main_quit (); + gtk_main_quit (); +} + +static void +account_manager_prepare_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + GError *error = NULL; + GtkWidget *window; + + tp_proxy_prepare_finish (source, result, &error); + g_assert_no_error (error); + + window = empathy_log_window_show (NULL, NULL, FALSE, NULL); + + g_signal_connect (window, "destroy", G_CALLBACK (destroy_cb), NULL); } int -main (int argc, char *argv[]) +main (int argc, + char *argv[]) { - GtkWidget *window; + TpAccountManager *mgr; - g_thread_init (NULL); - gtk_init (&argc, &argv); - empathy_gtk_init (); - g_set_application_name (PACKAGE_NAME); - gtk_window_set_default_icon_name ("empathy"); + g_thread_init (NULL); + gtk_init (&argc, &argv); + empathy_gtk_init (); + g_set_application_name (PACKAGE_NAME); + gtk_window_set_default_icon_name ("empathy"); - window = empathy_log_window_show (NULL, NULL, FALSE, NULL); + mgr = tp_account_manager_dup (); - g_signal_connect (window, "destroy", - G_CALLBACK (destroy_cb), - NULL); + tp_proxy_prepare_async (mgr, NULL, account_manager_prepare_cb, NULL); - gtk_main (); + gtk_main (); - return EXIT_SUCCESS; -} + g_object_unref (mgr); + return EXIT_SUCCESS; +} diff --git a/tools/check-c-style.sh b/tools/check-c-style.sh index dd62fb7b..4330b147 100644 --- a/tools/check-c-style.sh +++ b/tools/check-c-style.sh @@ -44,6 +44,19 @@ if grep -En '^ *(static |const |)* *[[:alnum:]_]+\*+([[:alnum:]_]|;|$)' \ fail=1 fi +if grep -n 'g_hash_table_destroy' "$@"; then + echo "^^^ Our coding style is to use g_hash_table_unref" + fail=1 +fi + +for p in "" "ptr_" "byte_"; do + if grep -En "g_${p}array_free \(([^ ,]+), TRUE\)" "$@"; then + echo "^^^ Our coding style is to use g_${p}array_unref in the case " + echo " the underlying C array is not used" + fail=1 + fi +done + if test -n "$CHECK_FOR_LONG_LINES" then if egrep -n '.{80,}' "$@"