Merge lp:~mterry/deja-dup/warn-on-bad-read into lp:deja-dup/22

Proposed by Michael Terry
Status: Merged
Merged at revision: 1274
Proposed branch: lp:~mterry/deja-dup/warn-on-bad-read
Merge into: lp:deja-dup/22
Diff against target: 1252 lines (+337/-209)
11 files modified
common/Duplicity.vala (+41/-9)
common/Operation.vala (+8/-8)
common/OperationBackup.vala (+2/-2)
common/OperationRestore.vala (+2/-2)
deja-dup/AssistantBackup.vala (+5/-1)
deja-dup/AssistantOperation.vala (+40/-22)
deja-dup/AssistantRestore.vala (+1/-1)
deja-dup/AssistantRestoreMissing.vala (+4/-4)
deja-dup/StatusIcon.vala (+10/-3)
po/deja-dup.pot (+182/-156)
tests/common/common.vala (+42/-1)
To merge this branch: bzr merge lp:~mterry/deja-dup/warn-on-bad-read
Reviewer Review Type Date Requested Status
Ken VanDine Approve
Review via email: mp+86823@code.launchpad.net

Description of the change

Tell user if we couldn't read a file during the backup.

To post a comment you must log in.
Revision history for this message
Ken VanDine (ken-vandine) wrote :

Sorry for the delay in reviewing this, I think it looks good however the tests have a conflict now with the latest trunk. Can you update this branch to merge cleanly and let me give it another once over?

review: Needs Fixing
lp:~mterry/deja-dup/warn-on-bad-read updated
1267. By Michael Terry

merge from trunk

Revision history for this message
Michael Terry (mterry) wrote :

Try now.

lp:~mterry/deja-dup/warn-on-bad-read updated
1268. By Michael Terry

merge from trunk

Revision history for this message
Ken VanDine (ken-vandine) wrote :

