changeset 30196:28dd2b7331fd

merged from im.pidgin.pidgin
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Wed, 28 Apr 2010 19:22:17 +0900
parents c9413547ee33 (current diff) 65c7e53d4bdb (diff)
children 77aba27f64da
files libpurple/protocols/msn/msg.c
diffstat 5 files changed, 162 insertions(+), 119 deletions(-) [+]
line wrap: on
line diff
--- a/COPYRIGHT	Fri Apr 23 14:44:01 2010 +0900
+++ b/COPYRIGHT	Wed Apr 28 19:22:17 2010 +0900
@@ -295,6 +295,7 @@
 Paolo Maggi
 Sulabh Mahajan
 Willian T. Mahan
+Jonathan Maltz
 Tobias Markmann
 Kris Marsh
 Fidel Martinez
--- a/ChangeLog	Fri Apr 23 14:44:01 2010 +0900
+++ b/ChangeLog	Wed Apr 28 19:22:17 2010 +0900
@@ -47,6 +47,8 @@
 	  buddy icons.
 	* The 'Message Timestamp Formats' plugin allows changing the timestamp
 	  format from the timestamps' context menu in conversation log.
+	* The 'Message Timestamp Formats' plugin allows forcing 12-hour
+	  timestamps.  (Jonathan Maltz)
 	* Fix pastes from Chrome (rich-text pastes and probably URLs
 	  having garbage appended to them)
 
--- a/libpurple/protocols/msn/msg.c	Fri Apr 23 14:44:01 2010 +0900
+++ b/libpurple/protocols/msn/msg.c	Wed Apr 28 19:22:17 2010 +0900
@@ -981,14 +981,13 @@
 static void 
 got_wink_cb(MsnSlpCall *slpcall, const guchar *data, gsize size)
 {
-	FILE *f;
+	FILE *f = NULL;
 	char *path = NULL;
 	const char *who = slpcall->slplink->remote_user;
 	purple_debug_info("msn", "Received wink from %s\n", who);
 
-	if ((f = purple_mkstemp(&path, TRUE))) {
-		fwrite(data, size, 1, f);
-		fclose(f);
+	if ((f = purple_mkstemp(&path, TRUE)) &&
+	    (fwrite(data, 1, size, f) == size)) {
 		datacast_inform_user(slpcall->slplink->swboard,
 		                     who,
 		                     _("%s sent a wink. <a href='msn-wink://%s'>Click here to play it</a>"),
@@ -999,21 +998,22 @@
 		                     who,
 		                     _("%s sent a wink, but it could not be saved"),
 		                     NULL);
-	} 
+	}
+	if (f)
+		fclose(f);
 	g_free(path);
 }
 
 static void 
 got_voiceclip_cb(MsnSlpCall *slpcall, const guchar *data, gsize size)
 {
-	FILE *f;
+	FILE *f = NULL;
 	char *path = NULL;
 	const char *who = slpcall->slplink->remote_user;
 	purple_debug_info("msn", "Received voice clip from %s\n", who);
 
-	if ((f = purple_mkstemp(&path, TRUE))) {
-		fwrite(data, size, 1, f);
-		fclose(f);
+	if ((f = purple_mkstemp(&path, TRUE)) &&
+	    (fwrite(data, 1, size, f) == size)) {
 		datacast_inform_user(slpcall->slplink->swboard,
 		                     who,
 		                     _("%s sent a voice clip. <a href='audio://%s'>Click here to play it</a>"),
@@ -1024,7 +1024,9 @@
 		                     who,
 		                     _("%s sent a voice clip, but it could not be saved"),
 		                     NULL);
-	} 
+	}
+	if (f)
+		fclose(f);
 	g_free(path);
 }
 
--- a/pidgin/plugins/timestamp_format.c	Fri Apr 23 14:44:01 2010 +0900
+++ b/pidgin/plugins/timestamp_format.c	Wed Apr 28 19:22:17 2010 +0900
@@ -12,6 +12,17 @@
 
 #include <time.h>
 
