Mercurial > pidgin
changeset 25287:b333ebd093df
merge of '5f8528ffc18355719bd406e1c579e0e369fb2585'
and '7811d6e917a33b224cad7842445e932470fcc55e'
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Thu, 08 Jan 2009 14:16:42 +0000 |
parents | 2aa4b88bdcf8 (current diff) ca4ccf646993 (diff) |
children | 8a930bc2734d |
files | |
diffstat | 17 files changed, 139 insertions(+), 104 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Thu Jan 08 14:15:16 2009 +0000 +++ b/ChangeLog Thu Jan 08 14:16:42 2009 +0000 @@ -15,6 +15,8 @@ XMPP: * Support for XEP-0191 blocking. (Vijay Raghunathan) * Don't put SASL PLAIN or IQ Auth passwords in debug logs. (Paul Aurich) + * Fix removal of avatars (both PEP and vCard), we weren't removing + them correctly before. (Paul Aurich) Pidgin: * Fix a crash in the Add Account dialog when changing protocols under @@ -22,6 +24,7 @@ Finch: * Redirect stderr outputs to the debug window. + * Fix rebinding actions with the arrow-keys and tab. version 2.5.3 (12/20/2008): libpurple:
--- a/ChangeLog.API Thu Jan 08 14:15:16 2009 +0000 +++ b/ChangeLog.API Thu Jan 08 14:16:42 2009 +0000 @@ -1,5 +1,21 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul +version 2.5.4 (??/??/????): + perl: + Changed: + * Purple::PluginPref->get_bounds no longer takes two integer + arguments it now returns two integers. + + Removed: + * Removed a handful of string-related utility functions that + can generally be better handled with perl's built-in string + functions rather than using pidgin's: + * Purple::Util::strcasereplace + * Purple::Util::strcasestr + * Purple::Util::strreplace + * Purple::Util::str_strip_char + * Purple::Util::chrreplace + version 2.5.3 (12/20/2008): libpurple Changed:
--- a/configure.ac Thu Jan 08 14:15:16 2009 +0000 +++ b/configure.ac Thu Jan 08 14:16:42 2009 +0000 @@ -2285,6 +2285,30 @@ AC_DEFINE(HAVE_TM_GMTOFF, 1, [Define if you have a tm_gmtoff member in struct tm]) fi +AC_CACHE_CHECK([whether va_lists can be copied by value], ac_cv_va_val_copy,[ + AC_TRY_RUN([#include <stdarg.h> +#include <stdlib.h> + void f (int i, ...) { + va_list args1, args2; + va_start (args1, i); + args2 = args1; + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) + exit (1); + va_end (args1); va_end (args2); + } + int main() { + f (0, 42); + return 0; + }], + [ac_cv_va_val_copy=yes], + [ac_cv_va_val_copy=no], + [ac_cv_va_val_copy=yes]) +]) + +if test "x$ac_cv_va_val_copy" = "xno"; then + AC_DEFINE(VA_COPY_AS_ARRAY, 1, ['va_lists' cannot be copied as values]) +fi + dnl ####################################################################### dnl # Check for check dnl #######################################################################
--- a/finch/libgnt/gntkeys.c Thu Jan 08 14:15:16 2009 +0000 +++ b/finch/libgnt/gntkeys.c Thu Jan 08 14:16:42 2009 +0000 @@ -131,7 +131,7 @@ code[ind] = (c ? 1 : 'a') + ch; INSERT_COMB(str, code); } - if (c == 0) { + if (c == 0 && a) { INSERT_COMB("tab", "\033\t"); INSERT_COMB_CODE("up", "\033", GNT_KEY_UP); INSERT_COMB_CODE("down", "\033", GNT_KEY_DOWN);
--- a/libpurple/dbus-server.c Thu Jan 08 14:15:16 2009 +0000 +++ b/libpurple/dbus-server.c Thu Jan 08 14:16:42 2009 +0000 @@ -803,7 +803,8 @@ void purple_dbus_init(void) { - dbus_g_thread_init(); + if (g_thread_supported()) + dbus_g_thread_init(); purple_dbus_init_ids();
--- a/libpurple/plugins/perl/common/PluginPref.xs Thu Jan 08 14:15:16 2009 +0000 +++ b/libpurple/plugins/perl/common/PluginPref.xs Thu Jan 08 14:16:42 2009 +0000 @@ -70,10 +70,16 @@ void -purple_plugin_pref_get_bounds(pref, min, max) +purple_plugin_pref_get_bounds(pref, OUTLIST int min, OUTLIST int max) Purple::PluginPref pref - int *min - int *max + # According to the perlxs manual page we shouldn't need to specify a + # prototype here because "[p]arameters preceded by OUTLIST keyword do + # not appear in the usage signature of the generated Perl function." + # however that appears to only work for the usage error message and + # not for the call to newXSproto. Since I can't find any documentation + # for newXSproto at the moment I have no idea if that matters so + # override the prototype here. + PROTOTYPE: $ void purple_plugin_pref_get_choices(pref)
--- a/libpurple/plugins/perl/common/Util.xs Thu Jan 08 14:15:16 2009 +0000 +++ b/libpurple/plugins/perl/common/Util.xs Thu Jan 08 14:16:42 2009 +0000 @@ -99,27 +99,10 @@ const char *program gchar_own * -purple_strcasereplace(string, delimiter, replacement) - const char *string - const char *delimiter - const char *replacement - -const char * -purple_strcasestr(haystack, needle) - const char *haystack - const char *needle - -gchar_own * purple_strdup_withhtml(src) const gchar *src gchar_own * -purple_strreplace(string, delimiter, replacement) - const char *string - const char *delimiter - const char *replacement - -gchar_own * purple_text_strip_mnemonic(in) const char *in @@ -356,10 +339,6 @@ purple_str_size_to_units(size) size_t size -void -purple_str_strip_char(IN_OUT char str, thechar) - char thechar - time_t purple_str_to_time(timestamp, utc = FALSE, tm = NULL, OUTLIST long tz_off, OUTLIST const char *rest) const char *timestamp @@ -512,11 +491,6 @@ const char *artist const char *album -void -purple_util_chrreplace(IN_OUT char string, delimiter, replacement) - char delimiter - char replacement - gchar_own* purple_util_format_song_info(title, artist, album, unused) const char* title
--- a/libpurple/plugins/perl/perl-handlers.c Thu Jan 08 14:15:16 2009 +0000 +++ b/libpurple/plugins/perl/perl-handlers.c Thu Jan 08 14:16:42 2009 +0000 @@ -289,14 +289,18 @@ PUSHMARK(sp); purple_signal_get_values(handler->instance, handler->signal, - &ret_value, &value_count, &values); + &ret_value, &value_count, &values); sv_args = g_new(SV *, value_count); copy_args = g_new(void **, value_count); for (i = 0; i < value_count; i++) { sv_args[i] = purple_perl_sv_from_vargs(values[i], +#ifdef VA_COPY_AS_ARRAY + args, +#else (va_list*)&args, +#endif ©_args[i]); XPUSHs(sv_args[i]);
--- a/libpurple/protocols/jabber/buddy.c Thu Jan 08 14:15:16 2009 +0000 +++ b/libpurple/protocols/jabber/buddy.c Thu Jan 08 14:16:42 2009 +0000 @@ -459,7 +459,10 @@ avatar_data = purple_imgstore_get_data(img); avatar_len = purple_imgstore_get_size(img); - /* have to get rid of the old PHOTO if it exists */ + /* Get rid of an old PHOTO if one exists. + * TODO: This may want to be modified to remove all old PHOTO + * children, at the moment some people have managed to get + * multiple PHOTO entries in their vCard. */ if((photo = xmlnode_get_child(vc_node, "PHOTO"))) { xmlnode_free(photo); } @@ -473,6 +476,12 @@ xmlnode_insert_data(binval, enc, -1); g_free(enc); + } else if (vc_node) { + xmlnode *photo; + /* TODO: Remove all PHOTO children? (see above note) */ + if ((photo = xmlnode_get_child(vc_node, "PHOTO"))) { + xmlnode_free(photo); + } } if (vc_node != NULL) { @@ -578,32 +587,30 @@ jabber_pep_publish((JabberStream*)gc->proto_data, publish); g_free(hash); - } else { /* if(img) */ - /* remove the metadata */ - xmlnode *metadata, *item; - xmlnode *publish = xmlnode_new("publish"); - xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA); - - item = xmlnode_new_child(publish, "item"); - - metadata = xmlnode_new_child(item, "metadata"); - xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA); - - xmlnode_new_child(metadata, "stop"); - - /* publish the metadata */ - jabber_pep_publish((JabberStream*)gc->proto_data, publish); + } else { + purple_debug_error("jabber", "jabber_set_buddy_icon received non-png data"); } } else { - purple_debug(PURPLE_DEBUG_ERROR, "jabber", - "jabber_set_buddy_icon received non-png data"); + /* remove the metadata */ + xmlnode *metadata, *item; + xmlnode *publish = xmlnode_new("publish"); + xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA); + + item = xmlnode_new_child(publish, "item"); + + metadata = xmlnode_new_child(item, "metadata"); + xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA); + + xmlnode_new_child(metadata, "stop"); + + /* publish the metadata */ + jabber_pep_publish((JabberStream*)gc->proto_data, publish); } } - /* even when the image is not png, we can still publish the vCard, since this - one doesn't require a specific image type */ - - /* publish vCard for those poor older clients */ + /* vCard avatars do not have an image type requirement so update our + * vCard avatar regardless of image type for those poor older clients + */ jabber_set_info(gc, purple_account_get_user_info(gc->account)); gpresence = purple_account_get_presence(gc->account); @@ -614,11 +621,7 @@ /* * This is the callback from the "ok clicked" for "set vCard" * - * Formats GSList data into XML-encoded string and returns a pointer - * to said string. - * - * g_free()'ing the returned string space is the responsibility of - * the caller. + * Sets the vCard with data from PurpleRequestFields. */ static void jabber_format_info(PurpleConnection *gc, PurpleRequestFields *fields)
--- a/libpurple/protocols/sametime/Makefile.am Thu Jan 08 14:15:16 2009 +0000 +++ b/libpurple/protocols/sametime/Makefile.am Thu Jan 08 14:16:42 2009 +0000 @@ -8,24 +8,22 @@ SAMETIMESOURCES = sametime.c AM_CFLAGS = \ - $(st) \ - -DG_LOG_DOMAIN=\"sametime\" + $(st) if STATIC_SAMETIME st = -DPURPLE_STATIC_PRPL noinst_LTLIBRARIES = libsametime.la -libsametime_la_SOURCES = $(SAMETIMESOURCES) libsametime_la_CFLAGS = $(AM_CFLAGS) else st = pkg_LTLIBRARIES = libsametime.la -libsametime_la_SOURCES = $(SAMETIMESOURCES) endif +libsametime_la_SOURCES = $(SAMETIMESOURCES) libsametime_la_LDFLAGS = -module -avoid-version libsametime_la_LIBADD = $(GLIB_LIBS) $(MEANWHILE_LIBS) @@ -34,5 +32,6 @@ -I$(top_builddir)/libpurple \ $(DEBUG_CFLAGS) \ $(GLIB_CFLAGS) \ - $(MEANWHILE_CFLAGS) + $(MEANWHILE_CFLAGS) \ + -DG_LOG_DOMAIN=\"sametime\"
--- a/libpurple/protocols/sametime/Makefile.mingw Thu Jan 08 14:15:16 2009 +0000 +++ b/libpurple/protocols/sametime/Makefile.mingw Thu Jan 08 14:16:42 2009 +0000 @@ -21,6 +21,8 @@ endif endif +CFLAGS += -DG_LOG_DOMAIN=\"sametime\" + ## ## INCLUDE PATHS ##
--- a/pidgin/gtkaccount.c Thu Jan 08 14:15:16 2009 +0000 +++ b/pidgin/gtkaccount.c Thu Jan 08 14:16:42 2009 +0000 @@ -1545,7 +1545,10 @@ pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CANCEL, G_CALLBACK(cancel_account_prefs_cb), dialog); /* Save button */ - button = pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_SAVE, G_CALLBACK(ok_account_prefs_cb), dialog); + button = pidgin_dialog_add_button(GTK_DIALOG(win), + (type == PIDGIN_ADD_ACCOUNT_DIALOG) ? GTK_STOCK_ADD : GTK_STOCK_SAVE, + G_CALLBACK(ok_account_prefs_cb), + dialog); if (dialog->account == NULL) gtk_widget_set_sensitive(button, FALSE); dialog->ok_button = button;
--- a/pidgin/gtkpounce.c Thu Jan 08 14:15:16 2009 +0000 +++ b/pidgin/gtkpounce.c Thu Jan 08 14:16:42 2009 +0000 @@ -484,7 +484,7 @@ void pidgin_pounce_editor_show(PurpleAccount *account, const char *name, - PurplePounce *cur_pounce) + PurplePounce *cur_pounce) { PidginPounceDialog *dialog; GtkWidget *window; @@ -848,10 +848,12 @@ g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(cancel_cb), dialog); - /* Save button */ - dialog->save_button = button = gtk_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_SAVE, GTK_RESPONSE_OK); + /* Save/Add button */ + dialog->save_button = button = gtk_dialog_add_button(GTK_DIALOG(window), + (cur_pounce == NULL ? GTK_STOCK_ADD : GTK_STOCK_SAVE), + GTK_RESPONSE_OK); g_signal_connect(G_OBJECT(button), "clicked", - G_CALLBACK(save_pounce_cb), dialog); + G_CALLBACK(save_pounce_cb), dialog); if (*gtk_entry_get_text(GTK_ENTRY(dialog->buddy_entry)) == '\0') gtk_widget_set_sensitive(button, FALSE); @@ -1274,7 +1276,6 @@ g_signal_connect(G_OBJECT(treeview), "button_press_event", G_CALLBACK(pounce_double_click_cb), dialog); - gtk_container_add(GTK_CONTAINER(sw), treeview); gtk_widget_show(treeview);
--- a/pidgin/gtksmiley.c Thu Jan 08 14:15:16 2009 +0000 +++ b/pidgin/gtksmiley.c Thu Jan 08 14:16:42 2009 +0000 @@ -37,7 +37,7 @@ #include "gtkutils.h" #include "pidginstock.h" -#define PIDGIN_RESPONSE_EDIT 1000 +#define PIDGIN_RESPONSE_MODIFY 1000 struct _PidginSmiley { @@ -590,7 +590,7 @@ GTK_RESPONSE_NO, selected > 0); gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog->window), - PIDGIN_RESPONSE_EDIT, selected > 0); + PIDGIN_RESPONSE_MODIFY, selected > 0); } static void @@ -682,7 +682,7 @@ g_free(smiley_manager); smiley_manager = NULL; break; - case PIDGIN_RESPONSE_EDIT: + case PIDGIN_RESPONSE_MODIFY: /* Find smiley of selection... */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview)); gtk_tree_selection_selected_foreach(selection, edit_selected_cb, dialog); @@ -713,7 +713,7 @@ NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_ADD, GTK_RESPONSE_YES, - PIDGIN_STOCK_EDIT, PIDGIN_RESPONSE_EDIT, + PIDGIN_STOCK_MODIFY, PIDGIN_RESPONSE_MODIFY, GTK_STOCK_DELETE, GTK_RESPONSE_NO, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); @@ -722,8 +722,8 @@ gtk_window_set_role(GTK_WINDOW(win), "custom_smiley_manager"); gtk_container_set_border_width(GTK_CONTAINER(win),PIDGIN_HIG_BORDER); gtk_dialog_set_response_sensitive(GTK_DIALOG(win), GTK_RESPONSE_NO, FALSE); - gtk_dialog_set_response_sensitive(GTK_DIALOG(win), PIDGIN_RESPONSE_EDIT, - FALSE); + gtk_dialog_set_response_sensitive(GTK_DIALOG(win), + PIDGIN_RESPONSE_MODIFY, FALSE); g_signal_connect(win, "response", G_CALLBACK(smiley_manager_select_cb), dialog);
--- a/pidgin/plugins/notify.c Thu Jan 08 14:15:16 2009 +0000 +++ b/pidgin/plugins/notify.c Thu Jan 08 14:16:42 2009 +0000 @@ -555,9 +555,12 @@ } static void -handle_urgent(PidginWindow *win, gboolean set) +handle_urgent(PidginWindow *purplewin, gboolean set) { - pidgin_set_urgent(GTK_WINDOW(win->window), set); + g_return_if_fail(purplewin != NULL); + g_return_if_fail(purplewin->window != NULL); + + pidgin_set_urgent(GTK_WINDOW(purplewin->window), set); } static void
--- a/pidgin/win32/nsis/translations/german.nsh Thu Jan 08 14:15:16 2009 +0000 +++ b/pidgin/win32/nsis/translations/german.nsh Thu Jan 08 14:16:42 2009 +0000 @@ -5,8 +5,8 @@ ;; German language strings for the Windows Pidgin NSIS installer. ;; Windows Code page: 1252 ;; -;; Author: Bjoern Voigt <bjoern@cs.tu-berlin.de>, 2007. -;; Version 6 +;; Author: Bjoern Voigt <bjoern@cs.tu-berlin.de>, 2008. +;; Version 3 ;; ; Startup checks @@ -33,7 +33,7 @@ ; GTK+ Directory Page !define GTK_UPGRADE_PROMPT "Eine alte Version der GTK+ Runtime wurde gefunden. Möchten Sie aktualisieren?$\rHinweis: $(^Name) funktioniert evtl. nicht, wenn Sie nicht aktualisieren." -!define GTK_WINDOWS_INCOMPATIBLE "Windows 95/98/Me sind inkompatibel zu GTK+ 2.8.0 oder neuer. GTK+ ${GTK_INSTALL_VERSION} wird nicht installiert.$\rWenn Sie nicht GTK+ ${GTK_MIN_VERSION} oder neuer installiert haben, wird die Installation jetzt abgebrochent." +!define GTK_WINDOWS_INCOMPATIBLE "Windows 95/98/Me sind inkompatibel zu GTK+ 2.8.0 oder neuer. GTK+ ${GTK_INSTALL_VERSION} wird nicht installiert.$\rWenn Sie nicht GTK+ ${GTK_MIN_VERSION} oder neuer installiert haben, wird die Installation jetzt abgebrochen." ; Installer Finish Page !define PIDGIN_FINISH_VISIT_WEB_SITE "Besuchen Sie die Pidgin Webseite"
--- a/po/fi.po Thu Jan 08 14:15:16 2009 +0000 +++ b/po/fi.po Thu Jan 08 14:16:42 2009 +0000 @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-16 00:12+0200\n" -"PO-Revision-Date: 2008-12-16 00:16+0200\n" +"POT-Creation-Date: 2009-01-07 13:30+0200\n" +"PO-Revision-Date: 2009-01-07 13:30+0200\n" "Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -1486,7 +1486,6 @@ "Kun uusi keskustelu aloitetaan, tämä liitännäinen näyttää edellisen " "keskustelun keskusteluikkunassa." -#, c-format msgid "Online" msgstr "Linjoilla" @@ -1917,7 +1916,6 @@ msgid "Transfer of file %s complete" msgstr "Tiedoston %s siirto valmis" -#, c-format msgid "File transfer complete" msgstr "Tiedostonsiirto valmis" @@ -1925,7 +1923,6 @@ msgid "You canceled the transfer of %s" msgstr "Peruutit tiedoston %s siirron" -#, c-format msgid "File transfer cancelled" msgstr "Tiedostonsiirto peruutettu" @@ -2132,7 +2129,6 @@ msgid "You are using %s, but this plugin requires %s." msgstr "Käytät: %s, mutta tämä liitännäinen vaatii: %s." -#, c-format msgid "This plugin has not defined an ID." msgstr "Tämä liitännäinen ei ole määritellyt tunnistetta (ID)." @@ -3024,7 +3020,6 @@ #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message #. Away stuff -#, c-format msgid "Away" msgstr "Poissa" @@ -3905,7 +3900,6 @@ msgid "Extended Away" msgstr "Pidennetty poissaolo" -#, c-format msgid "Do Not Disturb" msgstr "Älä häiritse" @@ -4139,6 +4133,9 @@ msgid "Re-initializing Stream" msgstr "Uudelleenalustetaan datavirtaa" +msgid "Server doesn't support blocking" +msgstr "Palvelin ei tue estämistä" + msgid "Not Authorized" msgstr "Ei valtuuksia" @@ -4891,7 +4888,6 @@ msgid "Passport account not yet verified" msgstr "Passport-tiliä ei ole verifioitu" -#, c-format msgid "Passport account suspended" msgstr "Passport-tili jäädytetty" @@ -6093,7 +6089,6 @@ msgid "Error. SSL support is not installed." msgstr "Virhe. SSL-tuki ei ole asennettu." -#, c-format msgid "This conference has been closed. No more messages can be sent." msgstr "Tämä konferenssi on suljettu. Uusia viestejä ei voi lähettää." @@ -6359,23 +6354,18 @@ msgid "Screen Sharing" msgstr "Näytön jakaminen" -#, c-format msgid "Free For Chat" msgstr "Vapaana keskusteluun" -#, c-format msgid "Not Available" msgstr "Ei tavoitettavissa" -#, c-format msgid "Occupied" msgstr "Varattu" -#, c-format msgid "Web Aware" msgstr "Net-tietoinen" -#, c-format msgid "Invisible" msgstr "Näkymätön" @@ -6477,19 +6467,16 @@ msgstr "_OK" #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"Yhteytesi saatetaan katkaista kohta. Saatat haluta käyttää TOC-" -"yhteyskäytäntöä kunnes tämä on korjattu. Tarkista päivitykset: %s" +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "" +"Yhteytesi saattaa katketa kohta. Jos niin käy, tarkista päivitykset: %s." msgid "Unable to get a valid AIM login hash." msgstr "Kelvollista AIM-sisäänkirjautumistiivistettä ei saatu." #, c-format msgid "You may be disconnected shortly. Check %s for updates." -msgstr "Yhteytesi saatetaan katkaista kohta. Tarkista päivitykset: %s." +msgstr "Yhteytesi saattaa katketa kohta. Tarkista päivitykset: %s." msgid "Unable to get a valid login hash." msgstr "Kelvollista sisäänkirjautumistiivistettä ei saatu." @@ -7047,7 +7034,6 @@ msgid "Attempting to connect to %s:%hu." msgstr "Yritetään yhdistää kohteeseen %s:%hu." -#, c-format msgid "Attempting to connect via proxy server." msgstr "Yritetään yhdistämistä välipalvelimen kautta." @@ -9209,6 +9195,9 @@ msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP-käyttäjänimissä ei tule olla välilyöntejä tai @-merkkejä" +msgid "SIP connect server not specified" +msgstr "SIP-yhteyspalvelinta ei määritelty" + #. *< type #. *< ui_requirement #. *< flags @@ -13897,6 +13886,13 @@ "Tätä liitännäistä voidaan käyttää XMPP-palvelimien tai -asiakasohjelmien " "virheenjäljitykseen." +#~ msgid "" +#~ "You may be disconnected shortly. You may want to use TOC until this is " +#~ "fixed. Check %s for updates." +#~ msgstr "" +#~ "Yhteytesi saatetaan katkaista kohta. Saatat haluta käyttää TOC-" +#~ "yhteyskäytäntöä kunnes tämä on korjattu. Tarkista päivitykset: %s" + #~ msgid "Connection to server lost (no data received within %d second)" #~ msgid_plural "" #~ "Connection to server lost (no data received within %d seconds)"