Tests pass now and it looks good.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'common/Duplicity.vala'
--- common/Duplicity.vala 2011-12-28 06:20:36 +0000
+++ common/Duplicity.vala 2012-01-09 09:28:24 +0000
@@ -30,7 +30,7 @@
30 * vala withot the need of manually running duplicity command.30 * vala withot the need of manually running duplicity command.
31 */31 */
3232
33 public signal void done(bool success, bool cancelled);33 public signal void done(bool success, bool cancelled, string? detail);
34 public signal void raise_error(string errstr, string? detail);34 public signal void raise_error(string errstr, string? detail);
35 public signal void action_desc_changed(string action);35 public signal void action_desc_changed(string action);
36 public signal void action_file_changed(File file, bool actual);36 public signal void action_file_changed(File file, bool actual);
@@ -108,6 +108,8 @@
108 bool has_checked_contents = false;108 bool has_checked_contents = false;
109 bool has_non_home_contents = false;109 bool has_non_home_contents = false;
110 List<File> homes = new List<File>();110 List<File> homes = new List<File>();
111
112 List<File> read_error_files = null;
111 113
112 bool checked_collection_info = false;114 bool checked_collection_info = false;
113 bool got_collection_info = false;115 bool got_collection_info = false;
@@ -169,7 +171,7 @@
169 }171 }
170 catch (Error e) {172 catch (Error e) {
171 raise_error(e.message, null);173 raise_error(e.message, null);
172 done(false, false);174 done(false, false, null);
173 return;175 return;
174 }176 }
175 this.backend = backend;177 this.backend = backend;
@@ -187,7 +189,7 @@
187 delete_age = settings.get_int(DELETE_AFTER_KEY);189 delete_age = settings.get_int(DELETE_AFTER_KEY);
188190
189 if (!restart())191 if (!restart())
190 done(false, false);192 done(false, false, null);
191193
192 if (!backend.is_native()) {194 if (!backend.is_native()) {
193 Network.get().notify["connected"].connect(network_changed);195 Network.get().notify["connected"].connect(network_changed);
@@ -384,6 +386,7 @@
384 bool restart()386 bool restart()
385 {387 {
386 state = State.NORMAL;388 state = State.NORMAL;
389 read_error_files = null;
387 390
388 if (mode == Operation.Mode.INVALID)391 if (mode == Operation.Mode.INVALID)
389 return false;392 return false;
@@ -515,7 +518,7 @@
515518
516 if (!has_progress_total) {519 if (!has_progress_total) {
517 if (!restart())520 if (!restart())
518 done(false, false);521 done(false, false, null);
519 return;522 return;
520 }523 }
521524
@@ -551,7 +554,7 @@
551 }554 }
552 555
553 if (!restart())556 if (!restart())
554 done(false, false);557 done(false, false, null);
555 }558 }
556559
557 bool cleanup() {560 bool cleanup() {
@@ -596,6 +599,8 @@
596599
597 void handle_done(DuplicityInstance? inst, bool success, bool cancelled)600 void handle_done(DuplicityInstance? inst, bool success, bool cancelled)
598 {601 {
602 string detail = null;
603
599 if (can_ignore_error())604 if (can_ignore_error())
600 success = true;605 success = true;
601606
@@ -667,6 +672,17 @@
667 }672 }
668 }673 }
669 else if (mode == Operation.Mode.BACKUP) {674 else if (mode == Operation.Mode.BACKUP) {
675 if (read_error_files != null) {
676 // OK, we succeeded yay! But some files didn't make it into the backup
677 // because we couldn't read them. So tell the user so they don't think
678 // everything is hunky dory.
679 detail = _("Could not back up the following files. Please make sure you are able to open them.");
680 detail += "\n";
681 foreach (File f in read_error_files) {
682 detail += "\n%s".printf(f.get_parse_name());
683 }
684 }
685
670 mode = Operation.Mode.INVALID; // mark 'done' so when we delete, we don't restart686 mode = Operation.Mode.INVALID; // mark 'done' so when we delete, we don't restart
671 if (delete_files_if_needed())687 if (delete_files_if_needed())
672 return;688 return;
@@ -682,9 +698,9 @@
682 698
683 if (!success && !cancelled && !error_issued)699 if (!success && !cancelled && !error_issued)
684 show_error(_("Failed with an unknown error."));700 show_error(_("Failed with an unknown error."));
685 701
686 inst = null;702 inst = null;
687 done(success, cancelled);703 done(success, cancelled, detail);
688 }704 }
689 705
690 string saved_status;706 string saved_status;
@@ -803,6 +819,7 @@
803 protected static const int WARNING_UNMATCHED_SIG = 4;819 protected static const int WARNING_UNMATCHED_SIG = 4;
804 protected static const int WARNING_INCOMPLETE_BACKUP = 5;820 protected static const int WARNING_INCOMPLETE_BACKUP = 5;
805 protected static const int WARNING_ORPHANED_BACKUP = 6;821 protected static const int WARNING_ORPHANED_BACKUP = 6;
822 protected static const int WARNING_CANNOT_READ = 10;
806 protected static const int DEBUG_GENERIC = 1;823 protected static const int DEBUG_GENERIC = 1;
807824
808 void delete_cache()825 void delete_cache()
@@ -1265,7 +1282,22 @@
1265 // in ourselves, we may never get to it.1282 // in ourselves, we may never get to it.
1266 if (mode == Operation.Mode.BACKUP && !this.cleaned_up_once)1283 if (mode == Operation.Mode.BACKUP && !this.cleaned_up_once)
1267 cleanup(); // stops current backup, cleans up, then resumes1284 cleanup(); // stops current backup, cleans up, then resumes
1268 break;1285 break;
1286
1287 case WARNING_CANNOT_READ:
1288 // A file couldn't be backed up! We should note the name and present
1289 // the user with a list at the end.
1290 if (firstline.length > 2) {
1291 // Only add it if it's a child of one of our includes. Sometimes
1292 // Duplicity likes to talk to us about folders like /lost+found and
1293 // such that we don't care about.
1294 var error_file = make_file_obj(firstline[2]);
1295 foreach (File f in includes) {
1296 if (error_file.equal(f) || error_file.has_prefix(f))
1297 read_error_files.append(error_file);
1298 }
1299 }
1300 break;
1269 }1301 }
1270 }1302 }
1271 }1303 }
@@ -1406,7 +1438,7 @@
1406 }1438 }
1407 catch (Error e) {1439 catch (Error e) {
1408 show_error(e.message);1440 show_error(e.message);
1409 done(false, false);1441 done(false, false, null);
1410 }1442 }
1411 }1443 }
1412}1444}
14131445
=== modified file 'common/Operation.vala'
--- common/Operation.vala 2011-11-06 01:16:05 +0000
+++ common/Operation.vala 2012-01-09 09:28:24 +0000
@@ -32,7 +32,7 @@
32 * but it is provided to provide easier development and an abstraction layer32 * but it is provided to provide easier development and an abstraction layer
33 * in case Deja Dup project ever replaces its backend.33 * in case Deja Dup project ever replaces its backend.
34 */34 */
35 public signal void done(bool success, bool cancelled);35 public signal void done(bool success, bool cancelled, string? detail);
36 public signal void raise_error(string errstr, string? detail);36 public signal void raise_error(string errstr, string? detail);
37 public signal void action_desc_changed(string action);37 public signal void action_desc_changed(string action);
38 public signal void action_file_changed(File file, bool actual);38 public signal void action_file_changed(File file, bool actual);
@@ -115,7 +115,7 @@
115 }115 }
116 catch (Error e) {116 catch (Error e) {
117 raise_error(e.message, null);117 raise_error(e.message, null);
118 done(false, false);118 done(false, false, null);
119 return;119 return;
120 }120 }
121121
@@ -179,7 +179,7 @@
179 /*179 /*
180 * Connect Deja Dup to signals180 * Connect Deja Dup to signals
181 */181 */
182 dup.done.connect((d, o, c) => {operation_finished(d, o, c);});182 dup.done.connect((d, o, c, detail) => {operation_finished(d, o, c, detail);});
183 dup.raise_error.connect((d, s, detail) => {raise_error(s, detail);});183 dup.raise_error.connect((d, s, detail) => {raise_error(s, detail);});
184 dup.action_desc_changed.connect((d, s) => {action_desc_changed(s);});184 dup.action_desc_changed.connect((d, s) => {action_desc_changed(s);});
185 dup.action_file_changed.connect((d, f, b) => {action_file_changed(f, b);});185 dup.action_file_changed.connect((d, f, b) => {action_file_changed(f, b);});
@@ -214,7 +214,7 @@
214 }214 }
215 catch (Error e) {215 catch (Error e) {
216 raise_error(e.message, null);216 raise_error(e.message, null);
217 operation_finished(dup, false, false);217 operation_finished(dup, false, false, null);
218 }218 }
219 }219 }
220 220
@@ -230,7 +230,7 @@
230 if (!success) {230 if (!success) {
231 if (error != null)231 if (error != null)
232 raise_error(error, null);232 raise_error(error, null);
233 operation_finished(dup, false, false);233 operation_finished(dup, false, false, null);
234 return;234 return;
235 }235 }
236236
@@ -242,18 +242,18 @@
242 }242 }
243 catch (Error e) {243 catch (Error e) {
244 raise_error(e.message, null);244 raise_error(e.message, null);
245 operation_finished(dup, false, false);245 operation_finished(dup, false, false, null);
246 return;246 return;
247 }247 }
248 }248 }
249 249
250 internal async virtual void operation_finished(Duplicity dup, bool success, bool cancelled)250 internal async virtual void operation_finished(Duplicity dup, bool success, bool cancelled, string? detail)
251 {251 {
252 finished = true;252 finished = true;
253253
254 unclaim_bus();254 unclaim_bus();
255255
256 done(success, cancelled);256 done(success, cancelled, detail);
257 }257 }
258 258
259 protected virtual List<string>? make_argv() throws Error259 protected virtual List<string>? make_argv() throws Error
260260
=== modified file 'common/OperationBackup.vala'
--- common/OperationBackup.vala 2011-11-06 01:16:05 +0000
+++ common/OperationBackup.vala 2012-01-09 09:28:24 +0000
@@ -27,13 +27,13 @@
27 Object(xid: xid, mode: Mode.BACKUP);27 Object(xid: xid, mode: Mode.BACKUP);
28 }28 }
29 29
30 internal async override void operation_finished(Duplicity dup, bool success, bool cancelled)30 internal async override void operation_finished(Duplicity dup, bool success, bool cancelled, string? detail)
31 {31 {
32 /* If successfully completed, update time of last backup and run base operation_finished */32 /* If successfully completed, update time of last backup and run base operation_finished */
33 if (success)33 if (success)
34 DejaDup.update_last_run_timestamp(DejaDup.TimestampType.BACKUP);34 DejaDup.update_last_run_timestamp(DejaDup.TimestampType.BACKUP);
35 35
36 base.operation_finished(dup, success, cancelled);36 base.operation_finished(dup, success, cancelled, detail);
37 }37 }
38 38
39 protected override List<string>? make_argv() throws Error39 protected override List<string>? make_argv() throws Error
4040
=== modified file 'common/OperationRestore.vala'
--- common/OperationRestore.vala 2011-11-06 01:16:05 +0000
+++ common/OperationRestore.vala 2012-01-09 09:28:24 +0000
@@ -70,12 +70,12 @@
70 return argv;70 return argv;
71 }71 }
72 72
73 internal async override void operation_finished(Duplicity dup, bool success, bool cancelled)73 internal async override void operation_finished(Duplicity dup, bool success, bool cancelled, string? detail)
74 {74 {
75 if (success)75 if (success)
76 DejaDup.update_last_run_timestamp(DejaDup.TimestampType.RESTORE);76 DejaDup.update_last_run_timestamp(DejaDup.TimestampType.RESTORE);
7777
78 base.operation_finished(dup, success, cancelled);78 base.operation_finished(dup, success, cancelled, detail);
79 }79 }
80}80}
8181
8282
=== modified file 'deja-dup/AssistantBackup.vala'
--- deja-dup/AssistantBackup.vala 2011-09-15 15:34:42 +0000
+++ deja-dup/AssistantBackup.vala 2012-01-09 09:28:24 +0000
@@ -90,7 +90,11 @@
90 set_page_title(page, _("Backup Failed"));90 set_page_title(page, _("Backup Failed"));
91 }91 }
92 else {92 else {
93 Idle.add(() => {do_close(); return false;});93 set_page_title(page, _("Backup Finished"));
94
95 // If we don't have a special message to show the user, just bail.
96 if (!detail_widget.get_visible())
97 Idle.add(() => {do_close(); return false;});
94 }98 }
95 }99 }
96 else if (page == progress_page) {100 else if (page == progress_page) {
97101
=== modified file 'deja-dup/AssistantOperation.vala'
--- deja-dup/AssistantOperation.vala 2011-10-20 16:09:37 +0000
+++ deja-dup/AssistantOperation.vala 2012-01-09 09:28:24 +0000
@@ -68,8 +68,8 @@
68 protected Gtk.Widget progress_page {get; private set;}68 protected Gtk.Widget progress_page {get; private set;}
69 69
70 protected Gtk.Label summary_label;70 protected Gtk.Label summary_label;
71 Gtk.Widget error_widget;71 protected Gtk.Widget detail_widget;
72 Gtk.TextView error_text_view;72 Gtk.TextView detail_text_view;
73 protected Gtk.Widget summary_page {get; private set;}73 protected Gtk.Widget summary_page {get; private set;}
74 74
75 protected Gdk.Pixbuf op_icon {get; private set;}75 protected Gdk.Pixbuf op_icon {get; private set;}
@@ -266,22 +266,24 @@
266266
267 return page;267 return page;
268 }268 }
269 269
270 void show_detail(string detail)
271 {
272 page_box.set_size_request(300, 200);
273 detail_widget.no_show_all = false;
274 detail_widget.show_all();
275 detail_text_view.buffer.set_text(detail, -1);
276 }
277
270 public virtual void show_error(string error, string? detail)278 public virtual void show_error(string error, string? detail)
271 {279 {
272 error_occurred = true;280 error_occurred = true;
273 281
274 summary_label.label = error;282 summary_label.label = error;
275 summary_label.wrap = true;
276 summary_label.selectable = true;283 summary_label.selectable = true;
277 summary_label.max_width_chars = 25;
278 284
279 if (detail != null) {285 if (detail != null)
280 page_box.set_size_request(300, 200);286 show_detail(detail);
281 error_widget.no_show_all = false;
282 error_widget.show_all();
283 error_text_view.buffer.set_text(detail, -1);
284 }
285 287
286 go_to_page(summary_page);288 go_to_page(summary_page);
287 set_header_icon(Gtk.Stock.DIALOG_ERROR);289 set_header_icon(Gtk.Stock.DIALOG_ERROR);
@@ -408,23 +410,25 @@
408 {410 {
409 summary_label = new Gtk.Label("");411 summary_label = new Gtk.Label("");
410 summary_label.set("xalign", 0.0f);412 summary_label.set("xalign", 0.0f);
413 summary_label.wrap = true;
414 summary_label.max_width_chars = 25;
411 415
412 error_text_view = new Gtk.TextView();416 detail_text_view = new Gtk.TextView();
413 error_text_view.editable = false;417 detail_text_view.editable = false;
414 error_text_view.wrap_mode = Gtk.WrapMode.WORD;418 detail_text_view.wrap_mode = Gtk.WrapMode.WORD;
415 error_text_view.height_request = 150;419 detail_text_view.height_request = 150;
416420
417 var scroll = new Gtk.ScrolledWindow(null, null);421 var scroll = new Gtk.ScrolledWindow(null, null);
418 scroll.add(error_text_view);422 scroll.add(detail_text_view);
419 scroll.no_show_all = true; // only will be shown if an error occurs423 scroll.no_show_all = true; // only will be shown if an error occurs
420 error_widget = scroll;424 detail_widget = scroll;
421 425
422 var page = new Gtk.Box(Gtk.Orientation.VERTICAL, 6);426 var page = new Gtk.Box(Gtk.Orientation.VERTICAL, 6);
423 page.set("child", summary_label,427 page.set("child", summary_label,
424 "child", error_widget,428 "child", detail_widget,
425 "border-width", 12);429 "border-width", 12);
426 page.child_set(summary_label, "expand", false);430 page.child_set(summary_label, "expand", false);
427 page.child_set(error_widget, "expand", true);431 page.child_set(detail_widget, "expand", true);
428 432
429 return page;433 return page;
430 }434 }
@@ -472,10 +476,10 @@
472 summary_page = page;476 summary_page = page;
473 }477 }
474 478
475 protected virtual void apply_finished(DejaDup.Operation op, bool success, bool cancelled)479 protected virtual void apply_finished(DejaDup.Operation op, bool success, bool cancelled, string? detail)
476 {480 {
477 if (status_icon != null) {481 if (status_icon != null) {
478 status_icon.done(success, cancelled);482 status_icon.done(success, cancelled, detail);
479 status_icon = null;483 status_icon = null;
480 }484 }
481 this.op = null;485 this.op = null;
@@ -489,6 +493,20 @@
489 else {493 else {
490 if (success) {494 if (success) {
491 succeeded = true;495 succeeded = true;
496
497 if (detail != null) {
498 // Expect one paragraph followed by a blank line. The first paragraph
499 // is an explanation before the full detail content. So split it out
500 // into a proper label to look nice.
501 var halves = detail.split("\n\n", 2);
502 if (halves.length == 1) // no full detail content
503 summary_label.label = detail;
504 else if (halves.length == 2) {
505 summary_label.label = halves[0];
506 show_detail(halves[1]);
507 }
508 }
509
492 go_to_page(summary_page);510 go_to_page(summary_page);
493 }511 }
494 else // show error512 else // show error
@@ -579,7 +597,7 @@
579 {597 {
580 hide();598 hide();
581 if (status_icon != null) {599 if (status_icon != null) {
582 status_icon.done(false, true);600 status_icon.done(false, true, null);
583 status_icon = null; // hide immediately to seem responsive601 status_icon = null; // hide immediately to seem responsive
584 }602 }
585 }603 }
586604
=== modified file 'deja-dup/AssistantRestore.vala'
--- deja-dup/AssistantRestore.vala 2011-10-20 18:03:00 +0000
+++ deja-dup/AssistantRestore.vala 2012-01-09 09:28:24 +0000
@@ -362,7 +362,7 @@
362 show_error(_("No backups to restore"), null);362 show_error(_("No backups to restore"), null);
363 }363 }
364 364
365 protected virtual void query_finished(DejaDup.Operation op, bool success, bool cancelled)365 protected virtual void query_finished(DejaDup.Operation op, bool success, bool cancelled, string? detail)
366 {366 {
367 this.op_state = op.get_state();367 this.op_state = op.get_state();
368 this.query_op = null;368 this.query_op = null;
369369
=== modified file 'deja-dup/AssistantRestoreMissing.vala'
--- deja-dup/AssistantRestoreMissing.vala 2011-10-07 14:43:17 +0000
+++ deja-dup/AssistantRestoreMissing.vala 2012-01-09 09:28:24 +0000
@@ -326,7 +326,7 @@
326326
327 // Don't start if queue is empty.327 // Don't start if queue is empty.
328 if (backups_queue.get_length() == 0) {328 if (backups_queue.get_length() == 0) {
329 query_files_finished(query_op_files, true, false);329 query_files_finished(query_op_files, true, false, null);
330 return;330 return;
331 }331 }
332 332
@@ -385,7 +385,7 @@
385 query_op_files.start();385 query_op_files.start();
386 }386 }
387 387
388 protected override void query_finished(DejaDup.Operation op, bool success, bool cancelled)388 protected override void query_finished(DejaDup.Operation op, bool success, bool cancelled, string? detail)
389 {389 {
390 query_op = null;390 query_op = null;
391 op_state = this.op.get_state();391 op_state = this.op.get_state();
@@ -410,7 +410,7 @@
410 base.do_cancel();410 base.do_cancel();
411 }411 }
412412
413 protected override void apply_finished(DejaDup.Operation op, bool success, bool cancelled)413 protected override void apply_finished(DejaDup.Operation op, bool success, bool cancelled, string? detail)
414 {414 {
415 /*415 /*
416 * Ran after assistant finishes applying restore operation.416 * Ran after assistant finishes applying restore operation.
@@ -444,7 +444,7 @@
444 }444 }
445 }445 }
446 446
447 protected void query_files_finished(DejaDup.Operation? op, bool success, bool cancelled)447 protected void query_files_finished(DejaDup.Operation? op, bool success, bool cancelled, string? detail)
448 {448 {
449 query_op_files = null;449 query_op_files = null;
450 this.op = null;450 this.op = null;
451451
=== modified file 'deja-dup/StatusIcon.vala'
--- deja-dup/StatusIcon.vala 2011-10-10 02:27:25 +0000
+++ deja-dup/StatusIcon.vala 2012-01-09 09:28:24 +0000
@@ -109,7 +109,7 @@
109 update_progress();109 update_progress();
110 }110 }
111111
112 public virtual void done(bool success, bool cancelled)112 public virtual void done(bool success, bool cancelled, string? detail)
113 {113 {
114 if (note != null) {114 if (note != null) {
115 try {115 try {
@@ -122,9 +122,16 @@
122 }122 }
123123
124 if (success && !cancelled && op.mode == DejaDup.Operation.Mode.BACKUP) {124 if (success && !cancelled && op.mode == DejaDup.Operation.Mode.BACKUP) {
125 string msg = _("Backup completed");
126
127 string more = null;
128 if (detail != null) {
129 msg = _("Backup finished");
130 more = _("Not all files were successfully backed up. See dialog for more details.");
131 }
132
125 Notify.init(_("Backup"));133 Notify.init(_("Backup"));
126 note = new Notify.Notification(_("Backup completed"), null,134 note = new Notify.Notification(msg, more, "deja-dup");
127 "deja-dup");
128 try {135 try {
129 note.show();136 note.show();
130 }137 }
131138
=== modified file 'po/deja-dup.pot'
--- po/deja-dup.pot 2011-10-31 13:15:46 +0000
+++ po/deja-dup.pot 2012-01-09 09:28:24 +0000
@@ -8,7 +8,7 @@
8msgstr ""8msgstr ""
9"Project-Id-Version: PACKAGE VERSION\n"9"Project-Id-Version: PACKAGE VERSION\n"
10"Report-Msgid-Bugs-To: mike@mterry.name\n"10"Report-Msgid-Bugs-To: mike@mterry.name\n"
11"POT-Creation-Date: 2011-10-28 12:39-0400\n"11"POT-Creation-Date: 2012-01-04 16:22-0500\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -19,10 +19,10 @@
19"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"19"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
2020
21#. Translators: "Backup" is a noun21#. Translators: "Backup" is a noun
22#: ../data/deja-dup.desktop.in.h:1 ../data/deja-dup-ccpanel.desktop.in.h:222#: ../data/deja-dup.desktop.in.h:1 ../data/deja-dup-ccpanel.desktop.in.h:1
23#: ../data/deja-dup-preferences.desktop.in.in.h:2 ../deja-dup/Prompt.vala:9323#: ../data/deja-dup-preferences.desktop.in.in.h:1 ../deja-dup/Prompt.vala:93
24#: ../deja-dup/Prompt.vala:127 ../deja-dup/StatusIcon.vala:12524#: ../deja-dup/Prompt.vala:127 ../deja-dup/StatusIcon.vala:133
25#: ../deja-dup/StatusIcon.vala:224 ../monitor/monitor.vala:11525#: ../deja-dup/StatusIcon.vala:231 ../monitor/monitor.vala:115
26#: ../preferences/preferences-main.vala:5226#: ../preferences/preferences-main.vala:52
27#: ../preferences/preferences-main.vala:6627#: ../preferences/preferences-main.vala:66
28msgid "Backup"28msgid "Backup"
@@ -39,20 +39,20 @@
39msgid "Déjà Dup Backup Tool"39msgid "Déjà Dup Backup Tool"
40msgstr ""40msgstr ""
4141
42#: ../data/deja-dup-ccpanel.desktop.in.h:142#: ../data/deja-dup-ccpanel.desktop.in.h:2
43#: ../data/deja-dup-preferences.desktop.in.in.h:143#: ../data/deja-dup-preferences.desktop.in.in.h:2
44msgid "Back Up Now"
45msgstr ""
46
47#: ../data/deja-dup-ccpanel.desktop.in.h:3
48#: ../data/deja-dup-preferences.desktop.in.in.h:3
49msgid "Change your backup settings"44msgid "Change your backup settings"
50msgstr ""45msgstr ""
5146
52#. These keywords are used when searching for applications in dashes, etc.47#. These keywords are used when searching for applications in dashes, etc.
48#: ../data/deja-dup-ccpanel.desktop.in.h:4
49#: ../data/deja-dup-preferences.desktop.in.in.h:4
50msgid "déjà;deja;dup;"
51msgstr ""
52
53#: ../data/deja-dup-ccpanel.desktop.in.h:553#: ../data/deja-dup-ccpanel.desktop.in.h:5
54#: ../data/deja-dup-preferences.desktop.in.in.h:554#: ../data/deja-dup-preferences.desktop.in.in.h:5
55msgid "déjà;deja;dup;"55msgid "Back Up Now"
56msgstr ""56msgstr ""
5757
58#. Translators: Monitor in this sense means something akin to 'watcher', not58#. Translators: Monitor in this sense means something akin to 'watcher', not
@@ -67,251 +67,251 @@
67msgstr ""67msgstr ""
6868
69#: ../data/org.gnome.DejaDup.gschema.xml.in.h:169#: ../data/org.gnome.DejaDup.gschema.xml.in.h:1
70msgid "Amazon S3 Access Key ID"70#: ../preferences/Preferences.vala:160
71msgid "Folders to back up"
71msgstr ""72msgstr ""
7273
73#: ../data/org.gnome.DejaDup.gschema.xml.in.h:274#: ../data/org.gnome.DejaDup.gschema.xml.in.h:2
74msgid ""75msgid ""
75"An optional folder name to store files in. This folder will be created in "76"This list of directories will be backed up. Reserved values $HOME, $DESKTOP, "
76"the chosen bucket."77"$DOCUMENTS, $DOWNLOAD, $MUSIC, $PICTURES, $PUBLIC_SHARE, $TEMPLATES, $TRASH, "
78"and $VIDEO are recognized as the user’s special directories. Relative "
79"entries are relative to the user’s home directory."
77msgstr ""80msgstr ""
7881
79#: ../data/org.gnome.DejaDup.gschema.xml.in.h:382#: ../data/org.gnome.DejaDup.gschema.xml.in.h:3
80#: ../deja-dup/AssistantRestore.vala:221 ../preferences/Preferences.vala:15183#: ../preferences/Preferences.vala:168
81msgid "Backup location"84msgid "Folders to ignore"
82msgstr ""85msgstr ""
8386
84#: ../data/org.gnome.DejaDup.gschema.xml.in.h:487#: ../data/org.gnome.DejaDup.gschema.xml.in.h:4
85msgid "Folder type"88msgid ""
89"This list of directories will not be backed up. Reserved values $HOME, "
90"$DESKTOP, $DOCUMENTS, $DOWNLOAD, $MUSIC, $PICTURES, $PUBLIC_SHARE, "
91"$TEMPLATES, $TRASH, and $VIDEO are recognized as the user’s special "
92"directories. Relative entries are relative to the user’s home directory."
86msgstr ""93msgstr ""
8794
88#: ../data/org.gnome.DejaDup.gschema.xml.in.h:595#: ../data/org.gnome.DejaDup.gschema.xml.in.h:5
89#: ../preferences/Preferences.vala:16096msgid "Whether the welcome screen has been dismissed"
90msgid "Folders to back up"
91msgstr ""97msgstr ""
9298
93#: ../data/org.gnome.DejaDup.gschema.xml.in.h:699#: ../data/org.gnome.DejaDup.gschema.xml.in.h:6
94#: ../preferences/Preferences.vala:168100msgid "Whether to request the root password"
95msgid "Folders to ignore"
96msgstr ""101msgstr ""
97102
98#: ../data/org.gnome.DejaDup.gschema.xml.in.h:7103#: ../data/org.gnome.DejaDup.gschema.xml.in.h:7
99msgid "Full name of the external volume"104msgid ""
105"Whether to request the root password when backing up from or restoring to "
106"system folders."
100msgstr ""107msgstr ""
101108
102#: ../data/org.gnome.DejaDup.gschema.xml.in.h:8109#: ../data/org.gnome.DejaDup.gschema.xml.in.h:8
103msgid "How long to keep backup files"110msgid "The last time Déjà Dup was run"
104msgstr ""111msgstr ""
105112
106#: ../data/org.gnome.DejaDup.gschema.xml.in.h:9113#: ../data/org.gnome.DejaDup.gschema.xml.in.h:9
107msgid "How often to periodically back up"114msgid ""
115"The last time Déjà Dup was successfully run. This time should be in ISO 8601 "
116"format."
108msgstr ""117msgstr ""
109118
110#: ../data/org.gnome.DejaDup.gschema.xml.in.h:10119#: ../data/org.gnome.DejaDup.gschema.xml.in.h:10
111msgid "Icon of the external volume"120msgid "The last time Déjà Dup backed up"
112msgstr ""121msgstr ""
113122
114#: ../data/org.gnome.DejaDup.gschema.xml.in.h:11123#: ../data/org.gnome.DejaDup.gschema.xml.in.h:11
115msgid ""124msgid ""
116"If the backup location is on an external volume, this is its unique "125"The last time Déjà Dup successfully completed a backup. This time should be "
117"filesystem identifier."126"in ISO 8601 format."
118msgstr ""127msgstr ""
119128
120#: ../data/org.gnome.DejaDup.gschema.xml.in.h:12129#: ../data/org.gnome.DejaDup.gschema.xml.in.h:12
121msgid ""130msgid "The last time Déjà Dup restored"
122"If the backup location is on an external volume, this is the path of the "
123"folder on that volume."
124msgstr ""131msgstr ""
125132
126#: ../data/org.gnome.DejaDup.gschema.xml.in.h:13133#: ../data/org.gnome.DejaDup.gschema.xml.in.h:13
127msgid ""134msgid ""
128"If the backup location is on an external volume, this is the volume’s icon."135"The last time Déjà Dup successfully completed a restore. This time should be "
136"in ISO 8601 format."
129msgstr ""137msgstr ""
130138
131#: ../data/org.gnome.DejaDup.gschema.xml.in.h:14139#: ../data/org.gnome.DejaDup.gschema.xml.in.h:14
132msgid ""140msgid "Whether to periodically back up"
133"If the backup location is on an external volume, this is the volume’s longer "
134"descriptive name."
135msgstr ""141msgstr ""
136142
137#: ../data/org.gnome.DejaDup.gschema.xml.in.h:15143#: ../data/org.gnome.DejaDup.gschema.xml.in.h:15
138msgid ""144msgid "Whether to automatically back up on a regular schedule."
139"If the backup location is on an external volume, this is the volume’s "
140"shorter name."
141msgstr ""145msgstr ""
142146
143#: ../data/org.gnome.DejaDup.gschema.xml.in.h:16147#: ../data/org.gnome.DejaDup.gschema.xml.in.h:16
144msgid "Location in which to hold the backup files."148msgid "How often to periodically back up"
145msgstr ""149msgstr ""
146150
147#: ../data/org.gnome.DejaDup.gschema.xml.in.h:17151#: ../data/org.gnome.DejaDup.gschema.xml.in.h:17
148msgid "Obsolete"152msgid "The number of days between backups."
149msgstr ""153msgstr ""
150154
151#: ../data/org.gnome.DejaDup.gschema.xml.in.h:18155#: ../data/org.gnome.DejaDup.gschema.xml.in.h:18
152msgid "Relative path under the external volume"156msgid ""
157"The first time Déjà Dup checked whether it should prompt about backing up"
153msgstr ""158msgstr ""
154159
155#: ../data/org.gnome.DejaDup.gschema.xml.in.h:19160#: ../data/org.gnome.DejaDup.gschema.xml.in.h:19
156msgid "Short name of the external volume"161msgid ""
162"When a user logs in, the Déjà Dup monitor checks whether it should prompt "
163"about backing up. This is used to increase discoverability for users that "
164"don’t know about backups. This time should be either ‘disabled’ to turn off "
165"this check or in ISO 8601 format."
157msgstr ""166msgstr ""
158167
159#: ../data/org.gnome.DejaDup.gschema.xml.in.h:20168#: ../data/org.gnome.DejaDup.gschema.xml.in.h:20
160msgid "The Amazon S3 bucket name to use"169msgid "How long to keep backup files"
161msgstr ""170msgstr ""
162171
163#. Left this way for historical reasons, should be '$HOSTNAME'. See convert_s3_folder_to_hostname()172#: ../data/org.gnome.DejaDup.gschema.xml.in.h:21
173msgid ""
174"The number of days to keep backup files on the backup location. A value of 0 "
175"means forever. This is a minimum number of days; the files may be kept "
176"longer."
177msgstr ""
178
164#: ../data/org.gnome.DejaDup.gschema.xml.in.h:22179#: ../data/org.gnome.DejaDup.gschema.xml.in.h:22
165msgid "The Amazon S3 folder"180msgid "Type of location to store backup"
166msgstr ""181msgstr ""
167182
168#: ../data/org.gnome.DejaDup.gschema.xml.in.h:23183#: ../data/org.gnome.DejaDup.gschema.xml.in.h:23
169msgid "The Rackspace Cloud Files container"184msgid ""
185"The type of backup location. If ‘auto’, a default will be chosen based on "
186"what is available."
170msgstr ""187msgstr ""
171188
172#: ../data/org.gnome.DejaDup.gschema.xml.in.h:24189#: ../data/org.gnome.DejaDup.gschema.xml.in.h:24
173msgid "The Ubuntu One folder"190msgid "Amazon S3 Access Key ID"
174msgstr ""191msgstr ""
175192
176#: ../data/org.gnome.DejaDup.gschema.xml.in.h:25193#: ../data/org.gnome.DejaDup.gschema.xml.in.h:25
177msgid ""194msgid "Your Amazon S3 Access Key Identifier. This acts as your S3 username."
178"The first time Déjà Dup checked whether it should prompt about backing up"
179msgstr ""195msgstr ""
180196
181#: ../data/org.gnome.DejaDup.gschema.xml.in.h:26197#: ../data/org.gnome.DejaDup.gschema.xml.in.h:26
182msgid ""198msgid "The Amazon S3 bucket name to use"
183"The folder name to store files in. If ‘$HOSTNAME’, it will default to a "
184"folder based on the name of the computer."
185msgstr ""199msgstr ""
186200
187#: ../data/org.gnome.DejaDup.gschema.xml.in.h:27201#: ../data/org.gnome.DejaDup.gschema.xml.in.h:27
188msgid "The last time Déjà Dup backed up"202msgid ""
189msgstr ""203"Which Amazon S3 bucket to store files in. This does not need to exist "
190204"already. Only legal hostname strings are valid."
191#: ../data/org.gnome.DejaDup.gschema.xml.in.h:28205msgstr ""
192msgid "The last time Déjà Dup restored"206
193msgstr ""207#. Left this way for historical reasons, should be '$HOSTNAME'. See convert_s3_folder_to_hostname()
194
195#: ../data/org.gnome.DejaDup.gschema.xml.in.h:29208#: ../data/org.gnome.DejaDup.gschema.xml.in.h:29
196msgid ""209msgid "The Amazon S3 folder"
197"The last time Déjà Dup successfully completed a backup. This time should be "
198"in ISO 8601 format."
199msgstr ""210msgstr ""
200211
201#: ../data/org.gnome.DejaDup.gschema.xml.in.h:30212#: ../data/org.gnome.DejaDup.gschema.xml.in.h:30
202msgid ""213msgid ""
203"The last time Déjà Dup successfully completed a restore. This time should be "214"An optional folder name to store files in. This folder will be created in "
204"in ISO 8601 format."215"the chosen bucket."
205msgstr ""216msgstr ""
206217
207#: ../data/org.gnome.DejaDup.gschema.xml.in.h:31218#: ../data/org.gnome.DejaDup.gschema.xml.in.h:31
208msgid "The last time Déjà Dup was run"219msgid "The Rackspace Cloud Files container"
209msgstr ""220msgstr ""
210221
211#: ../data/org.gnome.DejaDup.gschema.xml.in.h:32222#: ../data/org.gnome.DejaDup.gschema.xml.in.h:32
212msgid ""223msgid ""
213"The last time Déjà Dup was successfully run. This time should be in ISO 8601 "224"Which Rackspace Cloud Files container to store files in. This does not need "
214"format."225"to exist already. Only legal hostname strings are valid."
215msgstr ""226msgstr ""
216227
217#: ../data/org.gnome.DejaDup.gschema.xml.in.h:33228#: ../data/org.gnome.DejaDup.gschema.xml.in.h:33
218msgid "The number of days between backups."229msgid "Your Rackspace username"
219msgstr ""230msgstr ""
220231
221#: ../data/org.gnome.DejaDup.gschema.xml.in.h:34232#: ../data/org.gnome.DejaDup.gschema.xml.in.h:34
222msgid ""233msgid "This is your username for the Rackspace Cloud Files service."
223"The number of days to keep backup files on the backup location. A value of 0 "
224"means forever. This is a minimum number of days; the files may be kept "
225"longer."
226msgstr ""234msgstr ""
227235
228#: ../data/org.gnome.DejaDup.gschema.xml.in.h:35236#: ../data/org.gnome.DejaDup.gschema.xml.in.h:35
229msgid ""237msgid "The Ubuntu One folder"
230"The type of backup location. If ‘auto’, a default will be chosen based on "
231"what is available."
232msgstr ""238msgstr ""
233239
234#: ../data/org.gnome.DejaDup.gschema.xml.in.h:36240#: ../data/org.gnome.DejaDup.gschema.xml.in.h:36
235msgid "This is your username for the Rackspace Cloud Files service."241msgid ""
242"The folder name to store files in. If ‘$HOSTNAME’, it will default to a "
243"folder based on the name of the computer."
236msgstr ""244msgstr ""
237245
238#: ../data/org.gnome.DejaDup.gschema.xml.in.h:37246#: ../data/org.gnome.DejaDup.gschema.xml.in.h:37
239msgid ""247#: ../deja-dup/AssistantRestore.vala:221 ../preferences/Preferences.vala:151
240"This list of directories will be backed up. Reserved values $HOME, $DESKTOP, "248msgid "Backup location"
241"$DOCUMENTS, $DOWNLOAD, $MUSIC, $PICTURES, $PUBLIC_SHARE, $TEMPLATES, $TRASH, "
242"and $VIDEO are recognized as the user’s special directories. Relative "
243"entries are relative to the user’s home directory."
244msgstr ""249msgstr ""
245250
246#: ../data/org.gnome.DejaDup.gschema.xml.in.h:38251#: ../data/org.gnome.DejaDup.gschema.xml.in.h:38
247msgid ""252msgid "Location in which to hold the backup files."
248"This list of directories will not be backed up. Reserved values $HOME, "
249"$DESKTOP, $DOCUMENTS, $DOWNLOAD, $MUSIC, $PICTURES, $PUBLIC_SHARE, "
250"$TEMPLATES, $TRASH, and $VIDEO are recognized as the user’s special "
251"directories. Relative entries are relative to the user’s home directory."
252msgstr ""253msgstr ""
253254
254#: ../data/org.gnome.DejaDup.gschema.xml.in.h:39255#: ../data/org.gnome.DejaDup.gschema.xml.in.h:39
255msgid "Type of location to store backup"256msgid "Folder type"
256msgstr ""257msgstr ""
257258
258#: ../data/org.gnome.DejaDup.gschema.xml.in.h:40259#: ../data/org.gnome.DejaDup.gschema.xml.in.h:40
259msgid "Unique ID of the external volume"260msgid ""
261"Whether the backup location is a mounted external volume or a normal folder."
260msgstr ""262msgstr ""
261263
262#: ../data/org.gnome.DejaDup.gschema.xml.in.h:41264#: ../data/org.gnome.DejaDup.gschema.xml.in.h:41
263msgid ""265msgid "Relative path under the external volume"
264"When a user logs in, the Déjà Dup monitor checks whether it should prompt "
265"about backing up. This is used to increase discoverability for users that "
266"don’t know about backups. This time should be either ‘disabled’ to turn off "
267"this check or in ISO 8601 format."
268msgstr ""266msgstr ""
269267
270#: ../data/org.gnome.DejaDup.gschema.xml.in.h:42268#: ../data/org.gnome.DejaDup.gschema.xml.in.h:42
271msgid ""269msgid ""
272"Whether the backup location is a mounted external volume or a normal folder."270"If the backup location is on an external volume, this is the path of the "
271"folder on that volume."
273msgstr ""272msgstr ""
274273
275#: ../data/org.gnome.DejaDup.gschema.xml.in.h:43274#: ../data/org.gnome.DejaDup.gschema.xml.in.h:43
276msgid "Whether the welcome screen has been dismissed"275msgid "Unique ID of the external volume"
277msgstr ""276msgstr ""
278277
279#: ../data/org.gnome.DejaDup.gschema.xml.in.h:44278#: ../data/org.gnome.DejaDup.gschema.xml.in.h:44
280msgid "Whether to automatically back up on a regular schedule."279msgid ""
280"If the backup location is on an external volume, this is its unique "
281"filesystem identifier."
281msgstr ""282msgstr ""
282283
283#: ../data/org.gnome.DejaDup.gschema.xml.in.h:45284#: ../data/org.gnome.DejaDup.gschema.xml.in.h:45
284msgid "Whether to periodically back up"285msgid "Full name of the external volume"
285msgstr ""286msgstr ""
286287
287#: ../data/org.gnome.DejaDup.gschema.xml.in.h:46288#: ../data/org.gnome.DejaDup.gschema.xml.in.h:46
288msgid "Whether to request the root password"289msgid ""
290"If the backup location is on an external volume, this is the volume’s longer "
291"descriptive name."
289msgstr ""292msgstr ""
290293
291#: ../data/org.gnome.DejaDup.gschema.xml.in.h:47294#: ../data/org.gnome.DejaDup.gschema.xml.in.h:47
292msgid ""295msgid "Short name of the external volume"
293"Whether to request the root password when backing up from or restoring to "
294"system folders."
295msgstr ""296msgstr ""
296297
297#: ../data/org.gnome.DejaDup.gschema.xml.in.h:48298#: ../data/org.gnome.DejaDup.gschema.xml.in.h:48
298msgid ""299msgid ""
299"Which Amazon S3 bucket to store files in. This does not need to exist "300"If the backup location is on an external volume, this is the volume’s "
300"already. Only legal hostname strings are valid."301"shorter name."
301msgstr ""302msgstr ""
302303
303#: ../data/org.gnome.DejaDup.gschema.xml.in.h:49304#: ../data/org.gnome.DejaDup.gschema.xml.in.h:49
304msgid ""305msgid "Icon of the external volume"
305"Which Rackspace Cloud Files container to store files in. This does not need "
306"to exist already. Only legal hostname strings are valid."
307msgstr ""306msgstr ""
308307
309#: ../data/org.gnome.DejaDup.gschema.xml.in.h:50308#: ../data/org.gnome.DejaDup.gschema.xml.in.h:50
310msgid "Your Amazon S3 Access Key Identifier. This acts as your S3 username."309msgid ""
310"If the backup location is on an external volume, this is the volume’s icon."
311msgstr ""311msgstr ""
312312
313#: ../data/org.gnome.DejaDup.gschema.xml.in.h:51313#: ../data/org.gnome.DejaDup.gschema.xml.in.h:51
314msgid "Your Rackspace username"314msgid "Obsolete"
315msgstr ""315msgstr ""
316316
317#: ../data/ui/restore-missing.ui.h:1317#: ../data/ui/restore-missing.ui.h:1
@@ -515,41 +515,50 @@
515"only found version %d.%d.%.2d"515"only found version %d.%d.%.2d"
516msgstr ""516msgstr ""
517517
518#: ../common/Duplicity.vala:132 ../common/Duplicity.vala:186518#: ../common/Duplicity.vala:135 ../common/Duplicity.vala:198
519msgid "Paused (no network)"519msgid "Paused (no network)"
520msgstr ""520msgstr ""
521521
522#: ../common/Duplicity.vala:392 ../common/Duplicity.vala:399522#: ../common/Duplicity.vala:405 ../common/Duplicity.vala:412
523#: ../common/Duplicity.vala:418 ../common/Duplicity.vala:423523#: ../common/Duplicity.vala:431 ../common/Duplicity.vala:436
524#: ../common/Operation.vala:79 ../common/Operation.vala:111524#: ../common/Operation.vala:79 ../common/Operation.vala:111
525msgid "Preparing…"525msgid "Preparing…"
526msgstr ""526msgstr ""
527527
528#. Was not even a file path (maybe something goofy like computer://)528#. Was not even a file path (maybe something goofy like computer://)
529#: ../common/Duplicity.vala:450529#: ../common/Duplicity.vala:463
530#, c-format530#, c-format
531msgid "Could not restore ‘%s’: Not a valid file location"531msgid "Could not restore ‘%s’: Not a valid file location"
532msgstr ""532msgstr ""
533533
534#. Tiny backup location. Suggest they get a larger one.534#. Tiny backup location. Suggest they get a larger one.
535#: ../common/Duplicity.vala:516535#: ../common/Duplicity.vala:529
536msgid "Backup location is too small. Try using one with more space."536msgid "Backup location is too small. Try using one with more space."
537msgstr ""537msgstr ""
538538
539#: ../common/Duplicity.vala:538539#: ../common/Duplicity.vala:551
540msgid "Backup location does not have enough free space."540msgid "Backup location does not have enough free space."
541msgstr ""541msgstr ""
542542
543#: ../common/Duplicity.vala:557 ../common/Duplicity.vala:571543#: ../common/Duplicity.vala:570 ../common/Duplicity.vala:584
544msgid "Cleaning up…"544msgid "Cleaning up…"
545msgstr ""545msgstr ""
546546
547#: ../common/Duplicity.vala:673 ../common/Duplicity.vala:1062547#. OK, we succeeded yay! But some files didn't make it into the backup
548#: ../deja-dup/AssistantOperation.vala:519548#. because we couldn't read them. So tell the user so they don't think
549#. everything is hunky dory.
550#: ../common/Duplicity.vala:679
551msgid ""
552"Could not back up the following files. Please make sure you are able to "
553"open them."
554msgstr ""
555
556#: ../common/Duplicity.vala:700 ../common/Duplicity.vala:1089
557#: ../deja-dup/AssistantOperation.vala:537
549msgid "Failed with an unknown error."558msgid "Failed with an unknown error."
550msgstr ""559msgstr ""
551560
552#: ../common/Duplicity.vala:901561#: ../common/Duplicity.vala:929
553#, c-format562#, c-format
554msgid "Could not restore ‘%s’: File not found in backup"563msgid "Could not restore ‘%s’: File not found in backup"
555msgstr ""564msgstr ""
@@ -557,16 +566,16 @@
557#. notify upper layers, if they want to do anything566#. notify upper layers, if they want to do anything
558#. Duplicity tried to ask the user what the encryption password is.567#. Duplicity tried to ask the user what the encryption password is.
559#. notify upper layers, if they want to do anything568#. notify upper layers, if they want to do anything
560#: ../common/Duplicity.vala:907 ../common/Duplicity.vala:1009569#: ../common/Duplicity.vala:935 ../common/Duplicity.vala:1037
561#: ../common/Duplicity.vala:1013570#: ../common/Duplicity.vala:1041
562msgid "Bad encryption password."571msgid "Bad encryption password."
563msgstr ""572msgstr ""
564573
565#: ../common/Duplicity.vala:912574#: ../common/Duplicity.vala:940
566msgid "Computer name changed"575msgid "Computer name changed"
567msgstr ""576msgstr ""
568577
569#: ../common/Duplicity.vala:912578#: ../common/Duplicity.vala:940
570#, c-format579#, c-format
571msgid ""580msgid ""
572"The existing backup is of a computer named %s, but the current computer’s "581"The existing backup is of a computer named %s, but the current computer’s "
@@ -574,67 +583,67 @@
574"location."583"location."
575msgstr ""584msgstr ""
576585
577#: ../common/Duplicity.vala:947586#: ../common/Duplicity.vala:975
578#, c-format587#, c-format
579msgid "Permission denied when trying to create ‘%s’."588msgid "Permission denied when trying to create ‘%s’."
580msgstr ""589msgstr ""
581590
582#. assume error is on backend side591#. assume error is on backend side
583#: ../common/Duplicity.vala:951 ../common/Duplicity.vala:955592#: ../common/Duplicity.vala:979 ../common/Duplicity.vala:983
584#, c-format593#, c-format
585msgid "Permission denied when trying to read ‘%s’."594msgid "Permission denied when trying to read ‘%s’."
586msgstr ""595msgstr ""
587596
588#: ../common/Duplicity.vala:959597#: ../common/Duplicity.vala:987
589#, c-format598#, c-format
590msgid "Permission denied when trying to delete ‘%s’."599msgid "Permission denied when trying to delete ‘%s’."
591msgstr ""600msgstr ""
592601
593#: ../common/Duplicity.vala:966602#: ../common/Duplicity.vala:994
594#, c-format603#, c-format
595msgid "Backup location ‘%s’ does not exist."604msgid "Backup location ‘%s’ does not exist."
596msgstr ""605msgstr ""
597606
598#: ../common/Duplicity.vala:972 ../common/Duplicity.vala:1032607#: ../common/Duplicity.vala:1000 ../common/Duplicity.vala:1060
599msgid "No space left."608msgid "No space left."
600msgstr ""609msgstr ""
601610
602#: ../common/Duplicity.vala:986611#: ../common/Duplicity.vala:1014
603msgid "Invalid ID."612msgid "Invalid ID."
604msgstr ""613msgstr ""
605614
606#: ../common/Duplicity.vala:988615#: ../common/Duplicity.vala:1016
607msgid "Invalid secret key."616msgid "Invalid secret key."
608msgstr ""617msgstr ""
609618
610#: ../common/Duplicity.vala:990619#: ../common/Duplicity.vala:1018
611msgid "Your Amazon Web Services account is not signed up for the S3 service."620msgid "Your Amazon Web Services account is not signed up for the S3 service."
612msgstr ""621msgstr ""
613622
614#: ../common/Duplicity.vala:1003623#: ../common/Duplicity.vala:1031
615msgid "S3 bucket name is not available."624msgid "S3 bucket name is not available."
616msgstr ""625msgstr ""
617626
618#: ../common/Duplicity.vala:1017627#: ../common/Duplicity.vala:1045
619#, c-format628#, c-format
620msgid "Error reading file ‘%s’."629msgid "Error reading file ‘%s’."
621msgstr ""630msgstr ""
622631
623#: ../common/Duplicity.vala:1019632#: ../common/Duplicity.vala:1047
624#, c-format633#, c-format
625msgid "Error writing file ‘%s’."634msgid "Error writing file ‘%s’."
626msgstr ""635msgstr ""
627636
628#: ../common/Duplicity.vala:1034637#: ../common/Duplicity.vala:1062
629#, c-format638#, c-format
630msgid "No space left in ‘%s’."639msgid "No space left in ‘%s’."
631msgstr ""640msgstr ""
632641
633#: ../common/Duplicity.vala:1042642#: ../common/Duplicity.vala:1070
634msgid "No backup files found"643msgid "No backup files found"
635msgstr ""644msgstr ""
636645
637#: ../common/Duplicity.vala:1093646#: ../common/Duplicity.vala:1120
638msgid "Uploading…"647msgid "Uploading…"
639msgstr ""648msgstr ""
640649
@@ -692,7 +701,11 @@
692msgid "Backup Failed"701msgid "Backup Failed"
693msgstr ""702msgstr ""
694703
695#: ../deja-dup/AssistantBackup.vala:97704#: ../deja-dup/AssistantBackup.vala:93
705msgid "Backup Finished"
706msgstr ""
707
708#: ../deja-dup/AssistantBackup.vala:101
696msgid "Backing Up…"709msgid "Backing Up…"
697msgstr ""710msgstr ""
698711
@@ -704,51 +717,51 @@
704msgid "_Details"717msgid "_Details"
705msgstr ""718msgstr ""
706719
707#: ../deja-dup/AssistantOperation.vala:302720#: ../deja-dup/AssistantOperation.vala:304
708msgid "_Allow restoring without a password"721msgid "_Allow restoring without a password"
709msgstr ""722msgstr ""
710723
711#: ../deja-dup/AssistantOperation.vala:308724#: ../deja-dup/AssistantOperation.vala:310
712msgid "_Password-protect your backup"725msgid "_Password-protect your backup"
713msgstr ""726msgstr ""
714727
715#: ../deja-dup/AssistantOperation.vala:322728#: ../deja-dup/AssistantOperation.vala:324
716#, c-format729#, c-format
717msgid ""730msgid ""
718"You will need your password to restore your files. You might want to write "731"You will need your password to restore your files. You might want to write "
719"it down."732"it down."
720msgstr ""733msgstr ""
721734
722#: ../deja-dup/AssistantOperation.vala:337735#: ../deja-dup/AssistantOperation.vala:339
723msgid "E_ncryption password"736msgid "E_ncryption password"
724msgstr ""737msgstr ""
725738
726#: ../deja-dup/AssistantOperation.vala:354739#: ../deja-dup/AssistantOperation.vala:356
727msgid "Confir_m password"740msgid "Confir_m password"
728msgstr ""741msgstr ""
729742
730#: ../deja-dup/AssistantOperation.vala:367743#: ../deja-dup/AssistantOperation.vala:369
731msgid "_Show password"744msgid "_Show password"
732msgstr ""745msgstr ""
733746
734#: ../deja-dup/AssistantOperation.vala:376747#: ../deja-dup/AssistantOperation.vala:378
735#: ../deja-dup/MountOperationAssistant.vala:40748#: ../deja-dup/MountOperationAssistant.vala:40
736msgid "_Remember password"749msgid "_Remember password"
737msgstr ""750msgstr ""
738751
739#: ../deja-dup/AssistantOperation.vala:443752#: ../deja-dup/AssistantOperation.vala:447
740msgid "Summary"753msgid "Summary"
741msgstr ""754msgstr ""
742755
743#: ../deja-dup/AssistantOperation.vala:712756#: ../deja-dup/AssistantOperation.vala:730
744msgid "Require Password?"757msgid "Require Password?"
745msgstr ""758msgstr ""
746759
747#: ../deja-dup/AssistantOperation.vala:714760#: ../deja-dup/AssistantOperation.vala:732
748msgid "Encryption Password Needed"761msgid "Encryption Password Needed"
749msgstr ""762msgstr ""
750763
751#: ../deja-dup/AssistantOperation.vala:760764#: ../deja-dup/AssistantOperation.vala:778
752msgid "Backup encryption password"765msgid "Backup encryption password"
753msgstr ""766msgstr ""
754767
@@ -1025,24 +1038,33 @@
1025msgid "_Skip Backup"1038msgid "_Skip Backup"
1026msgstr ""1039msgstr ""
10271040
1028#: ../deja-dup/StatusIcon.vala:1261041#: ../deja-dup/StatusIcon.vala:125
1029msgid "Backup completed"1042msgid "Backup completed"
1030msgstr ""1043msgstr ""
10311044
1032#: ../deja-dup/StatusIcon.vala:2251045#: ../deja-dup/StatusIcon.vala:129
1046msgid "Backup finished"
1047msgstr ""
1048
1049#: ../deja-dup/StatusIcon.vala:130
1050msgid ""
1051"Not all files were successfully backed up. See dialog for more details."
1052msgstr ""
1053
1054#: ../deja-dup/StatusIcon.vala:232
1033msgid "Starting scheduled backup"1055msgid "Starting scheduled backup"
1034msgstr ""1056msgstr ""
10351057
1036#: ../deja-dup/StatusIcon.vala:2271058#: ../deja-dup/StatusIcon.vala:234
1037msgid "Show Progress"1059msgid "Show Progress"
1038msgstr ""1060msgstr ""
10391061
1040#: ../deja-dup/StatusIcon.vala:2651062#: ../deja-dup/StatusIcon.vala:272
1041#, c-format1063#, c-format
1042msgid "%.1f%% complete"1064msgid "%.1f%% complete"
1043msgstr ""1065msgstr ""
10441066
1045#: ../deja-dup/StatusIcon.vala:2781067#: ../deja-dup/StatusIcon.vala:285
1046msgid "Show _Progress"1068msgid "Show _Progress"
1047msgstr ""1069msgstr ""
10481070
@@ -1114,6 +1136,10 @@
1114msgid "Schedule"1136msgid "Schedule"
1115msgstr ""1137msgstr ""
11161138
1139#: ../preferences/Preferences.vala:365
1140msgid "Categories"
1141msgstr ""
1142
1117#: ../widgets/ConfigDelete.vala:431143#: ../widgets/ConfigDelete.vala:43
1118msgid "At least a month"1144msgid "At least a month"
1119msgstr ""1145msgstr ""
11201146
=== modified file 'tests/common/common.vala'
--- tests/common/common.vala 2012-01-06 02:47:04 +0000
+++ tests/common/common.vala 2012-01-09 09:28:24 +0000
@@ -207,11 +207,14 @@
207 {207 {
208 var loop = new MainLoop(null);208 var loop = new MainLoop(null);
209 var op = new DejaDup.OperationBackup();209 var op = new DejaDup.OperationBackup();
210 op.done.connect((op, s, c) => {210 op.done.connect((op, s, c, d) => {
211 Test.message("Done: %d, %d, %s", (int)s, (int)c, d);
211 if (success != s)212 if (success != s)
212 warning("Success didn't match; expected %d, got %d", (int) success, (int) s);213 warning("Success didn't match; expected %d, got %d", (int) success, (int) s);
213 if (cancelled != c)214 if (cancelled != c)
214 warning("Cancel didn't match; expected %d, got %d", (int) cancelled, (int) c);215 warning("Cancel didn't match; expected %d, got %d", (int) cancelled, (int) c);
216 if (detail != d)
217 warning("Detail didn't match; expected %s, got %s", detail, d);
215 loop.quit();218 loop.quit();
216 });219 });
217220
@@ -420,6 +423,43 @@
420 br.run();423 br.run();
421}424}
422425
426void read_error()
427{
428 Test.bug("907846");
429 var user = Environment.get_user_name();
430 set_script("""
431ARGS: collection-status %s
432
433=== deja-dup ===
434ARGS: %s
435
436WARNING 10 '/blarg'
437
438WARNING 10 '/home/%s/1'
439
440WARNING 10 '/home/%s/2'
441
442=== deja-dup ===
443ARGS: %s
444
445WARNING 10 '/blarg'
446
447WARNING 10 '/home/%s/1'
448
449WARNING 10 '/home/%s/2'
450
451""".printf(default_args(),
452 default_args(Mode.DRY), user, user,
453 default_args(Mode.BACKUP), user, user));
454
455 var br = new BackupRunner();
456 br.detail = """Could not back up the following files. Please make sure you are able to open them.
457
458/home/%s/1
459/home/%s/2""".printf(user, user);
460 br.run();
461}
462
423int main(string[] args)463int main(string[] args)
424{464{
425 Test.init(ref args);465 Test.init(ref args);
@@ -445,6 +485,7 @@
445 backup.add(make_backup_case("cancel_noop", cancel_noop));485 backup.add(make_backup_case("cancel_noop", cancel_noop));
446 backup.add(make_backup_case("cancel", cancel));486 backup.add(make_backup_case("cancel", cancel));
447 backup.add(make_backup_case("stop", stop));487 backup.add(make_backup_case("stop", stop));
488 backup.add(make_backup_case("read_error", read_error));
448 TestSuite.get_root().add_suite(backup);489 TestSuite.get_root().add_suite(backup);
449490
450 var rv = Test.run();491 var rv = Test.run();

Subscribers

People subscribed via source and target branches