Merge lp:~mterry/duplicity/po-fixes into lp:~duplicity-team/duplicity/trunk

Proposed by Michael Terry on 2009-07-02
Status: Merged
Approved by: Kenneth Loafman on 2009-07-03
Approved revision: 548
Merged at revision: not available
Proposed branch: lp:~mterry/duplicity/po-fixes
Merge into: lp:~duplicity-team/duplicity/trunk
Diff against target: None lines
To merge this branch: bzr merge lp:~mterry/duplicity/po-fixes
Reviewer Review Type Date Requested Status
Kenneth Loafman 2009-07-02 Approve on 2009-07-03
Review via email: mp+8160@code.launchpad.net
To post a comment you must log in.
Michael Terry (mterry) wrote :

I made some changes to the po directory, with the intention of us enabling translations through Launchpad.

Things launchpad needs:
  * pot file in bzr
  * po files in same directory as pot file

So I did that.

I also added a script, po/update-pot that you can run in the po dir to update the pot file, simply enough. :) This gets run on a makedist. Ideally, it would also get run whenever you make a string change. When the pot file is updated, push it to bzr.

This is just the infrastructure changes needed to enable translations in LP. We still have to flip some switches to make it happen, which I can turn on if this is accepted.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'dist/makedist'
2--- dist/makedist 2009-06-24 17:02:34 +0000
3+++ dist/makedist 2009-07-02 21:51:53 +0000
4@@ -125,14 +125,19 @@
5 (SourceDir, filename, tardir)), filename
6
7 os.mkdir(os.path.join(tardir, "po"))
8+ assert not os.system("cd po && ./update-pot")
9 for filename in [
10- "Makevars",
11- "POTFILES.in",
12+ "duplicity.pot",
13 ]:
14 assert not os.system("cp po/%s %s/po" % (filename, tardir)), filename
15- for lang in ["io"]:
16- assert not os.mkdir(os.path.join(tardir, "po", lang)), lang
17- assert not os.system("cp po/%s/duplicity.[pm]o %s/po/%s" % (lang, tardir, lang)), lang
18+ linguas = open('po/LINGUAS')
19+ for line in linguas:
20+ langs = line.split()
21+ for lang in langs:
22+ assert not os.mkdir(os.path.join(tardir, "po", lang)), lang
23+ assert not os.system("cp po/%s.po %s/po/%s" % (lang, tardir, lang)), lang
24+ assert not os.system("msgfmt po/%s.po -o %s/po/%s/duplicity.mo" % (lang, tardir, lang)), lang
25+ linguas.close()
26
27 VersionedCopy(os.path.join(SourceDir, "globals.py"),
28 os.path.join(tardir, "src", "globals.py"))
29
30=== added file 'po/LINGUAS'
31--- po/LINGUAS 1970-01-01 00:00:00 +0000
32+++ po/LINGUAS 2009-07-02 21:51:53 +0000
33@@ -0,0 +1,1 @@
34+io
35
36=== modified file 'po/POTFILES.in'
37--- po/POTFILES.in 2008-12-29 14:50:41 +0000
38+++ po/POTFILES.in 2009-07-02 21:51:53 +0000
39@@ -1,34 +1,45 @@
40 [encoding: UTF-8]
41
42-duplicity
43+duplicity-bin
44 rdiffdir
45-_librsyncmodule.c
46-src/asyncscheduler.py
47-src/backend.py
48-src/collections.py
49-src/commandline.py
50-src/diffdir.py
51-src/dup_temp.py
52-src/dup_threading.py
53-src/dup_time.py
54-src/errors.py
55-src/file_naming.py
56-src/globals.py
57-src/gpg.py
58-src/__init__.py
59-src/lazy.py
60-src/librsync.py
61-src/log.py
62-src/manifest.py
63-src/misc.py
64-src/patchdir.py
65-src/path.py
66-src/robust.py
67-src/selection.py
68-src/static.py
69-src/statistics.py
70-src/tarfile.py
71-src/tempdir.py
72-src/urlparse_2_5.py
73-src/util.py
74-
75+duplicity/_librsyncmodule.c
76+duplicity/asyncscheduler.py
77+duplicity/backend.py
78+duplicity/collections.py
79+duplicity/commandline.py
80+duplicity/diffdir.py
81+duplicity/dup_temp.py
82+duplicity/dup_threading.py
83+duplicity/dup_time.py
84+duplicity/errors.py
85+duplicity/file_naming.py
86+duplicity/globals.py
87+duplicity/gpg.py
88+duplicity/__init__.py
89+duplicity/lazy.py
90+duplicity/librsync.py
91+duplicity/log.py
92+duplicity/manifest.py
93+duplicity/misc.py
94+duplicity/patchdir.py
95+duplicity/path.py
96+duplicity/robust.py
97+duplicity/selection.py
98+duplicity/static.py
99+duplicity/statistics.py
100+duplicity/tarfile.py
101+duplicity/tempdir.py
102+duplicity/urlparse_2_5.py
103+duplicity/util.py
104+duplicity/backends/botobackend.py
105+duplicity/backends/cloudfilesbackend.py
106+duplicity/backends/ftpbackend.py
107+duplicity/backends/giobackend.py
108+duplicity/backends/hsibackend.py
109+duplicity/backends/imapbackend.py
110+duplicity/backends/__init__.py
111+duplicity/backends/localbackend.py
112+duplicity/backends/rsyncbackend.py
113+duplicity/backends/sshbackend.py
114+duplicity/backends/tahoebackend.py
115+duplicity/backends/webdavbackend.py
116
117=== added file 'po/duplicity.pot'
118--- po/duplicity.pot 1970-01-01 00:00:00 +0000
119+++ po/duplicity.pot 2009-07-02 21:51:53 +0000
120@@ -0,0 +1,1080 @@
121+# SOME DESCRIPTIVE TITLE.
122+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
123+# This file is distributed under the same license as the PACKAGE package.
124+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
125+#
126+#, fuzzy
127+msgid ""
128+msgstr ""
129+"Project-Id-Version: PACKAGE VERSION\n"
130+"Report-Msgid-Bugs-To: Kenneth Loafman <kenneth@loafman.com>\n"
131+"POT-Creation-Date: 2009-07-02 17:50-0400\n"
132+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
133+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
134+"Language-Team: LANGUAGE <LL@li.org>\n"
135+"MIME-Version: 1.0\n"
136+"Content-Type: text/plain; charset=CHARSET\n"
137+"Content-Transfer-Encoding: 8bit\n"
138+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
139+
140+#: ../duplicity-bin:437
141+msgid ""
142+"Fatal Error: Unable to start incremental backup. Old signatures not found "
143+"and incremental specified"
144+msgstr ""
145+
146+#: ../duplicity-bin:441
147+msgid "No signatures found, switching to full backup."
148+msgstr ""
149+
150+#: ../duplicity-bin:455
151+msgid "Backup Statistics"
152+msgstr ""
153+
154+#: ../duplicity-bin:508
155+msgid "No signature data found, unable to list files."
156+msgstr ""
157+
158+#: ../duplicity-bin:537
159+#, python-format
160+msgid "%s not found in archive, no files restored."
161+msgstr ""
162+
163+#: ../duplicity-bin:541
164+msgid "No files found in archive - nothing restored."
165+msgstr ""
166+
167+#: ../duplicity-bin:574
168+#, python-format
169+msgid "Processed volume %d of %d"
170+msgstr ""
171+
172+#: ../duplicity-bin:614
173+#, python-format
174+msgid "Invalid data - %s hash mismatch:"
175+msgstr ""
176+
177+#: ../duplicity-bin:615
178+#, python-format
179+msgid "Calculated hash: %s"
180+msgstr ""
181+
182+#: ../duplicity-bin:616
183+#, python-format
184+msgid "Manifest hash: %s"
185+msgstr ""
186+
187+#: ../duplicity-bin:633
188+#, python-format
189+msgid "Volume was signed by key %s, not %s"
190+msgstr ""
191+
192+#. Unfortunately, ngettext doesn't handle multiple number variables, so we
193+#. split up the string.
194+#: ../duplicity-bin:663
195+#, python-format
196+msgid "Verify complete: %s, %s."
197+msgstr ""
198+
199+#: ../duplicity-bin:664
200+#, python-format
201+msgid "%d file compared"
202+msgid_plural "%d files compared"
203+msgstr[0] ""
204+msgstr[1] ""
205+
206+#: ../duplicity-bin:666
207+#, python-format
208+msgid "%d difference found"
209+msgid_plural "%d differences found"
210+msgstr[0] ""
211+msgstr[1] ""
212+
213+#: ../duplicity-bin:685
214+msgid "No extraneous files found, nothing deleted in cleanup."
215+msgstr ""
216+
217+#: ../duplicity-bin:690
218+msgid "Deleting this file from backend:"
219+msgid_plural "Deleting these files from backend:"
220+msgstr[0] ""
221+msgstr[1] ""
222+
223+#: ../duplicity-bin:699
224+msgid "Found the following file to delete:"
225+msgid_plural "Found the following files to delete:"
226+msgstr[0] ""
227+msgstr[1] ""
228+
229+#: ../duplicity-bin:703
230+msgid "Run duplicity again with the --force option to actually delete."
231+msgstr ""
232+
233+#: ../duplicity-bin:742
234+msgid "There are backup set(s) at time(s):"
235+msgstr ""
236+
237+#: ../duplicity-bin:744
238+msgid "Which can't be deleted because newer sets depend on them."
239+msgstr ""
240+
241+#: ../duplicity-bin:748
242+msgid ""
243+"Current active backup chain is older than specified time. However, it will "
244+"not be deleted. To remove all your backups, manually purge the repository."
245+msgstr ""
246+
247+#: ../duplicity-bin:754
248+msgid "No old backup sets found, nothing deleted."
249+msgstr ""
250+
251+#: ../duplicity-bin:757
252+msgid "Deleting backup set at time:"
253+msgid_plural "Deleting backup sets at times:"
254+msgstr[0] ""
255+msgstr[1] ""
256+
257+#: ../duplicity-bin:769
258+msgid "Found old backup set at the following time:"
259+msgid_plural "Found old backup sets at the following times:"
260+msgstr[0] ""
261+msgstr[1] ""
262+
263+#: ../duplicity-bin:773
264+msgid "Rerun command with --force option to actually delete."
265+msgstr ""
266+
267+#: ../duplicity-bin:838 ../duplicity/dup_temp.py:241
268+#, python-format
269+msgid "Failed to read %s: %s"
270+msgstr ""
271+
272+#: ../duplicity-bin:849
273+#, python-format
274+msgid "Copying %s to local cache."
275+msgstr ""
276+
277+#: ../duplicity-bin:888
278+msgid "Local and Remote metadata are synchronized, no sync needed."
279+msgstr ""
280+
281+#: ../duplicity-bin:892
282+msgid "Synchronizing remote metadata to local cache..."
283+msgstr ""
284+
285+#: ../duplicity-bin:896
286+msgid "Sync would copy the following from remote to local:"
287+msgstr ""
288+
289+#: ../duplicity-bin:939
290+msgid "Unable to get free space on temp."
291+msgstr ""
292+
293+#: ../duplicity-bin:947
294+#, python-format
295+msgid "Temp space has %d available, backup needs approx %d."
296+msgstr ""
297+
298+#: ../duplicity-bin:950
299+#, python-format
300+msgid "Temp has %d available, backup will use approx %d."
301+msgstr ""
302+
303+#: ../duplicity-bin:958
304+msgid "Unable to get max open files."
305+msgstr ""
306+
307+#: ../duplicity-bin:962
308+#, python-format
309+msgid ""
310+"Max open files of %s is too low, should be >= 1024.\n"
311+"Use 'ulimit -n 1024' or higher to correct.\n"
312+msgstr ""
313+
314+#. log it -- main restart heavy lifting is done in write_multivol
315+#: ../duplicity-bin:1066
316+#, python-format
317+msgid "Last %s backup left a partial set, restarting."
318+msgstr ""
319+
320+#. remove last partial backup and get new collection status
321+#: ../duplicity-bin:1070
322+#, python-format
323+msgid "Cleaning up previous partial %s backup set, restarting."
324+msgstr ""
325+
326+#: ../duplicity-bin:1081
327+msgid "Last full backup date:"
328+msgstr ""
329+
330+#: ../duplicity-bin:1083
331+msgid "Last full backup date: none"
332+msgstr ""
333+
334+#: ../duplicity-bin:1085
335+msgid "Last full backup is too old, forcing full backup"
336+msgstr ""
337+
338+#. For gpg errors, don't show an ugly stack trace by
339+#. default. But do with sufficient verbosity.
340+#: ../duplicity-bin:1159
341+#, python-format
342+msgid "GPG error detail: %s"
343+msgstr ""
344+
345+#. For user errors, don't show an ugly stack trace by
346+#. default. But do with sufficient verbosity.
347+#: ../duplicity-bin:1168
348+#, python-format
349+msgid "User error detail: %s"
350+msgstr ""
351+
352+#. For backend errors, don't show an ugly stack trace by
353+#. default. But do with sufficient verbosity.
354+#: ../duplicity-bin:1177
355+#, python-format
356+msgid "Backend error detail: %s"
357+msgstr ""
358+
359+#: ../duplicity/asyncscheduler.py:69
360+#, python-format
361+msgid "instantiating at concurrency %d"
362+msgstr ""
363+
364+#: ../duplicity/asyncscheduler.py:96
365+msgid "inserting barrier"
366+msgstr ""
367+
368+#: ../duplicity/asyncscheduler.py:145
369+msgid "running task synchronously (asynchronicity disabled)"
370+msgstr ""
371+
372+#: ../duplicity/asyncscheduler.py:151
373+msgid "scheduling task for asynchronous execution"
374+msgstr ""
375+
376+#: ../duplicity/asyncscheduler.py:181
377+msgid "task completed successfully"
378+msgstr ""
379+
380+#: ../duplicity/asyncscheduler.py:192
381+msgid ""
382+"a previously scheduled task has failed; propagating the result immediately"
383+msgstr ""
384+
385+#: ../duplicity/asyncscheduler.py:215 ../duplicity/asyncscheduler.py:236
386+#, python-format
387+msgid "active workers = %d"
388+msgstr ""
389+
390+#: ../duplicity/asyncscheduler.py:256
391+#, python-format
392+msgid "task execution done (success: %s)"
393+msgstr ""
394+
395+#: ../duplicity/backend.py:335
396+#, python-format
397+msgid "Running '%s'"
398+msgstr ""
399+
400+#: ../duplicity/backend.py:349
401+#, python-format
402+msgid "Running '%s' (attempt #%d)"
403+msgid_plural "Running '%s' (attempt #%d)"
404+msgstr[0] ""
405+msgstr[1] ""
406+
407+#: ../duplicity/backend.py:354 ../duplicity/backend.py:395
408+#, python-format
409+msgid "Running '%s' failed (attempt #%d)"
410+msgid_plural "Running '%s' failed (attempt #%d)"
411+msgstr[0] ""
412+msgstr[1] ""
413+
414+#: ../duplicity/backend.py:357 ../duplicity/backend.py:398
415+#, python-format
416+msgid "Giving up trying to execute '%s' after %d attempt"
417+msgid_plural "Giving up trying to execute '%s' after %d attempts"
418+msgstr[0] ""
419+msgstr[1] ""
420+
421+#: ../duplicity/backend.py:368 ../duplicity/backend.py:385
422+#, python-format
423+msgid "Reading results of '%s'"
424+msgstr ""
425+
426+#: ../duplicity/collections.py:159
427+msgid "Fatal Error: No manifests found for most recent backup"
428+msgstr ""
429+
430+#: ../duplicity/collections.py:168
431+msgid ""
432+"Fatal Error: Remote manifest does not match local one. Either the remote "
433+"backup set or the local archive directory has been corrupted."
434+msgstr ""
435+
436+#: ../duplicity/collections.py:176
437+msgid "Fatal Error: Neither remote nor local manifest is readable."
438+msgstr ""
439+
440+#: ../duplicity/collections.py:280
441+msgid "Preferring Backupset over previous one!"
442+msgstr ""
443+
444+#: ../duplicity/collections.py:283
445+#, python-format
446+msgid "Ignoring incremental Backupset (start_time: %s; needed: %s)"
447+msgstr ""
448+
449+#: ../duplicity/collections.py:288
450+#, python-format
451+msgid "Added incremental Backupset (start_time: %s / end_time: %s)"
452+msgstr ""
453+
454+#: ../duplicity/collections.py:354
455+msgid "Chain start time: "
456+msgstr ""
457+
458+#: ../duplicity/collections.py:355
459+msgid "Chain end time: "
460+msgstr ""
461+
462+#: ../duplicity/collections.py:356
463+#, python-format
464+msgid "Number of contained backup sets: %d"
465+msgstr ""
466+
467+#: ../duplicity/collections.py:358
468+#, python-format
469+msgid "Total number of contained volumes: %d"
470+msgstr ""
471+
472+#: ../duplicity/collections.py:360
473+msgid "Type of backup set:"
474+msgstr ""
475+
476+#: ../duplicity/collections.py:360
477+msgid "Time:"
478+msgstr ""
479+
480+#: ../duplicity/collections.py:360
481+msgid "Num volumes:"
482+msgstr ""
483+
484+#: ../duplicity/collections.py:364
485+msgid "Full"
486+msgstr ""
487+
488+#: ../duplicity/collections.py:367
489+msgid "Incremental"
490+msgstr ""
491+
492+#: ../duplicity/collections.py:427
493+msgid "local"
494+msgstr ""
495+
496+#: ../duplicity/collections.py:429
497+msgid "remote"
498+msgstr ""
499+
500+#: ../duplicity/collections.py:581
501+msgid "Collection Status"
502+msgstr ""
503+
504+#: ../duplicity/collections.py:583
505+#, python-format
506+msgid "Connecting with backend: %s"
507+msgstr ""
508+
509+#: ../duplicity/collections.py:585
510+#, python-format
511+msgid "Archive dir: %s"
512+msgstr ""
513+
514+#: ../duplicity/collections.py:588
515+#, python-format
516+msgid "Found %d backup chain without signatures."
517+msgid_plural "Found %d backup chains without signatures."
518+msgstr[0] ""
519+msgstr[1] ""
520+
521+#: ../duplicity/collections.py:593
522+#, python-format
523+msgid "Signature-less chain %d of %d:"
524+msgstr ""
525+
526+#: ../duplicity/collections.py:599
527+msgid "Found a complete backup chain with matching signature chain:"
528+msgstr ""
529+
530+#: ../duplicity/collections.py:603
531+msgid "No backup chains with active signatures found"
532+msgstr ""
533+
534+#: ../duplicity/collections.py:606
535+#, python-format
536+msgid "Also found %d backup set not part of any chain,"
537+msgid_plural "Also found %d backup sets not part of any chain,"
538+msgstr[0] ""
539+msgstr[1] ""
540+
541+#: ../duplicity/collections.py:610
542+#, python-format
543+msgid "and %d incomplete backup set."
544+msgid_plural "and %d incomplete backup sets."
545+msgstr[0] ""
546+msgstr[1] ""
547+
548+#: ../duplicity/collections.py:614
549+msgid "These may be deleted by running duplicity with the --cleanup option."
550+msgstr ""
551+
552+#: ../duplicity/collections.py:617
553+msgid "No orphaned or incomplete backup sets found."
554+msgstr ""
555+
556+#: ../duplicity/collections.py:633
557+#, python-format
558+msgid "%d file exists on backend"
559+msgid_plural "%d files exist on backend"
560+msgstr[0] ""
561+msgstr[1] ""
562+
563+#: ../duplicity/collections.py:640
564+#, python-format
565+msgid "%d file exists in cache"
566+msgid_plural "%d files exist in cache"
567+msgstr[0] ""
568+msgstr[1] ""
569+
570+#. It matches, remove the last backup set:
571+#: ../duplicity/collections.py:692
572+msgid "Warning, discarding last backup set, because of missing signature file."
573+msgstr ""
574+
575+#: ../duplicity/collections.py:725
576+msgid "Warning, found the following local orphaned signature file:"
577+msgid_plural "Warning, found the following local orphaned signature files:"
578+msgstr[0] ""
579+msgstr[1] ""
580+
581+#: ../duplicity/collections.py:734
582+msgid "Warning, found the following remote orphaned signature file:"
583+msgid_plural "Warning, found the following remote orphaned signature files:"
584+msgstr[0] ""
585+msgstr[1] ""
586+
587+#: ../duplicity/collections.py:744
588+msgid "Warning, found an unnecessary signature chain"
589+msgid_plural "Warning, found unnecessary signature chains"
590+msgstr[0] ""
591+msgstr[1] ""
592+
593+#: ../duplicity/collections.py:752
594+msgid "Warning, found signatures but no corresponding backup files"
595+msgstr ""
596+
597+#: ../duplicity/collections.py:756
598+msgid ""
599+"Warning, found incomplete backup sets, probably left from aborted session"
600+msgstr ""
601+
602+#: ../duplicity/collections.py:760
603+msgid "Warning, found the following orphaned backup file:"
604+msgid_plural "Warning, found the following orphaned backup files:"
605+msgstr[0] ""
606+msgstr[1] ""
607+
608+#: ../duplicity/collections.py:778
609+#, python-format
610+msgid "Extracting backup chains from list of files: %s"
611+msgstr ""
612+
613+#: ../duplicity/collections.py:788
614+#, python-format
615+msgid "File %s is part of known set"
616+msgstr ""
617+
618+#: ../duplicity/collections.py:791
619+#, python-format
620+msgid "File %s is not part of a known set; creating new set"
621+msgstr ""
622+
623+#: ../duplicity/collections.py:796
624+#, python-format
625+msgid "Ignoring file (rejected by backup set) '%s'"
626+msgstr ""
627+
628+#: ../duplicity/collections.py:809
629+#, python-format
630+msgid "Found backup chain %s"
631+msgstr ""
632+
633+#: ../duplicity/collections.py:814
634+#, python-format
635+msgid "Added set %s to pre-existing chain %s"
636+msgstr ""
637+
638+#: ../duplicity/collections.py:818
639+#, python-format
640+msgid "Found orphaned set %s"
641+msgstr ""
642+
643+#: ../duplicity/commandline.py:122
644+#, python-format
645+msgid ""
646+"Warning: Option %s is pending deprecation and will be removed in a future "
647+"release.\n"
648+"Use of default filenames is strongly suggested."
649+msgstr ""
650+
651+#: ../duplicity/commandline.py:173
652+#, python-format
653+msgid "Error opening file %s"
654+msgstr ""
655+
656+#: ../duplicity/commandline.py:285
657+msgid "Unable to load gio module"
658+msgstr ""
659+
660+#: ../duplicity/commandline.py:416
661+#, python-format
662+msgid "Using archive dir: %s"
663+msgstr ""
664+
665+#: ../duplicity/commandline.py:417
666+#, python-format
667+msgid "Using backup name: %s"
668+msgstr ""
669+
670+#: ../duplicity/commandline.py:424
671+#, python-format
672+msgid "Command line error: %s"
673+msgstr ""
674+
675+#: ../duplicity/commandline.py:425
676+msgid "Enter 'duplicity --help' for help screen."
677+msgstr ""
678+
679+#: ../duplicity/commandline.py:431
680+#, python-format
681+msgid ""
682+"\n"
683+"duplicity version %s running on %s.\n"
684+"Usage:\n"
685+" duplicity [full|incremental] [options] source_dir target_url\n"
686+" duplicity [restore] [options] source_url target_dir\n"
687+" duplicity verify [options] source_url target_dir\n"
688+" duplicity collection-status [options] target_url\n"
689+" duplicity list-current-files [options] target_url\n"
690+" duplicity cleanup [options] target_url\n"
691+" duplicity remove-older-than time [options] target_url\n"
692+" duplicity remove-all-but-n-full count [options] target_url\n"
693+"\n"
694+"Backends and their URL formats:\n"
695+" cf+http://container_name\n"
696+" file:///some_dir\n"
697+" ftp://user[:password]@other.host[:port]/some_dir\n"
698+" hsi://user[:password]@other.host[:port]/some_dir\n"
699+" imap://user[:password]@other.host[:port]/some_dir\n"
700+" rsync://user[:password]@other.host[:port]::/module/some_dir\n"
701+" rsync://user[:password]@other.host[:port]/relative_path\n"
702+" rsync://user[:password]@other.host[:port]//absolute_path\n"
703+" s3://other.host/bucket_name[/prefix]\n"
704+" s3+http://bucket_name[/prefix]\n"
705+" scp://user[:password]@other.host[:port]/some_dir\n"
706+" ssh://user[:password]@other.host[:port]/some_dir\n"
707+" tahoe://alias/directory\n"
708+" webdav://user[:password]@other.host/some_dir\n"
709+" webdavs://user[:password]@other.host/some_dir\n"
710+"\n"
711+"Commands:\n"
712+" cleanup <target_url>\n"
713+" collection-status <target_url>\n"
714+" full <source_dir> <target_url>\n"
715+" incr <source_dir> <target_url>\n"
716+" list-current-files <target_url>\n"
717+" restore <target_url> <source_dir>\n"
718+" remove-older-than <time> <target_url>\n"
719+" remove-all-but-n-full <count> <target_url>\n"
720+" verify <target_url> <source_dir>\n"
721+"\n"
722+"Options:\n"
723+" --allow-source-mismatch\n"
724+" --archive-dir <path>\n"
725+" --asynchronous-upload\n"
726+" --dry-run\n"
727+" --encrypt-key <gpg-key-id>\n"
728+" --exclude <shell_pattern>\n"
729+" --exclude-device-files\n"
730+" --exclude-filelist <filename>\n"
731+" --exclude-filelist-stdin\n"
732+" --exclude-globbing-filelist <filename>\n"
733+" --exclude-other-filesystems\n"
734+" --exclude-regexp <regexp>\n"
735+" --file-to-restore <path>\n"
736+" --full-if-older-than <time>\n"
737+" --force\n"
738+" --ftp-passive\n"
739+" --ftp-regular\n"
740+" --gio\n"
741+" --gpg-options\n"
742+" --include <shell_pattern>\n"
743+" --include-filelist <filename>\n"
744+" --include-filelist-stdin\n"
745+" --include-globbing-filelist <filename>\n"
746+" --include-regexp <regexp>\n"
747+" --log-fd <fd>\n"
748+" --log-file <filename>\n"
749+" --name <backup name>\n"
750+" --no-encryption\n"
751+" --no-print-statistics\n"
752+" --null-separator\n"
753+" --num-retries <number>\n"
754+" --old-filenames\n"
755+" --s3-european-buckets\n"
756+" --s3-use-new-style\n"
757+" --scp-command <command>\n"
758+" --sftp-command <command>\n"
759+" --sign-key <gpg-key-id>\n"
760+" --ssh-askpass\n"
761+" --ssh-options\n"
762+" --short-filenames\n"
763+" --tempdir <directory>\n"
764+" --timeout <seconds>\n"
765+" -t<time>, --time <time>, --restore-time <time>\n"
766+" --time-separator <char>\n"
767+" --use-agent\n"
768+" --version\n"
769+" --volsize <number>\n"
770+" -v[0-9], --verbosity [0-9]\n"
771+" Verbosity must be one of: digit [0-9], character [ewnid],\n"
772+" or word ['error', 'warning', 'notice', 'info', 'debug'].\n"
773+" The default is 4 (Notice). It is strongly recommended\n"
774+" that verbosity level is set at 2 (Warning) or higher.\n"
775+msgstr ""
776+
777+#: ../duplicity/commandline.py:544
778+#, python-format
779+msgid "Specified archive directory '%s' does not exist, or is not a directory"
780+msgstr ""
781+
782+#: ../duplicity/commandline.py:553
783+#, python-format
784+msgid ""
785+"Sign key should be an 8 character hex string, like 'AA0E73D2'.\n"
786+"Received '%s' instead."
787+msgstr ""
788+
789+#: ../duplicity/commandline.py:611
790+#, python-format
791+msgid ""
792+"Restore destination directory %s already exists.\n"
793+"Will not overwrite."
794+msgstr ""
795+
796+#: ../duplicity/commandline.py:616
797+#, python-format
798+msgid "Verify directory %s does not exist"
799+msgstr ""
800+
801+#: ../duplicity/commandline.py:622
802+#, python-format
803+msgid "Backup source directory %s does not exist."
804+msgstr ""
805+
806+#: ../duplicity/commandline.py:694
807+#, python-format
808+msgid ""
809+"Bad URL '%s'.\n"
810+"Examples of URL strings are \"scp://user@host.net:1234/path\" and\n"
811+"\"file:///usr/local\". See the man page for more information."
812+msgstr ""
813+
814+#: ../duplicity/commandline.py:719
815+msgid "Main action: "
816+msgstr ""
817+
818+#: ../duplicity/diffdir.py:105
819+#, python-format
820+msgid "Error %s getting delta for %s"
821+msgstr ""
822+
823+#: ../duplicity/diffdir.py:119
824+#, python-format
825+msgid "Getting delta of %s and %s"
826+msgstr ""
827+
828+#: ../duplicity/diffdir.py:164
829+#, python-format
830+msgid "A %s"
831+msgstr ""
832+
833+#: ../duplicity/diffdir.py:171
834+#, python-format
835+msgid "M %s"
836+msgstr ""
837+
838+#: ../duplicity/diffdir.py:193
839+#, python-format
840+msgid "Comparing %s and %s"
841+msgstr ""
842+
843+#. but signature says it did
844+#: ../duplicity/diffdir.py:199
845+#, python-format
846+msgid "D %s"
847+msgstr ""
848+
849+#: ../duplicity/dup_time.py:48
850+#, python-format
851+msgid ""
852+"Bad interval string \"%s\"\n"
853+"\n"
854+"Intervals are specified like 2Y (2 years) or 2h30m (2.5 hours). The\n"
855+"allowed special characters are s, m, h, D, W, M, and Y. See the man\n"
856+"page for more information."
857+msgstr ""
858+
859+#: ../duplicity/dup_time.py:54
860+#, python-format
861+msgid ""
862+"Bad time string \"%s\"\n"
863+"\n"
864+"The acceptible time strings are intervals (like \"3D64s\"), w3-datetime\n"
865+"strings, like \"2002-04-26T04:22:01-07:00\" (strings like\n"
866+"\"2002-04-26T04:22:01\" are also acceptable - duplicity will use the\n"
867+"current time zone), or ordinary dates like 2/4/1997 or 2001-04-23\n"
868+"(various combinations are acceptable, but the month always precedes\n"
869+"the day)."
870+msgstr ""
871+
872+#: ../duplicity/lazy.py:326
873+#, python-format
874+msgid "Warning: oldindex %s >= newindex %s"
875+msgstr ""
876+
877+#: ../duplicity/lazy.py:401
878+#, python-format
879+msgid "Error '%s' processing %s"
880+msgstr ""
881+
882+#: ../duplicity/lazy.py:409
883+#, python-format
884+msgid "Skipping %s because of previous error"
885+msgstr ""
886+
887+#: ../duplicity/manifest.py:86
888+#, python-format
889+msgid ""
890+"Fatal Error: Backup source host has changed.\n"
891+"Current hostname: %s\n"
892+"Previous hostname: %s"
893+msgstr ""
894+
895+#: ../duplicity/manifest.py:91
896+#, python-format
897+msgid ""
898+"Fatal Error: Backup source directory has changed.\n"
899+"Current directory: %s\n"
900+"Previous directory: %s"
901+msgstr ""
902+
903+#: ../duplicity/manifest.py:98
904+msgid ""
905+"Aborting because you may have accidentally tried to backup two different "
906+"data sets to the same remote location, or using the same archive directory. "
907+"If this is not a mistake, use the --allow-source-mismatch switch to avoid "
908+"seeing this message"
909+msgstr ""
910+
911+#: ../duplicity/manifest.py:181
912+msgid "Manifests not equal because different volume numbers"
913+msgstr ""
914+
915+#: ../duplicity/manifest.py:186
916+msgid "Manifests not equal because volume lists differ"
917+msgstr ""
918+
919+#: ../duplicity/manifest.py:191
920+msgid "Manifests not equal because hosts or directories differ"
921+msgstr ""
922+
923+#: ../duplicity/manifest.py:338
924+msgid "Warning, found extra Volume identifier"
925+msgstr ""
926+
927+#: ../duplicity/manifest.py:364
928+msgid "Other is not VolumeInfo"
929+msgstr ""
930+
931+#: ../duplicity/manifest.py:367
932+msgid "Volume numbers don't match"
933+msgstr ""
934+
935+#: ../duplicity/manifest.py:370
936+msgid "start_indicies don't match"
937+msgstr ""
938+
939+#: ../duplicity/manifest.py:373
940+msgid "end_index don't match"
941+msgstr ""
942+
943+#: ../duplicity/manifest.py:380
944+msgid "Hashes don't match"
945+msgstr ""
946+
947+#: ../duplicity/misc.py:99
948+#, python-format
949+msgid "Starting to write %s"
950+msgstr ""
951+
952+#. special case first index
953+#: ../duplicity/misc.py:107
954+#, python-format
955+msgid ""
956+"One only volume required.\n"
957+"Renaming %s to %s"
958+msgstr ""
959+
960+#: ../duplicity/patchdir.py:72 ../duplicity/patchdir.py:77
961+#, python-format
962+msgid "Patching %s"
963+msgstr ""
964+
965+#: ../duplicity/patchdir.py:565
966+#, python-format
967+msgid "Writing %s of type %s"
968+msgstr ""
969+
970+#: ../duplicity/path.py:208 ../duplicity/path.py:267
971+#, python-format
972+msgid "Warning: %s has negative mtime, treating as 0."
973+msgstr ""
974+
975+#: ../duplicity/path.py:332
976+msgid "Difference found:"
977+msgstr ""
978+
979+#: ../duplicity/path.py:338
980+#, python-format
981+msgid "New file %s"
982+msgstr ""
983+
984+#: ../duplicity/path.py:341
985+#, python-format
986+msgid "File %s is missing"
987+msgstr ""
988+
989+#: ../duplicity/path.py:344
990+#, python-format
991+msgid "File %%s has type %s, expected %s"
992+msgstr ""
993+
994+#: ../duplicity/path.py:350 ../duplicity/path.py:376
995+#, python-format
996+msgid "File %%s has permissions %o, expected %o"
997+msgstr ""
998+
999+#: ../duplicity/path.py:355
1000+#, python-format
1001+msgid "File %%s has mtime %s, expected %s"
1002+msgstr ""
1003+
1004+#: ../duplicity/path.py:363
1005+#, python-format
1006+msgid "Data for file %s is different"
1007+msgstr ""
1008+
1009+#: ../duplicity/path.py:371
1010+#, python-format
1011+msgid "Symlink %%s points to %s, expected %s"
1012+msgstr ""
1013+
1014+#: ../duplicity/path.py:380
1015+#, python-format
1016+msgid "Device file %%s has numbers %s, expected %s"
1017+msgstr ""
1018+
1019+#: ../duplicity/path.py:526
1020+#, python-format
1021+msgid "Making directory %s"
1022+msgstr ""
1023+
1024+#: ../duplicity/path.py:536
1025+#, python-format
1026+msgid "Deleting %s"
1027+msgstr ""
1028+
1029+#: ../duplicity/path.py:545
1030+#, python-format
1031+msgid "Touching %s"
1032+msgstr ""
1033+
1034+#. todo: avoid circ. dep. issue
1035+#: ../duplicity/path.py:552
1036+#, python-format
1037+msgid "Deleting tree %s"
1038+msgstr ""
1039+
1040+#: ../duplicity/robust.py:60
1041+#, python-format
1042+msgid "Error listing directory %s"
1043+msgstr ""
1044+
1045+#: ../duplicity/selection.py:118
1046+#, python-format
1047+msgid "Skipping socket %s/%s"
1048+msgstr ""
1049+
1050+#: ../duplicity/selection.py:120
1051+#, python-format
1052+msgid "Error initializing file %s/%s"
1053+msgstr ""
1054+
1055+#: ../duplicity/selection.py:122
1056+#, python-format
1057+msgid "Error accessing possibly locked file %s/%s"
1058+msgstr ""
1059+
1060+#: ../duplicity/selection.py:141
1061+#, python-format
1062+msgid "Error accessing possibly locked file %s"
1063+msgstr ""
1064+
1065+#. base doesn't exist
1066+#: ../duplicity/selection.py:154
1067+#, python-format
1068+msgid "Warning: base %s doesn't exist, continuing"
1069+msgstr ""
1070+
1071+#: ../duplicity/selection.py:157 ../duplicity/selection.py:175
1072+#: ../duplicity/selection.py:178
1073+#, python-format
1074+msgid "Selecting %s"
1075+msgstr ""
1076+
1077+#: ../duplicity/selection.py:259
1078+#, python-format
1079+msgid ""
1080+"Fatal Error: The file specification\n"
1081+" %s\n"
1082+"cannot match any files in the base directory\n"
1083+" %s\n"
1084+"Useful file specifications begin with the base directory or some\n"
1085+"pattern (such as '**') which matches the base directory."
1086+msgstr ""
1087+
1088+#: ../duplicity/selection.py:267
1089+#, python-format
1090+msgid ""
1091+"Fatal Error while processing expression\n"
1092+"%s"
1093+msgstr ""
1094+
1095+#: ../duplicity/selection.py:277
1096+#, python-format
1097+msgid ""
1098+"Last selection expression:\n"
1099+" %s\n"
1100+"only specifies that files be included. Because the default is to\n"
1101+"include all files, the expression is redundant. Exiting because this\n"
1102+"probably isn't what you meant."
1103+msgstr ""
1104+
1105+#: ../duplicity/selection.py:302
1106+#, python-format
1107+msgid "Reading filelist %s"
1108+msgstr ""
1109+
1110+#: ../duplicity/selection.py:305
1111+#, python-format
1112+msgid "Sorting filelist %s"
1113+msgstr ""
1114+
1115+#: ../duplicity/selection.py:332
1116+#, python-format
1117+msgid ""
1118+"Warning: file specification '%s' in filelist %s\n"
1119+"doesn't start with correct prefix %s. Ignoring."
1120+msgstr ""
1121+
1122+#: ../duplicity/selection.py:336
1123+msgid "Future prefix errors will not be logged."
1124+msgstr ""
1125+
1126+#: ../duplicity/selection.py:352
1127+#, python-format
1128+msgid "Error closing filelist %s"
1129+msgstr ""
1130+
1131+#: ../duplicity/selection.py:419
1132+#, python-format
1133+msgid "Reading globbing filelist %s"
1134+msgstr ""
1135+
1136+#: ../duplicity/selection.py:452
1137+#, python-format
1138+msgid "Error compiling regular expression %s"
1139+msgstr ""
1140+
1141+#: ../duplicity/selection.py:468
1142+msgid ""
1143+"Warning: exclude-device-files is not the first selector.\n"
1144+"This may not be what you intended"
1145+msgstr ""
1146+
1147+#: ../duplicity/tempdir.py:118
1148+#, python-format
1149+msgid "Using temporary directory %s"
1150+msgstr ""
1151+
1152+#: ../duplicity/tempdir.py:156
1153+#, python-format
1154+msgid "Registering (mktemp) temporary file %s"
1155+msgstr ""
1156+
1157+#: ../duplicity/tempdir.py:178
1158+#, python-format
1159+msgid "Registering (mkstemp) temporary file %s"
1160+msgstr ""
1161+
1162+#: ../duplicity/tempdir.py:210
1163+#, python-format
1164+msgid "Forgetting temporary file %s"
1165+msgstr ""
1166+
1167+#: ../duplicity/tempdir.py:213
1168+#, python-format
1169+msgid "Attempt to forget unknown tempfile %s - this is probably a bug."
1170+msgstr ""
1171+
1172+#: ../duplicity/tempdir.py:232
1173+#, python-format
1174+msgid "Removing still remembered temporary file %s"
1175+msgstr ""
1176+
1177+#: ../duplicity/tempdir.py:235
1178+#, python-format
1179+msgid "Cleanup of temporary file %s failed"
1180+msgstr ""
1181+
1182+#: ../duplicity/tempdir.py:240
1183+#, python-format
1184+msgid "Cleanup of temporary directory %s failed - this is probably a bug."
1185+msgstr ""
1186+
1187+#: ../duplicity/backends/giobackend.py:87
1188+#, python-format
1189+msgid "Connection failed, please check your password: %s"
1190+msgstr ""
1191+
1192+#: ../duplicity/backends/giobackend.py:96
1193+#, python-format
1194+msgid "Writing %s"
1195+msgstr ""
1196+
1197+#: ../duplicity/backends/giobackend.py:106
1198+#, python-format
1199+msgid "Could not copy %s to %s"
1200+msgstr ""
1201
1202=== removed directory 'po/io'
1203=== renamed file 'po/io/duplicity.po' => 'po/io.po'
1204=== removed file 'po/io/duplicity.mo'
1205Binary files po/io/duplicity.mo 2008-12-29 14:50:41 +0000 and po/io/duplicity.mo 1970-01-01 00:00:00 +0000 differ
1206=== added file 'po/update-pot'
1207--- po/update-pot 1970-01-01 00:00:00 +0000
1208+++ po/update-pot 2009-07-02 21:51:53 +0000
1209@@ -0,0 +1,3 @@
1210+#!/bin/sh
1211+
1212+intltool-update --pot -g duplicity

Subscribers

People subscribed via source and target branches

to all changes: