Merge lp:~mterry/duplicity/list-old-chains into lp:~duplicity-team/duplicity/0.7-series
- list-old-chains
- Merge into 0.7-series
Proposed by
Michael Terry
Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp:~mterry/duplicity/list-old-chains |
Merge into: | lp:~duplicity-team/duplicity/0.7-series |
Diff against target: |
1503 lines 7 files modified
duplicity-bin (+5/-8) duplicity.1 (+8/-0) duplicity/collections.py (+56/-44) duplicity/commandline.py (+4/-0) duplicity/globals.py (+3/-0) duplicity/log.py (+1/-0) po/duplicity.pot (+205/-201) |
To merge this branch: | bzr merge lp:~mterry/duplicity/list-old-chains |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
duplicity-team | Pending | ||
Review via email: mp+13871@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Michael Terry (mterry) wrote : | # |
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'duplicity-bin' | |||
2 | --- duplicity-bin 2009-10-09 13:47:41 +0000 | |||
3 | +++ duplicity-bin 2009-10-23 20:45:20 +0000 | |||
4 | @@ -444,7 +444,7 @@ | |||
5 | 444 | bytes_written += man_outfp.to_remote() | 444 | bytes_written += man_outfp.to_remote() |
6 | 445 | man_outfp.to_final() | 445 | man_outfp.to_final() |
7 | 446 | 446 | ||
9 | 447 | col_stats.set_values(sig_chain_warning=None).cleanup_signatures() | 447 | col_stats.set_values(sig_chain_warning=None) |
10 | 448 | 448 | ||
11 | 449 | print_statistics(diffdir.stats, bytes_written) | 449 | print_statistics(diffdir.stats, bytes_written) |
12 | 450 | 450 | ||
13 | @@ -528,11 +528,8 @@ | |||
14 | 528 | @rtype: void | 528 | @rtype: void |
15 | 529 | @return: void | 529 | @return: void |
16 | 530 | """ | 530 | """ |
22 | 531 | sig_chain = check_sig_chain(col_stats) | 531 | time = globals.restore_time or dup_time.curtime |
23 | 532 | if not sig_chain: | 532 | sig_chain = col_stats.get_signature_chain_at_time(time) |
19 | 533 | log.FatalError(_("No signature data found, unable to list files."), | ||
20 | 534 | log.ErrorCode.no_sigs) | ||
21 | 535 | time = globals.restore_time # if None, will use latest | ||
24 | 536 | path_iter = diffdir.get_combined_path_iter(sig_chain.get_fileobjs(time)) | 533 | path_iter = diffdir.get_combined_path_iter(sig_chain.get_fileobjs(time)) |
25 | 537 | for path in path_iter: | 534 | for path in path_iter: |
26 | 538 | if path.difftype != "deleted": | 535 | if path.difftype != "deleted": |
27 | @@ -704,7 +701,7 @@ | |||
28 | 704 | @rtype: void | 701 | @rtype: void |
29 | 705 | @return: void | 702 | @return: void |
30 | 706 | """ | 703 | """ |
32 | 707 | ext_local, ext_remote = col_stats.get_extraneous() | 704 | ext_local, ext_remote = col_stats.get_extraneous(globals.extra_clean) |
33 | 708 | extraneous = ext_local + ext_remote | 705 | extraneous = ext_local + ext_remote |
34 | 709 | if not extraneous: | 706 | if not extraneous: |
35 | 710 | log.Warn(_("No extraneous files found, nothing deleted in cleanup.")) | 707 | log.Warn(_("No extraneous files found, nothing deleted in cleanup.")) |
36 | @@ -789,7 +786,7 @@ | |||
37 | 789 | setlist.reverse() # save oldest for last | 786 | setlist.reverse() # save oldest for last |
38 | 790 | for set in setlist: | 787 | for set in setlist: |
39 | 791 | set.delete() | 788 | set.delete() |
41 | 792 | col_stats.set_values(sig_chain_warning=None).cleanup_signatures() | 789 | col_stats.set_values(sig_chain_warning=None) |
42 | 793 | else: | 790 | else: |
43 | 794 | log.Notice(gettext.ngettext("Found old backup set at the following time:", | 791 | log.Notice(gettext.ngettext("Found old backup set at the following time:", |
44 | 795 | "Found old backup sets at the following times:", | 792 | "Found old backup sets at the following times:", |
45 | 796 | 793 | ||
46 | === modified file 'duplicity.1' | |||
47 | --- duplicity.1 2009-07-21 20:46:04 +0000 | |||
48 | +++ duplicity.1 2009-10-23 20:45:20 +0000 | |||
49 | @@ -342,6 +342,14 @@ | |||
50 | 342 | section for more information. | 342 | section for more information. |
51 | 343 | 343 | ||
52 | 344 | .TP | 344 | .TP |
53 | 345 | .B --extra-clean | ||
54 | 346 | When cleaning up, be more aggressive about saving space. For example, this | ||
55 | 347 | may delete signature files for old backup chains. | ||
56 | 348 | See the | ||
57 | 349 | .B cleanup | ||
58 | 350 | argument for more information. | ||
59 | 351 | |||
60 | 352 | .TP | ||
61 | 345 | .BI "--file-to-restore " path | 353 | .BI "--file-to-restore " path |
62 | 346 | This option may be given in restore mode, causing only | 354 | This option may be given in restore mode, causing only |
63 | 347 | .I path | 355 | .I path |
64 | 348 | 356 | ||
65 | === modified file 'duplicity/collections.py' | |||
66 | --- duplicity/collections.py 2009-10-06 13:48:25 +0000 | |||
67 | +++ duplicity/collections.py 2009-10-23 20:45:20 +0000 | |||
68 | @@ -584,7 +584,7 @@ | |||
69 | 584 | # These should be sorted by end_time | 584 | # These should be sorted by end_time |
70 | 585 | self.all_backup_chains = None | 585 | self.all_backup_chains = None |
71 | 586 | self.other_backup_chains = None | 586 | self.other_backup_chains = None |
73 | 587 | self.other_sig_chains = None | 587 | self.all_sig_chains = None |
74 | 588 | 588 | ||
75 | 589 | # Other misc paths and sets which shouldn't be there | 589 | # Other misc paths and sets which shouldn't be there |
76 | 590 | self.local_orphaned_sig_names = [] | 590 | self.local_orphaned_sig_names = [] |
77 | @@ -604,6 +604,7 @@ | |||
78 | 604 | "archive-dir %s" % (self.archive_dir,)] | 604 | "archive-dir %s" % (self.archive_dir,)] |
79 | 605 | 605 | ||
80 | 606 | for i in range(len(self.other_backup_chains)): | 606 | for i in range(len(self.other_backup_chains)): |
81 | 607 | # A bit of a misnomer. Chain might have a sig. | ||
82 | 607 | l.append("chain-no-sig %d" % (i,)) | 608 | l.append("chain-no-sig %d" % (i,)) |
83 | 608 | l += self.other_backup_chains[i].to_log_info(' ') | 609 | l += self.other_backup_chains[i].to_log_info(' ') |
84 | 609 | 610 | ||
85 | @@ -627,18 +628,18 @@ | |||
86 | 627 | _("Archive dir: %s") % (self.archive_dir.name,)] | 628 | _("Archive dir: %s") % (self.archive_dir.name,)] |
87 | 628 | 629 | ||
88 | 629 | l.append("\n" + | 630 | l.append("\n" + |
91 | 630 | gettext.ngettext("Found %d backup chain without signatures.", | 631 | gettext.ngettext("Found %d secondary backup chain.", |
92 | 631 | "Found %d backup chains without signatures.", | 632 | "Found %d secondary backup chains.", |
93 | 632 | len(self.other_backup_chains)) | 633 | len(self.other_backup_chains)) |
94 | 633 | % len(self.other_backup_chains)) | 634 | % len(self.other_backup_chains)) |
95 | 634 | for i in range(len(self.other_backup_chains)): | 635 | for i in range(len(self.other_backup_chains)): |
97 | 635 | l.append(_("Signature-less chain %d of %d:") % | 636 | l.append(_("Secondary chain %d of %d:") % |
98 | 636 | (i+1, len(self.other_backup_chains))) | 637 | (i+1, len(self.other_backup_chains))) |
99 | 637 | l.append(str(self.other_backup_chains[i])) | 638 | l.append(str(self.other_backup_chains[i])) |
100 | 638 | l.append("") | 639 | l.append("") |
101 | 639 | 640 | ||
102 | 640 | if self.matched_chain_pair: | 641 | if self.matched_chain_pair: |
104 | 641 | l.append("\n" + _("Found a complete backup chain with matching " | 642 | l.append("\n" + _("Found primary backup chain with matching " |
105 | 642 | "signature chain:")) | 643 | "signature chain:")) |
106 | 643 | l.append(str(self.matched_chain_pair[1])) | 644 | l.append(str(self.matched_chain_pair[1])) |
107 | 644 | else: | 645 | else: |
108 | @@ -719,12 +720,12 @@ | |||
109 | 719 | latest backup chain, use the local sig chain (it does not need | 720 | latest backup chain, use the local sig chain (it does not need |
110 | 720 | to be downloaded). | 721 | to be downloaded). |
111 | 721 | """ | 722 | """ |
113 | 722 | self.other_sig_chains = sig_chains | 723 | sig_chains = sig_chains and self.get_sorted_chains(sig_chains) |
114 | 724 | self.all_sig_chains = sig_chains | ||
115 | 723 | self.other_backup_chains = backup_chains[:] | 725 | self.other_backup_chains = backup_chains[:] |
116 | 724 | self.matched_chain_pair = None | 726 | self.matched_chain_pair = None |
117 | 725 | if sig_chains and backup_chains: | 727 | if sig_chains and backup_chains: |
118 | 726 | latest_backup_chain = backup_chains[-1] | 728 | latest_backup_chain = backup_chains[-1] |
119 | 727 | sig_chains = self.get_sorted_chains(sig_chains) | ||
120 | 728 | for i in range(len(sig_chains)-1, -1, -1): | 729 | for i in range(len(sig_chains)-1, -1, -1): |
121 | 729 | if sig_chains[i].end_time == latest_backup_chain.end_time: | 730 | if sig_chains[i].end_time == latest_backup_chain.end_time: |
122 | 730 | pass | 731 | pass |
123 | @@ -743,19 +744,9 @@ | |||
124 | 743 | if self.matched_chain_pair == None: | 744 | if self.matched_chain_pair == None: |
125 | 744 | self.matched_chain_pair = (sig_chains[i], latest_backup_chain) | 745 | self.matched_chain_pair = (sig_chains[i], latest_backup_chain) |
126 | 745 | 746 | ||
127 | 746 | del sig_chains[i] | ||
128 | 747 | break | 747 | break |
129 | 748 | 748 | ||
130 | 749 | if self.matched_chain_pair: | 749 | if self.matched_chain_pair: |
131 | 750 | # if we have local and remote sig chains, remove both from the other_sig_chains list | ||
132 | 751 | matched_sig_chain = self.matched_chain_pair[0] | ||
133 | 752 | if len(self.other_sig_chains) > 1: | ||
134 | 753 | for sig_chain in self.other_sig_chains[1:]: | ||
135 | 754 | if (sig_chain.islocal() != matched_sig_chain.islocal() and | ||
136 | 755 | sig_chain.start_time == matched_sig_chain.start_time and | ||
137 | 756 | sig_chain.end_time == matched_sig_chain.end_time): | ||
138 | 757 | self.other_sig_chains.remove(sig_chain) | ||
139 | 758 | self.other_sig_chains.remove(matched_sig_chain) | ||
140 | 759 | self.other_backup_chains.remove(self.matched_chain_pair[1]) | 750 | self.other_backup_chains.remove(self.matched_chain_pair[1]) |
141 | 760 | 751 | ||
142 | 761 | def warn(self, sig_chain_warning): | 752 | def warn(self, sig_chain_warning): |
143 | @@ -782,18 +773,9 @@ | |||
144 | 782 | + "\n" + "\n".join(self.remote_orphaned_sig_names), | 773 | + "\n" + "\n".join(self.remote_orphaned_sig_names), |
145 | 783 | log.WarningCode.orphaned_sig) | 774 | log.WarningCode.orphaned_sig) |
146 | 784 | 775 | ||
159 | 785 | if self.other_sig_chains and sig_chain_warning: | 776 | if self.all_sig_chains and sig_chain_warning and not self.matched_chain_pair: |
160 | 786 | if self.matched_chain_pair: | 777 | log.Warn(_("Warning, found signatures but no corresponding " |
161 | 787 | log.Warn(gettext.ngettext("Warning, found an unnecessary " | 778 | "backup files"), log.WarningCode.unmatched_sig) |
150 | 788 | "signature chain", | ||
151 | 789 | "Warning, found unnecessary " | ||
152 | 790 | "signature chains", | ||
153 | 791 | len(self.other_sig_chains)) | ||
154 | 792 | + "\n" + "\n".join([f.fullsig for f in self.other_sig_chains]), | ||
155 | 793 | log.WarningCode.unnecessary_sig) | ||
156 | 794 | else: | ||
157 | 795 | log.Warn(_("Warning, found signatures but no corresponding " | ||
158 | 796 | "backup files"), log.WarningCode.unmatched_sig) | ||
162 | 797 | 779 | ||
163 | 798 | if self.incomplete_backup_sets: | 780 | if self.incomplete_backup_sets: |
164 | 799 | log.Warn(_("Warning, found incomplete backup sets, probably left " | 781 | log.Warn(_("Warning, found incomplete backup sets, probably left " |
165 | @@ -995,13 +977,34 @@ | |||
166 | 995 | else: | 977 | else: |
167 | 996 | return self.all_backup_chains[0] # no chains are old enough | 978 | return self.all_backup_chains[0] # no chains are old enough |
168 | 997 | 979 | ||
176 | 998 | def cleanup_signatures(self): | 980 | def get_signature_chain_at_time(self, time): |
177 | 999 | """ | 981 | """ |
178 | 1000 | Delete unnecessary older signatures | 982 | Return signature chain covering specified time |
179 | 1001 | """ | 983 | |
180 | 1002 | map(SignatureChain.delete, self.other_sig_chains) | 984 | Tries to find the signature chain covering the given time. If |
181 | 1003 | 985 | there is none, return the earliest chain before, and failing | |
182 | 1004 | def get_extraneous(self): | 986 | that, the earliest chain. |
183 | 987 | """ | ||
184 | 988 | if not self.all_sig_chains: | ||
185 | 989 | raise CollectionsError("No signature chains found") | ||
186 | 990 | |||
187 | 991 | covering_chains = filter(lambda c: c.start_time <= time <= c.end_time, | ||
188 | 992 | self.all_sig_chains) | ||
189 | 993 | if covering_chains: | ||
190 | 994 | return covering_chains[-1] # prefer local if multiple sig chains | ||
191 | 995 | |||
192 | 996 | old_chains = filter(lambda c: c.end_time < time, | ||
193 | 997 | self.all_sig_chains) | ||
194 | 998 | if old_chains: | ||
195 | 999 | return old_chains[-1] | ||
196 | 1000 | else: | ||
197 | 1001 | # no chains are old enough, give oldest and warn user | ||
198 | 1002 | oldest = self.all_sig_chains[0] | ||
199 | 1003 | if time < oldest.start_time: | ||
200 | 1004 | log.Warn(_("No signature chain for the requested time. Using oldest available chain, starting at time %s.") % dup_time.timetopretty(oldest.start_time), log.WarningCode.no_sig_for_time, dup_time.timetostring(oldest.start_time)) | ||
201 | 1005 | return oldest | ||
202 | 1006 | |||
203 | 1007 | def get_extraneous(self, extra_clean): | ||
204 | 1005 | """ | 1008 | """ |
205 | 1006 | Return list of the names of extraneous duplicity files | 1009 | Return list of the names of extraneous duplicity files |
206 | 1007 | 1010 | ||
207 | @@ -1012,14 +1015,23 @@ | |||
208 | 1012 | assert self.values_set | 1015 | assert self.values_set |
209 | 1013 | local_filenames = [] | 1016 | local_filenames = [] |
210 | 1014 | remote_filenames = [] | 1017 | remote_filenames = [] |
219 | 1015 | ext_containers = (self.other_sig_chains, self.orphaned_backup_sets, | 1018 | ext_containers = self.orphaned_backup_sets + self.incomplete_backup_sets |
220 | 1016 | self.incomplete_backup_sets) | 1019 | if extra_clean: |
221 | 1017 | for set_or_chain_list in ext_containers: | 1020 | old_sig_chains = self.all_sig_chains[:] |
222 | 1018 | for set_or_chain in set_or_chain_list: | 1021 | if self.matched_chain_pair: |
223 | 1019 | if set_or_chain.backend: | 1022 | matched_sig_chain = self.matched_chain_pair[0] |
224 | 1020 | remote_filenames.extend(set_or_chain.get_filenames()) | 1023 | for sig_chain in self.all_sig_chains: |
225 | 1021 | else: | 1024 | print sig_chain.start_time, matched_sig_chain.start_time, |
226 | 1022 | local_filenames.extend(set_or_chain.get_filenames()) | 1025 | print sig_chain.end_time, matched_sig_chain.end_time |
227 | 1026 | if (sig_chain.start_time == matched_sig_chain.start_time and | ||
228 | 1027 | sig_chain.end_time == matched_sig_chain.end_time): | ||
229 | 1028 | old_sig_chains.remove(sig_chain) | ||
230 | 1029 | ext_containers += old_sig_chains | ||
231 | 1030 | for set_or_chain in ext_containers: | ||
232 | 1031 | if set_or_chain.backend: | ||
233 | 1032 | remote_filenames.extend(set_or_chain.get_filenames()) | ||
234 | 1033 | else: | ||
235 | 1034 | local_filenames.extend(set_or_chain.get_filenames()) | ||
236 | 1023 | local_filenames += self.local_orphaned_sig_names | 1035 | local_filenames += self.local_orphaned_sig_names |
237 | 1024 | remote_filenames += self.remote_orphaned_sig_names | 1036 | remote_filenames += self.remote_orphaned_sig_names |
238 | 1025 | return local_filenames, remote_filenames | 1037 | return local_filenames, remote_filenames |
239 | 1026 | 1038 | ||
240 | === modified file 'duplicity/commandline.py' | |||
241 | --- duplicity/commandline.py 2009-09-18 14:16:34 +0000 | |||
242 | +++ duplicity/commandline.py 2009-10-23 20:45:20 +0000 | |||
243 | @@ -78,6 +78,7 @@ | |||
244 | 78 | "exclude-filelist-stdin", | 78 | "exclude-filelist-stdin", |
245 | 79 | "exclude-other-filesystems", | 79 | "exclude-other-filesystems", |
246 | 80 | "exclude-regexp=", | 80 | "exclude-regexp=", |
247 | 81 | "extra-clean", | ||
248 | 81 | "fail-on-volume=", | 82 | "fail-on-volume=", |
249 | 82 | "file-to-restore=", | 83 | "file-to-restore=", |
250 | 83 | "force", | 84 | "force", |
251 | @@ -271,6 +272,8 @@ | |||
252 | 271 | elif opt == "--exclude-filelist-stdin": | 272 | elif opt == "--exclude-filelist-stdin": |
253 | 272 | select_opts.append(("--exclude-filelist", "standard input")) | 273 | select_opts.append(("--exclude-filelist", "standard input")) |
254 | 273 | select_files.append(sys.stdin) | 274 | select_files.append(sys.stdin) |
255 | 275 | elif opt == "--extra-clean": | ||
256 | 276 | globals.extra_clean = True | ||
257 | 274 | elif opt == "--fail-on-volume": | 277 | elif opt == "--fail-on-volume": |
258 | 275 | globals.fail_on_volume = get_int(arg, opt) | 278 | globals.fail_on_volume = get_int(arg, opt) |
259 | 276 | elif opt == "--full-if-older-than": | 279 | elif opt == "--full-if-older-than": |
260 | @@ -641,6 +644,7 @@ | |||
261 | 641 | --exclude-globbing-filelist <%(filename)s> | 644 | --exclude-globbing-filelist <%(filename)s> |
262 | 642 | --exclude-other-filesystems | 645 | --exclude-other-filesystems |
263 | 643 | --exclude-regexp <regexp> | 646 | --exclude-regexp <regexp> |
264 | 647 | --extra-clean | ||
265 | 644 | --file-to-restore <%(path)s> | 648 | --file-to-restore <%(path)s> |
266 | 645 | --full-if-older-than <%(time)s> | 649 | --full-if-older-than <%(time)s> |
267 | 646 | --force | 650 | --force |
268 | 647 | 651 | ||
269 | === modified file 'duplicity/globals.py' | |||
270 | --- duplicity/globals.py 2009-09-18 14:16:34 +0000 | |||
271 | +++ duplicity/globals.py 2009-10-23 20:45:20 +0000 | |||
272 | @@ -182,3 +182,6 @@ | |||
273 | 182 | 182 | ||
274 | 183 | # if True the par2 recovery files will be created. | 183 | # if True the par2 recovery files will be created. |
275 | 184 | par2 = False | 184 | par2 = False |
276 | 185 | |||
277 | 186 | # If we should be particularly aggressive when cleaning up | ||
278 | 187 | extra_clean = False | ||
279 | 185 | 188 | ||
280 | === modified file 'duplicity/log.py' | |||
281 | --- duplicity/log.py 2009-09-20 18:43:02 +0000 | |||
282 | +++ duplicity/log.py 2009-10-23 20:45:20 +0000 | |||
283 | @@ -128,6 +128,7 @@ | |||
284 | 128 | cannot_iterate = 8 | 128 | cannot_iterate = 8 |
285 | 129 | cannot_stat = 9 | 129 | cannot_stat = 9 |
286 | 130 | cannot_read = 10 | 130 | cannot_read = 10 |
287 | 131 | no_sig_for_time = 11 | ||
288 | 131 | 132 | ||
289 | 132 | def Warn(s, code=WarningCode.generic, extra=None): | 133 | def Warn(s, code=WarningCode.generic, extra=None): |
290 | 133 | """Shortcut used for warning messages (verbosity 2)""" | 134 | """Shortcut used for warning messages (verbosity 2)""" |
291 | 134 | 135 | ||
292 | === modified file 'po/duplicity.pot' | |||
293 | --- po/duplicity.pot 2009-09-15 11:34:45 +0000 | |||
294 | +++ po/duplicity.pot 2009-10-23 20:45:20 +0000 | |||
295 | @@ -8,7 +8,7 @@ | |||
296 | 8 | msgstr "" | 8 | msgstr "" |
297 | 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
298 | 10 | "Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@loafman.com>\n" | 10 | "Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@loafman.com>\n" |
300 | 11 | "POT-Creation-Date: 2009-09-15 06:29-0500\n" | 11 | "POT-Creation-Date: 2009-10-23 16:29-0400\n" |
301 | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
302 | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
303 | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
304 | @@ -17,215 +17,211 @@ | |||
305 | 17 | "Content-Transfer-Encoding: 8bit\n" | 17 | "Content-Transfer-Encoding: 8bit\n" |
306 | 18 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" | 18 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" |
307 | 19 | 19 | ||
309 | 20 | #: ../duplicity-bin:191 | 20 | #: ../duplicity-bin:192 |
310 | 21 | #, python-format | 21 | #, python-format |
311 | 22 | msgid "" | 22 | msgid "" |
312 | 23 | "Unable to locate last file %s and block %d in backup set.\n" | 23 | "Unable to locate last file %s and block %d in backup set.\n" |
313 | 24 | "Attempting restart on the next file %s." | 24 | "Attempting restart on the next file %s." |
314 | 25 | msgstr "" | 25 | msgstr "" |
315 | 26 | 26 | ||
317 | 27 | #: ../duplicity-bin:197 | 27 | #: ../duplicity-bin:198 |
318 | 28 | #, python-format | 28 | #, python-format |
319 | 29 | msgid "" | 29 | msgid "" |
320 | 30 | "Unable to locate last file %s and block %d in backup set.\n" | 30 | "Unable to locate last file %s and block %d in backup set.\n" |
321 | 31 | "There are no more files to be backed up." | 31 | "There are no more files to be backed up." |
322 | 32 | msgstr "" | 32 | msgstr "" |
323 | 33 | 33 | ||
325 | 34 | #: ../duplicity-bin:443 | 34 | #: ../duplicity-bin:461 |
326 | 35 | msgid "" | 35 | msgid "" |
327 | 36 | "Fatal Error: Unable to start incremental backup. Old signatures not found " | 36 | "Fatal Error: Unable to start incremental backup. Old signatures not found " |
328 | 37 | "and incremental specified" | 37 | "and incremental specified" |
329 | 38 | msgstr "" | 38 | msgstr "" |
330 | 39 | 39 | ||
332 | 40 | #: ../duplicity-bin:447 | 40 | #: ../duplicity-bin:465 |
333 | 41 | msgid "No signatures found, switching to full backup." | 41 | msgid "No signatures found, switching to full backup." |
334 | 42 | msgstr "" | 42 | msgstr "" |
335 | 43 | 43 | ||
337 | 44 | #: ../duplicity-bin:461 | 44 | #: ../duplicity-bin:479 |
338 | 45 | msgid "Backup Statistics" | 45 | msgid "Backup Statistics" |
339 | 46 | msgstr "" | 46 | msgstr "" |
340 | 47 | 47 | ||
346 | 48 | #: ../duplicity-bin:515 | 48 | #: ../duplicity-bin:559 |
342 | 49 | msgid "No signature data found, unable to list files." | ||
343 | 50 | msgstr "" | ||
344 | 51 | |||
345 | 52 | #: ../duplicity-bin:544 | ||
347 | 53 | #, python-format | 49 | #, python-format |
348 | 54 | msgid "%s not found in archive, no files restored." | 50 | msgid "%s not found in archive, no files restored." |
349 | 55 | msgstr "" | 51 | msgstr "" |
350 | 56 | 52 | ||
352 | 57 | #: ../duplicity-bin:548 | 53 | #: ../duplicity-bin:563 |
353 | 58 | msgid "No files found in archive - nothing restored." | 54 | msgid "No files found in archive - nothing restored." |
354 | 59 | msgstr "" | 55 | msgstr "" |
355 | 60 | 56 | ||
357 | 61 | #: ../duplicity-bin:581 | 57 | #: ../duplicity-bin:596 |
358 | 62 | #, python-format | 58 | #, python-format |
359 | 63 | msgid "Processed volume %d of %d" | 59 | msgid "Processed volume %d of %d" |
360 | 64 | msgstr "" | 60 | msgstr "" |
361 | 65 | 61 | ||
363 | 66 | #: ../duplicity-bin:621 | 62 | #: ../duplicity-bin:636 |
364 | 67 | #, python-format | 63 | #, python-format |
365 | 68 | msgid "Invalid data - %s hash mismatch:" | 64 | msgid "Invalid data - %s hash mismatch:" |
366 | 69 | msgstr "" | 65 | msgstr "" |
367 | 70 | 66 | ||
369 | 71 | #: ../duplicity-bin:622 | 67 | #: ../duplicity-bin:637 |
370 | 72 | #, python-format | 68 | #, python-format |
371 | 73 | msgid "Calculated hash: %s" | 69 | msgid "Calculated hash: %s" |
372 | 74 | msgstr "" | 70 | msgstr "" |
373 | 75 | 71 | ||
375 | 76 | #: ../duplicity-bin:623 | 72 | #: ../duplicity-bin:638 |
376 | 77 | #, python-format | 73 | #, python-format |
377 | 78 | msgid "Manifest hash: %s" | 74 | msgid "Manifest hash: %s" |
378 | 79 | msgstr "" | 75 | msgstr "" |
379 | 80 | 76 | ||
381 | 81 | #: ../duplicity-bin:640 | 77 | #: ../duplicity-bin:655 |
382 | 82 | #, python-format | 78 | #, python-format |
383 | 83 | msgid "Volume was signed by key %s, not %s" | 79 | msgid "Volume was signed by key %s, not %s" |
384 | 84 | msgstr "" | 80 | msgstr "" |
385 | 85 | 81 | ||
387 | 86 | #: ../duplicity-bin:670 | 82 | #: ../duplicity-bin:685 |
388 | 87 | #, python-format | 83 | #, python-format |
389 | 88 | msgid "Verify complete: %s, %s." | 84 | msgid "Verify complete: %s, %s." |
390 | 89 | msgstr "" | 85 | msgstr "" |
391 | 90 | 86 | ||
393 | 91 | #: ../duplicity-bin:671 | 87 | #: ../duplicity-bin:686 |
394 | 92 | #, python-format | 88 | #, python-format |
395 | 93 | msgid "%d file compared" | 89 | msgid "%d file compared" |
396 | 94 | msgid_plural "%d files compared" | 90 | msgid_plural "%d files compared" |
397 | 95 | msgstr[0] "" | 91 | msgstr[0] "" |
398 | 96 | msgstr[1] "" | 92 | msgstr[1] "" |
399 | 97 | 93 | ||
401 | 98 | #: ../duplicity-bin:673 | 94 | #: ../duplicity-bin:688 |
402 | 99 | #, python-format | 95 | #, python-format |
403 | 100 | msgid "%d difference found" | 96 | msgid "%d difference found" |
404 | 101 | msgid_plural "%d differences found" | 97 | msgid_plural "%d differences found" |
405 | 102 | msgstr[0] "" | 98 | msgstr[0] "" |
406 | 103 | msgstr[1] "" | 99 | msgstr[1] "" |
407 | 104 | 100 | ||
409 | 105 | #: ../duplicity-bin:692 | 101 | #: ../duplicity-bin:707 |
410 | 106 | msgid "No extraneous files found, nothing deleted in cleanup." | 102 | msgid "No extraneous files found, nothing deleted in cleanup." |
411 | 107 | msgstr "" | 103 | msgstr "" |
412 | 108 | 104 | ||
414 | 109 | #: ../duplicity-bin:697 | 105 | #: ../duplicity-bin:712 |
415 | 110 | msgid "Deleting this file from backend:" | 106 | msgid "Deleting this file from backend:" |
416 | 111 | msgid_plural "Deleting these files from backend:" | 107 | msgid_plural "Deleting these files from backend:" |
417 | 112 | msgstr[0] "" | 108 | msgstr[0] "" |
418 | 113 | msgstr[1] "" | 109 | msgstr[1] "" |
419 | 114 | 110 | ||
421 | 115 | #: ../duplicity-bin:706 | 111 | #: ../duplicity-bin:721 |
422 | 116 | msgid "Found the following file to delete:" | 112 | msgid "Found the following file to delete:" |
423 | 117 | msgid_plural "Found the following files to delete:" | 113 | msgid_plural "Found the following files to delete:" |
424 | 118 | msgstr[0] "" | 114 | msgstr[0] "" |
425 | 119 | msgstr[1] "" | 115 | msgstr[1] "" |
426 | 120 | 116 | ||
428 | 121 | #: ../duplicity-bin:710 | 117 | #: ../duplicity-bin:725 |
429 | 122 | msgid "Run duplicity again with the --force option to actually delete." | 118 | msgid "Run duplicity again with the --force option to actually delete." |
430 | 123 | msgstr "" | 119 | msgstr "" |
431 | 124 | 120 | ||
433 | 125 | #: ../duplicity-bin:749 | 121 | #: ../duplicity-bin:764 |
434 | 126 | msgid "There are backup set(s) at time(s):" | 122 | msgid "There are backup set(s) at time(s):" |
435 | 127 | msgstr "" | 123 | msgstr "" |
436 | 128 | 124 | ||
438 | 129 | #: ../duplicity-bin:751 | 125 | #: ../duplicity-bin:766 |
439 | 130 | msgid "Which can't be deleted because newer sets depend on them." | 126 | msgid "Which can't be deleted because newer sets depend on them." |
440 | 131 | msgstr "" | 127 | msgstr "" |
441 | 132 | 128 | ||
443 | 133 | #: ../duplicity-bin:755 | 129 | #: ../duplicity-bin:770 |
444 | 134 | msgid "" | 130 | msgid "" |
445 | 135 | "Current active backup chain is older than specified time. However, it will " | 131 | "Current active backup chain is older than specified time. However, it will " |
446 | 136 | "not be deleted. To remove all your backups, manually purge the repository." | 132 | "not be deleted. To remove all your backups, manually purge the repository." |
447 | 137 | msgstr "" | 133 | msgstr "" |
448 | 138 | 134 | ||
450 | 139 | #: ../duplicity-bin:761 | 135 | #: ../duplicity-bin:776 |
451 | 140 | msgid "No old backup sets found, nothing deleted." | 136 | msgid "No old backup sets found, nothing deleted." |
452 | 141 | msgstr "" | 137 | msgstr "" |
453 | 142 | 138 | ||
455 | 143 | #: ../duplicity-bin:764 | 139 | #: ../duplicity-bin:779 |
456 | 144 | msgid "Deleting backup set at time:" | 140 | msgid "Deleting backup set at time:" |
457 | 145 | msgid_plural "Deleting backup sets at times:" | 141 | msgid_plural "Deleting backup sets at times:" |
458 | 146 | msgstr[0] "" | 142 | msgstr[0] "" |
459 | 147 | msgstr[1] "" | 143 | msgstr[1] "" |
460 | 148 | 144 | ||
462 | 149 | #: ../duplicity-bin:776 | 145 | #: ../duplicity-bin:791 |
463 | 150 | msgid "Found old backup set at the following time:" | 146 | msgid "Found old backup set at the following time:" |
464 | 151 | msgid_plural "Found old backup sets at the following times:" | 147 | msgid_plural "Found old backup sets at the following times:" |
465 | 152 | msgstr[0] "" | 148 | msgstr[0] "" |
466 | 153 | msgstr[1] "" | 149 | msgstr[1] "" |
467 | 154 | 150 | ||
469 | 155 | #: ../duplicity-bin:780 | 151 | #: ../duplicity-bin:795 |
470 | 156 | msgid "Rerun command with --force option to actually delete." | 152 | msgid "Rerun command with --force option to actually delete." |
471 | 157 | msgstr "" | 153 | msgstr "" |
472 | 158 | 154 | ||
474 | 159 | #: ../duplicity-bin:863 | 155 | #: ../duplicity-bin:882 |
475 | 160 | #, python-format | 156 | #, python-format |
476 | 161 | msgid "Deleting local %s (not authoritative at backend)." | 157 | msgid "Deleting local %s (not authoritative at backend)." |
477 | 162 | msgstr "" | 158 | msgstr "" |
478 | 163 | 159 | ||
480 | 164 | #: ../duplicity-bin:888 ../duplicity/dup_temp.py:239 | 160 | #: ../duplicity-bin:907 ../duplicity/dup_temp.py:254 |
481 | 165 | #, python-format | 161 | #, python-format |
482 | 166 | msgid "Failed to read %s: %s" | 162 | msgid "Failed to read %s: %s" |
483 | 167 | msgstr "" | 163 | msgstr "" |
484 | 168 | 164 | ||
486 | 169 | #: ../duplicity-bin:899 | 165 | #: ../duplicity-bin:918 |
487 | 170 | #, python-format | 166 | #, python-format |
488 | 171 | msgid "Copying %s to local cache." | 167 | msgid "Copying %s to local cache." |
489 | 172 | msgstr "" | 168 | msgstr "" |
490 | 173 | 169 | ||
492 | 174 | #: ../duplicity-bin:943 | 170 | #: ../duplicity-bin:959 |
493 | 175 | msgid "Local and Remote metadata are synchronized, no sync needed." | 171 | msgid "Local and Remote metadata are synchronized, no sync needed." |
494 | 176 | msgstr "" | 172 | msgstr "" |
495 | 177 | 173 | ||
497 | 178 | #: ../duplicity-bin:948 | 174 | #: ../duplicity-bin:964 |
498 | 179 | msgid "Synchronizing remote metadata to local cache..." | 175 | msgid "Synchronizing remote metadata to local cache..." |
499 | 180 | msgstr "" | 176 | msgstr "" |
500 | 181 | 177 | ||
502 | 182 | #: ../duplicity-bin:955 | 178 | #: ../duplicity-bin:973 |
503 | 183 | msgid "Sync would copy the following from remote to local:" | 179 | msgid "Sync would copy the following from remote to local:" |
504 | 184 | msgstr "" | 180 | msgstr "" |
505 | 185 | 181 | ||
507 | 186 | #: ../duplicity-bin:958 | 182 | #: ../duplicity-bin:976 |
508 | 187 | msgid "Sync would remove the following spurious local files:" | 183 | msgid "Sync would remove the following spurious local files:" |
509 | 188 | msgstr "" | 184 | msgstr "" |
510 | 189 | 185 | ||
512 | 190 | #: ../duplicity-bin:1001 | 186 | #: ../duplicity-bin:1019 |
513 | 191 | msgid "Unable to get free space on temp." | 187 | msgid "Unable to get free space on temp." |
514 | 192 | msgstr "" | 188 | msgstr "" |
515 | 193 | 189 | ||
517 | 194 | #: ../duplicity-bin:1009 | 190 | #: ../duplicity-bin:1027 |
518 | 195 | #, python-format | 191 | #, python-format |
519 | 196 | msgid "Temp space has %d available, backup needs approx %d." | 192 | msgid "Temp space has %d available, backup needs approx %d." |
520 | 197 | msgstr "" | 193 | msgstr "" |
521 | 198 | 194 | ||
523 | 199 | #: ../duplicity-bin:1012 | 195 | #: ../duplicity-bin:1030 |
524 | 200 | #, python-format | 196 | #, python-format |
525 | 201 | msgid "Temp has %d available, backup will use approx %d." | 197 | msgid "Temp has %d available, backup will use approx %d." |
526 | 202 | msgstr "" | 198 | msgstr "" |
527 | 203 | 199 | ||
529 | 204 | #: ../duplicity-bin:1020 | 200 | #: ../duplicity-bin:1038 |
530 | 205 | msgid "Unable to get max open files." | 201 | msgid "Unable to get max open files." |
531 | 206 | msgstr "" | 202 | msgstr "" |
532 | 207 | 203 | ||
534 | 208 | #: ../duplicity-bin:1024 | 204 | #: ../duplicity-bin:1042 |
535 | 209 | #, python-format | 205 | #, python-format |
536 | 210 | msgid "" | 206 | msgid "" |
537 | 211 | "Max open files of %s is too low, should be >= 1024.\n" | 207 | "Max open files of %s is too low, should be >= 1024.\n" |
538 | 212 | "Use 'ulimit -n 1024' or higher to correct.\n" | 208 | "Use 'ulimit -n 1024' or higher to correct.\n" |
539 | 213 | msgstr "" | 209 | msgstr "" |
540 | 214 | 210 | ||
542 | 215 | #: ../duplicity-bin:1070 | 211 | #: ../duplicity-bin:1088 |
543 | 216 | msgid "" | 212 | msgid "" |
544 | 217 | "RESTART: The first volume failed to upload before termination.\n" | 213 | "RESTART: The first volume failed to upload before termination.\n" |
545 | 218 | " Restart is impossible...starting backup from beginning." | 214 | " Restart is impossible...starting backup from beginning." |
546 | 219 | msgstr "" | 215 | msgstr "" |
547 | 220 | 216 | ||
549 | 221 | #: ../duplicity-bin:1076 | 217 | #: ../duplicity-bin:1094 |
550 | 222 | #, python-format | 218 | #, python-format |
551 | 223 | msgid "" | 219 | msgid "" |
552 | 224 | "RESTART: Volumes %d to %d failed to upload before termination.\n" | 220 | "RESTART: Volumes %d to %d failed to upload before termination.\n" |
553 | 225 | " Restarting backup at volume %d." | 221 | " Restarting backup at volume %d." |
554 | 226 | msgstr "" | 222 | msgstr "" |
555 | 227 | 223 | ||
557 | 228 | #: ../duplicity-bin:1084 | 224 | #: ../duplicity-bin:1102 |
558 | 229 | #, python-format | 225 | #, python-format |
559 | 230 | msgid "" | 226 | msgid "" |
560 | 231 | "RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n" | 227 | "RESTART: Impossible backup state: manifest has %d vols, remote has %d vols.\n" |
561 | @@ -234,39 +230,39 @@ | |||
562 | 234 | " backup then restart the backup from the beginning." | 230 | " backup then restart the backup from the beginning." |
563 | 235 | msgstr "" | 231 | msgstr "" |
564 | 236 | 232 | ||
566 | 237 | #: ../duplicity-bin:1162 | 233 | #: ../duplicity-bin:1180 |
567 | 238 | #, python-format | 234 | #, python-format |
568 | 239 | msgid "Last %s backup left a partial set, restarting." | 235 | msgid "Last %s backup left a partial set, restarting." |
569 | 240 | msgstr "" | 236 | msgstr "" |
570 | 241 | 237 | ||
572 | 242 | #: ../duplicity-bin:1166 | 238 | #: ../duplicity-bin:1184 |
573 | 243 | #, python-format | 239 | #, python-format |
574 | 244 | msgid "Cleaning up previous partial %s backup set, restarting." | 240 | msgid "Cleaning up previous partial %s backup set, restarting." |
575 | 245 | msgstr "" | 241 | msgstr "" |
576 | 246 | 242 | ||
578 | 247 | #: ../duplicity-bin:1177 | 243 | #: ../duplicity-bin:1195 |
579 | 248 | msgid "Last full backup date:" | 244 | msgid "Last full backup date:" |
580 | 249 | msgstr "" | 245 | msgstr "" |
581 | 250 | 246 | ||
583 | 251 | #: ../duplicity-bin:1179 | 247 | #: ../duplicity-bin:1197 |
584 | 252 | msgid "Last full backup date: none" | 248 | msgid "Last full backup date: none" |
585 | 253 | msgstr "" | 249 | msgstr "" |
586 | 254 | 250 | ||
588 | 255 | #: ../duplicity-bin:1181 | 251 | #: ../duplicity-bin:1199 |
589 | 256 | msgid "Last full backup is too old, forcing full backup" | 252 | msgid "Last full backup is too old, forcing full backup" |
590 | 257 | msgstr "" | 253 | msgstr "" |
591 | 258 | 254 | ||
593 | 259 | #: ../duplicity-bin:1255 | 255 | #: ../duplicity-bin:1275 |
594 | 260 | #, python-format | 256 | #, python-format |
595 | 261 | msgid "GPG error detail: %s" | 257 | msgid "GPG error detail: %s" |
596 | 262 | msgstr "" | 258 | msgstr "" |
597 | 263 | 259 | ||
599 | 264 | #: ../duplicity-bin:1264 | 260 | #: ../duplicity-bin:1284 |
600 | 265 | #, python-format | 261 | #, python-format |
601 | 266 | msgid "User error detail: %s" | 262 | msgid "User error detail: %s" |
602 | 267 | msgstr "" | 263 | msgstr "" |
603 | 268 | 264 | ||
605 | 269 | #: ../duplicity-bin:1273 | 265 | #: ../duplicity-bin:1293 |
606 | 270 | #, python-format | 266 | #, python-format |
607 | 271 | msgid "Backend error detail: %s" | 267 | msgid "Backend error detail: %s" |
608 | 272 | msgstr "" | 268 | msgstr "" |
609 | @@ -338,122 +334,129 @@ | |||
610 | 338 | msgid "Reading results of '%s'" | 334 | msgid "Reading results of '%s'" |
611 | 339 | msgstr "" | 335 | msgstr "" |
612 | 340 | 336 | ||
614 | 341 | #: ../duplicity/collections.py:176 | 337 | #: ../duplicity/collections.py:98 |
615 | 338 | msgid "" | ||
616 | 339 | "Fatal Error: There are remote par2 files but par2 executable is not " | ||
617 | 340 | "available.\n" | ||
618 | 341 | "Either install par2 or pass --force option to force the operation." | ||
619 | 342 | msgstr "" | ||
620 | 343 | |||
621 | 344 | #: ../duplicity/collections.py:198 | ||
622 | 342 | msgid "Fatal Error: No manifests found for most recent backup" | 345 | msgid "Fatal Error: No manifests found for most recent backup" |
623 | 343 | msgstr "" | 346 | msgstr "" |
624 | 344 | 347 | ||
626 | 345 | #: ../duplicity/collections.py:185 | 348 | #: ../duplicity/collections.py:207 |
627 | 346 | msgid "" | 349 | msgid "" |
628 | 347 | "Fatal Error: Remote manifest does not match local one. Either the remote " | 350 | "Fatal Error: Remote manifest does not match local one. Either the remote " |
629 | 348 | "backup set or the local archive directory has been corrupted." | 351 | "backup set or the local archive directory has been corrupted." |
630 | 349 | msgstr "" | 352 | msgstr "" |
631 | 350 | 353 | ||
633 | 351 | #: ../duplicity/collections.py:193 | 354 | #: ../duplicity/collections.py:215 |
634 | 352 | msgid "Fatal Error: Neither remote nor local manifest is readable." | 355 | msgid "Fatal Error: Neither remote nor local manifest is readable." |
635 | 353 | msgstr "" | 356 | msgstr "" |
636 | 354 | 357 | ||
638 | 355 | #: ../duplicity/collections.py:299 | 358 | #: ../duplicity/collections.py:321 |
639 | 356 | msgid "Preferring Backupset over previous one!" | 359 | msgid "Preferring Backupset over previous one!" |
640 | 357 | msgstr "" | 360 | msgstr "" |
641 | 358 | 361 | ||
643 | 359 | #: ../duplicity/collections.py:302 | 362 | #: ../duplicity/collections.py:324 |
644 | 360 | #, python-format | 363 | #, python-format |
645 | 361 | msgid "Ignoring incremental Backupset (start_time: %s; needed: %s)" | 364 | msgid "Ignoring incremental Backupset (start_time: %s; needed: %s)" |
646 | 362 | msgstr "" | 365 | msgstr "" |
647 | 363 | 366 | ||
649 | 364 | #: ../duplicity/collections.py:307 | 367 | #: ../duplicity/collections.py:329 |
650 | 365 | #, python-format | 368 | #, python-format |
651 | 366 | msgid "Added incremental Backupset (start_time: %s / end_time: %s)" | 369 | msgid "Added incremental Backupset (start_time: %s / end_time: %s)" |
652 | 367 | msgstr "" | 370 | msgstr "" |
653 | 368 | 371 | ||
655 | 369 | #: ../duplicity/collections.py:373 | 372 | #: ../duplicity/collections.py:395 |
656 | 370 | msgid "Chain start time: " | 373 | msgid "Chain start time: " |
657 | 371 | msgstr "" | 374 | msgstr "" |
658 | 372 | 375 | ||
660 | 373 | #: ../duplicity/collections.py:374 | 376 | #: ../duplicity/collections.py:396 |
661 | 374 | msgid "Chain end time: " | 377 | msgid "Chain end time: " |
662 | 375 | msgstr "" | 378 | msgstr "" |
663 | 376 | 379 | ||
665 | 377 | #: ../duplicity/collections.py:375 | 380 | #: ../duplicity/collections.py:397 |
666 | 378 | #, python-format | 381 | #, python-format |
667 | 379 | msgid "Number of contained backup sets: %d" | 382 | msgid "Number of contained backup sets: %d" |
668 | 380 | msgstr "" | 383 | msgstr "" |
669 | 381 | 384 | ||
671 | 382 | #: ../duplicity/collections.py:377 | 385 | #: ../duplicity/collections.py:399 |
672 | 383 | #, python-format | 386 | #, python-format |
673 | 384 | msgid "Total number of contained volumes: %d" | 387 | msgid "Total number of contained volumes: %d" |
674 | 385 | msgstr "" | 388 | msgstr "" |
675 | 386 | 389 | ||
677 | 387 | #: ../duplicity/collections.py:379 | 390 | #: ../duplicity/collections.py:401 |
678 | 388 | msgid "Type of backup set:" | 391 | msgid "Type of backup set:" |
679 | 389 | msgstr "" | 392 | msgstr "" |
680 | 390 | 393 | ||
682 | 391 | #: ../duplicity/collections.py:379 | 394 | #: ../duplicity/collections.py:401 |
683 | 392 | msgid "Time:" | 395 | msgid "Time:" |
684 | 393 | msgstr "" | 396 | msgstr "" |
685 | 394 | 397 | ||
687 | 395 | #: ../duplicity/collections.py:379 | 398 | #: ../duplicity/collections.py:401 |
688 | 396 | msgid "Num volumes:" | 399 | msgid "Num volumes:" |
689 | 397 | msgstr "" | 400 | msgstr "" |
690 | 398 | 401 | ||
692 | 399 | #: ../duplicity/collections.py:383 | 402 | #: ../duplicity/collections.py:405 |
693 | 400 | msgid "Full" | 403 | msgid "Full" |
694 | 401 | msgstr "" | 404 | msgstr "" |
695 | 402 | 405 | ||
697 | 403 | #: ../duplicity/collections.py:386 | 406 | #: ../duplicity/collections.py:408 |
698 | 404 | msgid "Incremental" | 407 | msgid "Incremental" |
699 | 405 | msgstr "" | 408 | msgstr "" |
700 | 406 | 409 | ||
702 | 407 | #: ../duplicity/collections.py:446 | 410 | #: ../duplicity/collections.py:468 |
703 | 408 | msgid "local" | 411 | msgid "local" |
704 | 409 | msgstr "" | 412 | msgstr "" |
705 | 410 | 413 | ||
707 | 411 | #: ../duplicity/collections.py:448 | 414 | #: ../duplicity/collections.py:470 |
708 | 412 | msgid "remote" | 415 | msgid "remote" |
709 | 413 | msgstr "" | 416 | msgstr "" |
710 | 414 | 417 | ||
712 | 415 | #: ../duplicity/collections.py:600 | 418 | #: ../duplicity/collections.py:624 |
713 | 416 | msgid "Collection Status" | 419 | msgid "Collection Status" |
714 | 417 | msgstr "" | 420 | msgstr "" |
715 | 418 | 421 | ||
717 | 419 | #: ../duplicity/collections.py:602 | 422 | #: ../duplicity/collections.py:626 |
718 | 420 | #, python-format | 423 | #, python-format |
719 | 421 | msgid "Connecting with backend: %s" | 424 | msgid "Connecting with backend: %s" |
720 | 422 | msgstr "" | 425 | msgstr "" |
721 | 423 | 426 | ||
723 | 424 | #: ../duplicity/collections.py:604 | 427 | #: ../duplicity/collections.py:628 |
724 | 425 | #, python-format | 428 | #, python-format |
725 | 426 | msgid "Archive dir: %s" | 429 | msgid "Archive dir: %s" |
726 | 427 | msgstr "" | 430 | msgstr "" |
727 | 428 | 431 | ||
729 | 429 | #: ../duplicity/collections.py:607 | 432 | #: ../duplicity/collections.py:631 |
730 | 430 | #, python-format | 433 | #, python-format |
733 | 431 | msgid "Found %d backup chain without signatures." | 434 | msgid "Found %d secondary backup chain." |
734 | 432 | msgid_plural "Found %d backup chains without signatures." | 435 | msgid_plural "Found %d secondary backup chains." |
735 | 433 | msgstr[0] "" | 436 | msgstr[0] "" |
736 | 434 | msgstr[1] "" | 437 | msgstr[1] "" |
737 | 435 | 438 | ||
739 | 436 | #: ../duplicity/collections.py:612 | 439 | #: ../duplicity/collections.py:636 |
740 | 437 | #, python-format | 440 | #, python-format |
749 | 438 | msgid "Signature-less chain %d of %d:" | 441 | msgid "Secondary chain %d of %d:" |
750 | 439 | msgstr "" | 442 | msgstr "" |
751 | 440 | 443 | ||
752 | 441 | #: ../duplicity/collections.py:618 | 444 | #: ../duplicity/collections.py:642 |
753 | 442 | msgid "Found a complete backup chain with matching signature chain:" | 445 | msgid "Found primary backup chain with matching signature chain:" |
754 | 443 | msgstr "" | 446 | msgstr "" |
755 | 444 | 447 | ||
756 | 445 | #: ../duplicity/collections.py:622 | 448 | #: ../duplicity/collections.py:646 |
757 | 446 | msgid "No backup chains with active signatures found" | 449 | msgid "No backup chains with active signatures found" |
758 | 447 | msgstr "" | 450 | msgstr "" |
759 | 448 | 451 | ||
761 | 449 | #: ../duplicity/collections.py:625 | 452 | #: ../duplicity/collections.py:649 |
762 | 450 | #, python-format | 453 | #, python-format |
763 | 451 | msgid "Also found %d backup set not part of any chain," | 454 | msgid "Also found %d backup set not part of any chain," |
764 | 452 | msgid_plural "Also found %d backup sets not part of any chain," | 455 | msgid_plural "Also found %d backup sets not part of any chain," |
765 | 453 | msgstr[0] "" | 456 | msgstr[0] "" |
766 | 454 | msgstr[1] "" | 457 | msgstr[1] "" |
767 | 455 | 458 | ||
769 | 456 | #: ../duplicity/collections.py:629 | 459 | #: ../duplicity/collections.py:653 |
770 | 457 | #, python-format | 460 | #, python-format |
771 | 458 | msgid "and %d incomplete backup set." | 461 | msgid "and %d incomplete backup set." |
772 | 459 | msgid_plural "and %d incomplete backup sets." | 462 | msgid_plural "and %d incomplete backup sets." |
773 | @@ -461,101 +464,102 @@ | |||
774 | 461 | msgstr[1] "" | 464 | msgstr[1] "" |
775 | 462 | 465 | ||
776 | 463 | #. "cleanup" is a hard-coded command, so do not translate it | 466 | #. "cleanup" is a hard-coded command, so do not translate it |
778 | 464 | #: ../duplicity/collections.py:634 | 467 | #: ../duplicity/collections.py:658 |
779 | 465 | msgid "These may be deleted by running duplicity with the \"cleanup\" command." | 468 | msgid "These may be deleted by running duplicity with the \"cleanup\" command." |
780 | 466 | msgstr "" | 469 | msgstr "" |
781 | 467 | 470 | ||
783 | 468 | #: ../duplicity/collections.py:637 | 471 | #: ../duplicity/collections.py:661 |
784 | 469 | msgid "No orphaned or incomplete backup sets found." | 472 | msgid "No orphaned or incomplete backup sets found." |
785 | 470 | msgstr "" | 473 | msgstr "" |
786 | 471 | 474 | ||
788 | 472 | #: ../duplicity/collections.py:653 | 475 | #: ../duplicity/collections.py:677 |
789 | 473 | #, python-format | 476 | #, python-format |
790 | 474 | msgid "%d file exists on backend" | 477 | msgid "%d file exists on backend" |
791 | 475 | msgid_plural "%d files exist on backend" | 478 | msgid_plural "%d files exist on backend" |
792 | 476 | msgstr[0] "" | 479 | msgstr[0] "" |
793 | 477 | msgstr[1] "" | 480 | msgstr[1] "" |
794 | 478 | 481 | ||
796 | 479 | #: ../duplicity/collections.py:660 | 482 | #: ../duplicity/collections.py:684 |
797 | 480 | #, python-format | 483 | #, python-format |
798 | 481 | msgid "%d file exists in cache" | 484 | msgid "%d file exists in cache" |
799 | 482 | msgid_plural "%d files exist in cache" | 485 | msgid_plural "%d files exist in cache" |
800 | 483 | msgstr[0] "" | 486 | msgstr[0] "" |
801 | 484 | msgstr[1] "" | 487 | msgstr[1] "" |
802 | 485 | 488 | ||
804 | 486 | #: ../duplicity/collections.py:712 | 489 | #: ../duplicity/collections.py:736 |
805 | 487 | msgid "Warning, discarding last backup set, because of missing signature file." | 490 | msgid "Warning, discarding last backup set, because of missing signature file." |
806 | 488 | msgstr "" | 491 | msgstr "" |
807 | 489 | 492 | ||
809 | 490 | #: ../duplicity/collections.py:745 | 493 | #: ../duplicity/collections.py:759 |
810 | 491 | msgid "Warning, found the following local orphaned signature file:" | 494 | msgid "Warning, found the following local orphaned signature file:" |
811 | 492 | msgid_plural "Warning, found the following local orphaned signature files:" | 495 | msgid_plural "Warning, found the following local orphaned signature files:" |
812 | 493 | msgstr[0] "" | 496 | msgstr[0] "" |
813 | 494 | msgstr[1] "" | 497 | msgstr[1] "" |
814 | 495 | 498 | ||
816 | 496 | #: ../duplicity/collections.py:754 | 499 | #: ../duplicity/collections.py:768 |
817 | 497 | msgid "Warning, found the following remote orphaned signature file:" | 500 | msgid "Warning, found the following remote orphaned signature file:" |
818 | 498 | msgid_plural "Warning, found the following remote orphaned signature files:" | 501 | msgid_plural "Warning, found the following remote orphaned signature files:" |
819 | 499 | msgstr[0] "" | 502 | msgstr[0] "" |
820 | 500 | msgstr[1] "" | 503 | msgstr[1] "" |
821 | 501 | 504 | ||
829 | 502 | #: ../duplicity/collections.py:764 | 505 | #: ../duplicity/collections.py:777 |
823 | 503 | msgid "Warning, found an unnecessary signature chain" | ||
824 | 504 | msgid_plural "Warning, found unnecessary signature chains" | ||
825 | 505 | msgstr[0] "" | ||
826 | 506 | msgstr[1] "" | ||
827 | 507 | |||
828 | 508 | #: ../duplicity/collections.py:772 | ||
830 | 509 | msgid "Warning, found signatures but no corresponding backup files" | 506 | msgid "Warning, found signatures but no corresponding backup files" |
831 | 510 | msgstr "" | 507 | msgstr "" |
832 | 511 | 508 | ||
834 | 512 | #: ../duplicity/collections.py:776 | 509 | #: ../duplicity/collections.py:781 |
835 | 513 | msgid "" | 510 | msgid "" |
836 | 514 | "Warning, found incomplete backup sets, probably left from aborted session" | 511 | "Warning, found incomplete backup sets, probably left from aborted session" |
837 | 515 | msgstr "" | 512 | msgstr "" |
838 | 516 | 513 | ||
840 | 517 | #: ../duplicity/collections.py:780 | 514 | #: ../duplicity/collections.py:785 |
841 | 518 | msgid "Warning, found the following orphaned backup file:" | 515 | msgid "Warning, found the following orphaned backup file:" |
842 | 519 | msgid_plural "Warning, found the following orphaned backup files:" | 516 | msgid_plural "Warning, found the following orphaned backup files:" |
843 | 520 | msgstr[0] "" | 517 | msgstr[0] "" |
844 | 521 | msgstr[1] "" | 518 | msgstr[1] "" |
845 | 522 | 519 | ||
847 | 523 | #: ../duplicity/collections.py:798 | 520 | #: ../duplicity/collections.py:803 |
848 | 524 | #, python-format | 521 | #, python-format |
849 | 525 | msgid "Extracting backup chains from list of files: %s" | 522 | msgid "Extracting backup chains from list of files: %s" |
850 | 526 | msgstr "" | 523 | msgstr "" |
851 | 527 | 524 | ||
853 | 528 | #: ../duplicity/collections.py:808 | 525 | #: ../duplicity/collections.py:818 |
854 | 529 | #, python-format | 526 | #, python-format |
855 | 530 | msgid "File %s is part of known set" | 527 | msgid "File %s is part of known set" |
856 | 531 | msgstr "" | 528 | msgstr "" |
857 | 532 | 529 | ||
859 | 533 | #: ../duplicity/collections.py:811 | 530 | #: ../duplicity/collections.py:821 |
860 | 534 | #, python-format | 531 | #, python-format |
861 | 535 | msgid "File %s is not part of a known set; creating new set" | 532 | msgid "File %s is not part of a known set; creating new set" |
862 | 536 | msgstr "" | 533 | msgstr "" |
863 | 537 | 534 | ||
865 | 538 | #: ../duplicity/collections.py:816 | 535 | #: ../duplicity/collections.py:826 |
866 | 539 | #, python-format | 536 | #, python-format |
867 | 540 | msgid "Ignoring file (rejected by backup set) '%s'" | 537 | msgid "Ignoring file (rejected by backup set) '%s'" |
868 | 541 | msgstr "" | 538 | msgstr "" |
869 | 542 | 539 | ||
871 | 543 | #: ../duplicity/collections.py:829 | 540 | #: ../duplicity/collections.py:839 |
872 | 544 | #, python-format | 541 | #, python-format |
873 | 545 | msgid "Found backup chain %s" | 542 | msgid "Found backup chain %s" |
874 | 546 | msgstr "" | 543 | msgstr "" |
875 | 547 | 544 | ||
877 | 548 | #: ../duplicity/collections.py:834 | 545 | #: ../duplicity/collections.py:844 |
878 | 549 | #, python-format | 546 | #, python-format |
879 | 550 | msgid "Added set %s to pre-existing chain %s" | 547 | msgid "Added set %s to pre-existing chain %s" |
880 | 551 | msgstr "" | 548 | msgstr "" |
881 | 552 | 549 | ||
883 | 553 | #: ../duplicity/collections.py:838 | 550 | #: ../duplicity/collections.py:848 |
884 | 554 | #, python-format | 551 | #, python-format |
885 | 555 | msgid "Found orphaned set %s" | 552 | msgid "Found orphaned set %s" |
886 | 556 | msgstr "" | 553 | msgstr "" |
887 | 557 | 554 | ||
889 | 558 | #: ../duplicity/commandline.py:125 | 555 | #: ../duplicity/collections.py:1004 |
890 | 556 | #, python-format | ||
891 | 557 | msgid "" | ||
892 | 558 | "No signature chain for the requested time. Using oldest available chain, " | ||
893 | 559 | "starting at time %s." | ||
894 | 560 | msgstr "" | ||
895 | 561 | |||
896 | 562 | #: ../duplicity/commandline.py:129 | ||
897 | 559 | #, python-format | 563 | #, python-format |
898 | 560 | msgid "" | 564 | msgid "" |
899 | 561 | "Warning: Option %s is pending deprecation and will be removed in a future " | 565 | "Warning: Option %s is pending deprecation and will be removed in a future " |
900 | @@ -563,164 +567,164 @@ | |||
901 | 563 | "Use of default filenames is strongly suggested." | 567 | "Use of default filenames is strongly suggested." |
902 | 564 | msgstr "" | 568 | msgstr "" |
903 | 565 | 569 | ||
905 | 566 | #: ../duplicity/commandline.py:176 | 570 | #: ../duplicity/commandline.py:180 |
906 | 567 | #, python-format | 571 | #, python-format |
907 | 568 | msgid "Error opening file %s" | 572 | msgid "Error opening file %s" |
908 | 569 | msgstr "" | 573 | msgstr "" |
909 | 570 | 574 | ||
911 | 571 | #: ../duplicity/commandline.py:288 | 575 | #: ../duplicity/commandline.py:294 |
912 | 572 | msgid "Unable to load gio module" | 576 | msgid "Unable to load gio module" |
913 | 573 | msgstr "" | 577 | msgstr "" |
914 | 574 | 578 | ||
916 | 575 | #: ../duplicity/commandline.py:383 | 579 | #: ../duplicity/commandline.py:389 |
917 | 576 | msgid "" | 580 | msgid "" |
918 | 577 | "running in 'ignore errors' mode due to --ignore-errors; please re-consider " | 581 | "running in 'ignore errors' mode due to --ignore-errors; please re-consider " |
919 | 578 | "if this was not intended" | 582 | "if this was not intended" |
920 | 579 | msgstr "" | 583 | msgstr "" |
921 | 580 | 584 | ||
923 | 581 | #: ../duplicity/commandline.py:423 | 585 | #: ../duplicity/commandline.py:435 |
924 | 582 | #, python-format | 586 | #, python-format |
925 | 583 | msgid "Using archive dir: %s" | 587 | msgid "Using archive dir: %s" |
926 | 584 | msgstr "" | 588 | msgstr "" |
927 | 585 | 589 | ||
929 | 586 | #: ../duplicity/commandline.py:424 | 590 | #: ../duplicity/commandline.py:436 |
930 | 587 | #, python-format | 591 | #, python-format |
931 | 588 | msgid "Using backup name: %s" | 592 | msgid "Using backup name: %s" |
932 | 589 | msgstr "" | 593 | msgstr "" |
933 | 590 | 594 | ||
935 | 591 | #: ../duplicity/commandline.py:431 | 595 | #: ../duplicity/commandline.py:443 |
936 | 592 | #, python-format | 596 | #, python-format |
937 | 593 | msgid "Command line error: %s" | 597 | msgid "Command line error: %s" |
938 | 594 | msgstr "" | 598 | msgstr "" |
939 | 595 | 599 | ||
941 | 596 | #: ../duplicity/commandline.py:432 | 600 | #: ../duplicity/commandline.py:444 |
942 | 597 | msgid "Enter 'duplicity --help' for help screen." | 601 | msgid "Enter 'duplicity --help' for help screen." |
943 | 598 | msgstr "" | 602 | msgstr "" |
944 | 599 | 603 | ||
945 | 600 | #. Used in usage help to represent a Unix-style path name. Example: | 604 | #. Used in usage help to represent a Unix-style path name. Example: |
946 | 601 | #. rsync://user[:password]@other_host[:port]//absolute_path | 605 | #. rsync://user[:password]@other_host[:port]//absolute_path |
948 | 602 | #: ../duplicity/commandline.py:445 | 606 | #: ../duplicity/commandline.py:457 |
949 | 603 | msgid "absolute_path" | 607 | msgid "absolute_path" |
950 | 604 | msgstr "" | 608 | msgstr "" |
951 | 605 | 609 | ||
952 | 606 | #. Used in usage help. Example: | 610 | #. Used in usage help. Example: |
953 | 607 | #. tahoe://alias/some_dir | 611 | #. tahoe://alias/some_dir |
955 | 608 | #: ../duplicity/commandline.py:449 | 612 | #: ../duplicity/commandline.py:461 |
956 | 609 | msgid "alias" | 613 | msgid "alias" |
957 | 610 | msgstr "" | 614 | msgstr "" |
958 | 611 | 615 | ||
959 | 612 | #. Used in usage help (noun) | 616 | #. Used in usage help (noun) |
961 | 613 | #: ../duplicity/commandline.py:452 | 617 | #: ../duplicity/commandline.py:464 |
962 | 614 | msgid "backup name" | 618 | msgid "backup name" |
963 | 615 | msgstr "" | 619 | msgstr "" |
964 | 616 | 620 | ||
965 | 617 | #. Used in help to represent a "bucket name" for Amazon Web | 621 | #. Used in help to represent a "bucket name" for Amazon Web |
966 | 618 | #. Services' Simple Storage Service (S3). Example: | 622 | #. Services' Simple Storage Service (S3). Example: |
967 | 619 | #. s3://other.host/bucket_name[/prefix] | 623 | #. s3://other.host/bucket_name[/prefix] |
969 | 620 | #: ../duplicity/commandline.py:457 | 624 | #: ../duplicity/commandline.py:469 |
970 | 621 | msgid "bucket_name" | 625 | msgid "bucket_name" |
971 | 622 | msgstr "" | 626 | msgstr "" |
972 | 623 | 627 | ||
973 | 624 | #. abbreviation for "character" (noun) | 628 | #. abbreviation for "character" (noun) |
975 | 625 | #: ../duplicity/commandline.py:460 | 629 | #: ../duplicity/commandline.py:472 |
976 | 626 | msgid "char" | 630 | msgid "char" |
977 | 627 | msgstr "" | 631 | msgstr "" |
978 | 628 | 632 | ||
979 | 629 | #. noun | 633 | #. noun |
981 | 630 | #: ../duplicity/commandline.py:463 | 634 | #: ../duplicity/commandline.py:475 |
982 | 631 | msgid "command" | 635 | msgid "command" |
983 | 632 | msgstr "" | 636 | msgstr "" |
984 | 633 | 637 | ||
985 | 634 | #. Used in usage help to represent the name of a container in | 638 | #. Used in usage help to represent the name of a container in |
986 | 635 | #. Amazon Web Services' Cloudfront. Example: | 639 | #. Amazon Web Services' Cloudfront. Example: |
987 | 636 | #. cf+http://container_name | 640 | #. cf+http://container_name |
989 | 637 | #: ../duplicity/commandline.py:468 | 641 | #: ../duplicity/commandline.py:480 |
990 | 638 | msgid "container_name" | 642 | msgid "container_name" |
991 | 639 | msgstr "" | 643 | msgstr "" |
992 | 640 | 644 | ||
993 | 641 | #. noun | 645 | #. noun |
995 | 642 | #: ../duplicity/commandline.py:471 | 646 | #: ../duplicity/commandline.py:483 |
996 | 643 | msgid "count" | 647 | msgid "count" |
997 | 644 | msgstr "" | 648 | msgstr "" |
998 | 645 | 649 | ||
999 | 646 | #. Used in usage help to represent the name of a file directory | 650 | #. Used in usage help to represent the name of a file directory |
1001 | 647 | #: ../duplicity/commandline.py:474 | 651 | #: ../duplicity/commandline.py:486 |
1002 | 648 | msgid "directory" | 652 | msgid "directory" |
1003 | 649 | msgstr "" | 653 | msgstr "" |
1004 | 650 | 654 | ||
1005 | 651 | #. Used in usage help to represent the name of a file. Example: | 655 | #. Used in usage help to represent the name of a file. Example: |
1006 | 652 | #. --log-file <filename> | 656 | #. --log-file <filename> |
1008 | 653 | #: ../duplicity/commandline.py:478 | 657 | #: ../duplicity/commandline.py:490 |
1009 | 654 | msgid "filename" | 658 | msgid "filename" |
1010 | 655 | msgstr "" | 659 | msgstr "" |
1011 | 656 | 660 | ||
1012 | 657 | #. Used in usage help to represent an ID for a GnuPG key. Example: | 661 | #. Used in usage help to represent an ID for a GnuPG key. Example: |
1013 | 658 | #. --encrypt-key <gpg_key_id> | 662 | #. --encrypt-key <gpg_key_id> |
1015 | 659 | #: ../duplicity/commandline.py:482 | 663 | #: ../duplicity/commandline.py:494 |
1016 | 660 | msgid "gpg-key-id" | 664 | msgid "gpg-key-id" |
1017 | 661 | msgstr "" | 665 | msgstr "" |
1018 | 662 | 666 | ||
1019 | 663 | #. Used in usage help, e.g. to represent the name of a code | 667 | #. Used in usage help, e.g. to represent the name of a code |
1020 | 664 | #. module. Example: | 668 | #. module. Example: |
1021 | 665 | #. rsync://user[:password]@other.host[:port]::/module/some_dir | 669 | #. rsync://user[:password]@other.host[:port]::/module/some_dir |
1023 | 666 | #: ../duplicity/commandline.py:487 | 670 | #: ../duplicity/commandline.py:499 |
1024 | 667 | msgid "module" | 671 | msgid "module" |
1025 | 668 | msgstr "" | 672 | msgstr "" |
1026 | 669 | 673 | ||
1027 | 670 | #. Used in usage help to represent a desired number of | 674 | #. Used in usage help to represent a desired number of |
1028 | 671 | #. something. Example: | 675 | #. something. Example: |
1029 | 672 | #. --num-retries <number> | 676 | #. --num-retries <number> |
1031 | 673 | #: ../duplicity/commandline.py:492 | 677 | #: ../duplicity/commandline.py:504 |
1032 | 674 | msgid "number" | 678 | msgid "number" |
1033 | 675 | msgstr "" | 679 | msgstr "" |
1034 | 676 | 680 | ||
1035 | 677 | #. Used in usage help. (Should be consistent with the "Options:" | 681 | #. Used in usage help. (Should be consistent with the "Options:" |
1036 | 678 | #. header.) Example: | 682 | #. header.) Example: |
1037 | 679 | #. duplicity [full|incremental] [options] source_dir target_url | 683 | #. duplicity [full|incremental] [options] source_dir target_url |
1039 | 680 | #: ../duplicity/commandline.py:497 | 684 | #: ../duplicity/commandline.py:509 |
1040 | 681 | msgid "options" | 685 | msgid "options" |
1041 | 682 | msgstr "" | 686 | msgstr "" |
1042 | 683 | 687 | ||
1043 | 684 | #. Used in usage help to represent an internet hostname. Example: | 688 | #. Used in usage help to represent an internet hostname. Example: |
1044 | 685 | #. ftp://user[:password]@other.host[:port]/some_dir | 689 | #. ftp://user[:password]@other.host[:port]/some_dir |
1046 | 686 | #: ../duplicity/commandline.py:501 | 690 | #: ../duplicity/commandline.py:513 |
1047 | 687 | msgid "other.host" | 691 | msgid "other.host" |
1048 | 688 | msgstr "" | 692 | msgstr "" |
1049 | 689 | 693 | ||
1050 | 690 | #. Used in usage help. Example: | 694 | #. Used in usage help. Example: |
1051 | 691 | #. ftp://user[:password]@other.host[:port]/some_dir | 695 | #. ftp://user[:password]@other.host[:port]/some_dir |
1053 | 692 | #: ../duplicity/commandline.py:505 | 696 | #: ../duplicity/commandline.py:517 |
1054 | 693 | msgid "password" | 697 | msgid "password" |
1055 | 694 | msgstr "" | 698 | msgstr "" |
1056 | 695 | 699 | ||
1057 | 696 | #. Used in usage help to represent a Unix-style path name. Example: | 700 | #. Used in usage help to represent a Unix-style path name. Example: |
1058 | 697 | #. --archive-dir <path> | 701 | #. --archive-dir <path> |
1060 | 698 | #: ../duplicity/commandline.py:509 | 702 | #: ../duplicity/commandline.py:521 |
1061 | 699 | msgid "path" | 703 | msgid "path" |
1062 | 700 | msgstr "" | 704 | msgstr "" |
1063 | 701 | 705 | ||
1064 | 702 | #. Used in usage help to represent a TCP port number. Example: | 706 | #. Used in usage help to represent a TCP port number. Example: |
1065 | 703 | #. ftp://user[:password]@other.host[:port]/some_dir | 707 | #. ftp://user[:password]@other.host[:port]/some_dir |
1067 | 704 | #: ../duplicity/commandline.py:513 | 708 | #: ../duplicity/commandline.py:525 |
1068 | 705 | msgid "port" | 709 | msgid "port" |
1069 | 706 | msgstr "" | 710 | msgstr "" |
1070 | 707 | 711 | ||
1071 | 708 | #. Used in usage help. This represents a string to be used as a | 712 | #. Used in usage help. This represents a string to be used as a |
1072 | 709 | #. prefix to names for backup files created by Duplicity. Example: | 713 | #. prefix to names for backup files created by Duplicity. Example: |
1073 | 710 | #. s3://other.host/bucket_name[/prefix] | 714 | #. s3://other.host/bucket_name[/prefix] |
1075 | 711 | #: ../duplicity/commandline.py:518 | 715 | #: ../duplicity/commandline.py:530 |
1076 | 712 | msgid "prefix" | 716 | msgid "prefix" |
1077 | 713 | msgstr "" | 717 | msgstr "" |
1078 | 714 | 718 | ||
1079 | 715 | #. Used in usage help to represent a Unix-style path name. Example: | 719 | #. Used in usage help to represent a Unix-style path name. Example: |
1080 | 716 | #. rsync://user[:password]@other.host[:port]/relative_path | 720 | #. rsync://user[:password]@other.host[:port]/relative_path |
1082 | 717 | #: ../duplicity/commandline.py:522 | 721 | #: ../duplicity/commandline.py:534 |
1083 | 718 | msgid "relative_path" | 722 | msgid "relative_path" |
1084 | 719 | msgstr "" | 723 | msgstr "" |
1085 | 720 | 724 | ||
1086 | 721 | #. Used in usage help. Example: | 725 | #. Used in usage help. Example: |
1087 | 722 | #. --timeout <seconds> | 726 | #. --timeout <seconds> |
1089 | 723 | #: ../duplicity/commandline.py:526 | 727 | #: ../duplicity/commandline.py:538 |
1090 | 724 | msgid "seconds" | 728 | msgid "seconds" |
1091 | 725 | msgstr "" | 729 | msgstr "" |
1092 | 726 | 730 | ||
1093 | @@ -728,14 +732,14 @@ | |||
1094 | 728 | #. matching one or more files, as described in the documentation. | 732 | #. matching one or more files, as described in the documentation. |
1095 | 729 | #. Example: | 733 | #. Example: |
1096 | 730 | #. --exclude <shell_pattern> | 734 | #. --exclude <shell_pattern> |
1098 | 731 | #: ../duplicity/commandline.py:532 | 735 | #: ../duplicity/commandline.py:544 |
1099 | 732 | msgid "shell_pattern" | 736 | msgid "shell_pattern" |
1100 | 733 | msgstr "" | 737 | msgstr "" |
1101 | 734 | 738 | ||
1102 | 735 | #. Used in usage help to represent the name of a single file | 739 | #. Used in usage help to represent the name of a single file |
1103 | 736 | #. directory or a Unix-style path to a directory. Example: | 740 | #. directory or a Unix-style path to a directory. Example: |
1104 | 737 | #. file:///some_dir | 741 | #. file:///some_dir |
1106 | 738 | #: ../duplicity/commandline.py:537 | 742 | #: ../duplicity/commandline.py:549 |
1107 | 739 | msgid "some_dir" | 743 | msgid "some_dir" |
1108 | 740 | msgstr "" | 744 | msgstr "" |
1109 | 741 | 745 | ||
1110 | @@ -743,14 +747,14 @@ | |||
1111 | 743 | #. directory or a Unix-style path to a directory where files will be | 747 | #. directory or a Unix-style path to a directory where files will be |
1112 | 744 | #. coming FROM. Example: | 748 | #. coming FROM. Example: |
1113 | 745 | #. duplicity [full|incremental] [options] source_dir target_url | 749 | #. duplicity [full|incremental] [options] source_dir target_url |
1115 | 746 | #: ../duplicity/commandline.py:543 | 750 | #: ../duplicity/commandline.py:555 |
1116 | 747 | msgid "source_dir" | 751 | msgid "source_dir" |
1117 | 748 | msgstr "" | 752 | msgstr "" |
1118 | 749 | 753 | ||
1119 | 750 | #. Used in usage help to represent a URL files will be coming | 754 | #. Used in usage help to represent a URL files will be coming |
1120 | 751 | #. FROM. Example: | 755 | #. FROM. Example: |
1121 | 752 | #. duplicity [restore] [options] source_url target_dir | 756 | #. duplicity [restore] [options] source_url target_dir |
1123 | 753 | #: ../duplicity/commandline.py:548 | 757 | #: ../duplicity/commandline.py:560 |
1124 | 754 | msgid "source_url" | 758 | msgid "source_url" |
1125 | 755 | msgstr "" | 759 | msgstr "" |
1126 | 756 | 760 | ||
1127 | @@ -758,60 +762,60 @@ | |||
1128 | 758 | #. directory or a Unix-style path to a directory. where files will be | 762 | #. directory or a Unix-style path to a directory. where files will be |
1129 | 759 | #. going TO. Example: | 763 | #. going TO. Example: |
1130 | 760 | #. duplicity [restore] [options] source_url target_dir | 764 | #. duplicity [restore] [options] source_url target_dir |
1132 | 761 | #: ../duplicity/commandline.py:554 | 765 | #: ../duplicity/commandline.py:566 |
1133 | 762 | msgid "target_dir" | 766 | msgid "target_dir" |
1134 | 763 | msgstr "" | 767 | msgstr "" |
1135 | 764 | 768 | ||
1136 | 765 | #. Used in usage help to represent a URL files will be going TO. | 769 | #. Used in usage help to represent a URL files will be going TO. |
1137 | 766 | #. Example: | 770 | #. Example: |
1138 | 767 | #. duplicity [full|incremental] [options] source_dir target_url | 771 | #. duplicity [full|incremental] [options] source_dir target_url |
1140 | 768 | #: ../duplicity/commandline.py:559 | 772 | #: ../duplicity/commandline.py:571 |
1141 | 769 | msgid "target_url" | 773 | msgid "target_url" |
1142 | 770 | msgstr "" | 774 | msgstr "" |
1143 | 771 | 775 | ||
1144 | 772 | #. Used in usage help to represent a time spec for a previous | 776 | #. Used in usage help to represent a time spec for a previous |
1145 | 773 | #. point in time, as described in the documentation. Example: | 777 | #. point in time, as described in the documentation. Example: |
1146 | 774 | #. duplicity remove-older-than time [options] target_url | 778 | #. duplicity remove-older-than time [options] target_url |
1148 | 775 | #: ../duplicity/commandline.py:564 | 779 | #: ../duplicity/commandline.py:576 |
1149 | 776 | msgid "time" | 780 | msgid "time" |
1150 | 777 | msgstr "" | 781 | msgstr "" |
1151 | 778 | 782 | ||
1152 | 779 | #. Used in usage help to represent a user name (i.e. login). | 783 | #. Used in usage help to represent a user name (i.e. login). |
1153 | 780 | #. Example: | 784 | #. Example: |
1154 | 781 | #. ftp://user[:password]@other.host[:port]/some_dir | 785 | #. ftp://user[:password]@other.host[:port]/some_dir |
1156 | 782 | #: ../duplicity/commandline.py:569 | 786 | #: ../duplicity/commandline.py:581 |
1157 | 783 | msgid "user" | 787 | msgid "user" |
1158 | 784 | msgstr "" | 788 | msgstr "" |
1159 | 785 | 789 | ||
1161 | 786 | #: ../duplicity/commandline.py:571 | 790 | #: ../duplicity/commandline.py:583 |
1162 | 787 | #, python-format | 791 | #, python-format |
1163 | 788 | msgid "duplicity version %s running on %s." | 792 | msgid "duplicity version %s running on %s." |
1164 | 789 | msgstr "" | 793 | msgstr "" |
1165 | 790 | 794 | ||
1166 | 791 | #. Header in usage help | 795 | #. Header in usage help |
1168 | 792 | #: ../duplicity/commandline.py:575 | 796 | #: ../duplicity/commandline.py:587 |
1169 | 793 | msgid "Usage:" | 797 | msgid "Usage:" |
1170 | 794 | msgstr "" | 798 | msgstr "" |
1171 | 795 | 799 | ||
1172 | 796 | #. Header in usage help | 800 | #. Header in usage help |
1174 | 797 | #: ../duplicity/commandline.py:588 | 801 | #: ../duplicity/commandline.py:600 |
1175 | 798 | msgid "Backends and their URL formats:" | 802 | msgid "Backends and their URL formats:" |
1176 | 799 | msgstr "" | 803 | msgstr "" |
1177 | 800 | 804 | ||
1178 | 801 | #. Header in usage help | 805 | #. Header in usage help |
1180 | 802 | #: ../duplicity/commandline.py:608 | 806 | #: ../duplicity/commandline.py:620 |
1181 | 803 | msgid "Commands:" | 807 | msgid "Commands:" |
1182 | 804 | msgstr "" | 808 | msgstr "" |
1183 | 805 | 809 | ||
1184 | 806 | #. Header in usage help | 810 | #. Header in usage help |
1186 | 807 | #: ../duplicity/commandline.py:622 | 811 | #: ../duplicity/commandline.py:634 |
1187 | 808 | msgid "Options:" | 812 | msgid "Options:" |
1188 | 809 | msgstr "" | 813 | msgstr "" |
1189 | 810 | 814 | ||
1190 | 811 | #. In this portion of the usage instructions, "[ewnid]" indicates which | 815 | #. In this portion of the usage instructions, "[ewnid]" indicates which |
1191 | 812 | #. characters are permitted (e, w, n, i, or d); the brackets imply their own | 816 | #. characters are permitted (e, w, n, i, or d); the brackets imply their own |
1192 | 813 | #. meaning in regex; i.e., only one of the characters is allowed in an instance. | 817 | #. meaning in regex; i.e., only one of the characters is allowed in an instance. |
1194 | 814 | #: ../duplicity/commandline.py:676 | 818 | #: ../duplicity/commandline.py:689 |
1195 | 815 | msgid "" | 819 | msgid "" |
1196 | 816 | " Verbosity must be one of: digit [0-9], character [ewnid],\n" | 820 | " Verbosity must be one of: digit [0-9], character [ewnid],\n" |
1197 | 817 | " or word ['error', 'warning', 'notice', 'info', 'debug'].\n" | 821 | " or word ['error', 'warning', 'notice', 'info', 'debug'].\n" |
1198 | @@ -819,36 +823,36 @@ | |||
1199 | 819 | " that verbosity level is set at 2 (Warning) or higher.\n" | 823 | " that verbosity level is set at 2 (Warning) or higher.\n" |
1200 | 820 | msgstr "" | 824 | msgstr "" |
1201 | 821 | 825 | ||
1203 | 822 | #: ../duplicity/commandline.py:702 | 826 | #: ../duplicity/commandline.py:715 |
1204 | 823 | #, python-format | 827 | #, python-format |
1205 | 824 | msgid "Specified archive directory '%s' does not exist, or is not a directory" | 828 | msgid "Specified archive directory '%s' does not exist, or is not a directory" |
1206 | 825 | msgstr "" | 829 | msgstr "" |
1207 | 826 | 830 | ||
1209 | 827 | #: ../duplicity/commandline.py:711 | 831 | #: ../duplicity/commandline.py:724 |
1210 | 828 | #, python-format | 832 | #, python-format |
1211 | 829 | msgid "" | 833 | msgid "" |
1212 | 830 | "Sign key should be an 8 character hex string, like 'AA0E73D2'.\n" | 834 | "Sign key should be an 8 character hex string, like 'AA0E73D2'.\n" |
1213 | 831 | "Received '%s' instead." | 835 | "Received '%s' instead." |
1214 | 832 | msgstr "" | 836 | msgstr "" |
1215 | 833 | 837 | ||
1217 | 834 | #: ../duplicity/commandline.py:769 | 838 | #: ../duplicity/commandline.py:782 |
1218 | 835 | #, python-format | 839 | #, python-format |
1219 | 836 | msgid "" | 840 | msgid "" |
1220 | 837 | "Restore destination directory %s already exists.\n" | 841 | "Restore destination directory %s already exists.\n" |
1221 | 838 | "Will not overwrite." | 842 | "Will not overwrite." |
1222 | 839 | msgstr "" | 843 | msgstr "" |
1223 | 840 | 844 | ||
1225 | 841 | #: ../duplicity/commandline.py:774 | 845 | #: ../duplicity/commandline.py:787 |
1226 | 842 | #, python-format | 846 | #, python-format |
1227 | 843 | msgid "Verify directory %s does not exist" | 847 | msgid "Verify directory %s does not exist" |
1228 | 844 | msgstr "" | 848 | msgstr "" |
1229 | 845 | 849 | ||
1231 | 846 | #: ../duplicity/commandline.py:780 | 850 | #: ../duplicity/commandline.py:793 |
1232 | 847 | #, python-format | 851 | #, python-format |
1233 | 848 | msgid "Backup source directory %s does not exist." | 852 | msgid "Backup source directory %s does not exist." |
1234 | 849 | msgstr "" | 853 | msgstr "" |
1235 | 850 | 854 | ||
1237 | 851 | #: ../duplicity/commandline.py:855 | 855 | #: ../duplicity/commandline.py:868 |
1238 | 852 | #, python-format | 856 | #, python-format |
1239 | 853 | msgid "" | 857 | msgid "" |
1240 | 854 | "Bad URL '%s'.\n" | 858 | "Bad URL '%s'.\n" |
1241 | @@ -856,36 +860,36 @@ | |||
1242 | 856 | "\"file:///usr/local\". See the man page for more information." | 860 | "\"file:///usr/local\". See the man page for more information." |
1243 | 857 | msgstr "" | 861 | msgstr "" |
1244 | 858 | 862 | ||
1246 | 859 | #: ../duplicity/commandline.py:880 | 863 | #: ../duplicity/commandline.py:893 |
1247 | 860 | msgid "Main action: " | 864 | msgid "Main action: " |
1248 | 861 | msgstr "" | 865 | msgstr "" |
1249 | 862 | 866 | ||
1251 | 863 | #: ../duplicity/diffdir.py:105 | 867 | #: ../duplicity/diffdir.py:104 |
1252 | 864 | #, python-format | 868 | #, python-format |
1253 | 865 | msgid "Error %s getting delta for %s" | 869 | msgid "Error %s getting delta for %s" |
1254 | 866 | msgstr "" | 870 | msgstr "" |
1255 | 867 | 871 | ||
1257 | 868 | #: ../duplicity/diffdir.py:119 | 872 | #: ../duplicity/diffdir.py:118 |
1258 | 869 | #, python-format | 873 | #, python-format |
1259 | 870 | msgid "Getting delta of %s and %s" | 874 | msgid "Getting delta of %s and %s" |
1260 | 871 | msgstr "" | 875 | msgstr "" |
1261 | 872 | 876 | ||
1263 | 873 | #: ../duplicity/diffdir.py:164 | 877 | #: ../duplicity/diffdir.py:163 |
1264 | 874 | #, python-format | 878 | #, python-format |
1265 | 875 | msgid "A %s" | 879 | msgid "A %s" |
1266 | 876 | msgstr "" | 880 | msgstr "" |
1267 | 877 | 881 | ||
1269 | 878 | #: ../duplicity/diffdir.py:171 | 882 | #: ../duplicity/diffdir.py:170 |
1270 | 879 | #, python-format | 883 | #, python-format |
1271 | 880 | msgid "M %s" | 884 | msgid "M %s" |
1272 | 881 | msgstr "" | 885 | msgstr "" |
1273 | 882 | 886 | ||
1275 | 883 | #: ../duplicity/diffdir.py:193 | 887 | #: ../duplicity/diffdir.py:192 |
1276 | 884 | #, python-format | 888 | #, python-format |
1277 | 885 | msgid "Comparing %s and %s" | 889 | msgid "Comparing %s and %s" |
1278 | 886 | msgstr "" | 890 | msgstr "" |
1279 | 887 | 891 | ||
1281 | 888 | #: ../duplicity/diffdir.py:199 | 892 | #: ../duplicity/diffdir.py:198 |
1282 | 889 | #, python-format | 893 | #, python-format |
1283 | 890 | msgid "D %s" | 894 | msgid "D %s" |
1284 | 891 | msgstr "" | 895 | msgstr "" |
1285 | @@ -913,22 +917,22 @@ | |||
1286 | 913 | "the day)." | 917 | "the day)." |
1287 | 914 | msgstr "" | 918 | msgstr "" |
1288 | 915 | 919 | ||
1290 | 916 | #: ../duplicity/lazy.py:326 | 920 | #: ../duplicity/lazy.py:325 |
1291 | 917 | #, python-format | 921 | #, python-format |
1292 | 918 | msgid "Warning: oldindex %s >= newindex %s" | 922 | msgid "Warning: oldindex %s >= newindex %s" |
1293 | 919 | msgstr "" | 923 | msgstr "" |
1294 | 920 | 924 | ||
1296 | 921 | #: ../duplicity/lazy.py:401 | 925 | #: ../duplicity/lazy.py:400 |
1297 | 922 | #, python-format | 926 | #, python-format |
1298 | 923 | msgid "Error '%s' processing %s" | 927 | msgid "Error '%s' processing %s" |
1299 | 924 | msgstr "" | 928 | msgstr "" |
1300 | 925 | 929 | ||
1302 | 926 | #: ../duplicity/lazy.py:409 | 930 | #: ../duplicity/lazy.py:408 |
1303 | 927 | #, python-format | 931 | #, python-format |
1304 | 928 | msgid "Skipping %s because of previous error" | 932 | msgid "Skipping %s because of previous error" |
1305 | 929 | msgstr "" | 933 | msgstr "" |
1306 | 930 | 934 | ||
1308 | 931 | #: ../duplicity/manifest.py:86 | 935 | #: ../duplicity/manifest.py:87 |
1309 | 932 | #, python-format | 936 | #, python-format |
1310 | 933 | msgid "" | 937 | msgid "" |
1311 | 934 | "Fatal Error: Backup source host has changed.\n" | 938 | "Fatal Error: Backup source host has changed.\n" |
1312 | @@ -936,7 +940,7 @@ | |||
1313 | 936 | "Previous hostname: %s" | 940 | "Previous hostname: %s" |
1314 | 937 | msgstr "" | 941 | msgstr "" |
1315 | 938 | 942 | ||
1317 | 939 | #: ../duplicity/manifest.py:91 | 943 | #: ../duplicity/manifest.py:94 |
1318 | 940 | #, python-format | 944 | #, python-format |
1319 | 941 | msgid "" | 945 | msgid "" |
1320 | 942 | "Fatal Error: Backup source directory has changed.\n" | 946 | "Fatal Error: Backup source directory has changed.\n" |
1321 | @@ -944,7 +948,7 @@ | |||
1322 | 944 | "Previous directory: %s" | 948 | "Previous directory: %s" |
1323 | 945 | msgstr "" | 949 | msgstr "" |
1324 | 946 | 950 | ||
1326 | 947 | #: ../duplicity/manifest.py:98 | 951 | #: ../duplicity/manifest.py:103 |
1327 | 948 | msgid "" | 952 | msgid "" |
1328 | 949 | "Aborting because you may have accidentally tried to backup two different " | 953 | "Aborting because you may have accidentally tried to backup two different " |
1329 | 950 | "data sets to the same remote location, or using the same archive directory. " | 954 | "data sets to the same remote location, or using the same archive directory. " |
1330 | @@ -952,39 +956,39 @@ | |||
1331 | 952 | "seeing this message" | 956 | "seeing this message" |
1332 | 953 | msgstr "" | 957 | msgstr "" |
1333 | 954 | 958 | ||
1335 | 955 | #: ../duplicity/manifest.py:193 | 959 | #: ../duplicity/manifest.py:198 |
1336 | 956 | msgid "Manifests not equal because different volume numbers" | 960 | msgid "Manifests not equal because different volume numbers" |
1337 | 957 | msgstr "" | 961 | msgstr "" |
1338 | 958 | 962 | ||
1340 | 959 | #: ../duplicity/manifest.py:198 | 963 | #: ../duplicity/manifest.py:203 |
1341 | 960 | msgid "Manifests not equal because volume lists differ" | 964 | msgid "Manifests not equal because volume lists differ" |
1342 | 961 | msgstr "" | 965 | msgstr "" |
1343 | 962 | 966 | ||
1345 | 963 | #: ../duplicity/manifest.py:203 | 967 | #: ../duplicity/manifest.py:208 |
1346 | 964 | msgid "Manifests not equal because hosts or directories differ" | 968 | msgid "Manifests not equal because hosts or directories differ" |
1347 | 965 | msgstr "" | 969 | msgstr "" |
1348 | 966 | 970 | ||
1350 | 967 | #: ../duplicity/manifest.py:350 | 971 | #: ../duplicity/manifest.py:355 |
1351 | 968 | msgid "Warning, found extra Volume identifier" | 972 | msgid "Warning, found extra Volume identifier" |
1352 | 969 | msgstr "" | 973 | msgstr "" |
1353 | 970 | 974 | ||
1355 | 971 | #: ../duplicity/manifest.py:376 | 975 | #: ../duplicity/manifest.py:381 |
1356 | 972 | msgid "Other is not VolumeInfo" | 976 | msgid "Other is not VolumeInfo" |
1357 | 973 | msgstr "" | 977 | msgstr "" |
1358 | 974 | 978 | ||
1360 | 975 | #: ../duplicity/manifest.py:379 | 979 | #: ../duplicity/manifest.py:384 |
1361 | 976 | msgid "Volume numbers don't match" | 980 | msgid "Volume numbers don't match" |
1362 | 977 | msgstr "" | 981 | msgstr "" |
1363 | 978 | 982 | ||
1365 | 979 | #: ../duplicity/manifest.py:382 | 983 | #: ../duplicity/manifest.py:387 |
1366 | 980 | msgid "start_indicies don't match" | 984 | msgid "start_indicies don't match" |
1367 | 981 | msgstr "" | 985 | msgstr "" |
1368 | 982 | 986 | ||
1370 | 983 | #: ../duplicity/manifest.py:385 | 987 | #: ../duplicity/manifest.py:390 |
1371 | 984 | msgid "end_index don't match" | 988 | msgid "end_index don't match" |
1372 | 985 | msgstr "" | 989 | msgstr "" |
1373 | 986 | 990 | ||
1375 | 987 | #: ../duplicity/manifest.py:392 | 991 | #: ../duplicity/manifest.py:397 |
1376 | 988 | msgid "Hashes don't match" | 992 | msgid "Hashes don't match" |
1377 | 989 | msgstr "" | 993 | msgstr "" |
1378 | 990 | 994 | ||
1379 | @@ -1000,12 +1004,12 @@ | |||
1380 | 1000 | "Renaming %s to %s" | 1004 | "Renaming %s to %s" |
1381 | 1001 | msgstr "" | 1005 | msgstr "" |
1382 | 1002 | 1006 | ||
1384 | 1003 | #: ../duplicity/patchdir.py:72 ../duplicity/patchdir.py:77 | 1007 | #: ../duplicity/patchdir.py:71 ../duplicity/patchdir.py:76 |
1385 | 1004 | #, python-format | 1008 | #, python-format |
1386 | 1005 | msgid "Patching %s" | 1009 | msgid "Patching %s" |
1387 | 1006 | msgstr "" | 1010 | msgstr "" |
1388 | 1007 | 1011 | ||
1390 | 1008 | #: ../duplicity/patchdir.py:565 | 1012 | #: ../duplicity/patchdir.py:564 |
1391 | 1009 | #, python-format | 1013 | #, python-format |
1392 | 1010 | msgid "Writing %s of type %s" | 1014 | msgid "Writing %s of type %s" |
1393 | 1011 | msgstr "" | 1015 | msgstr "" |
1394 | @@ -1084,33 +1088,33 @@ | |||
1395 | 1084 | msgid "Error listing directory %s" | 1088 | msgid "Error listing directory %s" |
1396 | 1085 | msgstr "" | 1089 | msgstr "" |
1397 | 1086 | 1090 | ||
1399 | 1087 | #: ../duplicity/selection.py:120 | 1091 | #: ../duplicity/selection.py:118 |
1400 | 1088 | #, python-format | 1092 | #, python-format |
1401 | 1089 | msgid "Skipping socket %s" | 1093 | msgid "Skipping socket %s" |
1402 | 1090 | msgstr "" | 1094 | msgstr "" |
1403 | 1091 | 1095 | ||
1405 | 1092 | #: ../duplicity/selection.py:124 | 1096 | #: ../duplicity/selection.py:122 |
1406 | 1093 | #, python-format | 1097 | #, python-format |
1407 | 1094 | msgid "Error initializing file %s" | 1098 | msgid "Error initializing file %s" |
1408 | 1095 | msgstr "" | 1099 | msgstr "" |
1409 | 1096 | 1100 | ||
1411 | 1097 | #: ../duplicity/selection.py:128 ../duplicity/selection.py:149 | 1101 | #: ../duplicity/selection.py:126 ../duplicity/selection.py:147 |
1412 | 1098 | #, python-format | 1102 | #, python-format |
1413 | 1099 | msgid "Error accessing possibly locked file %s" | 1103 | msgid "Error accessing possibly locked file %s" |
1414 | 1100 | msgstr "" | 1104 | msgstr "" |
1415 | 1101 | 1105 | ||
1417 | 1102 | #: ../duplicity/selection.py:164 | 1106 | #: ../duplicity/selection.py:162 |
1418 | 1103 | #, python-format | 1107 | #, python-format |
1419 | 1104 | msgid "Warning: base %s doesn't exist, continuing" | 1108 | msgid "Warning: base %s doesn't exist, continuing" |
1420 | 1105 | msgstr "" | 1109 | msgstr "" |
1421 | 1106 | 1110 | ||
1424 | 1107 | #: ../duplicity/selection.py:167 ../duplicity/selection.py:185 | 1111 | #: ../duplicity/selection.py:165 ../duplicity/selection.py:183 |
1425 | 1108 | #: ../duplicity/selection.py:188 | 1112 | #: ../duplicity/selection.py:186 |
1426 | 1109 | #, python-format | 1113 | #, python-format |
1427 | 1110 | msgid "Selecting %s" | 1114 | msgid "Selecting %s" |
1428 | 1111 | msgstr "" | 1115 | msgstr "" |
1429 | 1112 | 1116 | ||
1431 | 1113 | #: ../duplicity/selection.py:269 | 1117 | #: ../duplicity/selection.py:267 |
1432 | 1114 | #, python-format | 1118 | #, python-format |
1433 | 1115 | msgid "" | 1119 | msgid "" |
1434 | 1116 | "Fatal Error: The file specification\n" | 1120 | "Fatal Error: The file specification\n" |
1435 | @@ -1121,14 +1125,14 @@ | |||
1436 | 1121 | "pattern (such as '**') which matches the base directory." | 1125 | "pattern (such as '**') which matches the base directory." |
1437 | 1122 | msgstr "" | 1126 | msgstr "" |
1438 | 1123 | 1127 | ||
1440 | 1124 | #: ../duplicity/selection.py:277 | 1128 | #: ../duplicity/selection.py:275 |
1441 | 1125 | #, python-format | 1129 | #, python-format |
1442 | 1126 | msgid "" | 1130 | msgid "" |
1443 | 1127 | "Fatal Error while processing expression\n" | 1131 | "Fatal Error while processing expression\n" |
1444 | 1128 | "%s" | 1132 | "%s" |
1445 | 1129 | msgstr "" | 1133 | msgstr "" |
1446 | 1130 | 1134 | ||
1448 | 1131 | #: ../duplicity/selection.py:287 | 1135 | #: ../duplicity/selection.py:285 |
1449 | 1132 | #, python-format | 1136 | #, python-format |
1450 | 1133 | msgid "" | 1137 | msgid "" |
1451 | 1134 | "Last selection expression:\n" | 1138 | "Last selection expression:\n" |
1452 | @@ -1138,43 +1142,43 @@ | |||
1453 | 1138 | "probably isn't what you meant." | 1142 | "probably isn't what you meant." |
1454 | 1139 | msgstr "" | 1143 | msgstr "" |
1455 | 1140 | 1144 | ||
1457 | 1141 | #: ../duplicity/selection.py:312 | 1145 | #: ../duplicity/selection.py:310 |
1458 | 1142 | #, python-format | 1146 | #, python-format |
1459 | 1143 | msgid "Reading filelist %s" | 1147 | msgid "Reading filelist %s" |
1460 | 1144 | msgstr "" | 1148 | msgstr "" |
1461 | 1145 | 1149 | ||
1463 | 1146 | #: ../duplicity/selection.py:315 | 1150 | #: ../duplicity/selection.py:313 |
1464 | 1147 | #, python-format | 1151 | #, python-format |
1465 | 1148 | msgid "Sorting filelist %s" | 1152 | msgid "Sorting filelist %s" |
1466 | 1149 | msgstr "" | 1153 | msgstr "" |
1467 | 1150 | 1154 | ||
1469 | 1151 | #: ../duplicity/selection.py:342 | 1155 | #: ../duplicity/selection.py:340 |
1470 | 1152 | #, python-format | 1156 | #, python-format |
1471 | 1153 | msgid "" | 1157 | msgid "" |
1472 | 1154 | "Warning: file specification '%s' in filelist %s\n" | 1158 | "Warning: file specification '%s' in filelist %s\n" |
1473 | 1155 | "doesn't start with correct prefix %s. Ignoring." | 1159 | "doesn't start with correct prefix %s. Ignoring." |
1474 | 1156 | msgstr "" | 1160 | msgstr "" |
1475 | 1157 | 1161 | ||
1477 | 1158 | #: ../duplicity/selection.py:346 | 1162 | #: ../duplicity/selection.py:344 |
1478 | 1159 | msgid "Future prefix errors will not be logged." | 1163 | msgid "Future prefix errors will not be logged." |
1479 | 1160 | msgstr "" | 1164 | msgstr "" |
1480 | 1161 | 1165 | ||
1482 | 1162 | #: ../duplicity/selection.py:362 | 1166 | #: ../duplicity/selection.py:360 |
1483 | 1163 | #, python-format | 1167 | #, python-format |
1484 | 1164 | msgid "Error closing filelist %s" | 1168 | msgid "Error closing filelist %s" |
1485 | 1165 | msgstr "" | 1169 | msgstr "" |
1486 | 1166 | 1170 | ||
1488 | 1167 | #: ../duplicity/selection.py:429 | 1171 | #: ../duplicity/selection.py:427 |
1489 | 1168 | #, python-format | 1172 | #, python-format |
1490 | 1169 | msgid "Reading globbing filelist %s" | 1173 | msgid "Reading globbing filelist %s" |
1491 | 1170 | msgstr "" | 1174 | msgstr "" |
1492 | 1171 | 1175 | ||
1494 | 1172 | #: ../duplicity/selection.py:462 | 1176 | #: ../duplicity/selection.py:460 |
1495 | 1173 | #, python-format | 1177 | #, python-format |
1496 | 1174 | msgid "Error compiling regular expression %s" | 1178 | msgid "Error compiling regular expression %s" |
1497 | 1175 | msgstr "" | 1179 | msgstr "" |
1498 | 1176 | 1180 | ||
1500 | 1177 | #: ../duplicity/selection.py:478 | 1181 | #: ../duplicity/selection.py:476 |
1501 | 1178 | msgid "" | 1182 | msgid "" |
1502 | 1179 | "Warning: exclude-device-files is not the first selector.\n" | 1183 | "Warning: exclude-device-files is not the first selector.\n" |
1503 | 1180 | "This may not be what you intended" | 1184 | "This may not be what you intended" |
See my comment on the list-old-chains-0.6 merge request for details.