aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2010-04-02 02:00:36 +0800
committerMilan Crha <mcrha@redhat.com>2010-04-02 02:00:36 +0800
commit125573b8fd62f4d0d38907c95c70168ca984d3c4 (patch)
tree709ea2df6889f4aa66c17a6eba795096424bae1c
parent0d66851bd58f75b21f30942c05a96fa7c4bf5817 (diff)
downloadgsoc2013-evolution-125573b8fd62f4d0d38907c95c70168ca984d3c4.tar.gz
gsoc2013-evolution-125573b8fd62f4d0d38907c95c70168ca984d3c4.tar.zst
gsoc2013-evolution-125573b8fd62f4d0d38907c95c70168ca984d3c4.zip
Bug #302742 - The mail error messages is difficult to understand/translate
-rw-r--r--mail/mail-autofilter.c33
-rw-r--r--mail/mail-vfolder.c30
-rw-r--r--mail/mail.error.xml12
3 files changed, 54 insertions, 21 deletions
diff --git a/mail/mail-autofilter.c b/mail/mail-autofilter.c
index 8117bfca6a..dd6e64afac 100644
--- a/mail/mail-autofilter.c
+++ b/mail/mail-autofilter.c
@@ -424,18 +424,39 @@ mail_filter_delete_uri(CamelStore *store, const gchar *uri)
if (deleted) {
GtkWidget *dialog;
GString *s;
+ guint s_count;
+ gchar *info;
GList *l;
s = g_string_new("");
- l = deleted;
- while (l) {
- g_string_append_printf (s, " %s\n", (gchar *)l->data);
- l = l->next;
+ s_count = 0;
+ for (l = deleted; l; l = l->next) {
+ const gchar *name = (const gchar *)l->data;
+
+ if (s_count == 0) {
+ g_string_append (s, name);
+ } else {
+ if (s_count == 1) {
+ g_string_prepend (s, " ");
+ g_string_append (s, "\n");
+ }
+ g_string_append_printf (s, " %s\n", name);
+ }
+ s_count++;
}
- dialog = e_alert_dialog_new_for_args (e_shell_get_active_window (NULL), "mail:filter-updated", s->str, euri, NULL);
- g_string_free(s, TRUE);
+ info = g_strdup_printf (ngettext (
+ /* Translators: The first %s is name of the affected filter rule(s),
+ the second %s is uri of the removed folder. For more than one filter
+ rule is each of them on a separate line, with four spaces in front
+ of its name, without quotes. */
+ "The filter rule \"%s\" has been updated, because it used just removed folder\n\"%s\".",
+ "The following filter rules\n%s have been updated, because they used just removed folder\n\"%s\".",
+ s_count), s->str, euri);
+ dialog = e_alert_dialog_new_for_args (e_shell_get_active_window (NULL), "mail:filter-updated", info, NULL);
em_utils_show_info_silent (dialog);
+ g_string_free (s, TRUE);
+ g_free (info);
d(printf("Folder delete/rename '%s' changed filters, resaving\n", euri));
if (e_rule_context_save ((ERuleContext *) fc, user) == -1)
diff --git a/mail/mail-vfolder.c b/mail/mail-vfolder.c
index 5d4dd4468d..2fe7a03c53 100644
--- a/mail/mail-vfolder.c
+++ b/mail/mail-vfolder.c
@@ -594,6 +594,7 @@ mail_vfolder_delete_uri(CamelStore *store, const gchar *curi)
const gchar *source;
CamelVeeFolder *vf;
GString *changed;
+ guint changed_count;
gchar *uri;
GList *link;
@@ -606,6 +607,7 @@ mail_vfolder_delete_uri(CamelStore *store, const gchar *curi)
g_return_if_fail (mail_in_main_thread());
+ changed_count = 0;
changed = g_string_new ("");
G_LOCK (vfolder);
@@ -638,7 +640,16 @@ mail_vfolder_delete_uri(CamelStore *store, const gchar *curi)
0, NULL, rule_changed, vf);
em_vfolder_rule_remove_source ((EMVFolderRule *)rule, source);
g_signal_connect (rule, "changed", G_CALLBACK(rule_changed), vf);
- g_string_append_printf (changed, " %s\n", rule->name);
+ if (changed_count == 0) {
+ g_string_append (changed, rule->name);
+ } else {
+ if (changed_count == 1) {
+ g_string_prepend (changed, " ");
+ g_string_append (changed, "\n");
+ }
+ g_string_append_printf (changed, " %s\n", rule->name);
+ }
+ changed_count++;
source = NULL;
}
g_free(csource);
@@ -658,13 +669,22 @@ done:
G_UNLOCK (vfolder);
- if (changed->str[0]) {
+ if (changed_count > 0) {
GtkWidget *dialog;
const gchar *data_dir;
- gchar *user;
-
- dialog = e_alert_dialog_new_for_args (e_shell_get_active_window (NULL), "mail:vfolder-updated", changed->str, uri, NULL);
+ gchar *user, *info;
+
+ info = g_strdup_printf (ngettext (
+ /* Translators: The first %s is name of the affected search folder(s),
+ the second %s is uri of the removed folder. For more than one search
+ folder is each of them on a separate line, with four spaces in front
+ of its name, without quotes. */
+ "The Search Folder \"%s\" has been updated, because it used just removed folder\n\"%s\".",
+ "The following Search Folders\n%s have been updated, because they used just removed folder\n\"%s\".",
+ changed_count), changed->str, uri);
+ dialog = e_alert_dialog_new_for_args (e_shell_get_active_window (NULL), "mail:vfolder-updated", info, NULL);
em_utils_show_info_silent (dialog);
+ g_free (info);
data_dir = mail_session_get_data_dir ();
user = g_build_filename (data_dir, "vfolders.xml", NULL);
diff --git a/mail/mail.error.xml b/mail/mail.error.xml
index 2108ddd222..1a1aef831e 100644
--- a/mail/mail.error.xml
+++ b/mail/mail.error.xml
@@ -322,20 +322,12 @@ go to the Search Folder editor to add it explicitly, if required.</_secondary>
<error id="vfolder-updated" type="info">
<_primary>Search Folders automatically updated.</_primary>
- <_secondary xml:space="preserve">The following Search Folder(s):
-{0}
-Used the now removed folder:
- "{1}"
-And have been updated.</_secondary>
+ <secondary xml:space="preserve">{0}</secondary>
</error>
<error id="filter-updated" type="info">
<_primary>Mail filters automatically updated.</_primary>
- <_secondary xml:space="preserve">The following filter rule(s):
-{0}
-Used the now removed folder:
- "{1}"
-And have been updated.</_secondary>
+ <secondary xml:space="preserve">{0}</secondary>
</error>
<error id="no-folder" type="error">