+static const char *format_12hour_hour(const struct tm *tm)
+{
+	static char hr[3];
+	int hour = tm->tm_hour % 12;
+	if (hour == 0)
+		hour = 12;
+
+	g_snprintf(hr, sizeof(hr), "%d", hour);
+	return hr;
+}
+
 static PurplePluginPrefFrame *
 get_plugin_pref_frame(PurplePlugin *plugin)
 {
@@ -24,10 +35,14 @@
 	ppref = purple_plugin_pref_new_with_label(_("Timestamp Format Options"));
 	purple_plugin_pref_frame_add(frame, ppref);
 
-	tmp = g_strdup_printf(_("_Force 24-hour time format"));
+	tmp = g_strdup_printf(_("_Force timestamp format:"));
 	ppref = purple_plugin_pref_new_with_name_and_label(
-			"/plugins/gtk/timestamp_format/force_24hr",
+			"/plugins/gtk/timestamp_format/force",
 			tmp);
+	purple_plugin_pref_set_type(ppref, PURPLE_PLUGIN_PREF_CHOICE);
+	purple_plugin_pref_add_choice(ppref, _("Use system default"), "default");
+	purple_plugin_pref_add_choice(ppref, _("12 hour time format"), "force12");
+	purple_plugin_pref_add_choice(ppref, _("24 hour time format"), "force24");
 	purple_plugin_pref_frame_add(frame, ppref);
 	g_free(tmp);
 
@@ -58,27 +73,50 @@
 static char *timestamp_cb_common(PurpleConversation *conv,
                                  time_t t,
                                  gboolean show_date,
-                                 gboolean force,
+                                 const char *force,
                                  const char *dates,
 								 gboolean parens)
 {
+	struct tm *tm;
+
 	g_return_val_if_fail(dates != NULL, NULL);
 
+	tm = localtime(&t);
+
 	if (show_date ||
 	    !strcmp(dates, "always") ||
 	    (conv != NULL && purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT && !strcmp(dates, "chats")))
 	{
-		struct tm *tm = localtime(&t);
-		if (force)
+		if (g_str_equal(force, "force24"))
 			return g_strdup_printf("%s%s%s", parens ? "(" : "", purple_utf8_strftime("%Y-%m-%d %H:%M:%S", tm), parens ? ")" : "");
-		else
+		else if (g_str_equal(force, "force12")) {
+			char *date = g_strdup_printf("%s", purple_utf8_strftime("%Y-%m-%d ", tm));
+			char *remtime = g_strdup_printf("%s", purple_utf8_strftime(":%M:%S %p", tm));
+			const char *hour = format_12hour_hour(tm);
+			char *output;
+
+			output = g_strdup_printf("%s%s%s%s%s",
+			                         parens ? "(" : "", date,
+									 hour, remtime, parens ? ")" : "");
+
+			g_free(date);
+			g_free(remtime);
+
+			return output;
+		} else
 			return g_strdup_printf("%s%s%s", parens ? "(" : "", purple_date_format_long(tm), parens ? ")" : "");
 	}
 
-	if (force)
-	{
-		struct tm *tm = localtime(&t);
+	if (g_str_equal(force, "force24"))
 		return g_strdup_printf("%s%s%s", parens ? "(" : "", purple_utf8_strftime("%H:%M:%S", tm), parens ? ")" : "");
+	else if (g_str_equal(force, "force12")) {
+		const char *hour = format_12hour_hour(tm);
+		char *remtime = g_strdup_printf("%s", purple_utf8_strftime(":%M:%S %p", tm));
+		char *output = g_strdup_printf("%s%s%s%s", parens ? "(" : "", hour, remtime, parens ? ")" : "");
+
+		g_free(remtime);
+
+		return output;
 	}
 
 	return NULL;
@@ -87,8 +125,8 @@
 static char *conversation_timestamp_cb(PurpleConversation *conv,
                                        time_t t, gboolean show_date, gpointer data)
 {
-	gboolean force = purple_prefs_get_bool(
-				"/plugins/gtk/timestamp_format/force_24hr");
+	const char *force = purple_prefs_get_string(
+				"/plugins/gtk/timestamp_format/force");
 	const char *dates = purple_prefs_get_string(
 				"/plugins/gtk/timestamp_format/use_dates/conversation");
 
@@ -99,8 +137,8 @@
 
 static char *log_timestamp_cb(PurpleLog *log, time_t t, gboolean show_date, gpointer data)
 {
-	gboolean force = purple_prefs_get_bool(
-				"/plugins/gtk/timestamp_format/force_24hr");
+	const char *force = purple_prefs_get_string(
+				"/plugins/gtk/timestamp_format/force");
 	const char *dates = purple_prefs_get_string(
 				"/plugins/gtk/timestamp_format/use_dates/log");
 
@@ -264,7 +302,17 @@
 	purple_prefs_add_none("/plugins/gtk");
 	purple_prefs_add_none("/plugins/gtk/timestamp_format");
 
-	purple_prefs_add_bool("/plugins/gtk/timestamp_format/force_24hr", TRUE);
+	if (!purple_prefs_exists("/plugins/gtk/timestamp_format/force") &&
+	    purple_prefs_exists("/plugins/gtk/timestamp_format/force_24hr"))
+	{
+		if (purple_prefs_get_bool(
+		   "/plugins/gtk/timestamp_format/force_24hr"))
+			purple_prefs_add_string("/plugins/gtk/timestamp_format/force", "force24");
+		else
+			purple_prefs_add_string("/plugins/gtk/timestamp_format/force", "default");
+	}
+	else
+		purple_prefs_add_string("/plugins/gtk/timestamp_format/force", "default");
 
 	purple_prefs_add_none("/plugins/gtk/timestamp_format/use_dates");
 	purple_prefs_add_string("/plugins/gtk/timestamp_format/use_dates/conversation", "automatic");
--- a/po/ca.po	Fri Apr 23 14:44:01 2010 +0900
+++ b/po/ca.po	Wed Apr 28 19:22:17 2010 +0900
@@ -33,8 +33,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-04-07 21:58+0200\n"
-"PO-Revision-Date: 2010-04-09 09:06+0200\n"
+"POT-Creation-Date: 2010-04-26 18:32+0200\n"
+"PO-Revision-Date: 2010-04-26 19:11+0200\n"
 "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
 "Language-Team: Catalan <tradgnome@softcatala.net>\n"
 "MIME-Version: 1.0\n"
@@ -4184,10 +4184,13 @@
 msgid "Invalid XMPP ID"
 msgstr "ID de l'XMPP invàlid"
 
+msgid "Invalid XMPP ID. Username portion must be set."
+msgstr "L'ID de l'XMPP no és vàlid. Cal especificar el nom d'usuari."
+
 msgid "Invalid XMPP ID. Domain must be set."
 msgstr "L'ID de l'XMPP no és vàlid. Cal especificar un domini."
 
-# FIX
+# FIXME
 msgid "Malformed BOSH URL"
 msgstr "L'URL BOSH està malmès"
 
@@ -4884,20 +4887,17 @@
 msgid "Calm"
 msgstr "Calmat"
 
-#, fuzzy
 msgid "Cautious"
-msgstr "Xats"
+msgstr "Prudent"
 
 msgid "Cold"
 msgstr "Fred"
 
-#, fuzzy
 msgid "Confident"
-msgstr "Conflicte"
-
-#, fuzzy
+msgstr "Amb confiança"
+
 msgid "Confused"
-msgstr "_Configura"
+msgstr "Confós"
 
 #, fuzzy
 msgid "Contemplative"
@@ -4943,9 +4943,8 @@
 msgid "Embarrassed"
 msgstr "Avergonyit"
 
-#, fuzzy
 msgid "Envious"
-msgstr "Ansiós"
+msgstr "Envejós"
 
 #. 2
 msgid "Excited"
@@ -5079,9 +5078,8 @@
 msgid "Serious"
 msgstr "Seriós"
 
-#, fuzzy
 msgid "Shocked"
-msgstr "Blocat"
+msgstr "En estat de xoc"
 
 msgid "Shy"
 msgstr "Vergonyós"
@@ -6933,6 +6931,10 @@
 msgid "AOL does not allow your screen name to authenticate here"
 msgstr "AOL no permet que us autentiqueu amb aquest nom d'usuari aquí"
 
+#, c-format
+msgid "Error requesting %s"
+msgstr "S'ha produït un error en sol·licitar %s"
+
 msgid "Could not join chat room"
 msgstr "No s'ha pogut entrar a la sala de xat"
 
@@ -7021,9 +7023,8 @@
 msgid "Studying"
 msgstr "Estudiant"
 
-#, fuzzy
 msgid "In the restroom"
-msgstr "Interessos"
+msgstr "Al lavabo"
 
 msgid "Received invalid data on connection with server"
 msgstr "S'han rebut dades invàlides a la connexió amb el servidor"
@@ -7308,25 +7309,20 @@
 msgid "Invisible"
 msgstr "Invisible"
 
-#, fuzzy
 msgid "Evil"
-msgstr "Correu electrònic"
-
-#, fuzzy
+msgstr "Maliciós"
+
 msgid "Depression"
-msgstr "Professió"
-
-#, fuzzy
+msgstr "Depressió"
+
 msgid "At home"
-msgstr "Quant a mi"
-
-#, fuzzy
+msgstr "A casa"
+
 msgid "At work"
-msgstr "Xarxa"
-
-#, fuzzy
+msgstr "A la feina"
+
 msgid "At lunch"
-msgstr "A fora dinant"
+msgstr "Dinant"
 
 msgid "IP Address"
 msgstr "Adreça IP"
@@ -7841,9 +7837,8 @@
 msgid "iTunes Music Store Link"
 msgstr "Enllaç al magatzem de música iTunes"
 
-#, fuzzy
 msgid "Lunch"
-msgstr "Finch"
+msgstr "Dinar"
 
 #, c-format
 msgid "Buddy Comment for %s"
@@ -8293,10 +8288,10 @@
 msgid "Admin"
 msgstr "Administrador"
 
+# FIXME
 #. XXX: Should this be "Topic"?
-#, fuzzy
 msgid "Room Title"
-msgstr "Llista de sales"
+msgstr "Nom de la sala"
 
 msgid "Notice"
 msgstr "Avís"
@@ -10303,13 +10298,13 @@
 "entrant al web de Yahoo!"
 
 #. indicates a lock due to logging in too frequently
-#, fuzzy
 msgid ""
 "Account locked: You have been logging in too frequently.  Wait a few minutes "
 "before trying to connect again.  Logging into the Yahoo! website may help."
 msgstr ""
-"El compte està blocat perquè s'ha intentat entrar massa cops. Això es pot "
-"solucionar entrant al web de Yahoo!"
+"El compte està blocat perquè s'ha intentat entrar massa cops. Espereu uns "
+"minuts abans de tornar-ho a intentar. Potser també es pot solucionar entrant "
+"al web de Yahoo!"
 
 #. username or password missing
 msgid "Username or password missing"
@@ -10856,9 +10851,8 @@
 msgid "Extended away"
 msgstr "Absent durant una bona estona"
 
-#, fuzzy
 msgid "Feeling"
-msgstr "S'està rebent"
+msgstr "Estat d'ànim"
 
 #, c-format
 msgid "%s (%s) changed status from %s to %s"
@@ -11031,12 +11025,6 @@
 msgid "Pidgin Internet Messenger"
 msgstr "Missatger d'Internet Pidgin"
 
-msgid "Orientation"
-msgstr "Orientació"
-
-msgid "The orientation of the tray."
-msgstr "Orientació de l'àrea de notificació."
-
 #. Build the login options frame.
 msgid "Login Options"
 msgstr "Opcions d'entrada"
@@ -11406,13 +11394,11 @@
 msgid "Unknown node type"
 msgstr "Codi d'error desconegut"
 
-#, fuzzy
 msgid "Please select your mood from the list"
-msgstr "Seleccioneu l'estat d'ànim de la llista."
-
-#, fuzzy
+msgstr "Seleccioneu l'estat d'ànim de la llista"
+
 msgid "Message (optional)"
-msgstr "Àlies (opcional)"
+msgstr "Missatge (opcional)"
 
 msgid "Edit User Mood"
 msgstr "Edita l'estat d'ànim"
@@ -11496,9 +11482,8 @@
 msgid "/Tools/Pr_ivacy"
 msgstr "/Eines/_Privadesa"
 
-#, fuzzy
 msgid "/Tools/Set _Mood"
-msgstr "/Eines/_Registre del sistema"
+msgstr "/Eines/Esta_bleix l'estat d'ànim"
 
 msgid "/Tools/_File Transfers"
 msgstr "/Eines/_Transferència de fitxers"
@@ -11519,20 +11504,17 @@
 msgid "/Help/Online _Help"
 msgstr "/Ajuda/A_juda en línia"
 
-#, fuzzy
 msgid "/Help/_Build Information"
-msgstr "Informació sobre l'amic"
+msgstr "/Ajuda/Informació sobre el _muntatge"
 
 msgid "/Help/_Debug Window"
 msgstr "/Ajuda/Finestra de _depuració"
 
-#, fuzzy
 msgid "/Help/De_veloper Information"
-msgstr "Informació del servidor"
-
-#, fuzzy
+msgstr "/Ajuda/Informació sobre els d_esenvolupadors"
+
 msgid "/Help/_Translator Information"
-msgstr "Informació personal"
+msgstr "/Ajuda/Informació sobre els _traductors"
 
 msgid "/Help/_About"
 msgstr "/Ajuda/_Quant a"
@@ -11761,9 +11743,8 @@
 msgid "_Edit Account"
 msgstr "_Edita el compte"
 
-#, fuzzy
 msgid "Set _Mood..."
-msgstr "Estableix l'estat d'ànim..."
+msgstr "Estableix l'_estat d'ànim..."
 
 msgid "No actions available"
 msgstr "No hi ha accions disponibles"
@@ -12037,13 +12018,11 @@
 msgid "0 people in room"
 msgstr "No hi ha ningú a la sala"
 
-#, fuzzy
 msgid "Close Find bar"
-msgstr "Tanca aquesta pestanya"
-
-#, fuzzy
+msgstr "Tanca la barra de cerca"
+
 msgid "Find:"
-msgstr "Cerca"
+msgstr "Cerca:"
 
 #, c-format
 msgid "%d person in room"
@@ -12449,7 +12428,7 @@
 msgid "Lithuanian"
 msgstr "Lituà"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%s is a messaging client based on libpurple which is capable of connecting "
 "to multiple messaging services at once.  %s is written in C using GTK+.  %s "
@@ -12458,16 +12437,14 @@
 "copyrighted by its contributors, a list of whom is also distributed with %"
 "s.  There is no warranty for %s.<BR><BR>"
 msgstr ""
-"El %s és un client de missatgeria instantània modular basat en libpurple, "
-"que permet utilitzar els protocols AIM, MSN, Yahoo!, Jabber, ICQ, IRC, SILC, "
-"SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, "
-"Gadu-Gadu, i QQ, tots alhora. Utilitza la biblioteca de programació GTK+."
-"<BR><BR>Podeu modificar i redistribuir el programa sota els termes de la GPL "
-"(versió 2 o posterior). Hi ha una còpia de la GPL dins del fitxer «COPYING» "
-"que es distribueix amb el %s. Els drets d'autor del %s pertanyen als seus "
-"col·laboradors. El fitxer «COPYRIGHT» conté una llista completa de tots els "
-"contribuïdors. No us proporcionem cap mena de garantia amb aquest programa."
-"<BR><BR>"
+"El %s és un client de missatgeria basat en libpurple que permet connectar-"
+"vos a diferents serveis de missatgeria instantània al mateix temps. El %s "
+"està escrit en C i la biblioteca de programació GTK+. El %s es distribueix "
+"sota llicència GPL 2 (o posterior), i per tant podeu modificar-lo i "
+"redistribuir-lo d'acord amb aquesta llicència. Amb el %s es distribueix una "
+"còpia de la GPL. El %s és copyright de tothom que hi ha contribuït, la "
+"llista de col·laboradors també es distribueix amb el %s. No es proporciona "
+"cap mena de garantia amb el %s.<BR><BR>"
 
 #, c-format
 msgid ""
@@ -12480,7 +12457,7 @@
 "A><BR>\t<A HREF=\"%s\">Preguntes més freqüents</A><BR>\tCanal d'IRC: #pidgin "
 "a irc.freenode.net<BR>\tXMPP MUC: devel@conference.pidgin.im<BR><BR>"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "<font size=\"4\"><b>Help from other Pidgin users</b></font> is available by "
 "e-mailing <a href=\"mailto:support@pidgin.im\">support@pidgin.im</a><br/"
@@ -12490,26 +12467,25 @@
 "welcome to post in another language, but the responses may be less helpful."
 "<br/>"
 msgstr ""
-"<font size=\"4\">Ajuda d'altres usuaris del Pidgin:</font> <a href=\"mailto:"
-"support@pidgin.im\">support@pidgin.im</a><br/>Aquesta és una llista de "
-"correu <b>pública</b>. (<a href=\"http://pidgin.im/pipermail/support/"
+"<font size=\"4\"><b>Ajuda d'altres usuaris del Pidgin</b>:</font> <a href="
+"\"mailto:support@pidgin.im\">support@pidgin.im</a><br/>Aquesta és una llista "
+"de correu <b>pública</b>. (<a href=\"http://pidgin.im/pipermail/support/"
 "\">arxiu</a>)<br/>No us podem ajudar amb connectors d'altres proveïdors.<br/"
-">En aquesta llista s'hi empra principalment l'<b>anglès</b>.  Podeu escriure-"
+">En aquesta llista s'hi empra principalment l'<b>anglès</b>. Podeu escriure-"
 "hi en un altre idioma, però és possible que les respostes no siguin de gaire "
-"ajuda.<br/><br/>"
+"ajuda.<br/>"
 
 #, c-format
 msgid "About %s"
 msgstr "Quant al %s"
 
-#, fuzzy
 msgid "Build Information"
-msgstr "Informació sobre l'amic"
+msgstr "Informació sobre el muntatge"
 
 #. End of not to be translated section
-#, fuzzy, c-format
+#, c-format
 msgid "%s Build Information"
-msgstr "Informació sobre l'amic"
+msgstr "Informació sobre el muntatge del %s"
 
 msgid "Current Developers"
 msgstr "Desenvolupadors actuals"
@@ -12523,9 +12499,9 @@
 msgid "Retired Crazy Patch Writers"
 msgstr "Escriptors de pedaços retirats"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Developer Information"
-msgstr "Informació del servidor"
+msgstr "Informació sobre els desenvolupadors del %s"
 
 msgid "Current Translators"
 msgstr "Traductors actuals"
@@ -12533,9 +12509,9 @@
 msgid "Past Translators"
 msgstr "Antics traductors"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Translator Information"
-msgstr "Més informació"
+msgstr "Informació sobre els traductors del %s"
 
 msgid "_Name"
 msgstr "_Nom"
@@ -15113,8 +15089,17 @@
 msgstr "Opcions del format de les marques horàries"
 
 #, c-format
-msgid "_Force 24-hour time format"
-msgstr "_Força el format de 24 hores"
+msgid "_Force timestamp format:"
+msgstr "_Format de les marques horàries:"
+
+msgid "Use system default"
+msgstr "Predeterminat del sistema"
+
+msgid "12 hour time format"
+msgstr "12 hores"
+
+msgid "24 hour time format"
+msgstr "24 hores"
 
 msgid "Show dates in..."
 msgstr "Mostra dates a..."
@@ -15318,9 +15303,14 @@
 msgstr "Envia i rep blocs XMPP en brut."
 
 #. *  description
-#, fuzzy
 msgid "This plugin is useful for debugging XMPP servers or clients."
-msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
+msgstr "Aquest connector és útil per a depurar servidors o clients XMPP."
+
+#~ msgid "Orientation"
+#~ msgstr "Orientació"
+
+#~ msgid "The orientation of the tray."
+#~ msgstr "Orientació de l'àrea de notificació."
 
 #~ msgid "Artist"
 #~ msgstr "Artista"