]> git.sur5r.net Git - bacula/bacula/commitdiff
Mark translatable strings in all source files.
authorNicolas Boichat <nicolas@boichat.ch>
Wed, 10 Aug 2005 16:35:38 +0000 (16:35 +0000)
committerNicolas Boichat <nicolas@boichat.ch>
Wed, 10 Aug 2005 16:35:38 +0000 (16:35 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@2302 91ce42f0-d328-0410-95d8-f526ca767f89

138 files changed:
bacula/autoconf/configure.in
bacula/configure
bacula/nb-1.37
bacula/po/POTFILES.in
bacula/po/bacula.pot
bacula/po/fr.gmo
bacula/po/fr.po
bacula/po/it.gmo
bacula/po/it.po
bacula/src/baconfig.h
bacula/src/console/authenticate.c
bacula/src/console/console.c
bacula/src/console/console_conf.c
bacula/src/dird/authenticate.c
bacula/src/dird/backup.c
bacula/src/dird/catreq.c
bacula/src/dird/dird.c
bacula/src/dird/dird_conf.c
bacula/src/dird/fd_cmds.c
bacula/src/dird/getmsg.c
bacula/src/dird/inc_conf.c
bacula/src/dird/job.c
bacula/src/dird/jobq.c
bacula/src/dird/mac.c
bacula/src/dird/msgchan.c
bacula/src/dird/next_vol.c
bacula/src/dird/pythondir.c
bacula/src/dird/recycle.c
bacula/src/dird/restore.c
bacula/src/dird/run_conf.c
bacula/src/dird/scheduler.c
bacula/src/dird/ua_cmds.c
bacula/src/dird/ua_dotcmds.c
bacula/src/dird/ua_input.c
bacula/src/dird/ua_label.c
bacula/src/dird/ua_output.c
bacula/src/dird/ua_prune.c
bacula/src/dird/ua_purge.c
bacula/src/dird/ua_query.c
bacula/src/dird/ua_restore.c
bacula/src/dird/ua_run.c
bacula/src/dird/ua_select.c
bacula/src/dird/ua_status.c
bacula/src/dird/ua_tree.c
bacula/src/dird/ua_update.c
bacula/src/dird/verify.c
bacula/src/filed/authenticate.c
bacula/src/filed/backup.c
bacula/src/filed/filed.c
bacula/src/filed/filed_conf.c
bacula/src/filed/job.c
bacula/src/filed/pythonfd.c
bacula/src/filed/restore.c
bacula/src/filed/status.c
bacula/src/filed/verify.c
bacula/src/findlib/bfile.c
bacula/src/findlib/create_file.c
bacula/src/findlib/enable_priv.c
bacula/src/findlib/match.c
bacula/src/findlib/save-cwd.c
bacula/src/gnome2-console/console.c
bacula/src/gnome2-console/console_conf.c
bacula/src/gnome2-console/interface.c
bacula/src/gnome2-console/restore.c
bacula/src/gnome2-console/support.c
bacula/src/lib/address_conf.c
bacula/src/lib/berrno.c
bacula/src/lib/bget_msg.c
bacula/src/lib/bnet.c
bacula/src/lib/bnet_server.c
bacula/src/lib/bpipe.c
bacula/src/lib/bshm.c
bacula/src/lib/bsys.c
bacula/src/lib/btimers.c
bacula/src/lib/cram-md5.c
bacula/src/lib/daemon.c
bacula/src/lib/events.c
bacula/src/lib/jcr.c
bacula/src/lib/lex.c
bacula/src/lib/mem_pool.c
bacula/src/lib/message.c
bacula/src/lib/parse_conf.c
bacula/src/lib/pythonlib.c
bacula/src/lib/regex.c
bacula/src/lib/res.c
bacula/src/lib/rwlock.c
bacula/src/lib/semlock.c
bacula/src/lib/signal.c
bacula/src/lib/smartall.c
bacula/src/lib/tls.c
bacula/src/lib/util.c
bacula/src/lib/var.c
bacula/src/lib/watchdog.c
bacula/src/stored/ansi_label.c
bacula/src/stored/append.c
bacula/src/stored/askdir.c
bacula/src/stored/authenticate.c
bacula/src/stored/autochanger.c
bacula/src/stored/bcopy.c
bacula/src/stored/bextract.c
bacula/src/stored/block.c
bacula/src/stored/bls.c
bacula/src/stored/bscan.c
bacula/src/stored/btape.c
bacula/src/stored/butil.c
bacula/src/stored/dev.c
bacula/src/stored/device.c
bacula/src/stored/dircmd.c
bacula/src/stored/dvd.c
bacula/src/stored/job.c
bacula/src/stored/label.c
bacula/src/stored/mount.c
bacula/src/stored/parse_bsr.c
bacula/src/stored/pythonsd.c
bacula/src/stored/read.c
bacula/src/stored/read_record.c
bacula/src/stored/record.c
bacula/src/stored/reserve.c
bacula/src/stored/spool.c
bacula/src/stored/status.c
bacula/src/stored/stored.c
bacula/src/stored/stored_conf.c
bacula/src/tools/bsmtp.c
bacula/src/tools/dbcheck.c
bacula/src/tools/fstype.c
bacula/src/tools/testfind.c
bacula/src/tools/testls.c
bacula/src/tray-monitor/tray-monitor.c
bacula/src/tray-monitor/tray_conf.c
bacula/src/wx-console/authenticate.c
bacula/src/wx-console/console_conf.c
bacula/src/wx-console/console_thread.cpp
bacula/src/wx-console/main.cpp
bacula/src/wx-console/wxbconfigfileeditor.cpp
bacula/src/wx-console/wxbconfigpanel.cpp
bacula/src/wx-console/wxbhistorytextctrl.cpp
bacula/src/wx-console/wxbmainframe.cpp
bacula/src/wx-console/wxbrestorepanel.cpp

index ebefbdce732a38774dcd8a465921cc8d93087098..5d33d51208c7047668e6d7e9c81bb3d16efd6421 100644 (file)
@@ -118,8 +118,8 @@ dnl --------------------------------------------------
 dnl Suppport for gettext (translations)
 dnl --------------------------------------------------
 AM_GNU_GETTEXT([external])
-localedir=${prefix}/locale
-LOCAL_DEFS="$LOCAL_DEFS -DLOCALEDIR=\"${localedir}\""
+localedir=${datadir}/locale
+LOCAL_DEFS="$LOCAL_DEFS -DLOCALEDIR=\"\\\"${localedir}\\\"\""
 
 # ------------------------------------------------------------------
 #  If the user has not set --prefix, we set our default to nothing.
index 25bf6e4e67f900b8b50828320a03e3f9cf291c0e..4509ca56467d789b4b514ecc031cf655181dc35c 100755 (executable)
@@ -6660,8 +6660,8 @@ _ACEOF
 
 
 
-localedir=${prefix}/locale
-LOCAL_DEFS="$LOCAL_DEFS -DLOCALEDIR=\"${localedir}\""
+localedir=${datadir}/locale
+LOCAL_DEFS="$LOCAL_DEFS -DLOCALEDIR=\"\\\"${localedir}\\\"\""
 
 # ------------------------------------------------------------------
 #  If the user has not set --prefix, we set our default to nothing.
index 43f20e00ab44c52407de5c86d11368be63cb2e8f..76b20894ec24eb8bcf63c758949da6b2271273b0 100644 (file)
@@ -4,6 +4,8 @@
 General:
 
 Changes to 1.37.*:
+10Aug05
+ - Mark translatable strings in all source files.
 08Aug05
  - Create French and Italian translation files (fr.po, it.po).
  - Add support for translation in configure and Makefiles.
index 2a9810eab0cd369e298cb24407ad2016d6df46ea..1feb607bda05b1b029cabde948139f8d059aa475 100644 (file)
@@ -1,7 +1,6 @@
 # List of source files containing translatable strings.
 # To generate this file, type 'make gen-potfiles'
 ./platforms/freebsd/tapetest.c
-./po/cat-id-tbl.c
 ./src/cats/bdb.c
 ./src/cats/bdb_create.c
 ./src/cats/bdb_delete.c
index a6ebcd943410f1f207a86d6d55f7af445c783f69..fbede1c371121e3bee5b459cef0c94615c6b3ab6 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: bacula-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2005-08-08 17:56+0200\n"
+"POT-Creation-Date: 2005-08-10 18:10+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -160,10 +160,10 @@ msgstr ""
 msgid "Create DB Job record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:91 src/dird/expand.c:145 src/dird/ua_cmds.c:422
-#: src/dird/ua_prune.c:455 src/dird/ua_purge.c:171 src/dird/ua_run.c:643
-#: src/dird/ua_select.c:228 src/dird/ua_select.c:249 src/dird/pythondir.c:61
-#: src/stored/pythonsd.c:58
+#: src/cats/sql_create.c:91 src/dird/dird_conf.c:532 src/dird/expand.c:145
+#: src/dird/ua_cmds.c:422 src/dird/ua_prune.c:455 src/dird/ua_purge.c:171
+#: src/dird/ua_run.c:643 src/dird/ua_select.c:228 src/dird/ua_select.c:249
+#: src/dird/pythondir.c:61 src/stored/pythonsd.c:58
 msgid "Job"
 msgstr ""
 
@@ -190,6 +190,10 @@ msgstr ""
 #: src/cats/sql_create.c:201 src/dird/expand.c:152 src/dird/ua_run.c:650
 #: src/dird/ua_select.c:464 src/dird/ua_select.c:554 src/dird/ua_update.c:356
 #: src/dird/ua_update.c:426 src/dird/pythondir.c:67 src/stored/pythonsd.c:64
+#: src/wx-console/wxbrestorepanel.cpp:362
+#: src/wx-console/wxbrestorepanel.cpp:548
+#: src/wx-console/wxbrestorepanel.cpp:558
+#: src/wx-console/wxbrestorepanel.cpp:1754
 msgid "Pool"
 msgstr ""
 
@@ -222,9 +226,17 @@ msgstr ""
 msgid "Create DB Storage record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:306 src/dird/expand.c:153 src/dird/ua_cmds.c:829
-#: src/dird/ua_run.c:642 src/dird/ua_select.c:152 src/dird/ua_status.c:128
-#: src/dird/pythondir.c:68
+#: src/cats/sql_create.c:306 src/dird/expand.c:153 src/dird/ua_run.c:642
+#: src/dird/ua_select.c:152 src/dird/ua_status.c:128 src/dird/pythondir.c:68
+#: src/wx-console/wxbrestorepanel.cpp:363
+#: src/wx-console/wxbrestorepanel.cpp:379
+#: src/wx-console/wxbrestorepanel.cpp:500
+#: src/wx-console/wxbrestorepanel.cpp:501
+#: src/wx-console/wxbrestorepanel.cpp:511
+#: src/wx-console/wxbrestorepanel.cpp:512
+#: src/wx-console/wxbrestorepanel.cpp:1116
+#: src/wx-console/wxbrestorepanel.cpp:1765
+#: src/wx-console/wxbrestorepanel.cpp:1831
 msgid "Storage"
 msgstr ""
 
@@ -272,10 +284,23 @@ msgstr ""
 msgid "Create DB Client record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:507 src/dird/expand.c:150 src/dird/ua_cmds.c:830
-#: src/dird/ua_purge.c:173 src/dird/ua_purge.c:178 src/dird/ua_run.c:645
-#: src/dird/ua_select.c:272 src/dird/ua_select.c:379 src/dird/ua_status.c:129
-#: src/dird/pythondir.c:65 src/filed/pythonfd.c:77 src/stored/pythonsd.c:63
+#: src/cats/sql_create.c:507 src/dird/expand.c:150 src/dird/ua_purge.c:173
+#: src/dird/ua_purge.c:178 src/dird/ua_run.c:645 src/dird/ua_select.c:272
+#: src/dird/ua_select.c:379 src/dird/ua_status.c:129 src/dird/pythondir.c:65
+#: src/filed/pythonfd.c:77 src/stored/pythonsd.c:63
+#: src/wx-console/wxbrestorepanel.cpp:360
+#: src/wx-console/wxbrestorepanel.cpp:378
+#: src/wx-console/wxbrestorepanel.cpp:452
+#: src/wx-console/wxbrestorepanel.cpp:453
+#: src/wx-console/wxbrestorepanel.cpp:463
+#: src/wx-console/wxbrestorepanel.cpp:464
+#: src/wx-console/wxbrestorepanel.cpp:707
+#: src/wx-console/wxbrestorepanel.cpp:1086
+#: src/wx-console/wxbrestorepanel.cpp:1173
+#: src/wx-console/wxbrestorepanel.cpp:1758
+#: src/wx-console/wxbrestorepanel.cpp:1760
+#: src/wx-console/wxbrestorepanel.cpp:1829
+#: src/wx-console/wxbrestorepanel.cpp:1884
 msgid "Client"
 msgstr ""
 
@@ -299,7 +324,7 @@ msgstr ""
 msgid "Create DB FileSet record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:618 src/dird/ua_restore.c:1010 src/dird/ua_run.c:644
+#: src/cats/sql_create.c:618 src/dird/ua_restore.c:1035 src/dird/ua_run.c:644
 #: src/dird/ua_select.c:173
 msgid "FileSet"
 msgstr ""
@@ -314,7 +339,7 @@ msgstr ""
 msgid "Create db File record %s failed. ERR=%s"
 msgstr ""
 
-#: src/cats/sql_create.c:738
+#: src/cats/sql_create.c:738 src/gnome2-console/restore.c:121
 msgid "File"
 msgstr ""
 
@@ -347,7 +372,7 @@ msgstr ""
 msgid "Create db Filename record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:856
+#: src/cats/sql_create.c:856 src/wx-console/wxbrestorepanel.cpp:314
 msgid "Filename"
 msgstr ""
 
@@ -590,7 +615,7 @@ msgstr ""
 msgid "Unable to open Database=%s. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:162
+#: src/cats/sqlite.c:162 src/lib/bnet_server.c:378
 msgid "unknown"
 msgstr ""
 
@@ -609,6 +634,15 @@ msgstr ""
 msgid "next_index update error: ERR=%s\n"
 msgstr ""
 
+#: src/console/authenticate.c:41
+#, c-format
+msgid "Hello %s calling\n"
+msgstr ""
+
+#: src/console/authenticate.c:44
+msgid "1000 OK:"
+msgstr ""
+
 #: src/console/authenticate.c:104 src/dird/authenticate.c:106
 #: src/dird/authenticate.c:206 src/filed/authenticate.c:124
 #: src/filed/authenticate.c:220 src/stored/authenticate.c:128
@@ -636,7 +670,7 @@ msgid "Bad response to Hello command: ERR=%s\n"
 msgstr ""
 
 #: src/console/authenticate.c:140 src/gnome2-console/authenticate.c:95
-#: src/tray-monitor/authenticate.c:94
+#: src/tray-monitor/authenticate.c:94 src/wx-console/authenticate.c:133
 msgid "Director rejected Hello command\n"
 msgstr ""
 
@@ -650,7 +684,7 @@ msgid ""
 "help.\n"
 msgstr ""
 
-#: src/console/console.c:102 src/filed/filed.c:62
+#: src/console/console.c:102
 #, c-format
 msgid ""
 "Copyright (C) 2000-2005 Kern Sibbald\n"
@@ -658,13 +692,7 @@ msgid ""
 "Version: "
 msgstr ""
 
-#: src/console/console.c:103 src/dird/admin.c:108 src/dird/backup.c:489
-#: src/dird/dird.c:72 src/dird/mac.c:377 src/dird/restore.c:275
-#: src/dird/verify.c:415 src/dird/verify.c:448 src/filed/filed.c:63
-#: src/gnome2-console/console.c:89 src/stored/bcopy.c:59
-#: src/stored/bscan.c:110 src/stored/btape.c:2541 src/stored/stored.c:66
-#: src/tray-monitor/tray-monitor.c:104 src/tray-monitor/tray-monitor.c:499
-#: src/tray-monitor/tray-monitor.c:506
+#: src/console/console.c:103 src/dird/admin.c:108
 #, c-format
 msgid " ("
 msgstr ""
@@ -700,6 +728,7 @@ msgid "output to file"
 msgstr ""
 
 #: src/console/console.c:152 src/dird/ua_cmds.c:106 src/dird/ua_tree.c:72
+#: src/stored/btape.c:2536
 msgid "quit"
 msgstr ""
 
@@ -755,110 +784,148 @@ msgstr ""
 msgid ": is an illegal command\n"
 msgstr ""
 
-#: src/console/console.c:397 src/dird/dird.c:193 src/filed/filed.c:180
-#: src/gnome2-console/console.c:267 src/stored/stored.c:186
-#: src/wx-console/console_thread.cpp:231
+#: src/console/console.c:400 src/dird/dird.c:196 src/filed/filed.c:183
+#: src/gnome2-console/console.c:271 src/stored/stored.c:189
+#: src/wx-console/console_thread.cpp:230
 msgid "TLS library initialization failed.\n"
 msgstr ""
 
-#: src/console/console.c:401 src/dird/dird.c:197 src/dird/dird.c:407
-#: src/dird/dird.c:410 src/filed/filed.c:185 src/gnome2-console/console.c:271
-#: src/stored/stored.c:190
+#: src/console/console.c:404 src/dird/dird.c:200 src/dird/dird.c:410
+#: src/dird/dird.c:413 src/filed/filed.c:188 src/gnome2-console/console.c:275
+#: src/stored/stored.c:193
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr ""
 
-#: src/console/console.c:418
+#: src/console/console.c:421
 msgid "Available Directors:\n"
 msgstr ""
 
-#: src/console/console.c:422
+#: src/console/console.c:425
 #, c-format
 msgid "%d  %s at %s:%d\n"
 msgstr ""
 
-#: src/console/console.c:426
+#: src/console/console.c:429
 msgid "Select Director: "
 msgstr ""
 
-#: src/console/console.c:432
+#: src/console/console.c:435
 #, c-format
 msgid "You must enter a number between 1 and %d\n"
 msgstr ""
 
-#: src/console/console.c:452
+#: src/console/console.c:455 src/tray-monitor/tray-monitor.c:858
 #, c-format
 msgid "Connecting to Director %s:%d\n"
 msgstr ""
 
-#: src/console/console.c:468 src/gnome2-console/console.c:504
-#: src/wx-console/console_thread.cpp:365
+#: src/console/console.c:471 src/gnome2-console/console.c:508
+#: src/wx-console/console_thread.cpp:364
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
-#: src/console/console.c:489 src/gnome2-console/console.c:526
-#: src/wx-console/console_thread.cpp:386
+#: src/console/console.c:492 src/gnome2-console/console.c:530
+#: src/wx-console/console_thread.cpp:385
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
 
-#: src/console/console.c:512
+#: src/console/console.c:515
 msgid "Enter a period to cancel a command.\n"
 msgstr ""
 
-#: src/console/console.c:579 src/console/console.c:608 src/dird/dird.c:493
-#: src/dird/dird.c:708 src/dird/dird.c:774 src/dird/dird.c:826
-#: src/filed/filed.c:299 src/filed/filed.c:345
+#: src/console/console.c:582 src/console/console.c:611 src/dird/dird.c:496
+#: src/dird/dird.c:711 src/dird/dird.c:777 src/dird/dird.c:829
+#: src/filed/filed.c:302 src/filed/filed.c:348
 #: src/gnome2-console/console.c:140 src/gnome2-console/console.c:169
-#: src/stored/stored.c:307 src/wx-console/console_thread.cpp:93
+#: src/stored/stored.c:310 src/wx-console/console_thread.cpp:93
 #: src/wx-console/console_thread.cpp:122
 msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/console/console.c:586 src/gnome2-console/console.c:147
+#: src/console/console.c:589 src/gnome2-console/console.c:147
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/console/console.c:595 src/gnome2-console/console.c:156
+#: src/console/console.c:598 src/gnome2-console/console.c:156
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/console/console.c:615 src/gnome2-console/console.c:176
+#: src/console/console.c:618 src/gnome2-console/console.c:176
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/console/console.c:760
+#: src/console/console.c:763
 msgid "Too many arguments on input command.\n"
 msgstr ""
 
-#: src/console/console.c:764
+#: src/console/console.c:767
 msgid "First argument to input command must be a filename.\n"
 msgstr ""
 
-#: src/console/console.c:769
+#: src/console/console.c:772
 #, c-format
 msgid "Cannot open file %s for input. ERR=%s\n"
 msgstr ""
 
-#: src/console/console.c:799
+#: src/console/console.c:802
 msgid "Too many arguments on output/tee command.\n"
 msgstr ""
 
-#: src/console/console.c:815
+#: src/console/console.c:818
 #, c-format
 msgid "Cannot open file %s for output. ERR=%s\n"
 msgstr ""
 
+#: src/console/console_conf.c:123 src/gnome2-console/console_conf.c:122
+#: src/wx-console/console_conf.c:124
+#, c-format
+msgid "No record for %d %s\n"
+msgstr ""
+
+#: src/console/console_conf.c:132 src/wx-console/console_conf.c:133
+#, c-format
+msgid "Console: name=%s rcfile=%s histfile=%s\n"
+msgstr ""
+
+#: src/console/console_conf.c:136 src/gnome2-console/console_conf.c:131
+#: src/wx-console/console_conf.c:137
+#, c-format
+msgid "Director: name=%s address=%s DIRport=%d\n"
+msgstr ""
+
+#: src/console/console_conf.c:140 src/console/console_conf.c:216
+#: src/console/console_conf.c:261 src/console/console_conf.c:288
+#: src/filed/filed_conf.c:268 src/filed/filed_conf.c:327
+#: src/filed/filed_conf.c:357 src/gnome2-console/console_conf.c:142
+#: src/gnome2-console/console_conf.c:220 src/gnome2-console/console_conf.c:268
+#: src/gnome2-console/console_conf.c:298 src/stored/stored_conf.c:467
+#: src/stored/stored_conf.c:555 src/stored/stored_conf.c:590
+#: src/wx-console/console_conf.c:141 src/wx-console/console_conf.c:216
+#: src/wx-console/console_conf.c:261 src/wx-console/console_conf.c:288
+#, c-format
+msgid "Unknown resource type %d\n"
+msgstr ""
+
+#: src/console/console_conf.c:242 src/dird/dird_conf.c:1109
+#: src/dird/dird_conf.c:1124 src/filed/filed_conf.c:296
+#: src/gnome2-console/console_conf.c:246 src/tray-monitor/tray_conf.c:262
+#: src/wx-console/console_conf.c:242
+#, c-format
+msgid "%s item is required in %s resource, but not found.\n"
+msgstr ""
+
 #: src/console/console_conf.c:304 src/dird/dird_conf.c:1296
 #: src/filed/filed_conf.c:374 src/gnome2-console/console_conf.c:314
 #: src/tray-monitor/tray_conf.c:341 src/wx-console/console_conf.c:304
@@ -894,8 +961,7 @@ msgstr ""
 msgid "Inappropriate term code: %c\n"
 msgstr ""
 
-#: src/dird/admin.c:108 src/dird/backup.c:489 src/dird/mac.c:377
-#: src/dird/restore.c:275 src/dird/verify.c:415 src/dird/verify.c:448
+#: src/dird/admin.c:108
 msgid "Bacula "
 msgstr ""
 
@@ -932,6 +998,9 @@ msgid ""
 msgstr ""
 
 #: src/dird/authenticate.c:123 src/dird/authenticate.c:223
+#: src/dird/authenticate.c:356 src/filed/authenticate.c:141
+#: src/filed/authenticate.c:237 src/stored/authenticate.c:145
+#: src/stored/authenticate.c:249
 msgid "TLS negotiation failed.\n"
 msgstr ""
 
@@ -1000,6 +1069,11 @@ msgstr ""
 msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
 msgstr ""
 
+#: src/dird/authenticate.c:373
+#, c-format
+msgid "1000 OK: %s Version: %s (%s)\n"
+msgstr ""
+
 #: src/dird/autoprune.c:57
 msgid "Begin pruning Jobs.\n"
 msgstr ""
@@ -1079,22 +1153,22 @@ msgstr ""
 msgid "Backup OK -- with warnings"
 msgstr ""
 
-#: src/dird/backup.c:424 src/dird/mac.c:313 src/stored/bscan.c:1045
+#: src/dird/backup.c:424 src/dird/mac.c:313 src/stored/bscan.c:1054
 msgid "Backup OK"
 msgstr ""
 
-#: src/dird/backup.c:429 src/dird/mac.c:318 src/stored/bscan.c:1049
+#: src/dird/backup.c:429 src/dird/mac.c:318 src/stored/bscan.c:1058
 msgid "*** Backup Error ***"
 msgstr ""
 
-#: src/dird/backup.c:439 src/dird/mac.c:328 src/stored/bscan.c:1052
+#: src/dird/backup.c:439 src/dird/mac.c:328 src/stored/bscan.c:1061
 msgid "Backup Canceled"
 msgstr ""
 
 #: src/dird/backup.c:489
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Backup Level:           %s%s\n"
@@ -1156,22 +1230,58 @@ msgstr ""
 msgid "No Volumes found to restore.\n"
 msgstr ""
 
+#: src/dird/catreq.c:109 src/dird/catreq.c:298
+#, c-format
+msgid "1990 Invalid Catalog Request: %s"
+msgstr ""
+
 #: src/dird/catreq.c:110
 #, c-format
 msgid "Invalid Catalog request; DB not open: %s"
 msgstr ""
 
+#: src/dird/catreq.c:131
+msgid "1901 No Media.\n"
+msgstr ""
+
+#: src/dird/catreq.c:159
+msgid "not in Pool"
+msgstr ""
+
+#: src/dird/catreq.c:161
+msgid "not correct MediaType"
+msgstr ""
+
+#: src/dird/catreq.c:187
+#, c-format
+msgid "1998 Volume \"%s\" status is %s, %s.\n"
+msgstr ""
+
+#: src/dird/catreq.c:192
+#, c-format
+msgid "1997 Volume \"%s\" not in catalog.\n"
+msgstr ""
+
 #: src/dird/catreq.c:213
 #, c-format
 msgid "Unable to get Media record for Volume %s: ERR=%s\n"
 msgstr ""
 
+#: src/dird/catreq.c:215
+#, c-format
+msgid "1991 Catalog Request for vol=%s failed: %s"
+msgstr ""
+
 #: src/dird/catreq.c:235
 #, c-format
 msgid ""
 "Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
 msgstr ""
 
+#: src/dird/catreq.c:238 src/dird/catreq.c:270
+msgid "1992 Update Media error\n"
+msgstr ""
+
 #: src/dird/catreq.c:268
 #, c-format
 msgid "Catalog error updating Media record. %s"
@@ -1182,28 +1292,30 @@ msgstr ""
 msgid "Catalog error creating JobMedia record. %s"
 msgstr ""
 
+#: src/dird/catreq.c:289
+msgid "1991 Update JobMedia error\n"
+msgstr ""
+
 #: src/dird/catreq.c:299
 #, c-format
 msgid "Invalid Catalog request: %s"
 msgstr ""
 
+#: src/dird/catreq.c:398
+msgid "Got MD5/SHA1 but not same File as attributes\n"
+msgstr ""
+
 #: src/dird/catreq.c:422
 #, c-format
 msgid "Catalog error updating MD5/SHA1. %s"
 msgstr ""
 
-#: src/dird/dird.c:71 src/stored/btape.c:2540 src/stored/stored.c:65
+#: src/dird/dird.c:71
 #, c-format
 msgid ""
 "Copyright (C) 2000-2005 Kern Sibbald.\n"
 "\n"
-"Version: "
-msgstr ""
-
-#: src/dird/dird.c:72
-#, c-format
-msgid ""
-")\n"
+"Version: %s (%s)\n"
 "\n"
 "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
@@ -1219,46 +1331,46 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/dird.c:393
+#: src/dird/dird.c:396
 msgid "Too many open reload requests. Request ignored.\n"
 msgstr ""
 
-#: src/dird/dird.c:408
+#: src/dird/dird.c:411
 msgid "Out of reload table entries. Giving up.\n"
 msgstr ""
 
-#: src/dird/dird.c:411
+#: src/dird/dird.c:414
 msgid "Resetting previous configuration.\n"
 msgstr ""
 
-#: src/dird/dird.c:471
+#: src/dird/dird.c:474
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/dird/dird.c:479 src/filed/filed.c:292
+#: src/dird/dird.c:482 src/filed/filed.c:295
 #, c-format
 msgid "No Messages resource defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:484
+#: src/dird/dird.c:487
 #, c-format
 msgid "Only one Director resource permitted in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:499 src/filed/filed.c:354 src/stored/stored.c:359
+#: src/dird/dird.c:502 src/filed/filed.c:357 src/stored/stored.c:362
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:505 src/filed/filed.c:360 src/stored/stored.c:365
+#: src/dird/dird.c:508 src/filed/filed.c:363 src/stored/stored.c:368
 #, c-format
 msgid "\"TLS Key\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:511 src/filed/filed.c:366 src/stored/stored.c:371
+#: src/dird/dird.c:514 src/filed/filed.c:369 src/stored/stored.c:374
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -1266,50 +1378,64 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:530 src/filed/filed.c:385 src/stored/stored.c:390
+#: src/dird/dird.c:533 src/filed/filed.c:388 src/stored/stored.c:393
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:538
+#: src/dird/dird.c:541
 #, c-format
 msgid "No Job records defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:669 src/dird/job.c:101 src/dird/ua_cmds.c:1424
+#: src/dird/dird.c:585 src/dird/dird.c:598
+#, c-format
+msgid "Hey something is wrong. p=0x%lu\n"
+msgstr ""
+
+#: src/dird/dird.c:647
+#, c-format
+msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
+msgstr ""
+
+#: src/dird/dird.c:654
+msgid "Too many items in Job resource\n"
+msgstr ""
+
+#: src/dird/dird.c:672 src/dird/job.c:101 src/dird/ua_cmds.c:1424
 #: src/dird/ua_output.c:598
 #, c-format
 msgid "Could not open database \"%s\".\n"
 msgstr ""
 
-#: src/dird/dird.c:672
+#: src/dird/dird.c:675
 #, c-format
 msgid "%s"
 msgstr ""
 
-#: src/dird/dird.c:714
+#: src/dird/dird.c:717
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:730 src/stored/stored.c:345
+#: src/dird/dird.c:733 src/stored/stored.c:348
 #, c-format
 msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:781
+#: src/dird/dird.c:784
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:787
+#: src/dird/dird.c:790
 #, c-format
 msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:793
+#: src/dird/dird.c:796
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -1317,18 +1443,318 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:810 src/dird/dird.c:850 src/filed/filed.c:323
+#: src/dird/dird.c:813 src/dird/dird.c:853 src/filed/filed.c:326
 #, c-format
 msgid "Failed to initialize TLS context for File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:833
+#: src/dird/dird.c:836
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon \"%s\" in %s.\n"
 msgstr ""
 
+#: src/dird/dird_conf.c:441 src/tray-monitor/tray_conf.c:152
+#, c-format
+msgid "No %s resource defined\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:450
+#, c-format
+msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:455
+#, c-format
+msgid "   query_file=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:458 src/dird/dird_conf.c:483 src/dird/dird_conf.c:497
+#: src/dird/dird_conf.c:541 src/dird/dird_conf.c:545 src/dird/dird_conf.c:549
+#: src/dird/dird_conf.c:573 src/dird/dird_conf.c:578 src/dird/dird_conf.c:582
+#: src/dird/dird_conf.c:586 src/dird/dird_conf.c:590 src/dird/dird_conf.c:594
+#: src/dird/dird_conf.c:604
+msgid "  --> "
+msgstr ""
+
+#: src/dird/dird_conf.c:464 src/dird/dird_conf.c:467
+#, c-format
+msgid "Console: name=%s SSL=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:473
+#, c-format
+msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:478
+#, c-format
+msgid "Counter: name=%s min=%d max=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:489
+#, c-format
+msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:492
+#, c-format
+msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:504
+#, c-format
+msgid ""
+"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
+"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr=%"
+"d\n"
+"      poolid=%s volname=%s MediaType=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:514
+#, c-format
+msgid ""
+"Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
+"      DeviceName=%s MediaType=%s StorageId=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:523
+#, c-format
+msgid ""
+"Catalog: name=%s address=%s DBport=%d db_name=%s\n"
+"      db_user=%s MutliDBConn=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:531
+#, c-format
+msgid "%s: name=%s JobType=%d level=%s Priority=%d MaxJobs=%u\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:532
+msgid "JobDefs"
+msgstr ""
+
+#: src/dird/dird_conf.c:536
+#, c-format
+msgid "     Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:553
+#, c-format
+msgid "  --> Where=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:556
+#, c-format
+msgid "  --> Bootstrap=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:559
+#, c-format
+msgid "  --> RunBefore=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:562
+#, c-format
+msgid "  --> RunAfter=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:565
+#, c-format
+msgid "  --> RunAfterFailed=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:568
+#, c-format
+msgid "  --> WriteBootstrap=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:600
+#, c-format
+msgid "  --> Run=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:611
+#, c-format
+msgid "FileSet: name=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:673 src/dird/dird_conf.c:752
+#, c-format
+msgid "Schedule: name=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:678
+#, c-format
+msgid "  --> Run Level=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:679
+msgid "      hour="
+msgstr ""
+
+#: src/dird/dird_conf.c:688
+msgid "      mday="
+msgstr ""
+
+#: src/dird/dird_conf.c:697
+msgid "      month="
+msgstr ""
+
+#: src/dird/dird_conf.c:706
+msgid "      wday="
+msgstr ""
+
+#: src/dird/dird_conf.c:715
+msgid "      wom="
+msgstr ""
+
+#: src/dird/dird_conf.c:724
+msgid "      woy="
+msgstr ""
+
+#: src/dird/dird_conf.c:733
+#, c-format
+msgid "      mins=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:735 src/dird/dird_conf.c:739 src/dird/dird_conf.c:743
+msgid "     --> "
+msgstr ""
+
+#: src/dird/dird_conf.c:756
+#, c-format
+msgid "Pool: name=%s PoolType=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:758
+#, c-format
+msgid "      use_cat=%d use_once=%d acpt_any=%d cat_files=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:761
+#, c-format
+msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:764
+#, c-format
+msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:768
+#, c-format
+msgid "      CleaningPrefix=%s LabelType=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:770
+#, c-format
+msgid "      RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:776
+#, c-format
+msgid "Messages: name=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:778
+#, c-format
+msgid "      mailcmd=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:780
+#, c-format
+msgid "      opcmd=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:783 src/tray-monitor/tray_conf.c:179
+#, c-format
+msgid "Unknown resource type %d in dump_resource.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1077 src/tray-monitor/tray_conf.c:232
+#, c-format
+msgid "Unknown resource type %d in free_resource.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1115 src/lib/parse_conf.c:211
+#: src/tray-monitor/tray_conf.c:268
+#, c-format
+msgid "Too many items in %s resource\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1149
+#, c-format
+msgid "Cannot find Console resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1155 src/filed/filed_conf.c:316
+#: src/stored/stored_conf.c:523
+#, c-format
+msgid "Cannot find Director resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1162 src/stored/stored_conf.c:529
+#, c-format
+msgid "Cannot find Storage resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1171
+#, c-format
+msgid "Cannot find Job resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1189
+#, c-format
+msgid "Cannot find Counter resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1197 src/filed/filed_conf.c:322
+#, c-format
+msgid "Cannot find Client resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1209
+#, c-format
+msgid "Cannot find Schedule resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1214 src/tray-monitor/tray_conf.c:287
+#, c-format
+msgid "Unknown resource type %d in save_resource.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1274 src/tray-monitor/tray_conf.c:322
+#, c-format
+msgid "Unknown resource type %d in save_resrouce.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1289
+#, c-format
+msgid "Name item is required in %s resource, but not found.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1301
+#, c-format
+msgid "Inserting %s res: %s index=%d pass=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1374
+#, c-format
+msgid "Expected a Job Type keyword, got: %s"
+msgstr ""
+
+#: src/dird/dird_conf.c:1398
+#, c-format
+msgid "Expected a Job Level keyword, got: %s"
+msgstr ""
+
+#: src/dird/dird_conf.c:1418
+#, c-format
+msgid "Expected a Restore replacement option, got: %s"
+msgstr ""
+
 #: src/dird/expand.c:137
 msgid "Year"
 msgstr ""
@@ -1424,7 +1850,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:73
+#: src/dird/fd_cmds.c:73 src/tray-monitor/tray-monitor.c:867
 msgid "File daemon"
 msgstr ""
 
@@ -1443,15 +1869,28 @@ msgstr ""
 msgid "FD gave bad response to JobId command: %s\n"
 msgstr ""
 
+#: src/dird/fd_cmds.c:144 src/dird/fd_cmds.c:180
+msgid ", since="
+msgstr ""
+
 #: src/dird/fd_cmds.c:164
 msgid "No prior or suitable Full backup found. Doing FULL backup.\n"
 msgstr ""
 
+#: src/dird/fd_cmds.c:165 src/dird/fd_cmds.c:173
+#, c-format
+msgid " (upgraded from %s)"
+msgstr ""
+
 #: src/dird/fd_cmds.c:171
 #, c-format
 msgid "Prior failed job found. Upgrading to %s.\n"
 msgstr ""
 
+#: src/dird/fd_cmds.c:196
+msgid "since_utime "
+msgstr ""
+
 #: src/dird/fd_cmds.c:232
 #, c-format
 msgid "Unimplemented backup level %d %c\n"
@@ -1488,7 +1927,7 @@ msgid ""
 "msglen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:571 src/dird/verify.c:692
+#: src/dird/fd_cmds.c:571 src/dird/verify.c:696
 #, c-format
 msgid "MD5/SHA1 index %d not same as attributes %d\n"
 msgstr ""
@@ -1516,7 +1955,7 @@ msgstr ""
 
 #: src/dird/getmsg.c:318
 #, c-format
-msgid "Bad response to %s command: wanted %s got: %s\n"
+msgid "Bad response to %s command: wanted %s, got %s\n"
 msgstr ""
 
 #: src/dird/getmsg.c:323
@@ -1524,6 +1963,11 @@ msgstr ""
 msgid "Socket error on %s command: ERR=%s\n"
 msgstr ""
 
+#: src/dird/inc_conf.c:249
+#, c-format
+msgid "Expected a FileSet option keyword, got:%s:"
+msgstr ""
+
 #: src/dird/inc_conf.c:282
 msgid "Old style Include/Exclude not supported\n"
 msgstr ""
@@ -1533,6 +1977,16 @@ msgstr ""
 msgid "Expecting keyword, got: %s\n"
 msgstr ""
 
+#: src/dird/inc_conf.c:318 src/dird/inc_conf.c:583 src/lib/parse_conf.c:819
+#, c-format
+msgid "expected an equals, got: %s"
+msgstr ""
+
+#: src/dird/inc_conf.c:328 src/dird/inc_conf.c:592
+#, c-format
+msgid "Keyword %s not permitted in this resource"
+msgstr ""
+
 #: src/dird/inc_conf.c:381
 #, c-format
 msgid "Regex compile error. ERR=%s\n"
@@ -1558,12 +2012,22 @@ msgstr ""
 msgid "Expected a filename, got: %s"
 msgstr ""
 
-#: src/dird/job.c:50
+#: src/dird/inc_conf.c:562
+#, c-format
+msgid "Expecting open brace. Got %s"
+msgstr ""
+
+#: src/dird/inc_conf.c:617
+#, c-format
+msgid "Expected a FileSet keyword, got: %s"
+msgstr ""
+
+#: src/dird/job.c:50
 #, c-format
 msgid "Could not init job queue: ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:86 src/stored/dircmd.c:174 src/stored/stored.c:485
+#: src/dird/job.c:86 src/stored/dircmd.c:174 src/stored/stored.c:488
 #, c-format
 msgid "Unable to init job cond variable: ERR=%s\n"
 msgstr ""
@@ -1577,6 +2041,11 @@ msgstr ""
 msgid "Job canceled because max start delay time exceeded.\n"
 msgstr ""
 
+#: src/dird/job.c:229 src/dird/job.c:307
+#, c-format
+msgid "Unimplemented job type: %d\n"
+msgstr ""
+
 #: src/dird/job.c:254
 #, c-format
 msgid "RunBefore: %s"
@@ -1621,7 +2090,7 @@ msgstr ""
 msgid "Unhandled job status code %d\n"
 msgstr ""
 
-#: src/dird/job.c:621 src/stored/bscan.c:893
+#: src/dird/job.c:621 src/stored/bscan.c:902
 #, c-format
 msgid "Could not create Client record. ERR=%s\n"
 msgstr ""
@@ -1640,11 +2109,62 @@ msgstr ""
 msgid "Error updating job record. %s"
 msgstr ""
 
+#: src/dird/jobq.c:67
+#, c-format
+msgid "pthread_attr_init: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:76
+#, c-format
+msgid "pthread_mutex_init: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:82
+#, c-format
+msgid "pthread_cond_init: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:115 src/dird/jobq.c:242 src/dird/jobq.c:307
+#: src/dird/jobq.c:388
+#, c-format
+msgid "pthread_mutex_lock: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:128
+#, c-format
+msgid "pthread_cond_broadcast: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:136
+#, c-format
+msgid "pthread_cond_wait: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:144
+#, c-format
+msgid "pthread_mutex_unlock: ERR=%s\n"
+msgstr ""
+
 #: src/dird/jobq.c:180
 #, c-format
 msgid "Job %s waiting %d seconds for scheduled start time.\n"
 msgstr ""
 
+#: src/dird/jobq.c:235
+#, c-format
+msgid "pthread_thread_create: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:353
+#, c-format
+msgid "pthread_cond_signal: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:362
+#, c-format
+msgid "pthread_create: ERR=%s\n"
+msgstr ""
+
 #: src/dird/jobq.c:487
 #, c-format
 msgid "Rescheduled Job %s at %s to re-run in %d seconds.\n"
@@ -1662,7 +2182,7 @@ msgstr ""
 #: src/dird/mac.c:377
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Backup Level:           %s%s\n"
@@ -1690,6 +2210,7 @@ msgid ""
 msgstr ""
 
 #: src/dird/msgchan.c:78 src/filed/job.c:1128
+#: src/tray-monitor/tray-monitor.c:874
 msgid "Storage daemon"
 msgstr ""
 
@@ -1784,6 +2305,40 @@ msgstr ""
 msgid "Catalog error updating volume \"%s\". ERR=%s"
 msgstr ""
 
+#: src/dird/next_vol.c:262
+msgid "volume has expired"
+msgstr ""
+
+#: src/dird/next_vol.c:280 src/dird/next_vol.c:316
+#, c-format
+msgid "Recycled current volume \"%s\"\n"
+msgstr ""
+
+#: src/dird/next_vol.c:285
+msgid "and recycling of current volume failed"
+msgstr ""
+
+#: src/dird/next_vol.c:291
+msgid "but should be Append, Purged or Recycle"
+msgstr ""
+
+#: src/dird/next_vol.c:319
+msgid ""
+"but should be Append, Purged or Recycle (recycling of the current volume "
+"failed)"
+msgstr ""
+
+#: src/dird/next_vol.c:323
+msgid ""
+"but should be Append, Purged or Recycle (cannot automatically recycle "
+"current volume, as it still contains unpruned data)"
+msgstr ""
+
+#: src/dird/recycle.c:102
+#, c-format
+msgid "Recycled volume \"%s\"\n"
+msgstr ""
+
 #: src/dird/restore.c:70
 msgid "Cannot restore without bootstrap file.\n"
 msgstr ""
@@ -1812,7 +2367,7 @@ msgstr ""
 #: src/dird/restore.c:275
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Client:                 %s\n"
@@ -2041,7 +2596,12 @@ msgstr ""
 msgid "fifth"
 msgstr ""
 
-#: src/dird/run_conf.c:201 src/dird/run_conf.c:213 src/lib/parse_conf.c:699
+#: src/dird/run_conf.c:188
+#, c-format
+msgid "Expected an equals, got: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:201 src/dird/run_conf.c:213
 #, c-format
 msgid "Expect a YES or NO, got: %s"
 msgstr ""
@@ -2051,6 +2611,26 @@ msgstr ""
 msgid "Job level field: %s not found in run record"
 msgstr ""
 
+#: src/dird/run_conf.c:245
+#, c-format
+msgid "Could not find specified Pool Resource: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:270
+#, c-format
+msgid "Could not find specified Storage Resource: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:282
+#, c-format
+msgid "Could not find specified Messages Resource: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:290
+#, c-format
+msgid "Expected a keyword name, got: %s"
+msgstr ""
+
 #: src/dird/run_conf.c:325
 msgid "Day number out of range (1-31)"
 msgstr ""
@@ -2106,10 +2686,34 @@ msgstr ""
 msgid "Job %s not found\n"
 msgstr ""
 
+#: src/dird/scheduler.c:102
+msgid "Walk queue"
+msgstr ""
+
+#: src/dird/scheduler.c:112
+msgid "Dequeued job"
+msgstr ""
+
 #: src/dird/scheduler.c:115
 msgid "Scheduler logic error\n"
 msgstr ""
 
+#: src/dird/scheduler.c:132
+msgid "Run job"
+msgstr ""
+
+#: src/dird/scheduler.c:345
+msgid "Inserted job"
+msgstr ""
+
+#: src/dird/scheduler.c:353
+msgid "Appended job"
+msgstr ""
+
+#: src/dird/scheduler.c:357
+msgid "Run queue"
+msgstr ""
+
 #: src/dird/ua_cmds.c:88
 msgid "add"
 msgstr ""
@@ -2175,10 +2779,11 @@ msgid "gui [on|off] -- non-interactive gui mode"
 msgstr ""
 
 #: src/dird/ua_cmds.c:97 src/dird/ua_output.c:112 src/dird/ua_tree.c:64
+#: src/stored/btape.c:2533
 msgid "help"
 msgstr ""
 
-#: src/dird/ua_cmds.c:97
+#: src/dird/ua_cmds.c:97 src/stored/btape.c:2533
 msgid "print this command"
 msgstr ""
 
@@ -2192,7 +2797,7 @@ msgid ""
 "from catalog"
 msgstr ""
 
-#: src/dird/ua_cmds.c:99
+#: src/dird/ua_cmds.c:99 src/stored/btape.c:2534
 msgid "label"
 msgstr ""
 
@@ -2292,7 +2897,7 @@ msgstr ""
 msgid "run <job-name>"
 msgstr ""
 
-#: src/dird/ua_cmds.c:113
+#: src/dird/ua_cmds.c:113 src/stored/btape.c:2543
 msgid "status"
 msgstr ""
 
@@ -2332,7 +2937,7 @@ msgstr ""
 msgid "use SQL to query catalog"
 msgstr ""
 
-#: src/dird/ua_cmds.c:119 src/dird/ua_cmds.c:768
+#: src/dird/ua_cmds.c:119
 msgid "trace"
 msgstr ""
 
@@ -2470,10 +3075,9 @@ msgstr ""
 msgid "off"
 msgstr ""
 
-#: src/dird/ua_cmds.c:368 src/dird/ua_cmds.c:1055 src/dird/ua_cmds.c:1071
-#: src/dird/ua_cmds.c:1115 src/dird/ua_output.c:272 src/dird/ua_output.c:296
-#: src/dird/ua_output.c:315 src/dird/ua_output.c:346 src/dird/ua_select.c:618
-#: src/dird/ua_select.c:793
+#: src/dird/ua_cmds.c:368 src/dird/ua_cmds.c:1055 src/dird/ua_cmds.c:1115
+#: src/dird/ua_output.c:272 src/dird/ua_output.c:296 src/dird/ua_output.c:315
+#: src/dird/ua_output.c:346 src/dird/ua_select.c:618 src/dird/ua_select.c:793
 msgid "jobid"
 msgstr ""
 
@@ -2482,9 +3086,9 @@ msgstr ""
 msgid "JobId %s is not running. Use Job name to cancel inactive jobs.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:379 src/dird/ua_cmds.c:919 src/dird/ua_output.c:282
-#: src/dird/ua_output.c:291 src/dird/ua_output.c:310 src/dird/ua_output.c:341
-#: src/dird/ua_select.c:615 src/dird/ua_select.c:807
+#: src/dird/ua_cmds.c:379 src/dird/ua_output.c:282 src/dird/ua_output.c:291
+#: src/dird/ua_output.c:310 src/dird/ua_output.c:341 src/dird/ua_select.c:615
+#: src/dird/ua_select.c:807
 msgid "job"
 msgstr ""
 
@@ -2493,7 +3097,7 @@ msgstr ""
 msgid "Warning Job %s is not running. Continuing anyway ...\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:407 src/filed/status.c:193 src/stored/status.c:311
+#: src/dird/ua_cmds.c:407 src/filed/status.c:193 src/stored/status.c:315
 msgid "No Jobs running.\n"
 msgstr ""
 
@@ -2501,6 +3105,11 @@ msgstr ""
 msgid "Select Job:\n"
 msgstr ""
 
+#: src/dird/ua_cmds.c:417
+#, c-format
+msgid "JobId=%s Job=%s"
+msgstr ""
+
 #: src/dird/ua_cmds.c:422
 msgid "Choose Job to cancel"
 msgstr ""
@@ -2552,16 +3161,16 @@ msgstr ""
 msgid "Client \"%s\" address set to %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:616 src/dird/ua_status.c:281
+#: src/dird/ua_cmds.c:616 src/dird/ua_status.c:286
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:622 src/dird/ua_status.c:292
+#: src/dird/ua_cmds.c:622 src/dird/ua_status.c:297
 msgid "Connected to storage daemon\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:642 src/dird/ua_cmds.c:982 src/dird/ua_status.c:319
+#: src/dird/ua_cmds.c:642 src/dird/ua_cmds.c:982 src/dird/ua_status.c:324
 #, c-format
 msgid "Connecting to Client %s at %s:%d\n"
 msgstr ""
@@ -2570,73 +3179,18 @@ msgstr ""
 msgid "Failed to connect to Client.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:756 src/dird/ua_cmds.c:935
-msgid "level"
-msgstr ""
-
 #: src/dird/ua_cmds.c:761
 msgid "Enter new debug level: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:778 src/dird/ua_output.c:111 src/dird/ua_status.c:101
-msgid "all"
-msgstr ""
-
-#: src/dird/ua_cmds.c:782 src/dird/ua_status.c:104 src/dird/ua_tree.c:59
-msgid "dir"
-msgstr ""
-
-#: src/dird/ua_cmds.c:783 src/dird/ua_status.c:105
-msgid "director"
-msgstr ""
-
-#: src/dird/ua_cmds.c:788 src/dird/ua_cmds.c:912 src/dird/ua_restore.c:272
-#: src/dird/ua_select.c:288 src/dird/ua_select.c:325 src/dird/ua_status.c:108
-#: src/lib/bnet_server.c:291
-msgid "client"
-msgstr ""
-
-#: src/dird/ua_cmds.c:789 src/dird/ua_cmds.c:913 src/dird/ua_select.c:289
-#: src/dird/ua_select.c:326
-msgid "fd"
-msgstr ""
-
-#: src/dird/ua_cmds.c:805
-msgid "store"
-msgstr ""
-
-#: src/dird/ua_cmds.c:806 src/dird/ua_select.c:788
-msgid "storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:807 src/dird/ua_select.c:789
-msgid "sd"
-msgstr ""
-
 #: src/dird/ua_cmds.c:827
 msgid "Available daemons are: \n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:828 src/dird/ua_status.c:127
-msgid "Director"
-msgstr ""
-
-#: src/dird/ua_cmds.c:831 src/dird/ua_status.c:130
-msgid "All"
-msgstr ""
-
 #: src/dird/ua_cmds.c:832
 msgid "Select daemon type to set debug level"
 msgstr ""
 
-#: src/dird/ua_cmds.c:925
-msgid "fileset"
-msgstr ""
-
-#: src/dird/ua_cmds.c:931
-msgid "listing"
-msgstr ""
-
 #: src/dird/ua_cmds.c:937 src/dird/ua_run.c:478
 #, c-format
 msgid "Level %s not valid.\n"
@@ -2705,14 +3259,14 @@ msgstr ""
 msgid "Using Catalog name=%s DB=%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1369 src/dird/ua_tree.c:590 src/stored/btape.c:2531
+#: src/dird/ua_cmds.c:1369 src/dird/ua_tree.c:594 src/stored/btape.c:2580
 #, c-format
 msgid ""
 "  Command    Description\n"
 "  =======    ===========\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1371 src/dird/ua_tree.c:592
+#: src/dird/ua_cmds.c:1371
 #, c-format
 msgid "  %-10s %s\n"
 msgstr ""
@@ -2724,9 +3278,9 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1382
+#: src/dird/ua_cmds.c:1389
 #, c-format
-msgid "%s %s\n"
+msgid "%s Version: %s (%s)\n"
 msgstr ""
 
 #: src/dird/ua_cmds.c:1408
@@ -2802,20 +3356,35 @@ msgstr ""
 msgid ".exit"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:221 src/dird/ua_restore.c:739
-#: src/dird/ua_restore.c:777
+#: src/dird/ua_dotcmds.c:121
+msgid "The Director will segment fault.\n"
+msgstr ""
+
+#: src/dird/ua_dotcmds.c:221 src/dird/ua_restore.c:747
+#: src/dird/ua_restore.c:785
 #, c-format
 msgid "Query failed: %s. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_input.c:120 src/dird/ua_restore.c:228 src/dird/ua_run.c:487
+#: src/dird/ua_input.c:82
+msgid "Enter slot"
+msgstr ""
+
+#: src/dird/ua_input.c:86 src/dird/ua_input.c:92
+#, c-format
+msgid "Expected a positive integer, got: %s\n"
+msgstr ""
+
+#: src/dird/ua_input.c:120 src/dird/ua_restore.c:232 src/dird/ua_run.c:487
 #: src/dird/ua_run.c:860 src/dird/ua_select.c:54 src/dird/ua_update.c:232
 #: src/dird/ua_update.c:247 src/dird/ua_update.c:495
+#: src/stored/parse_bsr.c:741 src/tools/dbcheck.c:1098
 msgid "yes"
 msgstr ""
 
 #: src/dird/ua_input.c:124 src/dird/ua_select.c:57 src/dird/ua_update.c:234
 #: src/dird/ua_update.c:247 src/dird/ua_update.c:495
+#: src/stored/parse_bsr.c:741
 msgid "no"
 msgstr ""
 
@@ -2851,7 +3420,7 @@ msgstr ""
 msgid "Slot too large.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:170
+#: src/dird/ua_label.c:170 src/stored/btape.c:2541
 msgid "scan"
 msgstr ""
 
@@ -2934,7 +3503,7 @@ msgid ""
 "==============\n"
 msgstr ""
 
-#: src/dird/ua_label.c:484
+#: src/dird/ua_label.c:484 src/stored/btape.c:608
 msgid "Do you want to continue? (y/n): "
 msgstr ""
 
@@ -2943,11 +3512,21 @@ msgstr ""
 msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
 msgstr ""
 
+#: src/dird/ua_label.c:511
+#, c-format
+msgid "Error setting InChanger: ERR=%s"
+msgstr ""
+
 #: src/dird/ua_label.c:536
 #, c-format
 msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
 msgstr ""
 
+#: src/dird/ua_label.c:543
+#, c-format
+msgid "Catalog error on cleaning tape: %s"
+msgstr ""
+
 #: src/dird/ua_label.c:579
 #, c-format
 msgid "Illegal character \"%c\" in a volume name.\n"
@@ -3061,6 +3640,10 @@ msgstr ""
 msgid "pools"
 msgstr ""
 
+#: src/dird/ua_output.c:111 src/dird/ua_status.c:101
+msgid "all"
+msgstr ""
+
 #: src/dird/ua_output.c:178
 msgid "Keywords for the show command are:\n"
 msgstr ""
@@ -3166,7 +3749,7 @@ msgid "Jobs"
 msgstr ""
 
 #: src/dird/ua_prune.c:163 src/dird/ua_purge.c:174 src/dird/ua_purge.c:179
-#: src/stored/label.c:957
+#: src/stored/label.c:956
 msgid "Volume"
 msgstr ""
 
@@ -3192,6 +3775,16 @@ msgstr ""
 msgid "Pruned %d %s for client %s from catalog.\n"
 msgstr ""
 
+#: src/dird/ua_prune.c:502
+#, c-format
+msgid "There are no Jobs associated with Volume \"%s\". Prune not needed.\n"
+msgstr ""
+
+#: src/dird/ua_prune.c:509 src/dird/ua_purge.c:488
+#, c-format
+msgid "There are no Jobs associated with Volume \"%s\". Marking it purged.\n"
+msgstr ""
+
 #: src/dird/ua_prune.c:567
 #, c-format
 msgid "Pruned %d %s on Volume \"%s\" from catalog.\n"
@@ -3255,11 +3848,23 @@ msgstr ""
 msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
 msgstr ""
 
+#: src/dird/ua_purge.c:555
+#, c-format
+msgid ""
+"There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
+msgstr ""
+
 #: src/dird/ua_purge.c:584
 #, c-format
 msgid "Cannot purge Volume with VolStatus=%s\n"
 msgstr ""
 
+#: src/dird/ua_query.c:59 src/findlib/create_file.c:276
+#: src/findlib/create_file.c:333
+#, c-format
+msgid "Could not open %s: ERR=%s\n"
+msgstr ""
+
 #: src/dird/ua_query.c:64
 msgid "Available queries:\n"
 msgstr ""
@@ -3288,7 +3893,7 @@ msgid ""
 "Terminate query mode with a blank line.\n"
 msgstr ""
 
-#: src/dird/ua_query.c:272
+#: src/dird/ua_query.c:255 src/dird/ua_query.c:272
 msgid "Enter SQL query: "
 msgstr ""
 
@@ -3314,43 +3919,105 @@ msgstr ""
 msgid "Unable to construct a valid BSR. Cannot continue.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:182 src/dird/ua_restore.c:192
+#: src/dird/ua_restore.c:182 src/dird/ua_restore.c:196
 msgid "No files selected to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:189
+#: src/dird/ua_restore.c:190
+msgid ""
+"\n"
+"1 file selected to be restored.\n"
+"\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:193
 #, c-format
 msgid ""
 "\n"
-"%u file%s selected to be restored.\n"
+"%u files selected to be restored.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:207
+#: src/dird/ua_restore.c:211
 msgid "No Restore Job resource found!\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:352
+#: src/dird/ua_restore.c:276 src/dird/ua_select.c:288 src/dird/ua_select.c:325
+#: src/dird/ua_status.c:108 src/lib/bnet_server.c:291
+#: src/lib/bnet_server.c:385
+msgid "client"
+msgstr ""
+
+#: src/dird/ua_restore.c:309
+msgid "List last 20 Jobs run"
+msgstr ""
+
+#: src/dird/ua_restore.c:310
+msgid "List Jobs where a given File is saved"
+msgstr ""
+
+#: src/dird/ua_restore.c:311
+msgid "Enter list of comma separated JobIds to select"
+msgstr ""
+
+#: src/dird/ua_restore.c:312
+msgid "Enter SQL list command"
+msgstr ""
+
+#: src/dird/ua_restore.c:313
+msgid "Select the most recent backup for a client"
+msgstr ""
+
+#: src/dird/ua_restore.c:314
+msgid "Select backup for a client before a specified time"
+msgstr ""
+
+#: src/dird/ua_restore.c:315
+msgid "Enter a list of files to restore"
+msgstr ""
+
+#: src/dird/ua_restore.c:316
+msgid "Enter a list of files to restore before a specified time"
+msgstr ""
+
+#: src/dird/ua_restore.c:317
+msgid "Find the JobIds of the most recent backup for a client"
+msgstr ""
+
+#: src/dird/ua_restore.c:318
+msgid "Find the JobIds for a backup for a client before a specified time"
+msgstr ""
+
+#: src/dird/ua_restore.c:319
+msgid "Enter a list of directories to restore for found JobIds"
+msgstr ""
+
+#: src/dird/ua_restore.c:320 src/dird/ua_status.c:702 src/filed/status.c:249
+#: src/stored/status.c:367 src/wx-console/wxbconfigpanel.cpp:191
+msgid "Cancel"
+msgstr ""
+
+#: src/dird/ua_restore.c:356
 #, c-format
 msgid "Unknown keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:370
+#: src/dird/ua_restore.c:374
 #, c-format
 msgid "Improper date format: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:404 src/dird/ua_select.c:576
+#: src/dird/ua_restore.c:408 src/dird/ua_select.c:576
 #, c-format
 msgid "Error: Pool resource \"%s\" does not exist.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:409
+#: src/dird/ua_restore.c:413
 #, c-format
 msgid "Error: Pool resource \"%s\" access not allowed.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:428
+#: src/dird/ua_restore.c:432
 msgid ""
 "\n"
 "First you select one or more JobIds that contain files\n"
@@ -3360,181 +4027,221 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:440
+#: src/dird/ua_restore.c:444
 msgid "To select the JobIds, you have the following choices:\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:445
+#: src/dird/ua_restore.c:449
 msgid "Select item: "
 msgstr ""
 
-#: src/dird/ua_restore.c:459
+#: src/dird/ua_restore.c:463
 msgid "Enter Filename (no path):"
 msgstr ""
 
-#: src/dird/ua_restore.c:474 src/dird/ua_restore.c:574
+#: src/dird/ua_restore.c:478 src/dird/ua_restore.c:578
 msgid "Enter JobId(s), comma separated, to restore: "
 msgstr ""
 
-#: src/dird/ua_restore.c:480
+#: src/dird/ua_restore.c:484
 msgid "Enter SQL list command: "
 msgstr ""
 
-#: src/dird/ua_restore.c:508 src/dird/ua_restore.c:533
+#: src/dird/ua_restore.c:512 src/dird/ua_restore.c:537
 msgid ""
 "Enter file names with paths, or < to enter a filename\n"
 "containg a list of file names with paths, and terminate\n"
 "them with a blank line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:512 src/dird/ua_restore.c:537
+#: src/dird/ua_restore.c:516 src/dird/ua_restore.c:541
 msgid "Enter full filename: "
 msgstr ""
 
-#: src/dird/ua_restore.c:572
+#: src/dird/ua_restore.c:576
 #, c-format
 msgid "You have already seleted the following JobIds: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:587
+#: src/dird/ua_restore.c:591
 msgid ""
 "Enter full directory names or start the name\n"
 "with a < to indicate it is a filename containg a list\n"
 "of directories and terminate them with a blank line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:591
+#: src/dird/ua_restore.c:595
 msgid "Enter directory name: "
 msgstr ""
 
-#: src/dird/ua_restore.c:616
+#: src/dird/ua_restore.c:620
 msgid "No Jobs selected.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:619
+#: src/dird/ua_restore.c:624
+#, c-format
+msgid "You have selected the following JobIds: %s\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:627
 #, c-format
-msgid "You have selected the following JobId%s: %s\n"
+msgid "You have selected the following JobId: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:628
+#: src/dird/ua_restore.c:636
 msgid "Invalid JobId in list.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:640
+#: src/dird/ua_restore.c:648
 #, c-format
 msgid "Unable to get Job record for JobId=%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:645
+#: src/dird/ua_restore.c:653
 #, c-format
 msgid "No authorization. Job \"%s\" not selected.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:659
+#: src/dird/ua_restore.c:667
 msgid ""
 "The restored files will the most current backup\n"
 "BEFORE the date you specify below.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:662
+#: src/dird/ua_restore.c:670
 msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
 msgstr ""
 
-#: src/dird/ua_restore.c:668
+#: src/dird/ua_restore.c:676
 msgid "Improper date format.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:689
+#: src/dird/ua_restore.c:697
 #, c-format
 msgid "Cannot open file %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:697 src/dird/ua_restore.c:701
+#: src/dird/ua_restore.c:705 src/dird/ua_restore.c:709
 #, c-format
 msgid "Error occurred on line %d of %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:743 src/dird/ua_restore.c:781
+#: src/dird/ua_restore.c:751 src/dird/ua_restore.c:789
 #, c-format
 msgid "No database record found for: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:768
+#: src/dird/ua_restore.c:776
 msgid "No JobId specified cannot continue.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:887
+#: src/dird/ua_restore.c:895
 #, c-format
 msgid ""
 "\n"
 "Building directory tree for JobId %s ...  "
 msgstr ""
 
-#: src/dird/ua_restore.c:908
+#: src/dird/ua_restore.c:914
+msgid ""
+"\n"
+"There were no files inserted into the tree, so file selection\n"
+"is not possible.Most likely your retention policy pruned the files\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:916
 msgid ""
 "\n"
 "Do you want to restore all the files? (yes|no): "
 msgstr ""
 
-#: src/dird/ua_restore.c:929 src/dird/ua_tree.c:60
+#: src/dird/ua_restore.c:932
+#, c-format
+msgid ""
+"\n"
+"1 Job, %s files inserted into the tree and marked for extraction.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:936
+#, c-format
+msgid ""
+"\n"
+"1 Job, %s files inserted into the tree.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:942
+#, c-format
+msgid ""
+"\n"
+"%d Jobs, %s files inserted into the tree and marked for extraction.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:946
+#, c-format
+msgid ""
+"\n"
+"%d Jobs, %s files inserted into the tree.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:954 src/dird/ua_tree.c:60
 msgid "done"
 msgstr ""
 
-#: src/dird/ua_restore.c:998
+#: src/dird/ua_restore.c:1023
 #, c-format
 msgid "Error getting FileSet \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1006 src/dird/ua_select.c:165
+#: src/dird/ua_restore.c:1031 src/dird/ua_select.c:165
 msgid "The defined FileSet resources are:\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1010 src/dird/ua_select.c:173
+#: src/dird/ua_restore.c:1035 src/dird/ua_select.c:173
 msgid "Select FileSet resource"
 msgstr ""
 
-#: src/dird/ua_restore.c:1017
+#: src/dird/ua_restore.c:1042
 #, c-format
 msgid "Error getting FileSet record: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1018
+#: src/dird/ua_restore.c:1043
 msgid ""
 "This probably means you modified the FileSet.\n"
 "Continuing anyway.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1033
+#: src/dird/ua_restore.c:1058
 #, c-format
 msgid "Pool \"%s\" not found, using any pool.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1059 src/dird/ua_restore.c:1075
+#: src/dird/ua_restore.c:1084 src/dird/ua_restore.c:1100
 #, c-format
 msgid "No Full backup before %s found.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1098
+#: src/dird/ua_restore.c:1123
 msgid "No jobs found.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1264
+#: src/dird/ua_restore.c:1289
 msgid ""
 "Warning, the JobIds that you selected refer to more than one MediaType.\n"
 "Restore is not possible. The MediaTypes used are:\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1272
+#: src/dird/ua_restore.c:1297
 msgid "No MediaType found for your JobIds.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1304
+#: src/dird/ua_restore.c:1329
 #, c-format
 msgid "Warning default storage overridden by %s on command line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1315
+#: src/dird/ua_restore.c:1340
 #, c-format
 msgid ""
 "\n"
@@ -3787,11 +4494,16 @@ msgstr ""
 msgid "Parameters to modify:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:646
+#: src/dird/ua_run.c:646 src/wx-console/wxbrestorepanel.cpp:380
+#: src/wx-console/wxbrestorepanel.cpp:808
+#: src/wx-console/wxbrestorepanel.cpp:1833
 msgid "When"
 msgstr ""
 
 #: src/dird/ua_run.c:647 src/dird/pythondir.c:73 src/dird/pythondir.c:83
+#: src/wx-console/wxbrestorepanel.cpp:381
+#: src/wx-console/wxbrestorepanel.cpp:1079
+#: src/wx-console/wxbrestorepanel.cpp:1835
 msgid "Priority"
 msgstr ""
 
@@ -3799,15 +4511,24 @@ msgstr ""
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:655
+#: src/dird/ua_run.c:655 src/wx-console/wxbrestorepanel.cpp:373
+#: src/wx-console/wxbrestorepanel.cpp:1814
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:656
+#: src/dird/ua_run.c:656 src/wx-console/wxbrestorepanel.cpp:374
+#: src/wx-console/wxbrestorepanel.cpp:1055
+#: src/wx-console/wxbrestorepanel.cpp:1816
 msgid "Where"
 msgstr ""
 
-#: src/dird/ua_run.c:657
+#: src/dird/ua_run.c:657 src/wx-console/wxbrestorepanel.cpp:376
+#: src/wx-console/wxbrestorepanel.cpp:1063
+#: src/wx-console/wxbrestorepanel.cpp:1820
+#: src/wx-console/wxbrestorepanel.cpp:1821
+#: src/wx-console/wxbrestorepanel.cpp:1822
+#: src/wx-console/wxbrestorepanel.cpp:1823
+#: src/wx-console/wxbrestorepanel.cpp:1824
 msgid "Replace"
 msgstr ""
 
@@ -3820,27 +4541,27 @@ msgid "Levels:\n"
 msgstr ""
 
 #: src/dird/ua_run.c:665 src/filed/status.c:368 src/lib/util.c:319
-#: src/stored/status.c:402
+#: src/stored/status.c:406
 msgid "Base"
 msgstr ""
 
-#: src/dird/ua_run.c:666 src/filed/status.c:370 src/lib/util.c:321
-#: src/stored/status.c:404
+#: src/dird/ua_run.c:666 src/dird/ua_update.c:106 src/dird/ua_update.c:438
+#: src/filed/status.c:370 src/lib/util.c:321 src/stored/status.c:408
 msgid "Full"
 msgstr ""
 
 #: src/dird/ua_run.c:667 src/filed/status.c:373 src/lib/util.c:324
-#: src/stored/status.c:407
+#: src/stored/status.c:411
 msgid "Incremental"
 msgstr ""
 
 #: src/dird/ua_run.c:668 src/filed/status.c:376 src/lib/util.c:327
-#: src/stored/status.c:410
+#: src/stored/status.c:414
 msgid "Differential"
 msgstr ""
 
 #: src/dird/ua_run.c:669 src/filed/status.c:379 src/lib/util.c:330
-#: src/stored/status.c:413
+#: src/stored/status.c:417
 msgid "Since"
 msgstr ""
 
@@ -3853,7 +4574,7 @@ msgid "Initialize Catalog"
 msgstr ""
 
 #: src/dird/ua_run.c:693 src/filed/status.c:382 src/lib/util.c:333
-#: src/stored/status.c:416
+#: src/stored/status.c:420
 msgid "Verify Catalog"
 msgstr ""
 
@@ -3990,6 +4711,10 @@ msgstr ""
 msgid "Select Client (File daemon) resource"
 msgstr ""
 
+#: src/dird/ua_select.c:289 src/dird/ua_select.c:326
+msgid "fd"
+msgstr ""
+
 #: src/dird/ua_select.c:297
 #, c-format
 msgid "Error: Client resource %s does not exist.\n"
@@ -4096,6 +4821,14 @@ msgstr ""
 msgid "Storage name given twice.\n"
 msgstr ""
 
+#: src/dird/ua_select.c:788
+msgid "storage"
+msgstr ""
+
+#: src/dird/ua_select.c:789
+msgid "sd"
+msgstr ""
+
 #: src/dird/ua_select.c:796
 #, c-format
 msgid "Expecting jobid=nn command, got: %s\n"
@@ -4116,6 +4849,11 @@ msgstr ""
 msgid "Job \"%s\" is not running.\n"
 msgstr ""
 
+#: src/dird/ua_select.c:829
+#, c-format
+msgid "Storage resource \"%s\": not found\n"
+msgstr ""
+
 #: src/dird/ua_select.c:862
 msgid "Media Types defined in conf file:\n"
 msgstr ""
@@ -4137,25 +4875,57 @@ msgstr ""
 msgid "You have messages.\n"
 msgstr ""
 
+#: src/dird/ua_status.c:104 src/dird/ua_tree.c:59
+msgid "dir"
+msgstr ""
+
+#: src/dird/ua_status.c:105
+msgid "director"
+msgstr ""
+
 #: src/dird/ua_status.c:126
 msgid "Status available for:\n"
 msgstr ""
 
+#: src/dird/ua_status.c:127
+msgid "Director"
+msgstr ""
+
+#: src/dird/ua_status.c:130
+msgid "All"
+msgstr ""
+
 #: src/dird/ua_status.c:132
 msgid "Select daemon type for status"
 msgstr ""
 
-#: src/dird/ua_status.c:248 src/filed/status.c:71 src/stored/status.c:69
+#: src/dird/ua_status.c:245
 #, c-format
-msgid "Daemon started %s, %d Job%s run since started.\n"
+msgid "%s Version: %s (%s) %s %s %s\n"
+msgstr ""
+
+#: src/dird/ua_status.c:249 src/stored/status.c:70
+#, c-format
+msgid "Daemon started %s, 1 Job run since started.\n"
+msgstr ""
+
+#: src/dird/ua_status.c:252 src/stored/status.c:73
+#, c-format
+msgid "Daemon started %s, %d Jobs run since started.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:252 src/filed/status.c:119 src/stored/status.c:73
+#: src/dird/ua_status.c:257 src/filed/status.c:119 src/stored/status.c:77
 #, c-format
 msgid " Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:284
+#: src/dird/ua_status.c:277 src/dird/ua_status.c:482 src/dird/ua_status.c:644
+#: src/filed/status.c:196 src/filed/status.c:275 src/stored/status.c:317
+#: src/stored/status.c:393
+msgid "====\n"
+msgstr ""
+
+#: src/dird/ua_status.c:289
 #, c-format
 msgid ""
 "\n"
@@ -4163,182 +4933,210 @@ msgid ""
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:322
+#: src/dird/ua_status.c:327
 #, c-format
 msgid ""
 "Failed to connect to Client %s.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:330
+#: src/dird/ua_status.c:335
 msgid "Connected to file daemon\n"
 msgstr ""
 
-#: src/dird/ua_status.c:345
+#: src/dird/ua_status.c:350
 msgid ""
 "\n"
 "Scheduled Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:346
+#: src/dird/ua_status.c:351
 msgid ""
 "Level          Type     Pri  Scheduled          Name               Volume\n"
 msgstr ""
 
-#: src/dird/ua_status.c:347
+#: src/dird/ua_status.c:352
 msgid "===================================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:394
+#: src/dird/ua_status.c:399
 #, c-format
 msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:475
+#: src/dird/ua_status.c:480
 msgid "No Scheduled Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:492 src/stored/status.c:265
+#: src/dird/ua_status.c:497 src/stored/status.c:269
 msgid ""
 "\n"
 "Running Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:501
+#: src/dird/ua_status.c:506
 #, c-format
 msgid "Console connected at %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:509
+#: src/dird/ua_status.c:514
 msgid ""
 "No Jobs running.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:514
+#: src/dird/ua_status.c:519
 msgid " JobId Level   Name                       Status\n"
 msgstr ""
 
-#: src/dird/ua_status.c:515 src/filed/status.c:219 src/stored/status.c:333
+#: src/dird/ua_status.c:520 src/filed/status.c:219 src/stored/status.c:337
 msgid "======================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:524
+#: src/dird/ua_status.c:529
 msgid "is waiting execution"
 msgstr ""
 
-#: src/dird/ua_status.c:527
+#: src/dird/ua_status.c:532
 msgid "is running"
 msgstr ""
 
-#: src/dird/ua_status.c:530
+#: src/dird/ua_status.c:535
 msgid "is blocked"
 msgstr ""
 
-#: src/dird/ua_status.c:533
+#: src/dird/ua_status.c:538
 msgid "has terminated"
 msgstr ""
 
-#: src/dird/ua_status.c:536
+#: src/dird/ua_status.c:541
 msgid "has erred"
 msgstr ""
 
-#: src/dird/ua_status.c:539
+#: src/dird/ua_status.c:544
 msgid "has errors"
 msgstr ""
 
-#: src/dird/ua_status.c:542
+#: src/dird/ua_status.c:547
 msgid "has a fatal error"
 msgstr ""
 
-#: src/dird/ua_status.c:545
+#: src/dird/ua_status.c:550
 msgid "has verify differences"
 msgstr ""
 
-#: src/dird/ua_status.c:548
+#: src/dird/ua_status.c:553
 msgid "has been canceled"
 msgstr ""
 
-#: src/dird/ua_status.c:552
+#: src/dird/ua_status.c:557
 #, c-format
 msgid "is waiting on Client %s"
 msgstr ""
 
-#: src/dird/ua_status.c:558
+#: src/dird/ua_status.c:563
 #, c-format
 msgid "is waiting on Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:563
+#: src/dird/ua_status.c:568
 msgid "is waiting on max Storage jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:566
+#: src/dird/ua_status.c:571
 msgid "is waiting on max Client jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:569
+#: src/dird/ua_status.c:574
 msgid "is waiting on max Job jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:572
+#: src/dird/ua_status.c:577
 msgid "is waiting on max total jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:575
+#: src/dird/ua_status.c:580
 msgid "is waiting for its start time"
 msgstr ""
 
-#: src/dird/ua_status.c:578
+#: src/dird/ua_status.c:583
 msgid "is waiting for higher priority jobs to finish"
 msgstr ""
 
-#: src/dird/ua_status.c:583
+#: src/dird/ua_status.c:588
 #, c-format
 msgid "is in unknown state %c"
 msgstr ""
 
-#: src/dird/ua_status.c:597
+#: src/dird/ua_status.c:602
 msgid "is waiting for a mount request"
 msgstr ""
 
-#: src/dird/ua_status.c:604
+#: src/dird/ua_status.c:609
 msgid "is waiting for an appendable Volume"
 msgstr ""
 
-#: src/dird/ua_status.c:611
+#: src/dird/ua_status.c:616
 #, c-format
 msgid "is waiting for Client %s to connect to Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:627
+#: src/dird/ua_status.c:632
 #, c-format
 msgid "%6d %-6s  %-20s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:649 src/filed/status.c:209 src/stored/status.c:324
+#: src/dird/ua_status.c:654 src/filed/status.c:209 src/stored/status.c:328
 msgid "No Terminated Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:654 src/stored/status.c:329
+#: src/dird/ua_status.c:659 src/stored/status.c:333
 msgid ""
 "\n"
 "Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:655
+#: src/dird/ua_status.c:660
 msgid " JobId  Level     Files      Bytes     Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/ua_status.c:656
+#: src/dird/ua_status.c:661
 msgid "========================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:706 src/filed/status.c:266 src/stored/status.c:380
+#: src/dird/ua_status.c:692 src/filed/status.c:239 src/lib/util.c:184
+#: src/stored/status.c:357
+msgid "Created"
+msgstr ""
+
+#: src/dird/ua_status.c:696 src/filed/status.c:243 src/lib/util.c:197
+#: src/lib/util.c:264 src/stored/status.c:361
+msgid "Error"
+msgstr ""
+
+#: src/dird/ua_status.c:699 src/filed/status.c:246 src/stored/status.c:364
+msgid "Diffs"
+msgstr ""
+
+#: src/dird/ua_status.c:705 src/filed/status.c:252 src/lib/util.c:193
+#: src/lib/util.c:260 src/stored/btape.c:1160 src/stored/status.c:370
+#: src/wx-console/wxbconfigpanel.cpp:180
+msgid "OK"
+msgstr ""
+
+#: src/dird/ua_status.c:708 src/filed/status.c:255 src/stored/status.c:373
+msgid "Other"
+msgstr ""
+
+#: src/dird/ua_status.c:711 src/filed/status.c:266 src/stored/status.c:384
 #, c-format
 msgid "%6d  %-6s %8s %14s %-7s  %-8s %s\n"
 msgstr ""
 
+#: src/dird/ua_status.c:719 src/stored/btape.c:180
+msgid "\n"
+msgstr ""
+
 #: src/dird/ua_tree.c:57
 msgid "cd"
 msgstr ""
@@ -4457,7 +5255,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:102 src/dird/ua_tree.c:629 src/dird/ua_tree.c:637
+#: src/dird/ua_tree.c:102 src/dird/ua_tree.c:633 src/dird/ua_tree.c:641
 #, c-format
 msgid "cwd is: %s\n"
 msgstr ""
@@ -4466,48 +5264,79 @@ msgstr ""
 msgid "Illegal command. Enter \"done\" to exit.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:296 src/dird/ua_tree.c:307 src/dird/ua_tree.c:322
+#: src/dird/ua_tree.c:296 src/dird/ua_tree.c:307 src/dird/ua_tree.c:324
 msgid "No files marked.\n"
 msgstr ""
 
 #: src/dird/ua_tree.c:309
+msgid "1 file marked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:311
 #, c-format
-msgid "%s file%s marked.\n"
+msgid "%s files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:336
+#: src/dird/ua_tree.c:338
 msgid "No directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:338
+#: src/dird/ua_tree.c:340
+msgid "1 directory marked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:342
+#, c-format
+msgid "%s directories marked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:363
 #, c-format
-msgid "%s director%s marked.\n"
+msgid "%s total files/dirs. %s marked to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:370
+#: src/dird/ua_tree.c:374
 msgid "No file specification given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:621
+#: src/dird/ua_tree.c:502
+#, c-format
+msgid "Node %s has no children.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:583
+#, c-format
+msgid "%d total files; %d marked to be restored; %s bytes.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:625
 msgid "Invalid path given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:648 src/dird/ua_tree.c:659
+#: src/dird/ua_tree.c:652 src/dird/ua_tree.c:663
 msgid "No files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:661
+#: src/dird/ua_tree.c:665
+msgid "1 file unmarked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:667
 #, c-format
-msgid "%d file%s unmarked.\n"
+msgid "%d files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:672 src/dird/ua_tree.c:688
+#: src/dird/ua_tree.c:678 src/dird/ua_tree.c:694
 msgid "No directories unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:690
+#: src/dird/ua_tree.c:696
+msgid "1 directory unmarked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:698
 #, c-format
-msgid "%d director%s unmarked.\n"
+msgid "%d directories unmarked.\n"
 msgstr ""
 
 #: src/dird/verify.c:87
@@ -4579,7 +5408,7 @@ msgstr ""
 #: src/dird/verify.c:415
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  FileSet:                %s\n"
@@ -4598,10 +5427,10 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/verify.c:448
+#: src/dird/verify.c:450
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  FileSet:                %s\n"
@@ -4618,90 +5447,90 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/verify.c:522
+#: src/dird/verify.c:526
 #, c-format
 msgid ""
 "bird<filed: bad attributes, expected 3 fields got %d\n"
 " mslen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:566
+#: src/dird/verify.c:570
 #, c-format
 msgid "New file: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:567
+#: src/dird/verify.c:571
 #, c-format
 msgid "File not in catalog: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:591
+#: src/dird/verify.c:595
 #, c-format
 msgid "      st_ino   differ. Cat: %s File: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:600
+#: src/dird/verify.c:604
 #, c-format
 msgid "      st_mode  differ. Cat: %x File: %x\n"
 msgstr ""
 
-#: src/dird/verify.c:608
+#: src/dird/verify.c:612
 #, c-format
 msgid "      st_nlink differ. Cat: %d File: %d\n"
 msgstr ""
 
-#: src/dird/verify.c:616
+#: src/dird/verify.c:620
 #, c-format
 msgid "      st_uid   differ. Cat: %u File: %u\n"
 msgstr ""
 
-#: src/dird/verify.c:624
+#: src/dird/verify.c:628
 #, c-format
 msgid "      st_gid   differ. Cat: %u File: %u\n"
 msgstr ""
 
-#: src/dird/verify.c:632
+#: src/dird/verify.c:636
 #, c-format
 msgid "      st_size  differ. Cat: %s File: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:641
+#: src/dird/verify.c:645
 msgid "      st_atime differs\n"
 msgstr ""
 
-#: src/dird/verify.c:648
+#: src/dird/verify.c:652
 msgid "      st_mtime differs\n"
 msgstr ""
 
-#: src/dird/verify.c:655
+#: src/dird/verify.c:659
 msgid "      st_ctime differs\n"
 msgstr ""
 
-#: src/dird/verify.c:662
+#: src/dird/verify.c:666
 #, c-format
 msgid "      st_size  decrease. Cat: %s File: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:701
+#: src/dird/verify.c:705
 #, c-format
 msgid "      %s not same. File=%s Cat=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:704
+#: src/dird/verify.c:708
 #, c-format
 msgid "      %s differs.\n"
 msgstr ""
 
-#: src/dird/verify.c:716
+#: src/dird/verify.c:720
 #, c-format
 msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
 msgstr ""
 
-#: src/dird/verify.c:753
+#: src/dird/verify.c:757
 msgid "The following files are missing:\n"
 msgstr ""
 
-#: src/dird/verify.c:767
+#: src/dird/verify.c:771 src/tools/testfind.c:338
 #, c-format
 msgid "File: %s\n"
 msgstr ""
@@ -4734,6 +5563,34 @@ msgstr ""
 msgid "Choose catalog item to update"
 msgstr ""
 
+#: src/dird/ua_update.c:103 src/dird/ua_update.c:435
+msgid "Append"
+msgstr ""
+
+#: src/dird/ua_update.c:104 src/dird/ua_update.c:436
+msgid "Archive"
+msgstr ""
+
+#: src/dird/ua_update.c:105 src/dird/ua_update.c:437
+msgid "Disabled"
+msgstr ""
+
+#: src/dird/ua_update.c:107 src/dird/ua_update.c:439
+msgid "Used"
+msgstr ""
+
+#: src/dird/ua_update.c:108 src/dird/ua_update.c:440
+msgid "Cleaning"
+msgstr ""
+
+#: src/dird/ua_update.c:109 src/dird/ua_update.c:355 src/dird/ua_update.c:442
+msgid "Recycle"
+msgstr ""
+
+#: src/dird/ua_update.c:110 src/dird/ua_update.c:444
+msgid "Read-Only"
+msgstr ""
+
 #: src/dird/ua_update.c:122
 #, c-format
 msgid "Invalid VolStatus specified: %s\n"
@@ -4841,10 +5698,6 @@ msgstr ""
 msgid "MaxVolBytes"
 msgstr ""
 
-#: src/dird/ua_update.c:355
-msgid "Recycle"
-msgstr ""
-
 #: src/dird/ua_update.c:357
 msgid "FromPool"
 msgstr ""
@@ -4919,6 +5772,10 @@ msgstr ""
 msgid "Possible Values are:\n"
 msgstr ""
 
+#: src/dird/ua_update.c:441
+msgid "Purged"
+msgstr ""
+
 #: src/dird/ua_update.c:445
 msgid "Choose new Volume Status"
 msgstr ""
@@ -5053,6 +5910,10 @@ msgstr ""
 msgid "Enter new Pool name: "
 msgstr ""
 
+#: src/dird/ua_update.c:598
+msgid "Selection done.\n"
+msgstr ""
+
 #: src/dird/ua_update.c:631
 #, c-format
 msgid "db_update_pool_record returned %d. ERR=%s\n"
@@ -5078,26 +5939,38 @@ msgstr ""
 msgid "VolumeName"
 msgstr ""
 
-#: src/filed/authenticate.c:49 src/filed/authenticate.c:50
+#: src/dird/pythondir.c:104 src/filed/pythonfd.c:102 src/filed/pythonfd.c:156
+#: src/filed/pythonfd.c:220 src/stored/pythonsd.c:95 src/stored/pythonsd.c:160
+msgid "Job pointer not found."
+msgstr ""
+
+#: src/dird/pythondir.c:136
+msgid "Pool record not found."
+msgstr ""
+
+#: src/dird/pythondir.c:163 src/filed/pythonfd.c:133 src/stored/pythonsd.c:137
 #, c-format
-msgid "I only authenticate directors, not %d\n"
+msgid "Attribute %s not found."
+msgstr ""
+
+#: src/dird/pythondir.c:206 src/dird/pythondir.c:212 src/filed/pythonfd.c:175
+#: src/stored/pythonsd.c:177
+msgid "Read-only attribute"
 msgstr ""
 
-#: src/filed/authenticate.c:54 src/filed/authenticate.c:56
-#: src/stored/authenticate.c:57 src/stored/authenticate.c:59
+#: src/filed/authenticate.c:50
 #, c-format
-msgid "Bad Hello command from Director at %s. Len=%d.\n"
+msgid "I only authenticate directors, not %d\n"
 msgstr ""
 
-#: src/filed/authenticate.c:66 src/filed/authenticate.c:68
-#: src/stored/authenticate.c:68 src/stored/authenticate.c:70
+#: src/filed/authenticate.c:56 src/stored/authenticate.c:59
 #, c-format
-msgid "Bad Hello command from Director at %s: %s\n"
+msgid "Bad Hello command from Director at %s. Len=%d.\n"
 msgstr ""
 
-#: src/filed/authenticate.c:80 src/stored/authenticate.c:83
+#: src/filed/authenticate.c:68 src/stored/authenticate.c:70
 #, c-format
-msgid "Connection from unknown Director %s at %s rejected.\n"
+msgid "Bad Hello command from Director at %s: %s\n"
 msgstr ""
 
 #: src/filed/authenticate.c:82 src/stored/authenticate.c:85
@@ -5191,7 +6064,7 @@ msgstr ""
 msgid "     Cannot open %s: ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:293
+#: src/filed/backup.c:293 src/filed/verify.c:229
 #, c-format
 msgid "     Cannot open resource fork for %s: ERR=%s.\n"
 msgstr ""
@@ -5222,9 +6095,17 @@ msgstr ""
 msgid "Too many errors.\n"
 msgstr ""
 
-#: src/filed/filed.c:63
+#: src/filed/backup.c:535
+#, c-format
+msgid "Error reading ACL of %s\n"
+msgstr ""
+
+#: src/filed/filed.c:62
+#, c-format
 msgid ""
-")\n"
+"Copyright (C) 2000-2005 Kern Sibbald\n"
+"\n"
+"Version: %s (%s)\n"
 "\n"
 "Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
 "        -c <file>   use <file> as configuration file\n"
@@ -5240,38 +6121,33 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/filed/filed.c:279
+#: src/filed/filed.c:282
 #, c-format
 msgid ""
 "No File daemon resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/filed/filed.c:284
+#: src/filed/filed.c:287
 #, c-format
 msgid "Only one Client resource permitted in %s\n"
 msgstr ""
 
-#: src/filed/filed.c:307
+#: src/filed/filed.c:310
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon in %s.\n"
 msgstr ""
 
-#: src/filed/filed.c:336
+#: src/filed/filed.c:339
 #, c-format
 msgid "No Director resource defined in %s\n"
 msgstr ""
 
-#: src/filed/filed_conf.c:296
-#, c-format
-msgid "%s item is required in %s resource, but not found.\n"
-msgstr ""
-
-#: src/filed/filed_conf.c:327 src/filed/filed_conf.c:357
+#: src/filed/job.c:323
 #, c-format
-msgid "Unknown resource type %d\n"
+msgid "2901 Job %s not found.\n"
 msgstr ""
 
 #: src/filed/job.c:339
@@ -5283,11 +6159,20 @@ msgstr ""
 msgid "2902 Error scanning cancel command.\n"
 msgstr ""
 
+#: src/filed/job.c:361
+#, c-format
+msgid "2991 Bad setdebug command: %s\n"
+msgstr ""
+
 #: src/filed/job.c:377
 #, c-format
 msgid "Bad estimate command: %s"
 msgstr ""
 
+#: src/filed/job.c:378
+msgid "2992 Bad estimate command.\n"
+msgstr ""
+
 #: src/filed/job.c:401
 #, c-format
 msgid "Bad Job Command: %s"
@@ -5298,11 +6183,19 @@ msgstr ""
 msgid "Bad RunBeforeJob command: %s\n"
 msgstr ""
 
+#: src/filed/job.c:422 src/filed/job.c:435
+msgid "2905 Bad RunBeforeJob command.\n"
+msgstr ""
+
 #: src/filed/job.c:448
 #, c-format
 msgid "Bad RunAfter command: %s\n"
 msgstr ""
 
+#: src/filed/job.c:449
+msgid "2905 Bad RunAfterJob command.\n"
+msgstr ""
+
 #: src/filed/job.c:475
 #, c-format
 msgid "%s could not execute. ERR=%s\n"
@@ -5328,6 +6221,21 @@ msgstr ""
 msgid "Cannot open FileSet input file: %s. ERR=%s\n"
 msgstr ""
 
+#: src/filed/job.c:678
+#, c-format
+msgid "REGEX %s compile error. ERR=%s\n"
+msgstr ""
+
+#: src/filed/job.c:732
+#, c-format
+msgid "Invalid FileSet command: %s\n"
+msgstr ""
+
+#: src/filed/job.c:901 src/findlib/match.c:184
+#, c-format
+msgid "Unknown include/exclude option: %c\n"
+msgstr ""
+
 #: src/filed/job.c:961 src/stored/fd_cmds.c:329
 #, c-format
 msgid "Could not create bootstrap file %s: ERR=%s\n"
@@ -5338,11 +6246,21 @@ msgstr ""
 msgid "DIR and FD clocks differ by %d seconds, FD automatically adjusting.\n"
 msgstr ""
 
+#: src/filed/job.c:1068
+#, c-format
+msgid "Unknown backup level: %s\n"
+msgstr ""
+
 #: src/filed/job.c:1080
 #, c-format
 msgid "Bad level command: %s\n"
 msgstr ""
 
+#: src/filed/job.c:1101
+#, c-format
+msgid "Bad session command: %s"
+msgstr ""
+
 #: src/filed/job.c:1122
 #, c-format
 msgid "Bad storage command: %s"
@@ -5407,6 +6325,16 @@ msgstr ""
 msgid "Bad status %d returned from Storage Daemon.\n"
 msgstr ""
 
+#: src/filed/job.c:1331
+#, c-format
+msgid "2994 Bad verify command: %s\n"
+msgstr ""
+
+#: src/filed/job.c:1346 src/filed/job.c:1385
+#, c-format
+msgid "2994 Bad verify level: %s\n"
+msgstr ""
+
 #: src/filed/job.c:1425
 #, c-format
 msgid "Bad replace command. CMD=%s\n"
@@ -5464,19 +6392,19 @@ msgid "Logic error: output file should not be open\n"
 msgstr ""
 
 #: src/filed/restore.c:218 src/filed/verify_vol.c:142
-#: src/stored/bextract.c:285 src/stored/bls.c:368 src/stored/bscan.c:640
+#: src/stored/bextract.c:289 src/stored/bls.c:372 src/stored/bscan.c:649
 #, c-format
 msgid "Record header file index %ld not equal record index %ld\n"
 msgstr ""
 
-#: src/filed/restore.c:231 src/stored/bextract.c:294
+#: src/filed/restore.c:231 src/stored/bextract.c:298
 #, c-format
 msgid "%s stream not supported on this Client.\n"
 msgstr ""
 
 #: src/filed/restore.c:308
 #, c-format
-msgid "     Cannot open resource fork for %s\n"
+msgid "     Cannot open resource fork for %s.\n"
 msgstr ""
 
 #: src/filed/restore.c:331
@@ -5489,7 +6417,17 @@ msgstr ""
 msgid "     Could not set Finder Info on %s\n"
 msgstr ""
 
-#: src/filed/restore.c:391 src/stored/bextract.c:445
+#: src/filed/restore.c:347
+#, c-format
+msgid "Can't restore ACL of %s\n"
+msgstr ""
+
+#: src/filed/restore.c:359
+#, c-format
+msgid "Can't restore default ACL of %s\n"
+msgstr ""
+
+#: src/filed/restore.c:391 src/stored/bextract.c:449
 #, c-format
 msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
 msgstr ""
@@ -5515,7 +6453,41 @@ msgstr ""
 msgid "%d non-supported acl streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:498 src/stored/bextract.c:383
+#: src/filed/restore.c:450
+msgid "None"
+msgstr ""
+
+#: src/filed/restore.c:454
+msgid "Zlib errno"
+msgstr ""
+
+#: src/filed/restore.c:456
+msgid "Zlib stream error"
+msgstr ""
+
+#: src/filed/restore.c:458
+msgid "Zlib data error"
+msgstr ""
+
+#: src/filed/restore.c:460
+msgid "Zlib memory error"
+msgstr ""
+
+#: src/filed/restore.c:462
+msgid "Zlib buffer error"
+msgstr ""
+
+#: src/filed/restore.c:464
+msgid "Zlib version error"
+msgstr ""
+
+#: src/filed/restore.c:466 src/lib/util.c:546 src/lib/util.c:556
+#: src/lib/util.c:564 src/lib/util.c:571 src/lib/util.c:578 src/lib/util.c:592
+#: src/lib/util.c:602 src/lib/util.c:609 src/lib/util.c:620
+msgid "*none*"
+msgstr ""
+
+#: src/filed/restore.c:498 src/stored/bextract.c:387
 #, c-format
 msgid "Seek to %s error on %s: ERR=%s\n"
 msgstr ""
@@ -5525,15 +6497,25 @@ msgstr ""
 msgid "Uncompression error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:530
+#: src/filed/restore.c:530 src/stored/bextract.c:421
 msgid "GZIP data stream found, but GZIP not configured!\n"
 msgstr ""
 
-#: src/filed/restore.c:539 src/stored/bextract.c:355 src/stored/bextract.c:405
+#: src/filed/restore.c:539 src/stored/bextract.c:359 src/stored/bextract.c:409
 #, c-format
 msgid "Write error on %s: %s\n"
 msgstr ""
 
+#: src/filed/status.c:67
+#, c-format
+msgid "%s Version: %s (%s) %s %s %s %s\n"
+msgstr ""
+
+#: src/filed/status.c:71
+#, c-format
+msgid "Daemon started %s, %d Job%s run since started.\n"
+msgstr ""
+
 #: src/filed/status.c:125
 #, c-format
 msgid " Sizeof: off_t=%d size_t=%d debug=%d trace=%d\n"
@@ -5558,7 +6540,7 @@ msgstr ""
 msgid "    %s%s Job started: %s\n"
 msgstr ""
 
-#: src/filed/status.c:165 src/stored/status.c:292
+#: src/filed/status.c:165 src/stored/status.c:296
 #, c-format
 msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
 msgstr ""
@@ -5577,10 +6559,6 @@ msgstr ""
 msgid "    SDSocket closed.\n"
 msgstr ""
 
-#: src/filed/status.c:196
-msgid "====\n"
-msgstr ""
-
 #: src/filed/status.c:215
 msgid "Terminated Jobs:\n"
 msgstr ""
@@ -5589,29 +6567,37 @@ msgstr ""
 msgid " JobId  Level     Files         Bytes  Status   Finished        Name \n"
 msgstr ""
 
-#: src/filed/status.c:321 src/filed/status.c:347 src/stored/status.c:464
-#: src/stored/status.c:489
+#: src/filed/status.c:321 src/filed/status.c:347 src/stored/status.c:468
+#: src/stored/status.c:493
 #, c-format
 msgid "Bad .status command: %s\n"
 msgstr ""
 
-#: src/filed/status.c:385 src/stored/status.c:419
+#: src/filed/status.c:322
+msgid "2900 Bad .status command, missing argument.\n"
+msgstr ""
+
+#: src/filed/status.c:348
+msgid "2900 Bad .status command, wrong argument.\n"
+msgstr ""
+
+#: src/filed/status.c:385 src/stored/status.c:423
 msgid "Init Catalog"
 msgstr ""
 
-#: src/filed/status.c:388 src/stored/status.c:422
+#: src/filed/status.c:388 src/stored/status.c:426
 msgid "Volume to Catalog"
 msgstr ""
 
-#: src/filed/status.c:391 src/stored/status.c:425
+#: src/filed/status.c:391 src/stored/status.c:429
 msgid "Disk to Catalog"
 msgstr ""
 
-#: src/filed/status.c:394 src/stored/status.c:428
+#: src/filed/status.c:394 src/stored/status.c:432
 msgid "Data"
 msgstr ""
 
-#: src/filed/status.c:400 src/lib/util.c:351 src/stored/status.c:434
+#: src/filed/status.c:400 src/lib/util.c:351 src/stored/status.c:438
 msgid "Unknown Job Level"
 msgstr ""
 
@@ -5665,11 +6651,6 @@ msgstr ""
 msgid "Network error in send to Director: ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify.c:229
-#, c-format
-msgid "     Cannot open resource fork for %s: ERR=%s\n"
-msgstr ""
-
 #: src/filed/verify.c:284
 #, c-format
 msgid "Error reading file %s: ERR=%s\n"
@@ -5688,6 +6669,16 @@ msgstr ""
 msgid "FDName"
 msgstr ""
 
+#: src/filed/pythonfd.c:150 src/stored/pythonsd.c:154
+#, c-format
+msgid "Cannot delete attribute %s"
+msgstr ""
+
+#: src/filed/pythonfd.c:168 src/filed/pythonfd.c:184 src/stored/pythonsd.c:187
+#, c-format
+msgid "Cannot find attribute %s"
+msgstr ""
+
 #: src/findlib/attribs.c:340
 #, c-format
 msgid "File size of restored file %s not correct. Original %s, restored %s.\n"
@@ -5723,6 +6714,62 @@ msgstr ""
 msgid "Error in %s: ERR=%s\n"
 msgstr ""
 
+#: src/findlib/bfile.c:67
+msgid "GZIP data"
+msgstr ""
+
+#: src/findlib/bfile.c:69
+msgid "GZIP sparse data"
+msgstr ""
+
+#: src/findlib/bfile.c:71
+msgid "Win32 data"
+msgstr ""
+
+#: src/findlib/bfile.c:73
+msgid "Win32 GZIP data"
+msgstr ""
+
+#: src/findlib/bfile.c:75
+msgid "File attributes"
+msgstr ""
+
+#: src/findlib/bfile.c:77
+msgid "File data"
+msgstr ""
+
+#: src/findlib/bfile.c:79
+msgid "MD5 signature"
+msgstr ""
+
+#: src/findlib/bfile.c:81
+msgid "Extended attributes"
+msgstr ""
+
+#: src/findlib/bfile.c:83
+msgid "Sparse data"
+msgstr ""
+
+#: src/findlib/bfile.c:85
+msgid "Program names"
+msgstr ""
+
+#: src/findlib/bfile.c:87
+msgid "Program data"
+msgstr ""
+
+#: src/findlib/bfile.c:89
+msgid "SHA1 signature"
+msgstr ""
+
+#: src/findlib/bfile.c:91
+msgid "HFS+ resource fork"
+msgstr ""
+
+#: src/findlib/bfile.c:93
+msgid "HFS+ Finder Info"
+msgstr ""
+
 #: src/findlib/create_file.c:86
 #, c-format
 msgid "File skipped. Not newer: %s\n"
@@ -5743,6 +6790,12 @@ msgstr ""
 msgid "File %s already exists and could not be replaced. ERR=%s.\n"
 msgstr ""
 
+#: src/findlib/create_file.c:170 src/findlib/create_file.c:271
+#: src/findlib/create_file.c:322
+#, c-format
+msgid "bpkt already open fid=%d\n"
+msgstr ""
+
 #: src/findlib/create_file.c:192
 msgid "Could not save_dirn"
 msgstr ""
@@ -5767,11 +6820,6 @@ msgstr ""
 msgid "Cannot make node %s: ERR=%s\n"
 msgstr ""
 
-#: src/findlib/create_file.c:276 src/findlib/create_file.c:333
-#, c-format
-msgid "Could not open %s: ERR=%s\n"
-msgstr ""
-
 #: src/findlib/create_file.c:291
 #, c-format
 msgid "Could not symlink %s -> %s: ERR=%s\n"
@@ -5797,6 +6845,10 @@ msgstr ""
 msgid "Zero length filename: %s\n"
 msgstr ""
 
+#: src/findlib/enable_priv.c:85
+msgid "AdjustTokenPrivileges set "
+msgstr ""
+
 #: src/findlib/find_one.c:168
 #, c-format
 msgid "Top level directory \"%s\" has an unlisted fstype\n"
@@ -5834,6 +6886,41 @@ msgstr ""
 msgid "Cannot change permissions of %s: ERR=%s\n"
 msgstr ""
 
+#: src/findlib/save-cwd.c:48
+#, c-format
+msgid "Cannot open current directory: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:62
+#, c-format
+msgid "Current directory: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:84
+#, c-format
+msgid "Cannot get current directory: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:105
+#, c-format
+msgid "Cannot return to %s from %s: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:109
+#, c-format
+msgid "Cannot return to saved working directory from %s: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:115
+#, c-format
+msgid "Cannot return to %s: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:119
+#, c-format
+msgid "Cannot return to saved working directory: %s\n"
+msgstr ""
+
 #: src/gnome2-console/authenticate.c:74
 #, c-format
 msgid "%s: Director authorization problem.\n"
@@ -5863,13 +6950,7 @@ msgstr ""
 msgid ""
 "Copyright (C) 2002-2005 Kern Sibbald\n"
 "\n"
-"Version: "
-msgstr ""
-
-#: src/gnome2-console/console.c:89
-#, c-format
-msgid ""
-") %s %s %s\n"
+"Version: %s (%s) %s %s %s\n"
 "\n"
 "Usage: gnome-console [-s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
@@ -5880,35 +6961,72 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/gnome2-console/console.c:215
+#: src/gnome2-console/console.c:219
 #, c-format
 msgid "Pthread cond init error = %s\n"
 msgstr ""
 
-#: src/gnome2-console/console.c:357
+#: src/gnome2-console/console.c:361
 msgid " Not Connected"
 msgstr ""
 
-#: src/gnome2-console/console.c:478
+#: src/gnome2-console/console.c:482
 #, c-format
 msgid " Connecting to Director %s:%d"
 msgstr ""
 
-#: src/gnome2-console/console.c:479
+#: src/gnome2-console/console.c:483
 #, c-format
 msgid ""
 "Connecting to Director %s:%d\n"
 "\n"
 msgstr ""
 
-#: src/gnome2-console/console.c:591
+#: src/gnome2-console/console.c:498 src/wx-console/console_thread.cpp:354
+#, c-format
+msgid "Passphrase for Console \"%s\" TLS private key: "
+msgstr ""
+
+#: src/gnome2-console/console.c:520 src/wx-console/console_thread.cpp:375
+#, c-format
+msgid "Passphrase for Director \"%s\" TLS private key: "
+msgstr ""
+
+#: src/gnome2-console/console.c:539 src/tray-monitor/tray-monitor.c:860
+#: src/wx-console/console_thread.cpp:393
+msgid "Director daemon"
+msgstr ""
+
+#: src/gnome2-console/console.c:551
+msgid " Initializing ..."
+msgstr ""
+
+#: src/gnome2-console/console.c:587
+msgid " Connected"
+msgstr ""
+
+#: src/gnome2-console/console.c:595
 msgid " Processing command ..."
 msgstr ""
 
-#: src/gnome2-console/console.c:626
+#: src/gnome2-console/console.c:630
 msgid " At prompt waiting for input ..."
 msgstr ""
 
+#: src/gnome2-console/console.c:750
+msgid " Ready"
+msgstr ""
+
+#: src/gnome2-console/console_conf.c:135
+#, c-format
+msgid "Console: name=%s\n"
+msgstr ""
+
+#: src/gnome2-console/console_conf.c:138
+#, c-format
+msgid "ConsoleFont: name=%s font face=%s\n"
+msgstr ""
+
 #: src/gnome2-console/interface.c:32
 msgid "_Connect"
 msgstr ""
@@ -5985,7 +7103,8 @@ msgstr ""
 msgid "Bacula Console"
 msgstr ""
 
-#: src/gnome2-console/interface.c:231
+#: src/gnome2-console/interface.c:231 src/wx-console/wxbmainframe.cpp:229
+#: src/wx-console/wxbmainframe.cpp:589
 msgid "Connect"
 msgstr ""
 
@@ -6003,6 +7122,8 @@ msgid "Msgs"
 msgstr ""
 
 #: src/gnome2-console/interface.c:261 src/lib/util.c:298
+#: src/wx-console/wxbrestorepanel.cpp:426
+#: src/wx-console/wxbrestorepanel.cpp:1915
 msgid "Restore"
 msgstr ""
 
@@ -6022,7 +7143,7 @@ msgstr ""
 msgid " Status: "
 msgstr ""
 
-#: src/gnome2-console/interface.c:326 src/gnome2-console/interface.c:1692
+#: src/gnome2-console/interface.c:326
 msgid "  "
 msgstr ""
 
@@ -6050,10 +7171,6 @@ msgstr ""
 msgid "Select Director"
 msgstr ""
 
-#: src/gnome2-console/interface.c:565
-msgid "         "
-msgstr ""
-
 #: src/gnome2-console/interface.c:708 src/gnome2-console/interface.c:1616
 msgid "Job:"
 msgstr ""
@@ -6062,12 +7179,8 @@ msgstr ""
 msgid "   Type:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:747 src/gnome2-console/interface.c:777
-#: src/gnome2-console/interface.c:1273 src/gnome2-console/interface.c:1664
-msgid " "
-msgstr ""
-
 #: src/gnome2-console/interface.c:757 src/gnome2-console/interface.c:1644
+#: src/wx-console/wxbrestorepanel.cpp:1828
 msgid "Client:"
 msgstr ""
 
@@ -6075,7 +7188,7 @@ msgstr ""
 msgid "FileSet: "
 msgstr ""
 
-#: src/gnome2-console/interface.c:813
+#: src/gnome2-console/interface.c:813 src/wx-console/wxbrestorepanel.cpp:1834
 msgid "Priority:"
 msgstr ""
 
@@ -6083,26 +7196,13 @@ msgstr ""
 msgid "Level:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:857
-msgid "             "
-msgstr ""
-
 #: src/gnome2-console/interface.c:866 src/gnome2-console/interface.c:1418
 #: src/gnome2-console/interface.c:1700
 msgid "Pool:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:886 src/gnome2-console/interface.c:915
-#: src/gnome2-console/interface.c:943 src/gnome2-console/interface.c:961
-#: src/gnome2-console/interface.c:979 src/gnome2-console/interface.c:997
-#: src/gnome2-console/interface.c:1001 src/gnome2-console/interface.c:1471
-#: src/gnome2-console/interface.c:1720 src/gnome2-console/interface.c:1748
-#: src/gnome2-console/interface.c:1765 src/gnome2-console/interface.c:1769
-msgid "   "
-msgstr ""
-
 #: src/gnome2-console/interface.c:895 src/gnome2-console/interface.c:1393
-#: src/gnome2-console/interface.c:1728
+#: src/gnome2-console/interface.c:1728 src/wx-console/wxbrestorepanel.cpp:1830
 msgid "Storage:"
 msgstr ""
 
@@ -6114,11 +7214,11 @@ msgstr ""
 msgid "Where: "
 msgstr ""
 
-#: src/gnome2-console/interface.c:970
+#: src/gnome2-console/interface.c:970 src/wx-console/wxbrestorepanel.cpp:1832
 msgid "When:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:988
+#: src/gnome2-console/interface.c:988 src/wx-console/wxbrestorepanel.cpp:1813
 msgid "Bootstrap:"
 msgstr ""
 
@@ -6170,11 +7270,45 @@ msgstr ""
 msgid "Progress"
 msgstr ""
 
-#: src/gnome2-console/support.c:60 src/gnome2-console/support.c:85
-#, c-format
+#: src/gnome2-console/restore.c:121
+msgid "Mark"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121
+msgid "Mode"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:330
+msgid "User"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:334
+msgid "Group"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:318
+msgid "Size"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:322
+msgid "Date"
+msgstr ""
+
+#: src/gnome2-console/support.c:41
+#, c-format
+msgid "Widget not found: %s"
+msgstr ""
+
+#: src/gnome2-console/support.c:60 src/gnome2-console/support.c:85
+#, c-format
 msgid "Couldn't find pixmap file: %s"
 msgstr ""
 
+#: src/gnome2-console/support.c:92
+#, c-format
+msgid "Failed to load pixbuf file: %s: %s\n"
+msgstr ""
+
 #: src/lib/address_conf.c:55
 #, c-format
 msgid "Only ipv4 and ipv6 are supported (%d)\n"
@@ -6200,6 +7334,20 @@ msgstr ""
 msgid "Can't add default address (%s)\n"
 msgstr ""
 
+#: src/lib/address_conf.c:285
+msgid "the old style addresses cannot be mixed with new style"
+msgstr ""
+
+#: src/lib/address_conf.c:308
+#, c-format
+msgid "can't resolve service(%s)"
+msgstr ""
+
+#: src/lib/address_conf.c:318
+#, c-format
+msgid "can't resolve hostname(%s) %s"
+msgstr ""
+
 #: src/lib/address_conf.c:407
 #, c-format
 msgid "Expected a block begin { , got: %s"
@@ -6291,10 +7439,37 @@ msgstr ""
 msgid "Error scanning attributes: %s\n"
 msgstr ""
 
+#: src/lib/berrno.c:66
+msgid "Child exited normally."
+msgstr ""
+
+#: src/lib/berrno.c:73
+msgid "Unknown error during program execvp"
+msgstr ""
+
+#: src/lib/berrno.c:76
+#, c-format
+msgid "Child exited with code %d"
+msgstr ""
+
+#: src/lib/berrno.c:84
+#, c-format
+msgid "Child died from signal %d: %s"
+msgstr ""
+
 #: src/lib/berrno.c:90
 msgid "Invalid errno. No error message possible."
 msgstr ""
 
+#: src/lib/bget_msg.c:91
+msgid "Status OK\n"
+msgstr ""
+
+#: src/lib/bget_msg.c:95
+#, c-format
+msgid "bget_msg: unknown signal %d\n"
+msgstr ""
+
 #: src/lib/bnet.c:102
 #, c-format
 msgid "Attr spool write error. ERR=%s\n"
@@ -6360,36 +7535,92 @@ msgstr ""
 msgid "TLS not configured.\n"
 msgstr ""
 
+#: src/lib/bnet.c:607
+msgid "No problem."
+msgstr ""
+
+#: src/lib/bnet.c:610
+msgid "Authoritative answer for host not found."
+msgstr ""
+
+#: src/lib/bnet.c:613
+msgid "Non-authoritative for host not found, or ServerFail."
+msgstr ""
+
+#: src/lib/bnet.c:616
+msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
+msgstr ""
+
+#: src/lib/bnet.c:619
+msgid "Valid name, no data record of resquested type."
+msgstr ""
+
+#: src/lib/bnet.c:622
+msgid "Unknown error."
+msgstr ""
+
+#: src/lib/bnet.c:757
+#, c-format
+msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+msgstr ""
+
+#: src/lib/bnet.c:777
+#, c-format
+msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
+msgstr ""
+
 #: src/lib/bnet.c:786 src/lib/bnet.c:811 src/lib/bnet_server.c:200
 #: src/lib/bnet_server.c:358
 #, c-format
 msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bnet.c:847
+#: src/lib/bnet.c:842
+#, c-format
+msgid ""
+"Could not connect to %s on %s:%d. ERR=%s\n"
+"Retrying ...\n"
+msgstr ""
+
+#: src/lib/bnet.c:848
 #, c-format
 msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet.c:925
+#: src/lib/bnet.c:926
 msgid "Could not malloc BSOCK data buffer\n"
 msgstr ""
 
-#: src/lib/bnet.c:932 src/lib/bnet.c:956
+#: src/lib/bnet.c:933 src/lib/bnet.c:957
 #, c-format
 msgid "sockopt error: %s\n"
 msgstr ""
 
-#: src/lib/bnet.c:938 src/lib/bnet.c:962
+#: src/lib/bnet.c:939 src/lib/bnet.c:963
 #, c-format
 msgid "Warning network buffer = %d bytes not max size.\n"
 msgstr ""
 
-#: src/lib/bnet.c:942 src/lib/bnet.c:966
+#: src/lib/bnet.c:943 src/lib/bnet.c:967
 #, c-format
 msgid "Network buffer size %d not multiple of tape block size.\n"
 msgstr ""
 
+#: src/lib/bnet.c:987 src/lib/bnet.c:1020
+#, c-format
+msgid "fcntl F_GETFL error. ERR=%s\n"
+msgstr ""
+
+#: src/lib/bnet.c:993 src/lib/bnet.c:1026 src/lib/bnet.c:1050
+#, c-format
+msgid "fcntl F_SETFL error. ERR=%s\n"
+msgstr ""
+
+#: src/lib/bnet.c:1104
+#, c-format
+msgid "Unknown sig %d"
+msgstr ""
+
 #: src/lib/bnet_pkt.c:89 src/lib/bnet_pkt.c:147
 #, c-format
 msgid "Unknown BPKT type: %d\n"
@@ -6407,7 +7638,7 @@ msgstr ""
 
 #: src/lib/bnet_server.c:124
 #, c-format
-msgid "Cannot bind port %d: ERR=%s. Retrying ...\n"
+msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
 msgstr ""
 
 #: src/lib/bnet_server.c:129
@@ -6463,6 +7694,35 @@ msgstr ""
 msgid "Socket accept error for %s. ERR=%s\n"
 msgstr ""
 
+#: src/lib/bpipe.c:282 src/lib/bpipe.c:357
+msgid "Program killed by Bacula watchdog (timeout)\n"
+msgstr ""
+
+#: src/lib/bshm.c:69
+#, c-format
+msgid "shmget failure key = %x\n"
+msgstr ""
+
+#: src/lib/bshm.c:77
+#, c-format
+msgid "Could not get %d bytes of shared memory: %s\n"
+msgstr ""
+
+#: src/lib/bshm.c:102
+#, c-format
+msgid "Could not attach shared memory: %s\n"
+msgstr ""
+
+#: src/lib/bshm.c:123
+#, c-format
+msgid "Error detaching shared memory: %s\n"
+msgstr ""
+
+#: src/lib/bshm.c:139
+#, c-format
+msgid "Could not destroy shared memory: %s\n"
+msgstr ""
+
 #: src/lib/bsys.c:176 src/lib/bsys.c:192 src/lib/bsys.c:202 src/lib/bsys.c:214
 #, c-format
 msgid "Out of memory: ERR=%s\n"
@@ -6499,6 +7759,11 @@ msgstr ""
 msgid "Mutex unlock failure. ERR=%s\n"
 msgstr ""
 
+#: src/lib/bsys.c:396
+#, c-format
+msgid "Memset for %d bytes at %s:%d\n"
+msgstr ""
+
 #: src/lib/bsys.c:425
 #, c-format
 msgid "Cannot open pid file. %s ERR=%s\n"
@@ -6516,11 +7781,16 @@ msgstr ""
 msgid "Could not open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:535 src/lib/bsys.c:536
+#: src/lib/bsys.c:536
 #, c-format
 msgid "Could not create state file. %s ERR=%s\n"
 msgstr ""
 
+#: src/lib/bsys.c:552
+#, c-format
+msgid "Write final hdr error: ERR=%s\n"
+msgstr ""
+
 #: src/lib/bsys.c:574
 #, c-format
 msgid "Could not find specified group: %s\n"
@@ -6541,6 +7811,19 @@ msgstr ""
 msgid "Could not set specified userid: %s\n"
 msgstr ""
 
+#: src/lib/btimers.c:239
+msgid "stop_btimer called with NULL btimer_id\n"
+msgstr ""
+
+#: src/lib/cram-md5.c:80 src/lib/cram-md5.c:105
+msgid "1999 Authorization failed.\n"
+msgstr ""
+
+#: src/lib/daemon.c:58
+#, c-format
+msgid "Cannot fork to become daemon: %s\n"
+msgstr ""
+
 #: src/lib/edit.c:400
 #, c-format
 msgid "Illegal character \"%c\" in name.\n"
@@ -6550,6 +7833,14 @@ msgstr ""
 msgid "Name too long.\n"
 msgstr ""
 
+#: src/lib/events.c:161
+msgid "Events not available"
+msgstr ""
+
+#: src/lib/jcr.c:277
+msgid "NULL jcr.\n"
+msgstr ""
+
 #: src/lib/jcr.c:396
 #, c-format
 msgid "JCR use_count=%d JobId=%d\n"
@@ -6574,12 +7865,12 @@ msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
 msgstr ""
 
-#: src/lib/lex.c:79 src/wx-console/console_thread.cpp:190
+#: src/lib/lex.c:79 src/wx-console/console_thread.cpp:189
 #, c-format
 msgid "Problem probably begins at line %d.\n"
 msgstr ""
 
-#: src/lib/lex.c:84
+#: src/lib/lex.c:84 src/wx-console/console_thread.cpp:194
 #, c-format
 msgid ""
 "Config error: %s\n"
@@ -6593,11 +7884,47 @@ msgstr ""
 msgid "Config error: %s\n"
 msgstr ""
 
+#: src/lib/lex.c:108
+msgid "Close of NULL file\n"
+msgstr ""
+
+#: src/lib/lex.c:181
+msgid "get_char: called after EOF\n"
+msgstr ""
+
 #: src/lib/lex.c:220
 #, c-format
 msgid "Config token too long, file: %s, line %d, begins at line %d\n"
 msgstr ""
 
+#: src/lib/lex.c:244
+msgid "none"
+msgstr ""
+
+#: src/lib/lex.c:245
+msgid "comment"
+msgstr ""
+
+#: src/lib/lex.c:246
+msgid "number"
+msgstr ""
+
+#: src/lib/lex.c:247
+msgid "ip_addr"
+msgstr ""
+
+#: src/lib/lex.c:248
+msgid "identifier"
+msgstr ""
+
+#: src/lib/lex.c:249
+msgid "string"
+msgstr ""
+
+#: src/lib/lex.c:250
+msgid "quoted_string"
+msgstr ""
+
 #: src/lib/lex.c:286
 #, c-format
 msgid "expected a positive integer number, got: %s"
@@ -6638,6 +7965,18 @@ msgstr ""
 msgid "expected a string, got %s: %s"
 msgstr ""
 
+#: src/lib/mem_pool.c:100
+#, c-format
+msgid "MemPool index %d larger than max %d\n"
+msgstr ""
+
+#: src/lib/mem_pool.c:118 src/lib/mem_pool.c:138 src/lib/mem_pool.c:173
+#: src/lib/mem_pool.c:244 src/lib/mem_pool.c:264 src/lib/mem_pool.c:302
+#: src/lib/mem_pool.c:521
+#, c-format
+msgid "Out of memory requesting %d bytes\n"
+msgstr ""
+
 #: src/lib/message.c:253 src/lib/message.c:263
 #, c-format
 msgid "Could not open console message file %s: ERR=%s\n"
@@ -6648,6 +7987,24 @@ msgstr ""
 msgid "Could not get con mutex: ERR=%s\n"
 msgstr ""
 
+#: src/lib/message.c:372
+#, c-format
+msgid "open mail pipe %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/lib/message.c:378
+msgid "Bacula Message"
+msgstr ""
+
+#: src/lib/message.c:431
+msgid "open mail pipe failed.\n"
+msgstr ""
+
+#: src/lib/message.c:443
+#, c-format
+msgid "close error: ERR=%s\n"
+msgstr ""
+
 #: src/lib/message.c:454
 #, c-format
 msgid "Mail prog: %s"
@@ -6669,6 +8026,81 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
+#: src/lib/message.c:667 src/lib/message.c:689 src/lib/message.c:705
+#, c-format
+msgid "fopen %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/lib/message.c:933
+#, c-format
+msgid "%s: ABORTING due to ERROR in %s:%d\n"
+msgstr ""
+
+#: src/lib/message.c:937
+#, c-format
+msgid "%s: ERROR TERMINATION at %s:%d\n"
+msgstr ""
+
+#: src/lib/message.c:942
+#, c-format
+msgid "%s: Fatal Error because: "
+msgstr ""
+
+#: src/lib/message.c:944
+#, c-format
+msgid "%s: Fatal Error at %s:%d because:\n"
+msgstr ""
+
+#: src/lib/message.c:948
+#, c-format
+msgid "%s: ERROR: "
+msgstr ""
+
+#: src/lib/message.c:950
+#, c-format
+msgid "%s: ERROR in %s:%d "
+msgstr ""
+
+#: src/lib/message.c:953
+#, c-format
+msgid "%s: Warning: "
+msgstr ""
+
+#: src/lib/message.c:956
+#, c-format
+msgid "%s: Security violation: "
+msgstr ""
+
+#: src/lib/message.c:1032
+#, c-format
+msgid "%s ABORTING due to ERROR\n"
+msgstr ""
+
+#: src/lib/message.c:1035
+#, c-format
+msgid "%s ERROR TERMINATION\n"
+msgstr ""
+
+#: src/lib/message.c:1038
+#, c-format
+msgid "%s: %s Fatal error: "
+msgstr ""
+
+#: src/lib/message.c:1044
+#, c-format
+msgid "%s: %s Error: "
+msgstr ""
+
+#: src/lib/message.c:1050
+#, c-format
+msgid "%s: %s Warning: "
+msgstr ""
+
+#: src/lib/message.c:1053
+#, c-format
+msgid "%s: %s Security violation: "
+msgstr ""
+
 #: src/lib/parse_conf.c:160
 msgid "***UNKNOWN***"
 msgstr ""
@@ -6678,11 +8110,6 @@ msgstr ""
 msgid "Unable to initialize resource lock. ERR=%s\n"
 msgstr ""
 
-#: src/lib/parse_conf.c:211
-#, c-format
-msgid "Too many items in %s resource\n"
-msgstr ""
-
 #: src/lib/parse_conf.c:262 src/lib/parse_conf.c:281
 #, c-format
 msgid "expected an =, got: %s"
@@ -6743,6 +8170,16 @@ msgstr ""
 msgid "expected a time period, got: %s"
 msgstr ""
 
+#: src/lib/parse_conf.c:699
+#, c-format
+msgid "Expect a %s or %s, got: %s"
+msgstr ""
+
+#: src/lib/parse_conf.c:723
+#, c-format
+msgid "Expected a Tape Label keyword, got: %s"
+msgstr ""
+
 #: src/lib/parse_conf.c:772
 #, c-format
 msgid "Cannot open config file \"%s\": %s\n"
@@ -6763,11 +8200,6 @@ msgstr ""
 msgid "not in resource definition: %s"
 msgstr ""
 
-#: src/lib/parse_conf.c:819
-#, c-format
-msgid "expected an equals, got: %s"
-msgstr ""
-
 #: src/lib/parse_conf.c:833
 #, c-format
 msgid ""
@@ -6861,1298 +8293,2308 @@ msgstr ""
 msgid "No previous regular expression"
 msgstr ""
 
-#: src/lib/smartall.c:137 src/lib/smartall.c:228 src/lib/smartall.c:243
-msgid "Out of memory\n"
-msgstr ""
-
-#: src/lib/util.c:184
-msgid "Created"
+#: src/lib/rwlock.c:289
+msgid "rwl_writeunlock called too many times.\n"
 msgstr ""
 
-#: src/lib/util.c:187
-msgid "Running"
+#: src/lib/rwlock.c:293
+msgid "rwl_writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/util.c:190
-msgid "Blocked"
+#: src/lib/rwlock.c:358 src/lib/semlock.c:248
+#, c-format
+msgid "Write lock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:193 src/lib/util.c:260
-msgid "OK"
+#: src/lib/rwlock.c:365 src/lib/semlock.c:255
+#, c-format
+msgid "Write unlock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:197 src/lib/util.c:264
-msgid "Error"
+#: src/lib/rwlock.c:375 src/lib/semlock.c:265
+#, c-format
+msgid "Read lock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:200
-msgid "Non-fatal error"
+#: src/lib/rwlock.c:382 src/lib/semlock.c:272
+#, c-format
+msgid "Read unlock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:203 src/lib/util.c:270
-msgid "Canceled"
+#: src/lib/rwlock.c:391 src/lib/semlock.c:281
+#, c-format
+msgid "Thread %d found unchanged elements %d times\n"
 msgstr ""
 
-#: src/lib/util.c:206
-msgid "Verify differences"
+#: src/lib/rwlock.c:423 src/lib/semlock.c:313
+#, c-format
+msgid "Init rwlock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:209
-msgid "Waiting on FD"
+#: src/lib/rwlock.c:438 src/lib/semlock.c:328
+#, c-format
+msgid "Create thread failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:212
-msgid "Wait on SD"
+#: src/lib/rwlock.c:449 src/lib/semlock.c:339
+#, c-format
+msgid "Join thread failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:215
-msgid "Wait for new Volume"
+#: src/lib/rwlock.c:452 src/lib/semlock.c:342
+#, c-format
+msgid "%02d: interval %d, writes %d, reads %d\n"
 msgstr ""
 
-#: src/lib/util.c:218
-msgid "Waiting for mount"
+#: src/lib/rwlock.c:462 src/lib/semlock.c:352
+#, c-format
+msgid "data %02d: value %d, %d writes\n"
 msgstr ""
 
-#: src/lib/util.c:221
-msgid "Waiting for Storage resource"
+#: src/lib/rwlock.c:467 src/lib/semlock.c:357
+#, c-format
+msgid "Total: %d thread writes, %d data writes\n"
 msgstr ""
 
-#: src/lib/util.c:224
-msgid "Waiting for Job resource"
+#: src/lib/rwlock.c:539 src/lib/semlock.c:429
+msgid "Try write lock"
 msgstr ""
 
-#: src/lib/util.c:227
-msgid "Waiting for Client resource"
+#: src/lib/rwlock.c:545 src/lib/semlock.c:435
+msgid "Try read lock"
 msgstr ""
 
-#: src/lib/util.c:230
-msgid "Waiting on Max Jobs"
+#: src/lib/rwlock.c:600 src/lib/semlock.c:490
+msgid "Create thread"
 msgstr ""
 
-#: src/lib/util.c:233
-msgid "Waiting for Start Time"
+#: src/lib/rwlock.c:610 src/lib/semlock.c:500
+msgid "Join thread"
 msgstr ""
 
-#: src/lib/util.c:236
-msgid "Waiting on Priority"
+#: src/lib/rwlock.c:612 src/lib/semlock.c:502
+#, c-format
+msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
 msgstr ""
 
-#: src/lib/util.c:243
+#: src/lib/rwlock.c:624 src/lib/semlock.c:514
 #, c-format
-msgid "Unknown Job termination status=%d"
+msgid "data %02d: value %d, %d updates\n"
 msgstr ""
 
-#: src/lib/util.c:267
-msgid "Fatal Error"
+#: src/lib/semlock.c:185
+msgid "sem_unlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/util.c:273
-msgid "Differences"
+#: src/lib/signal.c:61
+msgid "Invalid signal number"
 msgstr ""
 
-#: src/lib/util.c:276
-msgid "Unknown term code"
+#: src/lib/signal.c:87
+#, c-format
+msgid "Bacula interrupted by signal %d: %s\n"
 msgstr ""
 
-#: src/lib/util.c:304
-msgid "Unknown Type"
+#: src/lib/signal.c:100
+#, c-format
+msgid "Kaboom! %s, %s got signal %d. Attempting traceback.\n"
 msgstr ""
 
-#: src/lib/util.c:336
-msgid "Verify Init Catalog"
+#: src/lib/signal.c:102
+#, c-format
+msgid "Kaboom! exepath=%s\n"
 msgstr ""
 
-#: src/lib/util.c:345
-msgid "Verify Data"
+#: src/lib/signal.c:136
+#, c-format
+msgid "Fork error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:647
-msgid "Working directory not defined. Cannot continue.\n"
+#: src/lib/signal.c:143
+#, c-format
+msgid "Calling: %s %s %s\n"
 msgstr ""
 
-#: src/lib/util.c:650
+#: src/lib/signal.c:145
 #, c-format
-msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
+msgid "execv: %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:654
+#: src/lib/signal.c:160
 #, c-format
-msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
+msgid "Traceback complete, attempting cleanup ...\n"
 msgstr ""
 
-#: src/lib/watchdog.c:74
+#: src/lib/signal.c:168
 #, c-format
-msgid "Unable to initialize watchdog lock. ERR=%s\n"
+msgid "It looks like the traceback worked ...\n"
 msgstr ""
 
-#: src/lib/tls.c:108
+#: src/lib/signal.c:197
 #, c-format
-msgid ""
-"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
+msgid "BA_NSIG too small (%d) should be (%d)\n"
 msgstr ""
 
-#: src/lib/tls.c:155
-msgid "Error initializing SSL context"
+#: src/lib/signal.c:203
+msgid "UNKNOWN SIGNAL"
 msgstr ""
 
-#: src/lib/tls.c:176
-msgid "Error loading certificate verification stores"
+#: src/lib/signal.c:204
+msgid "Hangup"
 msgstr ""
 
-#: src/lib/tls.c:181
-msgid ""
-"Either a certificate file or a directory must be specified as a verification "
-"store\n"
+#: src/lib/signal.c:205
+msgid "Interrupt"
 msgstr ""
 
-#: src/lib/tls.c:192
-msgid "Error loading certificate file"
+#: src/lib/signal.c:206
+msgid "Quit"
 msgstr ""
 
-#: src/lib/tls.c:200
-msgid "Error loading private key"
+#: src/lib/signal.c:207
+msgid "Illegal instruction"
 msgstr ""
 
-#: src/lib/tls.c:208
-msgid "Unable to open DH parameters file"
+#: src/lib/signal.c:208
+msgid "Trace/Breakpoint trap"
 msgstr ""
 
-#: src/lib/tls.c:214
-msgid "Unable to load DH parameters from specified file"
+#: src/lib/signal.c:209
+msgid "Abort"
 msgstr ""
 
-#: src/lib/tls.c:218
-msgid "Failed to set TLS Diffie-Hellman parameters"
+#: src/lib/signal.c:211
+msgid "EMT instruction (Emulation Trap)"
 msgstr ""
 
-#: src/lib/tls.c:227
-msgid "Error setting cipher list, no valid ciphers available\n"
+#: src/lib/signal.c:214
+msgid "IOT trap"
 msgstr ""
 
-#: src/lib/tls.c:275
-msgid "Peer failed to present a TLS certificate\n"
+#: src/lib/signal.c:216
+msgid "BUS error"
 msgstr ""
 
-#: src/lib/tls.c:317
-#, c-format
-msgid "Peer %s failed to present a TLS certificate\n"
+#: src/lib/signal.c:217
+msgid "Floating-point exception"
 msgstr ""
 
-#: src/lib/tls.c:587 src/lib/tls.c:591
-msgid "TLS shutdown failure."
+#: src/lib/signal.c:218
+msgid "Kill, unblockable"
 msgstr ""
 
-#: src/lib/tls.c:642 src/lib/tls.c:658
-msgid "TLS read/write failure."
+#: src/lib/signal.c:219
+msgid "User-defined signal 1"
 msgstr ""
 
-#: src/lib/tls.c:880
-msgid "Failed to seed OpenSSL PRNG\n"
+#: src/lib/signal.c:220
+msgid "Segmentation violation"
 msgstr ""
 
-#: src/lib/tls.c:906
-msgid "Failed to save OpenSSL PRNG\n"
+#: src/lib/signal.c:221
+msgid "User-defined signal 2"
 msgstr ""
 
-#: src/stored/acquire.c:98
-#, c-format
-msgid "Hey! num_writers=%d!!!!\n"
+#: src/lib/signal.c:222
+msgid "Broken pipe"
 msgstr ""
 
-#: src/stored/acquire.c:146
-#, c-format
-msgid "Num_writers=%d not zero. Job %d canceled.\n"
+#: src/lib/signal.c:223
+msgid "Alarm clock"
 msgstr ""
 
-#: src/stored/acquire.c:154
-#, c-format
-msgid "No volumes specified. Job %d canceled.\n"
+#: src/lib/signal.c:224
+msgid "Termination"
 msgstr ""
 
-#: src/stored/acquire.c:182 src/stored/mount.c:72
-#, c-format
-msgid "Job %d canceled.\n"
+#: src/lib/signal.c:226
+msgid "Stack fault"
 msgstr ""
 
-#: src/stored/acquire.c:193
-#, c-format
-msgid "Open device %s Volume \"%s\" failed (EIO): ERR=%s\n"
+#: src/lib/signal.c:228
+msgid "Child status has changed"
 msgstr ""
 
-#: src/stored/acquire.c:208
-#, c-format
-msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
+#: src/lib/signal.c:229
+msgid "Continue"
 msgstr ""
 
-#: src/stored/acquire.c:273 src/stored/mount.c:66
-#, c-format
-msgid "Too many errors trying to mount device %s.\n"
+#: src/lib/signal.c:230
+msgid "Stop, unblockable"
 msgstr ""
 
-#: src/stored/acquire.c:282
-#, c-format
-msgid "Ready to read from volume \"%s\" on device %s.\n"
+#: src/lib/signal.c:231
+msgid "Keyboard stop"
 msgstr ""
 
-#: src/stored/acquire.c:328 src/stored/reserve.c:617
-#, c-format
-msgid "Device %s is busy reading.\n"
+#: src/lib/signal.c:232
+msgid "Background read from tty"
 msgstr ""
 
-#: src/stored/acquire.c:357
-#, c-format
-msgid "Wanted Volume \"%s\", but device %s is busy writing on \"%s\" .\n"
+#: src/lib/signal.c:233
+msgid "Background write to tty"
 msgstr ""
 
-#: src/stored/acquire.c:374
-#, c-format
-msgid ""
-"Cannot recycle volume \"%s\" on device %s because it is in use by another "
-"job.\n"
+#: src/lib/signal.c:234
+msgid "Urgent condition on socket"
 msgstr ""
 
-#: src/stored/acquire.c:396
-#, c-format
-msgid "Could not ready device %s for append.\n"
+#: src/lib/signal.c:235
+msgid "CPU limit exceeded"
 msgstr ""
 
-#: src/stored/acquire.c:459 src/stored/block.c:353 src/stored/block.c:676
-#: src/stored/block.c:744
-#, c-format
-msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
+#: src/lib/signal.c:236
+msgid "File size limit exceeded"
 msgstr ""
 
-#: src/stored/acquire.c:501
-#, c-format
-msgid "Alert: %s"
+#: src/lib/signal.c:237
+msgid "Virtual alarm clock"
 msgstr ""
 
-#: src/stored/acquire.c:509
-#, c-format
-msgid "3997 Bad alert command: %s: ERR=%s.\n"
+#: src/lib/signal.c:238
+msgid "Profiling alarm clock"
 msgstr ""
 
-#: src/stored/append.c:60
-msgid "Unable to set network buffer size.\n"
+#: src/lib/signal.c:239
+msgid "Window size change"
 msgstr ""
 
-#: src/stored/append.c:88 src/stored/btape.c:1810
-#, c-format
-msgid "Write session label failed. ERR=%s\n"
+#: src/lib/signal.c:240
+msgid "I/O now possible"
 msgstr ""
 
-#: src/stored/append.c:100
-#, c-format
-msgid "Network send error to FD. ERR=%s\n"
+#: src/lib/signal.c:242
+msgid "Power failure restart"
 msgstr ""
 
-#: src/stored/append.c:137
-#, c-format
-msgid "Error reading data header from FD. ERR=%s\n"
+#: src/lib/signal.c:245
+msgid "No runnable lwp"
 msgstr ""
 
-#: src/stored/append.c:159
-#, c-format
-msgid "Malformed data header from FD: %s\n"
+#: src/lib/signal.c:248
+msgid "SIGLWP special signal used by thread library"
 msgstr ""
 
-#: src/stored/append.c:169
-msgid "File index from FD not positive or sequential\n"
+#: src/lib/signal.c:251
+msgid "Checkpoint Freeze"
 msgstr ""
 
-#: src/stored/append.c:199 src/stored/append.c:269 src/stored/spool.c:242
-#, c-format
-msgid "Fatal append error on device %s: ERR=%s\n"
+#: src/lib/signal.c:254
+msgid "Checkpoint Thaw"
 msgstr ""
 
-#: src/stored/append.c:224
-#, c-format
-msgid "Error updating file attributes. ERR=%s\n"
+#: src/lib/signal.c:257
+msgid "Thread Cancellation"
 msgstr ""
 
-#: src/stored/append.c:237
-#, c-format
-msgid "Network error on data channel. ERR=%s\n"
+#: src/lib/signal.c:260
+msgid "Resource Lost (e.g. record-lock lost)"
 msgstr ""
 
-#: src/stored/append.c:258 src/stored/btape.c:1926
-#, c-format
-msgid "Error writting end session label. ERR=%s\n"
+#: src/lib/smartall.c:137 src/lib/smartall.c:228 src/lib/smartall.c:243
+msgid "Out of memory\n"
 msgstr ""
 
-#: src/stored/append.c:271
-msgid "Set ok=FALSE after write_block_to_device.\n"
+#: src/lib/smartall.c:165
+#, c-format
+msgid "Attempt to free NULL called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:161
-msgid "Network error on bnet_recv in req_vol_info.\n"
+#: src/lib/smartall.c:181
+#, c-format
+msgid "qp->qnext->qprev != qp called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:178
+#: src/lib/smartall.c:185
 #, c-format
-msgid "Error getting Volume info: %s\n"
+msgid "qp->qprev->qnext != qp called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:284
-msgid "NULL Volume name. This shouldn't happen!!!\n"
+#: src/lib/smartall.c:194
+#, c-format
+msgid "Buffer overrun called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:289
-msgid "Attempt to update_volume_info in read mode!!!\n"
+#: src/lib/smartall.c:265
+#, c-format
+msgid "sm_realloc size: %d\n"
 msgstr ""
 
-#: src/stored/askdir.c:349
+#: src/lib/smartall.c:306
 #, c-format
-msgid "Error creating JobMedia record: ERR=%s\n"
+msgid "sm_realloc %d at %x from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:356
+#: src/lib/smartall.c:368
 #, c-format
-msgid "Error creating JobMedia record: %s\n"
+msgid ""
+"\n"
+"Orphaned buffers exist.  Dump terminated following\n"
+"  discovery of bad links in chain of orphaned buffers.\n"
+"  Buffer address with bad links: %lx\n"
 msgstr ""
 
-#: src/stored/askdir.c:424
+#: src/lib/smartall.c:379
 #, c-format
-msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
+msgid "Orphaned buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:452
+#: src/lib/smartall.c:415
 #, c-format
-msgid ""
-"Please mount Volume \"%s\" on Storage Device %s for Job %s\n"
-"Use \"mount\" command to release Job.\n"
+msgid "Damaged buffer found. Called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:462
+#: src/lib/smartall.c:445
 #, c-format
 msgid ""
-"Job %s waiting. Cannot find any appendable volumes.\n"
-"Please use the \"label\"  command to create a new Volume for:\n"
-"    Storage:      %s\n"
-"    Media type:   %s\n"
-"    Pool:         %s\n"
+"\n"
+"Damaged buffers found at %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:486 src/stored/askdir.c:590
+#: src/lib/smartall.c:448
 #, c-format
-msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
+msgid "  discovery of bad prev link.\n"
 msgstr ""
 
-#: src/stored/askdir.c:496 src/stored/askdir.c:503
+#: src/lib/smartall.c:451
 #, c-format
-msgid "pthread error in mount_next_volume stat=%d ERR=%s\n"
+msgid "  discovery of bad next link.\n"
 msgstr ""
 
-#: src/stored/askdir.c:514
+#: src/lib/smartall.c:454
 #, c-format
-msgid ""
-"Someone woke me up, but I cannot find any appendable\n"
-"volumes for Job=%s.\n"
+msgid "  discovery of data overrun.\n"
 msgstr ""
 
-#: src/stored/askdir.c:559
-msgid "Cannot request another volume: no volume name given.\n"
+#: src/lib/smartall.c:457
+#, c-format
+msgid "  Buffer address: %lx\n"
 msgstr ""
 
-#: src/stored/askdir.c:565
+#: src/lib/smartall.c:464
 #, c-format
-msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
+msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:571
-msgid "Please mount"
+#: src/lib/util.c:187
+msgid "Running"
 msgstr ""
 
-#: src/stored/askdir.c:572
-#, c-format
-msgid "%s Volume \"%s\" on Storage Device %s for Job %s\n"
+#: src/lib/util.c:190
+msgid "Blocked"
 msgstr ""
 
-#: src/stored/askdir.c:600
-#, c-format
-msgid "pthread error in mount_volume stat=%d ERR=%s\n"
+#: src/lib/util.c:200
+msgid "Non-fatal error"
 msgstr ""
 
-#: src/stored/askdir.c:607
-#, c-format
-msgid "pthread error in mount_next_volume stat=%d: ERR=%s\n"
+#: src/lib/util.c:203 src/lib/util.c:270
+msgid "Canceled"
 msgstr ""
 
-#: src/stored/authenticate.c:52 src/stored/authenticate.c:53
-#, c-format
-msgid "I only authenticate Directors, not %d\n"
+#: src/lib/util.c:206
+msgid "Verify differences"
 msgstr ""
 
-#: src/stored/authenticate.c:120
-msgid ""
-"Incorrect password given by Director.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
+#: src/lib/util.c:209
+msgid "Waiting on FD"
 msgstr ""
 
-#: src/stored/authenticate.c:177 src/stored/authenticate.c:178
-#, c-format
-msgid "Unable to authenticate Director at %s.\n"
+#: src/lib/util.c:212
+msgid "Wait on SD"
 msgstr ""
 
-#: src/stored/authenticate.c:223 src/stored/authenticate.c:259
-#, c-format
-msgid ""
-"Incorrect authorization key from File daemon at %s rejected.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
+#: src/lib/util.c:215
+msgid "Wait for new Volume"
 msgstr ""
 
-#: src/stored/autochanger.c:87
-#, c-format
-msgid "3303 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+#: src/lib/util.c:218
+msgid "Waiting for mount"
 msgstr ""
 
-#: src/stored/autochanger.c:96
-#, c-format
-msgid "3992 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+#: src/lib/util.c:221
+msgid "Waiting for Storage resource"
 msgstr ""
 
-#: src/stored/autochanger.c:109
-#, c-format
-msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
+#: src/lib/util.c:224
+msgid "Waiting for Job resource"
 msgstr ""
 
-#: src/stored/autochanger.c:116
-#, c-format
-msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
+#: src/lib/util.c:227
+msgid "Waiting for Client resource"
 msgstr ""
 
-#: src/stored/autochanger.c:122
-#, c-format
-msgid "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
+#: src/lib/util.c:230
+msgid "Waiting on Max Jobs"
 msgstr ""
 
-#: src/stored/autochanger.c:167
-#, c-format
-msgid "3301 Issuing autochanger \"loaded drive %d\" command.\n"
+#: src/lib/util.c:233
+msgid "Waiting for Start Time"
 msgstr ""
 
-#: src/stored/autochanger.c:176
-#, c-format
-msgid "3302 Autochanger \"loaded drive %d\", result is Slot %d.\n"
+#: src/lib/util.c:236
+msgid "Waiting on Priority"
 msgstr ""
 
-#: src/stored/autochanger.c:180
+#: src/lib/util.c:243
 #, c-format
-msgid "3302 Autochanger \"loaded drive %d\", result: nothing loaded.\n"
+msgid "Unknown Job termination status=%d"
 msgstr ""
 
-#: src/stored/autochanger.c:187
-#, c-format
-msgid "3991 Bad autochanger \"loaded drive %d\" command: ERR=%s.\n"
+#: src/lib/util.c:267
+msgid "Fatal Error"
 msgstr ""
 
-#: src/stored/autochanger.c:235
-#, c-format
-msgid "3993 Device %s not an autochanger device.\n"
+#: src/lib/util.c:273
+msgid "Differences"
 msgstr ""
 
-#: src/stored/autochanger.c:253
-#, c-format
-msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+#: src/lib/util.c:276
+msgid "Unknown term code"
 msgstr ""
 
-#: src/stored/autochanger.c:265
-#, c-format
-msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+#: src/lib/util.c:304
+msgid "Unknown Type"
 msgstr ""
 
-#: src/stored/autochanger.c:277
-#, c-format
-msgid "3306 Issuing autochanger \"%s\" command.\n"
+#: src/lib/util.c:336
+msgid "Verify Init Catalog"
 msgstr ""
 
-#: src/stored/autochanger.c:282
-msgid "3996 Open bpipe failed.\n"
+#: src/lib/util.c:345
+msgid "Verify Data"
 msgstr ""
 
-#: src/stored/bcopy.c:58
-#, c-format
-msgid ""
-"Copyright (C) 2002-2005 Kern Sibbald.\n"
-"\n"
-"Version: "
+#: src/lib/util.c:647
+msgid "Working directory not defined. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:59
+#: src/lib/util.c:650
 #, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to nn\n"
-"       -i                specify input Volume names (separated by |)\n"
-"       -o                specify output Volume names (separated by |)\n"
-"       -p                proceed inspite of errors\n"
-"       -v                verbose\n"
-"       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bcopy.c:133 src/stored/bscan.c:217
-msgid "Wrong number of arguments: \n"
+msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:168 src/stored/btape.c:330 src/stored/device.c:273
+#: src/lib/util.c:654
 #, c-format
-msgid "dev open failed: %s\n"
+msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:181
-msgid "Write of last block failed.\n"
+#: src/lib/var.c:2659
+msgid "everything ok"
 msgstr ""
 
-#: src/stored/bcopy.c:184
-#, c-format
-msgid "%u Jobs copied. %u records copied.\n"
+#: src/lib/var.c:2660
+msgid "incomplete named character"
 msgstr ""
 
-#: src/stored/bcopy.c:201 src/stored/bscan.c:380
-#, c-format
-msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
+#: src/lib/var.c:2661
+msgid "incomplete hexadecimal value"
 msgstr ""
 
-#: src/stored/bcopy.c:231 src/stored/bcopy.c:238 src/stored/bcopy.c:261
-#: src/stored/btape.c:2286
-#, c-format
-msgid "Cannot fixup device error. %s\n"
+#: src/lib/var.c:2662
+msgid "invalid hexadecimal value"
 msgstr ""
 
-#: src/stored/bextract.c:274
-msgid "Logic error output file should be open but is not.\n"
+#: src/lib/var.c:2663
+msgid "octal value too large"
 msgstr ""
 
-#: src/stored/bextract.c:281 src/stored/bls.c:361 src/stored/bscan.c:636
-msgid "Cannot continue.\n"
+#: src/lib/var.c:2664
+msgid "invalid octal value"
 msgstr ""
 
-#: src/stored/bextract.c:343
-#, c-format
-msgid "Seek error on %s: %s\n"
+#: src/lib/var.c:2665
+msgid "incomplete octal value"
 msgstr ""
 
-#: src/stored/bextract.c:396
-#, c-format
-msgid "Uncompression error. ERR=%d\n"
+#: src/lib/var.c:2666
+msgid "incomplete grouped hexadecimal value"
 msgstr ""
 
-#: src/stored/block.c:147
-#, c-format
-msgid "%d block read errors not printed.\n"
+#: src/lib/var.c:2667
+msgid "incorrect character class specification"
 msgstr ""
 
-#: src/stored/block.c:235 src/stored/block.c:251 src/stored/block.c:261
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
-"discarded.\n"
+#: src/lib/var.c:2668
+msgid "invalid expansion configuration"
 msgstr ""
 
-#: src/stored/block.c:275
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Block length %u is insane (too large), probably "
-"due to a bad archive.\n"
+#: src/lib/var.c:2669
+msgid "out of memory"
 msgstr ""
 
-#: src/stored/block.c:301
-#, c-format
-msgid ""
-"Volume data error at %u:%u!\n"
-"Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
+#: src/lib/var.c:2670
+msgid "incomplete variable specification"
 msgstr ""
 
-#: src/stored/block.c:409
-msgid "Cannot write block. Device at EOM.\n"
+#: src/lib/var.c:2671
+msgid "undefined variable"
 msgstr ""
 
-#: src/stored/block.c:414
-msgid "Attempt to write on read-only Volume.\n"
+#: src/lib/var.c:2672
+msgid "input is neither text nor variable"
 msgstr ""
 
-#: src/stored/block.c:466
-#, c-format
-msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
+#: src/lib/var.c:2673
+msgid "unknown command character in variable"
 msgstr ""
 
-#: src/stored/block.c:481
-#, c-format
-msgid "Unable to write EOF. ERR=%s\n"
+#: src/lib/var.c:2674
+msgid "malformatted search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:536
-#, c-format
-msgid "Write error at %u:%u on device %s. ERR=%s.\n"
+#: src/lib/var.c:2675
+msgid "unknown flag in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:543
-#, c-format
-msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
+#: src/lib/var.c:2676
+msgid "invalid regex in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:618 src/stored/block.c:624
-#, c-format
-msgid "Backspace file at EOT failed. ERR=%s\n"
+#: src/lib/var.c:2677
+msgid "missing parameter in command"
 msgstr ""
 
-#: src/stored/block.c:631
-#, c-format
-msgid "Backspace record at EOT failed. ERR=%s\n"
+#: src/lib/var.c:2678
+msgid "empty search string in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:648
-#, c-format
-msgid "Re-read last block at EOT failed. ERR=%s"
+#: src/lib/var.c:2679
+msgid "start offset missing in cut operation"
 msgstr ""
 
-#: src/stored/block.c:652
-msgid "Re-read of last block succeeded.\n"
+#: src/lib/var.c:2680
+msgid "offsets in cut operation delimited by unknown character"
 msgstr ""
 
-#: src/stored/block.c:655
-#, c-format
-msgid "Re-read of last block failed. Last block=%u Current block=%u.\n"
+#: src/lib/var.c:2681
+msgid "range out of bounds in cut operation"
 msgstr ""
 
-#: src/stored/block.c:790 src/stored/dvd.c:621
-#, c-format
-msgid ""
-"Error while writing, current part number is less than the total number of "
-"parts (%d/%d, device=%s)\n"
+#: src/lib/var.c:2682
+msgid "offset out of bounds in cut operation"
 msgstr ""
 
-#: src/stored/block.c:798 src/stored/block.c:908
-#, c-format
-msgid "Unable to open device next part %s: ERR=%s\n"
+#: src/lib/var.c:2683
+msgid "logic error in cut operation"
 msgstr ""
 
-#: src/stored/block.c:816
-#, c-format
-msgid ""
-"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
-"free_space_errno=%d, errmsg=%s).\n"
+#: src/lib/var.c:2684
+msgid "malformatted transpose operation"
 msgstr ""
 
-#: src/stored/block.c:829
-#, c-format
-msgid ""
-"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
-"free_space_errno=%d).\n"
+#: src/lib/var.c:2685
+msgid "source and target class mismatch in transpose operation"
 msgstr ""
 
-#: src/stored/block.c:883
-#, c-format
-msgid "Block buffer size looping problem on device %s\n"
+#: src/lib/var.c:2686
+msgid "empty character class in transpose operation"
 msgstr ""
 
-#: src/stored/block.c:934
-#, c-format
-msgid "Read error at file:blk %u:%u on device %s. ERR=%s.\n"
+#: src/lib/var.c:2687
+msgid "incorrect character class in transpose operation"
 msgstr ""
 
-#: src/stored/block.c:947
-#, c-format
-msgid "Read zero bytes at %u:%u on device %s.\n"
+#: src/lib/var.c:2688
+msgid "malformatted padding operation"
 msgstr ""
 
-#: src/stored/block.c:960
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Very short block of %d bytes on device %s "
-"discarded.\n"
+#: src/lib/var.c:2689
+msgid "width parameter missing in padding operation"
 msgstr ""
 
-#: src/stored/block.c:985
-#, c-format
-msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
+#: src/lib/var.c:2690
+msgid "fill string missing in padding operation"
 msgstr ""
 
-#: src/stored/block.c:1004
-#, c-format
-msgid "Setting block buffer size to %u bytes.\n"
+#: src/lib/var.c:2691
+msgid "unknown quoted pair in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:1019
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
+#: src/lib/var.c:2692
+msgid "sub-matching reference out of range"
 msgstr ""
 
-#: src/stored/bls.c:125
-#, c-format
-msgid "Could not open exclude file: %s, ERR=%s\n"
+#: src/lib/var.c:2693
+msgid "invalid argument"
 msgstr ""
 
-#: src/stored/bls.c:139
-#, c-format
-msgid "Could not open include file: %s, ERR=%s\n"
+#: src/lib/var.c:2694
+msgid "incomplete quoted pair"
 msgstr ""
 
-#: src/stored/bls.c:186
-msgid "No archive name specified\n"
+#: src/lib/var.c:2695
+msgid "lookup function does not support variable arrays"
 msgstr ""
 
-#: src/stored/bls.c:264
-#, c-format
-msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
+#: src/lib/var.c:2696
+msgid "index of array variable contains an invalid character"
 msgstr ""
 
-#: src/stored/bls.c:275
-#, c-format
-msgid "Mounted Volume \"%s\".\n"
+#: src/lib/var.c:2697
+msgid "index of array variable is incomplete"
 msgstr ""
 
-#: src/stored/bls.c:277
-#, c-format
-msgid "Got EOF at file %u on device %s, Volume \"%s\"\n"
+#: src/lib/var.c:2698
+msgid "bracket expression in array variable's index not closed"
 msgstr ""
 
-#: src/stored/bscan.c:109
-#, c-format
-msgid ""
-"Copyright (C) 2001-2005 Kern Sibbald.\n"
-"\n"
-"Version: "
+#: src/lib/var.c:2699
+msgid "division by zero error in index specification"
 msgstr ""
 
-#: src/stored/bscan.c:110
-#, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: bscan [ options ] <bacula-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to nn\n"
-"       -m                update media info in database\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -p                proceed inspite of I/O errors\n"
-"       -r                list records\n"
-"       -s                synchronize or store in database\n"
-"       -S                show scan progress periodically\n"
-"       -v                verbose\n"
-"       -V <Volumes>      specify Volume names (separated by |)\n"
-"       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n"
-"\n"
+#: src/lib/var.c:2700
+msgid "unterminated loop construct"
 msgstr ""
 
-#: src/stored/bscan.c:230 src/stored/stored.c:263
-#, c-format
-msgid "No Storage resource defined in %s. Cannot continue.\n"
+#: src/lib/var.c:2701
+msgid "invalid character in loop limits"
 msgstr ""
 
-#: src/stored/bscan.c:238 src/stored/stored.c:294
-#, c-format
-msgid "No Working Directory defined in %s. Cannot continue.\n"
+#: src/lib/var.c:2702
+msgid "malformed operation argument list"
 msgstr ""
 
-#: src/stored/bscan.c:246
-#, c-format
-msgid "Working Directory: %s not found. Cannot continue.\n"
+#: src/lib/var.c:2703
+msgid "undefined operation"
 msgstr ""
 
-#: src/stored/bscan.c:250
-#, c-format
-msgid "Working Directory: %s is not a directory. Cannot continue.\n"
+#: src/lib/var.c:2704
+msgid "formatting failure"
 msgstr ""
 
-#: src/stored/bscan.c:264 src/stored/bscan.c:331
-#, c-format
-msgid "First Volume Size = %sn"
+#: src/lib/var.c:2713
+msgid "unknown error"
 msgstr ""
 
-#: src/stored/bscan.c:270
-msgid "Could not init Bacula database\n"
+#: src/lib/watchdog.c:74
+#, c-format
+msgid "Unable to initialize watchdog lock. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:277
-#, c-format
-msgid "Using Database: %s, User: %s\n"
+#: src/lib/watchdog.c:170
+msgid "BUG! register_watchdog called before start_watchdog\n"
 msgstr ""
 
-#: src/stored/bscan.c:306
+#: src/lib/watchdog.c:173
 #, c-format
-msgid "Create JobMedia for Job %s\n"
+msgid "BUG! Watchdog %p has NULL callback\n"
 msgstr ""
 
-#: src/stored/bscan.c:316
+#: src/lib/watchdog.c:176
 #, c-format
-msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
+msgid "BUG! Watchdog %p has zero interval\n"
 msgstr ""
 
-#: src/stored/bscan.c:396
-msgid "Volume is prelabeled. This tape cannot be scanned.\n"
+#: src/lib/watchdog.c:196
+msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
 msgstr ""
 
-#: src/stored/bscan.c:408
+#: src/lib/watchdog.c:313
 #, c-format
-msgid "Pool record for %s found in DB.\n"
+msgid "rwl_writelock failure. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:412
+#: src/lib/watchdog.c:327
 #, c-format
-msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
+msgid "rwl_writeunlock failure. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:418
-#, c-format
-msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
+#: src/lib/pythonlib.c:108
+msgid "Could not initialize Python\n"
 msgstr ""
 
-#: src/stored/bscan.c:422
+#: src/lib/pythonlib.c:113
 #, c-format
-msgid "Pool type \"%s\" is OK.\n"
+msgid "Could not Run Python string %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:432
-#, c-format
-msgid "Media record for %s found in DB.\n"
+#: src/lib/pythonlib.c:125
+msgid "Could not initialize Python Job type.\n"
 msgstr ""
 
-#: src/stored/bscan.c:439
+#: src/lib/pythonlib.c:130
 #, c-format
-msgid "VOL_LABEL: Media record not found for Volume: %s\n"
+msgid "Could not import Python script %s/%s. Python disabled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:446
-#, c-format
-msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
+#: src/lib/pythonlib.c:230
+msgid "Could not create Python Job Object.\n"
 msgstr ""
 
-#: src/stored/bscan.c:450
+#: src/lib/pythonlib.c:243 src/lib/pythonlib.c:267
 #, c-format
-msgid "Media type \"%s\" is OK.\n"
+msgid "Python function \"%s\" not found.\n"
 msgstr ""
 
-#: src/stored/bscan.c:459
+#: src/lib/pythonlib.c:282
 #, c-format
-msgid "VOL_LABEL: OK for Volume: %s\n"
+msgid "Unknown Python daemon event %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:466
+#: src/lib/res.c:66
 #, c-format
-msgid "%d \"errors\" ignored before first Start of Session record.\n"
+msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:477
+#: src/lib/res.c:76
 #, c-format
-msgid "SOS_LABEL: Found Job record for JobId: %d\n"
+msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:482
+#: src/lib/tls.c:108
 #, c-format
-msgid "SOS_LABEL: Job record not found for JobId: %d\n"
+msgid ""
+"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:522
-#, c-format
-msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
+#: src/lib/tls.c:155
+msgid "Error initializing SSL context"
 msgstr ""
 
-#: src/stored/bscan.c:528
-#, c-format
-msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
+#: src/lib/tls.c:176
+msgid "Error loading certificate verification stores"
 msgstr ""
 
-#: src/stored/bscan.c:534
-#, c-format
-msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
+#: src/lib/tls.c:181
+msgid ""
+"Either a certificate file or a directory must be specified as a verification "
+"store\n"
 msgstr ""
 
-#: src/stored/bscan.c:552 src/stored/bscan.c:998
-#, c-format
-msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
+#: src/lib/tls.c:192
+msgid "Error loading certificate file"
 msgstr ""
 
-#: src/stored/bscan.c:595
-#, c-format
-msgid "Could not update job record. ERR=%s\n"
+#: src/lib/tls.c:200
+msgid "Error loading private key"
 msgstr ""
 
-#: src/stored/bscan.c:606
-#, c-format
-msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
+#: src/lib/tls.c:208
+msgid "Unable to open DH parameters file"
 msgstr ""
 
-#: src/stored/bscan.c:618
-#, c-format
-msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
+#: src/lib/tls.c:214
+msgid "Unable to load DH parameters from specified file"
 msgstr ""
 
-#: src/stored/bscan.c:654
-#, c-format
-msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
+#: src/lib/tls.c:218
+msgid "Failed to set TLS Diffie-Hellman parameters"
 msgstr ""
 
-#: src/stored/bscan.c:697
-#, c-format
-msgid "Got MD5 record: %s\n"
+#: src/lib/tls.c:227
+msgid "Error setting cipher list, no valid ciphers available\n"
 msgstr ""
 
-#: src/stored/bscan.c:706
-#, c-format
-msgid "Got SHA1 record: %s\n"
+#: src/lib/tls.c:275
+msgid "Peer failed to present a TLS certificate\n"
 msgstr ""
 
-#: src/stored/bscan.c:714
+#: src/lib/tls.c:317
 #, c-format
-msgid "Got Prog Names Stream: %s\n"
+msgid "Peer %s failed to present a TLS certificate\n"
 msgstr ""
 
-#: src/stored/bscan.c:720
-msgid "Got Prog Data Stream record.\n"
+#: src/lib/tls.c:416
+msgid "Error creating file descriptor-based BIO"
 msgstr ""
 
-#: src/stored/bscan.c:724
-#, c-format
-msgid "Unknown stream type!!! stream=%d data=%s\n"
+#: src/lib/tls.c:427
+msgid "Error creating new SSL object"
 msgstr ""
 
-#: src/stored/bscan.c:784
-#, c-format
-msgid "Could not create File Attributes record. ERR=%s\n"
+#: src/lib/tls.c:493 src/lib/tls.c:510
+msgid "Connect failure"
 msgstr ""
 
-#: src/stored/bscan.c:790
-#, c-format
-msgid "Created File record: %s\n"
+#: src/lib/tls.c:587 src/lib/tls.c:591
+msgid "TLS shutdown failure."
 msgstr ""
 
-#: src/stored/bscan.c:827
-#, c-format
-msgid "Could not create media record. ERR=%s\n"
+#: src/lib/tls.c:642 src/lib/tls.c:658
+msgid "TLS read/write failure."
 msgstr ""
 
-#: src/stored/bscan.c:831 src/stored/bscan.c:852
+#: src/lib/tls.c:716 src/lib/tls.c:773 src/stored/dev.c:212
+#: src/stored/dev.c:230 src/stored/dev.c:236 src/stored/stored_conf.c:550
 #, c-format
-msgid "Could not update media record. ERR=%s\n"
+msgid "Unable to init mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:835
+#: src/lib/tls.c:736 src/lib/tls.c:805
 #, c-format
-msgid "Created Media record for Volume: %s\n"
+msgid "Unable to destroy mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:856
+#: src/lib/tls.c:870
 #, c-format
-msgid "Updated Media record at end of Volume: %s\n"
+msgid "Unable to init OpenSSL threading: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:873
-#, c-format
-msgid "Could not create pool record. ERR=%s\n"
+#: src/lib/tls.c:880
+msgid "Failed to seed OpenSSL PRNG\n"
 msgstr ""
 
-#: src/stored/bscan.c:877
-#, c-format
-msgid "Created Pool record for Pool: %s\n"
+#: src/lib/tls.c:906
+msgid "Failed to save OpenSSL PRNG\n"
 msgstr ""
 
-#: src/stored/bscan.c:897
+#: src/stored/acquire.c:98
 #, c-format
-msgid "Created Client record for Client: %s\n"
+msgid "Hey! num_writers=%d!!!!\n"
 msgstr ""
 
-#: src/stored/bscan.c:914
+#: src/stored/acquire.c:146
 #, c-format
-msgid "Fileset \"%s\" already exists.\n"
+msgid "Num_writers=%d not zero. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:918
+#: src/stored/acquire.c:154
 #, c-format
-msgid "Could not create FileSet record \"%s\". ERR=%s\n"
+msgid "No volumes specified. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:923
+#: src/stored/acquire.c:182 src/stored/mount.c:72
 #, c-format
-msgid "Created FileSet record \"%s\"\n"
+msgid "Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:970
+#: src/stored/acquire.c:193
 #, c-format
-msgid "Could not create JobId record. ERR=%s\n"
+msgid "Open device %s Volume \"%s\" failed (EIO): ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:976
+#: src/stored/acquire.c:208
 #, c-format
-msgid "Could not update job start record. ERR=%s\n"
+msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:979
+#: src/stored/acquire.c:273 src/stored/mount.c:66
 #, c-format
-msgid "Created new JobId=%u record for original JobId=%u\n"
+msgid "Too many errors trying to mount device %s.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1029
+#: src/stored/acquire.c:282
 #, c-format
-msgid "Could not update JobId=%u record. ERR=%s\n"
+msgid "Ready to read from volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1034
+#: src/stored/acquire.c:328 src/stored/reserve.c:617
 #, c-format
-msgid "Updated Job termination record for JobId=%u TermStat=%c\n"
+msgid "Device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1056
+#: src/stored/acquire.c:357
 #, c-format
-msgid "Job Termination code: %d"
+msgid "Wanted Volume \"%s\", but device %s is busy writing on \"%s\" .\n"
 msgstr ""
 
-#: src/stored/bscan.c:1061
+#: src/stored/acquire.c:374
 #, c-format
 msgid ""
-"%s\n"
-"JobId:                  %d\n"
-"Job:                    %s\n"
-"FileSet:                %s\n"
-"Backup Level:           %s\n"
-"Client:                 %s\n"
-"Start time:             %s\n"
-"End time:               %s\n"
-"Files Written:          %s\n"
-"Bytes Written:          %s\n"
-"Volume Session Id:      %d\n"
-"Volume Session Time:    %d\n"
-"Last Volume Bytes:      %s\n"
-"Termination:            %s\n"
-"\n"
+"Cannot recycle volume \"%s\" on device %s because it is in use by another "
+"job.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1125
+#: src/stored/acquire.c:396
 #, c-format
-msgid "Could not create JobMedia record. ERR=%s\n"
+msgid "Could not ready device %s for append.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1129
+#: src/stored/acquire.c:459 src/stored/block.c:353 src/stored/block.c:676
+#: src/stored/block.c:744
 #, c-format
-msgid "Created JobMedia record JobId %d, MediaId %d\n"
+msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1145
+#: src/stored/acquire.c:501
 #, c-format
-msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
+msgid "Alert: %s"
 msgstr ""
 
-#: src/stored/bscan.c:1159
+#: src/stored/acquire.c:509
 #, c-format
-msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
+msgid "3997 Bad alert command: %s: ERR=%s.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1164
-msgid "Updated MD5/SHA1 record\n"
+#: src/stored/append.c:60
+msgid "Unable to set network buffer size.\n"
 msgstr ""
 
-#: src/stored/btape.c:483
-msgid "Moved to end of medium.\n"
+#: src/stored/append.c:73 src/stored/append.c:82 src/stored/append.c:94
+#: src/stored/append.c:249 src/stored/append.c:264 src/stored/append.c:276
+#: src/stored/askdir.c:284 src/stored/askdir.c:285
+msgid "NULL Volume name. This shouldn't happen!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:510
+#: src/stored/append.c:88 src/stored/btape.c:1853
 #, c-format
-msgid "Bad status from bsf. ERR=%s\n"
+msgid "Write session label failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:512
+#: src/stored/append.c:100
 #, c-format
-msgid "Backspaced %d file%s.\n"
+msgid "Network send error to FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:529
+#: src/stored/append.c:137
 #, c-format
-msgid "Bad status from bsr. ERR=%s\n"
+msgid "Error reading data header from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:531
+#: src/stored/append.c:159
 #, c-format
-msgid "Backspaced %d record%s.\n"
+msgid "Malformed data header from FD: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:541 src/stored/status.c:216
-#, c-format
-msgid "Configured device capabilities:\n"
+#: src/stored/append.c:169
+msgid "File index from FD not positive or sequential\n"
 msgstr ""
 
-#: src/stored/btape.c:559
+#: src/stored/append.c:199 src/stored/append.c:269 src/stored/spool.c:247
 #, c-format
-msgid "Device status:\n"
+msgid "Fatal append error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:573 src/stored/status.c:248
+#: src/stored/append.c:224
 #, c-format
-msgid "Device parameters:\n"
+msgid "Error updating file attributes. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:643
-msgid "Skipping read backwards test because BSR turned off.\n"
+#: src/stored/append.c:237
+#, c-format
+msgid "Network error on data channel. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:647
-msgid ""
-"\n"
-"=== Write, backup, and re-read test ===\n"
-"\n"
-"I'm going to write three records and an EOF\n"
-"then backup over the EOF and re-read the last record.\n"
-"Bacula does this after writing the last block on the\n"
-"tape to verify that the block was written correctly.\n"
-"\n"
-"This is not an *essential* feature ...\n"
-"\n"
+#: src/stored/append.c:258 src/stored/btape.c:1969
+#, c-format
+msgid "Error writting end session label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:660 src/stored/btape.c:671 src/stored/btape.c:682
-#: src/stored/btape.c:780 src/stored/btape.c:796 src/stored/btape.c:892
-#: src/stored/btape.c:908 src/stored/btape.c:1508 src/stored/btape.c:2351
-msgid "Error writing record to block.\n"
+#: src/stored/append.c:271
+msgid "Set ok=FALSE after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/btape.c:664 src/stored/btape.c:675 src/stored/btape.c:686
-#: src/stored/btape.c:784 src/stored/btape.c:800 src/stored/btape.c:896
-#: src/stored/btape.c:912 src/stored/btape.c:1512 src/stored/btape.c:2355
-msgid "Error writing block to device.\n"
+#: src/stored/askdir.c:161
+msgid "Network error on bnet_recv in req_vol_info.\n"
 msgstr ""
 
-#: src/stored/btape.c:667
+#: src/stored/askdir.c:178
 #, c-format
-msgid "Wrote first record of %d bytes.\n"
+msgid "Error getting Volume info: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:678
-#, c-format
-msgid "Wrote second record of %d bytes.\n"
+#: src/stored/askdir.c:289 src/stored/askdir.c:290
+msgid "Attempt to update_volume_info in read mode!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:689
+#: src/stored/askdir.c:318
 #, c-format
-msgid "Wrote third record of %d bytes.\n"
+msgid "Didn't get vol info vol=%s: ERR=%s"
 msgstr ""
 
-#: src/stored/btape.c:696 src/stored/btape.c:701
+#: src/stored/askdir.c:349
 #, c-format
-msgid "Backspace file failed! ERR=%s\n"
+msgid "Error creating JobMedia record: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:707
+#: src/stored/askdir.c:356
 #, c-format
-msgid "Backspace record failed! ERR=%s\n"
+msgid "Error creating JobMedia record: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:713 src/stored/btape.c:719
+#: src/stored/askdir.c:424
 #, c-format
-msgid "Read block failed! ERR=%s\n"
+msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
 msgstr ""
 
-#: src/stored/btape.c:724
-msgid "Bad data in record. Test failed!\n"
+#: src/stored/askdir.c:452
+#, c-format
+msgid ""
+"Please mount Volume \"%s\" on Storage Device %s for Job %s\n"
+"Use \"mount\" command to release Job.\n"
 msgstr ""
 
-#: src/stored/btape.c:728
+#: src/stored/askdir.c:462
+#, c-format
 msgid ""
-"\n"
-"Block re-read correct. Test succeeded!\n"
+"Job %s waiting. Cannot find any appendable volumes.\n"
+"Please use the \"label\"  command to create a new Volume for:\n"
+"    Storage:      %s\n"
+"    Media type:   %s\n"
+"    Pool:         %s\n"
 msgstr ""
 
-#: src/stored/btape.c:729
-msgid ""
-"=== End Write, backup, and re-read test ===\n"
-"\n"
+#: src/stored/askdir.c:486 src/stored/askdir.c:588
+#, c-format
+msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/btape.c:736
-msgid ""
-"This is not terribly serious since Bacula only uses\n"
-"this function to verify the last block written to the\n"
-"tape. Bacula will skip the last block verification\n"
-"if you add:\n"
-"\n"
-"Backward Space Record = No\n"
-"\n"
-"to your Storage daemon's Device resource definition.\n"
+#: src/stored/askdir.c:496 src/stored/askdir.c:503
+#, c-format
+msgid "pthread error in mount_next_volume stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:760
+#: src/stored/askdir.c:514
+#, c-format
 msgid ""
-"\n"
-"=== Write, rewind, and re-read test ===\n"
-"\n"
-"I'm going to write 1000 records and an EOF\n"
-"then write 1000 records and an EOF, then rewind,\n"
-"and re-read the data to verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
+"Someone woke me up, but I cannot find any appendable\n"
+"volumes for Job=%s.\n"
 msgstr ""
 
-#: src/stored/btape.c:788 src/stored/btape.c:804 src/stored/btape.c:900
-#: src/stored/btape.c:916
-#, c-format
-msgid "Wrote 1000 blocks of %d bytes.\n"
+#: src/stored/askdir.c:558
+msgid "Cannot request another volume: no volume name given.\n"
 msgstr ""
 
-#: src/stored/btape.c:820 src/stored/btape.c:974
-msgid "Got EOF on tape.\n"
+#: src/stored/askdir.c:564
+#, c-format
+msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:825
+#: src/stored/askdir.c:570
 #, c-format
-msgid "Read block %d failed! ERR=%s\n"
+msgid "Please mount Volume \"%s\" on Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/btape.c:831
+#: src/stored/askdir.c:598
 #, c-format
-msgid "Read record failed. Block %d! ERR=%s\n"
+msgid "pthread error in mount_volume stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:837 src/stored/btape.c:1004
+#: src/stored/askdir.c:605
 #, c-format
-msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
+msgid "pthread error in mount_next_volume stat=%d: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:844
-msgid "1000 blocks re-read correctly.\n"
+#: src/stored/authenticate.c:53
+#, c-format
+msgid "I only authenticate Directors, not %d\n"
 msgstr ""
 
-#: src/stored/btape.c:847 src/stored/btape.c:1011
+#: src/stored/authenticate.c:120
 msgid ""
-"=== Test Succeeded. End Write, rewind, and re-read test ===\n"
-"\n"
+"Incorrect password given by Director.\n"
+"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
+"help.\n"
 msgstr ""
 
-#: src/stored/btape.c:872
-msgid ""
-"\n"
-"=== Write, rewind, and position test ===\n"
-"\n"
-"I'm going to write 1000 records and an EOF\n"
-"then write 1000 records and an EOF, then rewind,\n"
-"and position to a few blocks and verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
+#: src/stored/authenticate.c:178
+#, c-format
+msgid "Unable to authenticate Director at %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:980
+#: src/stored/authenticate.c:223 src/stored/authenticate.c:259
 #, c-format
 msgid ""
-"Read block %d failed! file=%d blk=%d. ERR=%s\n"
-"\n"
+"Incorrect authorization key from File daemon at %s rejected.\n"
+"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
+"help.\n"
 msgstr ""
 
-#: src/stored/btape.c:982
-msgid ""
-"This may be because the tape drive block size is not\n"
+#: src/stored/autochanger.c:87
+#, c-format
+msgid "3303 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:96
+#, c-format
+msgid "3992 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:109
+#, c-format
+msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:116
+#, c-format
+msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:122
+#, c-format
+msgid "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:167
+#, c-format
+msgid "3301 Issuing autochanger \"loaded drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:176
+#, c-format
+msgid "3302 Autochanger \"loaded drive %d\", result is Slot %d.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:180
+#, c-format
+msgid "3302 Autochanger \"loaded drive %d\", result: nothing loaded.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:187
+#, c-format
+msgid "3991 Bad autochanger \"loaded drive %d\" command: ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:235
+#, c-format
+msgid "3993 Device %s not an autochanger device.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:253
+#, c-format
+msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:265
+#, c-format
+msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:277
+#, c-format
+msgid "3306 Issuing autochanger \"%s\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:282
+msgid "3996 Open bpipe failed.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:306
+#, c-format
+msgid "Autochanger error: ERR=%s\n"
+msgstr ""
+
+#: src/stored/bcopy.c:58
+#, c-format
+msgid ""
+"Copyright (C) 2002-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
+"       -b bootstrap      specify a bootstrap file\n"
+"       -c <file>         specify configuration file\n"
+"       -d <nn>           set debug level to nn\n"
+"       -i                specify input Volume names (separated by |)\n"
+"       -o                specify output Volume names (separated by |)\n"
+"       -p                proceed inspite of errors\n"
+"       -v                verbose\n"
+"       -w <dir>          specify working directory (default /tmp)\n"
+"       -?                print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bcopy.c:137 src/stored/bextract.c:177 src/stored/bscan.c:221
+msgid "Wrong number of arguments: \n"
+msgstr ""
+
+#: src/stored/bcopy.c:172 src/stored/btape.c:334 src/stored/device.c:273
+#, c-format
+msgid "dev open failed: %s\n"
+msgstr ""
+
+#: src/stored/bcopy.c:185
+msgid "Write of last block failed.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:188
+#, c-format
+msgid "%u Jobs copied. %u records copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:205 src/stored/bscan.c:389
+#, c-format
+msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
+msgstr ""
+
+#: src/stored/bcopy.c:220
+msgid "Volume is prelabeled. This volume cannot be copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:223
+msgid "Volume label not copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:235 src/stored/bcopy.c:242 src/stored/bcopy.c:265
+#: src/stored/btape.c:2335
+#, c-format
+msgid "Cannot fixup device error. %s\n"
+msgstr ""
+
+#: src/stored/bcopy.c:247
+msgid "EOM label not copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:250
+msgid "EOT label not copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:290 src/stored/bextract.c:473 src/stored/bls.c:444
+#: src/stored/bscan.c:1227 src/stored/btape.c:2683
+#, c-format
+msgid "Mount Volume \"%s\" on device %s and press return when ready: "
+msgstr ""
+
+#: src/stored/bextract.c:70
+#, c-format
+msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-"
+"files>\n"
+"       -b <file>       specify a bootstrap file\n"
+"       -c <file>       specify a configuration file\n"
+"       -d <nn>         set debug level to nn\n"
+"       -e <file>       exclude list\n"
+"       -i <file>       include list\n"
+"       -p              proceed inspite of I/O errors\n"
+"       -v              verbose\n"
+"       -V <volumes>    specify Volume names (separated by |)\n"
+"       -?              print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bextract.c:127 src/stored/bls.c:129
+#, c-format
+msgid "Could not open exclude file: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/bextract.c:142 src/stored/bls.c:143
+#, c-format
+msgid "Could not open include file: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/bextract.c:198
+#, c-format
+msgid "%d Program Name and/or Program Data Stream records ignored.\n"
+msgstr ""
+
+#: src/stored/bextract.c:202
+#, c-format
+msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
+msgstr ""
+
+#: src/stored/bextract.c:226
+#, c-format
+msgid "Cannot stat %s. It must exist. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bextract.c:230
+#, c-format
+msgid "%s must be a directory.\n"
+msgstr ""
+
+#: src/stored/bextract.c:251
+#, c-format
+msgid "%u files restored.\n"
+msgstr ""
+
+#: src/stored/bextract.c:278 src/stored/bextract.c:444
+msgid "Logic error output file should be open but is not.\n"
+msgstr ""
+
+#: src/stored/bextract.c:285 src/stored/bls.c:365 src/stored/bscan.c:645
+msgid "Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bextract.c:347
+#, c-format
+msgid "Seek error on %s: %s\n"
+msgstr ""
+
+#: src/stored/bextract.c:400
+#, c-format
+msgid "Uncompression error. ERR=%d\n"
+msgstr ""
+
+#: src/stored/bextract.c:408
+msgid "===Write error===\n"
+msgstr ""
+
+#: src/stored/bextract.c:435
+msgid "Got Program Name or Data Stream. Ignored.\n"
+msgstr ""
+
+#: src/stored/block.c:78
+#, c-format
+msgid ""
+"Dump block %s %x: size=%d BlkNum=%d\n"
+"               Hdrcksum=%x cksum=%x\n"
+msgstr ""
+
+#: src/stored/block.c:91
+#, c-format
+msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
+msgstr ""
+
+#: src/stored/block.c:147
+#, c-format
+msgid "%d block read errors not printed.\n"
+msgstr ""
+
+#: src/stored/block.c:235 src/stored/block.c:251 src/stored/block.c:261
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
+"discarded.\n"
+msgstr ""
+
+#: src/stored/block.c:275
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Block length %u is insane (too large), probably "
+"due to a bad archive.\n"
+msgstr ""
+
+#: src/stored/block.c:301
+#, c-format
+msgid ""
+"Volume data error at %u:%u!\n"
+"Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
+msgstr ""
+
+#: src/stored/block.c:409
+msgid "Cannot write block. Device at EOM.\n"
+msgstr ""
+
+#: src/stored/block.c:414
+msgid "Attempt to write on read-only Volume.\n"
+msgstr ""
+
+#: src/stored/block.c:466
+#, c-format
+msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
+msgstr ""
+
+#: src/stored/block.c:481
+#, c-format
+msgid "Unable to write EOF. ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:507 src/stored/block.c:518
+msgid "Write block header zeroed.\n"
+msgstr ""
+
+#: src/stored/block.c:536
+#, c-format
+msgid "Write error at %u:%u on device %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/block.c:543
+#, c-format
+msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
+msgstr ""
+
+#: src/stored/block.c:618 src/stored/block.c:624
+#, c-format
+msgid "Backspace file at EOT failed. ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:631
+#, c-format
+msgid "Backspace record at EOT failed. ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:648
+#, c-format
+msgid "Re-read last block at EOT failed. ERR=%s"
+msgstr ""
+
+#: src/stored/block.c:652
+msgid "Re-read of last block succeeded.\n"
+msgstr ""
+
+#: src/stored/block.c:655
+#, c-format
+msgid "Re-read of last block failed. Last block=%u Current block=%u.\n"
+msgstr ""
+
+#: src/stored/block.c:684
+#, c-format
+msgid ""
+"Error writing final EOF to tape. This tape may not be readable.\n"
+"%s"
+msgstr ""
+
+#: src/stored/block.c:790 src/stored/dvd.c:622
+#, c-format
+msgid ""
+"Error while writing, current part number is less than the total number of "
+"parts (%d/%d, device=%s)\n"
+msgstr ""
+
+#: src/stored/block.c:798 src/stored/block.c:908
+#, c-format
+msgid "Unable to open device next part %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:816
+#, c-format
+msgid ""
+"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
+"free_space_errno=%d, errmsg=%s).\n"
+msgstr ""
+
+#: src/stored/block.c:829
+#, c-format
+msgid ""
+"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
+"free_space_errno=%d).\n"
+msgstr ""
+
+#: src/stored/block.c:883
+#, c-format
+msgid "Block buffer size looping problem on device %s\n"
+msgstr ""
+
+#: src/stored/block.c:934
+#, c-format
+msgid "Read error at file:blk %u:%u on device %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/block.c:947
+#, c-format
+msgid "Read zero bytes at %u:%u on device %s.\n"
+msgstr ""
+
+#: src/stored/block.c:960
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Very short block of %d bytes on device %s "
+"discarded.\n"
+msgstr ""
+
+#: src/stored/block.c:985
+#, c-format
+msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
+msgstr ""
+
+#: src/stored/block.c:1004
+#, c-format
+msgid "Setting block buffer size to %u bytes.\n"
+msgstr ""
+
+#: src/stored/block.c:1019
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
+msgstr ""
+
+#: src/stored/bls.c:69
+#, c-format
+msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bls [options] <device-name>\n"
+"       -b <file>       specify a bootstrap file\n"
+"       -c <file>       specify a config file\n"
+"       -d <level>      specify debug level\n"
+"       -e <file>       exclude list\n"
+"       -i <file>       include list\n"
+"       -j              list jobs\n"
+"       -k              list blocks\n"
+"    (no j or k option) list saved files\n"
+"       -L              dump label\n"
+"       -p              proceed inspite of errors\n"
+"       -v              be verbose\n"
+"       -V              specify Volume names (separated by |)\n"
+"       -?              print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bls.c:190
+msgid "No archive name specified\n"
+msgstr ""
+
+#: src/stored/bls.c:226
+#, c-format
+msgid ""
+"\n"
+"Warning, this Volume is a continuation of Volume %s\n"
+msgstr ""
+
+#: src/stored/bls.c:268
+#, c-format
+msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/bls.c:279
+#, c-format
+msgid "Mounted Volume \"%s\".\n"
+msgstr ""
+
+#: src/stored/bls.c:281
+#, c-format
+msgid "Got EOF at file %u on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/bls.c:305
+#, c-format
+msgid ""
+"File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%"
+"s rlen=%d\n"
+msgstr ""
+
+#: src/stored/bls.c:314
+#, c-format
+msgid "Block: %d size=%d\n"
+msgstr ""
+
+#: src/stored/bls.c:381
+#, c-format
+msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
+msgstr ""
+
+#: src/stored/bls.c:398 src/stored/read_record.c:321
+msgid "Fresh Volume Label"
+msgstr ""
+
+#: src/stored/bls.c:401 src/stored/read_record.c:324
+msgid "Volume Label"
+msgstr ""
+
+#: src/stored/bls.c:405 src/stored/label.c:959
+msgid "Begin Job Session"
+msgstr ""
+
+#: src/stored/bls.c:409 src/stored/label.c:962
+msgid "End Job Session"
+msgstr ""
+
+#: src/stored/bls.c:412
+msgid "End of Medium"
+msgstr ""
+
+#: src/stored/bls.c:415 src/stored/label.c:971
+msgid "Unknown"
+msgstr ""
+
+#: src/stored/bls.c:421 src/stored/read_record.c:342
+#, c-format
+msgid "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:109
+#, c-format
+msgid ""
+"Copyright (C) 2001-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bscan [ options ] <bacula-archive>\n"
+"       -b bootstrap      specify a bootstrap file\n"
+"       -c <file>         specify configuration file\n"
+"       -d <nn>           set debug level to nn\n"
+"       -m                update media info in database\n"
+"       -n <name>         specify the database name (default bacula)\n"
+"       -u <user>         specify database user name (default bacula)\n"
+"       -P <password      specify database password (default none)\n"
+"       -h <host>         specify database host (default NULL)\n"
+"       -p                proceed inspite of I/O errors\n"
+"       -r                list records\n"
+"       -s                synchronize or store in database\n"
+"       -S                show scan progress periodically\n"
+"       -v                verbose\n"
+"       -V <Volumes>      specify Volume names (separated by |)\n"
+"       -w <dir>          specify working directory (default from conf file)\n"
+"       -?                print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bscan.c:234 src/stored/stored.c:266
+#, c-format
+msgid "No Storage resource defined in %s. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:242 src/stored/stored.c:297
+#, c-format
+msgid "No Working Directory defined in %s. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:250
+#, c-format
+msgid "Working Directory: %s not found. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:254
+#, c-format
+msgid "Working Directory: %s is not a directory. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:268 src/stored/bscan.c:340
+#, c-format
+msgid "First Volume Size = %sn"
+msgstr ""
+
+#: src/stored/bscan.c:274
+msgid "Could not init Bacula database\n"
+msgstr ""
+
+#: src/stored/bscan.c:281
+#, c-format
+msgid "Using Database: %s, User: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:315
+#, c-format
+msgid "Create JobMedia for Job %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:325
+#, c-format
+msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:381
+#, c-format
+msgid "done: %d%%\n"
+msgstr ""
+
+#: src/stored/bscan.c:405
+msgid "Volume is prelabeled. This tape cannot be scanned.\n"
+msgstr ""
+
+#: src/stored/bscan.c:417
+#, c-format
+msgid "Pool record for %s found in DB.\n"
+msgstr ""
+
+#: src/stored/bscan.c:421
+#, c-format
+msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:427
+#, c-format
+msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:431
+#, c-format
+msgid "Pool type \"%s\" is OK.\n"
+msgstr ""
+
+#: src/stored/bscan.c:441
+#, c-format
+msgid "Media record for %s found in DB.\n"
+msgstr ""
+
+#: src/stored/bscan.c:448
+#, c-format
+msgid "VOL_LABEL: Media record not found for Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:455
+#, c-format
+msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:459
+#, c-format
+msgid "Media type \"%s\" is OK.\n"
+msgstr ""
+
+#: src/stored/bscan.c:468
+#, c-format
+msgid "VOL_LABEL: OK for Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:475
+#, c-format
+msgid "%d \"errors\" ignored before first Start of Session record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:486
+#, c-format
+msgid "SOS_LABEL: Found Job record for JobId: %d\n"
+msgstr ""
+
+#: src/stored/bscan.c:491
+#, c-format
+msgid "SOS_LABEL: Job record not found for JobId: %d\n"
+msgstr ""
+
+#: src/stored/bscan.c:531
+#, c-format
+msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:537
+#, c-format
+msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:543
+#, c-format
+msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:561 src/stored/bscan.c:1007
+#, c-format
+msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:604
+#, c-format
+msgid "Could not update job record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:615
+#, c-format
+msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:627
+#, c-format
+msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:663
+#, c-format
+msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:706
+#, c-format
+msgid "Got MD5 record: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:715
+#, c-format
+msgid "Got SHA1 record: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:723
+#, c-format
+msgid "Got Prog Names Stream: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:729
+msgid "Got Prog Data Stream record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:733
+#, c-format
+msgid "Unknown stream type!!! stream=%d data=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:793
+#, c-format
+msgid "Could not create File Attributes record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:799
+#, c-format
+msgid "Created File record: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:836
+#, c-format
+msgid "Could not create media record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:840 src/stored/bscan.c:861
+#, c-format
+msgid "Could not update media record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:844
+#, c-format
+msgid "Created Media record for Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:865
+#, c-format
+msgid "Updated Media record at end of Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:882
+#, c-format
+msgid "Could not create pool record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:886
+#, c-format
+msgid "Created Pool record for Pool: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:906
+#, c-format
+msgid "Created Client record for Client: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:923
+#, c-format
+msgid "Fileset \"%s\" already exists.\n"
+msgstr ""
+
+#: src/stored/bscan.c:927
+#, c-format
+msgid "Could not create FileSet record \"%s\". ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:932
+#, c-format
+msgid "Created FileSet record \"%s\"\n"
+msgstr ""
+
+#: src/stored/bscan.c:979
+#, c-format
+msgid "Could not create JobId record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:985
+#, c-format
+msgid "Could not update job start record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:988
+#, c-format
+msgid "Created new JobId=%u record for original JobId=%u\n"
+msgstr ""
+
+#: src/stored/bscan.c:1038
+#, c-format
+msgid "Could not update JobId=%u record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:1043
+#, c-format
+msgid "Updated Job termination record for JobId=%u TermStat=%c\n"
+msgstr ""
+
+#: src/stored/bscan.c:1065
+#, c-format
+msgid "Job Termination code: %d"
+msgstr ""
+
+#: src/stored/bscan.c:1070
+#, c-format
+msgid ""
+"%s\n"
+"JobId:                  %d\n"
+"Job:                    %s\n"
+"FileSet:                %s\n"
+"Backup Level:           %s\n"
+"Client:                 %s\n"
+"Start time:             %s\n"
+"End time:               %s\n"
+"Files Written:          %s\n"
+"Bytes Written:          %s\n"
+"Volume Session Id:      %d\n"
+"Volume Session Time:    %d\n"
+"Last Volume Bytes:      %s\n"
+"Termination:            %s\n"
+"\n"
+msgstr ""
+
+#: src/stored/bscan.c:1134
+#, c-format
+msgid "Could not create JobMedia record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:1138
+#, c-format
+msgid "Created JobMedia record JobId %d, MediaId %d\n"
+msgstr ""
+
+#: src/stored/bscan.c:1154
+#, c-format
+msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:1168
+#, c-format
+msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:1173
+msgid "Updated MD5/SHA1 record\n"
+msgstr ""
+
+#: src/stored/btape.c:157 src/stored/stored.c:107
+#, c-format
+msgid "Tape block size (%d) not multiple of system size (%d)\n"
+msgstr ""
+
+#: src/stored/btape.c:161 src/stored/stored.c:111
+#, c-format
+msgid "Tape block size (%d) is not a power of 2\n"
+msgstr ""
+
+#: src/stored/btape.c:164
+#, c-format
+msgid ""
+"\n"
+"\n"
+"!!!! Warning large disk addressing disabled. off_t=%d should be 8 or "
+"more !!!!!\n"
+"\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:171
+#, c-format
+msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
+msgstr ""
+
+#: src/stored/btape.c:180
+msgid "64 bit printf/scanf problem. i=%d x64=%"
+msgstr ""
+
+#: src/stored/btape.c:180
+msgid " y64=%"
+msgstr ""
+
+#: src/stored/btape.c:184
+#, c-format
+msgid "Tape block granularity is %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:251
+msgid "No archive name specified.\n"
+msgstr ""
+
+#: src/stored/btape.c:255
+msgid "Improper number of arguments specified.\n"
+msgstr ""
+
+#: src/stored/btape.c:340
+#, c-format
+msgid "open device %s: OK\n"
+msgstr ""
+
+#: src/stored/btape.c:361
+msgid "Enter Volume Name: "
+msgstr ""
+
+#: src/stored/btape.c:368
+#, c-format
+msgid "Device open failed. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:373
+#, c-format
+msgid "Wrote Volume label for volume \"%s\".\n"
+msgstr ""
+
+#: src/stored/btape.c:387
+msgid "Volume has no label.\n"
+msgstr ""
+
+#: src/stored/btape.c:390
+msgid "Volume label read correctly.\n"
+msgstr ""
+
+#: src/stored/btape.c:393
+#, c-format
+msgid "I/O error on device: ERR=%s"
+msgstr ""
+
+#: src/stored/btape.c:396
+msgid "Volume name error\n"
+msgstr ""
+
+#: src/stored/btape.c:399
+#, c-format
+msgid "Error creating label. ERR=%s"
+msgstr ""
+
+#: src/stored/btape.c:402
+msgid "Volume version error.\n"
+msgstr ""
+
+#: src/stored/btape.c:405
+msgid "Bad Volume label type.\n"
+msgstr ""
+
+#: src/stored/btape.c:408
+msgid "Unknown error.\n"
+msgstr ""
+
+#: src/stored/btape.c:426
+#, c-format
+msgid "Bad status from load. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:428
+#, c-format
+msgid "Loaded %s\n"
+msgstr ""
+
+#: src/stored/btape.c:437 src/stored/btape.c:777 src/stored/btape.c:819
+#: src/stored/btape.c:889 src/stored/btape.c:931 src/stored/btape.c:1200
+#, c-format
+msgid "Bad status from rewind. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:440 src/stored/btape.c:1208
+#, c-format
+msgid "Rewound %s\n"
+msgstr ""
+
+#: src/stored/btape.c:467 src/stored/btape.c:1212
+#, c-format
+msgid "Bad status from weof %d. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:471
+#, c-format
+msgid "Wrote 1 EOF to %s\n"
+msgstr ""
+
+#: src/stored/btape.c:474
+#, c-format
+msgid "Wrote %d EOFs to %s\n"
+msgstr ""
+
+#: src/stored/btape.c:492
+msgid "Moved to end of medium.\n"
+msgstr ""
+
+#: src/stored/btape.c:519
+#, c-format
+msgid "Bad status from bsf. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:521
+#, c-format
+msgid "Backspaced %d file%s.\n"
+msgstr ""
+
+#: src/stored/btape.c:538
+#, c-format
+msgid "Bad status from bsr. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:540
+#, c-format
+msgid "Backspaced %d record%s.\n"
+msgstr ""
+
+#: src/stored/btape.c:550 src/stored/status.c:220
+#, c-format
+msgid "Configured device capabilities:\n"
+msgstr ""
+
+#: src/stored/btape.c:568
+#, c-format
+msgid "Device status:\n"
+msgstr ""
+
+#: src/stored/btape.c:582 src/stored/status.c:252
+#, c-format
+msgid "Device parameters:\n"
+msgstr ""
+
+#: src/stored/btape.c:587
+#, c-format
+msgid "Status:\n"
+msgstr ""
+
+#: src/stored/btape.c:602
+msgid ""
+"Test writting larger and larger records.\n"
+"This is a torture test for records.\n"
+"I am going to write\n"
+"larger and larger records. It will stop when the record size\n"
+"plus the header exceeds the block size (by default about 64K)\n"
+msgstr ""
+
+#: src/stored/btape.c:610 src/stored/btape.c:1814
+msgid "Command aborted.\n"
+msgstr ""
+
+#: src/stored/btape.c:626
+#, c-format
+msgid "Block %d i=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:652
+msgid "Skipping read backwards test because BSR turned off.\n"
+msgstr ""
+
+#: src/stored/btape.c:656
+msgid ""
+"\n"
+"=== Write, backup, and re-read test ===\n"
+"\n"
+"I'm going to write three records and an EOF\n"
+"then backup over the EOF and re-read the last record.\n"
+"Bacula does this after writing the last block on the\n"
+"tape to verify that the block was written correctly.\n"
+"\n"
+"This is not an *essential* feature ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:669 src/stored/btape.c:680 src/stored/btape.c:691
+#: src/stored/btape.c:789 src/stored/btape.c:805 src/stored/btape.c:901
+#: src/stored/btape.c:917 src/stored/btape.c:1526 src/stored/btape.c:2400
+msgid "Error writing record to block.\n"
+msgstr ""
+
+#: src/stored/btape.c:673 src/stored/btape.c:684 src/stored/btape.c:695
+#: src/stored/btape.c:793 src/stored/btape.c:809 src/stored/btape.c:905
+#: src/stored/btape.c:921 src/stored/btape.c:1530 src/stored/btape.c:2404
+msgid "Error writing block to device.\n"
+msgstr ""
+
+#: src/stored/btape.c:676
+#, c-format
+msgid "Wrote first record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:687
+#, c-format
+msgid "Wrote second record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:698
+#, c-format
+msgid "Wrote third record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:705 src/stored/btape.c:710
+#, c-format
+msgid "Backspace file failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:714
+msgid "Backspaced over EOF OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:716
+#, c-format
+msgid "Backspace record failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:719
+msgid "Backspace record OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:722 src/stored/btape.c:728
+#, c-format
+msgid "Read block failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:733
+msgid "Bad data in record. Test failed!\n"
+msgstr ""
+
+#: src/stored/btape.c:737
+msgid ""
+"\n"
+"Block re-read correct. Test succeeded!\n"
+msgstr ""
+
+#: src/stored/btape.c:738
+msgid ""
+"=== End Write, backup, and re-read test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:745
+msgid ""
+"This is not terribly serious since Bacula only uses\n"
+"this function to verify the last block written to the\n"
+"tape. Bacula will skip the last block verification\n"
+"if you add:\n"
+"\n"
+"Backward Space Record = No\n"
+"\n"
+"to your Storage daemon's Device resource definition.\n"
+msgstr ""
+
+#: src/stored/btape.c:769
+msgid ""
+"\n"
+"=== Write, rewind, and re-read test ===\n"
+"\n"
+"I'm going to write 1000 records and an EOF\n"
+"then write 1000 records and an EOF, then rewind,\n"
+"and re-read the data to verify that it is correct.\n"
+"\n"
+"This is an *essential* feature ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:797 src/stored/btape.c:813 src/stored/btape.c:909
+#: src/stored/btape.c:925
+#, c-format
+msgid "Wrote 1000 blocks of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:822 src/stored/btape.c:934
+msgid "Rewind OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:829 src/stored/btape.c:983
+msgid "Got EOF on tape.\n"
+msgstr ""
+
+#: src/stored/btape.c:834
+#, c-format
+msgid "Read block %d failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:840
+#, c-format
+msgid "Read record failed. Block %d! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:846 src/stored/btape.c:1013
+#, c-format
+msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
+msgstr ""
+
+#: src/stored/btape.c:853
+msgid "1000 blocks re-read correctly.\n"
+msgstr ""
+
+#: src/stored/btape.c:856 src/stored/btape.c:1020
+msgid ""
+"=== Test Succeeded. End Write, rewind, and re-read test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:881
+msgid ""
+"\n"
+"=== Write, rewind, and position test ===\n"
+"\n"
+"I'm going to write 1000 records and an EOF\n"
+"then write 1000 records and an EOF, then rewind,\n"
+"and position to a few blocks and verify that it is correct.\n"
+"\n"
+"This is an *essential* feature ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:974
+#, c-format
+msgid "Reposition to file:block %d:%d\n"
+msgstr ""
+
+#: src/stored/btape.c:976
+msgid "Reposition error.\n"
+msgstr ""
+
+#: src/stored/btape.c:989
+#, c-format
+msgid ""
+"Read block %d failed! file=%d blk=%d. ERR=%s\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:991
+msgid ""
+"This may be because the tape drive block size is not\n"
 " set to variable blocking as normally used by Bacula.\n"
 " Please see the Tape Testing chapter in the manual and \n"
 " look for using mt with defblksize and setoptions\n"
@@ -8164,2060 +10606,4378 @@ msgid ""
 " in your Device resource.\n"
 msgstr ""
 
-#: src/stored/btape.c:998
+#: src/stored/btape.c:1007
+#, c-format
+msgid "Read record failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1018
+#, c-format
+msgid "Block %d re-read correctly.\n"
+msgstr ""
+
+#: src/stored/btape.c:1039
+msgid ""
+"\n"
+"\n"
+"=== Append files test ===\n"
+"\n"
+"This test is essential to Bacula.\n"
+"\n"
+"I'm going to write one record  in file 0,\n"
+"                   two records in file 1,\n"
+"             and three records in file 2\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1063
+msgid "Now moving to end of medium.\n"
+msgstr ""
+
+#: src/stored/btape.c:1065 src/stored/btape.c:1295
+#, c-format
+msgid "We should be in file 3. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1066 src/stored/btape.c:1084 src/stored/btape.c:1284
+#: src/stored/btape.c:1296 src/stored/btape.c:1309 src/stored/btape.c:1326
+msgid "This is correct!"
+msgstr ""
+
+#: src/stored/btape.c:1066 src/stored/btape.c:1084 src/stored/btape.c:1284
+#: src/stored/btape.c:1296 src/stored/btape.c:1309 src/stored/btape.c:1326
+msgid "This is NOT correct!!!!"
+msgstr ""
+
+#: src/stored/btape.c:1072
+msgid ""
+"\n"
+"Now the important part, I am going to attempt to append to the tape.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1079
+msgid ""
+"Done appending, there should be no I/O errors\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1080
+msgid "Doing Bacula scan of blocks:\n"
+msgstr ""
+
+#: src/stored/btape.c:1082
+msgid "End scanning the tape.\n"
+msgstr ""
+
+#: src/stored/btape.c:1083 src/stored/btape.c:1308
+#, c-format
+msgid "We should be in file 4. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1108
+msgid ""
+"\n"
+"Autochanger enabled, but no name or no command device specified.\n"
+msgstr ""
+
+#: src/stored/btape.c:1112
+msgid ""
+"\n"
+"Ah, I see you have an autochanger configured.\n"
+"To test the autochanger you must have a blank tape\n"
+" that I can write on in Slot 1.\n"
+msgstr ""
+
+#: src/stored/btape.c:1115
+msgid ""
+"\n"
+"Do you wish to continue with the Autochanger test? (y/n): "
+msgstr ""
+
+#: src/stored/btape.c:1122
+msgid ""
+"\n"
+"\n"
+"=== Autochanger test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1131
+msgid "3301 Issuing autochanger \"loaded\" command.\n"
+msgstr ""
+
+#: src/stored/btape.c:1140
+#, c-format
+msgid "3991 Bad autochanger command: %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1141
+#, c-format
+msgid "3991 result=\"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1145
+#, c-format
+msgid "Slot %d loaded. I am going to unload it.\n"
+msgstr ""
+
+#: src/stored/btape.c:1147
+msgid "Nothing loaded in the drive. OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:1155
+#, c-format
+msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
+msgstr ""
+
+#: src/stored/btape.c:1160
+#, c-format
+msgid "unload status=%s %d\n"
+msgstr ""
+
+#: src/stored/btape.c:1160
+msgid "Bad"
+msgstr ""
+
+#: src/stored/btape.c:1163
+#, c-format
+msgid "3992 Bad autochanger command: %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1164
+#, c-format
+msgid "3992 result=\"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1174
+#, c-format
+msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
+msgstr ""
+
+#: src/stored/btape.c:1182
+#, c-format
+msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:1186
+#, c-format
+msgid "3993 Bad autochanger command: %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1187
+#, c-format
+msgid "3993 result=\"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1202
+msgid ""
+"\n"
+"The test failed, probably because you need to put\n"
+"a longer sleep time in the mtx-script in the load) case.\n"
+"Adding a 30 second sleep and trying again ...\n"
+msgstr ""
+
+#: src/stored/btape.c:1215
+#, c-format
+msgid "Wrote EOF to %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1219
+#, c-format
+msgid ""
+"\n"
+"The test worked this time. Please add:\n"
+"\n"
+"   sleep %d\n"
+"\n"
+"to your mtx-changer script in the load) case.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1224
+msgid ""
+"\n"
+"The test autochanger worked!!\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1235
+msgid "You must correct this error or the Autochanger will not work.\n"
+msgstr ""
+
+#: src/stored/btape.c:1253
+msgid ""
+"\n"
+"\n"
+"=== Forward space files test ===\n"
+"\n"
+"This test is essential to Bacula.\n"
+"\n"
+"I'm going to write five files then test forward spacing\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1278
+msgid "Now forward spacing 1 file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1280 src/stored/btape.c:1292 src/stored/btape.c:1305
+#: src/stored/btape.c:1323 src/stored/btape.c:1492
+#, c-format
+msgid "Bad status from fsr. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1283
+#, c-format
+msgid "We should be in file 1. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1290
+msgid "Now forward spacing 2 files.\n"
+msgstr ""
+
+#: src/stored/btape.c:1303
+msgid "Now forward spacing 4 files.\n"
+msgstr ""
+
+#: src/stored/btape.c:1315
+msgid ""
+"The test worked this time. Please add:\n"
+"\n"
+"   Fast Forward Space File = no\n"
+"\n"
+"to your Device resource for this drive.\n"
+msgstr ""
+
+#: src/stored/btape.c:1321
+msgid "Now forward spacing 1 more file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1325
+#, c-format
+msgid "We should be in file 5. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1330
+msgid ""
+"\n"
+"=== End Forward space files test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1334
+msgid ""
+"\n"
+"The forward space file test failed.\n"
+msgstr ""
+
+#: src/stored/btape.c:1336
+msgid ""
+"You have Fast Forward Space File enabled.\n"
+"I am turning it off then retrying the test.\n"
+msgstr ""
+
+#: src/stored/btape.c:1342
+msgid ""
+"You must correct this error or Bacula will not work.\n"
+"Some systems, e.g. OpenBSD, require you to set\n"
+"   Use MTIOCGET= no\n"
+"in your device resource. Use with caution.\n"
+msgstr ""
+
+#: src/stored/btape.c:1374
+msgid ""
+"\n"
+"Append test failed. Attempting again.\n"
+"Setting \"Hardware End of Medium = no\n"
+"    and \"Fast Forward Space File = no\n"
+"and retrying append test.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1382
+msgid ""
+"\n"
+"\n"
+"It looks like the test worked this time, please add:\n"
+"\n"
+"    Hardware End of Medium = No\n"
+"\n"
+"    Fast Forward Space File = No\n"
+"to your Device resource in the Storage conf file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1389
+msgid ""
+"\n"
+"\n"
+"That appears *NOT* to have corrected the problem.\n"
+msgstr ""
+
+#: src/stored/btape.c:1394
+msgid ""
+"\n"
+"\n"
+"It looks like the append failed. Attempting again.\n"
+"Setting \"BSF at EOM = yes\" and retrying append test.\n"
+msgstr ""
+
+#: src/stored/btape.c:1399
+msgid ""
+"\n"
+"\n"
+"It looks like the test worked this time, please add:\n"
+"\n"
+"    Hardware End of Medium = No\n"
+"    Fast Forward Space File = No\n"
+"    BSF at EOM = yes\n"
+"\n"
+"to your Device resource in the Storage conf file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1410
+msgid ""
+"\n"
+"Append test failed.\n"
+"\n"
+"\n"
+"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
+"Unable to correct the problem. You MUST fix this\n"
+"problem before Bacula can use your tape drive correctly\n"
+"\n"
+"Perhaps running Bacula in fixed block mode will work.\n"
+"Do so by setting:\n"
+"\n"
+"Minimum Block Size = nnn\n"
+"Maximum Block Size = nnn\n"
+"\n"
+"in your Storage daemon's Device definition.\n"
+"nnn must match your tape driver's block size, which\n"
+"can be determined by reading your tape manufacturers\n"
+"information, and the information on your kernel dirver.\n"
+"Fixed block sizes, however, are not normally an ideal solution.\n"
+"\n"
+"Some systems, e.g. OpenBSD, require you to set\n"
+"   Use MTIOCGET= no\n"
+"in your device resource. Use with caution.\n"
+msgstr ""
+
+#: src/stored/btape.c:1431
+msgid ""
+"\n"
+"The above Bacula scan should have output identical to what follows.\n"
+"Please double check it ...\n"
+"=== Sample correct output ===\n"
+"1 block of 64448 bytes in file 1\n"
+"End of File mark.\n"
+"2 blocks of 64448 bytes in file 2\n"
+"End of File mark.\n"
+"3 blocks of 64448 bytes in file 3\n"
+"End of File mark.\n"
+"1 block of 64448 bytes in file 4\n"
+"End of File mark.\n"
+"Total files=4, blocks=7, bytes = 451,136\n"
+"=== End sample correct output ===\n"
+"\n"
+"If the above scan output is not identical to the\n"
+"sample output, you MUST correct the problem\n"
+"or Bacula will not be able to write multiple Jobs to \n"
+"the tape.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1470
+#, c-format
+msgid "Bad status from fsf. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1474
+msgid "Forward spaced 1 file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1477
+#, c-format
+msgid "Forward spaced %d files.\n"
+msgstr ""
+
+#: src/stored/btape.c:1496
+msgid "Forward spaced 1 record.\n"
+msgstr ""
+
+#: src/stored/btape.c:1499
+#, c-format
+msgid "Forward spaced %d records.\n"
+msgstr ""
+
+#: src/stored/btape.c:1533
+#, c-format
+msgid "Wrote one record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:1535
+msgid "Wrote block to device.\n"
+msgstr ""
+
+#: src/stored/btape.c:1550
+msgid "Enter length to read: "
+msgstr ""
+
+#: src/stored/btape.c:1555
+msgid "Bad length entered, using default of 1024 bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:1564
+#, c-format
+msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1587 src/stored/btape.c:1636
+#, c-format
+msgid "End of tape\n"
+msgstr ""
+
+#: src/stored/btape.c:1592
+#, c-format
+msgid "Starting scan at file %u\n"
+msgstr ""
+
+#: src/stored/btape.c:1597 src/stored/dev.c:1234
+#, c-format
+msgid "read error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/btape.c:1599
+#, c-format
+msgid "Bad status from read %d. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1602 src/stored/btape.c:1616 src/stored/btape.c:1679
+#: src/stored/btape.c:1691 src/stored/btape.c:1704 src/stored/btape.c:1720
+#, c-format
+msgid "1 block of %d bytes in file %d\n"
+msgstr ""
+
+#: src/stored/btape.c:1605 src/stored/btape.c:1619 src/stored/btape.c:1682
+#: src/stored/btape.c:1694 src/stored/btape.c:1707 src/stored/btape.c:1723
+#, c-format
+msgid "%d blocks of %d bytes in file %d\n"
+msgstr ""
+
+#: src/stored/btape.c:1627 src/stored/btape.c:1698
+#, c-format
+msgid "End of File mark.\n"
+msgstr ""
+
+#: src/stored/btape.c:1648 src/stored/btape.c:1751
+#, c-format
+msgid "Total files=%d, blocks=%d, bytes = %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1711
+#, c-format
+msgid "Short block read.\n"
+msgstr ""
+
+#: src/stored/btape.c:1714
+#, c-format
+msgid "Error reading block. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1738
+#, c-format
+msgid ""
+"Blk_block: %u dev_blk=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%"
+"s rlen=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:1760
+#, c-format
+msgid "Device status: %u. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1788
+msgid ""
+"\n"
+"This command simulates Bacula writing to a tape.\n"
+"It requires either one or two blank tapes, which it\n"
+"will label and write.\n"
+"\n"
+"If you have an autochanger configured, it will use\n"
+"the tapes that are in slots 1 and 2, otherwise, you will\n"
+"be prompted to insert the tapes when necessary.\n"
+"\n"
+"It will print a status approximately\n"
+"every 322 MB, and write an EOF every 3.2 GB.  If you have\n"
+"selected the simple test option, after writing the first tape\n"
+"it will rewind it and re-read the last block written.\n"
+"\n"
+"If you have selected the multiple tape test, when the first tape\n"
+"fills, it will ask for a second, and after writing a few more \n"
+"blocks, it will stop.  Then it will begin re-reading the\n"
+"two tapes.\n"
+"\n"
+"This may take a long time -- hours! ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1805
+msgid ""
+"Do you want to run the simplified test (s) with one tape\n"
+"or the complete multiple tape (m) test: (s/m) "
+msgstr ""
+
+#: src/stored/btape.c:1808
+msgid "Simple test (single tape) selected.\n"
+msgstr ""
+
+#: src/stored/btape.c:1811
+msgid "Multiple tape test selected.\n"
+msgstr ""
+
+#: src/stored/btape.c:1827
+msgid "Rewind failed.\n"
+msgstr ""
+
+#: src/stored/btape.c:1830
+msgid "Write EOF failed.\n"
+msgstr ""
+
+#: src/stored/btape.c:1857
+msgid "Wrote Start of Session label.\n"
+msgstr ""
+
+#: src/stored/btape.c:1886
+msgid "Begin writing Bacula records to tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:1888
+msgid "Begin writing Bacula records to first tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:1928
+#, c-format
+msgid "Wrote blk_block=%u, dev_blk_num=%u VolBytes=%s rate=%.1f KB/s\n"
+msgstr ""
+
+#: src/stored/btape.c:1935
+msgid "Flush block, write EOF\n"
+msgstr ""
+
+#: src/stored/btape.c:1946
+msgid "Not OK\n"
+msgstr ""
+
+#: src/stored/btape.c:1974
+msgid "Set ok=false after write_block_to_device.\n"
+msgstr ""
+
+#: src/stored/btape.c:1977
+msgid "Wrote End of Session label.\n"
+msgstr ""
+
+#: src/stored/btape.c:2001
+#, c-format
+msgid "Wrote state file last_block_num1=%d last_block_num2=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2005
+#, c-format
+msgid "Could not create state file: %s ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2010
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:2014
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:2053
+msgid ""
+"\n"
+"The state file level has changed. You must redo\n"
+"the fill command.\n"
+msgstr ""
+
+#: src/stored/btape.c:2059
+#, c-format
+msgid ""
+"\n"
+"Could not find the state file: %s ERR=%s\n"
+"You must redo the fill command.\n"
+msgstr ""
+
+#: src/stored/btape.c:2101
+msgid "Mount first tape. Press enter when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2125
+msgid "Reading the first 10000 records.\n"
+msgstr ""
+
+#: src/stored/btape.c:2128 src/stored/btape.c:2195
+#, c-format
+msgid "Reposition from %u:%u to %u:%u\n"
+msgstr ""
+
+#: src/stored/btape.c:2131 src/stored/btape.c:2182 src/stored/btape.c:2198
+#, c-format
+msgid "Reposition error. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2134
+#, c-format
+msgid "Reading block %u.\n"
+msgstr ""
+
+#: src/stored/btape.c:2136 src/stored/btape.c:2187 src/stored/btape.c:2203
+#, c-format
+msgid "Error reading block: ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2141
+msgid ""
+"\n"
+"The last block on the tape matches. Test succeeded.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2143
+msgid ""
+"\n"
+"The last block of the first tape matches.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2168
+msgid "Mount second tape. Press enter when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2180
+#, c-format
+msgid "Reposition from %u:%u to 0:1\n"
+msgstr ""
+
+#: src/stored/btape.c:2185 src/stored/btape.c:2201
+#, c-format
+msgid "Reading block %d.\n"
+msgstr ""
+
+#: src/stored/btape.c:2191
+msgid ""
+"\n"
+"The first block on the second tape matches.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2207
+msgid ""
+"\n"
+"The last block on the second tape matches. Test succeeded.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2221
+#, c-format
+msgid "ERROR! device at %d:%d count=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2227
+#, c-format
+msgid "1000 records read now at %d:%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2250 src/stored/btape.c:2261 src/stored/btape.c:2309
+msgid "Last block written"
+msgstr ""
+
+#: src/stored/btape.c:2252 src/stored/btape.c:2262
+msgid "Block read back"
+msgstr ""
+
+#: src/stored/btape.c:2253
+#, c-format
+msgid ""
+"\n"
+"\n"
+"The blocks differ at byte %u\n"
+msgstr ""
+
+#: src/stored/btape.c:2254
+msgid ""
+"\n"
+"\n"
+"!!!! The last block written and the block\n"
+"that was read back differ. The test FAILED !!!!\n"
+"This must be corrected before you use Bacula\n"
+"to write multi-tape Volumes.!!!!\n"
+msgstr ""
+
+#: src/stored/btape.c:2293
+#, c-format
+msgid "Last block at: %u:%u this_dev_block_num=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2307
+#, c-format
+msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
+msgstr ""
+
+#: src/stored/btape.c:2311
+msgid "Block not written"
+msgstr ""
+
+#: src/stored/btape.c:2326
+#, c-format
+msgid "End of tape %d:%d. VolumeCapacity=%s. Write rate = %.1f KB/s\n"
+msgstr ""
+
+#: src/stored/btape.c:2376
+msgid "Test writing blocks of 64512 bytes to tape.\n"
+msgstr ""
+
+#: src/stored/btape.c:2378
+msgid "How many blocks do you want to write? (1000): "
+msgstr ""
+
+#: src/stored/btape.c:2393
+#, c-format
+msgid "Begin writing %d Bacula blocks to tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:2445
+#, c-format
+msgid "Begin writing raw blocks of %u bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:2465
+#, c-format
+msgid "Write failed at block %u. stat=%d ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2495
+#, c-format
+msgid "Begin writing Bacula blocks of %u bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:2514
+#, c-format
+msgid "Write failed at block %u.\n"
+msgstr ""
+
+#: src/stored/btape.c:2521
+msgid "autochanger"
+msgstr ""
+
+#: src/stored/btape.c:2521
+msgid "test autochanger"
+msgstr ""
+
+#: src/stored/btape.c:2522
+msgid "bsf"
+msgstr ""
+
+#: src/stored/btape.c:2522
+msgid "backspace file"
+msgstr ""
+
+#: src/stored/btape.c:2523
+msgid "bsr"
+msgstr ""
+
+#: src/stored/btape.c:2523
+msgid "backspace record"
+msgstr ""
+
+#: src/stored/btape.c:2524
+msgid "bfill"
+msgstr ""
+
+#: src/stored/btape.c:2524
+msgid "fill tape using Bacula writes"
+msgstr ""
+
+#: src/stored/btape.c:2525
+msgid "cap"
+msgstr ""
+
+#: src/stored/btape.c:2525
+msgid "list device capabilities"
+msgstr ""
+
+#: src/stored/btape.c:2526
+msgid "clear"
+msgstr ""
+
+#: src/stored/btape.c:2526
+msgid "clear tape errors"
+msgstr ""
+
+#: src/stored/btape.c:2527
+msgid "eod"
+msgstr ""
+
+#: src/stored/btape.c:2527
+msgid "go to end of Bacula data for append"
+msgstr ""
+
+#: src/stored/btape.c:2528
+msgid "eom"
+msgstr ""
+
+#: src/stored/btape.c:2528
+msgid "go to the physical end of medium"
+msgstr ""
+
+#: src/stored/btape.c:2529
+msgid "fill"
+msgstr ""
+
+#: src/stored/btape.c:2529
+msgid "fill tape, write onto second volume"
+msgstr ""
+
+#: src/stored/btape.c:2530
+msgid "unfill"
+msgstr ""
+
+#: src/stored/btape.c:2530
+msgid "read filled tape"
+msgstr ""
+
+#: src/stored/btape.c:2531
+msgid "fsf"
+msgstr ""
+
+#: src/stored/btape.c:2531
+msgid "forward space a file"
+msgstr ""
+
+#: src/stored/btape.c:2532
+msgid "fsr"
+msgstr ""
+
+#: src/stored/btape.c:2532
+msgid "forward space a record"
+msgstr ""
+
+#: src/stored/btape.c:2534
+msgid "write a Bacula label to the tape"
+msgstr ""
+
+#: src/stored/btape.c:2535
+msgid "load"
+msgstr ""
+
+#: src/stored/btape.c:2535
+msgid "load a tape"
+msgstr ""
+
+#: src/stored/btape.c:2536
+msgid "quit btape"
+msgstr ""
+
+#: src/stored/btape.c:2537
+msgid "rawfill"
+msgstr ""
+
+#: src/stored/btape.c:2537
+msgid "use write() to fill tape"
+msgstr ""
+
+#: src/stored/btape.c:2538
+msgid "readlabel"
+msgstr ""
+
+#: src/stored/btape.c:2538
+msgid "read and print the Bacula tape label"
+msgstr ""
+
+#: src/stored/btape.c:2539
+msgid "rectest"
+msgstr ""
+
+#: src/stored/btape.c:2539
+msgid "test record handling functions"
+msgstr ""
+
+#: src/stored/btape.c:2540
+msgid "rewind"
+msgstr ""
+
+#: src/stored/btape.c:2540
+msgid "rewind the tape"
+msgstr ""
+
+#: src/stored/btape.c:2541
+msgid "read() tape block by block to EOT and report"
+msgstr ""
+
+#: src/stored/btape.c:2542
+msgid "scanblocks"
+msgstr ""
+
+#: src/stored/btape.c:2542
+msgid "Bacula read block by block to EOT and report"
+msgstr ""
+
+#: src/stored/btape.c:2543
+msgid "print tape status"
+msgstr ""
+
+#: src/stored/btape.c:2544
+msgid "test"
+msgstr ""
+
+#: src/stored/btape.c:2544
+msgid "General test Bacula tape functions"
+msgstr ""
+
+#: src/stored/btape.c:2545
+msgid "weof"
+msgstr ""
+
+#: src/stored/btape.c:2545
+msgid "write an EOF on the tape"
+msgstr ""
+
+#: src/stored/btape.c:2546
+msgid "wr"
+msgstr ""
+
+#: src/stored/btape.c:2546
+msgid "write a single Bacula block"
+msgstr ""
+
+#: src/stored/btape.c:2547
+msgid "rr"
+msgstr ""
+
+#: src/stored/btape.c:2547
+msgid "read a single record"
+msgstr ""
+
+#: src/stored/btape.c:2548
+msgid "qfill"
+msgstr ""
+
+#: src/stored/btape.c:2548
+msgid "quick fill command"
+msgstr ""
+
+#: src/stored/btape.c:2569
+#, c-format
+msgid "%s is an illegal command\n"
+msgstr ""
+
+#: src/stored/btape.c:2579
+#, c-format
+msgid "Interactive commands:\n"
+msgstr ""
+
+#: src/stored/btape.c:2589
+#, c-format
+msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: btape <options> <device_name>\n"
+"       -b <file>   specify bootstrap file\n"
+"       -c <file>   set configuration file to file\n"
+"       -d <nn>     set debug level to nn\n"
+"       -p          proceed inspite of I/O errors\n"
+"       -s          turn off signals\n"
+"       -v          be verbose\n"
+"       -?          print this message.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2680
+#, c-format
+msgid "Mount second Volume on device %s and press return when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2707
+#, c-format
+msgid "Mount blank Volume on device %s and press return when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2725
+#, c-format
+msgid "End of Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/btape.c:2737
+#, c-format
+msgid "Read block=%u, VolBytes=%s rate=%.1f KB/s\n"
+msgstr ""
+
+#: src/stored/btape.c:2752 src/stored/mount.c:493
+#, c-format
+msgid "Cannot open Dev=%s, Vol=%s\n"
+msgstr ""
+
+#: src/stored/butil.c:46
+msgid "Nohdr,"
+msgstr ""
+
+#: src/stored/butil.c:49
+msgid "partial,"
+msgstr ""
+
+#: src/stored/butil.c:52
+msgid "empty,"
+msgstr ""
+
+#: src/stored/butil.c:55
+msgid "Nomatch,"
+msgstr ""
+
+#: src/stored/butil.c:58
+msgid "cont,"
+msgstr ""
+
+#: src/stored/butil.c:128
+msgid "Volume name or names is too long. Please use a .bsr file.\n"
+msgstr ""
+
+#: src/stored/butil.c:148
+#, c-format
+msgid "Cannot find device \"%s\" in config file %s.\n"
+msgstr ""
+
+#: src/stored/butil.c:155
+#, c-format
+msgid "Cannot init device %s\n"
+msgstr ""
+
+#: src/stored/butil.c:174
+#, c-format
+msgid "Cannot open %s\n"
+msgstr ""
+
+#: src/stored/butil.c:253
+#, c-format
+msgid "Could not find device \"%s\" in config file %s.\n"
+msgstr ""
+
+#: src/stored/butil.c:258
+#, c-format
+msgid "Using device: \"%s\" for reading.\n"
+msgstr ""
+
+#: src/stored/butil.c:261
+#, c-format
+msgid "Using device: \"%s\" for writing.\n"
+msgstr ""
+
+#: src/stored/butil.c:277
+msgid "Unexpected End of Data\n"
+msgstr ""
+
+#: src/stored/butil.c:279
+msgid "Unexpected End of Tape\n"
+msgstr ""
+
+#: src/stored/butil.c:281
+msgid "Unexpected End of File\n"
+msgstr ""
+
+#: src/stored/butil.c:283
+msgid "Tape Door is Open\n"
+msgstr ""
+
+#: src/stored/butil.c:285
+msgid "Unexpected Tape is Off-line\n"
+msgstr ""
+
+#: src/stored/dev.c:110
+#, c-format
+msgid "Unable to stat device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:125
+#, c-format
+msgid ""
+"%s is an unknown device type. Must be tape or directory\n"
+" or have RequiresMount=yes for DVD. st_mode=%x\n"
+msgstr ""
+
+#: src/stored/dev.c:183
+#, c-format
+msgid "Unable to stat mount point %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:188
+msgid ""
+"Mount and unmount commands must defined for a device which requires mount.\n"
+msgstr ""
+
+#: src/stored/dev.c:191
+msgid "Write part command must be defined for a device which requires mount.\n"
+msgstr ""
+
+#: src/stored/dev.c:197
+#, c-format
+msgid "Block size %u on device %s is too large, using default %u\n"
+msgstr ""
+
+#: src/stored/dev.c:202
+#, c-format
+msgid "Max block size %u not multiple of device %s block size.\n"
+msgstr ""
+
+#: src/stored/dev.c:218 src/stored/dev.c:224
+#, c-format
+msgid "Unable to init cond variable: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:310
+msgid "Illegal mode given to open dev.\n"
+msgstr ""
+
+#: src/stored/dev.c:372 src/stored/device.c:302
+#, c-format
+msgid "Unable to open device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:392
+#, c-format
+msgid "fcntl error. ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:430 src/stored/dev.c:489
+#, c-format
+msgid "Could not open file device %s. No Volume name given.\n"
+msgstr ""
+
+#: src/stored/dev.c:455 src/stored/dev.c:569
+#, c-format
+msgid "Could not open: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:514
+#, c-format
+msgid ""
+"The media in the device %s is not empty, please blank it before writing "
+"anything to it.\n"
+msgstr ""
+
+#: src/stored/dev.c:530
+#, c-format
+msgid "There is no valid media in the device %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:537
+#, c-format
+msgid "Could not mount device %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:595
+#, c-format
+msgid "Could not fstat: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:648
+#, c-format
+msgid "Bad call to rewind_dev. Device %s not open\n"
+msgstr ""
+
+#: src/stored/dev.c:677
+#, c-format
+msgid "Rewind error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:687 src/stored/dev.c:800 src/stored/dev.c:937
+#: src/stored/dev.c:1462
+#, c-format
+msgid "lseek_dev error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:727
+msgid "unknown blocked code"
+msgstr ""
+
+#: src/stored/dev.c:770
+#, c-format
+msgid "Bad call to eod_dev. Device %s not open\n"
+msgstr ""
+
+#: src/stored/dev.c:836
+#, c-format
+msgid "ioctl MTEOM error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:844 src/stored/dev.c:977
+#, c-format
+msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:923
+msgid "Bad device call. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:936
+#, c-format
+msgid "Seek error: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:972
+msgid " Bacula status:"
+msgstr ""
+
+#: src/stored/dev.c:973 src/stored/dev.c:1022 src/stored/dev.c:1024
+#, c-format
+msgid " file=%d block=%d\n"
+msgstr ""
+
+#: src/stored/dev.c:981
+msgid " Device status:"
+msgstr ""
+
+#: src/stored/dev.c:1046
+msgid "Bad call to load_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1057 src/stored/dev.c:1070
+#, c-format
+msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1089
+msgid "Bad call to offline_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1112
+#, c-format
+msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1153
+msgid "Bad call to fsf_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1163 src/stored/dev.c:1284
+#, c-format
+msgid "Device %s at End of Tape.\n"
+msgstr ""
+
+#: src/stored/dev.c:1188 src/stored/dev.c:1264
+#, c-format
+msgid "ioctl MTFSF error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1313
+msgid "Bad call to bsf_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1319
+#, c-format
+msgid "Device %s cannot BSF because it is not a tape.\n"
+msgstr ""
+
+#: src/stored/dev.c:1334
+#, c-format
+msgid "ioctl MTBSF error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1354
+msgid "Bad call to fsr. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1363
+#, c-format
+msgid "ioctl MTFSR not permitted on %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1391
+#, c-format
+msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1411
+msgid "Bad call to bsr_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1421
+#, c-format
+msgid "ioctl MTBSR not permitted on %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1434
+#, c-format
+msgid "ioctl MTBSR error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1451
+msgid "Bad call to reposition_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1519
+msgid "Bad call to weof_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1529
+msgid "Attempt to WEOF on non-appendable Volume\n"
+msgstr ""
+
+#: src/stored/dev.c:1546
+#, c-format
+msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1588
+msgid "Got ENOTTY on read/write!\n"
+msgstr ""
+
+#: src/stored/dev.c:1635
+#, c-format
+msgid "unknown func code %d"
+msgstr ""
+
+#: src/stored/dev.c:1641
+#, c-format
+msgid "I/O function \"%s\" not supported on this device.\n"
+msgstr ""
+
+#: src/stored/dev.c:1779 src/stored/dvd.c:668
+#, c-format
+msgid "Unable to truncate device %s. ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:1818
+msgid "Bad call to term_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/device.c:105
+#, c-format
+msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
+msgstr ""
+
+#: src/stored/device.c:119
+#, c-format
+msgid "New volume \"%s\" mounted on device %s at %s.\n"
+msgstr ""
+
+#: src/stored/device.c:131
+#, c-format
+msgid "write_block_to_device Volume label failed. ERR=%s"
+msgstr ""
+
+#: src/stored/device.c:168
+#, c-format
+msgid "write_block_to_device overflow block failed. ERR=%s"
+msgstr ""
+
+#: src/stored/device.c:304
+#, c-format
+msgid "Unable to open archive %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/device.c:328
+msgid "Bad call to force_close_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/device.c:346
+#, c-format
+msgid "Device write lock failure. ERR=%s\n"
+msgstr ""
+
+#: src/stored/device.c:354
+#, c-format
+msgid "Device write unlock failure. ERR=%s\n"
+msgstr ""
+
+#: src/stored/device.c:373
+#, c-format
+msgid "pthread_cond_wait failure. ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:140
+msgid "Connection request failed.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:149
+#, c-format
+msgid "Invalid connection. Len=%d\n"
+msgstr ""
+
+#: src/stored/dircmd.c:241
+#, c-format
+msgid "3991 Bad setdebug command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:262
+#, c-format
+msgid "3902 Job %s not found.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:279
+#, c-format
+msgid "3000 Job %s marked to be canceled.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:283
+msgid "3903 Error scanning cancel command.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:352 src/stored/dircmd.c:648 src/stored/dircmd.c:712
+#: src/stored/dircmd.c:770 src/stored/dircmd.c:822 src/stored/dircmd.c:860
+#, c-format
+msgid "3999 Device \"%s\" not found\n"
+msgstr ""
+
+#: src/stored/dircmd.c:357
+#, c-format
+msgid "3903 Error scanning label command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:401
+#, c-format
+msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
+msgstr ""
+
+#: src/stored/dircmd.c:407
+msgid "3921 Wrong volume mounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:411
+msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:419 src/stored/dircmd.c:428
+#, c-format
+msgid "3912 Failed to label Volume: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:431
+#, c-format
+msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
+msgstr ""
+
+#: src/stored/dircmd.c:464
+#, c-format
+msgid "3001 Mounted Volume: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:468 src/stored/dircmd.c:896
+#, c-format
+msgid ""
+"3902 Cannot mount Volume on Storage Device %s because:\n"
+"%s"
+msgstr ""
+
+#: src/stored/dircmd.c:491 src/stored/reserve.c:518
+#, c-format
+msgid ""
+"\n"
+"     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:512 src/stored/reserve.c:514
+#, c-format
+msgid ""
+"\n"
+"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
+"does not exist.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:568 src/stored/dircmd.c:616
+#, c-format
+msgid "3901 open device failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:583 src/stored/dircmd.c:607
+#, c-format
+msgid "3001 Device %s is mounted with Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/dircmd.c:586 src/stored/dircmd.c:610 src/stored/dircmd.c:625
+#, c-format
+msgid ""
+"3905 Device %s open but no Bacula volume is mounted.\n"
+"If this is not a blank tape, try unmounting and remounting the Volume.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:595
+#, c-format
+msgid "3001 Device %s is doing acquire.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:600 src/stored/dircmd.c:690
+#, c-format
+msgid "3903 Device %s is being labeled.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:622
+#, c-format
+msgid "3001 Device %s is already mounted with Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/dircmd.c:631
+#, c-format
+msgid "3002 Device %s is mounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:634
+#, c-format
+msgid "3907 %s"
+msgstr ""
+
+#: src/stored/dircmd.c:637
+#, c-format
+msgid "3906 File device %s is always mounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:643
+#, c-format
+msgid "3905 Bizarre wait state %d\n"
+msgstr ""
+
+#: src/stored/dircmd.c:652
+#, c-format
+msgid "3909 Error scanning mount command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:673
+#, c-format
+msgid "3901 Device %s is already unmounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:682
+#, c-format
+msgid "3001 Device %s unmounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:686
+#, c-format
+msgid "3902 Device %s is busy in acquire.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:707
+#, c-format
+msgid "3002 Device %s unmounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:717
+#, c-format
+msgid "3907 Error scanning unmount command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:742
+#, c-format
+msgid "3911 Device %s already released.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:749
+#, c-format
+msgid "3912 Device %s waiting for mount.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:753
+#, c-format
+msgid "3913 Device %s is busy in acquire.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:757
+#, c-format
+msgid "3914 Device %s is being labeled.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:765
+#, c-format
+msgid "3012 Device %s released.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:775
+#, c-format
+msgid "3917 Error scanning release command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:808
+#, c-format
+msgid "3995 Device %s is not an autochanger.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:826
+#, c-format
+msgid "3908 Error scanning autocharger list/slots command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:864
+#, c-format
+msgid "3909 Error scanning readlabel command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:892
+#, c-format
+msgid "3001 Volume=%s Slot=%d\n"
+msgstr ""
+
+#: src/stored/dircmd.c:921
+#, c-format
+msgid "3910 Unable to open device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:931
+#, c-format
+msgid "3911 Device %s is busy reading.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:934
+#, c-format
+msgid "3912 Device %s is busy with %d writer(s).\n"
+msgstr ""
+
+#: src/stored/fd_cmds.c:340
+msgid "Error parsing bootstrap file.\n"
+msgstr ""
+
+#: src/stored/job.c:79
+#, c-format
+msgid "Bad Job Command from Director: %s\n"
+msgstr ""
+
+#: src/stored/job.c:189
+#, c-format
+msgid "Job name not found: %s\n"
+msgstr ""
+
+#: src/stored/job.c:200
+#, c-format
+msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
+msgstr ""
+
+#: src/stored/job.c:211
+msgid "Unable to authenticate File daemon\n"
+msgstr ""
+
+#: src/stored/job.c:338
+msgid "In free_jcr(), but still attached to device!!!!\n"
+msgstr ""
+
+#: src/stored/label.c:74
+msgid "BAD call to read_dev_volume_label\n"
+msgstr ""
+
+#: src/stored/label.c:79 src/stored/label.c:120 src/stored/label.c:208
+#, c-format
+msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
+msgstr ""
+
+#: src/stored/label.c:86 src/stored/label.c:123 src/stored/label.c:195
+#, c-format
+msgid "Too many tries: %s"
+msgstr ""
+
+#: src/stored/label.c:102
+#, c-format
+msgid "Couldn't rewind device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:140
+#, c-format
+msgid ""
+"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
+msgstr ""
+
+#: src/stored/label.c:145
+msgid "Could not read Volume label from block.\n"
+msgstr ""
+
+#: src/stored/label.c:148
+#, c-format
+msgid "Could not unserialize Volume label: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:153
+#, c-format
+msgid "Volume Header Id bad: %s\n"
+msgstr ""
+
+#: src/stored/label.c:180
+#, c-format
+msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
+msgstr ""
+
+#: src/stored/label.c:191
+#, c-format
+msgid "Volume on %s has bad Bacula label type: %x\n"
+msgstr ""
+
+#: src/stored/label.c:272
+#, c-format
+msgid "Cannot write Volume label to block for device %s\n"
+msgstr ""
+
+#: src/stored/label.c:393
+#, c-format
+msgid "Rewind error on device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:398
+#, c-format
+msgid "Truncate error on device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:420
+#, c-format
+msgid "Unable to write device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:448
+#, c-format
+msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
+msgstr ""
+
+#: src/stored/label.c:451
+#, c-format
+msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
+msgstr ""
+
+#: src/stored/label.c:648
+#, c-format
+msgid "Bad session label = %d\n"
+msgstr ""
+
+#: src/stored/label.c:666 src/stored/label.c:673
+#, c-format
+msgid "Error writing Session label to %s: %s\n"
+msgstr ""
+
+#: src/stored/label.c:707
+#, c-format
+msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
+msgstr ""
+
+#: src/stored/label.c:834
+#, c-format
+msgid "Unknown %d"
+msgstr ""
+
+#: src/stored/label.c:838
+#, c-format
+msgid ""
+"\n"
+"Volume Label:\n"
+"Id                : %sVerNo             : %d\n"
+"VolName           : %s\n"
+"PrevVolName       : %s\n"
+"VolFile           : %d\n"
+"LabelType         : %s\n"
+"LabelSize         : %d\n"
+"PoolName          : %s\n"
+"MediaType         : %s\n"
+"PoolType          : %s\n"
+"HostName          : %s\n"
+msgstr ""
+
+#: src/stored/label.c:860
+#, c-format
+msgid "Date label written: %s\n"
+msgstr ""
+
+#: src/stored/label.c:866
+#, c-format
+msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
+msgstr ""
+
+#: src/stored/label.c:886
+#, c-format
+msgid ""
+"\n"
+"%s Record:\n"
+"JobId             : %d\n"
+"VerNum            : %d\n"
+"PoolName          : %s\n"
+"PoolType          : %s\n"
+"JobName           : %s\n"
+"ClientName        : %s\n"
+msgstr ""
+
+#: src/stored/label.c:899
+#, c-format
+msgid ""
+"Job (unique name) : %s\n"
+"FileSet           : %s\n"
+"JobType           : %c\n"
+"JobLevel          : %c\n"
+msgstr ""
+
+#: src/stored/label.c:908
+#, c-format
+msgid ""
+"JobFiles          : %s\n"
+"JobBytes          : %s\n"
+"StartBlock        : %s\n"
+"EndBlock          : %s\n"
+"StartFile         : %s\n"
+"EndFile           : %s\n"
+"JobErrors         : %s\n"
+"JobStatus         : %c\n"
+msgstr ""
+
+#: src/stored/label.c:929
+#, c-format
+msgid "Date written      : %s\n"
+msgstr ""
+
+#: src/stored/label.c:934
+#, c-format
+msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
+msgstr ""
+
+#: src/stored/label.c:953
+msgid "Fresh Volume"
+msgstr ""
+
+#: src/stored/label.c:965 src/stored/read_record.c:335
+msgid "End of Media"
+msgstr ""
+
+#: src/stored/label.c:968
+msgid "End of Tape"
+msgstr ""
+
+#: src/stored/label.c:988 src/stored/label.c:996 src/stored/label.c:1029
+#, c-format
+msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
+msgstr ""
+
+#: src/stored/label.c:993
+msgid "End of physical tape.\n"
+msgstr ""
+
+#: src/stored/label.c:1008 src/stored/label.c:1017
+#, c-format
+msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
+msgstr ""
+
+#: src/stored/label.c:1010
+#, c-format
+msgid "   Job=%s Date=%s Level=%c Type=%c\n"
+msgstr ""
+
+#: src/stored/label.c:1019
+#, c-format
+msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
+msgstr ""
+
+#: src/stored/mount.c:197 src/stored/mount.c:294
+#, c-format
+msgid "Volume \"%s\" not on device %s.\n"
+msgstr ""
+
+#: src/stored/mount.c:230
+#, c-format
+msgid ""
+"Director wanted Volume \"%s\".\n"
+"    Current Volume \"%s\" not acceptable because:\n"
+"    %s"
+msgstr ""
+
+#: src/stored/mount.c:284
+#, c-format
+msgid "Labeled new Volume \"%s\" on device %s.\n"
+msgstr ""
+
+#: src/stored/mount.c:289
+#, c-format
+msgid "Warning device %s not configured to autolabel Volumes.\n"
+msgstr ""
+
+#: src/stored/mount.c:340
+#, c-format
+msgid "Volume \"%s\" previously written, moving to end of data.\n"
+msgstr ""
+
+#: src/stored/mount.c:343
+#, c-format
+msgid "Unable to position to end of data on device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/mount.c:355
+#, c-format
+msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
+msgstr ""
+
+#: src/stored/mount.c:358
+#, c-format
+msgid ""
+"I cannot write on Volume \"%s\" because:\n"
+"The number of files mismatch! Volume=%u Catalog=%u\n"
+msgstr ""
+
+#: src/stored/mount.c:411
+#, c-format
+msgid "Marking Volume \"%s\" in Error in Catalog.\n"
+msgstr ""
+
+#: src/stored/mount.c:427
+#, c-format
+msgid ""
+"Autochanger Volume \"%s\" not found in slot %d.\n"
+"    Setting InChanger to zero in catalog.\n"
+msgstr ""
+
+#: src/stored/mount.c:446
+msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:104 src/stored/parse_bsr.c:108
+#, c-format
+msgid ""
+"Bootstrap file error: %s\n"
+"            : Line %d, col %d of file %s\n"
+"%s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:130
+#, c-format
+msgid "Cannot open bootstrap file %s: %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:260
+#, c-format
+msgid "MediaType %s in bsr at inappropriate place.\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:416
+msgid "JobType not yet implemented\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:424
+msgid "JobLevel not yet implemented\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:626
+#, c-format
+msgid "VolFile     : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:634
+#, c-format
+msgid "VolBlock    : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:644
+#, c-format
+msgid "FileIndex   : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:646
+#, c-format
+msgid "FileIndex   : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:656
+#, c-format
+msgid "JobId       : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:658
+#, c-format
+msgid "JobId       : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:668
+#, c-format
+msgid "SessId      : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:670
+#, c-format
+msgid "SessId      : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:679
+#, c-format
+msgid "VolumeName  : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:688
+#, c-format
+msgid "Client      : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:696
+#, c-format
+msgid "Job          : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:704
+#, c-format
+msgid "SessTime    : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:718
+msgid "BSR is NULL\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:722
+#, c-format
+msgid "Next        : 0x%x\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:723
+#, c-format
+msgid "Root bsr    : 0x%x\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:734
+#, c-format
+msgid "Slot        : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:737
+#, c-format
+msgid "count       : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:738
+#, c-format
+msgid "found       : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:741
+#, c-format
+msgid "done        : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:742
+#, c-format
+msgid "positioning : %d\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:743
 #, c-format
-msgid "Read record failed! ERR=%s\n"
+msgid "fast_reject : %d\n"
+msgstr ""
+
+#: src/stored/read.c:55
+msgid "No Volume names found for restore.\n"
 msgstr ""
 
-#: src/stored/btape.c:1009
+#: src/stored/read.c:109
 #, c-format
-msgid "Block %d re-read correctly.\n"
+msgid ">filed: Error Hdr=%s\n"
+msgstr ""
+
+#: src/stored/read.c:110 src/stored/read.c:125
+#, c-format
+msgid "Error sending to File daemon. ERR=%s\n"
+msgstr ""
+
+#: src/stored/read.c:124
+#, c-format
+msgid "Error sending to FD. ERR=%s\n"
+msgstr ""
+
+#: src/stored/read_record.c:68
+#, c-format
+msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/read_record.c:71
+msgid "End of all volumes.\n"
+msgstr ""
+
+#: src/stored/read_record.c:105
+#, c-format
+msgid "Got EOF at file %u  on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/read_record.c:119
+msgid "Did fsr\n"
+msgstr ""
+
+#: src/stored/read_record.c:275
+#, c-format
+msgid "Reposition from (file:block) %u:%u to %u:%u\n"
+msgstr ""
+
+#: src/stored/read_record.c:302
+#, c-format
+msgid "Forward spacing to file:block %u:%u.\n"
+msgstr ""
+
+#: src/stored/read_record.c:328
+msgid "Begin Session"
+msgstr ""
+
+#: src/stored/read_record.c:332
+msgid "End Session"
+msgstr ""
+
+#: src/stored/read_record.c:338
+#, c-format
+msgid "Unknown code %d\n"
+msgstr ""
+
+#: src/stored/record.c:61
+#, c-format
+msgid "unknown: %d"
+msgstr ""
+
+#: src/stored/record.c:332
+msgid "Damaged buffer\n"
+msgstr ""
+
+#: src/stored/spool.c:69
+#, c-format
+msgid ""
+"Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"
+msgstr ""
+
+#: src/stored/spool.c:75
+#, c-format
+msgid "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
+msgstr ""
+
+#: src/stored/spool.c:91
+msgid "Spooling data ...\n"
+msgstr ""
+
+#: src/stored/spool.c:117
+#, c-format
+msgid "Bad return from despool WroteVol=%d\n"
+msgstr ""
+
+#: src/stored/spool.c:150
+#, c-format
+msgid "Open data spool file %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:199
+#, c-format
+msgid "Committing spooled data to Volume. Despooling %s bytes ...\n"
+msgstr ""
+
+#: src/stored/spool.c:203
+#, c-format
+msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
+msgstr ""
+
+#: src/stored/spool.c:257 src/stored/spool.c:431 src/stored/spool.c:469
+#, c-format
+msgid "Ftruncate spool file failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:259
+#, c-format
+msgid "Bad return from ftruncate. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:308
+#, c-format
+msgid "Spool header read error. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:311
+#, c-format
+msgid "Spool read error. Wanted %u bytes, got %d\n"
+msgstr ""
+
+#: src/stored/spool.c:312
+#, c-format
+msgid "Spool header read error. Wanted %u bytes, got %d\n"
+msgstr ""
+
+#: src/stored/spool.c:318 src/stored/spool.c:319
+#, c-format
+msgid "Spool block too big. Max %u bytes, got %u\n"
+msgstr ""
+
+#: src/stored/spool.c:324 src/stored/spool.c:325
+#, c-format
+msgid "Spool data read error. Wanted %u bytes, got %d\n"
+msgstr ""
+
+#: src/stored/spool.c:382
+msgid "User specified spool size reached.\n"
+msgstr ""
+
+#: src/stored/spool.c:384
+msgid "Bad return from despool in write_block.\n"
+msgstr ""
+
+#: src/stored/spool.c:392
+msgid "Spooling data again ...\n"
+msgstr ""
+
+#: src/stored/spool.c:423
+#, c-format
+msgid "Error writing header to spool file. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:437 src/stored/spool.c:475
+msgid "Fatal despooling error."
+msgstr ""
+
+#: src/stored/spool.c:444
+msgid "Retrying after header spooling error failed.\n"
+msgstr ""
+
+#: src/stored/spool.c:458
+#, c-format
+msgid "Error writing data to spool file. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:485
+msgid "Retrying after data spooling error failed.\n"
+msgstr ""
+
+#: src/stored/spool.c:540 src/stored/spool.c:547
+#, c-format
+msgid "Fseek on attributes file failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:557
+#, c-format
+msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
 msgstr ""
 
-#: src/stored/btape.c:1030
+#: src/stored/spool.c:584
+#, c-format
+msgid "fopen attr spool file %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/status.c:66
+#, c-format
 msgid ""
 "\n"
+"%s Version: %s (%s) %s %s %s\n"
+msgstr ""
+
+#: src/stored/status.c:97
+msgid ""
 "\n"
-"=== Append files test ===\n"
+"Device status:\n"
+msgstr ""
+
+#: src/stored/status.c:99
+#, c-format
+msgid "Autochanger \"%s\" with devices:\n"
+msgstr ""
+
+#: src/stored/status.c:113
+#, c-format
+msgid "Device %s is mounted with Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/status.c:116
+#, c-format
+msgid "Device %s open but no Bacula volume is mounted.\n"
+msgstr ""
+
+#: src/stored/status.c:126
+#, c-format
+msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
+msgstr ""
+
+#: src/stored/status.c:140
+#, c-format
+msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
+msgstr ""
+
+#: src/stored/status.c:145
+#, c-format
+msgid "    Positioned at File=%s Block=%s\n"
+msgstr ""
+
+#: src/stored/status.c:151
+#, c-format
+msgid "Device %s is not open or does not exist.\n"
+msgstr ""
+
+#: src/stored/status.c:153
+#, c-format
+msgid "Device \"%s\" is not open or does not exist.\n"
+msgstr ""
+
+#: src/stored/status.c:158 src/stored/status.c:165 src/stored/status.c:168
+msgid ""
+"====\n"
 "\n"
-"This test is essential to Bacula.\n"
+msgstr ""
+
+#: src/stored/status.c:159
+msgid "Volume status:\n"
+msgstr ""
+
+#: src/stored/status.c:183
+msgid ""
+"No DEVICE structure.\n"
 "\n"
-"I'm going to write one record  in file 0,\n"
-"                   two records in file 1,\n"
-"             and three records in file 2\n"
+msgstr ""
+
+#: src/stored/status.c:188
+msgid "    Device is BLOCKED. User unmounted.\n"
+msgstr ""
+
+#: src/stored/status.c:191
+msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
+msgstr ""
+
+#: src/stored/status.c:195
+#, c-format
+msgid "    Device is BLOCKED waiting for mount of volume \"%s\".\n"
+msgstr ""
+
+#: src/stored/status.c:198
+msgid "    Device is BLOCKED waiting for media.\n"
+msgstr ""
+
+#: src/stored/status.c:202
+msgid "    Device is being initialized.\n"
+msgstr ""
+
+#: src/stored/status.c:205
+msgid "    Device is blocked labeling a Volume.\n"
+msgstr ""
+
+#: src/stored/status.c:213
+#, c-format
+msgid "    Slot %d is loaded in drive %d.\n"
+msgstr ""
+
+#: src/stored/status.c:216
+#, c-format
+msgid "    Drive %d is not loaded.\n"
+msgstr ""
+
+#: src/stored/status.c:235
+msgid "Device state:\n"
+msgstr ""
+
+#: src/stored/status.c:249
+#, c-format
+msgid ""
+"num_writers=%d JobStatus=%c block=%d\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1054
-msgid "Now moving to end of medium.\n"
+#: src/stored/status.c:253
+#, c-format
+msgid "Archive name: %s Device name: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1056 src/stored/btape.c:1286
+#: src/stored/status.c:255
 #, c-format
-msgid "We should be in file 3. I am at file %d. This is %s\n"
+msgid "File=%u block=%u\n"
 msgstr ""
 
-#: src/stored/btape.c:1063
+#: src/stored/status.c:256
+#, c-format
+msgid "Min block=%u Max block=%u\n"
+msgstr ""
+
+#: src/stored/status.c:272
+#, c-format
+msgid "%s Job %s waiting for Client connection.\n"
+msgstr ""
+
+#: src/stored/status.c:284
+#, c-format
+msgid "%s %s job %s JobId=%d Volume=\"%s\" device=\"%s\"\n"
+msgstr ""
+
+#: src/stored/status.c:303
+#, c-format
+msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
+msgstr ""
+
+#: src/stored/status.c:308
+msgid "    FDSocket closed\n"
+msgstr ""
+
+#: src/stored/status.c:335
+msgid " JobId  Level   Files          Bytes Status   Finished        Name \n"
+msgstr ""
+
+#: src/stored/status.c:469
+msgid "3900 Bad .status command, missing argument.\n"
+msgstr ""
+
+#: src/stored/status.c:494
+msgid "3900 Bad .status command, wrong argument.\n"
+msgstr ""
+
+#: src/stored/stored.c:65
+#, c-format
 msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
 "\n"
-"Now the important part, I am going to attempt to append to the tape.\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: stored [options] [-c config_file] [config_file]\n"
+"        -c <file>   use <file> as configuration file\n"
+"        -dnn        set debug level to nn\n"
+"        -f          run in foreground (for debugging)\n"
+"        -g <group>  set groupid to group\n"
+"        -p          proceed despite I/O errors\n"
+"        -s          no signals (for debugging)\n"
+"        -t          test - read config and exit\n"
+"        -u <user>   userid to <user>\n"
+"        -v          verbose user messages\n"
+"        -?          print this message.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1070
-msgid ""
-"Done appending, there should be no I/O errors\n"
-"\n"
+#: src/stored/stored.c:220
+msgid "Volume Session Time is ZERO!\n"
 msgstr ""
 
-#: src/stored/btape.c:1073
-msgid "End scanning the tape.\n"
+#: src/stored/stored.c:233
+#, c-format
+msgid "Unable to create thread. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1074 src/stored/btape.c:1299
+#: src/stored/stored.c:272
 #, c-format
-msgid "We should be in file 4. I am at file %d. This is %s\n"
+msgid "Only one Storage resource permitted in %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1113
-msgid ""
-"\n"
-"\n"
-"=== Autochanger test ===\n"
-"\n"
+#: src/stored/stored.c:277
+#, c-format
+msgid "No Director resource defined in %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1122
-msgid "3301 Issuing autochanger \"loaded\" command.\n"
+#: src/stored/stored.c:282
+#, c-format
+msgid "No Device resource defined in %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1131
+#: src/stored/stored.c:290
 #, c-format
-msgid "3991 Bad autochanger command: %s\n"
+msgid "No Messages resource defined in %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1132
+#: src/stored/stored.c:317
 #, c-format
-msgid "3991 result=\"%s\": ERR=%s\n"
+msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:1146
+#: src/stored/stored.c:323
 #, c-format
-msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
+msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:1154
+#: src/stored/stored.c:329
 #, c-format
-msgid "3992 Bad autochanger command: %s\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Storage \"%s\" in %s. At least one CA certificate store is required when "
+"using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/stored/btape.c:1155
+#: src/stored/stored.c:417
 #, c-format
-msgid "3992 result=\"%s\": ERR=%s\n"
+msgid "No Changer Name given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1165
+#: src/stored/stored.c:423
 #, c-format
-msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
+msgid "No Changer Command given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1173
+#: src/stored/stored.c:435
 #, c-format
-msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
+msgid ""
+"Media Type not the same for all devices in changer %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1177
+#: src/stored/stored.c:496
 #, c-format
-msgid "3993 Bad autochanger command: %s\n"
+msgid "Could not initialize %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1178
+#: src/stored/stored.c:509
 #, c-format
-msgid "3993 result=\"%s\": ERR=%s\n"
+msgid "Could not open device %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1244
-msgid ""
-"\n"
-"\n"
-"=== Forward space files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write five files then test forward spacing\n"
-"\n"
+#: src/stored/stored.c:526
+#, c-format
+msgid "Could not mount device %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1269
-msgid "Now forward spacing 1 file.\n"
+#: src/stored/stored_conf.c:188
+#, c-format
+msgid "Warning: no \"%s\" resource (%d) defined.\n"
 msgstr ""
 
-#: src/stored/btape.c:1274
+#: src/stored/stored_conf.c:191
 #, c-format
-msgid "We should be in file 1. I am at file %d. This is %s\n"
+msgid "dump_resource type=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:1281
-msgid "Now forward spacing 2 files.\n"
+#: src/stored/stored_conf.c:307
+#, c-format
+msgid "Warning: unknown resource type %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1294
-msgid "Now forward spacing 4 files.\n"
+#: src/stored/stored_conf.c:496
+#, c-format
+msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
 msgstr ""
 
-#: src/stored/btape.c:1312
-msgid "Now forward spacing 1 more file.\n"
+#: src/stored/stored_conf.c:502
+#, c-format
+msgid "Too many items in \"%s\" resource\n"
 msgstr ""
 
-#: src/stored/btape.c:1316
+#: src/stored/stored_conf.c:536
 #, c-format
-msgid "We should be in file 5. I am at file %d. This is %s\n"
+msgid "Cannot find AutoChanger resource %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1321
+#: src/stored/stored_conf.c:607
+#, c-format
 msgid ""
-"\n"
-"=== End Forward space files test ===\n"
-"\n"
+"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/stored/btape.c:1325
-msgid ""
-"\n"
-"The forward space file test failed.\n"
+#: src/stored/ansi_label.c:83
+#, c-format
+msgid "Read error on device %s in ANSI label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1422
-msgid ""
-"\n"
-"The above Bacula scan should have output identical to what follows.\n"
-"Please double check it ...\n"
-"=== Sample correct output ===\n"
-"1 block of 64448 bytes in file 1\n"
-"End of File mark.\n"
-"2 blocks of 64448 bytes in file 2\n"
-"End of File mark.\n"
-"3 blocks of 64448 bytes in file 3\n"
-"End of File mark.\n"
-"1 block of 64448 bytes in file 4\n"
-"End of File mark.\n"
-"Total files=4, blocks=7, bytes = 451,136\n"
-"=== End sample correct output ===\n"
-"\n"
+#: src/stored/ansi_label.c:93
+msgid "Insane! End of tape while reading ANSI label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1436
-msgid ""
-"If the above scan output is not identical to the\n"
-"sample output, you MUST correct the problem\n"
-"or Bacula will not be able to write multiple Jobs to \n"
-"the tape.\n"
-"\n"
+#: src/stored/ansi_label.c:117
+msgid "No VOL1 label while reading ANSI/IBM label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1515
+#: src/stored/ansi_label.c:137
 #, c-format
-msgid "Wrote one record of %d bytes.\n"
+msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
 msgstr ""
 
-#: src/stored/btape.c:1517
-msgid "Wrote block to device.\n"
+#: src/stored/ansi_label.c:148
+msgid "No HDR1 label while reading ANSI label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1537
-msgid "Bad length entered, using default of 1024 bytes.\n"
+#: src/stored/ansi_label.c:154
+#, c-format
+msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
 msgstr ""
 
-#: src/stored/btape.c:1546
-#, c-format
-msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
+#: src/stored/ansi_label.c:165
+msgid "No HDR2 label while reading ANSI/IBM label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1574
-#, c-format
-msgid "Starting scan at file %u\n"
+#: src/stored/ansi_label.c:179
+msgid "Unknown or bad ANSI/IBM label record.\n"
+msgstr ""
+
+#: src/stored/ansi_label.c:186
+msgid "Too many records in while reading ANSI/IBM label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1663
+#: src/stored/ansi_label.c:285
 #, c-format
-msgid "End of File mark.\n"
+msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
 msgstr ""
 
-#: src/stored/btape.c:1672
+#: src/stored/ansi_label.c:302
 #, c-format
-msgid "Short block read.\n"
+msgid "Could not write ANSI VOL1 label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1675
+#: src/stored/ansi_label.c:340 src/stored/ansi_label.c:369
 #, c-format
-msgid "Error reading block. ERR=%s\n"
+msgid "Could not write ANSI HDR1 label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1903
-msgid "Not OK\n"
+#: src/stored/ansi_label.c:345 src/stored/ansi_label.c:376
+msgid "Could not write ANSI HDR1 label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1931
-msgid "Set ok=false after write_block_to_device.\n"
+#: src/stored/ansi_label.c:381
+#, c-format
+msgid "Error writing EOF to tape. ERR=%s"
 msgstr ""
 
-#: src/stored/btape.c:1934
-msgid "Wrote End of Session label.\n"
+#: src/stored/ansi_label.c:386
+msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
 msgstr ""
 
-#: src/stored/btape.c:1962
+#: src/stored/dvd.c:153
 #, c-format
-msgid "Could not create state file: %s ERR=%s\n"
+msgid "Device %s cannot be mounted. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1966
+#: src/stored/dvd.c:261
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Done filling tape%s at %d:%d. Now beginning re-read of %stape ...\n"
+msgid "Cannot run free space command (%s)\n"
 msgstr ""
 
-#: src/stored/btape.c:2052
-msgid "Mount first tape. Press enter when ready: "
+#: src/stored/dvd.c:322
+#, c-format
+msgid "Error while writing current part to the DVD: %s"
 msgstr ""
 
-#: src/stored/btape.c:2076
-msgid "Reading the first 10000 records.\n"
+#: src/stored/dvd.c:343
+#, c-format
+msgid "Remaining free space %s on %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2079 src/stored/btape.c:2146
+#: src/stored/dvd.c:412
 #, c-format
-msgid "Reposition from %u:%u to %u:%u\n"
+msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2085
+#: src/stored/dvd.c:430
 #, c-format
-msgid "Reading block %u.\n"
+msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2087 src/stored/btape.c:2138 src/stored/btape.c:2154
+#: src/stored/dvd.c:634
 #, c-format
-msgid "Error reading block: ERR=%s\n"
+msgid "Unable to write part %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2092
-msgid ""
-"\n"
-"The last block on the tape matches. Test succeeded.\n"
-"\n"
+#: src/stored/wait.c:178 src/stored/wait.c:236
+#, c-format
+msgid "Job %s waiting to reserve a device.\n"
 msgstr ""
 
-#: src/stored/btape.c:2094
-msgid ""
-"\n"
-"The last block of the first tape matches.\n"
-"\n"
+#: src/stored/pythonsd.c:59
+msgid "SDName"
 msgstr ""
 
-#: src/stored/btape.c:2119
-msgid "Mount second tape. Press enter when ready: "
+#: src/stored/pythonsd.c:202
+msgid "Error in ParseTuple\n"
 msgstr ""
 
-#: src/stored/btape.c:2131
-#, c-format
-msgid "Reposition from %u:%u to 0:1\n"
+#: src/stored/pythonsd.c:218
+msgid "Parse tuple error in job_write\n"
 msgstr ""
 
-#: src/stored/btape.c:2136 src/stored/btape.c:2152
+#: src/stored/pythonsd.c:254
 #, c-format
-msgid "Reading block %d.\n"
+msgid "Error in Python method %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2142
-msgid ""
-"\n"
-"The first block on the second tape matches.\n"
-"\n"
+#: src/stored/reserve.c:344 src/stored/reserve.c:361
+#, c-format
+msgid "Failed command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2158
+#: src/stored/reserve.c:346
+#, c-format
 msgid ""
 "\n"
-"The last block on the second tape matches. Test succeeded.\n"
-"\n"
+"     Device \"%s\" with MediaType \"%s\" requested by DIR not found in SD "
+"Device resources.\n"
 msgstr ""
 
-#: src/stored/btape.c:2201 src/stored/btape.c:2212
-msgid "Last block written"
+#: src/stored/reserve.c:528
+#, c-format
+msgid "3926 Could not get dcr for device: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2203 src/stored/btape.c:2213
-msgid "Block read back"
+#: src/stored/reserve.c:568 src/stored/reserve.c:623
+#, c-format
+msgid "Device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/btape.c:2520
+#: src/stored/reserve.c:576
 #, c-format
-msgid "%s is an illegal command\n"
+msgid "Device %s is busy.\n"
 msgstr ""
 
-#: src/stored/btape.c:2530
+#: src/stored/reserve.c:631
 #, c-format
-msgid "Interactive commands:\n"
+msgid "Device %s is busy writing on another Volume.\n"
 msgstr ""
 
-#: src/stored/btape.c:2541
+#: src/stored/reserve.c:705
 #, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: btape <options> <device_name>\n"
-"       -b <file>   specify bootstrap file\n"
-"       -c <file>   set configuration file to file\n"
-"       -d <nn>     set debug level to nn\n"
-"       -p          proceed inspite of I/O errors\n"
-"       -s          turn off signals\n"
-"       -v          be verbose\n"
-"       -?          print this message.\n"
-"\n"
+msgid "Wanted Pool \"%s\", but device %s is using Pool \"%s\" .\n"
 msgstr ""
 
-#: src/stored/butil.c:128
-msgid "Volume name or names is too long. Please use a .bsr file.\n"
+#: src/stored/reserve.c:710 src/stored/reserve.c:711
+msgid "Logic error!!!! Should not get here.\n"
 msgstr ""
 
-#: src/stored/butil.c:148
+#: src/tools/bsmtp.c:85
 #, c-format
-msgid "Cannot find device \"%s\" in config file %s.\n"
+msgid "Fatal malformed reply from %s: %s\n"
 msgstr ""
 
-#: src/stored/butil.c:155
+#: src/tools/bsmtp.c:121
 #, c-format
-msgid "Cannot init device %s\n"
+msgid ""
+"\n"
+"Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -c          set the Cc: field\n"
+"       -dnn        set debug level to nn\n"
+"       -f          set the From: field\n"
+"       -h          use mailhost:port as the SMTP server\n"
+"       -s          set the Subject: field\n"
+"       -?          print this message.\n"
+"\n"
 msgstr ""
 
-#: src/stored/butil.c:174
-#, c-format
-msgid "Cannot open %s\n"
+#: src/tools/bsmtp.c:204
+msgid "Fatal error: no recipient given.\n"
 msgstr ""
 
-#: src/stored/butil.c:253
+#: src/tools/bsmtp.c:225
 #, c-format
-msgid "Could not find device \"%s\" in config file %s.\n"
+msgid "Fatal gethostname error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/butil.c:257
+#: src/tools/bsmtp.c:229
 #, c-format
-msgid "Using device: \"%s\" for %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:273
-msgid "Unexpected End of Data\n"
-msgstr ""
-
-#: src/stored/butil.c:275
-msgid "Unexpected End of Tape\n"
+msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/butil.c:277
-msgid "Unexpected End of File\n"
+#: src/tools/bsmtp.c:254
+#, c-format
+msgid "Error unknown mail host \"%s\": ERR=%s\n"
 msgstr ""
-
-#: src/stored/butil.c:279
-msgid "Tape Door is Open\n"
+
+#: src/tools/bsmtp.c:257
+msgid "Retrying connection using \"localhost\".\n"
 msgstr ""
 
-#: src/stored/butil.c:281
-msgid "Unexpected Tape is Off-line\n"
+#: src/tools/bsmtp.c:265
+#, c-format
+msgid "Fatal error: Unknown address family for smtp host: %d\n"
 msgstr ""
 
-#: src/stored/dev.c:110
+#: src/tools/bsmtp.c:273
 #, c-format
-msgid "Unable to stat device %s: ERR=%s\n"
+msgid "Fatal socket error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:125
+#: src/tools/bsmtp.c:277
 #, c-format
-msgid ""
-"%s is an unknown device type. Must be tape or directory\n"
-" or have RequiresMount=yes for DVD. st_mode=%x\n"
+msgid "Fatal connect error to %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:183
+#: src/tools/bsmtp.c:282
 #, c-format
-msgid "Unable to stat mount point %s: ERR=%s\n"
+msgid "Fatal dup error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:188
-msgid ""
-"Mount and unmount commands must defined for a device which requires mount.\n"
+#: src/tools/bsmtp.c:286 src/tools/bsmtp.c:290
+#, c-format
+msgid "Fatal fdopen error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:191
-msgid "Write part command must be defined for a device which requires mount.\n"
+#: src/tools/dbcheck.c:158
+msgid ""
+"Warning skipping the additional parameters for working directory/dbname/user/"
+"password/host.\n"
 msgstr ""
 
-#: src/stored/dev.c:197
+#: src/tools/dbcheck.c:174
 #, c-format
-msgid "Block size %u on device %s is too large, using default %u\n"
+msgid "Error can not find the Catalog name[%s] in the given config file [%s]\n"
 msgstr ""
 
-#: src/stored/dev.c:202
+#: src/tools/dbcheck.c:176
 #, c-format
-msgid "Max block size %u not multiple of device %s block size.\n"
+msgid "Error there is no Catalog section in the given config file [%s]\n"
 msgstr ""
 
-#: src/stored/dev.c:212 src/stored/dev.c:230 src/stored/dev.c:236
-#: src/stored/stored_conf.c:550
-#, c-format
-msgid "Unable to init mutex: ERR=%s\n"
+#: src/tools/dbcheck.c:185
+msgid "Error no Director resource defined.\n"
 msgstr ""
 
-#: src/stored/dev.c:218 src/stored/dev.c:224
-#, c-format
-msgid "Unable to init cond variable: ERR=%s\n"
+#: src/tools/dbcheck.c:199
+msgid "Wrong number of arguments.\n"
 msgstr ""
 
-#: src/stored/dev.c:310
-msgid "Illegal mode given to open dev.\n"
+#: src/tools/dbcheck.c:204
+msgid "Working directory not supplied.\n"
 msgstr ""
 
-#: src/stored/dev.c:372 src/stored/device.c:302
+#: src/tools/dbcheck.c:269
 #, c-format
-msgid "Unable to open device %s: ERR=%s\n"
+msgid "Hello, this is the database check/correct program.\n"
 msgstr ""
 
-#: src/stored/dev.c:430 src/stored/dev.c:489
+#: src/tools/dbcheck.c:271
 #, c-format
-msgid "Could not open file device %s. No Volume name given.\n"
+msgid "Modify database is on."
 msgstr ""
 
-#: src/stored/dev.c:455 src/stored/dev.c:569
+#: src/tools/dbcheck.c:273
 #, c-format
-msgid "Could not open: %s, ERR=%s\n"
+msgid "Modify database is off."
 msgstr ""
 
-#: src/stored/dev.c:514
+#: src/tools/dbcheck.c:275 src/tools/dbcheck.c:336
 #, c-format
-msgid ""
-"The media in the device %s is not empty, please blank it before writing "
-"anything to it.\n"
+msgid " Verbose is on.\n"
 msgstr ""
 
-#: src/stored/dev.c:530
+#: src/tools/dbcheck.c:277 src/tools/dbcheck.c:338
 #, c-format
-msgid "There is no valid media in the device %s.\n"
+msgid " Verbose is off.\n"
 msgstr ""
 
-#: src/stored/dev.c:537
+#: src/tools/dbcheck.c:279
 #, c-format
-msgid "Could not mount device %s.\n"
+msgid "Please select the fuction you want to perform.\n"
 msgstr ""
 
-#: src/stored/dev.c:595
+#: src/tools/dbcheck.c:283
 #, c-format
-msgid "Could not fstat: %s, ERR=%s\n"
+msgid ""
+"\n"
+"     1) Toggle modify database flag\n"
+"     2) Toggle verbose flag\n"
+"     3) Repair bad Filename records\n"
+"     4) Repair bad Path records\n"
+"     5) Eliminate duplicate Filename records\n"
+"     6) Eliminate duplicate Path records\n"
+"     7) Eliminate orphaned Jobmedia records\n"
+"     8) Eliminate orphaned File records\n"
+"     9) Eliminate orphaned Path records\n"
+"    10) Eliminate orphaned Filename records\n"
+"    11) Eliminate orphaned FileSet records\n"
+"    12) Eliminate orphaned Client records\n"
+"    13) Eliminate orphaned Job records\n"
+"    14) Eliminate all Admin records\n"
+"    15) Eliminate all Restore records\n"
+"    16) All (3-15)\n"
+"    17) Quit\n"
 msgstr ""
 
-#: src/stored/dev.c:648
+#: src/tools/dbcheck.c:302
 #, c-format
-msgid "Bad call to rewind_dev. Device %s not open\n"
+msgid ""
+"\n"
+"     1) Toggle modify database flag\n"
+"     2) Toggle verbose flag\n"
+"     3) Check for bad Filename records\n"
+"     4) Check for bad Path records\n"
+"     5) Check for duplicate Filename records\n"
+"     6) Check for duplicate Path records\n"
+"     7) Check for orphaned Jobmedia records\n"
+"     8) Check for orphaned File records\n"
+"     9) Check for orphaned Path records\n"
+"    10) Check for orphaned Filename records\n"
+"    11) Check for orphaned FileSet records\n"
+"    12) Check for orphaned Client records\n"
+"    13) Check for orphaned Job records\n"
+"    14) Check for all Admin records\n"
+"    15) Check for all Restore records\n"
+"    16) All (3-15)\n"
+"    17) Quit\n"
 msgstr ""
 
-#: src/stored/dev.c:677
+#: src/tools/dbcheck.c:322
+msgid "Select function number: "
+msgstr ""
+
+#: src/tools/dbcheck.c:329
 #, c-format
-msgid "Rewind error on %s. ERR=%s.\n"
+msgid "Database will be modified.\n"
 msgstr ""
 
-#: src/stored/dev.c:687 src/stored/dev.c:800 src/stored/dev.c:937
-#: src/stored/dev.c:1462
+#: src/tools/dbcheck.c:331
 #, c-format
-msgid "lseek_dev error on %s. ERR=%s.\n"
+msgid "Database will NOT be modified.\n"
 msgstr ""
 
-#: src/stored/dev.c:770
+#: src/tools/dbcheck.c:421
 #, c-format
-msgid "Bad call to eod_dev. Device %s not open\n"
+msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:836
+#: src/tools/dbcheck.c:429
 #, c-format
-msgid "ioctl MTEOM error on %s. ERR=%s.\n"
+msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
 msgstr ""
 
-#: src/stored/dev.c:844 src/stored/dev.c:977
+#: src/tools/dbcheck.c:436
 #, c-format
-msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
+msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
 msgstr ""
 
-#: src/stored/dev.c:923
-msgid "Bad device call. Device not open\n"
+#: src/tools/dbcheck.c:443
+#, c-format
+msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1046
-msgid "Bad call to load_dev. Device not open\n"
+#: src/tools/dbcheck.c:450
+#, c-format
+msgid "Orphaned ClientId=%s Name=\"%s\"\n"
 msgstr ""
 
-#: src/stored/dev.c:1057 src/stored/dev.c:1070
+#: src/tools/dbcheck.c:503
 #, c-format
-msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
+msgid "Deleting: %s\n"
 msgstr ""
 
-#: src/stored/dev.c:1089
-msgid "Bad call to offline_dev. Device not open\n"
+#: src/tools/dbcheck.c:577
+#, c-format
+msgid "Checking for duplicate Filename entries.\n"
 msgstr ""
 
-#: src/stored/dev.c:1112
+#: src/tools/dbcheck.c:586
 #, c-format
-msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
+msgid "Found %d duplicate Filename records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1153
-msgid "Bad call to fsf_dev. Device not open\n"
+#: src/tools/dbcheck.c:587
+msgid "Print the list? (yes/no): "
 msgstr ""
 
-#: src/stored/dev.c:1163 src/stored/dev.c:1284
+#: src/tools/dbcheck.c:603 src/tools/dbcheck.c:657
 #, c-format
-msgid "Device %s at End of Tape.\n"
+msgid "Found %d for: %s\n"
 msgstr ""
 
-#: src/stored/dev.c:1188 src/stored/dev.c:1264
+#: src/tools/dbcheck.c:630
 #, c-format
-msgid "ioctl MTFSF error on %s. ERR=%s.\n"
+msgid "Checking for duplicate Path entries.\n"
 msgstr ""
 
-#: src/stored/dev.c:1234
+#: src/tools/dbcheck.c:640
 #, c-format
-msgid "read error on %s. ERR=%s.\n"
+msgid "Found %d duplicate Path records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1313
-msgid "Bad call to bsf_dev. Device not open\n"
+#: src/tools/dbcheck.c:641 src/tools/dbcheck.c:691 src/tools/dbcheck.c:723
+#: src/tools/dbcheck.c:755 src/tools/dbcheck.c:783 src/tools/dbcheck.c:811
+#: src/tools/dbcheck.c:849 src/tools/dbcheck.c:887 src/tools/dbcheck.c:918
+#: src/tools/dbcheck.c:948 src/tools/dbcheck.c:982 src/tools/dbcheck.c:1040
+msgid "Print them? (yes/no): "
 msgstr ""
 
-#: src/stored/dev.c:1319
+#: src/tools/dbcheck.c:683
 #, c-format
-msgid "Device %s cannot BSF because it is not a tape.\n"
+msgid "Checking for orphaned JobMedia entries.\n"
 msgstr ""
 
-#: src/stored/dev.c:1334
+#: src/tools/dbcheck.c:690
 #, c-format
-msgid "ioctl MTBSF error on %s. ERR=%s.\n"
+msgid "Found %d orphaned JobMedia records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1354
-msgid "Bad call to fsr. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1363
+#: src/tools/dbcheck.c:703
 #, c-format
-msgid "ioctl MTFSR not permitted on %s.\n"
+msgid "Deleting %d orphaned JobMedia records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1391
+#: src/tools/dbcheck.c:712
 #, c-format
-msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
+msgid "Checking for orphaned File entries. This may take some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1411
-msgid "Bad call to bsr_dev. Device not open\n"
+#: src/tools/dbcheck.c:722
+#, c-format
+msgid "Found %d orphaned File records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1421
+#: src/tools/dbcheck.c:735
 #, c-format
-msgid "ioctl MTBSR not permitted on %s.\n"
+msgid "Deleting %d orphaned File records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1434
+#: src/tools/dbcheck.c:744
 #, c-format
-msgid "ioctl MTBSR error on %s. ERR=%s.\n"
+msgid "Checking for orphaned Path entries. This may take some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1451
-msgid "Bad call to reposition_dev. Device not open\n"
+#: src/tools/dbcheck.c:754
+#, c-format
+msgid "Found %d orphaned Path records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1519
-msgid "Bad call to weof_dev. Device not open\n"
+#: src/tools/dbcheck.c:763
+#, c-format
+msgid "Deleting %d orphaned Path records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1529
-msgid "Attempt to WEOF on non-appendable Volume\n"
+#: src/tools/dbcheck.c:772
+#, c-format
+msgid "Checking for orphaned Filename entries. This may take some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1546
+#: src/tools/dbcheck.c:782
 #, c-format
-msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
+msgid "Found %d orphaned Filename records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1641
+#: src/tools/dbcheck.c:791
 #, c-format
-msgid "I/O function \"%s\" not supported on this device.\n"
+msgid "Deleting %d orphaned Filename records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1779 src/stored/dvd.c:667
+#: src/tools/dbcheck.c:800
 #, c-format
-msgid "Unable to truncate device %s. ERR=%s\n"
+msgid "Checking for orphaned FileSet entries. This takes some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1818
-msgid "Bad call to term_dev. Device not open\n"
+#: src/tools/dbcheck.c:810
+#, c-format
+msgid "Found %d orphaned FileSet records.\n"
 msgstr ""
 
-#: src/stored/device.c:105
+#: src/tools/dbcheck.c:822
 #, c-format
-msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
+msgid "Deleting %d orphaned FileSet records.\n"
 msgstr ""
 
-#: src/stored/device.c:119
+#: src/tools/dbcheck.c:831
 #, c-format
-msgid "New volume \"%s\" mounted on device %s at %s.\n"
+msgid "Checking for orphaned Client entries.\n"
 msgstr ""
 
-#: src/stored/device.c:328
-msgid "Bad call to force_close_dev. Device not open\n"
+#: src/tools/dbcheck.c:848
+#, c-format
+msgid "Found %d orphaned Client records.\n"
 msgstr ""
 
-#: src/stored/device.c:373
+#: src/tools/dbcheck.c:860
 #, c-format
-msgid "pthread_cond_wait failure. ERR=%s\n"
+msgid "Deleting %d orphaned Client records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:140
-msgid "Connection request failed.\n"
+#: src/tools/dbcheck.c:869
+#, c-format
+msgid "Checking for orphaned Job entries.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:149
+#: src/tools/dbcheck.c:886
 #, c-format
-msgid "Invalid connection. Len=%d\n"
+msgid "Found %d orphaned Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:262
+#: src/tools/dbcheck.c:898
 #, c-format
-msgid "3902 Job %s not found.\n"
+msgid "Deleting %d orphaned Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:279
+#: src/tools/dbcheck.c:908
 #, c-format
-msgid "3000 Job %s marked to be canceled.\n"
+msgid "Checking for Admin Job entries.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:283
-msgid "3903 Error scanning cancel command.\n"
+#: src/tools/dbcheck.c:917
+#, c-format
+msgid "Found %d Admin Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:352 src/stored/dircmd.c:648 src/stored/dircmd.c:712
-#: src/stored/dircmd.c:770 src/stored/dircmd.c:822 src/stored/dircmd.c:860
+#: src/tools/dbcheck.c:929
 #, c-format
-msgid "3999 Device \"%s\" not found\n"
+msgid "Deleting %d Admin Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:357
+#: src/tools/dbcheck.c:938
 #, c-format
-msgid "3903 Error scanning label command: %s\n"
+msgid "Checking for Restore Job entries.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:401
+#: src/tools/dbcheck.c:947
 #, c-format
-msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
+msgid "Found %d Restore Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:407
-msgid "3921 Wrong volume mounted.\n"
+#: src/tools/dbcheck.c:959
+#, c-format
+msgid "Deleting %d Restore Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:411
-msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
+#: src/tools/dbcheck.c:972
+#, c-format
+msgid "Checking for Filenames with a trailing slash\n"
 msgstr ""
 
-#: src/stored/dircmd.c:419 src/stored/dircmd.c:428
+#: src/tools/dbcheck.c:981
 #, c-format
-msgid "3912 Failed to label Volume: ERR=%s\n"
+msgid "Found %d bad Filename records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:431
+#: src/tools/dbcheck.c:995 src/tools/dbcheck.c:1053
 #, c-format
-msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
+msgid "Reparing %d bad Filename records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:464
+#: src/tools/dbcheck.c:1030
 #, c-format
-msgid "3001 Mounted Volume: %s\n"
+msgid "Checking for Paths without a trailing slash\n"
 msgstr ""
 
-#: src/stored/dircmd.c:468 src/stored/dircmd.c:896
+#: src/tools/dbcheck.c:1039
 #, c-format
-msgid ""
-"3902 Cannot mount Volume on Storage Device %s because:\n"
-"%s"
+msgid "Found %d bad Path records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:491 src/stored/reserve.c:518
+#: src/tools/testfind.c:49
 #, c-format
 msgid ""
 "\n"
-"     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
+"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
+"       -a          print extended attributes (Win32 debug)\n"
+"       -dnn        set debug level to nn\n"
+"       -e          specify file of exclude patterns\n"
+"       -i          specify file of include patterns\n"
+"       -           read pattern(s) from stdin\n"
+"       -?          print this message.\n"
+"\n"
+"Patterns are used for file inclusion -- normally directories.\n"
+"Debug level >= 1 prints each file found.\n"
+"Debug level >= 10 prints path/file for catalog.\n"
+"Errors are always printed.\n"
+"Files/paths truncated is the number of files/paths with len > 255.\n"
+"Truncation is only in the catalog.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:512 src/stored/reserve.c:514
+#: src/tools/testfind.c:134 src/tools/testls.c:130
 #, c-format
-msgid ""
-"\n"
-"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
-"does not exist.\n"
+msgid "Could not open include file: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:568 src/stored/dircmd.c:616
+#: src/tools/testfind.c:147 src/tools/testls.c:143
 #, c-format
-msgid "3901 open device failed: ERR=%s\n"
+msgid "Could not open exclude file: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:583 src/stored/dircmd.c:607
+#: src/tools/testfind.c:160
 #, c-format
-msgid "3001 Device %s is mounted with Volume \"%s\"\n"
+msgid ""
+"Total files    : %d\n"
+"Max file length: %d\n"
+"Max path length: %d\n"
+"Files truncated: %d\n"
+"Paths truncated: %d\n"
+"Hard links     : %d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:586 src/stored/dircmd.c:610 src/stored/dircmd.c:625
+#: src/tools/testfind.c:199
 #, c-format
-msgid ""
-"3905 Device %s open but no Bacula volume is mounted.\n"
-"If this is not a blank tape, try unmounting and remounting the Volume.\n"
+msgid "Reg: %s\n"
+msgstr ""
+
+#: src/tools/testfind.c:220
+msgid "\t[will not descend: recursion turned off]"
+msgstr ""
+
+#: src/tools/testfind.c:222
+msgid "\t[will not descend: file system change not allowed]"
+msgstr ""
+
+#: src/tools/testfind.c:224
+msgid "\t[will not descend: disallowed file system]"
 msgstr ""
 
-#: src/stored/dircmd.c:595
+#: src/tools/testfind.c:240 src/tools/testls.c:178
 #, c-format
-msgid "3001 Device %s is doing acquire.\n"
+msgid "Err: Could not access %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:600 src/stored/dircmd.c:690
+#: src/tools/testfind.c:243 src/tools/testls.c:181
 #, c-format
-msgid "3903 Device %s is being labeled.\n"
+msgid "Err: Could not follow ff->link %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:622
+#: src/tools/testfind.c:246 src/tools/testls.c:184
 #, c-format
-msgid "3001 Device %s is already mounted with Volume \"%s\"\n"
+msgid "Err: Could not stat %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:631
+#: src/tools/testfind.c:249 src/tools/testls.c:187
 #, c-format
-msgid "3002 Device %s is mounted.\n"
+msgid "Skip: File not saved. No change. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:637
+#: src/tools/testfind.c:252 src/tools/testls.c:190
 #, c-format
-msgid "3906 File device %s is always mounted.\n"
+msgid "Err: Attempt to backup archive. Not saved. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:643
+#: src/tools/testfind.c:255 src/tools/testls.c:199
 #, c-format
-msgid "3905 Bizarre wait state %d\n"
+msgid "Err: Could not open directory %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:652
+#: src/tools/testfind.c:258 src/tools/testls.c:202
 #, c-format
-msgid "3909 Error scanning mount command: %s\n"
+msgid "Err: Unknown file ff->type %d: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:673
+#: src/tools/testfind.c:308
 #, c-format
-msgid "3901 Device %s is already unmounted.\n"
+msgid "===== Filename truncated to 255 chars: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:682
+#: src/tools/testfind.c:325
 #, c-format
-msgid "3001 Device %s unmounted.\n"
+msgid "========== Path name truncated to 255 chars: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:686
+#: src/tools/testfind.c:334
 #, c-format
-msgid "3902 Device %s is busy in acquire.\n"
+msgid "========== Path length is zero. File=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:707
+#: src/tools/testfind.c:337
 #, c-format
-msgid "3002 Device %s unmounted.\n"
+msgid "Path: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:717
+#: src/tools/testls.c:45
 #, c-format
-msgid "3907 Error scanning unmount command: %s\n"
+msgid ""
+"\n"
+"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
+"       -a          print extended attributes (Win32 debug)\n"
+"       -dnn        set debug level to nn\n"
+"       -e          specify file of exclude patterns\n"
+"       -i          specify file of include patterns\n"
+"       -           read pattern(s) from stdin\n"
+"       -?          print this message.\n"
+"\n"
+"Patterns are file inclusion -- normally directories.\n"
+"Debug level >= 1 prints each file found.\n"
+"Debug level >= 10 prints path/file for catalog.\n"
+"Errors always printed.\n"
+"Files/paths truncated is number with len > 255.\n"
+"Truncation is only in catalog.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:742
+#: src/tools/testls.c:193
 #, c-format
-msgid "3911 Device %s already released.\n"
+msgid "Recursion turned off. Directory not entered. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:749
+#: src/tools/testls.c:196
 #, c-format
-msgid "3912 Device %s waiting for mount.\n"
+msgid "Skip: File system change prohibited. Directory not entered. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:753
+#: src/tools/fstype.c:34
 #, c-format
-msgid "3913 Device %s is busy in acquire.\n"
+msgid ""
+"\n"
+"Usage: fstype [-d debug_level] path ...\n"
+"\n"
+"       Print the file system type a given file/directory is on.\n"
+"       The following options are supported:\n"
+"\n"
+"       -v     print both path and file system type.\n"
+"       -?     print this message.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:757
+#: src/tools/fstype.c:86
 #, c-format
-msgid "3914 Device %s is being labeled.\n"
+msgid "%s: unknown\n"
 msgstr ""
 
-#: src/stored/dircmd.c:765
-#, c-format
-msgid "3012 Device %s released.\n"
+#: src/tray-monitor/authenticate.c:78
+msgid ""
+"Director authorization problem.\n"
+"Most likely the passwords do not agree.\n"
+"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
+"for help.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:775
-#, c-format
-msgid "3917 Error scanning release command: %s\n"
+#: src/tray-monitor/authenticate.c:127
+msgid ""
+"Director and Storage daemon passwords or names not the same.\n"
+"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
+"for help.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:808
-#, c-format
-msgid "3995 Device %s is not an autochanger.\n"
+#: src/tray-monitor/authenticate.c:172
+msgid ""
+"Director and File daemon passwords or names not the same.\n"
+"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
+"for help.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:826
+#: src/tray-monitor/tray-monitor.c:102
 #, c-format
-msgid "3908 Error scanning autocharger list/slots command: %s\n"
+msgid ""
+"Copyright (C) 2000-2004 Kern Sibbald and John Walker\n"
+"Written by Nicolas Boichat (2004)\n"
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     set configuration file to file\n"
+"       -dnn          set debug level to nn\n"
+"       -t            test - read configuration and exit\n"
+"       -?            print this message.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:864
+#: src/tray-monitor/tray-monitor.c:251
 #, c-format
-msgid "3909 Error scanning readlabel command: %s\n"
+msgid ""
+"Error: %d Monitor resource defined in %s. You must define one and only one "
+"Monitor resource.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:892
+#: src/tray-monitor/tray-monitor.c:282
 #, c-format
-msgid "3001 Volume=%s Slot=%d\n"
+msgid ""
+"No Client, Storage nor Director resource defined in %s\n"
+"Without that I don't how to get status from the File, Storage or Director "
+"Daemon :-(\n"
 msgstr ""
 
-#: src/stored/dircmd.c:921
+#: src/tray-monitor/tray-monitor.c:304
 #, c-format
-msgid "3910 Unable to open device %s: ERR=%s\n"
+msgid ""
+"Invalid refresh interval defined in %s\n"
+"This value must be greater or equal to 1 second and less or equal to 10 "
+"minutes (read value: %d).\n"
 msgstr ""
 
-#: src/stored/dircmd.c:931
-#, c-format
-msgid "3911 Device %s is busy reading.\n"
+#: src/tray-monitor/tray-monitor.c:319
+msgid "Open status window..."
 msgstr ""
 
-#: src/stored/dircmd.c:934
-#, c-format
-msgid "3912 Device %s is busy with %d writer(s).\n"
+#: src/tray-monitor/tray-monitor.c:325
+msgid "Exit"
 msgstr ""
 
-#: src/stored/fd_cmds.c:340
-msgid "Error parsing bootstrap file.\n"
+#: src/tray-monitor/tray-monitor.c:337
+msgid "Bacula tray monitor"
 msgstr ""
 
-#: src/stored/job.c:79
-#, c-format
-msgid "Bad Job Command from Director: %s\n"
+#: src/tray-monitor/tray-monitor.c:362
+msgid " (DIR)"
 msgstr ""
 
-#: src/stored/job.c:189
-#, c-format
-msgid "Job name not found: %s\n"
+#: src/tray-monitor/tray-monitor.c:366
+msgid " (FD)"
 msgstr ""
 
-#: src/stored/job.c:211
-msgid "Unable to authenticate File daemon\n"
+#: src/tray-monitor/tray-monitor.c:370
+msgid " (SD)"
 msgstr ""
 
-#: src/stored/job.c:338
-msgid "In free_jcr(), but still attached to device!!!!\n"
+#: src/tray-monitor/tray-monitor.c:383
+msgid "Unknown status."
 msgstr ""
 
-#: src/stored/label.c:74
-msgid "BAD call to read_dev_volume_label\n"
+#: src/tray-monitor/tray-monitor.c:424
+msgid "Refresh interval in seconds: "
 msgstr ""
 
-#: src/stored/label.c:79 src/stored/label.c:120 src/stored/label.c:208
+#: src/tray-monitor/tray-monitor.c:432
+msgid "Refresh now"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:436
+msgid "About"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:440
+msgid "Close"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:460
 #, c-format
-msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
+msgid "Disconnecting from Director %s:%d\n"
 msgstr ""
 
-#: src/stored/label.c:102
+#: src/tray-monitor/tray-monitor.c:463
 #, c-format
-msgid "Couldn't rewind device %s: ERR=%s\n"
+msgid "Disconnecting from Client %s:%d\n"
 msgstr ""
 
-#: src/stored/label.c:140
+#: src/tray-monitor/tray-monitor.c:466
 #, c-format
+msgid "Disconnecting from Storage %s:%d\n"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:502 src/tray-monitor/tray-monitor.c:512
+msgid "Bacula Tray Monitor"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:503 src/tray-monitor/tray-monitor.c:513
 msgid ""
-"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
+"Copyright (C) 2004 Kern Sibbald and John Walker\n"
+"Written by Nicolas Boichat\n"
 msgstr ""
 
-#: src/stored/label.c:145
-msgid "Could not read Volume label from block.\n"
+#: src/tray-monitor/tray-monitor.c:505
+msgid "Version"
 msgstr ""
 
-#: src/stored/label.c:148
+#: src/tray-monitor/tray-monitor.c:509
 #, c-format
-msgid "Could not unserialize Volume label: ERR=%s\n"
+msgid ""
+"%s\n"
+"\n"
+"%s\n"
+"%s %s (%s) %s %s %s"
 msgstr ""
 
-#: src/stored/label.c:153
-#, c-format
-msgid "Volume Header Id bad: %s\n"
+#: src/tray-monitor/tray-monitor.c:515
+msgid "Version:"
 msgstr ""
 
-#: src/stored/label.c:180
+#: src/tray-monitor/tray-monitor.c:583
 #, c-format
-msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
+msgid "Error, currentitem is not a Client or a Storage..\n"
 msgstr ""
 
-#: src/stored/label.c:191
+#: src/tray-monitor/tray-monitor.c:656
 #, c-format
-msgid "Volume on %s has bad Bacula label type: %x\n"
+msgid ""
+"Current job: %s\n"
+"Last job: %s"
 msgstr ""
 
-#: src/stored/label.c:272
+#: src/tray-monitor/tray-monitor.c:668
 #, c-format
-msgid "Cannot write Volume label to block for device %s\n"
+msgid " (%d errors)"
 msgstr ""
 
-#: src/stored/label.c:393
+#: src/tray-monitor/tray-monitor.c:671
 #, c-format
-msgid "Rewind error on device %s: ERR=%s\n"
+msgid " (%d error)"
 msgstr ""
 
-#: src/stored/label.c:398
-#, c-format
-msgid "Truncate error on device %s: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:708
+msgid "No current job."
 msgstr ""
 
-#: src/stored/label.c:420
-#, c-format
-msgid "Unable to write device %s: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:711
+msgid "No last job."
 msgstr ""
 
-#: src/stored/label.c:448
-#, c-format
-msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
+#: src/tray-monitor/tray-monitor.c:719
+msgid "Job status: Created"
 msgstr ""
 
-#: src/stored/label.c:451
-#, c-format
-msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
+#: src/tray-monitor/tray-monitor.c:724
+msgid "Job status: Running"
 msgstr ""
 
-#: src/stored/label.c:648
-#, c-format
-msgid "Bad session label = %d\n"
+#: src/tray-monitor/tray-monitor.c:728
+msgid "Job status: Blocked"
 msgstr ""
 
-#: src/stored/label.c:666 src/stored/label.c:673
-#, c-format
-msgid "Error writing Session label to %s: %s\n"
+#: src/tray-monitor/tray-monitor.c:733
+msgid "Job status: Terminated"
 msgstr ""
 
-#: src/stored/label.c:707
-#, c-format
-msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
+#: src/tray-monitor/tray-monitor.c:738
+msgid "Job status: Terminated in error"
 msgstr ""
 
-#: src/stored/label.c:929
-#, c-format
-msgid "Date written      : %s\n"
+#: src/tray-monitor/tray-monitor.c:744
+msgid "Job status: Error"
 msgstr ""
 
-#: src/stored/label.c:934
-#, c-format
-msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
+#: src/tray-monitor/tray-monitor.c:748
+msgid "Job status: Fatal error"
 msgstr ""
 
-#: src/stored/label.c:954
-msgid "Fresh Volume"
+#: src/tray-monitor/tray-monitor.c:753
+msgid "Job status: Verify differences"
 msgstr ""
 
-#: src/stored/label.c:960
-msgid "Begin Job Session"
+#: src/tray-monitor/tray-monitor.c:758
+msgid "Job status: Canceled"
 msgstr ""
 
-#: src/stored/label.c:963
-msgid "End Job Session"
+#: src/tray-monitor/tray-monitor.c:763
+msgid "Job status: Waiting on File daemon"
 msgstr ""
 
-#: src/stored/label.c:966
-msgid "End of Media"
+#: src/tray-monitor/tray-monitor.c:768
+msgid "Job status: Waiting on the Storage daemon"
 msgstr ""
 
-#: src/stored/label.c:972
-msgid "Unknown"
+#: src/tray-monitor/tray-monitor.c:773
+msgid "Job status: Waiting for new media"
 msgstr ""
 
-#: src/stored/label.c:994
-msgid "End of physical tape.\n"
+#: src/tray-monitor/tray-monitor.c:778
+msgid "Job status: Waiting for Mount"
 msgstr ""
 
-#: src/stored/mount.c:197 src/stored/mount.c:294
-#, c-format
-msgid "Volume \"%s\" not on device %s.\n"
+#: src/tray-monitor/tray-monitor.c:783
+msgid "Job status: Waiting for storage resource"
 msgstr ""
 
-#: src/stored/mount.c:230
+#: src/tray-monitor/tray-monitor.c:788
+msgid "Job status: Waiting for job resource"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:793
+msgid "Job status: Waiting for Client resource"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:798
+msgid "Job status: Waiting for maximum jobs"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:803
+msgid "Job status: Waiting for start time"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:808
+msgid "Job status: Waiting for higher priority jobs to finish"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:813
 #, c-format
-msgid ""
-"Director wanted Volume \"%s\".\n"
-"    Current Volume \"%s\" not acceptable because:\n"
-"    %s"
+msgid "Unknown job status %c."
 msgstr ""
 
-#: src/stored/mount.c:284
+#: src/tray-monitor/tray-monitor.c:814
 #, c-format
-msgid "Labeled new Volume \"%s\" on device %s.\n"
+msgid "Job status: Unknown(%c)"
 msgstr ""
 
-#: src/stored/mount.c:289
+#: src/tray-monitor/tray-monitor.c:821
 #, c-format
-msgid "Warning device %s not configured to autolabel Volumes.\n"
+msgid "Bad scan : '%s' %d\n"
 msgstr ""
 
-#: src/stored/mount.c:340
+#: src/tray-monitor/tray-monitor.c:859
 #, c-format
-msgid "Volume \"%s\" previously written, moving to end of data.\n"
+msgid "Connecting to Director %s:%d"
 msgstr ""
 
-#: src/stored/mount.c:343
+#: src/tray-monitor/tray-monitor.c:865
 #, c-format
-msgid "Unable to position to end of data on device %s: ERR=%s\n"
+msgid "Connecting to Client %s:%d\n"
 msgstr ""
 
-#: src/stored/mount.c:355
+#: src/tray-monitor/tray-monitor.c:866
 #, c-format
-msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
+msgid "Connecting to Client %s:%d"
 msgstr ""
 
-#: src/stored/mount.c:358
+#: src/tray-monitor/tray-monitor.c:872
 #, c-format
-msgid ""
-"I cannot write on Volume \"%s\" because:\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
+msgid "Connecting to Storage %s:%d\n"
 msgstr ""
 
-#: src/stored/mount.c:411
+#: src/tray-monitor/tray-monitor.c:873
 #, c-format
-msgid "Marking Volume \"%s\" in Error in Catalog.\n"
+msgid "Connecting to Storage %s:%d"
 msgstr ""
 
-#: src/stored/mount.c:427
+#: src/tray-monitor/tray-monitor.c:878 src/tray-monitor/tray-monitor.c:916
 #, c-format
-msgid ""
-"Autochanger Volume \"%s\" not found in slot %d.\n"
-"    Setting InChanger to zero in catalog.\n"
+msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:104 src/stored/parse_bsr.c:108
-#, c-format
-msgid ""
-"Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n"
-"%s\n"
+#: src/tray-monitor/tray-monitor.c:884
+msgid "Cannot connect to daemon.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:130
-#, c-format
-msgid "Cannot open bootstrap file %s: %s\n"
+#: src/tray-monitor/tray-monitor.c:885
+msgid "Cannot connect to daemon."
 msgstr ""
 
-#: src/stored/parse_bsr.c:260
+#: src/tray-monitor/tray-monitor.c:897
 #, c-format
-msgid "MediaType %s in bsr at inappropriate place.\n"
+msgid "Authentication error : %s"
 msgstr ""
 
-#: src/stored/read.c:55
-msgid "No Volume names found for restore.\n"
+#: src/tray-monitor/tray-monitor.c:904
+msgid "Opened connection with Director daemon.\n"
 msgstr ""
 
-#: src/stored/read.c:110 src/stored/read.c:125
-#, c-format
-msgid "Error sending to File daemon. ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:905
+msgid "Opened connection with Director daemon."
 msgstr ""
 
-#: src/stored/read_record.c:302
-#, c-format
-msgid "Forward spacing to file:block %u:%u.\n"
+#: src/tray-monitor/tray-monitor.c:908
+msgid "Opened connection with File daemon.\n"
 msgstr ""
 
-#: src/stored/spool.c:91
-msgid "Spooling data ...\n"
+#: src/tray-monitor/tray-monitor.c:909
+msgid "Opened connection with File daemon."
 msgstr ""
 
-#: src/stored/spool.c:150
-#, c-format
-msgid "Open data spool file %s failed: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:912
+msgid "Opened connection with Storage daemon.\n"
 msgstr ""
 
-#: src/stored/spool.c:198
-#, c-format
-msgid "%s spooled data to Volume. Despooling %s bytes ...\n"
+#: src/tray-monitor/tray-monitor.c:913
+msgid "Opened connection with Storage daemon."
 msgstr ""
 
-#: src/stored/spool.c:252 src/stored/spool.c:426 src/stored/spool.c:464
-#, c-format
-msgid "Ftruncate spool file failed: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:948
+msgid "<< Error: BNET_PROMPT signal received. >>\n"
 msgstr ""
 
-#: src/stored/spool.c:303
-#, c-format
-msgid "Spool header read error. ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:953 src/wx-console/console_thread.cpp:442
+msgid "<< Heartbeat signal received, answered. >>\n"
 msgstr ""
 
-#: src/stored/spool.c:307
+#: src/tray-monitor/tray-monitor.c:957
 #, c-format
-msgid "Spool header read error. Wanted %u bytes, got %d\n"
+msgid "<< Unexpected signal received : %s >>\n"
 msgstr ""
 
-#: src/stored/spool.c:314
-#, c-format
-msgid "Spool block too big. Max %u bytes, got %u\n"
+#: src/tray-monitor/tray-monitor.c:962
+msgid "<ERROR>\n"
 msgstr ""
 
-#: src/stored/spool.c:320
-#, c-format
-msgid "Spool data read error. Wanted %u bytes, got %d\n"
+#: src/tray-monitor/tray-monitor.c:966
+msgid "Error : BNET_HARDEOF or BNET_ERROR"
 msgstr ""
 
-#: src/stored/spool.c:377
-msgid "User specified spool size reached.\n"
+#: src/tray-monitor/tray-monitor.c:972
+msgid "<STOP>\n"
 msgstr ""
 
-#: src/stored/spool.c:387
-msgid "Spooling data again ...\n"
+#: src/tray-monitor/tray-monitor.c:976
+msgid "Error : Connection closed."
 msgstr ""
 
-#: src/stored/spool.c:418
+#: src/tray-monitor/tray_conf.c:161
 #, c-format
-msgid "Error writing header to spool file. ERR=%s\n"
+msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:432 src/stored/spool.c:470
-msgid "Fatal despooling error."
+#: src/tray-monitor/tray_conf.c:167
+#, c-format
+msgid "Director: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:439
-msgid "Retrying after header spooling error failed.\n"
+#: src/tray-monitor/tray_conf.c:171
+#, c-format
+msgid "Client: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:453
+#: src/tray-monitor/tray_conf.c:175
 #, c-format
-msgid "Error writing data to spool file. ERR=%s\n"
+msgid "Storage: name=%s address=%s SDport=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:480
-msgid "Retrying after data spooling error failed.\n"
+#: src/wx-console/authenticate.c:126
+msgid "Bad response to Hello command: ERR="
 msgstr ""
 
-#: src/stored/spool.c:535 src/stored/spool.c:542
+#: src/baconfig.h:52
 #, c-format
-msgid "Fseek on attributes file failed: ERR=%s\n"
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/stored/spool.c:552
-#, c-format
-msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
+#: src/baconfig.h:59
+msgid "*None*"
 msgstr ""
 
-#: src/stored/spool.c:579
+#: src/wx-console/console_thread.cpp:100
 #, c-format
-msgid "fopen attr spool file %s failed: ERR=%s\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Director \"%s\" in config file.\n"
+" At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/stored/status.c:93
+#: src/wx-console/console_thread.cpp:109
 msgid ""
-"\n"
-"Device status:\n"
+"No Director resource defined in config file.\n"
+"Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/stored/status.c:95
+#: src/wx-console/console_thread.cpp:129
 #, c-format
-msgid "Autochanger \"%s\" with devices:\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Console \"%s\" in config file.\n"
 msgstr ""
 
-#: src/stored/status.c:109
-#, c-format
-msgid "Device %s is mounted with Volume \"%s\"\n"
+#: src/wx-console/console_thread.cpp:151
+msgid "Error while initializing windows sockets...\n"
 msgstr ""
 
-#: src/stored/status.c:112
-#, c-format
-msgid "Device %s open but no Bacula volume is mounted.\n"
+#: src/wx-console/console_thread.cpp:166
+msgid "Error while cleaning up windows sockets...\n"
 msgstr ""
 
-#: src/stored/status.c:122
-#, c-format
-msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
+#: src/wx-console/console_thread.cpp:204
+msgid "Error while initializing library."
 msgstr ""
 
-#: src/stored/status.c:136
-#, c-format
-msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
+#: src/wx-console/console_thread.cpp:234
+msgid "Please correct configuration file.\n"
 msgstr ""
 
-#: src/stored/status.c:141
-#, c-format
-msgid "    Positioned at File=%s Block=%s\n"
+#: src/wx-console/console_thread.cpp:267
+msgid "Error : Library not initialized\n"
 msgstr ""
 
-#: src/stored/status.c:147
-#, c-format
-msgid "Device %s is not open or does not exist.\n"
+#: src/wx-console/console_thread.cpp:278
+msgid "Error : No configuration file loaded\n"
 msgstr ""
 
-#: src/stored/status.c:149
-#, c-format
-msgid "Device \"%s\" is not open or does not exist.\n"
+#: src/wx-console/console_thread.cpp:288
+msgid "Connecting...\n"
 msgstr ""
 
-#: src/stored/status.c:184
-msgid "    Device is BLOCKED. User unmounted.\n"
+#: src/wx-console/console_thread.cpp:304
+msgid "Error : No director defined in config file.\n"
 msgstr ""
 
-#: src/stored/status.c:187
-msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
+#: src/wx-console/console_thread.cpp:316
+msgid "Multiple directors found in your config file.\n"
 msgstr ""
 
-#: src/stored/status.c:191
+#: src/wx-console/console_thread.cpp:325
 #, c-format
-msgid "    Device is BLOCKED waiting for mount of volume \"%s\".\n"
+msgid "Please choose a director (1-%s): "
 msgstr ""
 
-#: src/stored/status.c:194
-msgid "    Device is BLOCKED waiting for media.\n"
+#: src/wx-console/console_thread.cpp:397
+msgid "Failed to connect to the director\n"
 msgstr ""
 
-#: src/stored/status.c:198
-msgid "    Device is being initialized.\n"
+#: src/wx-console/console_thread.cpp:407
+msgid "Connected\n"
 msgstr ""
 
-#: src/stored/status.c:201
-msgid "    Device is blocked labeling a Volume.\n"
+#: src/wx-console/console_thread.cpp:445
+msgid "<< Unexpected signal received : "
 msgstr ""
 
-#: src/stored/status.c:209
-#, c-format
-msgid "    Slot %d is loaded in drive %d.\n"
+#: src/wx-console/console_thread.cpp:463
+msgid "Connection terminated\n"
+msgstr ""
+
+#: src/wx-console/main.cpp:96
+msgid "Bacula wx-console"
 msgstr ""
 
-#: src/stored/status.c:212
+#: src/wx-console/main.cpp:101 src/wx-console/wxbmainframe.cpp:248
 #, c-format
-msgid "    Drive %d is not loaded.\n"
+msgid "Welcome to bacula wx-console %s (%s)!\n"
 msgstr ""
 
-#: src/stored/status.c:231
-msgid "Device state:\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:41
+msgid "Config file editor"
 msgstr ""
 
-#: src/stored/status.c:268
-#, c-format
-msgid "%s Job %s waiting for Client connection.\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:57
+msgid "Save and close"
 msgstr ""
 
-#: src/stored/status.c:280
-#, c-format
-msgid "%s %s job %s JobId=%d Volume=\"%s\" device=\"%s\"\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:58
+msgid "Close without saving"
 msgstr ""
 
-#: src/stored/status.c:331
-msgid " JobId  Level   Files          Bytes Status   Finished        Name \n"
+#: src/wx-console/wxbconfigfileeditor.cpp:69
+msgid "# Bacula wx-console Configuration File\n"
 msgstr ""
 
-#: src/stored/stored.c:66
+#: src/wx-console/wxbconfigfileeditor.cpp:100
 #, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -dnn        set debug level to nn\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g <group>  set groupid to group\n"
-"        -p          proceed despite I/O errors\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test - read config and exit\n"
-"        -u <user>   userid to <user>\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
+msgid "Unable to write to %s\n"
 msgstr ""
 
-#: src/stored/stored.c:217
-msgid "Volume Session Time is ZERO!\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:101
+msgid "Error while saving"
 msgstr ""
 
-#: src/stored/stored.c:230
-#, c-format
-msgid "Unable to create thread. ERR=%s\n"
+#: src/wx-console/wxbconfigpanel.cpp:184
+msgid "Apply"
 msgstr ""
 
-#: src/stored/stored.c:269
-#, c-format
-msgid "Only one Storage resource permitted in %s\n"
+#: src/wx-console/wxbhistorytextctrl.cpp:61
+#: src/wx-console/wxbhistorytextctrl.cpp:132
+#: src/wx-console/wxbmainframe.cpp:272
+msgid "Type your command below:"
 msgstr ""
 
-#: src/stored/stored.c:274
-#, c-format
-msgid "No Director resource defined in %s. Cannot continue.\n"
+#: src/wx-console/wxbhistorytextctrl.cpp:96
+msgid "Unknown command."
 msgstr ""
 
-#: src/stored/stored.c:279
-#, c-format
-msgid "No Device resource defined in %s. Cannot continue.\n"
+#: src/wx-console/wxbhistorytextctrl.cpp:105
+msgid "Possible completions: "
 msgstr ""
 
-#: src/stored/stored.c:287
-#, c-format
-msgid "No Messages resource defined in %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:258
+#: src/wx-console/wxbrestorepanel.cpp:1861
+#: src/wx-console/wxbrestorepanel.cpp:1890
+msgid "Enter restore mode"
 msgstr ""
 
-#: src/stored/stored.c:314
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
+#: src/wx-console/wxbrestorepanel.cpp:261
+msgid "Cancel restore"
 msgstr ""
 
-#: src/stored/stored.c:320
-#, c-format
-msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
+#: src/wx-console/wxbrestorepanel.cpp:287
+#: src/wx-console/wxbrestorepanel.cpp:341
+msgid "Add"
 msgstr ""
 
-#: src/stored/stored.c:326
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
+#: src/wx-console/wxbrestorepanel.cpp:289
+#: src/wx-console/wxbrestorepanel.cpp:343
+msgid "Remove"
 msgstr ""
 
-#: src/stored/stored.c:414
-#, c-format
-msgid "No Changer Name given for device %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:291
+#: src/wx-console/wxbrestorepanel.cpp:345
+msgid "Refresh"
 msgstr ""
 
-#: src/stored/stored.c:420
-#, c-format
-msgid "No Changer Command given for device %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:310
+msgid "M"
 msgstr ""
 
-#: src/stored/stored.c:432
-#, c-format
-msgid ""
-"Media Type not the same for all devices in changer %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:326
+msgid "Perm."
 msgstr ""
 
-#: src/stored/stored.c:493
-#, c-format
-msgid "Could not initialize %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:359
+#: src/wx-console/wxbrestorepanel.cpp:372
+#: src/wx-console/wxbrestorepanel.cpp:524
+#: src/wx-console/wxbrestorepanel.cpp:534
+#: src/wx-console/wxbrestorepanel.cpp:537
+#: src/wx-console/wxbrestorepanel.cpp:1732
+#: src/wx-console/wxbrestorepanel.cpp:1812
+msgid "Job Name"
 msgstr ""
 
-#: src/stored/stored.c:506
-#, c-format
-msgid "Could not open device %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:361
+#: src/wx-console/wxbrestorepanel.cpp:377
+#: src/wx-console/wxbrestorepanel.cpp:476
+#: src/wx-console/wxbrestorepanel.cpp:477
+#: src/wx-console/wxbrestorepanel.cpp:487
+#: src/wx-console/wxbrestorepanel.cpp:488
+#: src/wx-console/wxbrestorepanel.cpp:1101
+#: src/wx-console/wxbrestorepanel.cpp:1768
+#: src/wx-console/wxbrestorepanel.cpp:1827
+msgid "Fileset"
 msgstr ""
 
-#: src/stored/stored.c:523
-#, c-format
-msgid "Could not mount device %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:364
+#: src/wx-console/wxbrestorepanel.cpp:1168
+#: src/wx-console/wxbrestorepanel.cpp:1183
+#: src/wx-console/wxbrestorepanel.cpp:1185
+#: src/wx-console/wxbrestorepanel.cpp:1193
+#: src/wx-console/wxbrestorepanel.cpp:1195
+#: src/wx-console/wxbrestorepanel.cpp:1212
+#: src/wx-console/wxbrestorepanel.cpp:1219
+#: src/wx-console/wxbrestorepanel.cpp:1759
+#: src/wx-console/wxbrestorepanel.cpp:1885
+msgid "Before"
 msgstr ""
 
-#: src/stored/stored_conf.c:188
-#, c-format
-msgid "Warning: no \"%s\" resource (%d) defined.\n"
+#: src/wx-console/wxbrestorepanel.cpp:366
+msgid "Please configure parameters concerning files to restore :"
 msgstr ""
 
-#: src/stored/stored_conf.c:307
-#, c-format
-msgid "Warning: unknown resource type %d\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+#: src/wx-console/wxbrestorepanel.cpp:1820
+msgid "always"
 msgstr ""
 
-#: src/stored/stored_conf.c:496
-#, c-format
-msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+msgid "if newer"
 msgstr ""
 
-#: src/stored/stored_conf.c:502
-#, c-format
-msgid "Too many items in \"%s\" resource\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+msgid "if older"
 msgstr ""
 
-#: src/stored/stored_conf.c:607
-#, c-format
-msgid ""
-"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+#: src/wx-console/wxbrestorepanel.cpp:1823
+msgid "never"
 msgstr ""
 
-#: src/stored/ansi_label.c:83
-#, c-format
-msgid "Read error on device %s in ANSI label. ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:383
+msgid "Please configure parameters concerning files restoration :"
 msgstr ""
 
-#: src/stored/ansi_label.c:93
-msgid "Insane! End of tape while reading ANSI label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:448
+msgid "Getting parameters list."
 msgstr ""
 
-#: src/stored/ansi_label.c:117
-msgid "No VOL1 label while reading ANSI/IBM label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:456
+msgid "Error : no clients returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:148
-msgid "No HDR1 label while reading ANSI label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:480
+msgid "Error : no filesets returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:154
-#, c-format
-msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
+#: src/wx-console/wxbrestorepanel.cpp:504
+msgid "Error : no storage returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:165
-msgid "No HDR2 label while reading ANSI/IBM label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:527
+#: src/wx-console/wxbrestorepanel.cpp:551
+msgid "Error : no jobs returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:179
-msgid "Unknown or bad ANSI/IBM label record.\n"
+#: src/wx-console/wxbrestorepanel.cpp:537
+msgid "RestoreFiles"
 msgstr ""
 
-#: src/stored/ansi_label.c:186
-msgid "Too many records in while reading ANSI/IBM label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:572
+msgid "Please configure your restore parameters."
 msgstr ""
 
-#: src/stored/ansi_label.c:285
-#, c-format
-msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
+#: src/wx-console/wxbrestorepanel.cpp:583
+msgid "Building restore tree..."
 msgstr ""
 
-#: src/stored/ansi_label.c:302
-#, c-format
-msgid "Could not write ANSI VOL1 label. ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:622
+msgid "Error while starting restore: "
 msgstr ""
 
-#: src/stored/ansi_label.c:340 src/stored/ansi_label.c:369
-#, c-format
-msgid "Could not write ANSI HDR1 label. ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:712
+msgid ""
+"Right click on a file or on a directory, or double-click on its mark to add "
+"it to the restore list."
 msgstr ""
 
-#: src/stored/ansi_label.c:345 src/stored/ansi_label.c:376
-msgid "Could not write ANSI HDR1 label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:729
+msgid " files selected to be restored."
 msgstr ""
 
-#: src/stored/ansi_label.c:381
+#: src/wx-console/wxbrestorepanel.cpp:734
+msgid " file selected to be restored."
+msgstr ""
+
+#: src/wx-console/wxbrestorepanel.cpp:741
 #, c-format
-msgid "Error writing EOF to tape. ERR=%s"
+msgid "Please configure your restore (%s files selected to be restored)..."
 msgstr ""
 
-#: src/stored/ansi_label.c:386
-msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
+#: src/wx-console/wxbrestorepanel.cpp:751
+msgid "Restore failed : no file selected.\n"
 msgstr ""
 
-#: src/stored/dvd.c:342
-#, c-format
-msgid "Remaining free space %s on %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:752
+msgid "Restore failed : no file selected."
 msgstr ""
 
-#: src/stored/dvd.c:411
-#, c-format
-msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:762
+msgid "Restoring, please wait..."
 msgstr ""
 
-#: src/stored/dvd.c:429
-#, c-format
-msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:775
+msgid "Job started. JobId="
 msgstr ""
 
-#: src/stored/dvd.c:633
-#, c-format
-msgid "Unable to write part %s: ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:777
+msgid "Restore started, jobid="
 msgstr ""
 
-#: src/stored/wait.c:178 src/stored/wait.c:236
-#, c-format
-msgid "Job %s waiting to reserve a device.\n"
+#: src/wx-console/wxbrestorepanel.cpp:781
+msgid "Job failed."
 msgstr ""
 
-#: src/stored/pythonsd.c:59
-msgid "SDName"
+#: src/wx-console/wxbrestorepanel.cpp:782
+msgid "Restore failed, please look at messages.\n"
 msgstr ""
 
-#: src/stored/reserve.c:344 src/stored/reserve.c:361
-#, c-format
-msgid "Failed command: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:783
+msgid "Restore failed, please look at messages in console."
 msgstr ""
 
-#: src/stored/reserve.c:346
-#, c-format
-msgid ""
-"\n"
-"     Device \"%s\" with MediaType \"%s\" requested by DIR not found in SD "
-"Device resources.\n"
+#: src/wx-console/wxbrestorepanel.cpp:789
+#: src/wx-console/wxbrestorepanel.cpp:790
+msgid "Failed to retrieve jobid.\n"
 msgstr ""
 
-#: src/stored/reserve.c:528
-#, c-format
-msgid "3926 Could not get dcr for device: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:816
+msgid ""
+"Restore is scheduled in more than two minutes, wx-console will not wait for "
+"its completion.\n"
 msgstr ""
 
-#: src/stored/reserve.c:568 src/stored/reserve.c:623
-#, c-format
-msgid "Device %s is BLOCKED due to user unmount.\n"
+#: src/wx-console/wxbrestorepanel.cpp:817
+msgid ""
+"Restore is scheduled in more than two minutes, wx-console will not wait for "
+"its completion."
 msgstr ""
 
-#: src/stored/reserve.c:576
-#, c-format
-msgid "Device %s is busy.\n"
+#: src/wx-console/wxbrestorepanel.cpp:841
+msgid "Restore job created, but not yet running."
 msgstr ""
 
-#: src/stored/reserve.c:631
+#: src/wx-console/wxbrestorepanel.cpp:846
 #, c-format
-msgid "Device %s is busy writing on another Volume.\n"
+msgid "Restore job running, please wait (%d of %d files restored)..."
 msgstr ""
 
-#: src/stored/reserve.c:705
-#, c-format
-msgid "Wanted Pool \"%s\", but device %s is using Pool \"%s\" .\n"
+#: src/wx-console/wxbrestorepanel.cpp:850
+msgid "Restore job terminated successfully."
 msgstr ""
 
-#: src/stored/reserve.c:711
-msgid "Logic error!!!! Should not get here.\n"
+#: src/wx-console/wxbrestorepanel.cpp:851
+msgid "Restore job terminated successfully.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:154
-msgid ""
-"Warning skipping the additional parameters for working directory/dbname/user/"
-"password/host.\n"
+#: src/wx-console/wxbrestorepanel.cpp:856
+msgid "Restore job terminated in error, see messages in console."
+msgstr ""
+
+#: src/wx-console/wxbrestorepanel.cpp:857
+msgid "Restore job terminated in error, see messages.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:195
-msgid "Wrong number of arguments.\n"
+#: src/wx-console/wxbrestorepanel.cpp:862
+msgid "Restore job reported a non-fatal error."
 msgstr ""
 
-#: src/tools/dbcheck.c:200
-msgid "Working directory not supplied.\n"
+#: src/wx-console/wxbrestorepanel.cpp:866
+msgid "Restore job reported a fatal error."
 msgstr ""
 
-#: src/tools/dbcheck.c:272
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Repair bad Filename records\n"
-"     4) Repair bad Path records\n"
-"     5) Eliminate duplicate Filename records\n"
-"     6) Eliminate duplicate Path records\n"
-"     7) Eliminate orphaned Jobmedia records\n"
-"     8) Eliminate orphaned File records\n"
-"     9) Eliminate orphaned Path records\n"
-"    10) Eliminate orphaned Filename records\n"
-"    11) Eliminate orphaned FileSet records\n"
-"    12) Eliminate orphaned Client records\n"
-"    13) Eliminate orphaned Job records\n"
-"    14) Eliminate all Admin records\n"
-"    15) Eliminate all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
+#: src/wx-console/wxbrestorepanel.cpp:871
+msgid "Restore job cancelled by user."
 msgstr ""
 
-#: src/tools/dbcheck.c:291
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Check for bad Filename records\n"
-"     4) Check for bad Path records\n"
-"     5) Check for duplicate Filename records\n"
-"     6) Check for duplicate Path records\n"
-"     7) Check for orphaned Jobmedia records\n"
-"     8) Check for orphaned File records\n"
-"     9) Check for orphaned Path records\n"
-"    10) Check for orphaned Filename records\n"
-"    11) Check for orphaned FileSet records\n"
-"    12) Check for orphaned Client records\n"
-"    13) Check for orphaned Job records\n"
-"    14) Check for all Admin records\n"
-"    15) Check for all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
+#: src/wx-console/wxbrestorepanel.cpp:872
+msgid "Restore job cancelled by user.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:311
-msgid "Select function number: "
+#: src/wx-console/wxbrestorepanel.cpp:877
+msgid "Restore job is waiting on File daemon."
 msgstr ""
 
-#: src/tools/dbcheck.c:317
-#, c-format
-msgid "Database will %sbe modified.\n"
+#: src/wx-console/wxbrestorepanel.cpp:881
+msgid "Restore job is waiting for new media."
 msgstr ""
 
-#: src/tools/dbcheck.c:317
-msgid "NOT "
+#: src/wx-console/wxbrestorepanel.cpp:885
+msgid "Restore job is waiting for storage resource."
 msgstr ""
 
-#: src/tools/dbcheck.c:321
-#, c-format
-msgid "Verbose is %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:889
+msgid "Restore job is waiting for job resource."
 msgstr ""
 
-#: src/tools/dbcheck.c:321
-msgid "On"
+#: src/wx-console/wxbrestorepanel.cpp:893
+msgid "Restore job is waiting for Client resource."
 msgstr ""
 
-#: src/tools/dbcheck.c:321
-msgid "Off"
+#: src/wx-console/wxbrestorepanel.cpp:897
+msgid "Restore job is waiting for maximum jobs."
 msgstr ""
 
-#: src/tools/dbcheck.c:404
-#, c-format
-msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:901
+msgid "Restore job is waiting for start time."
 msgstr ""
 
-#: src/tools/dbcheck.c:412
-#, c-format
-msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
+#: src/wx-console/wxbrestorepanel.cpp:905
+msgid "Restore job is waiting for higher priority jobs to finish."
 msgstr ""
 
-#: src/tools/dbcheck.c:419
-#, c-format
-msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
+#: src/wx-console/wxbrestorepanel.cpp:954
+msgid ""
+"The restore job has not been started within one minute, wx-console will not "
+"wait for its completion anymore.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:426
-#, c-format
-msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:955
+msgid ""
+"The restore job has not been started within one minute, wx-console will not "
+"wait for its completion anymore."
 msgstr ""
 
-#: src/tools/dbcheck.c:433
-#, c-format
-msgid "Orphaned ClientId=%s Name=\"%s\"\n"
+#: src/wx-console/wxbrestorepanel.cpp:965
+msgid "Restore done successfully.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:613
-#, c-format
-msgid "Checking for duplicate Path entries.\n"
+#: src/wx-console/wxbrestorepanel.cpp:966
+msgid "Restore done successfully."
 msgstr ""
 
-#: src/tools/testfind.c:49
-#, c-format
-msgid ""
-"\n"
-"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -dnn        set debug level to nn\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are used for file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors are always printed.\n"
-"Files/paths truncated is the number of files/paths with len > 255.\n"
-"Truncation is only in the catalog.\n"
-"\n"
+#: src/wx-console/wxbrestorepanel.cpp:1037
+msgid "Applying restore configuration changes..."
 msgstr ""
 
-#: src/tools/testfind.c:156
-#, c-format
-msgid ""
-"Total files    : %d\n"
-"Max file length: %d\n"
-"Max path length: %d\n"
-"Files truncated: %d\n"
-"Paths truncated: %d\n"
-"Hard links     : %d\n"
+#: src/wx-console/wxbrestorepanel.cpp:1088
+msgid "Failed to find the selected client."
 msgstr ""
 
-#: src/tools/testfind.c:236 src/tools/testls.c:174
-#, c-format
-msgid "Err: Could not access %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1103
+msgid "Failed to find the selected fileset."
 msgstr ""
 
-#: src/tools/testfind.c:239 src/tools/testls.c:177
-#, c-format
-msgid "Err: Could not follow ff->link %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1118
+msgid "Failed to find the selected storage."
 msgstr ""
 
-#: src/tools/testfind.c:242 src/tools/testls.c:180
-#, c-format
-msgid "Err: Could not stat %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1135
+#: src/wx-console/wxbrestorepanel.cpp:1801
+msgid "Run Restore job"
 msgstr ""
 
-#: src/tools/testfind.c:245 src/tools/testls.c:183
-#, c-format
-msgid "Skip: File not saved. No change. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1151
+msgid "Restore configuration changes were applied."
 msgstr ""
 
-#: src/tools/testfind.c:248 src/tools/testls.c:186
-#, c-format
-msgid "Err: Attempt to backup archive. Not saved. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1160
+msgid "Restore cancelled.\n"
 msgstr ""
 
-#: src/tools/testfind.c:251 src/tools/testls.c:195
-#, c-format
-msgid "Err: Could not open directory %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1161
+msgid "Restore cancelled."
 msgstr ""
 
-#: src/tools/testfind.c:254 src/tools/testls.c:198
-#, c-format
-msgid "Err: Unknown file ff->type %d: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1182
+msgid "No results to list."
 msgstr ""
 
-#: src/tools/testfind.c:304
-#, c-format
-msgid "===== Filename truncated to 255 chars: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1184
+msgid "No backup found for this client."
 msgstr ""
 
-#: src/tools/testfind.c:321
-#, c-format
-msgid "========== Path name truncated to 255 chars: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1191
+msgid "ERROR"
 msgstr ""
 
-#: src/tools/testfind.c:330
-#, c-format
-msgid "========== Path length is zero. File=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1192
+msgid "Query failed"
 msgstr ""
 
-#: src/tools/testls.c:45
-#, c-format
-msgid ""
-"\n"
-"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -dnn        set debug level to nn\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors always printed.\n"
-"Files/paths truncated is number with len > 255.\n"
-"Truncation is only in catalog.\n"
-"\n"
+#: src/wx-console/wxbrestorepanel.cpp:1194
+msgid "Cannot get previous backups list, see console."
 msgstr ""
 
-#: src/tools/testls.c:189
-#, c-format
-msgid "Recursion turned off. Directory not entered. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1811
+msgid "JobName:"
 msgstr ""
 
-#: src/tools/testls.c:192
-#, c-format
-msgid "Skip: File system change prohibited. Directory not entered. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1815
+msgid "Where:"
 msgstr ""
 
-#: src/tools/fstype.c:34
-#, c-format
-msgid ""
-"\n"
-"Usage: fstype [-d debug_level] path ...\n"
-"\n"
-"       Print the file system type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
+#: src/wx-console/wxbrestorepanel.cpp:1818
+msgid "Replace:"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:78
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/wx-console/wxbrestorepanel.cpp:1821
+msgid "ifnewer"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:127
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/wx-console/wxbrestorepanel.cpp:1822
+msgid "ifolder"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:172
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/wx-console/wxbrestorepanel.cpp:1826
+msgid "FileSet:"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:102
-#, c-format
-msgid ""
-"Copyright (C) 2000-2004 Kern Sibbald and John Walker\n"
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: "
+#: src/wx-console/wxbrestorepanel.cpp:1942
+msgid "Restoring..."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:104
-#, c-format
-msgid ""
-") %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -dnn          set debug level to nn\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
+#: src/wx-console/wxbmainframe.cpp:227
+msgid "&About...\tF1"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:248
-#, c-format
-msgid ""
-"Error: %d Monitor resource defined in %s. You must define one and only one "
-"Monitor resource.\n"
+#: src/wx-console/wxbmainframe.cpp:227
+msgid "Show about dialog"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:279
-#, c-format
-msgid ""
-"No Client, Storage nor Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
+#: src/wx-console/wxbmainframe.cpp:229 src/wx-console/wxbmainframe.cpp:590
+msgid "Connect to the director"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:301
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
+#: src/wx-console/wxbmainframe.cpp:230
+msgid "Disconnect"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:359
-msgid " (DIR)"
+#: src/wx-console/wxbmainframe.cpp:230
+msgid "Disconnect of the director"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:363
-msgid " (FD)"
+#: src/wx-console/wxbmainframe.cpp:232
+msgid "Change of configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:367
-msgid " (SD)"
+#: src/wx-console/wxbmainframe.cpp:232
+msgid "Change your default configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:380
-msgid "Unknown status."
+#: src/wx-console/wxbmainframe.cpp:233
+msgid "Edit your configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:421
-msgid "Refresh interval in seconds: "
+#: src/wx-console/wxbmainframe.cpp:235
+msgid "E&xit\tAlt-X"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:429
-msgid "Refresh now"
+#: src/wx-console/wxbmainframe.cpp:235
+msgid "Quit this program"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:433
-msgid "About"
+#: src/wx-console/wxbmainframe.cpp:239
+msgid "&File"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:437
-msgid "Close"
+#: src/wx-console/wxbmainframe.cpp:240
+msgid "&Help"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:496
-msgid ""
-"<span size='x-large' weight='bold'>Bacula Tray Monitor</span>\n"
-"\n"
-"Copyright (C) 2004 Kern Sibbald and John Walker\n"
-"Written by Nicolas Boichat\n"
-"\n"
-"<small>Version: "
+#: src/wx-console/wxbmainframe.cpp:257
+msgid "Console"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:499
-#, c-format
-msgid ") %s %s %s</small>"
+#: src/wx-console/wxbmainframe.cpp:264
+msgid ""
+"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:503
+#: src/wx-console/wxbmainframe.cpp:268
 msgid ""
-"Bacula Tray Monitor\n"
-"\n"
-"Copyright (C) 2004 Kern Sibbald and John Walker\n"
-"Written by Nicolas Boichat\n"
-"\n"
-"Version: "
+"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
+"support when handling non-ASCII filenames: Every non-ASCII character in such "
+"filenames will be replaced by an interrogation mark.\n"
+"If this behaviour disturbs you, please build wx-console against a Unicode "
+"version of wxWidgets for GTK+ 2.0.\n"
+"---\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:506
-#, c-format
-msgid ") %s %s %s"
+#: src/wx-console/wxbmainframe.cpp:279
+msgid "Send"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:690
-msgid "No current job."
+#: src/wx-console/wxbmainframe.cpp:356 src/wx-console/wxbmainframe.cpp:368
+msgid "Error while parsing command line arguments, using defaults.\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:693
-msgid "No last job."
+#: src/wx-console/wxbmainframe.cpp:357 src/wx-console/wxbmainframe.cpp:369
+msgid "Usage: wx-console [-c configfile] [-w tmp]\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:701
+#: src/wx-console/wxbmainframe.cpp:397
 #, c-format
-msgid "Job status: Created (%d error%s)"
+msgid ""
+"It seems that it is the first time you run wx-console.\n"
+"This file (%s) has been choosen as default configuration file.\n"
+"Do you want to edit it? (if you click No you will have to select another "
+"file)"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:705
-#, c-format
-msgid "Job status: Running (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:401
+msgid "First run"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:708
+#: src/wx-console/wxbmainframe.cpp:418
 #, c-format
-msgid "Job status: Blocked (%d error%s)"
+msgid ""
+"Unable to read %s\n"
+"Error: %s\n"
+"Do you want to choose another one? (Press no to edit this file)"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:712
-#, c-format
-msgid "Job status: Terminated (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:421
+msgid "Unable to read configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:716
-#, c-format
-msgid "Job status: Terminated in error (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:433
+msgid "Please choose a configuration file to use"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:721
-#, c-format
-msgid "Job status: Error (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:446
+msgid "This configuration file has been successfully read, use it as default?"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:724
-#, c-format
-msgid "Job status: Fatal error (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:447
+msgid "Configuration file read successfully"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:728
+#: src/wx-console/wxbmainframe.cpp:457
 #, c-format
-msgid "Job status: Verify differences (%d error%s)"
+msgid "Using this configuration file: %s\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:732
-#, c-format
-msgid "Job status: Canceled (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:462
+msgid "Connecting to the director..."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:736
-#, c-format
-msgid "Job status: Waiting on File daemon (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:477
+msgid "Failed to unregister a data parser !"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:740
-#, c-format
-msgid "Job status: Waiting on the Storage daemon (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:485
+msgid "Quitting.\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:744
-#, c-format
-msgid "Job status: Waiting for new media (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:500
+msgid ""
+"Welcome to Bacula wx-console.\n"
+"Written by Nicolas Boichat <nicolas@boichat.ch>\n"
+"(C) 2004 Kern Sibbald and John Walker\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:748
-#, c-format
-msgid "Job status: Waiting for Mount (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:502
+msgid "About Bacula wx-console"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:752
-#, c-format
-msgid "Job status: Waiting for storage resource (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:508
+msgid "Please choose your default configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:756
-#, c-format
-msgid "Job status: Waiting for job resource (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:512
+msgid "Use this configuration file as default?"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:760
-#, c-format
-msgid "Job status: Waiting for Client resource (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:513
+msgid "Configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:764
-#, c-format
-msgid "Job status: Waiting for maximum jobs (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:577
+msgid "Console thread terminated."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:768
-#, c-format
-msgid "Job status: Waiting for start time (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:581
+msgid "Connection to the director lost. Quit program?"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:772
-#, c-format
-msgid "Job status: Waiting for higher priority jobs to finish (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:582
+msgid "Connection lost"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:777
-#, c-format
-msgid "Job status: Unknown(%c) (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:598
+msgid "Connected to the director."
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:100
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in config file.\n"
-" At least one CA certificate store is required.\n"
+#: src/wx-console/wxbmainframe.cpp:612
+msgid "Reconnect"
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:109
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
+#: src/wx-console/wxbmainframe.cpp:613
+msgid "Reconnect to the director"
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:129
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
+#: src/wx-console/wxbmainframe.cpp:623
+msgid "Disconnected of the director."
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:235
-msgid "Please correct configuration file.\n"
+#: src/wx-console/wxbmainframe.cpp:642
+msgid "Unexpected question has been received.\n"
+msgstr ""
+
+#: src/wx-console/wxbmainframe.cpp:665 src/wx-console/wxbmainframe.cpp:680
+msgid "wx-console: unexpected director's question."
 msgstr ""
index d705c16a53545c72ae7191886efe8a19859fbb74..bf0ffb520861638938253939649971fc2685a7d0 100644 (file)
Binary files a/bacula/po/fr.gmo and b/bacula/po/fr.gmo differ
index 6e1799b82ee73b1f1730beb883fe6e14e51c6a8f..847d7e5bc81cf521bba1520b8db2ae2152d70dfc 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Bacula 1.38\n"
 "Report-Msgid-Bugs-To: bacula-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2005-08-08 17:56+0200\n"
-"PO-Revision-Date: 2005-08-08 17:44+0200\n"
+"POT-Creation-Date: 2005-08-10 18:10+0200\n"
+"PO-Revision-Date: 2005-08-10 16:45+0100\n"
 "Last-Translator: Nicolas Boichat <nicolas@boichat.ch>\n"
 "Language-Team: French <bacula-devel-fr@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -160,10 +160,10 @@ msgstr ""
 msgid "Create DB Job record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:91 src/dird/expand.c:145 src/dird/ua_cmds.c:422
-#: src/dird/ua_prune.c:455 src/dird/ua_purge.c:171 src/dird/ua_run.c:643
-#: src/dird/ua_select.c:228 src/dird/ua_select.c:249 src/dird/pythondir.c:61
-#: src/stored/pythonsd.c:58
+#: src/cats/sql_create.c:91 src/dird/dird_conf.c:532 src/dird/expand.c:145
+#: src/dird/ua_cmds.c:422 src/dird/ua_prune.c:455 src/dird/ua_purge.c:171
+#: src/dird/ua_run.c:643 src/dird/ua_select.c:228 src/dird/ua_select.c:249
+#: src/dird/pythondir.c:61 src/stored/pythonsd.c:58
 msgid "Job"
 msgstr ""
 
@@ -190,6 +190,10 @@ msgstr ""
 #: src/cats/sql_create.c:201 src/dird/expand.c:152 src/dird/ua_run.c:650
 #: src/dird/ua_select.c:464 src/dird/ua_select.c:554 src/dird/ua_update.c:356
 #: src/dird/ua_update.c:426 src/dird/pythondir.c:67 src/stored/pythonsd.c:64
+#: src/wx-console/wxbrestorepanel.cpp:362
+#: src/wx-console/wxbrestorepanel.cpp:548
+#: src/wx-console/wxbrestorepanel.cpp:558
+#: src/wx-console/wxbrestorepanel.cpp:1754
 msgid "Pool"
 msgstr ""
 
@@ -222,9 +226,17 @@ msgstr ""
 msgid "Create DB Storage record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:306 src/dird/expand.c:153 src/dird/ua_cmds.c:829
-#: src/dird/ua_run.c:642 src/dird/ua_select.c:152 src/dird/ua_status.c:128
-#: src/dird/pythondir.c:68
+#: src/cats/sql_create.c:306 src/dird/expand.c:153 src/dird/ua_run.c:642
+#: src/dird/ua_select.c:152 src/dird/ua_status.c:128 src/dird/pythondir.c:68
+#: src/wx-console/wxbrestorepanel.cpp:363
+#: src/wx-console/wxbrestorepanel.cpp:379
+#: src/wx-console/wxbrestorepanel.cpp:500
+#: src/wx-console/wxbrestorepanel.cpp:501
+#: src/wx-console/wxbrestorepanel.cpp:511
+#: src/wx-console/wxbrestorepanel.cpp:512
+#: src/wx-console/wxbrestorepanel.cpp:1116
+#: src/wx-console/wxbrestorepanel.cpp:1765
+#: src/wx-console/wxbrestorepanel.cpp:1831
 msgid "Storage"
 msgstr ""
 
@@ -272,10 +284,23 @@ msgstr ""
 msgid "Create DB Client record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:507 src/dird/expand.c:150 src/dird/ua_cmds.c:830
-#: src/dird/ua_purge.c:173 src/dird/ua_purge.c:178 src/dird/ua_run.c:645
-#: src/dird/ua_select.c:272 src/dird/ua_select.c:379 src/dird/ua_status.c:129
-#: src/dird/pythondir.c:65 src/filed/pythonfd.c:77 src/stored/pythonsd.c:63
+#: src/cats/sql_create.c:507 src/dird/expand.c:150 src/dird/ua_purge.c:173
+#: src/dird/ua_purge.c:178 src/dird/ua_run.c:645 src/dird/ua_select.c:272
+#: src/dird/ua_select.c:379 src/dird/ua_status.c:129 src/dird/pythondir.c:65
+#: src/filed/pythonfd.c:77 src/stored/pythonsd.c:63
+#: src/wx-console/wxbrestorepanel.cpp:360
+#: src/wx-console/wxbrestorepanel.cpp:378
+#: src/wx-console/wxbrestorepanel.cpp:452
+#: src/wx-console/wxbrestorepanel.cpp:453
+#: src/wx-console/wxbrestorepanel.cpp:463
+#: src/wx-console/wxbrestorepanel.cpp:464
+#: src/wx-console/wxbrestorepanel.cpp:707
+#: src/wx-console/wxbrestorepanel.cpp:1086
+#: src/wx-console/wxbrestorepanel.cpp:1173
+#: src/wx-console/wxbrestorepanel.cpp:1758
+#: src/wx-console/wxbrestorepanel.cpp:1760
+#: src/wx-console/wxbrestorepanel.cpp:1829
+#: src/wx-console/wxbrestorepanel.cpp:1884
 msgid "Client"
 msgstr ""
 
@@ -299,7 +324,7 @@ msgstr ""
 msgid "Create DB FileSet record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:618 src/dird/ua_restore.c:1010 src/dird/ua_run.c:644
+#: src/cats/sql_create.c:618 src/dird/ua_restore.c:1035 src/dird/ua_run.c:644
 #: src/dird/ua_select.c:173
 msgid "FileSet"
 msgstr ""
@@ -314,7 +339,7 @@ msgstr ""
 msgid "Create db File record %s failed. ERR=%s"
 msgstr ""
 
-#: src/cats/sql_create.c:738
+#: src/cats/sql_create.c:738 src/gnome2-console/restore.c:121
 msgid "File"
 msgstr ""
 
@@ -347,7 +372,7 @@ msgstr ""
 msgid "Create db Filename record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:856
+#: src/cats/sql_create.c:856 src/wx-console/wxbrestorepanel.cpp:314
 msgid "Filename"
 msgstr ""
 
@@ -590,7 +615,7 @@ msgstr ""
 msgid "Unable to open Database=%s. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:162
+#: src/cats/sqlite.c:162 src/lib/bnet_server.c:378
 msgid "unknown"
 msgstr ""
 
@@ -609,6 +634,15 @@ msgstr ""
 msgid "next_index update error: ERR=%s\n"
 msgstr ""
 
+#: src/console/authenticate.c:41
+#, c-format
+msgid "Hello %s calling\n"
+msgstr ""
+
+#: src/console/authenticate.c:44
+msgid "1000 OK:"
+msgstr ""
+
 #: src/console/authenticate.c:104 src/dird/authenticate.c:106
 #: src/dird/authenticate.c:206 src/filed/authenticate.c:124
 #: src/filed/authenticate.c:220 src/stored/authenticate.c:128
@@ -636,7 +670,7 @@ msgid "Bad response to Hello command: ERR=%s\n"
 msgstr ""
 
 #: src/console/authenticate.c:140 src/gnome2-console/authenticate.c:95
-#: src/tray-monitor/authenticate.c:94
+#: src/tray-monitor/authenticate.c:94 src/wx-console/authenticate.c:133
 msgid "Director rejected Hello command\n"
 msgstr ""
 
@@ -650,7 +684,7 @@ msgid ""
 "help.\n"
 msgstr ""
 
-#: src/console/console.c:102 src/filed/filed.c:62
+#: src/console/console.c:102
 #, c-format
 msgid ""
 "Copyright (C) 2000-2005 Kern Sibbald\n"
@@ -658,13 +692,7 @@ msgid ""
 "Version: "
 msgstr ""
 
-#: src/console/console.c:103 src/dird/admin.c:108 src/dird/backup.c:489
-#: src/dird/dird.c:72 src/dird/mac.c:377 src/dird/restore.c:275
-#: src/dird/verify.c:415 src/dird/verify.c:448 src/filed/filed.c:63
-#: src/gnome2-console/console.c:89 src/stored/bcopy.c:59
-#: src/stored/bscan.c:110 src/stored/btape.c:2541 src/stored/stored.c:66
-#: src/tray-monitor/tray-monitor.c:104 src/tray-monitor/tray-monitor.c:499
-#: src/tray-monitor/tray-monitor.c:506
+#: src/console/console.c:103 src/dird/admin.c:108
 #, c-format
 msgid " ("
 msgstr ""
@@ -700,6 +728,7 @@ msgid "output to file"
 msgstr ""
 
 #: src/console/console.c:152 src/dird/ua_cmds.c:106 src/dird/ua_tree.c:72
+#: src/stored/btape.c:2536
 msgid "quit"
 msgstr ""
 
@@ -755,110 +784,148 @@ msgstr ""
 msgid ": is an illegal command\n"
 msgstr ""
 
-#: src/console/console.c:397 src/dird/dird.c:193 src/filed/filed.c:180
-#: src/gnome2-console/console.c:267 src/stored/stored.c:186
-#: src/wx-console/console_thread.cpp:231
+#: src/console/console.c:400 src/dird/dird.c:196 src/filed/filed.c:183
+#: src/gnome2-console/console.c:271 src/stored/stored.c:189
+#: src/wx-console/console_thread.cpp:230
 msgid "TLS library initialization failed.\n"
 msgstr ""
 
-#: src/console/console.c:401 src/dird/dird.c:197 src/dird/dird.c:407
-#: src/dird/dird.c:410 src/filed/filed.c:185 src/gnome2-console/console.c:271
-#: src/stored/stored.c:190
+#: src/console/console.c:404 src/dird/dird.c:200 src/dird/dird.c:410
+#: src/dird/dird.c:413 src/filed/filed.c:188 src/gnome2-console/console.c:275
+#: src/stored/stored.c:193
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr ""
 
-#: src/console/console.c:418
+#: src/console/console.c:421
 msgid "Available Directors:\n"
 msgstr ""
 
-#: src/console/console.c:422
+#: src/console/console.c:425
 #, c-format
 msgid "%d  %s at %s:%d\n"
 msgstr ""
 
-#: src/console/console.c:426
+#: src/console/console.c:429
 msgid "Select Director: "
 msgstr ""
 
-#: src/console/console.c:432
+#: src/console/console.c:435
 #, c-format
 msgid "You must enter a number between 1 and %d\n"
 msgstr ""
 
-#: src/console/console.c:452
+#: src/console/console.c:455 src/tray-monitor/tray-monitor.c:858
 #, c-format
 msgid "Connecting to Director %s:%d\n"
-msgstr ""
+msgstr "Connection au Director %s:%d\n"
 
-#: src/console/console.c:468 src/gnome2-console/console.c:504
-#: src/wx-console/console_thread.cpp:365
+#: src/console/console.c:471 src/gnome2-console/console.c:508
+#: src/wx-console/console_thread.cpp:364
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
-#: src/console/console.c:489 src/gnome2-console/console.c:526
-#: src/wx-console/console_thread.cpp:386
+#: src/console/console.c:492 src/gnome2-console/console.c:530
+#: src/wx-console/console_thread.cpp:385
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
 
-#: src/console/console.c:512
+#: src/console/console.c:515
 msgid "Enter a period to cancel a command.\n"
 msgstr ""
 
-#: src/console/console.c:579 src/console/console.c:608 src/dird/dird.c:493
-#: src/dird/dird.c:708 src/dird/dird.c:774 src/dird/dird.c:826
-#: src/filed/filed.c:299 src/filed/filed.c:345
+#: src/console/console.c:582 src/console/console.c:611 src/dird/dird.c:496
+#: src/dird/dird.c:711 src/dird/dird.c:777 src/dird/dird.c:829
+#: src/filed/filed.c:302 src/filed/filed.c:348
 #: src/gnome2-console/console.c:140 src/gnome2-console/console.c:169
-#: src/stored/stored.c:307 src/wx-console/console_thread.cpp:93
+#: src/stored/stored.c:310 src/wx-console/console_thread.cpp:93
 #: src/wx-console/console_thread.cpp:122
 msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/console/console.c:586 src/gnome2-console/console.c:147
+#: src/console/console.c:589 src/gnome2-console/console.c:147
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/console/console.c:595 src/gnome2-console/console.c:156
+#: src/console/console.c:598 src/gnome2-console/console.c:156
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/console/console.c:615 src/gnome2-console/console.c:176
+#: src/console/console.c:618 src/gnome2-console/console.c:176
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/console/console.c:760
+#: src/console/console.c:763
 msgid "Too many arguments on input command.\n"
 msgstr ""
 
-#: src/console/console.c:764
+#: src/console/console.c:767
 msgid "First argument to input command must be a filename.\n"
 msgstr ""
 
-#: src/console/console.c:769
+#: src/console/console.c:772
 #, c-format
 msgid "Cannot open file %s for input. ERR=%s\n"
 msgstr ""
 
-#: src/console/console.c:799
+#: src/console/console.c:802
 msgid "Too many arguments on output/tee command.\n"
 msgstr ""
 
-#: src/console/console.c:815
+#: src/console/console.c:818
 #, c-format
 msgid "Cannot open file %s for output. ERR=%s\n"
 msgstr ""
 
+#: src/console/console_conf.c:123 src/gnome2-console/console_conf.c:122
+#: src/wx-console/console_conf.c:124
+#, c-format
+msgid "No record for %d %s\n"
+msgstr ""
+
+#: src/console/console_conf.c:132 src/wx-console/console_conf.c:133
+#, c-format
+msgid "Console: name=%s rcfile=%s histfile=%s\n"
+msgstr ""
+
+#: src/console/console_conf.c:136 src/gnome2-console/console_conf.c:131
+#: src/wx-console/console_conf.c:137
+#, c-format
+msgid "Director: name=%s address=%s DIRport=%d\n"
+msgstr ""
+
+#: src/console/console_conf.c:140 src/console/console_conf.c:216
+#: src/console/console_conf.c:261 src/console/console_conf.c:288
+#: src/filed/filed_conf.c:268 src/filed/filed_conf.c:327
+#: src/filed/filed_conf.c:357 src/gnome2-console/console_conf.c:142
+#: src/gnome2-console/console_conf.c:220 src/gnome2-console/console_conf.c:268
+#: src/gnome2-console/console_conf.c:298 src/stored/stored_conf.c:467
+#: src/stored/stored_conf.c:555 src/stored/stored_conf.c:590
+#: src/wx-console/console_conf.c:141 src/wx-console/console_conf.c:216
+#: src/wx-console/console_conf.c:261 src/wx-console/console_conf.c:288
+#, c-format
+msgid "Unknown resource type %d\n"
+msgstr ""
+
+#: src/console/console_conf.c:242 src/dird/dird_conf.c:1109
+#: src/dird/dird_conf.c:1124 src/filed/filed_conf.c:296
+#: src/gnome2-console/console_conf.c:246 src/tray-monitor/tray_conf.c:262
+#: src/wx-console/console_conf.c:242
+#, c-format
+msgid "%s item is required in %s resource, but not found.\n"
+msgstr ""
+
 #: src/console/console_conf.c:304 src/dird/dird_conf.c:1296
 #: src/filed/filed_conf.c:374 src/gnome2-console/console_conf.c:314
 #: src/tray-monitor/tray_conf.c:341 src/wx-console/console_conf.c:304
@@ -894,8 +961,7 @@ msgstr ""
 msgid "Inappropriate term code: %c\n"
 msgstr ""
 
-#: src/dird/admin.c:108 src/dird/backup.c:489 src/dird/mac.c:377
-#: src/dird/restore.c:275 src/dird/verify.c:415 src/dird/verify.c:448
+#: src/dird/admin.c:108
 msgid "Bacula "
 msgstr ""
 
@@ -932,6 +998,9 @@ msgid ""
 msgstr ""
 
 #: src/dird/authenticate.c:123 src/dird/authenticate.c:223
+#: src/dird/authenticate.c:356 src/filed/authenticate.c:141
+#: src/filed/authenticate.c:237 src/stored/authenticate.c:145
+#: src/stored/authenticate.c:249
 msgid "TLS negotiation failed.\n"
 msgstr ""
 
@@ -1000,6 +1069,11 @@ msgstr ""
 msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
 msgstr ""
 
+#: src/dird/authenticate.c:373
+#, c-format
+msgid "1000 OK: %s Version: %s (%s)\n"
+msgstr ""
+
 #: src/dird/autoprune.c:57
 msgid "Begin pruning Jobs.\n"
 msgstr ""
@@ -1079,22 +1153,22 @@ msgstr ""
 msgid "Backup OK -- with warnings"
 msgstr ""
 
-#: src/dird/backup.c:424 src/dird/mac.c:313 src/stored/bscan.c:1045
+#: src/dird/backup.c:424 src/dird/mac.c:313 src/stored/bscan.c:1054
 msgid "Backup OK"
 msgstr ""
 
-#: src/dird/backup.c:429 src/dird/mac.c:318 src/stored/bscan.c:1049
+#: src/dird/backup.c:429 src/dird/mac.c:318 src/stored/bscan.c:1058
 msgid "*** Backup Error ***"
 msgstr ""
 
-#: src/dird/backup.c:439 src/dird/mac.c:328 src/stored/bscan.c:1052
+#: src/dird/backup.c:439 src/dird/mac.c:328 src/stored/bscan.c:1061
 msgid "Backup Canceled"
 msgstr ""
 
 #: src/dird/backup.c:489
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Backup Level:           %s%s\n"
@@ -1156,22 +1230,58 @@ msgstr ""
 msgid "No Volumes found to restore.\n"
 msgstr ""
 
+#: src/dird/catreq.c:109 src/dird/catreq.c:298
+#, c-format
+msgid "1990 Invalid Catalog Request: %s"
+msgstr ""
+
 #: src/dird/catreq.c:110
 #, c-format
 msgid "Invalid Catalog request; DB not open: %s"
 msgstr ""
 
+#: src/dird/catreq.c:131
+msgid "1901 No Media.\n"
+msgstr ""
+
+#: src/dird/catreq.c:159
+msgid "not in Pool"
+msgstr ""
+
+#: src/dird/catreq.c:161
+msgid "not correct MediaType"
+msgstr ""
+
+#: src/dird/catreq.c:187
+#, c-format
+msgid "1998 Volume \"%s\" status is %s, %s.\n"
+msgstr ""
+
+#: src/dird/catreq.c:192
+#, c-format
+msgid "1997 Volume \"%s\" not in catalog.\n"
+msgstr ""
+
 #: src/dird/catreq.c:213
 #, c-format
 msgid "Unable to get Media record for Volume %s: ERR=%s\n"
 msgstr ""
 
+#: src/dird/catreq.c:215
+#, c-format
+msgid "1991 Catalog Request for vol=%s failed: %s"
+msgstr ""
+
 #: src/dird/catreq.c:235
 #, c-format
 msgid ""
 "Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
 msgstr ""
 
+#: src/dird/catreq.c:238 src/dird/catreq.c:270
+msgid "1992 Update Media error\n"
+msgstr ""
+
 #: src/dird/catreq.c:268
 #, c-format
 msgid "Catalog error updating Media record. %s"
@@ -1182,28 +1292,30 @@ msgstr ""
 msgid "Catalog error creating JobMedia record. %s"
 msgstr ""
 
+#: src/dird/catreq.c:289
+msgid "1991 Update JobMedia error\n"
+msgstr ""
+
 #: src/dird/catreq.c:299
 #, c-format
 msgid "Invalid Catalog request: %s"
 msgstr ""
 
+#: src/dird/catreq.c:398
+msgid "Got MD5/SHA1 but not same File as attributes\n"
+msgstr ""
+
 #: src/dird/catreq.c:422
 #, c-format
 msgid "Catalog error updating MD5/SHA1. %s"
 msgstr ""
 
-#: src/dird/dird.c:71 src/stored/btape.c:2540 src/stored/stored.c:65
+#: src/dird/dird.c:71
 #, c-format
 msgid ""
 "Copyright (C) 2000-2005 Kern Sibbald.\n"
 "\n"
-"Version: "
-msgstr ""
-
-#: src/dird/dird.c:72
-#, c-format
-msgid ""
-")\n"
+"Version: %s (%s)\n"
 "\n"
 "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
@@ -1219,46 +1331,46 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/dird.c:393
+#: src/dird/dird.c:396
 msgid "Too many open reload requests. Request ignored.\n"
 msgstr ""
 
-#: src/dird/dird.c:408
+#: src/dird/dird.c:411
 msgid "Out of reload table entries. Giving up.\n"
 msgstr ""
 
-#: src/dird/dird.c:411
+#: src/dird/dird.c:414
 msgid "Resetting previous configuration.\n"
 msgstr ""
 
-#: src/dird/dird.c:471
+#: src/dird/dird.c:474
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/dird/dird.c:479 src/filed/filed.c:292
+#: src/dird/dird.c:482 src/filed/filed.c:295
 #, c-format
 msgid "No Messages resource defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:484
+#: src/dird/dird.c:487
 #, c-format
 msgid "Only one Director resource permitted in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:499 src/filed/filed.c:354 src/stored/stored.c:359
+#: src/dird/dird.c:502 src/filed/filed.c:357 src/stored/stored.c:362
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:505 src/filed/filed.c:360 src/stored/stored.c:365
+#: src/dird/dird.c:508 src/filed/filed.c:363 src/stored/stored.c:368
 #, c-format
 msgid "\"TLS Key\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:511 src/filed/filed.c:366 src/stored/stored.c:371
+#: src/dird/dird.c:514 src/filed/filed.c:369 src/stored/stored.c:374
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -1266,50 +1378,64 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:530 src/filed/filed.c:385 src/stored/stored.c:390
+#: src/dird/dird.c:533 src/filed/filed.c:388 src/stored/stored.c:393
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:538
+#: src/dird/dird.c:541
 #, c-format
 msgid "No Job records defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:669 src/dird/job.c:101 src/dird/ua_cmds.c:1424
+#: src/dird/dird.c:585 src/dird/dird.c:598
+#, c-format
+msgid "Hey something is wrong. p=0x%lu\n"
+msgstr ""
+
+#: src/dird/dird.c:647
+#, c-format
+msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
+msgstr ""
+
+#: src/dird/dird.c:654
+msgid "Too many items in Job resource\n"
+msgstr ""
+
+#: src/dird/dird.c:672 src/dird/job.c:101 src/dird/ua_cmds.c:1424
 #: src/dird/ua_output.c:598
 #, c-format
 msgid "Could not open database \"%s\".\n"
 msgstr ""
 
-#: src/dird/dird.c:672
+#: src/dird/dird.c:675
 #, c-format
 msgid "%s"
 msgstr ""
 
-#: src/dird/dird.c:714
+#: src/dird/dird.c:717
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:730 src/stored/stored.c:345
+#: src/dird/dird.c:733 src/stored/stored.c:348
 #, c-format
 msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:781
+#: src/dird/dird.c:784
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:787
+#: src/dird/dird.c:790
 #, c-format
 msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:793
+#: src/dird/dird.c:796
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -1317,18 +1443,318 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:810 src/dird/dird.c:850 src/filed/filed.c:323
+#: src/dird/dird.c:813 src/dird/dird.c:853 src/filed/filed.c:326
 #, c-format
 msgid "Failed to initialize TLS context for File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:833
+#: src/dird/dird.c:836
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon \"%s\" in %s.\n"
 msgstr ""
 
+#: src/dird/dird_conf.c:441 src/tray-monitor/tray_conf.c:152
+#, c-format
+msgid "No %s resource defined\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:450
+#, c-format
+msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:455
+#, c-format
+msgid "   query_file=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:458 src/dird/dird_conf.c:483 src/dird/dird_conf.c:497
+#: src/dird/dird_conf.c:541 src/dird/dird_conf.c:545 src/dird/dird_conf.c:549
+#: src/dird/dird_conf.c:573 src/dird/dird_conf.c:578 src/dird/dird_conf.c:582
+#: src/dird/dird_conf.c:586 src/dird/dird_conf.c:590 src/dird/dird_conf.c:594
+#: src/dird/dird_conf.c:604
+msgid "  --> "
+msgstr ""
+
+#: src/dird/dird_conf.c:464 src/dird/dird_conf.c:467
+#, c-format
+msgid "Console: name=%s SSL=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:473
+#, c-format
+msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:478
+#, c-format
+msgid "Counter: name=%s min=%d max=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:489
+#, c-format
+msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:492
+#, c-format
+msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:504
+#, c-format
+msgid ""
+"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
+"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr=%"
+"d\n"
+"      poolid=%s volname=%s MediaType=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:514
+#, c-format
+msgid ""
+"Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
+"      DeviceName=%s MediaType=%s StorageId=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:523
+#, c-format
+msgid ""
+"Catalog: name=%s address=%s DBport=%d db_name=%s\n"
+"      db_user=%s MutliDBConn=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:531
+#, c-format
+msgid "%s: name=%s JobType=%d level=%s Priority=%d MaxJobs=%u\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:532
+msgid "JobDefs"
+msgstr ""
+
+#: src/dird/dird_conf.c:536
+#, c-format
+msgid "     Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:553
+#, c-format
+msgid "  --> Where=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:556
+#, c-format
+msgid "  --> Bootstrap=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:559
+#, c-format
+msgid "  --> RunBefore=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:562
+#, c-format
+msgid "  --> RunAfter=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:565
+#, c-format
+msgid "  --> RunAfterFailed=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:568
+#, c-format
+msgid "  --> WriteBootstrap=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:600
+#, c-format
+msgid "  --> Run=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:611
+#, c-format
+msgid "FileSet: name=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:673 src/dird/dird_conf.c:752
+#, c-format
+msgid "Schedule: name=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:678
+#, c-format
+msgid "  --> Run Level=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:679
+msgid "      hour="
+msgstr ""
+
+#: src/dird/dird_conf.c:688
+msgid "      mday="
+msgstr ""
+
+#: src/dird/dird_conf.c:697
+msgid "      month="
+msgstr ""
+
+#: src/dird/dird_conf.c:706
+msgid "      wday="
+msgstr ""
+
+#: src/dird/dird_conf.c:715
+msgid "      wom="
+msgstr ""
+
+#: src/dird/dird_conf.c:724
+msgid "      woy="
+msgstr ""
+
+#: src/dird/dird_conf.c:733
+#, c-format
+msgid "      mins=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:735 src/dird/dird_conf.c:739 src/dird/dird_conf.c:743
+msgid "     --> "
+msgstr ""
+
+#: src/dird/dird_conf.c:756
+#, c-format
+msgid "Pool: name=%s PoolType=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:758
+#, c-format
+msgid "      use_cat=%d use_once=%d acpt_any=%d cat_files=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:761
+#, c-format
+msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:764
+#, c-format
+msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:768
+#, c-format
+msgid "      CleaningPrefix=%s LabelType=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:770
+#, c-format
+msgid "      RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:776
+#, c-format
+msgid "Messages: name=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:778
+#, c-format
+msgid "      mailcmd=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:780
+#, c-format
+msgid "      opcmd=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:783 src/tray-monitor/tray_conf.c:179
+#, c-format
+msgid "Unknown resource type %d in dump_resource.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1077 src/tray-monitor/tray_conf.c:232
+#, c-format
+msgid "Unknown resource type %d in free_resource.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1115 src/lib/parse_conf.c:211
+#: src/tray-monitor/tray_conf.c:268
+#, c-format
+msgid "Too many items in %s resource\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1149
+#, c-format
+msgid "Cannot find Console resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1155 src/filed/filed_conf.c:316
+#: src/stored/stored_conf.c:523
+#, c-format
+msgid "Cannot find Director resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1162 src/stored/stored_conf.c:529
+#, c-format
+msgid "Cannot find Storage resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1171
+#, c-format
+msgid "Cannot find Job resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1189
+#, c-format
+msgid "Cannot find Counter resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1197 src/filed/filed_conf.c:322
+#, c-format
+msgid "Cannot find Client resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1209
+#, c-format
+msgid "Cannot find Schedule resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1214 src/tray-monitor/tray_conf.c:287
+#, c-format
+msgid "Unknown resource type %d in save_resource.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1274 src/tray-monitor/tray_conf.c:322
+#, c-format
+msgid "Unknown resource type %d in save_resrouce.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1289
+#, c-format
+msgid "Name item is required in %s resource, but not found.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1301
+#, c-format
+msgid "Inserting %s res: %s index=%d pass=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1374
+#, c-format
+msgid "Expected a Job Type keyword, got: %s"
+msgstr ""
+
+#: src/dird/dird_conf.c:1398
+#, c-format
+msgid "Expected a Job Level keyword, got: %s"
+msgstr ""
+
+#: src/dird/dird_conf.c:1418
+#, c-format
+msgid "Expected a Restore replacement option, got: %s"
+msgstr ""
+
 #: src/dird/expand.c:137
 msgid "Year"
 msgstr ""
@@ -1424,7 +1850,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:73
+#: src/dird/fd_cmds.c:73 src/tray-monitor/tray-monitor.c:867
 msgid "File daemon"
 msgstr ""
 
@@ -1443,15 +1869,28 @@ msgstr ""
 msgid "FD gave bad response to JobId command: %s\n"
 msgstr ""
 
+#: src/dird/fd_cmds.c:144 src/dird/fd_cmds.c:180
+msgid ", since="
+msgstr ""
+
 #: src/dird/fd_cmds.c:164
 msgid "No prior or suitable Full backup found. Doing FULL backup.\n"
 msgstr ""
 
+#: src/dird/fd_cmds.c:165 src/dird/fd_cmds.c:173
+#, c-format
+msgid " (upgraded from %s)"
+msgstr ""
+
 #: src/dird/fd_cmds.c:171
 #, c-format
 msgid "Prior failed job found. Upgrading to %s.\n"
 msgstr ""
 
+#: src/dird/fd_cmds.c:196
+msgid "since_utime "
+msgstr ""
+
 #: src/dird/fd_cmds.c:232
 #, c-format
 msgid "Unimplemented backup level %d %c\n"
@@ -1488,7 +1927,7 @@ msgid ""
 "msglen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:571 src/dird/verify.c:692
+#: src/dird/fd_cmds.c:571 src/dird/verify.c:696
 #, c-format
 msgid "MD5/SHA1 index %d not same as attributes %d\n"
 msgstr ""
@@ -1516,7 +1955,7 @@ msgstr ""
 
 #: src/dird/getmsg.c:318
 #, c-format
-msgid "Bad response to %s command: wanted %s got: %s\n"
+msgid "Bad response to %s command: wanted %s, got %s\n"
 msgstr ""
 
 #: src/dird/getmsg.c:323
@@ -1524,6 +1963,11 @@ msgstr ""
 msgid "Socket error on %s command: ERR=%s\n"
 msgstr ""
 
+#: src/dird/inc_conf.c:249
+#, c-format
+msgid "Expected a FileSet option keyword, got:%s:"
+msgstr ""
+
 #: src/dird/inc_conf.c:282
 msgid "Old style Include/Exclude not supported\n"
 msgstr ""
@@ -1533,6 +1977,16 @@ msgstr ""
 msgid "Expecting keyword, got: %s\n"
 msgstr ""
 
+#: src/dird/inc_conf.c:318 src/dird/inc_conf.c:583 src/lib/parse_conf.c:819
+#, c-format
+msgid "expected an equals, got: %s"
+msgstr ""
+
+#: src/dird/inc_conf.c:328 src/dird/inc_conf.c:592
+#, c-format
+msgid "Keyword %s not permitted in this resource"
+msgstr ""
+
 #: src/dird/inc_conf.c:381
 #, c-format
 msgid "Regex compile error. ERR=%s\n"
@@ -1558,12 +2012,22 @@ msgstr ""
 msgid "Expected a filename, got: %s"
 msgstr ""
 
+#: src/dird/inc_conf.c:562
+#, c-format
+msgid "Expecting open brace. Got %s"
+msgstr ""
+
+#: src/dird/inc_conf.c:617
+#, c-format
+msgid "Expected a FileSet keyword, got: %s"
+msgstr ""
+
 #: src/dird/job.c:50
 #, c-format
 msgid "Could not init job queue: ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:86 src/stored/dircmd.c:174 src/stored/stored.c:485
+#: src/dird/job.c:86 src/stored/dircmd.c:174 src/stored/stored.c:488
 #, c-format
 msgid "Unable to init job cond variable: ERR=%s\n"
 msgstr ""
@@ -1577,6 +2041,11 @@ msgstr ""
 msgid "Job canceled because max start delay time exceeded.\n"
 msgstr ""
 
+#: src/dird/job.c:229 src/dird/job.c:307
+#, c-format
+msgid "Unimplemented job type: %d\n"
+msgstr ""
+
 #: src/dird/job.c:254
 #, c-format
 msgid "RunBefore: %s"
@@ -1621,7 +2090,7 @@ msgstr ""
 msgid "Unhandled job status code %d\n"
 msgstr ""
 
-#: src/dird/job.c:621 src/stored/bscan.c:893
+#: src/dird/job.c:621 src/stored/bscan.c:902
 #, c-format
 msgid "Could not create Client record. ERR=%s\n"
 msgstr ""
@@ -1640,11 +2109,62 @@ msgstr ""
 msgid "Error updating job record. %s"
 msgstr ""
 
+#: src/dird/jobq.c:67
+#, c-format
+msgid "pthread_attr_init: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:76
+#, c-format
+msgid "pthread_mutex_init: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:82
+#, c-format
+msgid "pthread_cond_init: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:115 src/dird/jobq.c:242 src/dird/jobq.c:307
+#: src/dird/jobq.c:388
+#, c-format
+msgid "pthread_mutex_lock: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:128
+#, c-format
+msgid "pthread_cond_broadcast: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:136
+#, c-format
+msgid "pthread_cond_wait: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:144
+#, c-format
+msgid "pthread_mutex_unlock: ERR=%s\n"
+msgstr ""
+
 #: src/dird/jobq.c:180
 #, c-format
 msgid "Job %s waiting %d seconds for scheduled start time.\n"
 msgstr ""
 
+#: src/dird/jobq.c:235
+#, c-format
+msgid "pthread_thread_create: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:353
+#, c-format
+msgid "pthread_cond_signal: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:362
+#, c-format
+msgid "pthread_create: ERR=%s\n"
+msgstr ""
+
 #: src/dird/jobq.c:487
 #, c-format
 msgid "Rescheduled Job %s at %s to re-run in %d seconds.\n"
@@ -1662,7 +2182,7 @@ msgstr ""
 #: src/dird/mac.c:377
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Backup Level:           %s%s\n"
@@ -1690,6 +2210,7 @@ msgid ""
 msgstr ""
 
 #: src/dird/msgchan.c:78 src/filed/job.c:1128
+#: src/tray-monitor/tray-monitor.c:874
 msgid "Storage daemon"
 msgstr ""
 
@@ -1784,6 +2305,40 @@ msgstr ""
 msgid "Catalog error updating volume \"%s\". ERR=%s"
 msgstr ""
 
+#: src/dird/next_vol.c:262
+msgid "volume has expired"
+msgstr ""
+
+#: src/dird/next_vol.c:280 src/dird/next_vol.c:316
+#, c-format
+msgid "Recycled current volume \"%s\"\n"
+msgstr ""
+
+#: src/dird/next_vol.c:285
+msgid "and recycling of current volume failed"
+msgstr ""
+
+#: src/dird/next_vol.c:291
+msgid "but should be Append, Purged or Recycle"
+msgstr ""
+
+#: src/dird/next_vol.c:319
+msgid ""
+"but should be Append, Purged or Recycle (recycling of the current volume "
+"failed)"
+msgstr ""
+
+#: src/dird/next_vol.c:323
+msgid ""
+"but should be Append, Purged or Recycle (cannot automatically recycle "
+"current volume, as it still contains unpruned data)"
+msgstr ""
+
+#: src/dird/recycle.c:102
+#, c-format
+msgid "Recycled volume \"%s\"\n"
+msgstr ""
+
 #: src/dird/restore.c:70
 msgid "Cannot restore without bootstrap file.\n"
 msgstr ""
@@ -1812,7 +2367,7 @@ msgstr ""
 #: src/dird/restore.c:275
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Client:                 %s\n"
@@ -2041,7 +2596,12 @@ msgstr ""
 msgid "fifth"
 msgstr ""
 
-#: src/dird/run_conf.c:201 src/dird/run_conf.c:213 src/lib/parse_conf.c:699
+#: src/dird/run_conf.c:188
+#, c-format
+msgid "Expected an equals, got: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:201 src/dird/run_conf.c:213
 #, c-format
 msgid "Expect a YES or NO, got: %s"
 msgstr ""
@@ -2051,6 +2611,26 @@ msgstr ""
 msgid "Job level field: %s not found in run record"
 msgstr ""
 
+#: src/dird/run_conf.c:245
+#, c-format
+msgid "Could not find specified Pool Resource: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:270
+#, c-format
+msgid "Could not find specified Storage Resource: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:282
+#, c-format
+msgid "Could not find specified Messages Resource: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:290
+#, c-format
+msgid "Expected a keyword name, got: %s"
+msgstr ""
+
 #: src/dird/run_conf.c:325
 msgid "Day number out of range (1-31)"
 msgstr ""
@@ -2106,10 +2686,34 @@ msgstr ""
 msgid "Job %s not found\n"
 msgstr ""
 
+#: src/dird/scheduler.c:102
+msgid "Walk queue"
+msgstr ""
+
+#: src/dird/scheduler.c:112
+msgid "Dequeued job"
+msgstr ""
+
 #: src/dird/scheduler.c:115
 msgid "Scheduler logic error\n"
 msgstr ""
 
+#: src/dird/scheduler.c:132
+msgid "Run job"
+msgstr ""
+
+#: src/dird/scheduler.c:345
+msgid "Inserted job"
+msgstr ""
+
+#: src/dird/scheduler.c:353
+msgid "Appended job"
+msgstr ""
+
+#: src/dird/scheduler.c:357
+msgid "Run queue"
+msgstr ""
+
 #: src/dird/ua_cmds.c:88
 msgid "add"
 msgstr ""
@@ -2175,10 +2779,11 @@ msgid "gui [on|off] -- non-interactive gui mode"
 msgstr ""
 
 #: src/dird/ua_cmds.c:97 src/dird/ua_output.c:112 src/dird/ua_tree.c:64
+#: src/stored/btape.c:2533
 msgid "help"
 msgstr ""
 
-#: src/dird/ua_cmds.c:97
+#: src/dird/ua_cmds.c:97 src/stored/btape.c:2533
 msgid "print this command"
 msgstr ""
 
@@ -2192,7 +2797,7 @@ msgid ""
 "from catalog"
 msgstr ""
 
-#: src/dird/ua_cmds.c:99
+#: src/dird/ua_cmds.c:99 src/stored/btape.c:2534
 msgid "label"
 msgstr ""
 
@@ -2292,7 +2897,7 @@ msgstr ""
 msgid "run <job-name>"
 msgstr ""
 
-#: src/dird/ua_cmds.c:113
+#: src/dird/ua_cmds.c:113 src/stored/btape.c:2543
 msgid "status"
 msgstr ""
 
@@ -2332,7 +2937,7 @@ msgstr ""
 msgid "use SQL to query catalog"
 msgstr ""
 
-#: src/dird/ua_cmds.c:119 src/dird/ua_cmds.c:768
+#: src/dird/ua_cmds.c:119
 msgid "trace"
 msgstr ""
 
@@ -2470,10 +3075,9 @@ msgstr ""
 msgid "off"
 msgstr ""
 
-#: src/dird/ua_cmds.c:368 src/dird/ua_cmds.c:1055 src/dird/ua_cmds.c:1071
-#: src/dird/ua_cmds.c:1115 src/dird/ua_output.c:272 src/dird/ua_output.c:296
-#: src/dird/ua_output.c:315 src/dird/ua_output.c:346 src/dird/ua_select.c:618
-#: src/dird/ua_select.c:793
+#: src/dird/ua_cmds.c:368 src/dird/ua_cmds.c:1055 src/dird/ua_cmds.c:1115
+#: src/dird/ua_output.c:272 src/dird/ua_output.c:296 src/dird/ua_output.c:315
+#: src/dird/ua_output.c:346 src/dird/ua_select.c:618 src/dird/ua_select.c:793
 msgid "jobid"
 msgstr ""
 
@@ -2482,9 +3086,9 @@ msgstr ""
 msgid "JobId %s is not running. Use Job name to cancel inactive jobs.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:379 src/dird/ua_cmds.c:919 src/dird/ua_output.c:282
-#: src/dird/ua_output.c:291 src/dird/ua_output.c:310 src/dird/ua_output.c:341
-#: src/dird/ua_select.c:615 src/dird/ua_select.c:807
+#: src/dird/ua_cmds.c:379 src/dird/ua_output.c:282 src/dird/ua_output.c:291
+#: src/dird/ua_output.c:310 src/dird/ua_output.c:341 src/dird/ua_select.c:615
+#: src/dird/ua_select.c:807
 msgid "job"
 msgstr ""
 
@@ -2493,7 +3097,7 @@ msgstr ""
 msgid "Warning Job %s is not running. Continuing anyway ...\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:407 src/filed/status.c:193 src/stored/status.c:311
+#: src/dird/ua_cmds.c:407 src/filed/status.c:193 src/stored/status.c:315
 msgid "No Jobs running.\n"
 msgstr ""
 
@@ -2501,6 +3105,11 @@ msgstr ""
 msgid "Select Job:\n"
 msgstr ""
 
+#: src/dird/ua_cmds.c:417
+#, c-format
+msgid "JobId=%s Job=%s"
+msgstr ""
+
 #: src/dird/ua_cmds.c:422
 msgid "Choose Job to cancel"
 msgstr ""
@@ -2552,16 +3161,16 @@ msgstr ""
 msgid "Client \"%s\" address set to %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:616 src/dird/ua_status.c:281
+#: src/dird/ua_cmds.c:616 src/dird/ua_status.c:286
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:622 src/dird/ua_status.c:292
+#: src/dird/ua_cmds.c:622 src/dird/ua_status.c:297
 msgid "Connected to storage daemon\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:642 src/dird/ua_cmds.c:982 src/dird/ua_status.c:319
+#: src/dird/ua_cmds.c:642 src/dird/ua_cmds.c:982 src/dird/ua_status.c:324
 #, c-format
 msgid "Connecting to Client %s at %s:%d\n"
 msgstr ""
@@ -2570,73 +3179,18 @@ msgstr ""
 msgid "Failed to connect to Client.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:756 src/dird/ua_cmds.c:935
-msgid "level"
-msgstr ""
-
 #: src/dird/ua_cmds.c:761
 msgid "Enter new debug level: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:778 src/dird/ua_output.c:111 src/dird/ua_status.c:101
-msgid "all"
-msgstr ""
-
-#: src/dird/ua_cmds.c:782 src/dird/ua_status.c:104 src/dird/ua_tree.c:59
-msgid "dir"
-msgstr ""
-
-#: src/dird/ua_cmds.c:783 src/dird/ua_status.c:105
-msgid "director"
-msgstr ""
-
-#: src/dird/ua_cmds.c:788 src/dird/ua_cmds.c:912 src/dird/ua_restore.c:272
-#: src/dird/ua_select.c:288 src/dird/ua_select.c:325 src/dird/ua_status.c:108
-#: src/lib/bnet_server.c:291
-msgid "client"
-msgstr ""
-
-#: src/dird/ua_cmds.c:789 src/dird/ua_cmds.c:913 src/dird/ua_select.c:289
-#: src/dird/ua_select.c:326
-msgid "fd"
-msgstr ""
-
-#: src/dird/ua_cmds.c:805
-msgid "store"
-msgstr ""
-
-#: src/dird/ua_cmds.c:806 src/dird/ua_select.c:788
-msgid "storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:807 src/dird/ua_select.c:789
-msgid "sd"
-msgstr ""
-
 #: src/dird/ua_cmds.c:827
 msgid "Available daemons are: \n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:828 src/dird/ua_status.c:127
-msgid "Director"
-msgstr ""
-
-#: src/dird/ua_cmds.c:831 src/dird/ua_status.c:130
-msgid "All"
-msgstr ""
-
 #: src/dird/ua_cmds.c:832
 msgid "Select daemon type to set debug level"
 msgstr ""
 
-#: src/dird/ua_cmds.c:925
-msgid "fileset"
-msgstr ""
-
-#: src/dird/ua_cmds.c:931
-msgid "listing"
-msgstr ""
-
 #: src/dird/ua_cmds.c:937 src/dird/ua_run.c:478
 #, c-format
 msgid "Level %s not valid.\n"
@@ -2705,14 +3259,14 @@ msgstr ""
 msgid "Using Catalog name=%s DB=%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1369 src/dird/ua_tree.c:590 src/stored/btape.c:2531
+#: src/dird/ua_cmds.c:1369 src/dird/ua_tree.c:594 src/stored/btape.c:2580
 #, c-format
 msgid ""
 "  Command    Description\n"
 "  =======    ===========\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1371 src/dird/ua_tree.c:592
+#: src/dird/ua_cmds.c:1371
 #, c-format
 msgid "  %-10s %s\n"
 msgstr ""
@@ -2724,9 +3278,9 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1382
+#: src/dird/ua_cmds.c:1389
 #, c-format
-msgid "%s %s\n"
+msgid "%s Version: %s (%s)\n"
 msgstr ""
 
 #: src/dird/ua_cmds.c:1408
@@ -2802,20 +3356,35 @@ msgstr ""
 msgid ".exit"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:221 src/dird/ua_restore.c:739
-#: src/dird/ua_restore.c:777
+#: src/dird/ua_dotcmds.c:121
+msgid "The Director will segment fault.\n"
+msgstr ""
+
+#: src/dird/ua_dotcmds.c:221 src/dird/ua_restore.c:747
+#: src/dird/ua_restore.c:785
 #, c-format
 msgid "Query failed: %s. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_input.c:120 src/dird/ua_restore.c:228 src/dird/ua_run.c:487
+#: src/dird/ua_input.c:82
+msgid "Enter slot"
+msgstr ""
+
+#: src/dird/ua_input.c:86 src/dird/ua_input.c:92
+#, c-format
+msgid "Expected a positive integer, got: %s\n"
+msgstr ""
+
+#: src/dird/ua_input.c:120 src/dird/ua_restore.c:232 src/dird/ua_run.c:487
 #: src/dird/ua_run.c:860 src/dird/ua_select.c:54 src/dird/ua_update.c:232
 #: src/dird/ua_update.c:247 src/dird/ua_update.c:495
+#: src/stored/parse_bsr.c:741 src/tools/dbcheck.c:1098
 msgid "yes"
 msgstr ""
 
 #: src/dird/ua_input.c:124 src/dird/ua_select.c:57 src/dird/ua_update.c:234
 #: src/dird/ua_update.c:247 src/dird/ua_update.c:495
+#: src/stored/parse_bsr.c:741
 msgid "no"
 msgstr ""
 
@@ -2851,7 +3420,7 @@ msgstr ""
 msgid "Slot too large.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:170
+#: src/dird/ua_label.c:170 src/stored/btape.c:2541
 msgid "scan"
 msgstr ""
 
@@ -2934,7 +3503,7 @@ msgid ""
 "==============\n"
 msgstr ""
 
-#: src/dird/ua_label.c:484
+#: src/dird/ua_label.c:484 src/stored/btape.c:608
 msgid "Do you want to continue? (y/n): "
 msgstr ""
 
@@ -2943,11 +3512,21 @@ msgstr ""
 msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
 msgstr ""
 
+#: src/dird/ua_label.c:511
+#, c-format
+msgid "Error setting InChanger: ERR=%s"
+msgstr ""
+
 #: src/dird/ua_label.c:536
 #, c-format
 msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
 msgstr ""
 
+#: src/dird/ua_label.c:543
+#, c-format
+msgid "Catalog error on cleaning tape: %s"
+msgstr ""
+
 #: src/dird/ua_label.c:579
 #, c-format
 msgid "Illegal character \"%c\" in a volume name.\n"
@@ -3061,6 +3640,10 @@ msgstr ""
 msgid "pools"
 msgstr ""
 
+#: src/dird/ua_output.c:111 src/dird/ua_status.c:101
+msgid "all"
+msgstr ""
+
 #: src/dird/ua_output.c:178
 msgid "Keywords for the show command are:\n"
 msgstr ""
@@ -3166,7 +3749,7 @@ msgid "Jobs"
 msgstr ""
 
 #: src/dird/ua_prune.c:163 src/dird/ua_purge.c:174 src/dird/ua_purge.c:179
-#: src/stored/label.c:957
+#: src/stored/label.c:956
 msgid "Volume"
 msgstr ""
 
@@ -3192,6 +3775,16 @@ msgstr ""
 msgid "Pruned %d %s for client %s from catalog.\n"
 msgstr ""
 
+#: src/dird/ua_prune.c:502
+#, c-format
+msgid "There are no Jobs associated with Volume \"%s\". Prune not needed.\n"
+msgstr ""
+
+#: src/dird/ua_prune.c:509 src/dird/ua_purge.c:488
+#, c-format
+msgid "There are no Jobs associated with Volume \"%s\". Marking it purged.\n"
+msgstr ""
+
 #: src/dird/ua_prune.c:567
 #, c-format
 msgid "Pruned %d %s on Volume \"%s\" from catalog.\n"
@@ -3255,11 +3848,23 @@ msgstr ""
 msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
 msgstr ""
 
+#: src/dird/ua_purge.c:555
+#, c-format
+msgid ""
+"There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
+msgstr ""
+
 #: src/dird/ua_purge.c:584
 #, c-format
 msgid "Cannot purge Volume with VolStatus=%s\n"
 msgstr ""
 
+#: src/dird/ua_query.c:59 src/findlib/create_file.c:276
+#: src/findlib/create_file.c:333
+#, c-format
+msgid "Could not open %s: ERR=%s\n"
+msgstr ""
+
 #: src/dird/ua_query.c:64
 msgid "Available queries:\n"
 msgstr ""
@@ -3288,7 +3893,7 @@ msgid ""
 "Terminate query mode with a blank line.\n"
 msgstr ""
 
-#: src/dird/ua_query.c:272
+#: src/dird/ua_query.c:255 src/dird/ua_query.c:272
 msgid "Enter SQL query: "
 msgstr ""
 
@@ -3314,43 +3919,105 @@ msgstr ""
 msgid "Unable to construct a valid BSR. Cannot continue.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:182 src/dird/ua_restore.c:192
+#: src/dird/ua_restore.c:182 src/dird/ua_restore.c:196
 msgid "No files selected to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:189
+#: src/dird/ua_restore.c:190
+msgid ""
+"\n"
+"1 file selected to be restored.\n"
+"\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:193
 #, c-format
 msgid ""
 "\n"
-"%u file%s selected to be restored.\n"
+"%u files selected to be restored.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:207
+#: src/dird/ua_restore.c:211
 msgid "No Restore Job resource found!\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:352
+#: src/dird/ua_restore.c:276 src/dird/ua_select.c:288 src/dird/ua_select.c:325
+#: src/dird/ua_status.c:108 src/lib/bnet_server.c:291
+#: src/lib/bnet_server.c:385
+msgid "client"
+msgstr ""
+
+#: src/dird/ua_restore.c:309
+msgid "List last 20 Jobs run"
+msgstr ""
+
+#: src/dird/ua_restore.c:310
+msgid "List Jobs where a given File is saved"
+msgstr ""
+
+#: src/dird/ua_restore.c:311
+msgid "Enter list of comma separated JobIds to select"
+msgstr ""
+
+#: src/dird/ua_restore.c:312
+msgid "Enter SQL list command"
+msgstr ""
+
+#: src/dird/ua_restore.c:313
+msgid "Select the most recent backup for a client"
+msgstr ""
+
+#: src/dird/ua_restore.c:314
+msgid "Select backup for a client before a specified time"
+msgstr ""
+
+#: src/dird/ua_restore.c:315
+msgid "Enter a list of files to restore"
+msgstr ""
+
+#: src/dird/ua_restore.c:316
+msgid "Enter a list of files to restore before a specified time"
+msgstr ""
+
+#: src/dird/ua_restore.c:317
+msgid "Find the JobIds of the most recent backup for a client"
+msgstr ""
+
+#: src/dird/ua_restore.c:318
+msgid "Find the JobIds for a backup for a client before a specified time"
+msgstr ""
+
+#: src/dird/ua_restore.c:319
+msgid "Enter a list of directories to restore for found JobIds"
+msgstr ""
+
+#: src/dird/ua_restore.c:320 src/dird/ua_status.c:702 src/filed/status.c:249
+#: src/stored/status.c:367 src/wx-console/wxbconfigpanel.cpp:191
+msgid "Cancel"
+msgstr ""
+
+#: src/dird/ua_restore.c:356
 #, c-format
 msgid "Unknown keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:370
+#: src/dird/ua_restore.c:374
 #, c-format
 msgid "Improper date format: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:404 src/dird/ua_select.c:576
+#: src/dird/ua_restore.c:408 src/dird/ua_select.c:576
 #, c-format
 msgid "Error: Pool resource \"%s\" does not exist.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:409
+#: src/dird/ua_restore.c:413
 #, c-format
 msgid "Error: Pool resource \"%s\" access not allowed.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:428
+#: src/dird/ua_restore.c:432
 msgid ""
 "\n"
 "First you select one or more JobIds that contain files\n"
@@ -3360,181 +4027,221 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:440
+#: src/dird/ua_restore.c:444
 msgid "To select the JobIds, you have the following choices:\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:445
+#: src/dird/ua_restore.c:449
 msgid "Select item: "
 msgstr ""
 
-#: src/dird/ua_restore.c:459
+#: src/dird/ua_restore.c:463
 msgid "Enter Filename (no path):"
 msgstr ""
 
-#: src/dird/ua_restore.c:474 src/dird/ua_restore.c:574
+#: src/dird/ua_restore.c:478 src/dird/ua_restore.c:578
 msgid "Enter JobId(s), comma separated, to restore: "
 msgstr ""
 
-#: src/dird/ua_restore.c:480
+#: src/dird/ua_restore.c:484
 msgid "Enter SQL list command: "
 msgstr ""
 
-#: src/dird/ua_restore.c:508 src/dird/ua_restore.c:533
+#: src/dird/ua_restore.c:512 src/dird/ua_restore.c:537
 msgid ""
 "Enter file names with paths, or < to enter a filename\n"
 "containg a list of file names with paths, and terminate\n"
 "them with a blank line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:512 src/dird/ua_restore.c:537
+#: src/dird/ua_restore.c:516 src/dird/ua_restore.c:541
 msgid "Enter full filename: "
 msgstr ""
 
-#: src/dird/ua_restore.c:572
+#: src/dird/ua_restore.c:576
 #, c-format
 msgid "You have already seleted the following JobIds: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:587
+#: src/dird/ua_restore.c:591
 msgid ""
 "Enter full directory names or start the name\n"
 "with a < to indicate it is a filename containg a list\n"
 "of directories and terminate them with a blank line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:591
+#: src/dird/ua_restore.c:595
 msgid "Enter directory name: "
 msgstr ""
 
-#: src/dird/ua_restore.c:616
+#: src/dird/ua_restore.c:620
 msgid "No Jobs selected.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:619
+#: src/dird/ua_restore.c:624
+#, c-format
+msgid "You have selected the following JobIds: %s\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:627
 #, c-format
-msgid "You have selected the following JobId%s: %s\n"
+msgid "You have selected the following JobId: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:628
+#: src/dird/ua_restore.c:636
 msgid "Invalid JobId in list.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:640
+#: src/dird/ua_restore.c:648
 #, c-format
 msgid "Unable to get Job record for JobId=%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:645
+#: src/dird/ua_restore.c:653
 #, c-format
 msgid "No authorization. Job \"%s\" not selected.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:659
+#: src/dird/ua_restore.c:667
 msgid ""
 "The restored files will the most current backup\n"
 "BEFORE the date you specify below.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:662
+#: src/dird/ua_restore.c:670
 msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
 msgstr ""
 
-#: src/dird/ua_restore.c:668
+#: src/dird/ua_restore.c:676
 msgid "Improper date format.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:689
+#: src/dird/ua_restore.c:697
 #, c-format
 msgid "Cannot open file %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:697 src/dird/ua_restore.c:701
+#: src/dird/ua_restore.c:705 src/dird/ua_restore.c:709
 #, c-format
 msgid "Error occurred on line %d of %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:743 src/dird/ua_restore.c:781
+#: src/dird/ua_restore.c:751 src/dird/ua_restore.c:789
 #, c-format
 msgid "No database record found for: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:768
+#: src/dird/ua_restore.c:776
 msgid "No JobId specified cannot continue.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:887
+#: src/dird/ua_restore.c:895
 #, c-format
 msgid ""
 "\n"
 "Building directory tree for JobId %s ...  "
 msgstr ""
 
-#: src/dird/ua_restore.c:908
+#: src/dird/ua_restore.c:914
+msgid ""
+"\n"
+"There were no files inserted into the tree, so file selection\n"
+"is not possible.Most likely your retention policy pruned the files\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:916
 msgid ""
 "\n"
 "Do you want to restore all the files? (yes|no): "
 msgstr ""
 
-#: src/dird/ua_restore.c:929 src/dird/ua_tree.c:60
+#: src/dird/ua_restore.c:932
+#, c-format
+msgid ""
+"\n"
+"1 Job, %s files inserted into the tree and marked for extraction.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:936
+#, c-format
+msgid ""
+"\n"
+"1 Job, %s files inserted into the tree.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:942
+#, c-format
+msgid ""
+"\n"
+"%d Jobs, %s files inserted into the tree and marked for extraction.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:946
+#, c-format
+msgid ""
+"\n"
+"%d Jobs, %s files inserted into the tree.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:954 src/dird/ua_tree.c:60
 msgid "done"
 msgstr ""
 
-#: src/dird/ua_restore.c:998
+#: src/dird/ua_restore.c:1023
 #, c-format
 msgid "Error getting FileSet \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1006 src/dird/ua_select.c:165
+#: src/dird/ua_restore.c:1031 src/dird/ua_select.c:165
 msgid "The defined FileSet resources are:\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1010 src/dird/ua_select.c:173
+#: src/dird/ua_restore.c:1035 src/dird/ua_select.c:173
 msgid "Select FileSet resource"
 msgstr ""
 
-#: src/dird/ua_restore.c:1017
+#: src/dird/ua_restore.c:1042
 #, c-format
 msgid "Error getting FileSet record: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1018
+#: src/dird/ua_restore.c:1043
 msgid ""
 "This probably means you modified the FileSet.\n"
 "Continuing anyway.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1033
+#: src/dird/ua_restore.c:1058
 #, c-format
 msgid "Pool \"%s\" not found, using any pool.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1059 src/dird/ua_restore.c:1075
+#: src/dird/ua_restore.c:1084 src/dird/ua_restore.c:1100
 #, c-format
 msgid "No Full backup before %s found.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1098
+#: src/dird/ua_restore.c:1123
 msgid "No jobs found.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1264
+#: src/dird/ua_restore.c:1289
 msgid ""
 "Warning, the JobIds that you selected refer to more than one MediaType.\n"
 "Restore is not possible. The MediaTypes used are:\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1272
+#: src/dird/ua_restore.c:1297
 msgid "No MediaType found for your JobIds.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1304
+#: src/dird/ua_restore.c:1329
 #, c-format
 msgid "Warning default storage overridden by %s on command line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1315
+#: src/dird/ua_restore.c:1340
 #, c-format
 msgid ""
 "\n"
@@ -3787,11 +4494,16 @@ msgstr ""
 msgid "Parameters to modify:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:646
+#: src/dird/ua_run.c:646 src/wx-console/wxbrestorepanel.cpp:380
+#: src/wx-console/wxbrestorepanel.cpp:808
+#: src/wx-console/wxbrestorepanel.cpp:1833
 msgid "When"
 msgstr ""
 
 #: src/dird/ua_run.c:647 src/dird/pythondir.c:73 src/dird/pythondir.c:83
+#: src/wx-console/wxbrestorepanel.cpp:381
+#: src/wx-console/wxbrestorepanel.cpp:1079
+#: src/wx-console/wxbrestorepanel.cpp:1835
 msgid "Priority"
 msgstr ""
 
@@ -3799,15 +4511,24 @@ msgstr ""
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:655
+#: src/dird/ua_run.c:655 src/wx-console/wxbrestorepanel.cpp:373
+#: src/wx-console/wxbrestorepanel.cpp:1814
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:656
+#: src/dird/ua_run.c:656 src/wx-console/wxbrestorepanel.cpp:374
+#: src/wx-console/wxbrestorepanel.cpp:1055
+#: src/wx-console/wxbrestorepanel.cpp:1816
 msgid "Where"
 msgstr ""
 
-#: src/dird/ua_run.c:657
+#: src/dird/ua_run.c:657 src/wx-console/wxbrestorepanel.cpp:376
+#: src/wx-console/wxbrestorepanel.cpp:1063
+#: src/wx-console/wxbrestorepanel.cpp:1820
+#: src/wx-console/wxbrestorepanel.cpp:1821
+#: src/wx-console/wxbrestorepanel.cpp:1822
+#: src/wx-console/wxbrestorepanel.cpp:1823
+#: src/wx-console/wxbrestorepanel.cpp:1824
 msgid "Replace"
 msgstr ""
 
@@ -3820,27 +4541,27 @@ msgid "Levels:\n"
 msgstr ""
 
 #: src/dird/ua_run.c:665 src/filed/status.c:368 src/lib/util.c:319
-#: src/stored/status.c:402
+#: src/stored/status.c:406
 msgid "Base"
 msgstr ""
 
-#: src/dird/ua_run.c:666 src/filed/status.c:370 src/lib/util.c:321
-#: src/stored/status.c:404
+#: src/dird/ua_run.c:666 src/dird/ua_update.c:106 src/dird/ua_update.c:438
+#: src/filed/status.c:370 src/lib/util.c:321 src/stored/status.c:408
 msgid "Full"
 msgstr ""
 
 #: src/dird/ua_run.c:667 src/filed/status.c:373 src/lib/util.c:324
-#: src/stored/status.c:407
+#: src/stored/status.c:411
 msgid "Incremental"
 msgstr ""
 
 #: src/dird/ua_run.c:668 src/filed/status.c:376 src/lib/util.c:327
-#: src/stored/status.c:410
+#: src/stored/status.c:414
 msgid "Differential"
 msgstr ""
 
 #: src/dird/ua_run.c:669 src/filed/status.c:379 src/lib/util.c:330
-#: src/stored/status.c:413
+#: src/stored/status.c:417
 msgid "Since"
 msgstr ""
 
@@ -3853,7 +4574,7 @@ msgid "Initialize Catalog"
 msgstr ""
 
 #: src/dird/ua_run.c:693 src/filed/status.c:382 src/lib/util.c:333
-#: src/stored/status.c:416
+#: src/stored/status.c:420
 msgid "Verify Catalog"
 msgstr ""
 
@@ -3990,6 +4711,10 @@ msgstr ""
 msgid "Select Client (File daemon) resource"
 msgstr ""
 
+#: src/dird/ua_select.c:289 src/dird/ua_select.c:326
+msgid "fd"
+msgstr ""
+
 #: src/dird/ua_select.c:297
 #, c-format
 msgid "Error: Client resource %s does not exist.\n"
@@ -4096,6 +4821,14 @@ msgstr ""
 msgid "Storage name given twice.\n"
 msgstr ""
 
+#: src/dird/ua_select.c:788
+msgid "storage"
+msgstr ""
+
+#: src/dird/ua_select.c:789
+msgid "sd"
+msgstr ""
+
 #: src/dird/ua_select.c:796
 #, c-format
 msgid "Expecting jobid=nn command, got: %s\n"
@@ -4116,6 +4849,11 @@ msgstr ""
 msgid "Job \"%s\" is not running.\n"
 msgstr ""
 
+#: src/dird/ua_select.c:829
+#, c-format
+msgid "Storage resource \"%s\": not found\n"
+msgstr ""
+
 #: src/dird/ua_select.c:862
 msgid "Media Types defined in conf file:\n"
 msgstr ""
@@ -4137,25 +4875,57 @@ msgstr ""
 msgid "You have messages.\n"
 msgstr ""
 
+#: src/dird/ua_status.c:104 src/dird/ua_tree.c:59
+msgid "dir"
+msgstr ""
+
+#: src/dird/ua_status.c:105
+msgid "director"
+msgstr ""
+
 #: src/dird/ua_status.c:126
 msgid "Status available for:\n"
 msgstr ""
 
+#: src/dird/ua_status.c:127
+msgid "Director"
+msgstr ""
+
+#: src/dird/ua_status.c:130
+msgid "All"
+msgstr ""
+
 #: src/dird/ua_status.c:132
 msgid "Select daemon type for status"
 msgstr ""
 
-#: src/dird/ua_status.c:248 src/filed/status.c:71 src/stored/status.c:69
+#: src/dird/ua_status.c:245
 #, c-format
-msgid "Daemon started %s, %d Job%s run since started.\n"
+msgid "%s Version: %s (%s) %s %s %s\n"
+msgstr ""
+
+#: src/dird/ua_status.c:249 src/stored/status.c:70
+#, c-format
+msgid "Daemon started %s, 1 Job run since started.\n"
+msgstr ""
+
+#: src/dird/ua_status.c:252 src/stored/status.c:73
+#, c-format
+msgid "Daemon started %s, %d Jobs run since started.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:252 src/filed/status.c:119 src/stored/status.c:73
+#: src/dird/ua_status.c:257 src/filed/status.c:119 src/stored/status.c:77
 #, c-format
 msgid " Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:284
+#: src/dird/ua_status.c:277 src/dird/ua_status.c:482 src/dird/ua_status.c:644
+#: src/filed/status.c:196 src/filed/status.c:275 src/stored/status.c:317
+#: src/stored/status.c:393
+msgid "====\n"
+msgstr ""
+
+#: src/dird/ua_status.c:289
 #, c-format
 msgid ""
 "\n"
@@ -4163,182 +4933,210 @@ msgid ""
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:322
+#: src/dird/ua_status.c:327
 #, c-format
 msgid ""
 "Failed to connect to Client %s.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:330
+#: src/dird/ua_status.c:335
 msgid "Connected to file daemon\n"
 msgstr ""
 
-#: src/dird/ua_status.c:345
+#: src/dird/ua_status.c:350
 msgid ""
 "\n"
 "Scheduled Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:346
+#: src/dird/ua_status.c:351
 msgid ""
 "Level          Type     Pri  Scheduled          Name               Volume\n"
 msgstr ""
 
-#: src/dird/ua_status.c:347
+#: src/dird/ua_status.c:352
 msgid "===================================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:394
+#: src/dird/ua_status.c:399
 #, c-format
 msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:475
+#: src/dird/ua_status.c:480
 msgid "No Scheduled Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:492 src/stored/status.c:265
+#: src/dird/ua_status.c:497 src/stored/status.c:269
 msgid ""
 "\n"
 "Running Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:501
+#: src/dird/ua_status.c:506
 #, c-format
 msgid "Console connected at %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:509
+#: src/dird/ua_status.c:514
 msgid ""
 "No Jobs running.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:514
+#: src/dird/ua_status.c:519
 msgid " JobId Level   Name                       Status\n"
 msgstr ""
 
-#: src/dird/ua_status.c:515 src/filed/status.c:219 src/stored/status.c:333
+#: src/dird/ua_status.c:520 src/filed/status.c:219 src/stored/status.c:337
 msgid "======================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:524
+#: src/dird/ua_status.c:529
 msgid "is waiting execution"
 msgstr ""
 
-#: src/dird/ua_status.c:527
+#: src/dird/ua_status.c:532
 msgid "is running"
 msgstr ""
 
-#: src/dird/ua_status.c:530
+#: src/dird/ua_status.c:535
 msgid "is blocked"
 msgstr ""
 
-#: src/dird/ua_status.c:533
+#: src/dird/ua_status.c:538
 msgid "has terminated"
 msgstr ""
 
-#: src/dird/ua_status.c:536
+#: src/dird/ua_status.c:541
 msgid "has erred"
 msgstr ""
 
-#: src/dird/ua_status.c:539
+#: src/dird/ua_status.c:544
 msgid "has errors"
 msgstr ""
 
-#: src/dird/ua_status.c:542
+#: src/dird/ua_status.c:547
 msgid "has a fatal error"
 msgstr ""
 
-#: src/dird/ua_status.c:545
+#: src/dird/ua_status.c:550
 msgid "has verify differences"
 msgstr ""
 
-#: src/dird/ua_status.c:548
+#: src/dird/ua_status.c:553
 msgid "has been canceled"
 msgstr ""
 
-#: src/dird/ua_status.c:552
+#: src/dird/ua_status.c:557
 #, c-format
 msgid "is waiting on Client %s"
 msgstr ""
 
-#: src/dird/ua_status.c:558
+#: src/dird/ua_status.c:563
 #, c-format
 msgid "is waiting on Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:563
+#: src/dird/ua_status.c:568
 msgid "is waiting on max Storage jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:566
+#: src/dird/ua_status.c:571
 msgid "is waiting on max Client jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:569
+#: src/dird/ua_status.c:574
 msgid "is waiting on max Job jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:572
+#: src/dird/ua_status.c:577
 msgid "is waiting on max total jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:575
+#: src/dird/ua_status.c:580
 msgid "is waiting for its start time"
 msgstr ""
 
-#: src/dird/ua_status.c:578
+#: src/dird/ua_status.c:583
 msgid "is waiting for higher priority jobs to finish"
 msgstr ""
 
-#: src/dird/ua_status.c:583
+#: src/dird/ua_status.c:588
 #, c-format
 msgid "is in unknown state %c"
 msgstr ""
 
-#: src/dird/ua_status.c:597
+#: src/dird/ua_status.c:602
 msgid "is waiting for a mount request"
 msgstr ""
 
-#: src/dird/ua_status.c:604
+#: src/dird/ua_status.c:609
 msgid "is waiting for an appendable Volume"
 msgstr ""
 
-#: src/dird/ua_status.c:611
+#: src/dird/ua_status.c:616
 #, c-format
 msgid "is waiting for Client %s to connect to Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:627
+#: src/dird/ua_status.c:632
 #, c-format
 msgid "%6d %-6s  %-20s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:649 src/filed/status.c:209 src/stored/status.c:324
+#: src/dird/ua_status.c:654 src/filed/status.c:209 src/stored/status.c:328
 msgid "No Terminated Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:654 src/stored/status.c:329
+#: src/dird/ua_status.c:659 src/stored/status.c:333
 msgid ""
 "\n"
 "Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:655
+#: src/dird/ua_status.c:660
 msgid " JobId  Level     Files      Bytes     Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/ua_status.c:656
+#: src/dird/ua_status.c:661
 msgid "========================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:706 src/filed/status.c:266 src/stored/status.c:380
+#: src/dird/ua_status.c:692 src/filed/status.c:239 src/lib/util.c:184
+#: src/stored/status.c:357
+msgid "Created"
+msgstr ""
+
+#: src/dird/ua_status.c:696 src/filed/status.c:243 src/lib/util.c:197
+#: src/lib/util.c:264 src/stored/status.c:361
+msgid "Error"
+msgstr ""
+
+#: src/dird/ua_status.c:699 src/filed/status.c:246 src/stored/status.c:364
+msgid "Diffs"
+msgstr ""
+
+#: src/dird/ua_status.c:705 src/filed/status.c:252 src/lib/util.c:193
+#: src/lib/util.c:260 src/stored/btape.c:1160 src/stored/status.c:370
+#: src/wx-console/wxbconfigpanel.cpp:180
+msgid "OK"
+msgstr ""
+
+#: src/dird/ua_status.c:708 src/filed/status.c:255 src/stored/status.c:373
+msgid "Other"
+msgstr ""
+
+#: src/dird/ua_status.c:711 src/filed/status.c:266 src/stored/status.c:384
 #, c-format
 msgid "%6d  %-6s %8s %14s %-7s  %-8s %s\n"
 msgstr ""
 
+#: src/dird/ua_status.c:719 src/stored/btape.c:180
+msgid "\n"
+msgstr ""
+
 #: src/dird/ua_tree.c:57
 msgid "cd"
 msgstr ""
@@ -4457,7 +5255,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:102 src/dird/ua_tree.c:629 src/dird/ua_tree.c:637
+#: src/dird/ua_tree.c:102 src/dird/ua_tree.c:633 src/dird/ua_tree.c:641
 #, c-format
 msgid "cwd is: %s\n"
 msgstr ""
@@ -4466,48 +5264,79 @@ msgstr ""
 msgid "Illegal command. Enter \"done\" to exit.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:296 src/dird/ua_tree.c:307 src/dird/ua_tree.c:322
+#: src/dird/ua_tree.c:296 src/dird/ua_tree.c:307 src/dird/ua_tree.c:324
 msgid "No files marked.\n"
 msgstr ""
 
 #: src/dird/ua_tree.c:309
+msgid "1 file marked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:311
 #, c-format
-msgid "%s file%s marked.\n"
+msgid "%s files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:336
+#: src/dird/ua_tree.c:338
 msgid "No directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:338
+#: src/dird/ua_tree.c:340
+msgid "1 directory marked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:342
+#, c-format
+msgid "%s directories marked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:363
 #, c-format
-msgid "%s director%s marked.\n"
+msgid "%s total files/dirs. %s marked to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:370
+#: src/dird/ua_tree.c:374
 msgid "No file specification given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:621
+#: src/dird/ua_tree.c:502
+#, c-format
+msgid "Node %s has no children.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:583
+#, c-format
+msgid "%d total files; %d marked to be restored; %s bytes.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:625
 msgid "Invalid path given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:648 src/dird/ua_tree.c:659
+#: src/dird/ua_tree.c:652 src/dird/ua_tree.c:663
 msgid "No files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:661
+#: src/dird/ua_tree.c:665
+msgid "1 file unmarked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:667
 #, c-format
-msgid "%d file%s unmarked.\n"
+msgid "%d files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:672 src/dird/ua_tree.c:688
+#: src/dird/ua_tree.c:678 src/dird/ua_tree.c:694
 msgid "No directories unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:690
+#: src/dird/ua_tree.c:696
+msgid "1 directory unmarked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:698
 #, c-format
-msgid "%d director%s unmarked.\n"
+msgid "%d directories unmarked.\n"
 msgstr ""
 
 #: src/dird/verify.c:87
@@ -4579,7 +5408,7 @@ msgstr ""
 #: src/dird/verify.c:415
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  FileSet:                %s\n"
@@ -4598,10 +5427,10 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/verify.c:448
+#: src/dird/verify.c:450
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  FileSet:                %s\n"
@@ -4618,90 +5447,90 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/verify.c:522
+#: src/dird/verify.c:526
 #, c-format
 msgid ""
 "bird<filed: bad attributes, expected 3 fields got %d\n"
 " mslen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:566
+#: src/dird/verify.c:570
 #, c-format
 msgid "New file: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:567
+#: src/dird/verify.c:571
 #, c-format
 msgid "File not in catalog: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:591
+#: src/dird/verify.c:595
 #, c-format
 msgid "      st_ino   differ. Cat: %s File: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:600
+#: src/dird/verify.c:604
 #, c-format
 msgid "      st_mode  differ. Cat: %x File: %x\n"
 msgstr ""
 
-#: src/dird/verify.c:608
+#: src/dird/verify.c:612
 #, c-format
 msgid "      st_nlink differ. Cat: %d File: %d\n"
 msgstr ""
 
-#: src/dird/verify.c:616
+#: src/dird/verify.c:620
 #, c-format
 msgid "      st_uid   differ. Cat: %u File: %u\n"
 msgstr ""
 
-#: src/dird/verify.c:624
+#: src/dird/verify.c:628
 #, c-format
 msgid "      st_gid   differ. Cat: %u File: %u\n"
 msgstr ""
 
-#: src/dird/verify.c:632
+#: src/dird/verify.c:636
 #, c-format
 msgid "      st_size  differ. Cat: %s File: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:641
+#: src/dird/verify.c:645
 msgid "      st_atime differs\n"
 msgstr ""
 
-#: src/dird/verify.c:648
+#: src/dird/verify.c:652
 msgid "      st_mtime differs\n"
 msgstr ""
 
-#: src/dird/verify.c:655
+#: src/dird/verify.c:659
 msgid "      st_ctime differs\n"
 msgstr ""
 
-#: src/dird/verify.c:662
+#: src/dird/verify.c:666
 #, c-format
 msgid "      st_size  decrease. Cat: %s File: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:701
+#: src/dird/verify.c:705
 #, c-format
 msgid "      %s not same. File=%s Cat=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:704
+#: src/dird/verify.c:708
 #, c-format
 msgid "      %s differs.\n"
 msgstr ""
 
-#: src/dird/verify.c:716
+#: src/dird/verify.c:720
 #, c-format
 msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
 msgstr ""
 
-#: src/dird/verify.c:753
+#: src/dird/verify.c:757
 msgid "The following files are missing:\n"
 msgstr ""
 
-#: src/dird/verify.c:767
+#: src/dird/verify.c:771 src/tools/testfind.c:338
 #, c-format
 msgid "File: %s\n"
 msgstr ""
@@ -4734,6 +5563,34 @@ msgstr ""
 msgid "Choose catalog item to update"
 msgstr ""
 
+#: src/dird/ua_update.c:103 src/dird/ua_update.c:435
+msgid "Append"
+msgstr ""
+
+#: src/dird/ua_update.c:104 src/dird/ua_update.c:436
+msgid "Archive"
+msgstr ""
+
+#: src/dird/ua_update.c:105 src/dird/ua_update.c:437
+msgid "Disabled"
+msgstr ""
+
+#: src/dird/ua_update.c:107 src/dird/ua_update.c:439
+msgid "Used"
+msgstr ""
+
+#: src/dird/ua_update.c:108 src/dird/ua_update.c:440
+msgid "Cleaning"
+msgstr ""
+
+#: src/dird/ua_update.c:109 src/dird/ua_update.c:355 src/dird/ua_update.c:442
+msgid "Recycle"
+msgstr ""
+
+#: src/dird/ua_update.c:110 src/dird/ua_update.c:444
+msgid "Read-Only"
+msgstr ""
+
 #: src/dird/ua_update.c:122
 #, c-format
 msgid "Invalid VolStatus specified: %s\n"
@@ -4841,10 +5698,6 @@ msgstr ""
 msgid "MaxVolBytes"
 msgstr ""
 
-#: src/dird/ua_update.c:355
-msgid "Recycle"
-msgstr ""
-
 #: src/dird/ua_update.c:357
 msgid "FromPool"
 msgstr ""
@@ -4919,6 +5772,10 @@ msgstr ""
 msgid "Possible Values are:\n"
 msgstr ""
 
+#: src/dird/ua_update.c:441
+msgid "Purged"
+msgstr ""
+
 #: src/dird/ua_update.c:445
 msgid "Choose new Volume Status"
 msgstr ""
@@ -5053,6 +5910,10 @@ msgstr ""
 msgid "Enter new Pool name: "
 msgstr ""
 
+#: src/dird/ua_update.c:598
+msgid "Selection done.\n"
+msgstr ""
+
 #: src/dird/ua_update.c:631
 #, c-format
 msgid "db_update_pool_record returned %d. ERR=%s\n"
@@ -5078,26 +5939,38 @@ msgstr ""
 msgid "VolumeName"
 msgstr ""
 
-#: src/filed/authenticate.c:49 src/filed/authenticate.c:50
+#: src/dird/pythondir.c:104 src/filed/pythonfd.c:102 src/filed/pythonfd.c:156
+#: src/filed/pythonfd.c:220 src/stored/pythonsd.c:95 src/stored/pythonsd.c:160
+msgid "Job pointer not found."
+msgstr ""
+
+#: src/dird/pythondir.c:136
+msgid "Pool record not found."
+msgstr ""
+
+#: src/dird/pythondir.c:163 src/filed/pythonfd.c:133 src/stored/pythonsd.c:137
 #, c-format
-msgid "I only authenticate directors, not %d\n"
+msgid "Attribute %s not found."
 msgstr ""
 
-#: src/filed/authenticate.c:54 src/filed/authenticate.c:56
-#: src/stored/authenticate.c:57 src/stored/authenticate.c:59
+#: src/dird/pythondir.c:206 src/dird/pythondir.c:212 src/filed/pythonfd.c:175
+#: src/stored/pythonsd.c:177
+msgid "Read-only attribute"
+msgstr ""
+
+#: src/filed/authenticate.c:50
 #, c-format
-msgid "Bad Hello command from Director at %s. Len=%d.\n"
+msgid "I only authenticate directors, not %d\n"
 msgstr ""
 
-#: src/filed/authenticate.c:66 src/filed/authenticate.c:68
-#: src/stored/authenticate.c:68 src/stored/authenticate.c:70
+#: src/filed/authenticate.c:56 src/stored/authenticate.c:59
 #, c-format
-msgid "Bad Hello command from Director at %s: %s\n"
+msgid "Bad Hello command from Director at %s. Len=%d.\n"
 msgstr ""
 
-#: src/filed/authenticate.c:80 src/stored/authenticate.c:83
+#: src/filed/authenticate.c:68 src/stored/authenticate.c:70
 #, c-format
-msgid "Connection from unknown Director %s at %s rejected.\n"
+msgid "Bad Hello command from Director at %s: %s\n"
 msgstr ""
 
 #: src/filed/authenticate.c:82 src/stored/authenticate.c:85
@@ -5191,7 +6064,7 @@ msgstr ""
 msgid "     Cannot open %s: ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:293
+#: src/filed/backup.c:293 src/filed/verify.c:229
 #, c-format
 msgid "     Cannot open resource fork for %s: ERR=%s.\n"
 msgstr ""
@@ -5222,9 +6095,17 @@ msgstr ""
 msgid "Too many errors.\n"
 msgstr ""
 
-#: src/filed/filed.c:63
+#: src/filed/backup.c:535
+#, c-format
+msgid "Error reading ACL of %s\n"
+msgstr ""
+
+#: src/filed/filed.c:62
+#, c-format
 msgid ""
-")\n"
+"Copyright (C) 2000-2005 Kern Sibbald\n"
+"\n"
+"Version: %s (%s)\n"
 "\n"
 "Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
 "        -c <file>   use <file> as configuration file\n"
@@ -5240,38 +6121,33 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/filed/filed.c:279
+#: src/filed/filed.c:282
 #, c-format
 msgid ""
 "No File daemon resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/filed/filed.c:284
+#: src/filed/filed.c:287
 #, c-format
 msgid "Only one Client resource permitted in %s\n"
 msgstr ""
 
-#: src/filed/filed.c:307
+#: src/filed/filed.c:310
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon in %s.\n"
 msgstr ""
 
-#: src/filed/filed.c:336
+#: src/filed/filed.c:339
 #, c-format
 msgid "No Director resource defined in %s\n"
 msgstr ""
 
-#: src/filed/filed_conf.c:296
-#, c-format
-msgid "%s item is required in %s resource, but not found.\n"
-msgstr ""
-
-#: src/filed/filed_conf.c:327 src/filed/filed_conf.c:357
+#: src/filed/job.c:323
 #, c-format
-msgid "Unknown resource type %d\n"
+msgid "2901 Job %s not found.\n"
 msgstr ""
 
 #: src/filed/job.c:339
@@ -5283,11 +6159,20 @@ msgstr ""
 msgid "2902 Error scanning cancel command.\n"
 msgstr ""
 
+#: src/filed/job.c:361
+#, c-format
+msgid "2991 Bad setdebug command: %s\n"
+msgstr ""
+
 #: src/filed/job.c:377
 #, c-format
 msgid "Bad estimate command: %s"
 msgstr ""
 
+#: src/filed/job.c:378
+msgid "2992 Bad estimate command.\n"
+msgstr ""
+
 #: src/filed/job.c:401
 #, c-format
 msgid "Bad Job Command: %s"
@@ -5298,11 +6183,19 @@ msgstr ""
 msgid "Bad RunBeforeJob command: %s\n"
 msgstr ""
 
+#: src/filed/job.c:422 src/filed/job.c:435
+msgid "2905 Bad RunBeforeJob command.\n"
+msgstr ""
+
 #: src/filed/job.c:448
 #, c-format
 msgid "Bad RunAfter command: %s\n"
 msgstr ""
 
+#: src/filed/job.c:449
+msgid "2905 Bad RunAfterJob command.\n"
+msgstr ""
+
 #: src/filed/job.c:475
 #, c-format
 msgid "%s could not execute. ERR=%s\n"
@@ -5328,6 +6221,21 @@ msgstr ""
 msgid "Cannot open FileSet input file: %s. ERR=%s\n"
 msgstr ""
 
+#: src/filed/job.c:678
+#, c-format
+msgid "REGEX %s compile error. ERR=%s\n"
+msgstr ""
+
+#: src/filed/job.c:732
+#, c-format
+msgid "Invalid FileSet command: %s\n"
+msgstr ""
+
+#: src/filed/job.c:901 src/findlib/match.c:184
+#, c-format
+msgid "Unknown include/exclude option: %c\n"
+msgstr ""
+
 #: src/filed/job.c:961 src/stored/fd_cmds.c:329
 #, c-format
 msgid "Could not create bootstrap file %s: ERR=%s\n"
@@ -5338,11 +6246,21 @@ msgstr ""
 msgid "DIR and FD clocks differ by %d seconds, FD automatically adjusting.\n"
 msgstr ""
 
+#: src/filed/job.c:1068
+#, c-format
+msgid "Unknown backup level: %s\n"
+msgstr ""
+
 #: src/filed/job.c:1080
 #, c-format
 msgid "Bad level command: %s\n"
 msgstr ""
 
+#: src/filed/job.c:1101
+#, c-format
+msgid "Bad session command: %s"
+msgstr ""
+
 #: src/filed/job.c:1122
 #, c-format
 msgid "Bad storage command: %s"
@@ -5407,6 +6325,16 @@ msgstr ""
 msgid "Bad status %d returned from Storage Daemon.\n"
 msgstr ""
 
+#: src/filed/job.c:1331
+#, c-format
+msgid "2994 Bad verify command: %s\n"
+msgstr ""
+
+#: src/filed/job.c:1346 src/filed/job.c:1385
+#, c-format
+msgid "2994 Bad verify level: %s\n"
+msgstr ""
+
 #: src/filed/job.c:1425
 #, c-format
 msgid "Bad replace command. CMD=%s\n"
@@ -5464,19 +6392,19 @@ msgid "Logic error: output file should not be open\n"
 msgstr ""
 
 #: src/filed/restore.c:218 src/filed/verify_vol.c:142
-#: src/stored/bextract.c:285 src/stored/bls.c:368 src/stored/bscan.c:640
+#: src/stored/bextract.c:289 src/stored/bls.c:372 src/stored/bscan.c:649
 #, c-format
 msgid "Record header file index %ld not equal record index %ld\n"
 msgstr ""
 
-#: src/filed/restore.c:231 src/stored/bextract.c:294
+#: src/filed/restore.c:231 src/stored/bextract.c:298
 #, c-format
 msgid "%s stream not supported on this Client.\n"
 msgstr ""
 
 #: src/filed/restore.c:308
 #, c-format
-msgid "     Cannot open resource fork for %s\n"
+msgid "     Cannot open resource fork for %s.\n"
 msgstr ""
 
 #: src/filed/restore.c:331
@@ -5489,7 +6417,17 @@ msgstr ""
 msgid "     Could not set Finder Info on %s\n"
 msgstr ""
 
-#: src/filed/restore.c:391 src/stored/bextract.c:445
+#: src/filed/restore.c:347
+#, c-format
+msgid "Can't restore ACL of %s\n"
+msgstr ""
+
+#: src/filed/restore.c:359
+#, c-format
+msgid "Can't restore default ACL of %s\n"
+msgstr ""
+
+#: src/filed/restore.c:391 src/stored/bextract.c:449
 #, c-format
 msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
 msgstr ""
@@ -5515,7 +6453,41 @@ msgstr ""
 msgid "%d non-supported acl streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:498 src/stored/bextract.c:383
+#: src/filed/restore.c:450
+msgid "None"
+msgstr ""
+
+#: src/filed/restore.c:454
+msgid "Zlib errno"
+msgstr ""
+
+#: src/filed/restore.c:456
+msgid "Zlib stream error"
+msgstr ""
+
+#: src/filed/restore.c:458
+msgid "Zlib data error"
+msgstr ""
+
+#: src/filed/restore.c:460
+msgid "Zlib memory error"
+msgstr ""
+
+#: src/filed/restore.c:462
+msgid "Zlib buffer error"
+msgstr ""
+
+#: src/filed/restore.c:464
+msgid "Zlib version error"
+msgstr ""
+
+#: src/filed/restore.c:466 src/lib/util.c:546 src/lib/util.c:556
+#: src/lib/util.c:564 src/lib/util.c:571 src/lib/util.c:578 src/lib/util.c:592
+#: src/lib/util.c:602 src/lib/util.c:609 src/lib/util.c:620
+msgid "*none*"
+msgstr ""
+
+#: src/filed/restore.c:498 src/stored/bextract.c:387
 #, c-format
 msgid "Seek to %s error on %s: ERR=%s\n"
 msgstr ""
@@ -5525,15 +6497,25 @@ msgstr ""
 msgid "Uncompression error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:530
+#: src/filed/restore.c:530 src/stored/bextract.c:421
 msgid "GZIP data stream found, but GZIP not configured!\n"
 msgstr ""
 
-#: src/filed/restore.c:539 src/stored/bextract.c:355 src/stored/bextract.c:405
+#: src/filed/restore.c:539 src/stored/bextract.c:359 src/stored/bextract.c:409
 #, c-format
 msgid "Write error on %s: %s\n"
 msgstr ""
 
+#: src/filed/status.c:67
+#, c-format
+msgid "%s Version: %s (%s) %s %s %s %s\n"
+msgstr ""
+
+#: src/filed/status.c:71
+#, c-format
+msgid "Daemon started %s, %d Job%s run since started.\n"
+msgstr ""
+
 #: src/filed/status.c:125
 #, c-format
 msgid " Sizeof: off_t=%d size_t=%d debug=%d trace=%d\n"
@@ -5558,7 +6540,7 @@ msgstr ""
 msgid "    %s%s Job started: %s\n"
 msgstr ""
 
-#: src/filed/status.c:165 src/stored/status.c:292
+#: src/filed/status.c:165 src/stored/status.c:296
 #, c-format
 msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
 msgstr ""
@@ -5577,10 +6559,6 @@ msgstr ""
 msgid "    SDSocket closed.\n"
 msgstr ""
 
-#: src/filed/status.c:196
-msgid "====\n"
-msgstr ""
-
 #: src/filed/status.c:215
 msgid "Terminated Jobs:\n"
 msgstr ""
@@ -5589,29 +6567,37 @@ msgstr ""
 msgid " JobId  Level     Files         Bytes  Status   Finished        Name \n"
 msgstr ""
 
-#: src/filed/status.c:321 src/filed/status.c:347 src/stored/status.c:464
-#: src/stored/status.c:489
+#: src/filed/status.c:321 src/filed/status.c:347 src/stored/status.c:468
+#: src/stored/status.c:493
 #, c-format
 msgid "Bad .status command: %s\n"
 msgstr ""
 
-#: src/filed/status.c:385 src/stored/status.c:419
+#: src/filed/status.c:322
+msgid "2900 Bad .status command, missing argument.\n"
+msgstr ""
+
+#: src/filed/status.c:348
+msgid "2900 Bad .status command, wrong argument.\n"
+msgstr ""
+
+#: src/filed/status.c:385 src/stored/status.c:423
 msgid "Init Catalog"
 msgstr ""
 
-#: src/filed/status.c:388 src/stored/status.c:422
+#: src/filed/status.c:388 src/stored/status.c:426
 msgid "Volume to Catalog"
 msgstr ""
 
-#: src/filed/status.c:391 src/stored/status.c:425
+#: src/filed/status.c:391 src/stored/status.c:429
 msgid "Disk to Catalog"
 msgstr ""
 
-#: src/filed/status.c:394 src/stored/status.c:428
+#: src/filed/status.c:394 src/stored/status.c:432
 msgid "Data"
 msgstr ""
 
-#: src/filed/status.c:400 src/lib/util.c:351 src/stored/status.c:434
+#: src/filed/status.c:400 src/lib/util.c:351 src/stored/status.c:438
 msgid "Unknown Job Level"
 msgstr ""
 
@@ -5665,11 +6651,6 @@ msgstr ""
 msgid "Network error in send to Director: ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify.c:229
-#, c-format
-msgid "     Cannot open resource fork for %s: ERR=%s\n"
-msgstr ""
-
 #: src/filed/verify.c:284
 #, c-format
 msgid "Error reading file %s: ERR=%s\n"
@@ -5688,6 +6669,16 @@ msgstr ""
 msgid "FDName"
 msgstr ""
 
+#: src/filed/pythonfd.c:150 src/stored/pythonsd.c:154
+#, c-format
+msgid "Cannot delete attribute %s"
+msgstr ""
+
+#: src/filed/pythonfd.c:168 src/filed/pythonfd.c:184 src/stored/pythonsd.c:187
+#, c-format
+msgid "Cannot find attribute %s"
+msgstr ""
+
 #: src/findlib/attribs.c:340
 #, c-format
 msgid "File size of restored file %s not correct. Original %s, restored %s.\n"
@@ -5723,6 +6714,62 @@ msgstr ""
 msgid "Error in %s: ERR=%s\n"
 msgstr ""
 
+#: src/findlib/bfile.c:67
+msgid "GZIP data"
+msgstr ""
+
+#: src/findlib/bfile.c:69
+msgid "GZIP sparse data"
+msgstr ""
+
+#: src/findlib/bfile.c:71
+msgid "Win32 data"
+msgstr ""
+
+#: src/findlib/bfile.c:73
+msgid "Win32 GZIP data"
+msgstr ""
+
+#: src/findlib/bfile.c:75
+msgid "File attributes"
+msgstr ""
+
+#: src/findlib/bfile.c:77
+msgid "File data"
+msgstr ""
+
+#: src/findlib/bfile.c:79
+msgid "MD5 signature"
+msgstr ""
+
+#: src/findlib/bfile.c:81
+msgid "Extended attributes"
+msgstr ""
+
+#: src/findlib/bfile.c:83
+msgid "Sparse data"
+msgstr ""
+
+#: src/findlib/bfile.c:85
+msgid "Program names"
+msgstr ""
+
+#: src/findlib/bfile.c:87
+msgid "Program data"
+msgstr ""
+
+#: src/findlib/bfile.c:89
+msgid "SHA1 signature"
+msgstr ""
+
+#: src/findlib/bfile.c:91
+msgid "HFS+ resource fork"
+msgstr ""
+
+#: src/findlib/bfile.c:93
+msgid "HFS+ Finder Info"
+msgstr ""
+
 #: src/findlib/create_file.c:86
 #, c-format
 msgid "File skipped. Not newer: %s\n"
@@ -5743,6 +6790,12 @@ msgstr ""
 msgid "File %s already exists and could not be replaced. ERR=%s.\n"
 msgstr ""
 
+#: src/findlib/create_file.c:170 src/findlib/create_file.c:271
+#: src/findlib/create_file.c:322
+#, c-format
+msgid "bpkt already open fid=%d\n"
+msgstr ""
+
 #: src/findlib/create_file.c:192
 msgid "Could not save_dirn"
 msgstr ""
@@ -5767,11 +6820,6 @@ msgstr ""
 msgid "Cannot make node %s: ERR=%s\n"
 msgstr ""
 
-#: src/findlib/create_file.c:276 src/findlib/create_file.c:333
-#, c-format
-msgid "Could not open %s: ERR=%s\n"
-msgstr ""
-
 #: src/findlib/create_file.c:291
 #, c-format
 msgid "Could not symlink %s -> %s: ERR=%s\n"
@@ -5797,6 +6845,10 @@ msgstr ""
 msgid "Zero length filename: %s\n"
 msgstr ""
 
+#: src/findlib/enable_priv.c:85
+msgid "AdjustTokenPrivileges set "
+msgstr ""
+
 #: src/findlib/find_one.c:168
 #, c-format
 msgid "Top level directory \"%s\" has an unlisted fstype\n"
@@ -5834,6 +6886,41 @@ msgstr ""
 msgid "Cannot change permissions of %s: ERR=%s\n"
 msgstr ""
 
+#: src/findlib/save-cwd.c:48
+#, c-format
+msgid "Cannot open current directory: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:62
+#, c-format
+msgid "Current directory: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:84
+#, c-format
+msgid "Cannot get current directory: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:105
+#, c-format
+msgid "Cannot return to %s from %s: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:109
+#, c-format
+msgid "Cannot return to saved working directory from %s: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:115
+#, c-format
+msgid "Cannot return to %s: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:119
+#, c-format
+msgid "Cannot return to saved working directory: %s\n"
+msgstr ""
+
 #: src/gnome2-console/authenticate.c:74
 #, c-format
 msgid "%s: Director authorization problem.\n"
@@ -5863,13 +6950,7 @@ msgstr ""
 msgid ""
 "Copyright (C) 2002-2005 Kern Sibbald\n"
 "\n"
-"Version: "
-msgstr ""
-
-#: src/gnome2-console/console.c:89
-#, c-format
-msgid ""
-") %s %s %s\n"
+"Version: %s (%s) %s %s %s\n"
 "\n"
 "Usage: gnome-console [-s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
@@ -5880,35 +6961,72 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/gnome2-console/console.c:215
+#: src/gnome2-console/console.c:219
 #, c-format
 msgid "Pthread cond init error = %s\n"
 msgstr ""
 
-#: src/gnome2-console/console.c:357
+#: src/gnome2-console/console.c:361
 msgid " Not Connected"
 msgstr ""
 
-#: src/gnome2-console/console.c:478
+#: src/gnome2-console/console.c:482
 #, c-format
 msgid " Connecting to Director %s:%d"
 msgstr ""
 
-#: src/gnome2-console/console.c:479
+#: src/gnome2-console/console.c:483
 #, c-format
 msgid ""
 "Connecting to Director %s:%d\n"
 "\n"
 msgstr ""
 
-#: src/gnome2-console/console.c:591
+#: src/gnome2-console/console.c:498 src/wx-console/console_thread.cpp:354
+#, c-format
+msgid "Passphrase for Console \"%s\" TLS private key: "
+msgstr ""
+
+#: src/gnome2-console/console.c:520 src/wx-console/console_thread.cpp:375
+#, c-format
+msgid "Passphrase for Director \"%s\" TLS private key: "
+msgstr ""
+
+#: src/gnome2-console/console.c:539 src/tray-monitor/tray-monitor.c:860
+#: src/wx-console/console_thread.cpp:393
+msgid "Director daemon"
+msgstr ""
+
+#: src/gnome2-console/console.c:551
+msgid " Initializing ..."
+msgstr ""
+
+#: src/gnome2-console/console.c:587
+msgid " Connected"
+msgstr ""
+
+#: src/gnome2-console/console.c:595
 msgid " Processing command ..."
 msgstr ""
 
-#: src/gnome2-console/console.c:626
+#: src/gnome2-console/console.c:630
 msgid " At prompt waiting for input ..."
 msgstr ""
 
+#: src/gnome2-console/console.c:750
+msgid " Ready"
+msgstr ""
+
+#: src/gnome2-console/console_conf.c:135
+#, c-format
+msgid "Console: name=%s\n"
+msgstr ""
+
+#: src/gnome2-console/console_conf.c:138
+#, c-format
+msgid "ConsoleFont: name=%s font face=%s\n"
+msgstr ""
+
 #: src/gnome2-console/interface.c:32
 msgid "_Connect"
 msgstr ""
@@ -5985,7 +7103,8 @@ msgstr ""
 msgid "Bacula Console"
 msgstr ""
 
-#: src/gnome2-console/interface.c:231
+#: src/gnome2-console/interface.c:231 src/wx-console/wxbmainframe.cpp:229
+#: src/wx-console/wxbmainframe.cpp:589
 msgid "Connect"
 msgstr ""
 
@@ -6003,6 +7122,8 @@ msgid "Msgs"
 msgstr ""
 
 #: src/gnome2-console/interface.c:261 src/lib/util.c:298
+#: src/wx-console/wxbrestorepanel.cpp:426
+#: src/wx-console/wxbrestorepanel.cpp:1915
 msgid "Restore"
 msgstr ""
 
@@ -6022,7 +7143,7 @@ msgstr ""
 msgid " Status: "
 msgstr ""
 
-#: src/gnome2-console/interface.c:326 src/gnome2-console/interface.c:1692
+#: src/gnome2-console/interface.c:326
 msgid "  "
 msgstr ""
 
@@ -6050,10 +7171,6 @@ msgstr ""
 msgid "Select Director"
 msgstr ""
 
-#: src/gnome2-console/interface.c:565
-msgid "         "
-msgstr ""
-
 #: src/gnome2-console/interface.c:708 src/gnome2-console/interface.c:1616
 msgid "Job:"
 msgstr ""
@@ -6062,12 +7179,8 @@ msgstr ""
 msgid "   Type:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:747 src/gnome2-console/interface.c:777
-#: src/gnome2-console/interface.c:1273 src/gnome2-console/interface.c:1664
-msgid " "
-msgstr ""
-
 #: src/gnome2-console/interface.c:757 src/gnome2-console/interface.c:1644
+#: src/wx-console/wxbrestorepanel.cpp:1828
 msgid "Client:"
 msgstr ""
 
@@ -6075,7 +7188,7 @@ msgstr ""
 msgid "FileSet: "
 msgstr ""
 
-#: src/gnome2-console/interface.c:813
+#: src/gnome2-console/interface.c:813 src/wx-console/wxbrestorepanel.cpp:1834
 msgid "Priority:"
 msgstr ""
 
@@ -6083,26 +7196,13 @@ msgstr ""
 msgid "Level:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:857
-msgid "             "
-msgstr ""
-
 #: src/gnome2-console/interface.c:866 src/gnome2-console/interface.c:1418
 #: src/gnome2-console/interface.c:1700
 msgid "Pool:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:886 src/gnome2-console/interface.c:915
-#: src/gnome2-console/interface.c:943 src/gnome2-console/interface.c:961
-#: src/gnome2-console/interface.c:979 src/gnome2-console/interface.c:997
-#: src/gnome2-console/interface.c:1001 src/gnome2-console/interface.c:1471
-#: src/gnome2-console/interface.c:1720 src/gnome2-console/interface.c:1748
-#: src/gnome2-console/interface.c:1765 src/gnome2-console/interface.c:1769
-msgid "   "
-msgstr ""
-
 #: src/gnome2-console/interface.c:895 src/gnome2-console/interface.c:1393
-#: src/gnome2-console/interface.c:1728
+#: src/gnome2-console/interface.c:1728 src/wx-console/wxbrestorepanel.cpp:1830
 msgid "Storage:"
 msgstr ""
 
@@ -6114,11 +7214,11 @@ msgstr ""
 msgid "Where: "
 msgstr ""
 
-#: src/gnome2-console/interface.c:970
+#: src/gnome2-console/interface.c:970 src/wx-console/wxbrestorepanel.cpp:1832
 msgid "When:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:988
+#: src/gnome2-console/interface.c:988 src/wx-console/wxbrestorepanel.cpp:1813
 msgid "Bootstrap:"
 msgstr ""
 
@@ -6170,9 +7270,43 @@ msgstr ""
 msgid "Progress"
 msgstr ""
 
-#: src/gnome2-console/support.c:60 src/gnome2-console/support.c:85
-#, c-format
-msgid "Couldn't find pixmap file: %s"
+#: src/gnome2-console/restore.c:121
+msgid "Mark"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121
+msgid "Mode"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:330
+msgid "User"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:334
+msgid "Group"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:318
+msgid "Size"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:322
+msgid "Date"
+msgstr ""
+
+#: src/gnome2-console/support.c:41
+#, c-format
+msgid "Widget not found: %s"
+msgstr ""
+
+#: src/gnome2-console/support.c:60 src/gnome2-console/support.c:85
+#, c-format
+msgid "Couldn't find pixmap file: %s"
+msgstr ""
+
+#: src/gnome2-console/support.c:92
+#, c-format
+msgid "Failed to load pixbuf file: %s: %s\n"
 msgstr ""
 
 #: src/lib/address_conf.c:55
@@ -6200,6 +7334,20 @@ msgstr ""
 msgid "Can't add default address (%s)\n"
 msgstr ""
 
+#: src/lib/address_conf.c:285
+msgid "the old style addresses cannot be mixed with new style"
+msgstr ""
+
+#: src/lib/address_conf.c:308
+#, c-format
+msgid "can't resolve service(%s)"
+msgstr ""
+
+#: src/lib/address_conf.c:318
+#, c-format
+msgid "can't resolve hostname(%s) %s"
+msgstr ""
+
 #: src/lib/address_conf.c:407
 #, c-format
 msgid "Expected a block begin { , got: %s"
@@ -6291,10 +7439,37 @@ msgstr ""
 msgid "Error scanning attributes: %s\n"
 msgstr ""
 
+#: src/lib/berrno.c:66
+msgid "Child exited normally."
+msgstr ""
+
+#: src/lib/berrno.c:73
+msgid "Unknown error during program execvp"
+msgstr ""
+
+#: src/lib/berrno.c:76
+#, c-format
+msgid "Child exited with code %d"
+msgstr ""
+
+#: src/lib/berrno.c:84
+#, c-format
+msgid "Child died from signal %d: %s"
+msgstr ""
+
 #: src/lib/berrno.c:90
 msgid "Invalid errno. No error message possible."
 msgstr ""
 
+#: src/lib/bget_msg.c:91
+msgid "Status OK\n"
+msgstr ""
+
+#: src/lib/bget_msg.c:95
+#, c-format
+msgid "bget_msg: unknown signal %d\n"
+msgstr ""
+
 #: src/lib/bnet.c:102
 #, c-format
 msgid "Attr spool write error. ERR=%s\n"
@@ -6360,36 +7535,92 @@ msgstr ""
 msgid "TLS not configured.\n"
 msgstr ""
 
+#: src/lib/bnet.c:607
+msgid "No problem."
+msgstr ""
+
+#: src/lib/bnet.c:610
+msgid "Authoritative answer for host not found."
+msgstr ""
+
+#: src/lib/bnet.c:613
+msgid "Non-authoritative for host not found, or ServerFail."
+msgstr ""
+
+#: src/lib/bnet.c:616
+msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
+msgstr ""
+
+#: src/lib/bnet.c:619
+msgid "Valid name, no data record of resquested type."
+msgstr ""
+
+#: src/lib/bnet.c:622
+msgid "Unknown error."
+msgstr ""
+
+#: src/lib/bnet.c:757
+#, c-format
+msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+msgstr ""
+
+#: src/lib/bnet.c:777
+#, c-format
+msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
+msgstr ""
+
 #: src/lib/bnet.c:786 src/lib/bnet.c:811 src/lib/bnet_server.c:200
 #: src/lib/bnet_server.c:358
 #, c-format
 msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bnet.c:847
+#: src/lib/bnet.c:842
+#, c-format
+msgid ""
+"Could not connect to %s on %s:%d. ERR=%s\n"
+"Retrying ...\n"
+msgstr ""
+
+#: src/lib/bnet.c:848
 #, c-format
 msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet.c:925
+#: src/lib/bnet.c:926
 msgid "Could not malloc BSOCK data buffer\n"
 msgstr ""
 
-#: src/lib/bnet.c:932 src/lib/bnet.c:956
+#: src/lib/bnet.c:933 src/lib/bnet.c:957
 #, c-format
 msgid "sockopt error: %s\n"
 msgstr ""
 
-#: src/lib/bnet.c:938 src/lib/bnet.c:962
+#: src/lib/bnet.c:939 src/lib/bnet.c:963
 #, c-format
 msgid "Warning network buffer = %d bytes not max size.\n"
 msgstr ""
 
-#: src/lib/bnet.c:942 src/lib/bnet.c:966
+#: src/lib/bnet.c:943 src/lib/bnet.c:967
 #, c-format
 msgid "Network buffer size %d not multiple of tape block size.\n"
 msgstr ""
 
+#: src/lib/bnet.c:987 src/lib/bnet.c:1020
+#, c-format
+msgid "fcntl F_GETFL error. ERR=%s\n"
+msgstr ""
+
+#: src/lib/bnet.c:993 src/lib/bnet.c:1026 src/lib/bnet.c:1050
+#, c-format
+msgid "fcntl F_SETFL error. ERR=%s\n"
+msgstr ""
+
+#: src/lib/bnet.c:1104
+#, c-format
+msgid "Unknown sig %d"
+msgstr ""
+
 #: src/lib/bnet_pkt.c:89 src/lib/bnet_pkt.c:147
 #, c-format
 msgid "Unknown BPKT type: %d\n"
@@ -6407,7 +7638,7 @@ msgstr ""
 
 #: src/lib/bnet_server.c:124
 #, c-format
-msgid "Cannot bind port %d: ERR=%s. Retrying ...\n"
+msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
 msgstr ""
 
 #: src/lib/bnet_server.c:129
@@ -6463,6 +7694,35 @@ msgstr ""
 msgid "Socket accept error for %s. ERR=%s\n"
 msgstr ""
 
+#: src/lib/bpipe.c:282 src/lib/bpipe.c:357
+msgid "Program killed by Bacula watchdog (timeout)\n"
+msgstr ""
+
+#: src/lib/bshm.c:69
+#, c-format
+msgid "shmget failure key = %x\n"
+msgstr ""
+
+#: src/lib/bshm.c:77
+#, c-format
+msgid "Could not get %d bytes of shared memory: %s\n"
+msgstr ""
+
+#: src/lib/bshm.c:102
+#, c-format
+msgid "Could not attach shared memory: %s\n"
+msgstr ""
+
+#: src/lib/bshm.c:123
+#, c-format
+msgid "Error detaching shared memory: %s\n"
+msgstr ""
+
+#: src/lib/bshm.c:139
+#, c-format
+msgid "Could not destroy shared memory: %s\n"
+msgstr ""
+
 #: src/lib/bsys.c:176 src/lib/bsys.c:192 src/lib/bsys.c:202 src/lib/bsys.c:214
 #, c-format
 msgid "Out of memory: ERR=%s\n"
@@ -6499,6 +7759,11 @@ msgstr ""
 msgid "Mutex unlock failure. ERR=%s\n"
 msgstr ""
 
+#: src/lib/bsys.c:396
+#, c-format
+msgid "Memset for %d bytes at %s:%d\n"
+msgstr ""
+
 #: src/lib/bsys.c:425
 #, c-format
 msgid "Cannot open pid file. %s ERR=%s\n"
@@ -6516,11 +7781,16 @@ msgstr ""
 msgid "Could not open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:535 src/lib/bsys.c:536
+#: src/lib/bsys.c:536
 #, c-format
 msgid "Could not create state file. %s ERR=%s\n"
 msgstr ""
 
+#: src/lib/bsys.c:552
+#, c-format
+msgid "Write final hdr error: ERR=%s\n"
+msgstr ""
+
 #: src/lib/bsys.c:574
 #, c-format
 msgid "Could not find specified group: %s\n"
@@ -6541,6 +7811,19 @@ msgstr ""
 msgid "Could not set specified userid: %s\n"
 msgstr ""
 
+#: src/lib/btimers.c:239
+msgid "stop_btimer called with NULL btimer_id\n"
+msgstr ""
+
+#: src/lib/cram-md5.c:80 src/lib/cram-md5.c:105
+msgid "1999 Authorization failed.\n"
+msgstr ""
+
+#: src/lib/daemon.c:58
+#, c-format
+msgid "Cannot fork to become daemon: %s\n"
+msgstr ""
+
 #: src/lib/edit.c:400
 #, c-format
 msgid "Illegal character \"%c\" in name.\n"
@@ -6550,6 +7833,14 @@ msgstr ""
 msgid "Name too long.\n"
 msgstr ""
 
+#: src/lib/events.c:161
+msgid "Events not available"
+msgstr ""
+
+#: src/lib/jcr.c:277
+msgid "NULL jcr.\n"
+msgstr ""
+
 #: src/lib/jcr.c:396
 #, c-format
 msgid "JCR use_count=%d JobId=%d\n"
@@ -6574,12 +7865,12 @@ msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
 msgstr ""
 
-#: src/lib/lex.c:79 src/wx-console/console_thread.cpp:190
+#: src/lib/lex.c:79 src/wx-console/console_thread.cpp:189
 #, c-format
 msgid "Problem probably begins at line %d.\n"
 msgstr ""
 
-#: src/lib/lex.c:84
+#: src/lib/lex.c:84 src/wx-console/console_thread.cpp:194
 #, c-format
 msgid ""
 "Config error: %s\n"
@@ -6593,11 +7884,47 @@ msgstr ""
 msgid "Config error: %s\n"
 msgstr ""
 
+#: src/lib/lex.c:108
+msgid "Close of NULL file\n"
+msgstr ""
+
+#: src/lib/lex.c:181
+msgid "get_char: called after EOF\n"
+msgstr ""
+
 #: src/lib/lex.c:220
 #, c-format
 msgid "Config token too long, file: %s, line %d, begins at line %d\n"
 msgstr ""
 
+#: src/lib/lex.c:244
+msgid "none"
+msgstr ""
+
+#: src/lib/lex.c:245
+msgid "comment"
+msgstr ""
+
+#: src/lib/lex.c:246
+msgid "number"
+msgstr ""
+
+#: src/lib/lex.c:247
+msgid "ip_addr"
+msgstr ""
+
+#: src/lib/lex.c:248
+msgid "identifier"
+msgstr ""
+
+#: src/lib/lex.c:249
+msgid "string"
+msgstr ""
+
+#: src/lib/lex.c:250
+msgid "quoted_string"
+msgstr ""
+
 #: src/lib/lex.c:286
 #, c-format
 msgid "expected a positive integer number, got: %s"
@@ -6638,6 +7965,18 @@ msgstr ""
 msgid "expected a string, got %s: %s"
 msgstr ""
 
+#: src/lib/mem_pool.c:100
+#, c-format
+msgid "MemPool index %d larger than max %d\n"
+msgstr ""
+
+#: src/lib/mem_pool.c:118 src/lib/mem_pool.c:138 src/lib/mem_pool.c:173
+#: src/lib/mem_pool.c:244 src/lib/mem_pool.c:264 src/lib/mem_pool.c:302
+#: src/lib/mem_pool.c:521
+#, c-format
+msgid "Out of memory requesting %d bytes\n"
+msgstr ""
+
 #: src/lib/message.c:253 src/lib/message.c:263
 #, c-format
 msgid "Could not open console message file %s: ERR=%s\n"
@@ -6648,6 +7987,24 @@ msgstr ""
 msgid "Could not get con mutex: ERR=%s\n"
 msgstr ""
 
+#: src/lib/message.c:372
+#, c-format
+msgid "open mail pipe %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/lib/message.c:378
+msgid "Bacula Message"
+msgstr ""
+
+#: src/lib/message.c:431
+msgid "open mail pipe failed.\n"
+msgstr ""
+
+#: src/lib/message.c:443
+#, c-format
+msgid "close error: ERR=%s\n"
+msgstr ""
+
 #: src/lib/message.c:454
 #, c-format
 msgid "Mail prog: %s"
@@ -6669,6 +8026,81 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
+#: src/lib/message.c:667 src/lib/message.c:689 src/lib/message.c:705
+#, c-format
+msgid "fopen %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/lib/message.c:933
+#, c-format
+msgid "%s: ABORTING due to ERROR in %s:%d\n"
+msgstr ""
+
+#: src/lib/message.c:937
+#, c-format
+msgid "%s: ERROR TERMINATION at %s:%d\n"
+msgstr ""
+
+#: src/lib/message.c:942
+#, c-format
+msgid "%s: Fatal Error because: "
+msgstr ""
+
+#: src/lib/message.c:944
+#, c-format
+msgid "%s: Fatal Error at %s:%d because:\n"
+msgstr ""
+
+#: src/lib/message.c:948
+#, c-format
+msgid "%s: ERROR: "
+msgstr ""
+
+#: src/lib/message.c:950
+#, c-format
+msgid "%s: ERROR in %s:%d "
+msgstr ""
+
+#: src/lib/message.c:953
+#, c-format
+msgid "%s: Warning: "
+msgstr ""
+
+#: src/lib/message.c:956
+#, c-format
+msgid "%s: Security violation: "
+msgstr ""
+
+#: src/lib/message.c:1032
+#, c-format
+msgid "%s ABORTING due to ERROR\n"
+msgstr ""
+
+#: src/lib/message.c:1035
+#, c-format
+msgid "%s ERROR TERMINATION\n"
+msgstr ""
+
+#: src/lib/message.c:1038
+#, c-format
+msgid "%s: %s Fatal error: "
+msgstr ""
+
+#: src/lib/message.c:1044
+#, c-format
+msgid "%s: %s Error: "
+msgstr ""
+
+#: src/lib/message.c:1050
+#, c-format
+msgid "%s: %s Warning: "
+msgstr ""
+
+#: src/lib/message.c:1053
+#, c-format
+msgid "%s: %s Security violation: "
+msgstr ""
+
 #: src/lib/parse_conf.c:160
 msgid "***UNKNOWN***"
 msgstr ""
@@ -6678,11 +8110,6 @@ msgstr ""
 msgid "Unable to initialize resource lock. ERR=%s\n"
 msgstr ""
 
-#: src/lib/parse_conf.c:211
-#, c-format
-msgid "Too many items in %s resource\n"
-msgstr ""
-
 #: src/lib/parse_conf.c:262 src/lib/parse_conf.c:281
 #, c-format
 msgid "expected an =, got: %s"
@@ -6743,6 +8170,16 @@ msgstr ""
 msgid "expected a time period, got: %s"
 msgstr ""
 
+#: src/lib/parse_conf.c:699
+#, c-format
+msgid "Expect a %s or %s, got: %s"
+msgstr ""
+
+#: src/lib/parse_conf.c:723
+#, c-format
+msgid "Expected a Tape Label keyword, got: %s"
+msgstr ""
+
 #: src/lib/parse_conf.c:772
 #, c-format
 msgid "Cannot open config file \"%s\": %s\n"
@@ -6763,11 +8200,6 @@ msgstr ""
 msgid "not in resource definition: %s"
 msgstr ""
 
-#: src/lib/parse_conf.c:819
-#, c-format
-msgid "expected an equals, got: %s"
-msgstr ""
-
 #: src/lib/parse_conf.c:833
 #, c-format
 msgid ""
@@ -6861,1297 +8293,2307 @@ msgstr ""
 msgid "No previous regular expression"
 msgstr ""
 
-#: src/lib/smartall.c:137 src/lib/smartall.c:228 src/lib/smartall.c:243
-msgid "Out of memory\n"
+#: src/lib/rwlock.c:289
+msgid "rwl_writeunlock called too many times.\n"
 msgstr ""
 
-#: src/lib/util.c:184
-msgid "Created"
+#: src/lib/rwlock.c:293
+msgid "rwl_writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/util.c:187
-msgid "Running"
+#: src/lib/rwlock.c:358 src/lib/semlock.c:248
+#, c-format
+msgid "Write lock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:190
-msgid "Blocked"
+#: src/lib/rwlock.c:365 src/lib/semlock.c:255
+#, c-format
+msgid "Write unlock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:193 src/lib/util.c:260
-msgid "OK"
+#: src/lib/rwlock.c:375 src/lib/semlock.c:265
+#, c-format
+msgid "Read lock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:197 src/lib/util.c:264
-msgid "Error"
+#: src/lib/rwlock.c:382 src/lib/semlock.c:272
+#, c-format
+msgid "Read unlock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:200
-msgid "Non-fatal error"
+#: src/lib/rwlock.c:391 src/lib/semlock.c:281
+#, c-format
+msgid "Thread %d found unchanged elements %d times\n"
 msgstr ""
 
-#: src/lib/util.c:203 src/lib/util.c:270
-msgid "Canceled"
+#: src/lib/rwlock.c:423 src/lib/semlock.c:313
+#, c-format
+msgid "Init rwlock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:206
-msgid "Verify differences"
+#: src/lib/rwlock.c:438 src/lib/semlock.c:328
+#, c-format
+msgid "Create thread failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:209
-msgid "Waiting on FD"
+#: src/lib/rwlock.c:449 src/lib/semlock.c:339
+#, c-format
+msgid "Join thread failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:212
-msgid "Wait on SD"
+#: src/lib/rwlock.c:452 src/lib/semlock.c:342
+#, c-format
+msgid "%02d: interval %d, writes %d, reads %d\n"
 msgstr ""
 
-#: src/lib/util.c:215
-msgid "Wait for new Volume"
+#: src/lib/rwlock.c:462 src/lib/semlock.c:352
+#, c-format
+msgid "data %02d: value %d, %d writes\n"
 msgstr ""
 
-#: src/lib/util.c:218
-msgid "Waiting for mount"
+#: src/lib/rwlock.c:467 src/lib/semlock.c:357
+#, c-format
+msgid "Total: %d thread writes, %d data writes\n"
 msgstr ""
 
-#: src/lib/util.c:221
-msgid "Waiting for Storage resource"
+#: src/lib/rwlock.c:539 src/lib/semlock.c:429
+msgid "Try write lock"
 msgstr ""
 
-#: src/lib/util.c:224
-msgid "Waiting for Job resource"
+#: src/lib/rwlock.c:545 src/lib/semlock.c:435
+msgid "Try read lock"
 msgstr ""
 
-#: src/lib/util.c:227
-msgid "Waiting for Client resource"
+#: src/lib/rwlock.c:600 src/lib/semlock.c:490
+msgid "Create thread"
 msgstr ""
 
-#: src/lib/util.c:230
-msgid "Waiting on Max Jobs"
+#: src/lib/rwlock.c:610 src/lib/semlock.c:500
+msgid "Join thread"
 msgstr ""
 
-#: src/lib/util.c:233
-msgid "Waiting for Start Time"
+#: src/lib/rwlock.c:612 src/lib/semlock.c:502
+#, c-format
+msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
 msgstr ""
 
-#: src/lib/util.c:236
-msgid "Waiting on Priority"
+#: src/lib/rwlock.c:624 src/lib/semlock.c:514
+#, c-format
+msgid "data %02d: value %d, %d updates\n"
 msgstr ""
 
-#: src/lib/util.c:243
-#, c-format
-msgid "Unknown Job termination status=%d"
+#: src/lib/semlock.c:185
+msgid "sem_unlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/util.c:267
-msgid "Fatal Error"
+#: src/lib/signal.c:61
+msgid "Invalid signal number"
 msgstr ""
 
-#: src/lib/util.c:273
-msgid "Differences"
-msgstr ""
-
-#: src/lib/util.c:276
-msgid "Unknown term code"
+#: src/lib/signal.c:87
+#, c-format
+msgid "Bacula interrupted by signal %d: %s\n"
 msgstr ""
 
-#: src/lib/util.c:304
-msgid "Unknown Type"
+#: src/lib/signal.c:100
+#, c-format
+msgid "Kaboom! %s, %s got signal %d. Attempting traceback.\n"
 msgstr ""
 
-#: src/lib/util.c:336
-msgid "Verify Init Catalog"
+#: src/lib/signal.c:102
+#, c-format
+msgid "Kaboom! exepath=%s\n"
 msgstr ""
 
-#: src/lib/util.c:345
-msgid "Verify Data"
+#: src/lib/signal.c:136
+#, c-format
+msgid "Fork error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:647
-msgid "Working directory not defined. Cannot continue.\n"
+#: src/lib/signal.c:143
+#, c-format
+msgid "Calling: %s %s %s\n"
 msgstr ""
 
-#: src/lib/util.c:650
+#: src/lib/signal.c:145
 #, c-format
-msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
+msgid "execv: %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:654
+#: src/lib/signal.c:160
 #, c-format
-msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
+msgid "Traceback complete, attempting cleanup ...\n"
 msgstr ""
 
-#: src/lib/watchdog.c:74
+#: src/lib/signal.c:168
 #, c-format
-msgid "Unable to initialize watchdog lock. ERR=%s\n"
+msgid "It looks like the traceback worked ...\n"
 msgstr ""
 
-#: src/lib/tls.c:108
+#: src/lib/signal.c:197
 #, c-format
-msgid ""
-"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
+msgid "BA_NSIG too small (%d) should be (%d)\n"
 msgstr ""
 
-#: src/lib/tls.c:155
-msgid "Error initializing SSL context"
+#: src/lib/signal.c:203
+msgid "UNKNOWN SIGNAL"
 msgstr ""
 
-#: src/lib/tls.c:176
-msgid "Error loading certificate verification stores"
+#: src/lib/signal.c:204
+msgid "Hangup"
 msgstr ""
 
-#: src/lib/tls.c:181
-msgid ""
-"Either a certificate file or a directory must be specified as a verification "
-"store\n"
+#: src/lib/signal.c:205
+msgid "Interrupt"
 msgstr ""
 
-#: src/lib/tls.c:192
-msgid "Error loading certificate file"
+#: src/lib/signal.c:206
+msgid "Quit"
 msgstr ""
 
-#: src/lib/tls.c:200
-msgid "Error loading private key"
+#: src/lib/signal.c:207
+msgid "Illegal instruction"
 msgstr ""
 
-#: src/lib/tls.c:208
-msgid "Unable to open DH parameters file"
+#: src/lib/signal.c:208
+msgid "Trace/Breakpoint trap"
 msgstr ""
 
-#: src/lib/tls.c:214
-msgid "Unable to load DH parameters from specified file"
+#: src/lib/signal.c:209
+msgid "Abort"
 msgstr ""
 
-#: src/lib/tls.c:218
-msgid "Failed to set TLS Diffie-Hellman parameters"
+#: src/lib/signal.c:211
+msgid "EMT instruction (Emulation Trap)"
 msgstr ""
 
-#: src/lib/tls.c:227
-msgid "Error setting cipher list, no valid ciphers available\n"
+#: src/lib/signal.c:214
+msgid "IOT trap"
 msgstr ""
 
-#: src/lib/tls.c:275
-msgid "Peer failed to present a TLS certificate\n"
+#: src/lib/signal.c:216
+msgid "BUS error"
 msgstr ""
 
-#: src/lib/tls.c:317
-#, c-format
-msgid "Peer %s failed to present a TLS certificate\n"
+#: src/lib/signal.c:217
+msgid "Floating-point exception"
 msgstr ""
 
-#: src/lib/tls.c:587 src/lib/tls.c:591
-msgid "TLS shutdown failure."
+#: src/lib/signal.c:218
+msgid "Kill, unblockable"
 msgstr ""
 
-#: src/lib/tls.c:642 src/lib/tls.c:658
-msgid "TLS read/write failure."
+#: src/lib/signal.c:219
+msgid "User-defined signal 1"
 msgstr ""
 
-#: src/lib/tls.c:880
-msgid "Failed to seed OpenSSL PRNG\n"
+#: src/lib/signal.c:220
+msgid "Segmentation violation"
 msgstr ""
 
-#: src/lib/tls.c:906
-msgid "Failed to save OpenSSL PRNG\n"
+#: src/lib/signal.c:221
+msgid "User-defined signal 2"
 msgstr ""
 
-#: src/stored/acquire.c:98
-#, c-format
-msgid "Hey! num_writers=%d!!!!\n"
+#: src/lib/signal.c:222
+msgid "Broken pipe"
 msgstr ""
 
-#: src/stored/acquire.c:146
-#, c-format
-msgid "Num_writers=%d not zero. Job %d canceled.\n"
+#: src/lib/signal.c:223
+msgid "Alarm clock"
 msgstr ""
 
-#: src/stored/acquire.c:154
-#, c-format
-msgid "No volumes specified. Job %d canceled.\n"
+#: src/lib/signal.c:224
+msgid "Termination"
 msgstr ""
 
-#: src/stored/acquire.c:182 src/stored/mount.c:72
-#, c-format
-msgid "Job %d canceled.\n"
+#: src/lib/signal.c:226
+msgid "Stack fault"
 msgstr ""
 
-#: src/stored/acquire.c:193
-#, c-format
-msgid "Open device %s Volume \"%s\" failed (EIO): ERR=%s\n"
+#: src/lib/signal.c:228
+msgid "Child status has changed"
 msgstr ""
 
-#: src/stored/acquire.c:208
-#, c-format
-msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
+#: src/lib/signal.c:229
+msgid "Continue"
 msgstr ""
 
-#: src/stored/acquire.c:273 src/stored/mount.c:66
-#, c-format
-msgid "Too many errors trying to mount device %s.\n"
+#: src/lib/signal.c:230
+msgid "Stop, unblockable"
 msgstr ""
 
-#: src/stored/acquire.c:282
-#, c-format
-msgid "Ready to read from volume \"%s\" on device %s.\n"
+#: src/lib/signal.c:231
+msgid "Keyboard stop"
 msgstr ""
 
-#: src/stored/acquire.c:328 src/stored/reserve.c:617
-#, c-format
-msgid "Device %s is busy reading.\n"
+#: src/lib/signal.c:232
+msgid "Background read from tty"
 msgstr ""
 
-#: src/stored/acquire.c:357
-#, c-format
-msgid "Wanted Volume \"%s\", but device %s is busy writing on \"%s\" .\n"
+#: src/lib/signal.c:233
+msgid "Background write to tty"
 msgstr ""
 
-#: src/stored/acquire.c:374
-#, c-format
-msgid ""
-"Cannot recycle volume \"%s\" on device %s because it is in use by another "
-"job.\n"
+#: src/lib/signal.c:234
+msgid "Urgent condition on socket"
 msgstr ""
 
-#: src/stored/acquire.c:396
-#, c-format
-msgid "Could not ready device %s for append.\n"
+#: src/lib/signal.c:235
+msgid "CPU limit exceeded"
 msgstr ""
 
-#: src/stored/acquire.c:459 src/stored/block.c:353 src/stored/block.c:676
-#: src/stored/block.c:744
-#, c-format
-msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
+#: src/lib/signal.c:236
+msgid "File size limit exceeded"
 msgstr ""
 
-#: src/stored/acquire.c:501
-#, c-format
-msgid "Alert: %s"
+#: src/lib/signal.c:237
+msgid "Virtual alarm clock"
 msgstr ""
 
-#: src/stored/acquire.c:509
-#, c-format
-msgid "3997 Bad alert command: %s: ERR=%s.\n"
+#: src/lib/signal.c:238
+msgid "Profiling alarm clock"
 msgstr ""
 
-#: src/stored/append.c:60
-msgid "Unable to set network buffer size.\n"
+#: src/lib/signal.c:239
+msgid "Window size change"
 msgstr ""
 
-#: src/stored/append.c:88 src/stored/btape.c:1810
-#, c-format
-msgid "Write session label failed. ERR=%s\n"
+#: src/lib/signal.c:240
+msgid "I/O now possible"
 msgstr ""
 
-#: src/stored/append.c:100
-#, c-format
-msgid "Network send error to FD. ERR=%s\n"
+#: src/lib/signal.c:242
+msgid "Power failure restart"
 msgstr ""
 
-#: src/stored/append.c:137
-#, c-format
-msgid "Error reading data header from FD. ERR=%s\n"
+#: src/lib/signal.c:245
+msgid "No runnable lwp"
 msgstr ""
 
-#: src/stored/append.c:159
-#, c-format
-msgid "Malformed data header from FD: %s\n"
+#: src/lib/signal.c:248
+msgid "SIGLWP special signal used by thread library"
 msgstr ""
 
-#: src/stored/append.c:169
-msgid "File index from FD not positive or sequential\n"
+#: src/lib/signal.c:251
+msgid "Checkpoint Freeze"
 msgstr ""
 
-#: src/stored/append.c:199 src/stored/append.c:269 src/stored/spool.c:242
-#, c-format
-msgid "Fatal append error on device %s: ERR=%s\n"
+#: src/lib/signal.c:254
+msgid "Checkpoint Thaw"
 msgstr ""
 
-#: src/stored/append.c:224
-#, c-format
-msgid "Error updating file attributes. ERR=%s\n"
+#: src/lib/signal.c:257
+msgid "Thread Cancellation"
 msgstr ""
 
-#: src/stored/append.c:237
-#, c-format
-msgid "Network error on data channel. ERR=%s\n"
+#: src/lib/signal.c:260
+msgid "Resource Lost (e.g. record-lock lost)"
 msgstr ""
 
-#: src/stored/append.c:258 src/stored/btape.c:1926
-#, c-format
-msgid "Error writting end session label. ERR=%s\n"
+#: src/lib/smartall.c:137 src/lib/smartall.c:228 src/lib/smartall.c:243
+msgid "Out of memory\n"
 msgstr ""
 
-#: src/stored/append.c:271
-msgid "Set ok=FALSE after write_block_to_device.\n"
+#: src/lib/smartall.c:165
+#, c-format
+msgid "Attempt to free NULL called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:161
-msgid "Network error on bnet_recv in req_vol_info.\n"
+#: src/lib/smartall.c:181
+#, c-format
+msgid "qp->qnext->qprev != qp called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:178
+#: src/lib/smartall.c:185
 #, c-format
-msgid "Error getting Volume info: %s\n"
+msgid "qp->qprev->qnext != qp called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:284
-msgid "NULL Volume name. This shouldn't happen!!!\n"
+#: src/lib/smartall.c:194
+#, c-format
+msgid "Buffer overrun called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:289
-msgid "Attempt to update_volume_info in read mode!!!\n"
+#: src/lib/smartall.c:265
+#, c-format
+msgid "sm_realloc size: %d\n"
 msgstr ""
 
-#: src/stored/askdir.c:349
+#: src/lib/smartall.c:306
 #, c-format
-msgid "Error creating JobMedia record: ERR=%s\n"
+msgid "sm_realloc %d at %x from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:356
+#: src/lib/smartall.c:368
 #, c-format
-msgid "Error creating JobMedia record: %s\n"
+msgid ""
+"\n"
+"Orphaned buffers exist.  Dump terminated following\n"
+"  discovery of bad links in chain of orphaned buffers.\n"
+"  Buffer address with bad links: %lx\n"
 msgstr ""
 
-#: src/stored/askdir.c:424
+#: src/lib/smartall.c:379
 #, c-format
-msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
+msgid "Orphaned buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:452
+#: src/lib/smartall.c:415
 #, c-format
-msgid ""
-"Please mount Volume \"%s\" on Storage Device %s for Job %s\n"
-"Use \"mount\" command to release Job.\n"
+msgid "Damaged buffer found. Called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:462
+#: src/lib/smartall.c:445
 #, c-format
 msgid ""
-"Job %s waiting. Cannot find any appendable volumes.\n"
-"Please use the \"label\"  command to create a new Volume for:\n"
-"    Storage:      %s\n"
-"    Media type:   %s\n"
-"    Pool:         %s\n"
+"\n"
+"Damaged buffers found at %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:486 src/stored/askdir.c:590
+#: src/lib/smartall.c:448
 #, c-format
-msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
+msgid "  discovery of bad prev link.\n"
 msgstr ""
 
-#: src/stored/askdir.c:496 src/stored/askdir.c:503
+#: src/lib/smartall.c:451
 #, c-format
-msgid "pthread error in mount_next_volume stat=%d ERR=%s\n"
+msgid "  discovery of bad next link.\n"
 msgstr ""
 
-#: src/stored/askdir.c:514
+#: src/lib/smartall.c:454
 #, c-format
-msgid ""
-"Someone woke me up, but I cannot find any appendable\n"
-"volumes for Job=%s.\n"
+msgid "  discovery of data overrun.\n"
 msgstr ""
 
-#: src/stored/askdir.c:559
-msgid "Cannot request another volume: no volume name given.\n"
+#: src/lib/smartall.c:457
+#, c-format
+msgid "  Buffer address: %lx\n"
 msgstr ""
 
-#: src/stored/askdir.c:565
+#: src/lib/smartall.c:464
 #, c-format
-msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
+msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:571
-msgid "Please mount"
+#: src/lib/util.c:187
+msgid "Running"
 msgstr ""
 
-#: src/stored/askdir.c:572
-#, c-format
-msgid "%s Volume \"%s\" on Storage Device %s for Job %s\n"
+#: src/lib/util.c:190
+msgid "Blocked"
 msgstr ""
 
-#: src/stored/askdir.c:600
-#, c-format
-msgid "pthread error in mount_volume stat=%d ERR=%s\n"
+#: src/lib/util.c:200
+msgid "Non-fatal error"
 msgstr ""
 
-#: src/stored/askdir.c:607
-#, c-format
-msgid "pthread error in mount_next_volume stat=%d: ERR=%s\n"
+#: src/lib/util.c:203 src/lib/util.c:270
+msgid "Canceled"
 msgstr ""
 
-#: src/stored/authenticate.c:52 src/stored/authenticate.c:53
-#, c-format
-msgid "I only authenticate Directors, not %d\n"
+#: src/lib/util.c:206
+msgid "Verify differences"
 msgstr ""
 
-#: src/stored/authenticate.c:120
-msgid ""
-"Incorrect password given by Director.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
+#: src/lib/util.c:209
+msgid "Waiting on FD"
 msgstr ""
 
-#: src/stored/authenticate.c:177 src/stored/authenticate.c:178
-#, c-format
-msgid "Unable to authenticate Director at %s.\n"
+#: src/lib/util.c:212
+msgid "Wait on SD"
 msgstr ""
 
-#: src/stored/authenticate.c:223 src/stored/authenticate.c:259
-#, c-format
-msgid ""
-"Incorrect authorization key from File daemon at %s rejected.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
+#: src/lib/util.c:215
+msgid "Wait for new Volume"
 msgstr ""
 
-#: src/stored/autochanger.c:87
-#, c-format
-msgid "3303 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+#: src/lib/util.c:218
+msgid "Waiting for mount"
 msgstr ""
 
-#: src/stored/autochanger.c:96
-#, c-format
-msgid "3992 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+#: src/lib/util.c:221
+msgid "Waiting for Storage resource"
 msgstr ""
 
-#: src/stored/autochanger.c:109
-#, c-format
-msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
+#: src/lib/util.c:224
+msgid "Waiting for Job resource"
 msgstr ""
 
-#: src/stored/autochanger.c:116
-#, c-format
-msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
+#: src/lib/util.c:227
+msgid "Waiting for Client resource"
 msgstr ""
 
-#: src/stored/autochanger.c:122
-#, c-format
-msgid "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
+#: src/lib/util.c:230
+msgid "Waiting on Max Jobs"
 msgstr ""
 
-#: src/stored/autochanger.c:167
-#, c-format
-msgid "3301 Issuing autochanger \"loaded drive %d\" command.\n"
+#: src/lib/util.c:233
+msgid "Waiting for Start Time"
 msgstr ""
 
-#: src/stored/autochanger.c:176
-#, c-format
-msgid "3302 Autochanger \"loaded drive %d\", result is Slot %d.\n"
+#: src/lib/util.c:236
+msgid "Waiting on Priority"
 msgstr ""
 
-#: src/stored/autochanger.c:180
+#: src/lib/util.c:243
 #, c-format
-msgid "3302 Autochanger \"loaded drive %d\", result: nothing loaded.\n"
+msgid "Unknown Job termination status=%d"
 msgstr ""
 
-#: src/stored/autochanger.c:187
-#, c-format
-msgid "3991 Bad autochanger \"loaded drive %d\" command: ERR=%s.\n"
+#: src/lib/util.c:267
+msgid "Fatal Error"
 msgstr ""
 
-#: src/stored/autochanger.c:235
-#, c-format
-msgid "3993 Device %s not an autochanger device.\n"
+#: src/lib/util.c:273
+msgid "Differences"
 msgstr ""
 
-#: src/stored/autochanger.c:253
-#, c-format
-msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+#: src/lib/util.c:276
+msgid "Unknown term code"
 msgstr ""
 
-#: src/stored/autochanger.c:265
-#, c-format
-msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+#: src/lib/util.c:304
+msgid "Unknown Type"
 msgstr ""
 
-#: src/stored/autochanger.c:277
-#, c-format
-msgid "3306 Issuing autochanger \"%s\" command.\n"
+#: src/lib/util.c:336
+msgid "Verify Init Catalog"
 msgstr ""
 
-#: src/stored/autochanger.c:282
-msgid "3996 Open bpipe failed.\n"
+#: src/lib/util.c:345
+msgid "Verify Data"
 msgstr ""
 
-#: src/stored/bcopy.c:58
-#, c-format
-msgid ""
-"Copyright (C) 2002-2005 Kern Sibbald.\n"
-"\n"
-"Version: "
+#: src/lib/util.c:647
+msgid "Working directory not defined. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:59
+#: src/lib/util.c:650
 #, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to nn\n"
-"       -i                specify input Volume names (separated by |)\n"
-"       -o                specify output Volume names (separated by |)\n"
-"       -p                proceed inspite of errors\n"
-"       -v                verbose\n"
-"       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n"
-"\n"
+msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:133 src/stored/bscan.c:217
-msgid "Wrong number of arguments: \n"
+#: src/lib/util.c:654
+#, c-format
+msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:168 src/stored/btape.c:330 src/stored/device.c:273
-#, c-format
-msgid "dev open failed: %s\n"
+#: src/lib/var.c:2659
+msgid "everything ok"
 msgstr ""
 
-#: src/stored/bcopy.c:181
-msgid "Write of last block failed.\n"
+#: src/lib/var.c:2660
+msgid "incomplete named character"
 msgstr ""
 
-#: src/stored/bcopy.c:184
-#, c-format
-msgid "%u Jobs copied. %u records copied.\n"
+#: src/lib/var.c:2661
+msgid "incomplete hexadecimal value"
 msgstr ""
 
-#: src/stored/bcopy.c:201 src/stored/bscan.c:380
-#, c-format
-msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
+#: src/lib/var.c:2662
+msgid "invalid hexadecimal value"
 msgstr ""
 
-#: src/stored/bcopy.c:231 src/stored/bcopy.c:238 src/stored/bcopy.c:261
-#: src/stored/btape.c:2286
-#, c-format
-msgid "Cannot fixup device error. %s\n"
+#: src/lib/var.c:2663
+msgid "octal value too large"
 msgstr ""
 
-#: src/stored/bextract.c:274
-msgid "Logic error output file should be open but is not.\n"
+#: src/lib/var.c:2664
+msgid "invalid octal value"
 msgstr ""
 
-#: src/stored/bextract.c:281 src/stored/bls.c:361 src/stored/bscan.c:636
-msgid "Cannot continue.\n"
+#: src/lib/var.c:2665
+msgid "incomplete octal value"
 msgstr ""
 
-#: src/stored/bextract.c:343
-#, c-format
-msgid "Seek error on %s: %s\n"
+#: src/lib/var.c:2666
+msgid "incomplete grouped hexadecimal value"
 msgstr ""
 
-#: src/stored/bextract.c:396
-#, c-format
-msgid "Uncompression error. ERR=%d\n"
+#: src/lib/var.c:2667
+msgid "incorrect character class specification"
 msgstr ""
 
-#: src/stored/block.c:147
-#, c-format
-msgid "%d block read errors not printed.\n"
+#: src/lib/var.c:2668
+msgid "invalid expansion configuration"
 msgstr ""
 
-#: src/stored/block.c:235 src/stored/block.c:251 src/stored/block.c:261
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
-"discarded.\n"
+#: src/lib/var.c:2669
+msgid "out of memory"
 msgstr ""
 
-#: src/stored/block.c:275
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Block length %u is insane (too large), probably "
-"due to a bad archive.\n"
+#: src/lib/var.c:2670
+msgid "incomplete variable specification"
 msgstr ""
 
-#: src/stored/block.c:301
-#, c-format
-msgid ""
-"Volume data error at %u:%u!\n"
-"Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
+#: src/lib/var.c:2671
+msgid "undefined variable"
 msgstr ""
 
-#: src/stored/block.c:409
-msgid "Cannot write block. Device at EOM.\n"
+#: src/lib/var.c:2672
+msgid "input is neither text nor variable"
 msgstr ""
 
-#: src/stored/block.c:414
-msgid "Attempt to write on read-only Volume.\n"
+#: src/lib/var.c:2673
+msgid "unknown command character in variable"
 msgstr ""
 
-#: src/stored/block.c:466
-#, c-format
-msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
+#: src/lib/var.c:2674
+msgid "malformatted search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:481
-#, c-format
-msgid "Unable to write EOF. ERR=%s\n"
+#: src/lib/var.c:2675
+msgid "unknown flag in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:536
-#, c-format
-msgid "Write error at %u:%u on device %s. ERR=%s.\n"
+#: src/lib/var.c:2676
+msgid "invalid regex in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:543
-#, c-format
-msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
+#: src/lib/var.c:2677
+msgid "missing parameter in command"
 msgstr ""
 
-#: src/stored/block.c:618 src/stored/block.c:624
-#, c-format
-msgid "Backspace file at EOT failed. ERR=%s\n"
+#: src/lib/var.c:2678
+msgid "empty search string in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:631
-#, c-format
-msgid "Backspace record at EOT failed. ERR=%s\n"
+#: src/lib/var.c:2679
+msgid "start offset missing in cut operation"
 msgstr ""
 
-#: src/stored/block.c:648
-#, c-format
-msgid "Re-read last block at EOT failed. ERR=%s"
+#: src/lib/var.c:2680
+msgid "offsets in cut operation delimited by unknown character"
 msgstr ""
 
-#: src/stored/block.c:652
-msgid "Re-read of last block succeeded.\n"
+#: src/lib/var.c:2681
+msgid "range out of bounds in cut operation"
 msgstr ""
 
-#: src/stored/block.c:655
-#, c-format
-msgid "Re-read of last block failed. Last block=%u Current block=%u.\n"
+#: src/lib/var.c:2682
+msgid "offset out of bounds in cut operation"
 msgstr ""
 
-#: src/stored/block.c:790 src/stored/dvd.c:621
-#, c-format
-msgid ""
-"Error while writing, current part number is less than the total number of "
-"parts (%d/%d, device=%s)\n"
+#: src/lib/var.c:2683
+msgid "logic error in cut operation"
 msgstr ""
 
-#: src/stored/block.c:798 src/stored/block.c:908
-#, c-format
-msgid "Unable to open device next part %s: ERR=%s\n"
+#: src/lib/var.c:2684
+msgid "malformatted transpose operation"
 msgstr ""
 
-#: src/stored/block.c:816
-#, c-format
-msgid ""
-"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
-"free_space_errno=%d, errmsg=%s).\n"
+#: src/lib/var.c:2685
+msgid "source and target class mismatch in transpose operation"
 msgstr ""
 
-#: src/stored/block.c:829
-#, c-format
-msgid ""
-"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
-"free_space_errno=%d).\n"
+#: src/lib/var.c:2686
+msgid "empty character class in transpose operation"
 msgstr ""
 
-#: src/stored/block.c:883
-#, c-format
-msgid "Block buffer size looping problem on device %s\n"
+#: src/lib/var.c:2687
+msgid "incorrect character class in transpose operation"
 msgstr ""
 
-#: src/stored/block.c:934
-#, c-format
-msgid "Read error at file:blk %u:%u on device %s. ERR=%s.\n"
+#: src/lib/var.c:2688
+msgid "malformatted padding operation"
 msgstr ""
 
-#: src/stored/block.c:947
-#, c-format
-msgid "Read zero bytes at %u:%u on device %s.\n"
+#: src/lib/var.c:2689
+msgid "width parameter missing in padding operation"
 msgstr ""
 
-#: src/stored/block.c:960
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Very short block of %d bytes on device %s "
-"discarded.\n"
+#: src/lib/var.c:2690
+msgid "fill string missing in padding operation"
 msgstr ""
 
-#: src/stored/block.c:985
-#, c-format
-msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
+#: src/lib/var.c:2691
+msgid "unknown quoted pair in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:1004
-#, c-format
-msgid "Setting block buffer size to %u bytes.\n"
+#: src/lib/var.c:2692
+msgid "sub-matching reference out of range"
 msgstr ""
 
-#: src/stored/block.c:1019
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
+#: src/lib/var.c:2693
+msgid "invalid argument"
 msgstr ""
 
-#: src/stored/bls.c:125
-#, c-format
-msgid "Could not open exclude file: %s, ERR=%s\n"
+#: src/lib/var.c:2694
+msgid "incomplete quoted pair"
 msgstr ""
 
-#: src/stored/bls.c:139
-#, c-format
-msgid "Could not open include file: %s, ERR=%s\n"
+#: src/lib/var.c:2695
+msgid "lookup function does not support variable arrays"
 msgstr ""
 
-#: src/stored/bls.c:186
-msgid "No archive name specified\n"
+#: src/lib/var.c:2696
+msgid "index of array variable contains an invalid character"
 msgstr ""
 
-#: src/stored/bls.c:264
-#, c-format
-msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
+#: src/lib/var.c:2697
+msgid "index of array variable is incomplete"
 msgstr ""
 
-#: src/stored/bls.c:275
-#, c-format
-msgid "Mounted Volume \"%s\".\n"
+#: src/lib/var.c:2698
+msgid "bracket expression in array variable's index not closed"
 msgstr ""
 
-#: src/stored/bls.c:277
-#, c-format
-msgid "Got EOF at file %u on device %s, Volume \"%s\"\n"
+#: src/lib/var.c:2699
+msgid "division by zero error in index specification"
 msgstr ""
 
-#: src/stored/bscan.c:109
-#, c-format
-msgid ""
-"Copyright (C) 2001-2005 Kern Sibbald.\n"
-"\n"
-"Version: "
+#: src/lib/var.c:2700
+msgid "unterminated loop construct"
 msgstr ""
 
-#: src/stored/bscan.c:110
-#, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: bscan [ options ] <bacula-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to nn\n"
-"       -m                update media info in database\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -p                proceed inspite of I/O errors\n"
-"       -r                list records\n"
-"       -s                synchronize or store in database\n"
-"       -S                show scan progress periodically\n"
-"       -v                verbose\n"
-"       -V <Volumes>      specify Volume names (separated by |)\n"
-"       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n"
-"\n"
+#: src/lib/var.c:2701
+msgid "invalid character in loop limits"
 msgstr ""
 
-#: src/stored/bscan.c:230 src/stored/stored.c:263
-#, c-format
-msgid "No Storage resource defined in %s. Cannot continue.\n"
+#: src/lib/var.c:2702
+msgid "malformed operation argument list"
 msgstr ""
 
-#: src/stored/bscan.c:238 src/stored/stored.c:294
-#, c-format
-msgid "No Working Directory defined in %s. Cannot continue.\n"
+#: src/lib/var.c:2703
+msgid "undefined operation"
 msgstr ""
 
-#: src/stored/bscan.c:246
-#, c-format
-msgid "Working Directory: %s not found. Cannot continue.\n"
+#: src/lib/var.c:2704
+msgid "formatting failure"
 msgstr ""
 
-#: src/stored/bscan.c:250
-#, c-format
-msgid "Working Directory: %s is not a directory. Cannot continue.\n"
+#: src/lib/var.c:2713
+msgid "unknown error"
 msgstr ""
 
-#: src/stored/bscan.c:264 src/stored/bscan.c:331
+#: src/lib/watchdog.c:74
 #, c-format
-msgid "First Volume Size = %sn"
+msgid "Unable to initialize watchdog lock. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:270
-msgid "Could not init Bacula database\n"
+#: src/lib/watchdog.c:170
+msgid "BUG! register_watchdog called before start_watchdog\n"
 msgstr ""
 
-#: src/stored/bscan.c:277
+#: src/lib/watchdog.c:173
 #, c-format
-msgid "Using Database: %s, User: %s\n"
+msgid "BUG! Watchdog %p has NULL callback\n"
 msgstr ""
 
-#: src/stored/bscan.c:306
+#: src/lib/watchdog.c:176
 #, c-format
-msgid "Create JobMedia for Job %s\n"
+msgid "BUG! Watchdog %p has zero interval\n"
 msgstr ""
 
-#: src/stored/bscan.c:316
-#, c-format
-msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
+#: src/lib/watchdog.c:196
+msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
 msgstr ""
 
-#: src/stored/bscan.c:396
-msgid "Volume is prelabeled. This tape cannot be scanned.\n"
+#: src/lib/watchdog.c:313
+#, c-format
+msgid "rwl_writelock failure. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:408
+#: src/lib/watchdog.c:327
 #, c-format
-msgid "Pool record for %s found in DB.\n"
+msgid "rwl_writeunlock failure. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:412
-#, c-format
-msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
+#: src/lib/pythonlib.c:108
+msgid "Could not initialize Python\n"
 msgstr ""
 
-#: src/stored/bscan.c:418
+#: src/lib/pythonlib.c:113
 #, c-format
-msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
+msgid "Could not Run Python string %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:422
-#, c-format
-msgid "Pool type \"%s\" is OK.\n"
+#: src/lib/pythonlib.c:125
+msgid "Could not initialize Python Job type.\n"
 msgstr ""
 
-#: src/stored/bscan.c:432
+#: src/lib/pythonlib.c:130
 #, c-format
-msgid "Media record for %s found in DB.\n"
+msgid "Could not import Python script %s/%s. Python disabled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:439
-#, c-format
-msgid "VOL_LABEL: Media record not found for Volume: %s\n"
+#: src/lib/pythonlib.c:230
+msgid "Could not create Python Job Object.\n"
 msgstr ""
 
-#: src/stored/bscan.c:446
+#: src/lib/pythonlib.c:243 src/lib/pythonlib.c:267
 #, c-format
-msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
+msgid "Python function \"%s\" not found.\n"
 msgstr ""
 
-#: src/stored/bscan.c:450
+#: src/lib/pythonlib.c:282
 #, c-format
-msgid "Media type \"%s\" is OK.\n"
+msgid "Unknown Python daemon event %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:459
+#: src/lib/res.c:66
 #, c-format
-msgid "VOL_LABEL: OK for Volume: %s\n"
+msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:466
+#: src/lib/res.c:76
 #, c-format
-msgid "%d \"errors\" ignored before first Start of Session record.\n"
+msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:477
+#: src/lib/tls.c:108
 #, c-format
-msgid "SOS_LABEL: Found Job record for JobId: %d\n"
+msgid ""
+"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:482
-#, c-format
-msgid "SOS_LABEL: Job record not found for JobId: %d\n"
+#: src/lib/tls.c:155
+msgid "Error initializing SSL context"
 msgstr ""
 
-#: src/stored/bscan.c:522
-#, c-format
-msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
+#: src/lib/tls.c:176
+msgid "Error loading certificate verification stores"
 msgstr ""
 
-#: src/stored/bscan.c:528
-#, c-format
-msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
+#: src/lib/tls.c:181
+msgid ""
+"Either a certificate file or a directory must be specified as a verification "
+"store\n"
 msgstr ""
 
-#: src/stored/bscan.c:534
-#, c-format
-msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
+#: src/lib/tls.c:192
+msgid "Error loading certificate file"
 msgstr ""
 
-#: src/stored/bscan.c:552 src/stored/bscan.c:998
-#, c-format
-msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
+#: src/lib/tls.c:200
+msgid "Error loading private key"
 msgstr ""
 
-#: src/stored/bscan.c:595
-#, c-format
-msgid "Could not update job record. ERR=%s\n"
+#: src/lib/tls.c:208
+msgid "Unable to open DH parameters file"
 msgstr ""
 
-#: src/stored/bscan.c:606
-#, c-format
-msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:618
-#, c-format
-msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
+#: src/lib/tls.c:214
+msgid "Unable to load DH parameters from specified file"
 msgstr ""
 
-#: src/stored/bscan.c:654
-#, c-format
-msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
+#: src/lib/tls.c:218
+msgid "Failed to set TLS Diffie-Hellman parameters"
 msgstr ""
 
-#: src/stored/bscan.c:697
-#, c-format
-msgid "Got MD5 record: %s\n"
+#: src/lib/tls.c:227
+msgid "Error setting cipher list, no valid ciphers available\n"
 msgstr ""
 
-#: src/stored/bscan.c:706
-#, c-format
-msgid "Got SHA1 record: %s\n"
+#: src/lib/tls.c:275
+msgid "Peer failed to present a TLS certificate\n"
 msgstr ""
 
-#: src/stored/bscan.c:714
+#: src/lib/tls.c:317
 #, c-format
-msgid "Got Prog Names Stream: %s\n"
+msgid "Peer %s failed to present a TLS certificate\n"
 msgstr ""
 
-#: src/stored/bscan.c:720
-msgid "Got Prog Data Stream record.\n"
+#: src/lib/tls.c:416
+msgid "Error creating file descriptor-based BIO"
 msgstr ""
 
-#: src/stored/bscan.c:724
-#, c-format
-msgid "Unknown stream type!!! stream=%d data=%s\n"
+#: src/lib/tls.c:427
+msgid "Error creating new SSL object"
 msgstr ""
 
-#: src/stored/bscan.c:784
-#, c-format
-msgid "Could not create File Attributes record. ERR=%s\n"
+#: src/lib/tls.c:493 src/lib/tls.c:510
+msgid "Connect failure"
 msgstr ""
 
-#: src/stored/bscan.c:790
-#, c-format
-msgid "Created File record: %s\n"
+#: src/lib/tls.c:587 src/lib/tls.c:591
+msgid "TLS shutdown failure."
 msgstr ""
 
-#: src/stored/bscan.c:827
-#, c-format
-msgid "Could not create media record. ERR=%s\n"
+#: src/lib/tls.c:642 src/lib/tls.c:658
+msgid "TLS read/write failure."
 msgstr ""
 
-#: src/stored/bscan.c:831 src/stored/bscan.c:852
+#: src/lib/tls.c:716 src/lib/tls.c:773 src/stored/dev.c:212
+#: src/stored/dev.c:230 src/stored/dev.c:236 src/stored/stored_conf.c:550
 #, c-format
-msgid "Could not update media record. ERR=%s\n"
+msgid "Unable to init mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:835
+#: src/lib/tls.c:736 src/lib/tls.c:805
 #, c-format
-msgid "Created Media record for Volume: %s\n"
+msgid "Unable to destroy mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:856
+#: src/lib/tls.c:870
 #, c-format
-msgid "Updated Media record at end of Volume: %s\n"
+msgid "Unable to init OpenSSL threading: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:873
-#, c-format
-msgid "Could not create pool record. ERR=%s\n"
+#: src/lib/tls.c:880
+msgid "Failed to seed OpenSSL PRNG\n"
 msgstr ""
 
-#: src/stored/bscan.c:877
-#, c-format
-msgid "Created Pool record for Pool: %s\n"
+#: src/lib/tls.c:906
+msgid "Failed to save OpenSSL PRNG\n"
 msgstr ""
 
-#: src/stored/bscan.c:897
+#: src/stored/acquire.c:98
 #, c-format
-msgid "Created Client record for Client: %s\n"
+msgid "Hey! num_writers=%d!!!!\n"
 msgstr ""
 
-#: src/stored/bscan.c:914
+#: src/stored/acquire.c:146
 #, c-format
-msgid "Fileset \"%s\" already exists.\n"
+msgid "Num_writers=%d not zero. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:918
+#: src/stored/acquire.c:154
 #, c-format
-msgid "Could not create FileSet record \"%s\". ERR=%s\n"
+msgid "No volumes specified. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:923
+#: src/stored/acquire.c:182 src/stored/mount.c:72
 #, c-format
-msgid "Created FileSet record \"%s\"\n"
+msgid "Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:970
+#: src/stored/acquire.c:193
 #, c-format
-msgid "Could not create JobId record. ERR=%s\n"
+msgid "Open device %s Volume \"%s\" failed (EIO): ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:976
+#: src/stored/acquire.c:208
 #, c-format
-msgid "Could not update job start record. ERR=%s\n"
+msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:979
+#: src/stored/acquire.c:273 src/stored/mount.c:66
 #, c-format
-msgid "Created new JobId=%u record for original JobId=%u\n"
+msgid "Too many errors trying to mount device %s.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1029
+#: src/stored/acquire.c:282
 #, c-format
-msgid "Could not update JobId=%u record. ERR=%s\n"
+msgid "Ready to read from volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1034
+#: src/stored/acquire.c:328 src/stored/reserve.c:617
 #, c-format
-msgid "Updated Job termination record for JobId=%u TermStat=%c\n"
+msgid "Device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1056
+#: src/stored/acquire.c:357
 #, c-format
-msgid "Job Termination code: %d"
+msgid "Wanted Volume \"%s\", but device %s is busy writing on \"%s\" .\n"
 msgstr ""
 
-#: src/stored/bscan.c:1061
+#: src/stored/acquire.c:374
 #, c-format
 msgid ""
-"%s\n"
-"JobId:                  %d\n"
-"Job:                    %s\n"
-"FileSet:                %s\n"
-"Backup Level:           %s\n"
-"Client:                 %s\n"
-"Start time:             %s\n"
-"End time:               %s\n"
-"Files Written:          %s\n"
-"Bytes Written:          %s\n"
-"Volume Session Id:      %d\n"
-"Volume Session Time:    %d\n"
-"Last Volume Bytes:      %s\n"
-"Termination:            %s\n"
-"\n"
+"Cannot recycle volume \"%s\" on device %s because it is in use by another "
+"job.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1125
+#: src/stored/acquire.c:396
 #, c-format
-msgid "Could not create JobMedia record. ERR=%s\n"
+msgid "Could not ready device %s for append.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1129
+#: src/stored/acquire.c:459 src/stored/block.c:353 src/stored/block.c:676
+#: src/stored/block.c:744
 #, c-format
-msgid "Created JobMedia record JobId %d, MediaId %d\n"
+msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1145
+#: src/stored/acquire.c:501
 #, c-format
-msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
+msgid "Alert: %s"
 msgstr ""
 
-#: src/stored/bscan.c:1159
+#: src/stored/acquire.c:509
 #, c-format
-msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
+msgid "3997 Bad alert command: %s: ERR=%s.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1164
-msgid "Updated MD5/SHA1 record\n"
+#: src/stored/append.c:60
+msgid "Unable to set network buffer size.\n"
 msgstr ""
 
-#: src/stored/btape.c:483
-msgid "Moved to end of medium.\n"
+#: src/stored/append.c:73 src/stored/append.c:82 src/stored/append.c:94
+#: src/stored/append.c:249 src/stored/append.c:264 src/stored/append.c:276
+#: src/stored/askdir.c:284 src/stored/askdir.c:285
+msgid "NULL Volume name. This shouldn't happen!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:510
+#: src/stored/append.c:88 src/stored/btape.c:1853
 #, c-format
-msgid "Bad status from bsf. ERR=%s\n"
+msgid "Write session label failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:512
+#: src/stored/append.c:100
 #, c-format
-msgid "Backspaced %d file%s.\n"
+msgid "Network send error to FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:529
+#: src/stored/append.c:137
 #, c-format
-msgid "Bad status from bsr. ERR=%s\n"
+msgid "Error reading data header from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:531
+#: src/stored/append.c:159
 #, c-format
-msgid "Backspaced %d record%s.\n"
+msgid "Malformed data header from FD: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:541 src/stored/status.c:216
-#, c-format
-msgid "Configured device capabilities:\n"
+#: src/stored/append.c:169
+msgid "File index from FD not positive or sequential\n"
 msgstr ""
 
-#: src/stored/btape.c:559
+#: src/stored/append.c:199 src/stored/append.c:269 src/stored/spool.c:247
 #, c-format
-msgid "Device status:\n"
+msgid "Fatal append error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:573 src/stored/status.c:248
+#: src/stored/append.c:224
 #, c-format
-msgid "Device parameters:\n"
+msgid "Error updating file attributes. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:643
-msgid "Skipping read backwards test because BSR turned off.\n"
+#: src/stored/append.c:237
+#, c-format
+msgid "Network error on data channel. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:647
-msgid ""
-"\n"
-"=== Write, backup, and re-read test ===\n"
-"\n"
-"I'm going to write three records and an EOF\n"
-"then backup over the EOF and re-read the last record.\n"
-"Bacula does this after writing the last block on the\n"
-"tape to verify that the block was written correctly.\n"
-"\n"
-"This is not an *essential* feature ...\n"
-"\n"
+#: src/stored/append.c:258 src/stored/btape.c:1969
+#, c-format
+msgid "Error writting end session label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:660 src/stored/btape.c:671 src/stored/btape.c:682
-#: src/stored/btape.c:780 src/stored/btape.c:796 src/stored/btape.c:892
-#: src/stored/btape.c:908 src/stored/btape.c:1508 src/stored/btape.c:2351
-msgid "Error writing record to block.\n"
+#: src/stored/append.c:271
+msgid "Set ok=FALSE after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/btape.c:664 src/stored/btape.c:675 src/stored/btape.c:686
-#: src/stored/btape.c:784 src/stored/btape.c:800 src/stored/btape.c:896
-#: src/stored/btape.c:912 src/stored/btape.c:1512 src/stored/btape.c:2355
-msgid "Error writing block to device.\n"
+#: src/stored/askdir.c:161
+msgid "Network error on bnet_recv in req_vol_info.\n"
 msgstr ""
 
-#: src/stored/btape.c:667
+#: src/stored/askdir.c:178
 #, c-format
-msgid "Wrote first record of %d bytes.\n"
+msgid "Error getting Volume info: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:678
-#, c-format
-msgid "Wrote second record of %d bytes.\n"
+#: src/stored/askdir.c:289 src/stored/askdir.c:290
+msgid "Attempt to update_volume_info in read mode!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:689
+#: src/stored/askdir.c:318
 #, c-format
-msgid "Wrote third record of %d bytes.\n"
+msgid "Didn't get vol info vol=%s: ERR=%s"
 msgstr ""
 
-#: src/stored/btape.c:696 src/stored/btape.c:701
+#: src/stored/askdir.c:349
 #, c-format
-msgid "Backspace file failed! ERR=%s\n"
+msgid "Error creating JobMedia record: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:707
+#: src/stored/askdir.c:356
 #, c-format
-msgid "Backspace record failed! ERR=%s\n"
+msgid "Error creating JobMedia record: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:713 src/stored/btape.c:719
+#: src/stored/askdir.c:424
 #, c-format
-msgid "Read block failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:724
-msgid "Bad data in record. Test failed!\n"
+msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
 msgstr ""
 
-#: src/stored/btape.c:728
+#: src/stored/askdir.c:452
+#, c-format
 msgid ""
-"\n"
-"Block re-read correct. Test succeeded!\n"
+"Please mount Volume \"%s\" on Storage Device %s for Job %s\n"
+"Use \"mount\" command to release Job.\n"
 msgstr ""
 
-#: src/stored/btape.c:729
+#: src/stored/askdir.c:462
+#, c-format
 msgid ""
-"=== End Write, backup, and re-read test ===\n"
-"\n"
+"Job %s waiting. Cannot find any appendable volumes.\n"
+"Please use the \"label\"  command to create a new Volume for:\n"
+"    Storage:      %s\n"
+"    Media type:   %s\n"
+"    Pool:         %s\n"
 msgstr ""
 
-#: src/stored/btape.c:736
-msgid ""
-"This is not terribly serious since Bacula only uses\n"
-"this function to verify the last block written to the\n"
-"tape. Bacula will skip the last block verification\n"
-"if you add:\n"
-"\n"
-"Backward Space Record = No\n"
-"\n"
-"to your Storage daemon's Device resource definition.\n"
+#: src/stored/askdir.c:486 src/stored/askdir.c:588
+#, c-format
+msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/btape.c:760
-msgid ""
-"\n"
-"=== Write, rewind, and re-read test ===\n"
-"\n"
-"I'm going to write 1000 records and an EOF\n"
-"then write 1000 records and an EOF, then rewind,\n"
-"and re-read the data to verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
+#: src/stored/askdir.c:496 src/stored/askdir.c:503
+#, c-format
+msgid "pthread error in mount_next_volume stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:788 src/stored/btape.c:804 src/stored/btape.c:900
-#: src/stored/btape.c:916
+#: src/stored/askdir.c:514
 #, c-format
-msgid "Wrote 1000 blocks of %d bytes.\n"
+msgid ""
+"Someone woke me up, but I cannot find any appendable\n"
+"volumes for Job=%s.\n"
 msgstr ""
 
-#: src/stored/btape.c:820 src/stored/btape.c:974
-msgid "Got EOF on tape.\n"
+#: src/stored/askdir.c:558
+msgid "Cannot request another volume: no volume name given.\n"
 msgstr ""
 
-#: src/stored/btape.c:825
+#: src/stored/askdir.c:564
 #, c-format
-msgid "Read block %d failed! ERR=%s\n"
+msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:831
+#: src/stored/askdir.c:570
 #, c-format
-msgid "Read record failed. Block %d! ERR=%s\n"
+msgid "Please mount Volume \"%s\" on Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/btape.c:837 src/stored/btape.c:1004
+#: src/stored/askdir.c:598
 #, c-format
-msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
+msgid "pthread error in mount_volume stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:844
-msgid "1000 blocks re-read correctly.\n"
+#: src/stored/askdir.c:605
+#, c-format
+msgid "pthread error in mount_next_volume stat=%d: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:847 src/stored/btape.c:1011
-msgid ""
-"=== Test Succeeded. End Write, rewind, and re-read test ===\n"
-"\n"
+#: src/stored/authenticate.c:53
+#, c-format
+msgid "I only authenticate Directors, not %d\n"
 msgstr ""
 
-#: src/stored/btape.c:872
+#: src/stored/authenticate.c:120
 msgid ""
-"\n"
-"=== Write, rewind, and position test ===\n"
-"\n"
-"I'm going to write 1000 records and an EOF\n"
-"then write 1000 records and an EOF, then rewind,\n"
-"and position to a few blocks and verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
+"Incorrect password given by Director.\n"
+"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
+"help.\n"
 msgstr ""
 
-#: src/stored/btape.c:980
+#: src/stored/authenticate.c:178
 #, c-format
-msgid ""
-"Read block %d failed! file=%d blk=%d. ERR=%s\n"
-"\n"
+msgid "Unable to authenticate Director at %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:982
-msgid ""
+#: src/stored/authenticate.c:223 src/stored/authenticate.c:259
+#, c-format
+msgid ""
+"Incorrect authorization key from File daemon at %s rejected.\n"
+"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
+"help.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:87
+#, c-format
+msgid "3303 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:96
+#, c-format
+msgid "3992 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:109
+#, c-format
+msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:116
+#, c-format
+msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:122
+#, c-format
+msgid "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:167
+#, c-format
+msgid "3301 Issuing autochanger \"loaded drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:176
+#, c-format
+msgid "3302 Autochanger \"loaded drive %d\", result is Slot %d.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:180
+#, c-format
+msgid "3302 Autochanger \"loaded drive %d\", result: nothing loaded.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:187
+#, c-format
+msgid "3991 Bad autochanger \"loaded drive %d\" command: ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:235
+#, c-format
+msgid "3993 Device %s not an autochanger device.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:253
+#, c-format
+msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:265
+#, c-format
+msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:277
+#, c-format
+msgid "3306 Issuing autochanger \"%s\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:282
+msgid "3996 Open bpipe failed.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:306
+#, c-format
+msgid "Autochanger error: ERR=%s\n"
+msgstr ""
+
+#: src/stored/bcopy.c:58
+#, c-format
+msgid ""
+"Copyright (C) 2002-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
+"       -b bootstrap      specify a bootstrap file\n"
+"       -c <file>         specify configuration file\n"
+"       -d <nn>           set debug level to nn\n"
+"       -i                specify input Volume names (separated by |)\n"
+"       -o                specify output Volume names (separated by |)\n"
+"       -p                proceed inspite of errors\n"
+"       -v                verbose\n"
+"       -w <dir>          specify working directory (default /tmp)\n"
+"       -?                print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bcopy.c:137 src/stored/bextract.c:177 src/stored/bscan.c:221
+msgid "Wrong number of arguments: \n"
+msgstr ""
+
+#: src/stored/bcopy.c:172 src/stored/btape.c:334 src/stored/device.c:273
+#, c-format
+msgid "dev open failed: %s\n"
+msgstr ""
+
+#: src/stored/bcopy.c:185
+msgid "Write of last block failed.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:188
+#, c-format
+msgid "%u Jobs copied. %u records copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:205 src/stored/bscan.c:389
+#, c-format
+msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
+msgstr ""
+
+#: src/stored/bcopy.c:220
+msgid "Volume is prelabeled. This volume cannot be copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:223
+msgid "Volume label not copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:235 src/stored/bcopy.c:242 src/stored/bcopy.c:265
+#: src/stored/btape.c:2335
+#, c-format
+msgid "Cannot fixup device error. %s\n"
+msgstr ""
+
+#: src/stored/bcopy.c:247
+msgid "EOM label not copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:250
+msgid "EOT label not copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:290 src/stored/bextract.c:473 src/stored/bls.c:444
+#: src/stored/bscan.c:1227 src/stored/btape.c:2683
+#, c-format
+msgid "Mount Volume \"%s\" on device %s and press return when ready: "
+msgstr ""
+
+#: src/stored/bextract.c:70
+#, c-format
+msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-"
+"files>\n"
+"       -b <file>       specify a bootstrap file\n"
+"       -c <file>       specify a configuration file\n"
+"       -d <nn>         set debug level to nn\n"
+"       -e <file>       exclude list\n"
+"       -i <file>       include list\n"
+"       -p              proceed inspite of I/O errors\n"
+"       -v              verbose\n"
+"       -V <volumes>    specify Volume names (separated by |)\n"
+"       -?              print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bextract.c:127 src/stored/bls.c:129
+#, c-format
+msgid "Could not open exclude file: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/bextract.c:142 src/stored/bls.c:143
+#, c-format
+msgid "Could not open include file: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/bextract.c:198
+#, c-format
+msgid "%d Program Name and/or Program Data Stream records ignored.\n"
+msgstr ""
+
+#: src/stored/bextract.c:202
+#, c-format
+msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
+msgstr ""
+
+#: src/stored/bextract.c:226
+#, c-format
+msgid "Cannot stat %s. It must exist. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bextract.c:230
+#, c-format
+msgid "%s must be a directory.\n"
+msgstr ""
+
+#: src/stored/bextract.c:251
+#, c-format
+msgid "%u files restored.\n"
+msgstr ""
+
+#: src/stored/bextract.c:278 src/stored/bextract.c:444
+msgid "Logic error output file should be open but is not.\n"
+msgstr ""
+
+#: src/stored/bextract.c:285 src/stored/bls.c:365 src/stored/bscan.c:645
+msgid "Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bextract.c:347
+#, c-format
+msgid "Seek error on %s: %s\n"
+msgstr ""
+
+#: src/stored/bextract.c:400
+#, c-format
+msgid "Uncompression error. ERR=%d\n"
+msgstr ""
+
+#: src/stored/bextract.c:408
+msgid "===Write error===\n"
+msgstr ""
+
+#: src/stored/bextract.c:435
+msgid "Got Program Name or Data Stream. Ignored.\n"
+msgstr ""
+
+#: src/stored/block.c:78
+#, c-format
+msgid ""
+"Dump block %s %x: size=%d BlkNum=%d\n"
+"               Hdrcksum=%x cksum=%x\n"
+msgstr ""
+
+#: src/stored/block.c:91
+#, c-format
+msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
+msgstr ""
+
+#: src/stored/block.c:147
+#, c-format
+msgid "%d block read errors not printed.\n"
+msgstr ""
+
+#: src/stored/block.c:235 src/stored/block.c:251 src/stored/block.c:261
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
+"discarded.\n"
+msgstr ""
+
+#: src/stored/block.c:275
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Block length %u is insane (too large), probably "
+"due to a bad archive.\n"
+msgstr ""
+
+#: src/stored/block.c:301
+#, c-format
+msgid ""
+"Volume data error at %u:%u!\n"
+"Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
+msgstr ""
+
+#: src/stored/block.c:409
+msgid "Cannot write block. Device at EOM.\n"
+msgstr ""
+
+#: src/stored/block.c:414
+msgid "Attempt to write on read-only Volume.\n"
+msgstr ""
+
+#: src/stored/block.c:466
+#, c-format
+msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
+msgstr ""
+
+#: src/stored/block.c:481
+#, c-format
+msgid "Unable to write EOF. ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:507 src/stored/block.c:518
+msgid "Write block header zeroed.\n"
+msgstr ""
+
+#: src/stored/block.c:536
+#, c-format
+msgid "Write error at %u:%u on device %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/block.c:543
+#, c-format
+msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
+msgstr ""
+
+#: src/stored/block.c:618 src/stored/block.c:624
+#, c-format
+msgid "Backspace file at EOT failed. ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:631
+#, c-format
+msgid "Backspace record at EOT failed. ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:648
+#, c-format
+msgid "Re-read last block at EOT failed. ERR=%s"
+msgstr ""
+
+#: src/stored/block.c:652
+msgid "Re-read of last block succeeded.\n"
+msgstr ""
+
+#: src/stored/block.c:655
+#, c-format
+msgid "Re-read of last block failed. Last block=%u Current block=%u.\n"
+msgstr ""
+
+#: src/stored/block.c:684
+#, c-format
+msgid ""
+"Error writing final EOF to tape. This tape may not be readable.\n"
+"%s"
+msgstr ""
+
+#: src/stored/block.c:790 src/stored/dvd.c:622
+#, c-format
+msgid ""
+"Error while writing, current part number is less than the total number of "
+"parts (%d/%d, device=%s)\n"
+msgstr ""
+
+#: src/stored/block.c:798 src/stored/block.c:908
+#, c-format
+msgid "Unable to open device next part %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:816
+#, c-format
+msgid ""
+"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
+"free_space_errno=%d, errmsg=%s).\n"
+msgstr ""
+
+#: src/stored/block.c:829
+#, c-format
+msgid ""
+"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
+"free_space_errno=%d).\n"
+msgstr ""
+
+#: src/stored/block.c:883
+#, c-format
+msgid "Block buffer size looping problem on device %s\n"
+msgstr ""
+
+#: src/stored/block.c:934
+#, c-format
+msgid "Read error at file:blk %u:%u on device %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/block.c:947
+#, c-format
+msgid "Read zero bytes at %u:%u on device %s.\n"
+msgstr ""
+
+#: src/stored/block.c:960
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Very short block of %d bytes on device %s "
+"discarded.\n"
+msgstr ""
+
+#: src/stored/block.c:985
+#, c-format
+msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
+msgstr ""
+
+#: src/stored/block.c:1004
+#, c-format
+msgid "Setting block buffer size to %u bytes.\n"
+msgstr ""
+
+#: src/stored/block.c:1019
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
+msgstr ""
+
+#: src/stored/bls.c:69
+#, c-format
+msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bls [options] <device-name>\n"
+"       -b <file>       specify a bootstrap file\n"
+"       -c <file>       specify a config file\n"
+"       -d <level>      specify debug level\n"
+"       -e <file>       exclude list\n"
+"       -i <file>       include list\n"
+"       -j              list jobs\n"
+"       -k              list blocks\n"
+"    (no j or k option) list saved files\n"
+"       -L              dump label\n"
+"       -p              proceed inspite of errors\n"
+"       -v              be verbose\n"
+"       -V              specify Volume names (separated by |)\n"
+"       -?              print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bls.c:190
+msgid "No archive name specified\n"
+msgstr ""
+
+#: src/stored/bls.c:226
+#, c-format
+msgid ""
+"\n"
+"Warning, this Volume is a continuation of Volume %s\n"
+msgstr ""
+
+#: src/stored/bls.c:268
+#, c-format
+msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/bls.c:279
+#, c-format
+msgid "Mounted Volume \"%s\".\n"
+msgstr ""
+
+#: src/stored/bls.c:281
+#, c-format
+msgid "Got EOF at file %u on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/bls.c:305
+#, c-format
+msgid ""
+"File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%"
+"s rlen=%d\n"
+msgstr ""
+
+#: src/stored/bls.c:314
+#, c-format
+msgid "Block: %d size=%d\n"
+msgstr ""
+
+#: src/stored/bls.c:381
+#, c-format
+msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
+msgstr ""
+
+#: src/stored/bls.c:398 src/stored/read_record.c:321
+msgid "Fresh Volume Label"
+msgstr ""
+
+#: src/stored/bls.c:401 src/stored/read_record.c:324
+msgid "Volume Label"
+msgstr ""
+
+#: src/stored/bls.c:405 src/stored/label.c:959
+msgid "Begin Job Session"
+msgstr ""
+
+#: src/stored/bls.c:409 src/stored/label.c:962
+msgid "End Job Session"
+msgstr ""
+
+#: src/stored/bls.c:412
+msgid "End of Medium"
+msgstr ""
+
+#: src/stored/bls.c:415 src/stored/label.c:971
+msgid "Unknown"
+msgstr ""
+
+#: src/stored/bls.c:421 src/stored/read_record.c:342
+#, c-format
+msgid "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:109
+#, c-format
+msgid ""
+"Copyright (C) 2001-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bscan [ options ] <bacula-archive>\n"
+"       -b bootstrap      specify a bootstrap file\n"
+"       -c <file>         specify configuration file\n"
+"       -d <nn>           set debug level to nn\n"
+"       -m                update media info in database\n"
+"       -n <name>         specify the database name (default bacula)\n"
+"       -u <user>         specify database user name (default bacula)\n"
+"       -P <password      specify database password (default none)\n"
+"       -h <host>         specify database host (default NULL)\n"
+"       -p                proceed inspite of I/O errors\n"
+"       -r                list records\n"
+"       -s                synchronize or store in database\n"
+"       -S                show scan progress periodically\n"
+"       -v                verbose\n"
+"       -V <Volumes>      specify Volume names (separated by |)\n"
+"       -w <dir>          specify working directory (default from conf file)\n"
+"       -?                print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bscan.c:234 src/stored/stored.c:266
+#, c-format
+msgid "No Storage resource defined in %s. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:242 src/stored/stored.c:297
+#, c-format
+msgid "No Working Directory defined in %s. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:250
+#, c-format
+msgid "Working Directory: %s not found. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:254
+#, c-format
+msgid "Working Directory: %s is not a directory. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:268 src/stored/bscan.c:340
+#, c-format
+msgid "First Volume Size = %sn"
+msgstr ""
+
+#: src/stored/bscan.c:274
+msgid "Could not init Bacula database\n"
+msgstr ""
+
+#: src/stored/bscan.c:281
+#, c-format
+msgid "Using Database: %s, User: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:315
+#, c-format
+msgid "Create JobMedia for Job %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:325
+#, c-format
+msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:381
+#, c-format
+msgid "done: %d%%\n"
+msgstr ""
+
+#: src/stored/bscan.c:405
+msgid "Volume is prelabeled. This tape cannot be scanned.\n"
+msgstr ""
+
+#: src/stored/bscan.c:417
+#, c-format
+msgid "Pool record for %s found in DB.\n"
+msgstr ""
+
+#: src/stored/bscan.c:421
+#, c-format
+msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:427
+#, c-format
+msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:431
+#, c-format
+msgid "Pool type \"%s\" is OK.\n"
+msgstr ""
+
+#: src/stored/bscan.c:441
+#, c-format
+msgid "Media record for %s found in DB.\n"
+msgstr ""
+
+#: src/stored/bscan.c:448
+#, c-format
+msgid "VOL_LABEL: Media record not found for Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:455
+#, c-format
+msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:459
+#, c-format
+msgid "Media type \"%s\" is OK.\n"
+msgstr ""
+
+#: src/stored/bscan.c:468
+#, c-format
+msgid "VOL_LABEL: OK for Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:475
+#, c-format
+msgid "%d \"errors\" ignored before first Start of Session record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:486
+#, c-format
+msgid "SOS_LABEL: Found Job record for JobId: %d\n"
+msgstr ""
+
+#: src/stored/bscan.c:491
+#, c-format
+msgid "SOS_LABEL: Job record not found for JobId: %d\n"
+msgstr ""
+
+#: src/stored/bscan.c:531
+#, c-format
+msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:537
+#, c-format
+msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:543
+#, c-format
+msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:561 src/stored/bscan.c:1007
+#, c-format
+msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:604
+#, c-format
+msgid "Could not update job record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:615
+#, c-format
+msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:627
+#, c-format
+msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:663
+#, c-format
+msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:706
+#, c-format
+msgid "Got MD5 record: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:715
+#, c-format
+msgid "Got SHA1 record: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:723
+#, c-format
+msgid "Got Prog Names Stream: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:729
+msgid "Got Prog Data Stream record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:733
+#, c-format
+msgid "Unknown stream type!!! stream=%d data=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:793
+#, c-format
+msgid "Could not create File Attributes record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:799
+#, c-format
+msgid "Created File record: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:836
+#, c-format
+msgid "Could not create media record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:840 src/stored/bscan.c:861
+#, c-format
+msgid "Could not update media record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:844
+#, c-format
+msgid "Created Media record for Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:865
+#, c-format
+msgid "Updated Media record at end of Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:882
+#, c-format
+msgid "Could not create pool record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:886
+#, c-format
+msgid "Created Pool record for Pool: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:906
+#, c-format
+msgid "Created Client record for Client: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:923
+#, c-format
+msgid "Fileset \"%s\" already exists.\n"
+msgstr ""
+
+#: src/stored/bscan.c:927
+#, c-format
+msgid "Could not create FileSet record \"%s\". ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:932
+#, c-format
+msgid "Created FileSet record \"%s\"\n"
+msgstr ""
+
+#: src/stored/bscan.c:979
+#, c-format
+msgid "Could not create JobId record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:985
+#, c-format
+msgid "Could not update job start record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:988
+#, c-format
+msgid "Created new JobId=%u record for original JobId=%u\n"
+msgstr ""
+
+#: src/stored/bscan.c:1038
+#, c-format
+msgid "Could not update JobId=%u record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:1043
+#, c-format
+msgid "Updated Job termination record for JobId=%u TermStat=%c\n"
+msgstr ""
+
+#: src/stored/bscan.c:1065
+#, c-format
+msgid "Job Termination code: %d"
+msgstr ""
+
+#: src/stored/bscan.c:1070
+#, c-format
+msgid ""
+"%s\n"
+"JobId:                  %d\n"
+"Job:                    %s\n"
+"FileSet:                %s\n"
+"Backup Level:           %s\n"
+"Client:                 %s\n"
+"Start time:             %s\n"
+"End time:               %s\n"
+"Files Written:          %s\n"
+"Bytes Written:          %s\n"
+"Volume Session Id:      %d\n"
+"Volume Session Time:    %d\n"
+"Last Volume Bytes:      %s\n"
+"Termination:            %s\n"
+"\n"
+msgstr ""
+
+#: src/stored/bscan.c:1134
+#, c-format
+msgid "Could not create JobMedia record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:1138
+#, c-format
+msgid "Created JobMedia record JobId %d, MediaId %d\n"
+msgstr ""
+
+#: src/stored/bscan.c:1154
+#, c-format
+msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:1168
+#, c-format
+msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:1173
+msgid "Updated MD5/SHA1 record\n"
+msgstr ""
+
+#: src/stored/btape.c:157 src/stored/stored.c:107
+#, c-format
+msgid "Tape block size (%d) not multiple of system size (%d)\n"
+msgstr ""
+
+#: src/stored/btape.c:161 src/stored/stored.c:111
+#, c-format
+msgid "Tape block size (%d) is not a power of 2\n"
+msgstr ""
+
+#: src/stored/btape.c:164
+#, c-format
+msgid ""
+"\n"
+"\n"
+"!!!! Warning large disk addressing disabled. off_t=%d should be 8 or "
+"more !!!!!\n"
+"\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:171
+#, c-format
+msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
+msgstr ""
+
+#: src/stored/btape.c:180
+msgid "64 bit printf/scanf problem. i=%d x64=%"
+msgstr ""
+
+#: src/stored/btape.c:180
+msgid " y64=%"
+msgstr ""
+
+#: src/stored/btape.c:184
+#, c-format
+msgid "Tape block granularity is %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:251
+msgid "No archive name specified.\n"
+msgstr ""
+
+#: src/stored/btape.c:255
+msgid "Improper number of arguments specified.\n"
+msgstr ""
+
+#: src/stored/btape.c:340
+#, c-format
+msgid "open device %s: OK\n"
+msgstr ""
+
+#: src/stored/btape.c:361
+msgid "Enter Volume Name: "
+msgstr ""
+
+#: src/stored/btape.c:368
+#, c-format
+msgid "Device open failed. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:373
+#, c-format
+msgid "Wrote Volume label for volume \"%s\".\n"
+msgstr ""
+
+#: src/stored/btape.c:387
+msgid "Volume has no label.\n"
+msgstr ""
+
+#: src/stored/btape.c:390
+msgid "Volume label read correctly.\n"
+msgstr ""
+
+#: src/stored/btape.c:393
+#, c-format
+msgid "I/O error on device: ERR=%s"
+msgstr ""
+
+#: src/stored/btape.c:396
+msgid "Volume name error\n"
+msgstr ""
+
+#: src/stored/btape.c:399
+#, c-format
+msgid "Error creating label. ERR=%s"
+msgstr ""
+
+#: src/stored/btape.c:402
+msgid "Volume version error.\n"
+msgstr ""
+
+#: src/stored/btape.c:405
+msgid "Bad Volume label type.\n"
+msgstr ""
+
+#: src/stored/btape.c:408
+msgid "Unknown error.\n"
+msgstr ""
+
+#: src/stored/btape.c:426
+#, c-format
+msgid "Bad status from load. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:428
+#, c-format
+msgid "Loaded %s\n"
+msgstr ""
+
+#: src/stored/btape.c:437 src/stored/btape.c:777 src/stored/btape.c:819
+#: src/stored/btape.c:889 src/stored/btape.c:931 src/stored/btape.c:1200
+#, c-format
+msgid "Bad status from rewind. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:440 src/stored/btape.c:1208
+#, c-format
+msgid "Rewound %s\n"
+msgstr ""
+
+#: src/stored/btape.c:467 src/stored/btape.c:1212
+#, c-format
+msgid "Bad status from weof %d. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:471
+#, c-format
+msgid "Wrote 1 EOF to %s\n"
+msgstr ""
+
+#: src/stored/btape.c:474
+#, c-format
+msgid "Wrote %d EOFs to %s\n"
+msgstr ""
+
+#: src/stored/btape.c:492
+msgid "Moved to end of medium.\n"
+msgstr ""
+
+#: src/stored/btape.c:519
+#, c-format
+msgid "Bad status from bsf. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:521
+#, c-format
+msgid "Backspaced %d file%s.\n"
+msgstr ""
+
+#: src/stored/btape.c:538
+#, c-format
+msgid "Bad status from bsr. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:540
+#, c-format
+msgid "Backspaced %d record%s.\n"
+msgstr ""
+
+#: src/stored/btape.c:550 src/stored/status.c:220
+#, c-format
+msgid "Configured device capabilities:\n"
+msgstr ""
+
+#: src/stored/btape.c:568
+#, c-format
+msgid "Device status:\n"
+msgstr ""
+
+#: src/stored/btape.c:582 src/stored/status.c:252
+#, c-format
+msgid "Device parameters:\n"
+msgstr ""
+
+#: src/stored/btape.c:587
+#, c-format
+msgid "Status:\n"
+msgstr ""
+
+#: src/stored/btape.c:602
+msgid ""
+"Test writting larger and larger records.\n"
+"This is a torture test for records.\n"
+"I am going to write\n"
+"larger and larger records. It will stop when the record size\n"
+"plus the header exceeds the block size (by default about 64K)\n"
+msgstr ""
+
+#: src/stored/btape.c:610 src/stored/btape.c:1814
+msgid "Command aborted.\n"
+msgstr ""
+
+#: src/stored/btape.c:626
+#, c-format
+msgid "Block %d i=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:652
+msgid "Skipping read backwards test because BSR turned off.\n"
+msgstr ""
+
+#: src/stored/btape.c:656
+msgid ""
+"\n"
+"=== Write, backup, and re-read test ===\n"
+"\n"
+"I'm going to write three records and an EOF\n"
+"then backup over the EOF and re-read the last record.\n"
+"Bacula does this after writing the last block on the\n"
+"tape to verify that the block was written correctly.\n"
+"\n"
+"This is not an *essential* feature ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:669 src/stored/btape.c:680 src/stored/btape.c:691
+#: src/stored/btape.c:789 src/stored/btape.c:805 src/stored/btape.c:901
+#: src/stored/btape.c:917 src/stored/btape.c:1526 src/stored/btape.c:2400
+msgid "Error writing record to block.\n"
+msgstr ""
+
+#: src/stored/btape.c:673 src/stored/btape.c:684 src/stored/btape.c:695
+#: src/stored/btape.c:793 src/stored/btape.c:809 src/stored/btape.c:905
+#: src/stored/btape.c:921 src/stored/btape.c:1530 src/stored/btape.c:2404
+msgid "Error writing block to device.\n"
+msgstr ""
+
+#: src/stored/btape.c:676
+#, c-format
+msgid "Wrote first record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:687
+#, c-format
+msgid "Wrote second record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:698
+#, c-format
+msgid "Wrote third record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:705 src/stored/btape.c:710
+#, c-format
+msgid "Backspace file failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:714
+msgid "Backspaced over EOF OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:716
+#, c-format
+msgid "Backspace record failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:719
+msgid "Backspace record OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:722 src/stored/btape.c:728
+#, c-format
+msgid "Read block failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:733
+msgid "Bad data in record. Test failed!\n"
+msgstr ""
+
+#: src/stored/btape.c:737
+msgid ""
+"\n"
+"Block re-read correct. Test succeeded!\n"
+msgstr ""
+
+#: src/stored/btape.c:738
+msgid ""
+"=== End Write, backup, and re-read test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:745
+msgid ""
+"This is not terribly serious since Bacula only uses\n"
+"this function to verify the last block written to the\n"
+"tape. Bacula will skip the last block verification\n"
+"if you add:\n"
+"\n"
+"Backward Space Record = No\n"
+"\n"
+"to your Storage daemon's Device resource definition.\n"
+msgstr ""
+
+#: src/stored/btape.c:769
+msgid ""
+"\n"
+"=== Write, rewind, and re-read test ===\n"
+"\n"
+"I'm going to write 1000 records and an EOF\n"
+"then write 1000 records and an EOF, then rewind,\n"
+"and re-read the data to verify that it is correct.\n"
+"\n"
+"This is an *essential* feature ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:797 src/stored/btape.c:813 src/stored/btape.c:909
+#: src/stored/btape.c:925
+#, c-format
+msgid "Wrote 1000 blocks of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:822 src/stored/btape.c:934
+msgid "Rewind OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:829 src/stored/btape.c:983
+msgid "Got EOF on tape.\n"
+msgstr ""
+
+#: src/stored/btape.c:834
+#, c-format
+msgid "Read block %d failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:840
+#, c-format
+msgid "Read record failed. Block %d! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:846 src/stored/btape.c:1013
+#, c-format
+msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
+msgstr ""
+
+#: src/stored/btape.c:853
+msgid "1000 blocks re-read correctly.\n"
+msgstr ""
+
+#: src/stored/btape.c:856 src/stored/btape.c:1020
+msgid ""
+"=== Test Succeeded. End Write, rewind, and re-read test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:881
+msgid ""
+"\n"
+"=== Write, rewind, and position test ===\n"
+"\n"
+"I'm going to write 1000 records and an EOF\n"
+"then write 1000 records and an EOF, then rewind,\n"
+"and position to a few blocks and verify that it is correct.\n"
+"\n"
+"This is an *essential* feature ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:974
+#, c-format
+msgid "Reposition to file:block %d:%d\n"
+msgstr ""
+
+#: src/stored/btape.c:976
+msgid "Reposition error.\n"
+msgstr ""
+
+#: src/stored/btape.c:989
+#, c-format
+msgid ""
+"Read block %d failed! file=%d blk=%d. ERR=%s\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:991
+msgid ""
 "This may be because the tape drive block size is not\n"
 " set to variable blocking as normally used by Bacula.\n"
 " Please see the Tape Testing chapter in the manual and \n"
@@ -8164,2060 +10606,4378 @@ msgid ""
 " in your Device resource.\n"
 msgstr ""
 
-#: src/stored/btape.c:998
+#: src/stored/btape.c:1007
+#, c-format
+msgid "Read record failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1018
+#, c-format
+msgid "Block %d re-read correctly.\n"
+msgstr ""
+
+#: src/stored/btape.c:1039
+msgid ""
+"\n"
+"\n"
+"=== Append files test ===\n"
+"\n"
+"This test is essential to Bacula.\n"
+"\n"
+"I'm going to write one record  in file 0,\n"
+"                   two records in file 1,\n"
+"             and three records in file 2\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1063
+msgid "Now moving to end of medium.\n"
+msgstr ""
+
+#: src/stored/btape.c:1065 src/stored/btape.c:1295
+#, c-format
+msgid "We should be in file 3. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1066 src/stored/btape.c:1084 src/stored/btape.c:1284
+#: src/stored/btape.c:1296 src/stored/btape.c:1309 src/stored/btape.c:1326
+msgid "This is correct!"
+msgstr ""
+
+#: src/stored/btape.c:1066 src/stored/btape.c:1084 src/stored/btape.c:1284
+#: src/stored/btape.c:1296 src/stored/btape.c:1309 src/stored/btape.c:1326
+msgid "This is NOT correct!!!!"
+msgstr ""
+
+#: src/stored/btape.c:1072
+msgid ""
+"\n"
+"Now the important part, I am going to attempt to append to the tape.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1079
+msgid ""
+"Done appending, there should be no I/O errors\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1080
+msgid "Doing Bacula scan of blocks:\n"
+msgstr ""
+
+#: src/stored/btape.c:1082
+msgid "End scanning the tape.\n"
+msgstr ""
+
+#: src/stored/btape.c:1083 src/stored/btape.c:1308
+#, c-format
+msgid "We should be in file 4. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1108
+msgid ""
+"\n"
+"Autochanger enabled, but no name or no command device specified.\n"
+msgstr ""
+
+#: src/stored/btape.c:1112
+msgid ""
+"\n"
+"Ah, I see you have an autochanger configured.\n"
+"To test the autochanger you must have a blank tape\n"
+" that I can write on in Slot 1.\n"
+msgstr ""
+
+#: src/stored/btape.c:1115
+msgid ""
+"\n"
+"Do you wish to continue with the Autochanger test? (y/n): "
+msgstr ""
+
+#: src/stored/btape.c:1122
+msgid ""
+"\n"
+"\n"
+"=== Autochanger test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1131
+msgid "3301 Issuing autochanger \"loaded\" command.\n"
+msgstr ""
+
+#: src/stored/btape.c:1140
+#, c-format
+msgid "3991 Bad autochanger command: %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1141
+#, c-format
+msgid "3991 result=\"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1145
+#, c-format
+msgid "Slot %d loaded. I am going to unload it.\n"
+msgstr ""
+
+#: src/stored/btape.c:1147
+msgid "Nothing loaded in the drive. OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:1155
+#, c-format
+msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
+msgstr ""
+
+#: src/stored/btape.c:1160
+#, c-format
+msgid "unload status=%s %d\n"
+msgstr ""
+
+#: src/stored/btape.c:1160
+msgid "Bad"
+msgstr ""
+
+#: src/stored/btape.c:1163
+#, c-format
+msgid "3992 Bad autochanger command: %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1164
+#, c-format
+msgid "3992 result=\"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1174
+#, c-format
+msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
+msgstr ""
+
+#: src/stored/btape.c:1182
+#, c-format
+msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:1186
+#, c-format
+msgid "3993 Bad autochanger command: %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1187
+#, c-format
+msgid "3993 result=\"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1202
+msgid ""
+"\n"
+"The test failed, probably because you need to put\n"
+"a longer sleep time in the mtx-script in the load) case.\n"
+"Adding a 30 second sleep and trying again ...\n"
+msgstr ""
+
+#: src/stored/btape.c:1215
+#, c-format
+msgid "Wrote EOF to %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1219
+#, c-format
+msgid ""
+"\n"
+"The test worked this time. Please add:\n"
+"\n"
+"   sleep %d\n"
+"\n"
+"to your mtx-changer script in the load) case.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1224
+msgid ""
+"\n"
+"The test autochanger worked!!\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1235
+msgid "You must correct this error or the Autochanger will not work.\n"
+msgstr ""
+
+#: src/stored/btape.c:1253
+msgid ""
+"\n"
+"\n"
+"=== Forward space files test ===\n"
+"\n"
+"This test is essential to Bacula.\n"
+"\n"
+"I'm going to write five files then test forward spacing\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1278
+msgid "Now forward spacing 1 file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1280 src/stored/btape.c:1292 src/stored/btape.c:1305
+#: src/stored/btape.c:1323 src/stored/btape.c:1492
+#, c-format
+msgid "Bad status from fsr. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1283
+#, c-format
+msgid "We should be in file 1. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1290
+msgid "Now forward spacing 2 files.\n"
+msgstr ""
+
+#: src/stored/btape.c:1303
+msgid "Now forward spacing 4 files.\n"
+msgstr ""
+
+#: src/stored/btape.c:1315
+msgid ""
+"The test worked this time. Please add:\n"
+"\n"
+"   Fast Forward Space File = no\n"
+"\n"
+"to your Device resource for this drive.\n"
+msgstr ""
+
+#: src/stored/btape.c:1321
+msgid "Now forward spacing 1 more file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1325
+#, c-format
+msgid "We should be in file 5. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1330
+msgid ""
+"\n"
+"=== End Forward space files test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1334
+msgid ""
+"\n"
+"The forward space file test failed.\n"
+msgstr ""
+
+#: src/stored/btape.c:1336
+msgid ""
+"You have Fast Forward Space File enabled.\n"
+"I am turning it off then retrying the test.\n"
+msgstr ""
+
+#: src/stored/btape.c:1342
+msgid ""
+"You must correct this error or Bacula will not work.\n"
+"Some systems, e.g. OpenBSD, require you to set\n"
+"   Use MTIOCGET= no\n"
+"in your device resource. Use with caution.\n"
+msgstr ""
+
+#: src/stored/btape.c:1374
+msgid ""
+"\n"
+"Append test failed. Attempting again.\n"
+"Setting \"Hardware End of Medium = no\n"
+"    and \"Fast Forward Space File = no\n"
+"and retrying append test.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1382
+msgid ""
+"\n"
+"\n"
+"It looks like the test worked this time, please add:\n"
+"\n"
+"    Hardware End of Medium = No\n"
+"\n"
+"    Fast Forward Space File = No\n"
+"to your Device resource in the Storage conf file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1389
+msgid ""
+"\n"
+"\n"
+"That appears *NOT* to have corrected the problem.\n"
+msgstr ""
+
+#: src/stored/btape.c:1394
+msgid ""
+"\n"
+"\n"
+"It looks like the append failed. Attempting again.\n"
+"Setting \"BSF at EOM = yes\" and retrying append test.\n"
+msgstr ""
+
+#: src/stored/btape.c:1399
+msgid ""
+"\n"
+"\n"
+"It looks like the test worked this time, please add:\n"
+"\n"
+"    Hardware End of Medium = No\n"
+"    Fast Forward Space File = No\n"
+"    BSF at EOM = yes\n"
+"\n"
+"to your Device resource in the Storage conf file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1410
+msgid ""
+"\n"
+"Append test failed.\n"
+"\n"
+"\n"
+"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
+"Unable to correct the problem. You MUST fix this\n"
+"problem before Bacula can use your tape drive correctly\n"
+"\n"
+"Perhaps running Bacula in fixed block mode will work.\n"
+"Do so by setting:\n"
+"\n"
+"Minimum Block Size = nnn\n"
+"Maximum Block Size = nnn\n"
+"\n"
+"in your Storage daemon's Device definition.\n"
+"nnn must match your tape driver's block size, which\n"
+"can be determined by reading your tape manufacturers\n"
+"information, and the information on your kernel dirver.\n"
+"Fixed block sizes, however, are not normally an ideal solution.\n"
+"\n"
+"Some systems, e.g. OpenBSD, require you to set\n"
+"   Use MTIOCGET= no\n"
+"in your device resource. Use with caution.\n"
+msgstr ""
+
+#: src/stored/btape.c:1431
+msgid ""
+"\n"
+"The above Bacula scan should have output identical to what follows.\n"
+"Please double check it ...\n"
+"=== Sample correct output ===\n"
+"1 block of 64448 bytes in file 1\n"
+"End of File mark.\n"
+"2 blocks of 64448 bytes in file 2\n"
+"End of File mark.\n"
+"3 blocks of 64448 bytes in file 3\n"
+"End of File mark.\n"
+"1 block of 64448 bytes in file 4\n"
+"End of File mark.\n"
+"Total files=4, blocks=7, bytes = 451,136\n"
+"=== End sample correct output ===\n"
+"\n"
+"If the above scan output is not identical to the\n"
+"sample output, you MUST correct the problem\n"
+"or Bacula will not be able to write multiple Jobs to \n"
+"the tape.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1470
+#, c-format
+msgid "Bad status from fsf. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1474
+msgid "Forward spaced 1 file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1477
+#, c-format
+msgid "Forward spaced %d files.\n"
+msgstr ""
+
+#: src/stored/btape.c:1496
+msgid "Forward spaced 1 record.\n"
+msgstr ""
+
+#: src/stored/btape.c:1499
+#, c-format
+msgid "Forward spaced %d records.\n"
+msgstr ""
+
+#: src/stored/btape.c:1533
+#, c-format
+msgid "Wrote one record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:1535
+msgid "Wrote block to device.\n"
+msgstr ""
+
+#: src/stored/btape.c:1550
+msgid "Enter length to read: "
+msgstr ""
+
+#: src/stored/btape.c:1555
+msgid "Bad length entered, using default of 1024 bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:1564
+#, c-format
+msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1587 src/stored/btape.c:1636
+#, c-format
+msgid "End of tape\n"
+msgstr ""
+
+#: src/stored/btape.c:1592
+#, c-format
+msgid "Starting scan at file %u\n"
+msgstr ""
+
+#: src/stored/btape.c:1597 src/stored/dev.c:1234
+#, c-format
+msgid "read error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/btape.c:1599
+#, c-format
+msgid "Bad status from read %d. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1602 src/stored/btape.c:1616 src/stored/btape.c:1679
+#: src/stored/btape.c:1691 src/stored/btape.c:1704 src/stored/btape.c:1720
+#, c-format
+msgid "1 block of %d bytes in file %d\n"
+msgstr ""
+
+#: src/stored/btape.c:1605 src/stored/btape.c:1619 src/stored/btape.c:1682
+#: src/stored/btape.c:1694 src/stored/btape.c:1707 src/stored/btape.c:1723
+#, c-format
+msgid "%d blocks of %d bytes in file %d\n"
+msgstr ""
+
+#: src/stored/btape.c:1627 src/stored/btape.c:1698
+#, c-format
+msgid "End of File mark.\n"
+msgstr ""
+
+#: src/stored/btape.c:1648 src/stored/btape.c:1751
+#, c-format
+msgid "Total files=%d, blocks=%d, bytes = %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1711
+#, c-format
+msgid "Short block read.\n"
+msgstr ""
+
+#: src/stored/btape.c:1714
+#, c-format
+msgid "Error reading block. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1738
+#, c-format
+msgid ""
+"Blk_block: %u dev_blk=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%"
+"s rlen=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:1760
+#, c-format
+msgid "Device status: %u. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1788
+msgid ""
+"\n"
+"This command simulates Bacula writing to a tape.\n"
+"It requires either one or two blank tapes, which it\n"
+"will label and write.\n"
+"\n"
+"If you have an autochanger configured, it will use\n"
+"the tapes that are in slots 1 and 2, otherwise, you will\n"
+"be prompted to insert the tapes when necessary.\n"
+"\n"
+"It will print a status approximately\n"
+"every 322 MB, and write an EOF every 3.2 GB.  If you have\n"
+"selected the simple test option, after writing the first tape\n"
+"it will rewind it and re-read the last block written.\n"
+"\n"
+"If you have selected the multiple tape test, when the first tape\n"
+"fills, it will ask for a second, and after writing a few more \n"
+"blocks, it will stop.  Then it will begin re-reading the\n"
+"two tapes.\n"
+"\n"
+"This may take a long time -- hours! ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1805
+msgid ""
+"Do you want to run the simplified test (s) with one tape\n"
+"or the complete multiple tape (m) test: (s/m) "
+msgstr ""
+
+#: src/stored/btape.c:1808
+msgid "Simple test (single tape) selected.\n"
+msgstr ""
+
+#: src/stored/btape.c:1811
+msgid "Multiple tape test selected.\n"
+msgstr ""
+
+#: src/stored/btape.c:1827
+msgid "Rewind failed.\n"
+msgstr ""
+
+#: src/stored/btape.c:1830
+msgid "Write EOF failed.\n"
+msgstr ""
+
+#: src/stored/btape.c:1857
+msgid "Wrote Start of Session label.\n"
+msgstr ""
+
+#: src/stored/btape.c:1886
+msgid "Begin writing Bacula records to tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:1888
+msgid "Begin writing Bacula records to first tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:1928
+#, c-format
+msgid "Wrote blk_block=%u, dev_blk_num=%u VolBytes=%s rate=%.1f KB/s\n"
+msgstr ""
+
+#: src/stored/btape.c:1935
+msgid "Flush block, write EOF\n"
+msgstr ""
+
+#: src/stored/btape.c:1946
+msgid "Not OK\n"
+msgstr ""
+
+#: src/stored/btape.c:1974
+msgid "Set ok=false after write_block_to_device.\n"
+msgstr ""
+
+#: src/stored/btape.c:1977
+msgid "Wrote End of Session label.\n"
+msgstr ""
+
+#: src/stored/btape.c:2001
+#, c-format
+msgid "Wrote state file last_block_num1=%d last_block_num2=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2005
+#, c-format
+msgid "Could not create state file: %s ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2010
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:2014
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:2053
+msgid ""
+"\n"
+"The state file level has changed. You must redo\n"
+"the fill command.\n"
+msgstr ""
+
+#: src/stored/btape.c:2059
+#, c-format
+msgid ""
+"\n"
+"Could not find the state file: %s ERR=%s\n"
+"You must redo the fill command.\n"
+msgstr ""
+
+#: src/stored/btape.c:2101
+msgid "Mount first tape. Press enter when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2125
+msgid "Reading the first 10000 records.\n"
+msgstr ""
+
+#: src/stored/btape.c:2128 src/stored/btape.c:2195
+#, c-format
+msgid "Reposition from %u:%u to %u:%u\n"
+msgstr ""
+
+#: src/stored/btape.c:2131 src/stored/btape.c:2182 src/stored/btape.c:2198
+#, c-format
+msgid "Reposition error. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2134
+#, c-format
+msgid "Reading block %u.\n"
+msgstr ""
+
+#: src/stored/btape.c:2136 src/stored/btape.c:2187 src/stored/btape.c:2203
+#, c-format
+msgid "Error reading block: ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2141
+msgid ""
+"\n"
+"The last block on the tape matches. Test succeeded.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2143
+msgid ""
+"\n"
+"The last block of the first tape matches.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2168
+msgid "Mount second tape. Press enter when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2180
+#, c-format
+msgid "Reposition from %u:%u to 0:1\n"
+msgstr ""
+
+#: src/stored/btape.c:2185 src/stored/btape.c:2201
+#, c-format
+msgid "Reading block %d.\n"
+msgstr ""
+
+#: src/stored/btape.c:2191
+msgid ""
+"\n"
+"The first block on the second tape matches.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2207
+msgid ""
+"\n"
+"The last block on the second tape matches. Test succeeded.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2221
+#, c-format
+msgid "ERROR! device at %d:%d count=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2227
+#, c-format
+msgid "1000 records read now at %d:%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2250 src/stored/btape.c:2261 src/stored/btape.c:2309
+msgid "Last block written"
+msgstr ""
+
+#: src/stored/btape.c:2252 src/stored/btape.c:2262
+msgid "Block read back"
+msgstr ""
+
+#: src/stored/btape.c:2253
+#, c-format
+msgid ""
+"\n"
+"\n"
+"The blocks differ at byte %u\n"
+msgstr ""
+
+#: src/stored/btape.c:2254
+msgid ""
+"\n"
+"\n"
+"!!!! The last block written and the block\n"
+"that was read back differ. The test FAILED !!!!\n"
+"This must be corrected before you use Bacula\n"
+"to write multi-tape Volumes.!!!!\n"
+msgstr ""
+
+#: src/stored/btape.c:2293
+#, c-format
+msgid "Last block at: %u:%u this_dev_block_num=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2307
+#, c-format
+msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
+msgstr ""
+
+#: src/stored/btape.c:2311
+msgid "Block not written"
+msgstr ""
+
+#: src/stored/btape.c:2326
+#, c-format
+msgid "End of tape %d:%d. VolumeCapacity=%s. Write rate = %.1f KB/s\n"
+msgstr ""
+
+#: src/stored/btape.c:2376
+msgid "Test writing blocks of 64512 bytes to tape.\n"
+msgstr ""
+
+#: src/stored/btape.c:2378
+msgid "How many blocks do you want to write? (1000): "
+msgstr ""
+
+#: src/stored/btape.c:2393
+#, c-format
+msgid "Begin writing %d Bacula blocks to tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:2445
+#, c-format
+msgid "Begin writing raw blocks of %u bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:2465
+#, c-format
+msgid "Write failed at block %u. stat=%d ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2495
+#, c-format
+msgid "Begin writing Bacula blocks of %u bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:2514
+#, c-format
+msgid "Write failed at block %u.\n"
+msgstr ""
+
+#: src/stored/btape.c:2521
+msgid "autochanger"
+msgstr ""
+
+#: src/stored/btape.c:2521
+msgid "test autochanger"
+msgstr ""
+
+#: src/stored/btape.c:2522
+msgid "bsf"
+msgstr ""
+
+#: src/stored/btape.c:2522
+msgid "backspace file"
+msgstr ""
+
+#: src/stored/btape.c:2523
+msgid "bsr"
+msgstr ""
+
+#: src/stored/btape.c:2523
+msgid "backspace record"
+msgstr ""
+
+#: src/stored/btape.c:2524
+msgid "bfill"
+msgstr ""
+
+#: src/stored/btape.c:2524
+msgid "fill tape using Bacula writes"
+msgstr ""
+
+#: src/stored/btape.c:2525
+msgid "cap"
+msgstr ""
+
+#: src/stored/btape.c:2525
+msgid "list device capabilities"
+msgstr ""
+
+#: src/stored/btape.c:2526
+msgid "clear"
+msgstr ""
+
+#: src/stored/btape.c:2526
+msgid "clear tape errors"
+msgstr ""
+
+#: src/stored/btape.c:2527
+msgid "eod"
+msgstr ""
+
+#: src/stored/btape.c:2527
+msgid "go to end of Bacula data for append"
+msgstr ""
+
+#: src/stored/btape.c:2528
+msgid "eom"
+msgstr ""
+
+#: src/stored/btape.c:2528
+msgid "go to the physical end of medium"
+msgstr ""
+
+#: src/stored/btape.c:2529
+msgid "fill"
+msgstr ""
+
+#: src/stored/btape.c:2529
+msgid "fill tape, write onto second volume"
+msgstr ""
+
+#: src/stored/btape.c:2530
+msgid "unfill"
+msgstr ""
+
+#: src/stored/btape.c:2530
+msgid "read filled tape"
+msgstr ""
+
+#: src/stored/btape.c:2531
+msgid "fsf"
+msgstr ""
+
+#: src/stored/btape.c:2531
+msgid "forward space a file"
+msgstr ""
+
+#: src/stored/btape.c:2532
+msgid "fsr"
+msgstr ""
+
+#: src/stored/btape.c:2532
+msgid "forward space a record"
+msgstr ""
+
+#: src/stored/btape.c:2534
+msgid "write a Bacula label to the tape"
+msgstr ""
+
+#: src/stored/btape.c:2535
+msgid "load"
+msgstr ""
+
+#: src/stored/btape.c:2535
+msgid "load a tape"
+msgstr ""
+
+#: src/stored/btape.c:2536
+msgid "quit btape"
+msgstr ""
+
+#: src/stored/btape.c:2537
+msgid "rawfill"
+msgstr ""
+
+#: src/stored/btape.c:2537
+msgid "use write() to fill tape"
+msgstr ""
+
+#: src/stored/btape.c:2538
+msgid "readlabel"
+msgstr ""
+
+#: src/stored/btape.c:2538
+msgid "read and print the Bacula tape label"
+msgstr ""
+
+#: src/stored/btape.c:2539
+msgid "rectest"
+msgstr ""
+
+#: src/stored/btape.c:2539
+msgid "test record handling functions"
+msgstr ""
+
+#: src/stored/btape.c:2540
+msgid "rewind"
+msgstr ""
+
+#: src/stored/btape.c:2540
+msgid "rewind the tape"
+msgstr ""
+
+#: src/stored/btape.c:2541
+msgid "read() tape block by block to EOT and report"
+msgstr ""
+
+#: src/stored/btape.c:2542
+msgid "scanblocks"
+msgstr ""
+
+#: src/stored/btape.c:2542
+msgid "Bacula read block by block to EOT and report"
+msgstr ""
+
+#: src/stored/btape.c:2543
+msgid "print tape status"
+msgstr ""
+
+#: src/stored/btape.c:2544
+msgid "test"
+msgstr ""
+
+#: src/stored/btape.c:2544
+msgid "General test Bacula tape functions"
+msgstr ""
+
+#: src/stored/btape.c:2545
+msgid "weof"
+msgstr ""
+
+#: src/stored/btape.c:2545
+msgid "write an EOF on the tape"
+msgstr ""
+
+#: src/stored/btape.c:2546
+msgid "wr"
+msgstr ""
+
+#: src/stored/btape.c:2546
+msgid "write a single Bacula block"
+msgstr ""
+
+#: src/stored/btape.c:2547
+msgid "rr"
+msgstr ""
+
+#: src/stored/btape.c:2547
+msgid "read a single record"
+msgstr ""
+
+#: src/stored/btape.c:2548
+msgid "qfill"
+msgstr ""
+
+#: src/stored/btape.c:2548
+msgid "quick fill command"
+msgstr ""
+
+#: src/stored/btape.c:2569
+#, c-format
+msgid "%s is an illegal command\n"
+msgstr ""
+
+#: src/stored/btape.c:2579
+#, c-format
+msgid "Interactive commands:\n"
+msgstr ""
+
+#: src/stored/btape.c:2589
+#, c-format
+msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: btape <options> <device_name>\n"
+"       -b <file>   specify bootstrap file\n"
+"       -c <file>   set configuration file to file\n"
+"       -d <nn>     set debug level to nn\n"
+"       -p          proceed inspite of I/O errors\n"
+"       -s          turn off signals\n"
+"       -v          be verbose\n"
+"       -?          print this message.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2680
+#, c-format
+msgid "Mount second Volume on device %s and press return when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2707
+#, c-format
+msgid "Mount blank Volume on device %s and press return when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2725
+#, c-format
+msgid "End of Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/btape.c:2737
+#, c-format
+msgid "Read block=%u, VolBytes=%s rate=%.1f KB/s\n"
+msgstr ""
+
+#: src/stored/btape.c:2752 src/stored/mount.c:493
+#, c-format
+msgid "Cannot open Dev=%s, Vol=%s\n"
+msgstr ""
+
+#: src/stored/butil.c:46
+msgid "Nohdr,"
+msgstr ""
+
+#: src/stored/butil.c:49
+msgid "partial,"
+msgstr ""
+
+#: src/stored/butil.c:52
+msgid "empty,"
+msgstr ""
+
+#: src/stored/butil.c:55
+msgid "Nomatch,"
+msgstr ""
+
+#: src/stored/butil.c:58
+msgid "cont,"
+msgstr ""
+
+#: src/stored/butil.c:128
+msgid "Volume name or names is too long. Please use a .bsr file.\n"
+msgstr ""
+
+#: src/stored/butil.c:148
+#, c-format
+msgid "Cannot find device \"%s\" in config file %s.\n"
+msgstr ""
+
+#: src/stored/butil.c:155
+#, c-format
+msgid "Cannot init device %s\n"
+msgstr ""
+
+#: src/stored/butil.c:174
+#, c-format
+msgid "Cannot open %s\n"
+msgstr ""
+
+#: src/stored/butil.c:253
+#, c-format
+msgid "Could not find device \"%s\" in config file %s.\n"
+msgstr ""
+
+#: src/stored/butil.c:258
+#, c-format
+msgid "Using device: \"%s\" for reading.\n"
+msgstr ""
+
+#: src/stored/butil.c:261
+#, c-format
+msgid "Using device: \"%s\" for writing.\n"
+msgstr ""
+
+#: src/stored/butil.c:277
+msgid "Unexpected End of Data\n"
+msgstr ""
+
+#: src/stored/butil.c:279
+msgid "Unexpected End of Tape\n"
+msgstr ""
+
+#: src/stored/butil.c:281
+msgid "Unexpected End of File\n"
+msgstr ""
+
+#: src/stored/butil.c:283
+msgid "Tape Door is Open\n"
+msgstr ""
+
+#: src/stored/butil.c:285
+msgid "Unexpected Tape is Off-line\n"
+msgstr ""
+
+#: src/stored/dev.c:110
+#, c-format
+msgid "Unable to stat device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:125
+#, c-format
+msgid ""
+"%s is an unknown device type. Must be tape or directory\n"
+" or have RequiresMount=yes for DVD. st_mode=%x\n"
+msgstr ""
+
+#: src/stored/dev.c:183
+#, c-format
+msgid "Unable to stat mount point %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:188
+msgid ""
+"Mount and unmount commands must defined for a device which requires mount.\n"
+msgstr ""
+
+#: src/stored/dev.c:191
+msgid "Write part command must be defined for a device which requires mount.\n"
+msgstr ""
+
+#: src/stored/dev.c:197
+#, c-format
+msgid "Block size %u on device %s is too large, using default %u\n"
+msgstr ""
+
+#: src/stored/dev.c:202
+#, c-format
+msgid "Max block size %u not multiple of device %s block size.\n"
+msgstr ""
+
+#: src/stored/dev.c:218 src/stored/dev.c:224
+#, c-format
+msgid "Unable to init cond variable: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:310
+msgid "Illegal mode given to open dev.\n"
+msgstr ""
+
+#: src/stored/dev.c:372 src/stored/device.c:302
+#, c-format
+msgid "Unable to open device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:392
+#, c-format
+msgid "fcntl error. ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:430 src/stored/dev.c:489
+#, c-format
+msgid "Could not open file device %s. No Volume name given.\n"
+msgstr ""
+
+#: src/stored/dev.c:455 src/stored/dev.c:569
+#, c-format
+msgid "Could not open: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:514
+#, c-format
+msgid ""
+"The media in the device %s is not empty, please blank it before writing "
+"anything to it.\n"
+msgstr ""
+
+#: src/stored/dev.c:530
+#, c-format
+msgid "There is no valid media in the device %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:537
+#, c-format
+msgid "Could not mount device %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:595
+#, c-format
+msgid "Could not fstat: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:648
+#, c-format
+msgid "Bad call to rewind_dev. Device %s not open\n"
+msgstr ""
+
+#: src/stored/dev.c:677
+#, c-format
+msgid "Rewind error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:687 src/stored/dev.c:800 src/stored/dev.c:937
+#: src/stored/dev.c:1462
+#, c-format
+msgid "lseek_dev error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:727
+msgid "unknown blocked code"
+msgstr ""
+
+#: src/stored/dev.c:770
+#, c-format
+msgid "Bad call to eod_dev. Device %s not open\n"
+msgstr ""
+
+#: src/stored/dev.c:836
+#, c-format
+msgid "ioctl MTEOM error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:844 src/stored/dev.c:977
+#, c-format
+msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:923
+msgid "Bad device call. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:936
+#, c-format
+msgid "Seek error: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:972
+msgid " Bacula status:"
+msgstr ""
+
+#: src/stored/dev.c:973 src/stored/dev.c:1022 src/stored/dev.c:1024
+#, c-format
+msgid " file=%d block=%d\n"
+msgstr ""
+
+#: src/stored/dev.c:981
+msgid " Device status:"
+msgstr ""
+
+#: src/stored/dev.c:1046
+msgid "Bad call to load_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1057 src/stored/dev.c:1070
+#, c-format
+msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1089
+msgid "Bad call to offline_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1112
+#, c-format
+msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1153
+msgid "Bad call to fsf_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1163 src/stored/dev.c:1284
+#, c-format
+msgid "Device %s at End of Tape.\n"
+msgstr ""
+
+#: src/stored/dev.c:1188 src/stored/dev.c:1264
+#, c-format
+msgid "ioctl MTFSF error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1313
+msgid "Bad call to bsf_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1319
+#, c-format
+msgid "Device %s cannot BSF because it is not a tape.\n"
+msgstr ""
+
+#: src/stored/dev.c:1334
+#, c-format
+msgid "ioctl MTBSF error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1354
+msgid "Bad call to fsr. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1363
+#, c-format
+msgid "ioctl MTFSR not permitted on %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1391
+#, c-format
+msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1411
+msgid "Bad call to bsr_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1421
+#, c-format
+msgid "ioctl MTBSR not permitted on %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1434
+#, c-format
+msgid "ioctl MTBSR error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1451
+msgid "Bad call to reposition_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1519
+msgid "Bad call to weof_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1529
+msgid "Attempt to WEOF on non-appendable Volume\n"
+msgstr ""
+
+#: src/stored/dev.c:1546
+#, c-format
+msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1588
+msgid "Got ENOTTY on read/write!\n"
+msgstr ""
+
+#: src/stored/dev.c:1635
+#, c-format
+msgid "unknown func code %d"
+msgstr ""
+
+#: src/stored/dev.c:1641
+#, c-format
+msgid "I/O function \"%s\" not supported on this device.\n"
+msgstr ""
+
+#: src/stored/dev.c:1779 src/stored/dvd.c:668
+#, c-format
+msgid "Unable to truncate device %s. ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:1818
+msgid "Bad call to term_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/device.c:105
+#, c-format
+msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
+msgstr ""
+
+#: src/stored/device.c:119
+#, c-format
+msgid "New volume \"%s\" mounted on device %s at %s.\n"
+msgstr ""
+
+#: src/stored/device.c:131
+#, c-format
+msgid "write_block_to_device Volume label failed. ERR=%s"
+msgstr ""
+
+#: src/stored/device.c:168
+#, c-format
+msgid "write_block_to_device overflow block failed. ERR=%s"
+msgstr ""
+
+#: src/stored/device.c:304
+#, c-format
+msgid "Unable to open archive %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/device.c:328
+msgid "Bad call to force_close_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/device.c:346
+#, c-format
+msgid "Device write lock failure. ERR=%s\n"
+msgstr ""
+
+#: src/stored/device.c:354
+#, c-format
+msgid "Device write unlock failure. ERR=%s\n"
+msgstr ""
+
+#: src/stored/device.c:373
+#, c-format
+msgid "pthread_cond_wait failure. ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:140
+msgid "Connection request failed.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:149
+#, c-format
+msgid "Invalid connection. Len=%d\n"
+msgstr ""
+
+#: src/stored/dircmd.c:241
+#, c-format
+msgid "3991 Bad setdebug command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:262
+#, c-format
+msgid "3902 Job %s not found.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:279
+#, c-format
+msgid "3000 Job %s marked to be canceled.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:283
+msgid "3903 Error scanning cancel command.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:352 src/stored/dircmd.c:648 src/stored/dircmd.c:712
+#: src/stored/dircmd.c:770 src/stored/dircmd.c:822 src/stored/dircmd.c:860
+#, c-format
+msgid "3999 Device \"%s\" not found\n"
+msgstr ""
+
+#: src/stored/dircmd.c:357
+#, c-format
+msgid "3903 Error scanning label command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:401
+#, c-format
+msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
+msgstr ""
+
+#: src/stored/dircmd.c:407
+msgid "3921 Wrong volume mounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:411
+msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:419 src/stored/dircmd.c:428
+#, c-format
+msgid "3912 Failed to label Volume: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:431
+#, c-format
+msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
+msgstr ""
+
+#: src/stored/dircmd.c:464
+#, c-format
+msgid "3001 Mounted Volume: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:468 src/stored/dircmd.c:896
+#, c-format
+msgid ""
+"3902 Cannot mount Volume on Storage Device %s because:\n"
+"%s"
+msgstr ""
+
+#: src/stored/dircmd.c:491 src/stored/reserve.c:518
+#, c-format
+msgid ""
+"\n"
+"     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:512 src/stored/reserve.c:514
+#, c-format
+msgid ""
+"\n"
+"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
+"does not exist.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:568 src/stored/dircmd.c:616
+#, c-format
+msgid "3901 open device failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:583 src/stored/dircmd.c:607
+#, c-format
+msgid "3001 Device %s is mounted with Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/dircmd.c:586 src/stored/dircmd.c:610 src/stored/dircmd.c:625
+#, c-format
+msgid ""
+"3905 Device %s open but no Bacula volume is mounted.\n"
+"If this is not a blank tape, try unmounting and remounting the Volume.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:595
+#, c-format
+msgid "3001 Device %s is doing acquire.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:600 src/stored/dircmd.c:690
+#, c-format
+msgid "3903 Device %s is being labeled.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:622
+#, c-format
+msgid "3001 Device %s is already mounted with Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/dircmd.c:631
+#, c-format
+msgid "3002 Device %s is mounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:634
+#, c-format
+msgid "3907 %s"
+msgstr ""
+
+#: src/stored/dircmd.c:637
+#, c-format
+msgid "3906 File device %s is always mounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:643
+#, c-format
+msgid "3905 Bizarre wait state %d\n"
+msgstr ""
+
+#: src/stored/dircmd.c:652
+#, c-format
+msgid "3909 Error scanning mount command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:673
+#, c-format
+msgid "3901 Device %s is already unmounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:682
+#, c-format
+msgid "3001 Device %s unmounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:686
+#, c-format
+msgid "3902 Device %s is busy in acquire.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:707
+#, c-format
+msgid "3002 Device %s unmounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:717
+#, c-format
+msgid "3907 Error scanning unmount command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:742
+#, c-format
+msgid "3911 Device %s already released.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:749
+#, c-format
+msgid "3912 Device %s waiting for mount.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:753
+#, c-format
+msgid "3913 Device %s is busy in acquire.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:757
+#, c-format
+msgid "3914 Device %s is being labeled.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:765
+#, c-format
+msgid "3012 Device %s released.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:775
+#, c-format
+msgid "3917 Error scanning release command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:808
+#, c-format
+msgid "3995 Device %s is not an autochanger.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:826
+#, c-format
+msgid "3908 Error scanning autocharger list/slots command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:864
+#, c-format
+msgid "3909 Error scanning readlabel command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:892
+#, c-format
+msgid "3001 Volume=%s Slot=%d\n"
+msgstr ""
+
+#: src/stored/dircmd.c:921
+#, c-format
+msgid "3910 Unable to open device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:931
+#, c-format
+msgid "3911 Device %s is busy reading.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:934
+#, c-format
+msgid "3912 Device %s is busy with %d writer(s).\n"
+msgstr ""
+
+#: src/stored/fd_cmds.c:340
+msgid "Error parsing bootstrap file.\n"
+msgstr ""
+
+#: src/stored/job.c:79
+#, c-format
+msgid "Bad Job Command from Director: %s\n"
+msgstr ""
+
+#: src/stored/job.c:189
+#, c-format
+msgid "Job name not found: %s\n"
+msgstr ""
+
+#: src/stored/job.c:200
+#, c-format
+msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
+msgstr ""
+
+#: src/stored/job.c:211
+msgid "Unable to authenticate File daemon\n"
+msgstr ""
+
+#: src/stored/job.c:338
+msgid "In free_jcr(), but still attached to device!!!!\n"
+msgstr ""
+
+#: src/stored/label.c:74
+msgid "BAD call to read_dev_volume_label\n"
+msgstr ""
+
+#: src/stored/label.c:79 src/stored/label.c:120 src/stored/label.c:208
+#, c-format
+msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
+msgstr ""
+
+#: src/stored/label.c:86 src/stored/label.c:123 src/stored/label.c:195
+#, c-format
+msgid "Too many tries: %s"
+msgstr ""
+
+#: src/stored/label.c:102
+#, c-format
+msgid "Couldn't rewind device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:140
+#, c-format
+msgid ""
+"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
+msgstr ""
+
+#: src/stored/label.c:145
+msgid "Could not read Volume label from block.\n"
+msgstr ""
+
+#: src/stored/label.c:148
+#, c-format
+msgid "Could not unserialize Volume label: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:153
+#, c-format
+msgid "Volume Header Id bad: %s\n"
+msgstr ""
+
+#: src/stored/label.c:180
+#, c-format
+msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
+msgstr ""
+
+#: src/stored/label.c:191
+#, c-format
+msgid "Volume on %s has bad Bacula label type: %x\n"
+msgstr ""
+
+#: src/stored/label.c:272
+#, c-format
+msgid "Cannot write Volume label to block for device %s\n"
+msgstr ""
+
+#: src/stored/label.c:393
+#, c-format
+msgid "Rewind error on device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:398
+#, c-format
+msgid "Truncate error on device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:420
+#, c-format
+msgid "Unable to write device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:448
+#, c-format
+msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
+msgstr ""
+
+#: src/stored/label.c:451
+#, c-format
+msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
+msgstr ""
+
+#: src/stored/label.c:648
+#, c-format
+msgid "Bad session label = %d\n"
+msgstr ""
+
+#: src/stored/label.c:666 src/stored/label.c:673
+#, c-format
+msgid "Error writing Session label to %s: %s\n"
+msgstr ""
+
+#: src/stored/label.c:707
+#, c-format
+msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
+msgstr ""
+
+#: src/stored/label.c:834
+#, c-format
+msgid "Unknown %d"
+msgstr ""
+
+#: src/stored/label.c:838
+#, c-format
+msgid ""
+"\n"
+"Volume Label:\n"
+"Id                : %sVerNo             : %d\n"
+"VolName           : %s\n"
+"PrevVolName       : %s\n"
+"VolFile           : %d\n"
+"LabelType         : %s\n"
+"LabelSize         : %d\n"
+"PoolName          : %s\n"
+"MediaType         : %s\n"
+"PoolType          : %s\n"
+"HostName          : %s\n"
+msgstr ""
+
+#: src/stored/label.c:860
+#, c-format
+msgid "Date label written: %s\n"
+msgstr ""
+
+#: src/stored/label.c:866
+#, c-format
+msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
+msgstr ""
+
+#: src/stored/label.c:886
+#, c-format
+msgid ""
+"\n"
+"%s Record:\n"
+"JobId             : %d\n"
+"VerNum            : %d\n"
+"PoolName          : %s\n"
+"PoolType          : %s\n"
+"JobName           : %s\n"
+"ClientName        : %s\n"
+msgstr ""
+
+#: src/stored/label.c:899
+#, c-format
+msgid ""
+"Job (unique name) : %s\n"
+"FileSet           : %s\n"
+"JobType           : %c\n"
+"JobLevel          : %c\n"
+msgstr ""
+
+#: src/stored/label.c:908
+#, c-format
+msgid ""
+"JobFiles          : %s\n"
+"JobBytes          : %s\n"
+"StartBlock        : %s\n"
+"EndBlock          : %s\n"
+"StartFile         : %s\n"
+"EndFile           : %s\n"
+"JobErrors         : %s\n"
+"JobStatus         : %c\n"
+msgstr ""
+
+#: src/stored/label.c:929
+#, c-format
+msgid "Date written      : %s\n"
+msgstr ""
+
+#: src/stored/label.c:934
+#, c-format
+msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
+msgstr ""
+
+#: src/stored/label.c:953
+msgid "Fresh Volume"
+msgstr ""
+
+#: src/stored/label.c:965 src/stored/read_record.c:335
+msgid "End of Media"
+msgstr ""
+
+#: src/stored/label.c:968
+msgid "End of Tape"
+msgstr ""
+
+#: src/stored/label.c:988 src/stored/label.c:996 src/stored/label.c:1029
+#, c-format
+msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
+msgstr ""
+
+#: src/stored/label.c:993
+msgid "End of physical tape.\n"
+msgstr ""
+
+#: src/stored/label.c:1008 src/stored/label.c:1017
+#, c-format
+msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
+msgstr ""
+
+#: src/stored/label.c:1010
+#, c-format
+msgid "   Job=%s Date=%s Level=%c Type=%c\n"
+msgstr ""
+
+#: src/stored/label.c:1019
+#, c-format
+msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
+msgstr ""
+
+#: src/stored/mount.c:197 src/stored/mount.c:294
+#, c-format
+msgid "Volume \"%s\" not on device %s.\n"
+msgstr ""
+
+#: src/stored/mount.c:230
+#, c-format
+msgid ""
+"Director wanted Volume \"%s\".\n"
+"    Current Volume \"%s\" not acceptable because:\n"
+"    %s"
+msgstr ""
+
+#: src/stored/mount.c:284
+#, c-format
+msgid "Labeled new Volume \"%s\" on device %s.\n"
+msgstr ""
+
+#: src/stored/mount.c:289
+#, c-format
+msgid "Warning device %s not configured to autolabel Volumes.\n"
+msgstr ""
+
+#: src/stored/mount.c:340
+#, c-format
+msgid "Volume \"%s\" previously written, moving to end of data.\n"
+msgstr ""
+
+#: src/stored/mount.c:343
+#, c-format
+msgid "Unable to position to end of data on device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/mount.c:355
+#, c-format
+msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
+msgstr ""
+
+#: src/stored/mount.c:358
+#, c-format
+msgid ""
+"I cannot write on Volume \"%s\" because:\n"
+"The number of files mismatch! Volume=%u Catalog=%u\n"
+msgstr ""
+
+#: src/stored/mount.c:411
+#, c-format
+msgid "Marking Volume \"%s\" in Error in Catalog.\n"
+msgstr ""
+
+#: src/stored/mount.c:427
+#, c-format
+msgid ""
+"Autochanger Volume \"%s\" not found in slot %d.\n"
+"    Setting InChanger to zero in catalog.\n"
+msgstr ""
+
+#: src/stored/mount.c:446
+msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:104 src/stored/parse_bsr.c:108
+#, c-format
+msgid ""
+"Bootstrap file error: %s\n"
+"            : Line %d, col %d of file %s\n"
+"%s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:130
+#, c-format
+msgid "Cannot open bootstrap file %s: %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:260
+#, c-format
+msgid "MediaType %s in bsr at inappropriate place.\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:416
+msgid "JobType not yet implemented\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:424
+msgid "JobLevel not yet implemented\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:626
+#, c-format
+msgid "VolFile     : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:634
+#, c-format
+msgid "VolBlock    : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:644
+#, c-format
+msgid "FileIndex   : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:646
+#, c-format
+msgid "FileIndex   : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:656
+#, c-format
+msgid "JobId       : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:658
+#, c-format
+msgid "JobId       : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:668
+#, c-format
+msgid "SessId      : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:670
+#, c-format
+msgid "SessId      : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:679
+#, c-format
+msgid "VolumeName  : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:688
+#, c-format
+msgid "Client      : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:696
+#, c-format
+msgid "Job          : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:704
+#, c-format
+msgid "SessTime    : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:718
+msgid "BSR is NULL\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:722
+#, c-format
+msgid "Next        : 0x%x\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:723
+#, c-format
+msgid "Root bsr    : 0x%x\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:734
+#, c-format
+msgid "Slot        : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:737
+#, c-format
+msgid "count       : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:738
+#, c-format
+msgid "found       : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:741
+#, c-format
+msgid "done        : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:742
+#, c-format
+msgid "positioning : %d\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:743
 #, c-format
-msgid "Read record failed! ERR=%s\n"
+msgid "fast_reject : %d\n"
+msgstr ""
+
+#: src/stored/read.c:55
+msgid "No Volume names found for restore.\n"
 msgstr ""
 
-#: src/stored/btape.c:1009
+#: src/stored/read.c:109
 #, c-format
-msgid "Block %d re-read correctly.\n"
+msgid ">filed: Error Hdr=%s\n"
+msgstr ""
+
+#: src/stored/read.c:110 src/stored/read.c:125
+#, c-format
+msgid "Error sending to File daemon. ERR=%s\n"
+msgstr ""
+
+#: src/stored/read.c:124
+#, c-format
+msgid "Error sending to FD. ERR=%s\n"
+msgstr ""
+
+#: src/stored/read_record.c:68
+#, c-format
+msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/read_record.c:71
+msgid "End of all volumes.\n"
+msgstr ""
+
+#: src/stored/read_record.c:105
+#, c-format
+msgid "Got EOF at file %u  on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/read_record.c:119
+msgid "Did fsr\n"
+msgstr ""
+
+#: src/stored/read_record.c:275
+#, c-format
+msgid "Reposition from (file:block) %u:%u to %u:%u\n"
+msgstr ""
+
+#: src/stored/read_record.c:302
+#, c-format
+msgid "Forward spacing to file:block %u:%u.\n"
+msgstr ""
+
+#: src/stored/read_record.c:328
+msgid "Begin Session"
+msgstr ""
+
+#: src/stored/read_record.c:332
+msgid "End Session"
+msgstr ""
+
+#: src/stored/read_record.c:338
+#, c-format
+msgid "Unknown code %d\n"
+msgstr ""
+
+#: src/stored/record.c:61
+#, c-format
+msgid "unknown: %d"
+msgstr ""
+
+#: src/stored/record.c:332
+msgid "Damaged buffer\n"
+msgstr ""
+
+#: src/stored/spool.c:69
+#, c-format
+msgid ""
+"Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"
+msgstr ""
+
+#: src/stored/spool.c:75
+#, c-format
+msgid "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
+msgstr ""
+
+#: src/stored/spool.c:91
+msgid "Spooling data ...\n"
+msgstr ""
+
+#: src/stored/spool.c:117
+#, c-format
+msgid "Bad return from despool WroteVol=%d\n"
+msgstr ""
+
+#: src/stored/spool.c:150
+#, c-format
+msgid "Open data spool file %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:199
+#, c-format
+msgid "Committing spooled data to Volume. Despooling %s bytes ...\n"
+msgstr ""
+
+#: src/stored/spool.c:203
+#, c-format
+msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
+msgstr ""
+
+#: src/stored/spool.c:257 src/stored/spool.c:431 src/stored/spool.c:469
+#, c-format
+msgid "Ftruncate spool file failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:259
+#, c-format
+msgid "Bad return from ftruncate. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:308
+#, c-format
+msgid "Spool header read error. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:311
+#, c-format
+msgid "Spool read error. Wanted %u bytes, got %d\n"
+msgstr ""
+
+#: src/stored/spool.c:312
+#, c-format
+msgid "Spool header read error. Wanted %u bytes, got %d\n"
+msgstr ""
+
+#: src/stored/spool.c:318 src/stored/spool.c:319
+#, c-format
+msgid "Spool block too big. Max %u bytes, got %u\n"
+msgstr ""
+
+#: src/stored/spool.c:324 src/stored/spool.c:325
+#, c-format
+msgid "Spool data read error. Wanted %u bytes, got %d\n"
+msgstr ""
+
+#: src/stored/spool.c:382
+msgid "User specified spool size reached.\n"
+msgstr ""
+
+#: src/stored/spool.c:384
+msgid "Bad return from despool in write_block.\n"
+msgstr ""
+
+#: src/stored/spool.c:392
+msgid "Spooling data again ...\n"
+msgstr ""
+
+#: src/stored/spool.c:423
+#, c-format
+msgid "Error writing header to spool file. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:437 src/stored/spool.c:475
+msgid "Fatal despooling error."
+msgstr ""
+
+#: src/stored/spool.c:444
+msgid "Retrying after header spooling error failed.\n"
+msgstr ""
+
+#: src/stored/spool.c:458
+#, c-format
+msgid "Error writing data to spool file. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:485
+msgid "Retrying after data spooling error failed.\n"
+msgstr ""
+
+#: src/stored/spool.c:540 src/stored/spool.c:547
+#, c-format
+msgid "Fseek on attributes file failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:557
+#, c-format
+msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
 msgstr ""
 
-#: src/stored/btape.c:1030
+#: src/stored/spool.c:584
+#, c-format
+msgid "fopen attr spool file %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/status.c:66
+#, c-format
 msgid ""
 "\n"
+"%s Version: %s (%s) %s %s %s\n"
+msgstr ""
+
+#: src/stored/status.c:97
+msgid ""
 "\n"
-"=== Append files test ===\n"
+"Device status:\n"
+msgstr ""
+
+#: src/stored/status.c:99
+#, c-format
+msgid "Autochanger \"%s\" with devices:\n"
+msgstr ""
+
+#: src/stored/status.c:113
+#, c-format
+msgid "Device %s is mounted with Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/status.c:116
+#, c-format
+msgid "Device %s open but no Bacula volume is mounted.\n"
+msgstr ""
+
+#: src/stored/status.c:126
+#, c-format
+msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
+msgstr ""
+
+#: src/stored/status.c:140
+#, c-format
+msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
+msgstr ""
+
+#: src/stored/status.c:145
+#, c-format
+msgid "    Positioned at File=%s Block=%s\n"
+msgstr ""
+
+#: src/stored/status.c:151
+#, c-format
+msgid "Device %s is not open or does not exist.\n"
+msgstr ""
+
+#: src/stored/status.c:153
+#, c-format
+msgid "Device \"%s\" is not open or does not exist.\n"
+msgstr ""
+
+#: src/stored/status.c:158 src/stored/status.c:165 src/stored/status.c:168
+msgid ""
+"====\n"
 "\n"
-"This test is essential to Bacula.\n"
+msgstr ""
+
+#: src/stored/status.c:159
+msgid "Volume status:\n"
+msgstr ""
+
+#: src/stored/status.c:183
+msgid ""
+"No DEVICE structure.\n"
 "\n"
-"I'm going to write one record  in file 0,\n"
-"                   two records in file 1,\n"
-"             and three records in file 2\n"
+msgstr ""
+
+#: src/stored/status.c:188
+msgid "    Device is BLOCKED. User unmounted.\n"
+msgstr ""
+
+#: src/stored/status.c:191
+msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
+msgstr ""
+
+#: src/stored/status.c:195
+#, c-format
+msgid "    Device is BLOCKED waiting for mount of volume \"%s\".\n"
+msgstr ""
+
+#: src/stored/status.c:198
+msgid "    Device is BLOCKED waiting for media.\n"
+msgstr ""
+
+#: src/stored/status.c:202
+msgid "    Device is being initialized.\n"
+msgstr ""
+
+#: src/stored/status.c:205
+msgid "    Device is blocked labeling a Volume.\n"
+msgstr ""
+
+#: src/stored/status.c:213
+#, c-format
+msgid "    Slot %d is loaded in drive %d.\n"
+msgstr ""
+
+#: src/stored/status.c:216
+#, c-format
+msgid "    Drive %d is not loaded.\n"
+msgstr ""
+
+#: src/stored/status.c:235
+msgid "Device state:\n"
+msgstr ""
+
+#: src/stored/status.c:249
+#, c-format
+msgid ""
+"num_writers=%d JobStatus=%c block=%d\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1054
-msgid "Now moving to end of medium.\n"
+#: src/stored/status.c:253
+#, c-format
+msgid "Archive name: %s Device name: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1056 src/stored/btape.c:1286
+#: src/stored/status.c:255
 #, c-format
-msgid "We should be in file 3. I am at file %d. This is %s\n"
+msgid "File=%u block=%u\n"
 msgstr ""
 
-#: src/stored/btape.c:1063
+#: src/stored/status.c:256
+#, c-format
+msgid "Min block=%u Max block=%u\n"
+msgstr ""
+
+#: src/stored/status.c:272
+#, c-format
+msgid "%s Job %s waiting for Client connection.\n"
+msgstr ""
+
+#: src/stored/status.c:284
+#, c-format
+msgid "%s %s job %s JobId=%d Volume=\"%s\" device=\"%s\"\n"
+msgstr ""
+
+#: src/stored/status.c:303
+#, c-format
+msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
+msgstr ""
+
+#: src/stored/status.c:308
+msgid "    FDSocket closed\n"
+msgstr ""
+
+#: src/stored/status.c:335
+msgid " JobId  Level   Files          Bytes Status   Finished        Name \n"
+msgstr ""
+
+#: src/stored/status.c:469
+msgid "3900 Bad .status command, missing argument.\n"
+msgstr ""
+
+#: src/stored/status.c:494
+msgid "3900 Bad .status command, wrong argument.\n"
+msgstr ""
+
+#: src/stored/stored.c:65
+#, c-format
 msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
 "\n"
-"Now the important part, I am going to attempt to append to the tape.\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: stored [options] [-c config_file] [config_file]\n"
+"        -c <file>   use <file> as configuration file\n"
+"        -dnn        set debug level to nn\n"
+"        -f          run in foreground (for debugging)\n"
+"        -g <group>  set groupid to group\n"
+"        -p          proceed despite I/O errors\n"
+"        -s          no signals (for debugging)\n"
+"        -t          test - read config and exit\n"
+"        -u <user>   userid to <user>\n"
+"        -v          verbose user messages\n"
+"        -?          print this message.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1070
-msgid ""
-"Done appending, there should be no I/O errors\n"
-"\n"
+#: src/stored/stored.c:220
+msgid "Volume Session Time is ZERO!\n"
 msgstr ""
 
-#: src/stored/btape.c:1073
-msgid "End scanning the tape.\n"
+#: src/stored/stored.c:233
+#, c-format
+msgid "Unable to create thread. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1074 src/stored/btape.c:1299
+#: src/stored/stored.c:272
 #, c-format
-msgid "We should be in file 4. I am at file %d. This is %s\n"
+msgid "Only one Storage resource permitted in %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1113
-msgid ""
-"\n"
-"\n"
-"=== Autochanger test ===\n"
-"\n"
+#: src/stored/stored.c:277
+#, c-format
+msgid "No Director resource defined in %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1122
-msgid "3301 Issuing autochanger \"loaded\" command.\n"
+#: src/stored/stored.c:282
+#, c-format
+msgid "No Device resource defined in %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1131
+#: src/stored/stored.c:290
 #, c-format
-msgid "3991 Bad autochanger command: %s\n"
+msgid "No Messages resource defined in %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1132
+#: src/stored/stored.c:317
 #, c-format
-msgid "3991 result=\"%s\": ERR=%s\n"
+msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:1146
+#: src/stored/stored.c:323
 #, c-format
-msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
+msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:1154
+#: src/stored/stored.c:329
 #, c-format
-msgid "3992 Bad autochanger command: %s\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Storage \"%s\" in %s. At least one CA certificate store is required when "
+"using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/stored/btape.c:1155
+#: src/stored/stored.c:417
 #, c-format
-msgid "3992 result=\"%s\": ERR=%s\n"
+msgid "No Changer Name given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1165
+#: src/stored/stored.c:423
 #, c-format
-msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
+msgid "No Changer Command given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1173
+#: src/stored/stored.c:435
 #, c-format
-msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
+msgid ""
+"Media Type not the same for all devices in changer %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1177
+#: src/stored/stored.c:496
 #, c-format
-msgid "3993 Bad autochanger command: %s\n"
+msgid "Could not initialize %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1178
+#: src/stored/stored.c:509
 #, c-format
-msgid "3993 result=\"%s\": ERR=%s\n"
+msgid "Could not open device %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1244
-msgid ""
-"\n"
-"\n"
-"=== Forward space files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write five files then test forward spacing\n"
-"\n"
+#: src/stored/stored.c:526
+#, c-format
+msgid "Could not mount device %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1269
-msgid "Now forward spacing 1 file.\n"
+#: src/stored/stored_conf.c:188
+#, c-format
+msgid "Warning: no \"%s\" resource (%d) defined.\n"
 msgstr ""
 
-#: src/stored/btape.c:1274
+#: src/stored/stored_conf.c:191
 #, c-format
-msgid "We should be in file 1. I am at file %d. This is %s\n"
+msgid "dump_resource type=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:1281
-msgid "Now forward spacing 2 files.\n"
+#: src/stored/stored_conf.c:307
+#, c-format
+msgid "Warning: unknown resource type %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1294
-msgid "Now forward spacing 4 files.\n"
+#: src/stored/stored_conf.c:496
+#, c-format
+msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
 msgstr ""
 
-#: src/stored/btape.c:1312
-msgid "Now forward spacing 1 more file.\n"
+#: src/stored/stored_conf.c:502
+#, c-format
+msgid "Too many items in \"%s\" resource\n"
 msgstr ""
 
-#: src/stored/btape.c:1316
+#: src/stored/stored_conf.c:536
 #, c-format
-msgid "We should be in file 5. I am at file %d. This is %s\n"
+msgid "Cannot find AutoChanger resource %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1321
+#: src/stored/stored_conf.c:607
+#, c-format
 msgid ""
-"\n"
-"=== End Forward space files test ===\n"
-"\n"
+"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/stored/btape.c:1325
-msgid ""
-"\n"
-"The forward space file test failed.\n"
+#: src/stored/ansi_label.c:83
+#, c-format
+msgid "Read error on device %s in ANSI label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1422
-msgid ""
-"\n"
-"The above Bacula scan should have output identical to what follows.\n"
-"Please double check it ...\n"
-"=== Sample correct output ===\n"
-"1 block of 64448 bytes in file 1\n"
-"End of File mark.\n"
-"2 blocks of 64448 bytes in file 2\n"
-"End of File mark.\n"
-"3 blocks of 64448 bytes in file 3\n"
-"End of File mark.\n"
-"1 block of 64448 bytes in file 4\n"
-"End of File mark.\n"
-"Total files=4, blocks=7, bytes = 451,136\n"
-"=== End sample correct output ===\n"
-"\n"
+#: src/stored/ansi_label.c:93
+msgid "Insane! End of tape while reading ANSI label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1436
-msgid ""
-"If the above scan output is not identical to the\n"
-"sample output, you MUST correct the problem\n"
-"or Bacula will not be able to write multiple Jobs to \n"
-"the tape.\n"
-"\n"
+#: src/stored/ansi_label.c:117
+msgid "No VOL1 label while reading ANSI/IBM label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1515
+#: src/stored/ansi_label.c:137
 #, c-format
-msgid "Wrote one record of %d bytes.\n"
+msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
 msgstr ""
 
-#: src/stored/btape.c:1517
-msgid "Wrote block to device.\n"
+#: src/stored/ansi_label.c:148
+msgid "No HDR1 label while reading ANSI label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1537
-msgid "Bad length entered, using default of 1024 bytes.\n"
+#: src/stored/ansi_label.c:154
+#, c-format
+msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
 msgstr ""
 
-#: src/stored/btape.c:1546
-#, c-format
-msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
+#: src/stored/ansi_label.c:165
+msgid "No HDR2 label while reading ANSI/IBM label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1574
-#, c-format
-msgid "Starting scan at file %u\n"
+#: src/stored/ansi_label.c:179
+msgid "Unknown or bad ANSI/IBM label record.\n"
+msgstr ""
+
+#: src/stored/ansi_label.c:186
+msgid "Too many records in while reading ANSI/IBM label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1663
+#: src/stored/ansi_label.c:285
 #, c-format
-msgid "End of File mark.\n"
+msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
 msgstr ""
 
-#: src/stored/btape.c:1672
+#: src/stored/ansi_label.c:302
 #, c-format
-msgid "Short block read.\n"
+msgid "Could not write ANSI VOL1 label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1675
+#: src/stored/ansi_label.c:340 src/stored/ansi_label.c:369
 #, c-format
-msgid "Error reading block. ERR=%s\n"
+msgid "Could not write ANSI HDR1 label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1903
-msgid "Not OK\n"
+#: src/stored/ansi_label.c:345 src/stored/ansi_label.c:376
+msgid "Could not write ANSI HDR1 label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1931
-msgid "Set ok=false after write_block_to_device.\n"
+#: src/stored/ansi_label.c:381
+#, c-format
+msgid "Error writing EOF to tape. ERR=%s"
 msgstr ""
 
-#: src/stored/btape.c:1934
-msgid "Wrote End of Session label.\n"
+#: src/stored/ansi_label.c:386
+msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
 msgstr ""
 
-#: src/stored/btape.c:1962
+#: src/stored/dvd.c:153
 #, c-format
-msgid "Could not create state file: %s ERR=%s\n"
+msgid "Device %s cannot be mounted. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1966
+#: src/stored/dvd.c:261
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Done filling tape%s at %d:%d. Now beginning re-read of %stape ...\n"
+msgid "Cannot run free space command (%s)\n"
 msgstr ""
 
-#: src/stored/btape.c:2052
-msgid "Mount first tape. Press enter when ready: "
+#: src/stored/dvd.c:322
+#, c-format
+msgid "Error while writing current part to the DVD: %s"
 msgstr ""
 
-#: src/stored/btape.c:2076
-msgid "Reading the first 10000 records.\n"
+#: src/stored/dvd.c:343
+#, c-format
+msgid "Remaining free space %s on %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2079 src/stored/btape.c:2146
+#: src/stored/dvd.c:412
 #, c-format
-msgid "Reposition from %u:%u to %u:%u\n"
+msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2085
+#: src/stored/dvd.c:430
 #, c-format
-msgid "Reading block %u.\n"
+msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2087 src/stored/btape.c:2138 src/stored/btape.c:2154
+#: src/stored/dvd.c:634
 #, c-format
-msgid "Error reading block: ERR=%s\n"
+msgid "Unable to write part %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2092
-msgid ""
-"\n"
-"The last block on the tape matches. Test succeeded.\n"
-"\n"
+#: src/stored/wait.c:178 src/stored/wait.c:236
+#, c-format
+msgid "Job %s waiting to reserve a device.\n"
 msgstr ""
 
-#: src/stored/btape.c:2094
-msgid ""
-"\n"
-"The last block of the first tape matches.\n"
-"\n"
+#: src/stored/pythonsd.c:59
+msgid "SDName"
 msgstr ""
 
-#: src/stored/btape.c:2119
-msgid "Mount second tape. Press enter when ready: "
+#: src/stored/pythonsd.c:202
+msgid "Error in ParseTuple\n"
 msgstr ""
 
-#: src/stored/btape.c:2131
-#, c-format
-msgid "Reposition from %u:%u to 0:1\n"
+#: src/stored/pythonsd.c:218
+msgid "Parse tuple error in job_write\n"
 msgstr ""
 
-#: src/stored/btape.c:2136 src/stored/btape.c:2152
+#: src/stored/pythonsd.c:254
 #, c-format
-msgid "Reading block %d.\n"
+msgid "Error in Python method %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2142
-msgid ""
-"\n"
-"The first block on the second tape matches.\n"
-"\n"
+#: src/stored/reserve.c:344 src/stored/reserve.c:361
+#, c-format
+msgid "Failed command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2158
+#: src/stored/reserve.c:346
+#, c-format
 msgid ""
 "\n"
-"The last block on the second tape matches. Test succeeded.\n"
-"\n"
+"     Device \"%s\" with MediaType \"%s\" requested by DIR not found in SD "
+"Device resources.\n"
 msgstr ""
 
-#: src/stored/btape.c:2201 src/stored/btape.c:2212
-msgid "Last block written"
+#: src/stored/reserve.c:528
+#, c-format
+msgid "3926 Could not get dcr for device: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2203 src/stored/btape.c:2213
-msgid "Block read back"
+#: src/stored/reserve.c:568 src/stored/reserve.c:623
+#, c-format
+msgid "Device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/btape.c:2520
+#: src/stored/reserve.c:576
 #, c-format
-msgid "%s is an illegal command\n"
+msgid "Device %s is busy.\n"
 msgstr ""
 
-#: src/stored/btape.c:2530
+#: src/stored/reserve.c:631
 #, c-format
-msgid "Interactive commands:\n"
+msgid "Device %s is busy writing on another Volume.\n"
 msgstr ""
 
-#: src/stored/btape.c:2541
+#: src/stored/reserve.c:705
 #, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: btape <options> <device_name>\n"
-"       -b <file>   specify bootstrap file\n"
-"       -c <file>   set configuration file to file\n"
-"       -d <nn>     set debug level to nn\n"
-"       -p          proceed inspite of I/O errors\n"
-"       -s          turn off signals\n"
-"       -v          be verbose\n"
-"       -?          print this message.\n"
-"\n"
+msgid "Wanted Pool \"%s\", but device %s is using Pool \"%s\" .\n"
 msgstr ""
 
-#: src/stored/butil.c:128
-msgid "Volume name or names is too long. Please use a .bsr file.\n"
+#: src/stored/reserve.c:710 src/stored/reserve.c:711
+msgid "Logic error!!!! Should not get here.\n"
 msgstr ""
 
-#: src/stored/butil.c:148
+#: src/tools/bsmtp.c:85
 #, c-format
-msgid "Cannot find device \"%s\" in config file %s.\n"
+msgid "Fatal malformed reply from %s: %s\n"
 msgstr ""
 
-#: src/stored/butil.c:155
+#: src/tools/bsmtp.c:121
 #, c-format
-msgid "Cannot init device %s\n"
+msgid ""
+"\n"
+"Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -c          set the Cc: field\n"
+"       -dnn        set debug level to nn\n"
+"       -f          set the From: field\n"
+"       -h          use mailhost:port as the SMTP server\n"
+"       -s          set the Subject: field\n"
+"       -?          print this message.\n"
+"\n"
 msgstr ""
 
-#: src/stored/butil.c:174
-#, c-format
-msgid "Cannot open %s\n"
+#: src/tools/bsmtp.c:204
+msgid "Fatal error: no recipient given.\n"
 msgstr ""
 
-#: src/stored/butil.c:253
+#: src/tools/bsmtp.c:225
 #, c-format
-msgid "Could not find device \"%s\" in config file %s.\n"
+msgid "Fatal gethostname error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/butil.c:257
+#: src/tools/bsmtp.c:229
 #, c-format
-msgid "Using device: \"%s\" for %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:273
-msgid "Unexpected End of Data\n"
-msgstr ""
-
-#: src/stored/butil.c:275
-msgid "Unexpected End of Tape\n"
+msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/butil.c:277
-msgid "Unexpected End of File\n"
+#: src/tools/bsmtp.c:254
+#, c-format
+msgid "Error unknown mail host \"%s\": ERR=%s\n"
 msgstr ""
-
-#: src/stored/butil.c:279
-msgid "Tape Door is Open\n"
+
+#: src/tools/bsmtp.c:257
+msgid "Retrying connection using \"localhost\".\n"
 msgstr ""
 
-#: src/stored/butil.c:281
-msgid "Unexpected Tape is Off-line\n"
+#: src/tools/bsmtp.c:265
+#, c-format
+msgid "Fatal error: Unknown address family for smtp host: %d\n"
 msgstr ""
 
-#: src/stored/dev.c:110
+#: src/tools/bsmtp.c:273
 #, c-format
-msgid "Unable to stat device %s: ERR=%s\n"
+msgid "Fatal socket error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:125
+#: src/tools/bsmtp.c:277
 #, c-format
-msgid ""
-"%s is an unknown device type. Must be tape or directory\n"
-" or have RequiresMount=yes for DVD. st_mode=%x\n"
+msgid "Fatal connect error to %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:183
+#: src/tools/bsmtp.c:282
 #, c-format
-msgid "Unable to stat mount point %s: ERR=%s\n"
+msgid "Fatal dup error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:188
-msgid ""
-"Mount and unmount commands must defined for a device which requires mount.\n"
+#: src/tools/bsmtp.c:286 src/tools/bsmtp.c:290
+#, c-format
+msgid "Fatal fdopen error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:191
-msgid "Write part command must be defined for a device which requires mount.\n"
+#: src/tools/dbcheck.c:158
+msgid ""
+"Warning skipping the additional parameters for working directory/dbname/user/"
+"password/host.\n"
 msgstr ""
 
-#: src/stored/dev.c:197
+#: src/tools/dbcheck.c:174
 #, c-format
-msgid "Block size %u on device %s is too large, using default %u\n"
+msgid "Error can not find the Catalog name[%s] in the given config file [%s]\n"
 msgstr ""
 
-#: src/stored/dev.c:202
+#: src/tools/dbcheck.c:176
 #, c-format
-msgid "Max block size %u not multiple of device %s block size.\n"
+msgid "Error there is no Catalog section in the given config file [%s]\n"
 msgstr ""
 
-#: src/stored/dev.c:212 src/stored/dev.c:230 src/stored/dev.c:236
-#: src/stored/stored_conf.c:550
-#, c-format
-msgid "Unable to init mutex: ERR=%s\n"
+#: src/tools/dbcheck.c:185
+msgid "Error no Director resource defined.\n"
 msgstr ""
 
-#: src/stored/dev.c:218 src/stored/dev.c:224
-#, c-format
-msgid "Unable to init cond variable: ERR=%s\n"
+#: src/tools/dbcheck.c:199
+msgid "Wrong number of arguments.\n"
 msgstr ""
 
-#: src/stored/dev.c:310
-msgid "Illegal mode given to open dev.\n"
+#: src/tools/dbcheck.c:204
+msgid "Working directory not supplied.\n"
 msgstr ""
 
-#: src/stored/dev.c:372 src/stored/device.c:302
+#: src/tools/dbcheck.c:269
 #, c-format
-msgid "Unable to open device %s: ERR=%s\n"
+msgid "Hello, this is the database check/correct program.\n"
 msgstr ""
 
-#: src/stored/dev.c:430 src/stored/dev.c:489
+#: src/tools/dbcheck.c:271
 #, c-format
-msgid "Could not open file device %s. No Volume name given.\n"
+msgid "Modify database is on."
 msgstr ""
 
-#: src/stored/dev.c:455 src/stored/dev.c:569
+#: src/tools/dbcheck.c:273
 #, c-format
-msgid "Could not open: %s, ERR=%s\n"
+msgid "Modify database is off."
 msgstr ""
 
-#: src/stored/dev.c:514
+#: src/tools/dbcheck.c:275 src/tools/dbcheck.c:336
 #, c-format
-msgid ""
-"The media in the device %s is not empty, please blank it before writing "
-"anything to it.\n"
+msgid " Verbose is on.\n"
 msgstr ""
 
-#: src/stored/dev.c:530
+#: src/tools/dbcheck.c:277 src/tools/dbcheck.c:338
 #, c-format
-msgid "There is no valid media in the device %s.\n"
+msgid " Verbose is off.\n"
 msgstr ""
 
-#: src/stored/dev.c:537
+#: src/tools/dbcheck.c:279
 #, c-format
-msgid "Could not mount device %s.\n"
+msgid "Please select the fuction you want to perform.\n"
 msgstr ""
 
-#: src/stored/dev.c:595
+#: src/tools/dbcheck.c:283
 #, c-format
-msgid "Could not fstat: %s, ERR=%s\n"
+msgid ""
+"\n"
+"     1) Toggle modify database flag\n"
+"     2) Toggle verbose flag\n"
+"     3) Repair bad Filename records\n"
+"     4) Repair bad Path records\n"
+"     5) Eliminate duplicate Filename records\n"
+"     6) Eliminate duplicate Path records\n"
+"     7) Eliminate orphaned Jobmedia records\n"
+"     8) Eliminate orphaned File records\n"
+"     9) Eliminate orphaned Path records\n"
+"    10) Eliminate orphaned Filename records\n"
+"    11) Eliminate orphaned FileSet records\n"
+"    12) Eliminate orphaned Client records\n"
+"    13) Eliminate orphaned Job records\n"
+"    14) Eliminate all Admin records\n"
+"    15) Eliminate all Restore records\n"
+"    16) All (3-15)\n"
+"    17) Quit\n"
 msgstr ""
 
-#: src/stored/dev.c:648
+#: src/tools/dbcheck.c:302
 #, c-format
-msgid "Bad call to rewind_dev. Device %s not open\n"
+msgid ""
+"\n"
+"     1) Toggle modify database flag\n"
+"     2) Toggle verbose flag\n"
+"     3) Check for bad Filename records\n"
+"     4) Check for bad Path records\n"
+"     5) Check for duplicate Filename records\n"
+"     6) Check for duplicate Path records\n"
+"     7) Check for orphaned Jobmedia records\n"
+"     8) Check for orphaned File records\n"
+"     9) Check for orphaned Path records\n"
+"    10) Check for orphaned Filename records\n"
+"    11) Check for orphaned FileSet records\n"
+"    12) Check for orphaned Client records\n"
+"    13) Check for orphaned Job records\n"
+"    14) Check for all Admin records\n"
+"    15) Check for all Restore records\n"
+"    16) All (3-15)\n"
+"    17) Quit\n"
 msgstr ""
 
-#: src/stored/dev.c:677
+#: src/tools/dbcheck.c:322
+msgid "Select function number: "
+msgstr ""
+
+#: src/tools/dbcheck.c:329
 #, c-format
-msgid "Rewind error on %s. ERR=%s.\n"
+msgid "Database will be modified.\n"
 msgstr ""
 
-#: src/stored/dev.c:687 src/stored/dev.c:800 src/stored/dev.c:937
-#: src/stored/dev.c:1462
+#: src/tools/dbcheck.c:331
 #, c-format
-msgid "lseek_dev error on %s. ERR=%s.\n"
+msgid "Database will NOT be modified.\n"
 msgstr ""
 
-#: src/stored/dev.c:770
+#: src/tools/dbcheck.c:421
 #, c-format
-msgid "Bad call to eod_dev. Device %s not open\n"
+msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:836
+#: src/tools/dbcheck.c:429
 #, c-format
-msgid "ioctl MTEOM error on %s. ERR=%s.\n"
+msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
 msgstr ""
 
-#: src/stored/dev.c:844 src/stored/dev.c:977
+#: src/tools/dbcheck.c:436
 #, c-format
-msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
+msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
 msgstr ""
 
-#: src/stored/dev.c:923
-msgid "Bad device call. Device not open\n"
+#: src/tools/dbcheck.c:443
+#, c-format
+msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1046
-msgid "Bad call to load_dev. Device not open\n"
+#: src/tools/dbcheck.c:450
+#, c-format
+msgid "Orphaned ClientId=%s Name=\"%s\"\n"
 msgstr ""
 
-#: src/stored/dev.c:1057 src/stored/dev.c:1070
+#: src/tools/dbcheck.c:503
 #, c-format
-msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
+msgid "Deleting: %s\n"
 msgstr ""
 
-#: src/stored/dev.c:1089
-msgid "Bad call to offline_dev. Device not open\n"
+#: src/tools/dbcheck.c:577
+#, c-format
+msgid "Checking for duplicate Filename entries.\n"
 msgstr ""
 
-#: src/stored/dev.c:1112
+#: src/tools/dbcheck.c:586
 #, c-format
-msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
+msgid "Found %d duplicate Filename records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1153
-msgid "Bad call to fsf_dev. Device not open\n"
+#: src/tools/dbcheck.c:587
+msgid "Print the list? (yes/no): "
 msgstr ""
 
-#: src/stored/dev.c:1163 src/stored/dev.c:1284
+#: src/tools/dbcheck.c:603 src/tools/dbcheck.c:657
 #, c-format
-msgid "Device %s at End of Tape.\n"
+msgid "Found %d for: %s\n"
 msgstr ""
 
-#: src/stored/dev.c:1188 src/stored/dev.c:1264
+#: src/tools/dbcheck.c:630
 #, c-format
-msgid "ioctl MTFSF error on %s. ERR=%s.\n"
+msgid "Checking for duplicate Path entries.\n"
 msgstr ""
 
-#: src/stored/dev.c:1234
+#: src/tools/dbcheck.c:640
 #, c-format
-msgid "read error on %s. ERR=%s.\n"
+msgid "Found %d duplicate Path records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1313
-msgid "Bad call to bsf_dev. Device not open\n"
+#: src/tools/dbcheck.c:641 src/tools/dbcheck.c:691 src/tools/dbcheck.c:723
+#: src/tools/dbcheck.c:755 src/tools/dbcheck.c:783 src/tools/dbcheck.c:811
+#: src/tools/dbcheck.c:849 src/tools/dbcheck.c:887 src/tools/dbcheck.c:918
+#: src/tools/dbcheck.c:948 src/tools/dbcheck.c:982 src/tools/dbcheck.c:1040
+msgid "Print them? (yes/no): "
 msgstr ""
 
-#: src/stored/dev.c:1319
+#: src/tools/dbcheck.c:683
 #, c-format
-msgid "Device %s cannot BSF because it is not a tape.\n"
+msgid "Checking for orphaned JobMedia entries.\n"
 msgstr ""
 
-#: src/stored/dev.c:1334
+#: src/tools/dbcheck.c:690
 #, c-format
-msgid "ioctl MTBSF error on %s. ERR=%s.\n"
+msgid "Found %d orphaned JobMedia records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1354
-msgid "Bad call to fsr. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1363
+#: src/tools/dbcheck.c:703
 #, c-format
-msgid "ioctl MTFSR not permitted on %s.\n"
+msgid "Deleting %d orphaned JobMedia records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1391
+#: src/tools/dbcheck.c:712
 #, c-format
-msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
+msgid "Checking for orphaned File entries. This may take some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1411
-msgid "Bad call to bsr_dev. Device not open\n"
+#: src/tools/dbcheck.c:722
+#, c-format
+msgid "Found %d orphaned File records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1421
+#: src/tools/dbcheck.c:735
 #, c-format
-msgid "ioctl MTBSR not permitted on %s.\n"
+msgid "Deleting %d orphaned File records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1434
+#: src/tools/dbcheck.c:744
 #, c-format
-msgid "ioctl MTBSR error on %s. ERR=%s.\n"
+msgid "Checking for orphaned Path entries. This may take some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1451
-msgid "Bad call to reposition_dev. Device not open\n"
+#: src/tools/dbcheck.c:754
+#, c-format
+msgid "Found %d orphaned Path records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1519
-msgid "Bad call to weof_dev. Device not open\n"
+#: src/tools/dbcheck.c:763
+#, c-format
+msgid "Deleting %d orphaned Path records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1529
-msgid "Attempt to WEOF on non-appendable Volume\n"
+#: src/tools/dbcheck.c:772
+#, c-format
+msgid "Checking for orphaned Filename entries. This may take some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1546
+#: src/tools/dbcheck.c:782
 #, c-format
-msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
+msgid "Found %d orphaned Filename records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1641
+#: src/tools/dbcheck.c:791
 #, c-format
-msgid "I/O function \"%s\" not supported on this device.\n"
+msgid "Deleting %d orphaned Filename records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1779 src/stored/dvd.c:667
+#: src/tools/dbcheck.c:800
 #, c-format
-msgid "Unable to truncate device %s. ERR=%s\n"
+msgid "Checking for orphaned FileSet entries. This takes some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1818
-msgid "Bad call to term_dev. Device not open\n"
+#: src/tools/dbcheck.c:810
+#, c-format
+msgid "Found %d orphaned FileSet records.\n"
 msgstr ""
 
-#: src/stored/device.c:105
+#: src/tools/dbcheck.c:822
 #, c-format
-msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
+msgid "Deleting %d orphaned FileSet records.\n"
 msgstr ""
 
-#: src/stored/device.c:119
+#: src/tools/dbcheck.c:831
 #, c-format
-msgid "New volume \"%s\" mounted on device %s at %s.\n"
+msgid "Checking for orphaned Client entries.\n"
 msgstr ""
 
-#: src/stored/device.c:328
-msgid "Bad call to force_close_dev. Device not open\n"
+#: src/tools/dbcheck.c:848
+#, c-format
+msgid "Found %d orphaned Client records.\n"
 msgstr ""
 
-#: src/stored/device.c:373
+#: src/tools/dbcheck.c:860
 #, c-format
-msgid "pthread_cond_wait failure. ERR=%s\n"
+msgid "Deleting %d orphaned Client records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:140
-msgid "Connection request failed.\n"
+#: src/tools/dbcheck.c:869
+#, c-format
+msgid "Checking for orphaned Job entries.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:149
+#: src/tools/dbcheck.c:886
 #, c-format
-msgid "Invalid connection. Len=%d\n"
+msgid "Found %d orphaned Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:262
+#: src/tools/dbcheck.c:898
 #, c-format
-msgid "3902 Job %s not found.\n"
+msgid "Deleting %d orphaned Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:279
+#: src/tools/dbcheck.c:908
 #, c-format
-msgid "3000 Job %s marked to be canceled.\n"
+msgid "Checking for Admin Job entries.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:283
-msgid "3903 Error scanning cancel command.\n"
+#: src/tools/dbcheck.c:917
+#, c-format
+msgid "Found %d Admin Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:352 src/stored/dircmd.c:648 src/stored/dircmd.c:712
-#: src/stored/dircmd.c:770 src/stored/dircmd.c:822 src/stored/dircmd.c:860
+#: src/tools/dbcheck.c:929
 #, c-format
-msgid "3999 Device \"%s\" not found\n"
+msgid "Deleting %d Admin Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:357
+#: src/tools/dbcheck.c:938
 #, c-format
-msgid "3903 Error scanning label command: %s\n"
+msgid "Checking for Restore Job entries.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:401
+#: src/tools/dbcheck.c:947
 #, c-format
-msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
+msgid "Found %d Restore Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:407
-msgid "3921 Wrong volume mounted.\n"
+#: src/tools/dbcheck.c:959
+#, c-format
+msgid "Deleting %d Restore Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:411
-msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
+#: src/tools/dbcheck.c:972
+#, c-format
+msgid "Checking for Filenames with a trailing slash\n"
 msgstr ""
 
-#: src/stored/dircmd.c:419 src/stored/dircmd.c:428
+#: src/tools/dbcheck.c:981
 #, c-format
-msgid "3912 Failed to label Volume: ERR=%s\n"
+msgid "Found %d bad Filename records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:431
+#: src/tools/dbcheck.c:995 src/tools/dbcheck.c:1053
 #, c-format
-msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
+msgid "Reparing %d bad Filename records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:464
+#: src/tools/dbcheck.c:1030
 #, c-format
-msgid "3001 Mounted Volume: %s\n"
+msgid "Checking for Paths without a trailing slash\n"
 msgstr ""
 
-#: src/stored/dircmd.c:468 src/stored/dircmd.c:896
+#: src/tools/dbcheck.c:1039
 #, c-format
-msgid ""
-"3902 Cannot mount Volume on Storage Device %s because:\n"
-"%s"
+msgid "Found %d bad Path records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:491 src/stored/reserve.c:518
+#: src/tools/testfind.c:49
 #, c-format
 msgid ""
 "\n"
-"     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
+"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
+"       -a          print extended attributes (Win32 debug)\n"
+"       -dnn        set debug level to nn\n"
+"       -e          specify file of exclude patterns\n"
+"       -i          specify file of include patterns\n"
+"       -           read pattern(s) from stdin\n"
+"       -?          print this message.\n"
+"\n"
+"Patterns are used for file inclusion -- normally directories.\n"
+"Debug level >= 1 prints each file found.\n"
+"Debug level >= 10 prints path/file for catalog.\n"
+"Errors are always printed.\n"
+"Files/paths truncated is the number of files/paths with len > 255.\n"
+"Truncation is only in the catalog.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:512 src/stored/reserve.c:514
+#: src/tools/testfind.c:134 src/tools/testls.c:130
 #, c-format
-msgid ""
-"\n"
-"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
-"does not exist.\n"
+msgid "Could not open include file: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:568 src/stored/dircmd.c:616
+#: src/tools/testfind.c:147 src/tools/testls.c:143
 #, c-format
-msgid "3901 open device failed: ERR=%s\n"
+msgid "Could not open exclude file: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:583 src/stored/dircmd.c:607
+#: src/tools/testfind.c:160
 #, c-format
-msgid "3001 Device %s is mounted with Volume \"%s\"\n"
+msgid ""
+"Total files    : %d\n"
+"Max file length: %d\n"
+"Max path length: %d\n"
+"Files truncated: %d\n"
+"Paths truncated: %d\n"
+"Hard links     : %d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:586 src/stored/dircmd.c:610 src/stored/dircmd.c:625
+#: src/tools/testfind.c:199
 #, c-format
-msgid ""
-"3905 Device %s open but no Bacula volume is mounted.\n"
-"If this is not a blank tape, try unmounting and remounting the Volume.\n"
+msgid "Reg: %s\n"
+msgstr ""
+
+#: src/tools/testfind.c:220
+msgid "\t[will not descend: recursion turned off]"
+msgstr ""
+
+#: src/tools/testfind.c:222
+msgid "\t[will not descend: file system change not allowed]"
+msgstr ""
+
+#: src/tools/testfind.c:224
+msgid "\t[will not descend: disallowed file system]"
 msgstr ""
 
-#: src/stored/dircmd.c:595
+#: src/tools/testfind.c:240 src/tools/testls.c:178
 #, c-format
-msgid "3001 Device %s is doing acquire.\n"
+msgid "Err: Could not access %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:600 src/stored/dircmd.c:690
+#: src/tools/testfind.c:243 src/tools/testls.c:181
 #, c-format
-msgid "3903 Device %s is being labeled.\n"
+msgid "Err: Could not follow ff->link %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:622
+#: src/tools/testfind.c:246 src/tools/testls.c:184
 #, c-format
-msgid "3001 Device %s is already mounted with Volume \"%s\"\n"
+msgid "Err: Could not stat %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:631
+#: src/tools/testfind.c:249 src/tools/testls.c:187
 #, c-format
-msgid "3002 Device %s is mounted.\n"
+msgid "Skip: File not saved. No change. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:637
+#: src/tools/testfind.c:252 src/tools/testls.c:190
 #, c-format
-msgid "3906 File device %s is always mounted.\n"
+msgid "Err: Attempt to backup archive. Not saved. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:643
+#: src/tools/testfind.c:255 src/tools/testls.c:199
 #, c-format
-msgid "3905 Bizarre wait state %d\n"
+msgid "Err: Could not open directory %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:652
+#: src/tools/testfind.c:258 src/tools/testls.c:202
 #, c-format
-msgid "3909 Error scanning mount command: %s\n"
+msgid "Err: Unknown file ff->type %d: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:673
+#: src/tools/testfind.c:308
 #, c-format
-msgid "3901 Device %s is already unmounted.\n"
+msgid "===== Filename truncated to 255 chars: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:682
+#: src/tools/testfind.c:325
 #, c-format
-msgid "3001 Device %s unmounted.\n"
+msgid "========== Path name truncated to 255 chars: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:686
+#: src/tools/testfind.c:334
 #, c-format
-msgid "3902 Device %s is busy in acquire.\n"
+msgid "========== Path length is zero. File=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:707
+#: src/tools/testfind.c:337
 #, c-format
-msgid "3002 Device %s unmounted.\n"
+msgid "Path: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:717
+#: src/tools/testls.c:45
 #, c-format
-msgid "3907 Error scanning unmount command: %s\n"
+msgid ""
+"\n"
+"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
+"       -a          print extended attributes (Win32 debug)\n"
+"       -dnn        set debug level to nn\n"
+"       -e          specify file of exclude patterns\n"
+"       -i          specify file of include patterns\n"
+"       -           read pattern(s) from stdin\n"
+"       -?          print this message.\n"
+"\n"
+"Patterns are file inclusion -- normally directories.\n"
+"Debug level >= 1 prints each file found.\n"
+"Debug level >= 10 prints path/file for catalog.\n"
+"Errors always printed.\n"
+"Files/paths truncated is number with len > 255.\n"
+"Truncation is only in catalog.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:742
+#: src/tools/testls.c:193
 #, c-format
-msgid "3911 Device %s already released.\n"
+msgid "Recursion turned off. Directory not entered. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:749
+#: src/tools/testls.c:196
 #, c-format
-msgid "3912 Device %s waiting for mount.\n"
+msgid "Skip: File system change prohibited. Directory not entered. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:753
+#: src/tools/fstype.c:34
 #, c-format
-msgid "3913 Device %s is busy in acquire.\n"
+msgid ""
+"\n"
+"Usage: fstype [-d debug_level] path ...\n"
+"\n"
+"       Print the file system type a given file/directory is on.\n"
+"       The following options are supported:\n"
+"\n"
+"       -v     print both path and file system type.\n"
+"       -?     print this message.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:757
+#: src/tools/fstype.c:86
 #, c-format
-msgid "3914 Device %s is being labeled.\n"
+msgid "%s: unknown\n"
 msgstr ""
 
-#: src/stored/dircmd.c:765
-#, c-format
-msgid "3012 Device %s released.\n"
+#: src/tray-monitor/authenticate.c:78
+msgid ""
+"Director authorization problem.\n"
+"Most likely the passwords do not agree.\n"
+"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
+"for help.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:775
-#, c-format
-msgid "3917 Error scanning release command: %s\n"
+#: src/tray-monitor/authenticate.c:127
+msgid ""
+"Director and Storage daemon passwords or names not the same.\n"
+"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
+"for help.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:808
-#, c-format
-msgid "3995 Device %s is not an autochanger.\n"
+#: src/tray-monitor/authenticate.c:172
+msgid ""
+"Director and File daemon passwords or names not the same.\n"
+"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
+"for help.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:826
+#: src/tray-monitor/tray-monitor.c:102
 #, c-format
-msgid "3908 Error scanning autocharger list/slots command: %s\n"
+msgid ""
+"Copyright (C) 2000-2004 Kern Sibbald and John Walker\n"
+"Written by Nicolas Boichat (2004)\n"
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     set configuration file to file\n"
+"       -dnn          set debug level to nn\n"
+"       -t            test - read configuration and exit\n"
+"       -?            print this message.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:864
+#: src/tray-monitor/tray-monitor.c:251
 #, c-format
-msgid "3909 Error scanning readlabel command: %s\n"
+msgid ""
+"Error: %d Monitor resource defined in %s. You must define one and only one "
+"Monitor resource.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:892
+#: src/tray-monitor/tray-monitor.c:282
 #, c-format
-msgid "3001 Volume=%s Slot=%d\n"
+msgid ""
+"No Client, Storage nor Director resource defined in %s\n"
+"Without that I don't how to get status from the File, Storage or Director "
+"Daemon :-(\n"
 msgstr ""
 
-#: src/stored/dircmd.c:921
+#: src/tray-monitor/tray-monitor.c:304
 #, c-format
-msgid "3910 Unable to open device %s: ERR=%s\n"
+msgid ""
+"Invalid refresh interval defined in %s\n"
+"This value must be greater or equal to 1 second and less or equal to 10 "
+"minutes (read value: %d).\n"
 msgstr ""
 
-#: src/stored/dircmd.c:931
-#, c-format
-msgid "3911 Device %s is busy reading.\n"
+#: src/tray-monitor/tray-monitor.c:319
+msgid "Open status window..."
 msgstr ""
 
-#: src/stored/dircmd.c:934
-#, c-format
-msgid "3912 Device %s is busy with %d writer(s).\n"
+#: src/tray-monitor/tray-monitor.c:325
+msgid "Exit"
 msgstr ""
 
-#: src/stored/fd_cmds.c:340
-msgid "Error parsing bootstrap file.\n"
+#: src/tray-monitor/tray-monitor.c:337
+msgid "Bacula tray monitor"
 msgstr ""
 
-#: src/stored/job.c:79
-#, c-format
-msgid "Bad Job Command from Director: %s\n"
+#: src/tray-monitor/tray-monitor.c:362
+msgid " (DIR)"
 msgstr ""
 
-#: src/stored/job.c:189
-#, c-format
-msgid "Job name not found: %s\n"
+#: src/tray-monitor/tray-monitor.c:366
+msgid " (FD)"
 msgstr ""
 
-#: src/stored/job.c:211
-msgid "Unable to authenticate File daemon\n"
+#: src/tray-monitor/tray-monitor.c:370
+msgid " (SD)"
 msgstr ""
 
-#: src/stored/job.c:338
-msgid "In free_jcr(), but still attached to device!!!!\n"
+#: src/tray-monitor/tray-monitor.c:383
+msgid "Unknown status."
 msgstr ""
 
-#: src/stored/label.c:74
-msgid "BAD call to read_dev_volume_label\n"
+#: src/tray-monitor/tray-monitor.c:424
+msgid "Refresh interval in seconds: "
 msgstr ""
 
-#: src/stored/label.c:79 src/stored/label.c:120 src/stored/label.c:208
+#: src/tray-monitor/tray-monitor.c:432
+msgid "Refresh now"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:436
+msgid "About"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:440
+msgid "Close"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:460
 #, c-format
-msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
+msgid "Disconnecting from Director %s:%d\n"
 msgstr ""
 
-#: src/stored/label.c:102
+#: src/tray-monitor/tray-monitor.c:463
 #, c-format
-msgid "Couldn't rewind device %s: ERR=%s\n"
+msgid "Disconnecting from Client %s:%d\n"
 msgstr ""
 
-#: src/stored/label.c:140
+#: src/tray-monitor/tray-monitor.c:466
 #, c-format
+msgid "Disconnecting from Storage %s:%d\n"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:502 src/tray-monitor/tray-monitor.c:512
+msgid "Bacula Tray Monitor"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:503 src/tray-monitor/tray-monitor.c:513
 msgid ""
-"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
+"Copyright (C) 2004 Kern Sibbald and John Walker\n"
+"Written by Nicolas Boichat\n"
 msgstr ""
 
-#: src/stored/label.c:145
-msgid "Could not read Volume label from block.\n"
+#: src/tray-monitor/tray-monitor.c:505
+msgid "Version"
 msgstr ""
 
-#: src/stored/label.c:148
+#: src/tray-monitor/tray-monitor.c:509
 #, c-format
-msgid "Could not unserialize Volume label: ERR=%s\n"
+msgid ""
+"%s\n"
+"\n"
+"%s\n"
+"%s %s (%s) %s %s %s"
 msgstr ""
 
-#: src/stored/label.c:153
-#, c-format
-msgid "Volume Header Id bad: %s\n"
+#: src/tray-monitor/tray-monitor.c:515
+msgid "Version:"
 msgstr ""
 
-#: src/stored/label.c:180
+#: src/tray-monitor/tray-monitor.c:583
 #, c-format
-msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
+msgid "Error, currentitem is not a Client or a Storage..\n"
 msgstr ""
 
-#: src/stored/label.c:191
+#: src/tray-monitor/tray-monitor.c:656
 #, c-format
-msgid "Volume on %s has bad Bacula label type: %x\n"
+msgid ""
+"Current job: %s\n"
+"Last job: %s"
 msgstr ""
 
-#: src/stored/label.c:272
+#: src/tray-monitor/tray-monitor.c:668
 #, c-format
-msgid "Cannot write Volume label to block for device %s\n"
+msgid " (%d errors)"
 msgstr ""
 
-#: src/stored/label.c:393
+#: src/tray-monitor/tray-monitor.c:671
 #, c-format
-msgid "Rewind error on device %s: ERR=%s\n"
+msgid " (%d error)"
 msgstr ""
 
-#: src/stored/label.c:398
-#, c-format
-msgid "Truncate error on device %s: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:708
+msgid "No current job."
 msgstr ""
 
-#: src/stored/label.c:420
-#, c-format
-msgid "Unable to write device %s: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:711
+msgid "No last job."
 msgstr ""
 
-#: src/stored/label.c:448
-#, c-format
-msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
+#: src/tray-monitor/tray-monitor.c:719
+msgid "Job status: Created"
 msgstr ""
 
-#: src/stored/label.c:451
-#, c-format
-msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
+#: src/tray-monitor/tray-monitor.c:724
+msgid "Job status: Running"
 msgstr ""
 
-#: src/stored/label.c:648
-#, c-format
-msgid "Bad session label = %d\n"
+#: src/tray-monitor/tray-monitor.c:728
+msgid "Job status: Blocked"
 msgstr ""
 
-#: src/stored/label.c:666 src/stored/label.c:673
-#, c-format
-msgid "Error writing Session label to %s: %s\n"
+#: src/tray-monitor/tray-monitor.c:733
+msgid "Job status: Terminated"
 msgstr ""
 
-#: src/stored/label.c:707
-#, c-format
-msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
+#: src/tray-monitor/tray-monitor.c:738
+msgid "Job status: Terminated in error"
 msgstr ""
 
-#: src/stored/label.c:929
-#, c-format
-msgid "Date written      : %s\n"
+#: src/tray-monitor/tray-monitor.c:744
+msgid "Job status: Error"
 msgstr ""
 
-#: src/stored/label.c:934
-#, c-format
-msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
+#: src/tray-monitor/tray-monitor.c:748
+msgid "Job status: Fatal error"
 msgstr ""
 
-#: src/stored/label.c:954
-msgid "Fresh Volume"
+#: src/tray-monitor/tray-monitor.c:753
+msgid "Job status: Verify differences"
 msgstr ""
 
-#: src/stored/label.c:960
-msgid "Begin Job Session"
+#: src/tray-monitor/tray-monitor.c:758
+msgid "Job status: Canceled"
 msgstr ""
 
-#: src/stored/label.c:963
-msgid "End Job Session"
+#: src/tray-monitor/tray-monitor.c:763
+msgid "Job status: Waiting on File daemon"
 msgstr ""
 
-#: src/stored/label.c:966
-msgid "End of Media"
+#: src/tray-monitor/tray-monitor.c:768
+msgid "Job status: Waiting on the Storage daemon"
 msgstr ""
 
-#: src/stored/label.c:972
-msgid "Unknown"
+#: src/tray-monitor/tray-monitor.c:773
+msgid "Job status: Waiting for new media"
 msgstr ""
 
-#: src/stored/label.c:994
-msgid "End of physical tape.\n"
+#: src/tray-monitor/tray-monitor.c:778
+msgid "Job status: Waiting for Mount"
 msgstr ""
 
-#: src/stored/mount.c:197 src/stored/mount.c:294
-#, c-format
-msgid "Volume \"%s\" not on device %s.\n"
+#: src/tray-monitor/tray-monitor.c:783
+msgid "Job status: Waiting for storage resource"
 msgstr ""
 
-#: src/stored/mount.c:230
+#: src/tray-monitor/tray-monitor.c:788
+msgid "Job status: Waiting for job resource"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:793
+msgid "Job status: Waiting for Client resource"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:798
+msgid "Job status: Waiting for maximum jobs"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:803
+msgid "Job status: Waiting for start time"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:808
+msgid "Job status: Waiting for higher priority jobs to finish"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:813
 #, c-format
-msgid ""
-"Director wanted Volume \"%s\".\n"
-"    Current Volume \"%s\" not acceptable because:\n"
-"    %s"
+msgid "Unknown job status %c."
 msgstr ""
 
-#: src/stored/mount.c:284
+#: src/tray-monitor/tray-monitor.c:814
 #, c-format
-msgid "Labeled new Volume \"%s\" on device %s.\n"
+msgid "Job status: Unknown(%c)"
 msgstr ""
 
-#: src/stored/mount.c:289
+#: src/tray-monitor/tray-monitor.c:821
 #, c-format
-msgid "Warning device %s not configured to autolabel Volumes.\n"
+msgid "Bad scan : '%s' %d\n"
 msgstr ""
 
-#: src/stored/mount.c:340
+#: src/tray-monitor/tray-monitor.c:859
 #, c-format
-msgid "Volume \"%s\" previously written, moving to end of data.\n"
+msgid "Connecting to Director %s:%d"
 msgstr ""
 
-#: src/stored/mount.c:343
+#: src/tray-monitor/tray-monitor.c:865
 #, c-format
-msgid "Unable to position to end of data on device %s: ERR=%s\n"
+msgid "Connecting to Client %s:%d\n"
 msgstr ""
 
-#: src/stored/mount.c:355
+#: src/tray-monitor/tray-monitor.c:866
 #, c-format
-msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
+msgid "Connecting to Client %s:%d"
 msgstr ""
 
-#: src/stored/mount.c:358
+#: src/tray-monitor/tray-monitor.c:872
 #, c-format
-msgid ""
-"I cannot write on Volume \"%s\" because:\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
+msgid "Connecting to Storage %s:%d\n"
 msgstr ""
 
-#: src/stored/mount.c:411
+#: src/tray-monitor/tray-monitor.c:873
 #, c-format
-msgid "Marking Volume \"%s\" in Error in Catalog.\n"
+msgid "Connecting to Storage %s:%d"
 msgstr ""
 
-#: src/stored/mount.c:427
+#: src/tray-monitor/tray-monitor.c:878 src/tray-monitor/tray-monitor.c:916
 #, c-format
-msgid ""
-"Autochanger Volume \"%s\" not found in slot %d.\n"
-"    Setting InChanger to zero in catalog.\n"
+msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:104 src/stored/parse_bsr.c:108
-#, c-format
-msgid ""
-"Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n"
-"%s\n"
+#: src/tray-monitor/tray-monitor.c:884
+msgid "Cannot connect to daemon.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:130
-#, c-format
-msgid "Cannot open bootstrap file %s: %s\n"
+#: src/tray-monitor/tray-monitor.c:885
+msgid "Cannot connect to daemon."
 msgstr ""
 
-#: src/stored/parse_bsr.c:260
+#: src/tray-monitor/tray-monitor.c:897
 #, c-format
-msgid "MediaType %s in bsr at inappropriate place.\n"
+msgid "Authentication error : %s"
 msgstr ""
 
-#: src/stored/read.c:55
-msgid "No Volume names found for restore.\n"
+#: src/tray-monitor/tray-monitor.c:904
+msgid "Opened connection with Director daemon.\n"
 msgstr ""
 
-#: src/stored/read.c:110 src/stored/read.c:125
-#, c-format
-msgid "Error sending to File daemon. ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:905
+msgid "Opened connection with Director daemon."
 msgstr ""
 
-#: src/stored/read_record.c:302
-#, c-format
-msgid "Forward spacing to file:block %u:%u.\n"
+#: src/tray-monitor/tray-monitor.c:908
+msgid "Opened connection with File daemon.\n"
 msgstr ""
 
-#: src/stored/spool.c:91
-msgid "Spooling data ...\n"
+#: src/tray-monitor/tray-monitor.c:909
+msgid "Opened connection with File daemon."
 msgstr ""
 
-#: src/stored/spool.c:150
-#, c-format
-msgid "Open data spool file %s failed: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:912
+msgid "Opened connection with Storage daemon.\n"
 msgstr ""
 
-#: src/stored/spool.c:198
-#, c-format
-msgid "%s spooled data to Volume. Despooling %s bytes ...\n"
+#: src/tray-monitor/tray-monitor.c:913
+msgid "Opened connection with Storage daemon."
 msgstr ""
 
-#: src/stored/spool.c:252 src/stored/spool.c:426 src/stored/spool.c:464
-#, c-format
-msgid "Ftruncate spool file failed: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:948
+msgid "<< Error: BNET_PROMPT signal received. >>\n"
 msgstr ""
 
-#: src/stored/spool.c:303
-#, c-format
-msgid "Spool header read error. ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:953 src/wx-console/console_thread.cpp:442
+msgid "<< Heartbeat signal received, answered. >>\n"
 msgstr ""
 
-#: src/stored/spool.c:307
+#: src/tray-monitor/tray-monitor.c:957
 #, c-format
-msgid "Spool header read error. Wanted %u bytes, got %d\n"
+msgid "<< Unexpected signal received : %s >>\n"
 msgstr ""
 
-#: src/stored/spool.c:314
-#, c-format
-msgid "Spool block too big. Max %u bytes, got %u\n"
+#: src/tray-monitor/tray-monitor.c:962
+msgid "<ERROR>\n"
 msgstr ""
 
-#: src/stored/spool.c:320
-#, c-format
-msgid "Spool data read error. Wanted %u bytes, got %d\n"
+#: src/tray-monitor/tray-monitor.c:966
+msgid "Error : BNET_HARDEOF or BNET_ERROR"
 msgstr ""
 
-#: src/stored/spool.c:377
-msgid "User specified spool size reached.\n"
+#: src/tray-monitor/tray-monitor.c:972
+msgid "<STOP>\n"
 msgstr ""
 
-#: src/stored/spool.c:387
-msgid "Spooling data again ...\n"
+#: src/tray-monitor/tray-monitor.c:976
+msgid "Error : Connection closed."
 msgstr ""
 
-#: src/stored/spool.c:418
+#: src/tray-monitor/tray_conf.c:161
 #, c-format
-msgid "Error writing header to spool file. ERR=%s\n"
+msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:432 src/stored/spool.c:470
-msgid "Fatal despooling error."
+#: src/tray-monitor/tray_conf.c:167
+#, c-format
+msgid "Director: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:439
-msgid "Retrying after header spooling error failed.\n"
+#: src/tray-monitor/tray_conf.c:171
+#, c-format
+msgid "Client: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:453
+#: src/tray-monitor/tray_conf.c:175
 #, c-format
-msgid "Error writing data to spool file. ERR=%s\n"
+msgid "Storage: name=%s address=%s SDport=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:480
-msgid "Retrying after data spooling error failed.\n"
+#: src/wx-console/authenticate.c:126
+msgid "Bad response to Hello command: ERR="
 msgstr ""
 
-#: src/stored/spool.c:535 src/stored/spool.c:542
+#: src/baconfig.h:52
 #, c-format
-msgid "Fseek on attributes file failed: ERR=%s\n"
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/stored/spool.c:552
-#, c-format
-msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
+#: src/baconfig.h:59
+msgid "*None*"
 msgstr ""
 
-#: src/stored/spool.c:579
+#: src/wx-console/console_thread.cpp:100
 #, c-format
-msgid "fopen attr spool file %s failed: ERR=%s\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Director \"%s\" in config file.\n"
+" At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/stored/status.c:93
+#: src/wx-console/console_thread.cpp:109
 msgid ""
-"\n"
-"Device status:\n"
+"No Director resource defined in config file.\n"
+"Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/stored/status.c:95
+#: src/wx-console/console_thread.cpp:129
 #, c-format
-msgid "Autochanger \"%s\" with devices:\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Console \"%s\" in config file.\n"
 msgstr ""
 
-#: src/stored/status.c:109
-#, c-format
-msgid "Device %s is mounted with Volume \"%s\"\n"
+#: src/wx-console/console_thread.cpp:151
+msgid "Error while initializing windows sockets...\n"
 msgstr ""
 
-#: src/stored/status.c:112
-#, c-format
-msgid "Device %s open but no Bacula volume is mounted.\n"
+#: src/wx-console/console_thread.cpp:166
+msgid "Error while cleaning up windows sockets...\n"
 msgstr ""
 
-#: src/stored/status.c:122
-#, c-format
-msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
+#: src/wx-console/console_thread.cpp:204
+msgid "Error while initializing library."
 msgstr ""
 
-#: src/stored/status.c:136
-#, c-format
-msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
+#: src/wx-console/console_thread.cpp:234
+msgid "Please correct configuration file.\n"
 msgstr ""
 
-#: src/stored/status.c:141
-#, c-format
-msgid "    Positioned at File=%s Block=%s\n"
+#: src/wx-console/console_thread.cpp:267
+msgid "Error : Library not initialized\n"
 msgstr ""
 
-#: src/stored/status.c:147
-#, c-format
-msgid "Device %s is not open or does not exist.\n"
+#: src/wx-console/console_thread.cpp:278
+msgid "Error : No configuration file loaded\n"
 msgstr ""
 
-#: src/stored/status.c:149
-#, c-format
-msgid "Device \"%s\" is not open or does not exist.\n"
+#: src/wx-console/console_thread.cpp:288
+msgid "Connecting...\n"
 msgstr ""
 
-#: src/stored/status.c:184
-msgid "    Device is BLOCKED. User unmounted.\n"
+#: src/wx-console/console_thread.cpp:304
+msgid "Error : No director defined in config file.\n"
 msgstr ""
 
-#: src/stored/status.c:187
-msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
+#: src/wx-console/console_thread.cpp:316
+msgid "Multiple directors found in your config file.\n"
 msgstr ""
 
-#: src/stored/status.c:191
+#: src/wx-console/console_thread.cpp:325
 #, c-format
-msgid "    Device is BLOCKED waiting for mount of volume \"%s\".\n"
+msgid "Please choose a director (1-%s): "
 msgstr ""
 
-#: src/stored/status.c:194
-msgid "    Device is BLOCKED waiting for media.\n"
+#: src/wx-console/console_thread.cpp:397
+msgid "Failed to connect to the director\n"
 msgstr ""
 
-#: src/stored/status.c:198
-msgid "    Device is being initialized.\n"
+#: src/wx-console/console_thread.cpp:407
+msgid "Connected\n"
 msgstr ""
 
-#: src/stored/status.c:201
-msgid "    Device is blocked labeling a Volume.\n"
+#: src/wx-console/console_thread.cpp:445
+msgid "<< Unexpected signal received : "
 msgstr ""
 
-#: src/stored/status.c:209
-#, c-format
-msgid "    Slot %d is loaded in drive %d.\n"
+#: src/wx-console/console_thread.cpp:463
+msgid "Connection terminated\n"
+msgstr ""
+
+#: src/wx-console/main.cpp:96
+msgid "Bacula wx-console"
 msgstr ""
 
-#: src/stored/status.c:212
+#: src/wx-console/main.cpp:101 src/wx-console/wxbmainframe.cpp:248
 #, c-format
-msgid "    Drive %d is not loaded.\n"
+msgid "Welcome to bacula wx-console %s (%s)!\n"
 msgstr ""
 
-#: src/stored/status.c:231
-msgid "Device state:\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:41
+msgid "Config file editor"
 msgstr ""
 
-#: src/stored/status.c:268
-#, c-format
-msgid "%s Job %s waiting for Client connection.\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:57
+msgid "Save and close"
 msgstr ""
 
-#: src/stored/status.c:280
-#, c-format
-msgid "%s %s job %s JobId=%d Volume=\"%s\" device=\"%s\"\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:58
+msgid "Close without saving"
 msgstr ""
 
-#: src/stored/status.c:331
-msgid " JobId  Level   Files          Bytes Status   Finished        Name \n"
+#: src/wx-console/wxbconfigfileeditor.cpp:69
+msgid "# Bacula wx-console Configuration File\n"
 msgstr ""
 
-#: src/stored/stored.c:66
+#: src/wx-console/wxbconfigfileeditor.cpp:100
 #, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -dnn        set debug level to nn\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g <group>  set groupid to group\n"
-"        -p          proceed despite I/O errors\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test - read config and exit\n"
-"        -u <user>   userid to <user>\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
+msgid "Unable to write to %s\n"
 msgstr ""
 
-#: src/stored/stored.c:217
-msgid "Volume Session Time is ZERO!\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:101
+msgid "Error while saving"
 msgstr ""
 
-#: src/stored/stored.c:230
-#, c-format
-msgid "Unable to create thread. ERR=%s\n"
+#: src/wx-console/wxbconfigpanel.cpp:184
+msgid "Apply"
 msgstr ""
 
-#: src/stored/stored.c:269
-#, c-format
-msgid "Only one Storage resource permitted in %s\n"
+#: src/wx-console/wxbhistorytextctrl.cpp:61
+#: src/wx-console/wxbhistorytextctrl.cpp:132
+#: src/wx-console/wxbmainframe.cpp:272
+msgid "Type your command below:"
 msgstr ""
 
-#: src/stored/stored.c:274
-#, c-format
-msgid "No Director resource defined in %s. Cannot continue.\n"
+#: src/wx-console/wxbhistorytextctrl.cpp:96
+msgid "Unknown command."
 msgstr ""
 
-#: src/stored/stored.c:279
-#, c-format
-msgid "No Device resource defined in %s. Cannot continue.\n"
+#: src/wx-console/wxbhistorytextctrl.cpp:105
+msgid "Possible completions: "
 msgstr ""
 
-#: src/stored/stored.c:287
-#, c-format
-msgid "No Messages resource defined in %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:258
+#: src/wx-console/wxbrestorepanel.cpp:1861
+#: src/wx-console/wxbrestorepanel.cpp:1890
+msgid "Enter restore mode"
 msgstr ""
 
-#: src/stored/stored.c:314
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
+#: src/wx-console/wxbrestorepanel.cpp:261
+msgid "Cancel restore"
 msgstr ""
 
-#: src/stored/stored.c:320
-#, c-format
-msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
+#: src/wx-console/wxbrestorepanel.cpp:287
+#: src/wx-console/wxbrestorepanel.cpp:341
+msgid "Add"
 msgstr ""
 
-#: src/stored/stored.c:326
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
+#: src/wx-console/wxbrestorepanel.cpp:289
+#: src/wx-console/wxbrestorepanel.cpp:343
+msgid "Remove"
 msgstr ""
 
-#: src/stored/stored.c:414
-#, c-format
-msgid "No Changer Name given for device %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:291
+#: src/wx-console/wxbrestorepanel.cpp:345
+msgid "Refresh"
 msgstr ""
 
-#: src/stored/stored.c:420
-#, c-format
-msgid "No Changer Command given for device %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:310
+msgid "M"
 msgstr ""
 
-#: src/stored/stored.c:432
-#, c-format
-msgid ""
-"Media Type not the same for all devices in changer %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:326
+msgid "Perm."
 msgstr ""
 
-#: src/stored/stored.c:493
-#, c-format
-msgid "Could not initialize %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:359
+#: src/wx-console/wxbrestorepanel.cpp:372
+#: src/wx-console/wxbrestorepanel.cpp:524
+#: src/wx-console/wxbrestorepanel.cpp:534
+#: src/wx-console/wxbrestorepanel.cpp:537
+#: src/wx-console/wxbrestorepanel.cpp:1732
+#: src/wx-console/wxbrestorepanel.cpp:1812
+msgid "Job Name"
 msgstr ""
 
-#: src/stored/stored.c:506
-#, c-format
-msgid "Could not open device %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:361
+#: src/wx-console/wxbrestorepanel.cpp:377
+#: src/wx-console/wxbrestorepanel.cpp:476
+#: src/wx-console/wxbrestorepanel.cpp:477
+#: src/wx-console/wxbrestorepanel.cpp:487
+#: src/wx-console/wxbrestorepanel.cpp:488
+#: src/wx-console/wxbrestorepanel.cpp:1101
+#: src/wx-console/wxbrestorepanel.cpp:1768
+#: src/wx-console/wxbrestorepanel.cpp:1827
+msgid "Fileset"
 msgstr ""
 
-#: src/stored/stored.c:523
-#, c-format
-msgid "Could not mount device %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:364
+#: src/wx-console/wxbrestorepanel.cpp:1168
+#: src/wx-console/wxbrestorepanel.cpp:1183
+#: src/wx-console/wxbrestorepanel.cpp:1185
+#: src/wx-console/wxbrestorepanel.cpp:1193
+#: src/wx-console/wxbrestorepanel.cpp:1195
+#: src/wx-console/wxbrestorepanel.cpp:1212
+#: src/wx-console/wxbrestorepanel.cpp:1219
+#: src/wx-console/wxbrestorepanel.cpp:1759
+#: src/wx-console/wxbrestorepanel.cpp:1885
+msgid "Before"
 msgstr ""
 
-#: src/stored/stored_conf.c:188
-#, c-format
-msgid "Warning: no \"%s\" resource (%d) defined.\n"
+#: src/wx-console/wxbrestorepanel.cpp:366
+msgid "Please configure parameters concerning files to restore :"
 msgstr ""
 
-#: src/stored/stored_conf.c:307
-#, c-format
-msgid "Warning: unknown resource type %d\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+#: src/wx-console/wxbrestorepanel.cpp:1820
+msgid "always"
 msgstr ""
 
-#: src/stored/stored_conf.c:496
-#, c-format
-msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+msgid "if newer"
 msgstr ""
 
-#: src/stored/stored_conf.c:502
-#, c-format
-msgid "Too many items in \"%s\" resource\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+msgid "if older"
 msgstr ""
 
-#: src/stored/stored_conf.c:607
-#, c-format
-msgid ""
-"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+#: src/wx-console/wxbrestorepanel.cpp:1823
+msgid "never"
 msgstr ""
 
-#: src/stored/ansi_label.c:83
-#, c-format
-msgid "Read error on device %s in ANSI label. ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:383
+msgid "Please configure parameters concerning files restoration :"
 msgstr ""
 
-#: src/stored/ansi_label.c:93
-msgid "Insane! End of tape while reading ANSI label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:448
+msgid "Getting parameters list."
 msgstr ""
 
-#: src/stored/ansi_label.c:117
-msgid "No VOL1 label while reading ANSI/IBM label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:456
+msgid "Error : no clients returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:148
-msgid "No HDR1 label while reading ANSI label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:480
+msgid "Error : no filesets returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:154
-#, c-format
-msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
+#: src/wx-console/wxbrestorepanel.cpp:504
+msgid "Error : no storage returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:165
-msgid "No HDR2 label while reading ANSI/IBM label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:527
+#: src/wx-console/wxbrestorepanel.cpp:551
+msgid "Error : no jobs returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:179
-msgid "Unknown or bad ANSI/IBM label record.\n"
+#: src/wx-console/wxbrestorepanel.cpp:537
+msgid "RestoreFiles"
 msgstr ""
 
-#: src/stored/ansi_label.c:186
-msgid "Too many records in while reading ANSI/IBM label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:572
+msgid "Please configure your restore parameters."
 msgstr ""
 
-#: src/stored/ansi_label.c:285
-#, c-format
-msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
+#: src/wx-console/wxbrestorepanel.cpp:583
+msgid "Building restore tree..."
 msgstr ""
 
-#: src/stored/ansi_label.c:302
-#, c-format
-msgid "Could not write ANSI VOL1 label. ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:622
+msgid "Error while starting restore: "
 msgstr ""
 
-#: src/stored/ansi_label.c:340 src/stored/ansi_label.c:369
-#, c-format
-msgid "Could not write ANSI HDR1 label. ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:712
+msgid ""
+"Right click on a file or on a directory, or double-click on its mark to add "
+"it to the restore list."
 msgstr ""
 
-#: src/stored/ansi_label.c:345 src/stored/ansi_label.c:376
-msgid "Could not write ANSI HDR1 label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:729
+msgid " files selected to be restored."
 msgstr ""
 
-#: src/stored/ansi_label.c:381
+#: src/wx-console/wxbrestorepanel.cpp:734
+msgid " file selected to be restored."
+msgstr ""
+
+#: src/wx-console/wxbrestorepanel.cpp:741
 #, c-format
-msgid "Error writing EOF to tape. ERR=%s"
+msgid "Please configure your restore (%s files selected to be restored)..."
 msgstr ""
 
-#: src/stored/ansi_label.c:386
-msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
+#: src/wx-console/wxbrestorepanel.cpp:751
+msgid "Restore failed : no file selected.\n"
 msgstr ""
 
-#: src/stored/dvd.c:342
-#, c-format
-msgid "Remaining free space %s on %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:752
+msgid "Restore failed : no file selected."
 msgstr ""
 
-#: src/stored/dvd.c:411
-#, c-format
-msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:762
+msgid "Restoring, please wait..."
 msgstr ""
 
-#: src/stored/dvd.c:429
-#, c-format
-msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:775
+msgid "Job started. JobId="
 msgstr ""
 
-#: src/stored/dvd.c:633
-#, c-format
-msgid "Unable to write part %s: ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:777
+msgid "Restore started, jobid="
 msgstr ""
 
-#: src/stored/wait.c:178 src/stored/wait.c:236
-#, c-format
-msgid "Job %s waiting to reserve a device.\n"
+#: src/wx-console/wxbrestorepanel.cpp:781
+msgid "Job failed."
 msgstr ""
 
-#: src/stored/pythonsd.c:59
-msgid "SDName"
+#: src/wx-console/wxbrestorepanel.cpp:782
+msgid "Restore failed, please look at messages.\n"
 msgstr ""
 
-#: src/stored/reserve.c:344 src/stored/reserve.c:361
-#, c-format
-msgid "Failed command: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:783
+msgid "Restore failed, please look at messages in console."
 msgstr ""
 
-#: src/stored/reserve.c:346
-#, c-format
-msgid ""
-"\n"
-"     Device \"%s\" with MediaType \"%s\" requested by DIR not found in SD "
-"Device resources.\n"
+#: src/wx-console/wxbrestorepanel.cpp:789
+#: src/wx-console/wxbrestorepanel.cpp:790
+msgid "Failed to retrieve jobid.\n"
 msgstr ""
 
-#: src/stored/reserve.c:528
-#, c-format
-msgid "3926 Could not get dcr for device: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:816
+msgid ""
+"Restore is scheduled in more than two minutes, wx-console will not wait for "
+"its completion.\n"
 msgstr ""
 
-#: src/stored/reserve.c:568 src/stored/reserve.c:623
-#, c-format
-msgid "Device %s is BLOCKED due to user unmount.\n"
+#: src/wx-console/wxbrestorepanel.cpp:817
+msgid ""
+"Restore is scheduled in more than two minutes, wx-console will not wait for "
+"its completion."
 msgstr ""
 
-#: src/stored/reserve.c:576
-#, c-format
-msgid "Device %s is busy.\n"
+#: src/wx-console/wxbrestorepanel.cpp:841
+msgid "Restore job created, but not yet running."
 msgstr ""
 
-#: src/stored/reserve.c:631
+#: src/wx-console/wxbrestorepanel.cpp:846
 #, c-format
-msgid "Device %s is busy writing on another Volume.\n"
+msgid "Restore job running, please wait (%d of %d files restored)..."
 msgstr ""
 
-#: src/stored/reserve.c:705
-#, c-format
-msgid "Wanted Pool \"%s\", but device %s is using Pool \"%s\" .\n"
+#: src/wx-console/wxbrestorepanel.cpp:850
+msgid "Restore job terminated successfully."
 msgstr ""
 
-#: src/stored/reserve.c:711
-msgid "Logic error!!!! Should not get here.\n"
+#: src/wx-console/wxbrestorepanel.cpp:851
+msgid "Restore job terminated successfully.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:154
-msgid ""
-"Warning skipping the additional parameters for working directory/dbname/user/"
-"password/host.\n"
+#: src/wx-console/wxbrestorepanel.cpp:856
+msgid "Restore job terminated in error, see messages in console."
+msgstr ""
+
+#: src/wx-console/wxbrestorepanel.cpp:857
+msgid "Restore job terminated in error, see messages.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:195
-msgid "Wrong number of arguments.\n"
+#: src/wx-console/wxbrestorepanel.cpp:862
+msgid "Restore job reported a non-fatal error."
 msgstr ""
 
-#: src/tools/dbcheck.c:200
-msgid "Working directory not supplied.\n"
+#: src/wx-console/wxbrestorepanel.cpp:866
+msgid "Restore job reported a fatal error."
 msgstr ""
 
-#: src/tools/dbcheck.c:272
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Repair bad Filename records\n"
-"     4) Repair bad Path records\n"
-"     5) Eliminate duplicate Filename records\n"
-"     6) Eliminate duplicate Path records\n"
-"     7) Eliminate orphaned Jobmedia records\n"
-"     8) Eliminate orphaned File records\n"
-"     9) Eliminate orphaned Path records\n"
-"    10) Eliminate orphaned Filename records\n"
-"    11) Eliminate orphaned FileSet records\n"
-"    12) Eliminate orphaned Client records\n"
-"    13) Eliminate orphaned Job records\n"
-"    14) Eliminate all Admin records\n"
-"    15) Eliminate all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
+#: src/wx-console/wxbrestorepanel.cpp:871
+msgid "Restore job cancelled by user."
 msgstr ""
 
-#: src/tools/dbcheck.c:291
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Check for bad Filename records\n"
-"     4) Check for bad Path records\n"
-"     5) Check for duplicate Filename records\n"
-"     6) Check for duplicate Path records\n"
-"     7) Check for orphaned Jobmedia records\n"
-"     8) Check for orphaned File records\n"
-"     9) Check for orphaned Path records\n"
-"    10) Check for orphaned Filename records\n"
-"    11) Check for orphaned FileSet records\n"
-"    12) Check for orphaned Client records\n"
-"    13) Check for orphaned Job records\n"
-"    14) Check for all Admin records\n"
-"    15) Check for all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
+#: src/wx-console/wxbrestorepanel.cpp:872
+msgid "Restore job cancelled by user.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:311
-msgid "Select function number: "
+#: src/wx-console/wxbrestorepanel.cpp:877
+msgid "Restore job is waiting on File daemon."
 msgstr ""
 
-#: src/tools/dbcheck.c:317
-#, c-format
-msgid "Database will %sbe modified.\n"
+#: src/wx-console/wxbrestorepanel.cpp:881
+msgid "Restore job is waiting for new media."
 msgstr ""
 
-#: src/tools/dbcheck.c:317
-msgid "NOT "
+#: src/wx-console/wxbrestorepanel.cpp:885
+msgid "Restore job is waiting for storage resource."
 msgstr ""
 
-#: src/tools/dbcheck.c:321
-#, c-format
-msgid "Verbose is %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:889
+msgid "Restore job is waiting for job resource."
 msgstr ""
 
-#: src/tools/dbcheck.c:321
-msgid "On"
+#: src/wx-console/wxbrestorepanel.cpp:893
+msgid "Restore job is waiting for Client resource."
 msgstr ""
 
-#: src/tools/dbcheck.c:321
-msgid "Off"
+#: src/wx-console/wxbrestorepanel.cpp:897
+msgid "Restore job is waiting for maximum jobs."
 msgstr ""
 
-#: src/tools/dbcheck.c:404
-#, c-format
-msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:901
+msgid "Restore job is waiting for start time."
 msgstr ""
 
-#: src/tools/dbcheck.c:412
-#, c-format
-msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
+#: src/wx-console/wxbrestorepanel.cpp:905
+msgid "Restore job is waiting for higher priority jobs to finish."
 msgstr ""
 
-#: src/tools/dbcheck.c:419
-#, c-format
-msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
+#: src/wx-console/wxbrestorepanel.cpp:954
+msgid ""
+"The restore job has not been started within one minute, wx-console will not "
+"wait for its completion anymore.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:426
-#, c-format
-msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:955
+msgid ""
+"The restore job has not been started within one minute, wx-console will not "
+"wait for its completion anymore."
 msgstr ""
 
-#: src/tools/dbcheck.c:433
-#, c-format
-msgid "Orphaned ClientId=%s Name=\"%s\"\n"
+#: src/wx-console/wxbrestorepanel.cpp:965
+msgid "Restore done successfully.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:613
-#, c-format
-msgid "Checking for duplicate Path entries.\n"
+#: src/wx-console/wxbrestorepanel.cpp:966
+msgid "Restore done successfully."
 msgstr ""
 
-#: src/tools/testfind.c:49
-#, c-format
-msgid ""
-"\n"
-"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -dnn        set debug level to nn\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are used for file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors are always printed.\n"
-"Files/paths truncated is the number of files/paths with len > 255.\n"
-"Truncation is only in the catalog.\n"
-"\n"
+#: src/wx-console/wxbrestorepanel.cpp:1037
+msgid "Applying restore configuration changes..."
 msgstr ""
 
-#: src/tools/testfind.c:156
-#, c-format
-msgid ""
-"Total files    : %d\n"
-"Max file length: %d\n"
-"Max path length: %d\n"
-"Files truncated: %d\n"
-"Paths truncated: %d\n"
-"Hard links     : %d\n"
+#: src/wx-console/wxbrestorepanel.cpp:1088
+msgid "Failed to find the selected client."
 msgstr ""
 
-#: src/tools/testfind.c:236 src/tools/testls.c:174
-#, c-format
-msgid "Err: Could not access %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1103
+msgid "Failed to find the selected fileset."
 msgstr ""
 
-#: src/tools/testfind.c:239 src/tools/testls.c:177
-#, c-format
-msgid "Err: Could not follow ff->link %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1118
+msgid "Failed to find the selected storage."
 msgstr ""
 
-#: src/tools/testfind.c:242 src/tools/testls.c:180
-#, c-format
-msgid "Err: Could not stat %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1135
+#: src/wx-console/wxbrestorepanel.cpp:1801
+msgid "Run Restore job"
 msgstr ""
 
-#: src/tools/testfind.c:245 src/tools/testls.c:183
-#, c-format
-msgid "Skip: File not saved. No change. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1151
+msgid "Restore configuration changes were applied."
 msgstr ""
 
-#: src/tools/testfind.c:248 src/tools/testls.c:186
-#, c-format
-msgid "Err: Attempt to backup archive. Not saved. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1160
+msgid "Restore cancelled.\n"
 msgstr ""
 
-#: src/tools/testfind.c:251 src/tools/testls.c:195
-#, c-format
-msgid "Err: Could not open directory %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1161
+msgid "Restore cancelled."
 msgstr ""
 
-#: src/tools/testfind.c:254 src/tools/testls.c:198
-#, c-format
-msgid "Err: Unknown file ff->type %d: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1182
+msgid "No results to list."
 msgstr ""
 
-#: src/tools/testfind.c:304
-#, c-format
-msgid "===== Filename truncated to 255 chars: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1184
+msgid "No backup found for this client."
 msgstr ""
 
-#: src/tools/testfind.c:321
-#, c-format
-msgid "========== Path name truncated to 255 chars: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1191
+msgid "ERROR"
 msgstr ""
 
-#: src/tools/testfind.c:330
-#, c-format
-msgid "========== Path length is zero. File=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1192
+msgid "Query failed"
 msgstr ""
 
-#: src/tools/testls.c:45
-#, c-format
-msgid ""
-"\n"
-"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -dnn        set debug level to nn\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors always printed.\n"
-"Files/paths truncated is number with len > 255.\n"
-"Truncation is only in catalog.\n"
-"\n"
+#: src/wx-console/wxbrestorepanel.cpp:1194
+msgid "Cannot get previous backups list, see console."
 msgstr ""
 
-#: src/tools/testls.c:189
-#, c-format
-msgid "Recursion turned off. Directory not entered. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1811
+msgid "JobName:"
 msgstr ""
 
-#: src/tools/testls.c:192
-#, c-format
-msgid "Skip: File system change prohibited. Directory not entered. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1815
+msgid "Where:"
 msgstr ""
 
-#: src/tools/fstype.c:34
-#, c-format
-msgid ""
-"\n"
-"Usage: fstype [-d debug_level] path ...\n"
-"\n"
-"       Print the file system type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
+#: src/wx-console/wxbrestorepanel.cpp:1818
+msgid "Replace:"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:78
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/wx-console/wxbrestorepanel.cpp:1821
+msgid "ifnewer"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:127
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/wx-console/wxbrestorepanel.cpp:1822
+msgid "ifolder"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:172
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/wx-console/wxbrestorepanel.cpp:1826
+msgid "FileSet:"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:102
-#, c-format
-msgid ""
-"Copyright (C) 2000-2004 Kern Sibbald and John Walker\n"
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: "
+#: src/wx-console/wxbrestorepanel.cpp:1942
+msgid "Restoring..."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:104
-#, c-format
-msgid ""
-") %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -dnn          set debug level to nn\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
+#: src/wx-console/wxbmainframe.cpp:227
+msgid "&About...\tF1"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:248
-#, c-format
-msgid ""
-"Error: %d Monitor resource defined in %s. You must define one and only one "
-"Monitor resource.\n"
+#: src/wx-console/wxbmainframe.cpp:227
+msgid "Show about dialog"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:279
-#, c-format
-msgid ""
-"No Client, Storage nor Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
+#: src/wx-console/wxbmainframe.cpp:229 src/wx-console/wxbmainframe.cpp:590
+msgid "Connect to the director"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:301
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
+#: src/wx-console/wxbmainframe.cpp:230
+msgid "Disconnect"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:359
-msgid " (DIR)"
+#: src/wx-console/wxbmainframe.cpp:230
+msgid "Disconnect of the director"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:363
-msgid " (FD)"
+#: src/wx-console/wxbmainframe.cpp:232
+msgid "Change of configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:367
-msgid " (SD)"
+#: src/wx-console/wxbmainframe.cpp:232
+msgid "Change your default configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:380
-msgid "Unknown status."
+#: src/wx-console/wxbmainframe.cpp:233
+msgid "Edit your configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:421
-msgid "Refresh interval in seconds: "
+#: src/wx-console/wxbmainframe.cpp:235
+msgid "E&xit\tAlt-X"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:429
-msgid "Refresh now"
+#: src/wx-console/wxbmainframe.cpp:235
+msgid "Quit this program"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:433
-msgid "About"
+#: src/wx-console/wxbmainframe.cpp:239
+msgid "&File"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:437
-msgid "Close"
+#: src/wx-console/wxbmainframe.cpp:240
+msgid "&Help"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:496
-msgid ""
-"<span size='x-large' weight='bold'>Bacula Tray Monitor</span>\n"
-"\n"
-"Copyright (C) 2004 Kern Sibbald and John Walker\n"
-"Written by Nicolas Boichat\n"
-"\n"
-"<small>Version: "
+#: src/wx-console/wxbmainframe.cpp:257
+msgid "Console"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:499
-#, c-format
-msgid ") %s %s %s</small>"
+#: src/wx-console/wxbmainframe.cpp:264
+msgid ""
+"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:503
+#: src/wx-console/wxbmainframe.cpp:268
 msgid ""
-"Bacula Tray Monitor\n"
-"\n"
-"Copyright (C) 2004 Kern Sibbald and John Walker\n"
-"Written by Nicolas Boichat\n"
-"\n"
-"Version: "
+"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
+"support when handling non-ASCII filenames: Every non-ASCII character in such "
+"filenames will be replaced by an interrogation mark.\n"
+"If this behaviour disturbs you, please build wx-console against a Unicode "
+"version of wxWidgets for GTK+ 2.0.\n"
+"---\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:506
-#, c-format
-msgid ") %s %s %s"
+#: src/wx-console/wxbmainframe.cpp:279
+msgid "Send"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:690
-msgid "No current job."
+#: src/wx-console/wxbmainframe.cpp:356 src/wx-console/wxbmainframe.cpp:368
+msgid "Error while parsing command line arguments, using defaults.\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:693
-msgid "No last job."
+#: src/wx-console/wxbmainframe.cpp:357 src/wx-console/wxbmainframe.cpp:369
+msgid "Usage: wx-console [-c configfile] [-w tmp]\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:701
+#: src/wx-console/wxbmainframe.cpp:397
 #, c-format
-msgid "Job status: Created (%d error%s)"
+msgid ""
+"It seems that it is the first time you run wx-console.\n"
+"This file (%s) has been choosen as default configuration file.\n"
+"Do you want to edit it? (if you click No you will have to select another "
+"file)"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:705
-#, c-format
-msgid "Job status: Running (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:401
+msgid "First run"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:708
+#: src/wx-console/wxbmainframe.cpp:418
 #, c-format
-msgid "Job status: Blocked (%d error%s)"
+msgid ""
+"Unable to read %s\n"
+"Error: %s\n"
+"Do you want to choose another one? (Press no to edit this file)"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:712
-#, c-format
-msgid "Job status: Terminated (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:421
+msgid "Unable to read configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:716
-#, c-format
-msgid "Job status: Terminated in error (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:433
+msgid "Please choose a configuration file to use"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:721
-#, c-format
-msgid "Job status: Error (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:446
+msgid "This configuration file has been successfully read, use it as default?"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:724
-#, c-format
-msgid "Job status: Fatal error (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:447
+msgid "Configuration file read successfully"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:728
+#: src/wx-console/wxbmainframe.cpp:457
 #, c-format
-msgid "Job status: Verify differences (%d error%s)"
+msgid "Using this configuration file: %s\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:732
-#, c-format
-msgid "Job status: Canceled (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:462
+msgid "Connecting to the director..."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:736
-#, c-format
-msgid "Job status: Waiting on File daemon (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:477
+msgid "Failed to unregister a data parser !"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:740
-#, c-format
-msgid "Job status: Waiting on the Storage daemon (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:485
+msgid "Quitting.\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:744
-#, c-format
-msgid "Job status: Waiting for new media (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:500
+msgid ""
+"Welcome to Bacula wx-console.\n"
+"Written by Nicolas Boichat <nicolas@boichat.ch>\n"
+"(C) 2004 Kern Sibbald and John Walker\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:748
-#, c-format
-msgid "Job status: Waiting for Mount (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:502
+msgid "About Bacula wx-console"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:752
-#, c-format
-msgid "Job status: Waiting for storage resource (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:508
+msgid "Please choose your default configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:756
-#, c-format
-msgid "Job status: Waiting for job resource (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:512
+msgid "Use this configuration file as default?"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:760
-#, c-format
-msgid "Job status: Waiting for Client resource (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:513
+msgid "Configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:764
-#, c-format
-msgid "Job status: Waiting for maximum jobs (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:577
+msgid "Console thread terminated."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:768
-#, c-format
-msgid "Job status: Waiting for start time (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:581
+msgid "Connection to the director lost. Quit program?"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:772
-#, c-format
-msgid "Job status: Waiting for higher priority jobs to finish (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:582
+msgid "Connection lost"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:777
-#, c-format
-msgid "Job status: Unknown(%c) (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:598
+msgid "Connected to the director."
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:100
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in config file.\n"
-" At least one CA certificate store is required.\n"
+#: src/wx-console/wxbmainframe.cpp:612
+msgid "Reconnect"
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:109
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
+#: src/wx-console/wxbmainframe.cpp:613
+msgid "Reconnect to the director"
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:129
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
+#: src/wx-console/wxbmainframe.cpp:623
+msgid "Disconnected of the director."
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:235
-msgid "Please correct configuration file.\n"
+#: src/wx-console/wxbmainframe.cpp:642
+msgid "Unexpected question has been received.\n"
+msgstr ""
+
+#: src/wx-console/wxbmainframe.cpp:665 src/wx-console/wxbmainframe.cpp:680
+msgid "wx-console: unexpected director's question."
 msgstr ""
index 1fbd44d46071e3fb12deef7db9832da4d6142b6c..680fc593dd27728a97f374b85d6f9c6b5f196ee8 100644 (file)
Binary files a/bacula/po/it.gmo and b/bacula/po/it.gmo differ
index 0ccac39c9bdc73c123ff59f1e36fb729e65eb773..71c691c9043813fc9c5c935a9c1d834a4ce95c36 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Bacula 1.38\n"
 "Report-Msgid-Bugs-To: bacula-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2005-08-08 17:56+0200\n"
+"POT-Creation-Date: 2005-08-10 18:10+0200\n"
 "PO-Revision-Date: 2005-08-08 17:50+0200\n"
 "Last-Translator:  <fparacchini@alteanet.it>\n"
 "Language-Team: Italian <bacula-devel@lists.sourceforge.net>\n"
@@ -160,10 +160,10 @@ msgstr ""
 msgid "Create DB Job record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:91 src/dird/expand.c:145 src/dird/ua_cmds.c:422
-#: src/dird/ua_prune.c:455 src/dird/ua_purge.c:171 src/dird/ua_run.c:643
-#: src/dird/ua_select.c:228 src/dird/ua_select.c:249 src/dird/pythondir.c:61
-#: src/stored/pythonsd.c:58
+#: src/cats/sql_create.c:91 src/dird/dird_conf.c:532 src/dird/expand.c:145
+#: src/dird/ua_cmds.c:422 src/dird/ua_prune.c:455 src/dird/ua_purge.c:171
+#: src/dird/ua_run.c:643 src/dird/ua_select.c:228 src/dird/ua_select.c:249
+#: src/dird/pythondir.c:61 src/stored/pythonsd.c:58
 msgid "Job"
 msgstr ""
 
@@ -190,6 +190,10 @@ msgstr ""
 #: src/cats/sql_create.c:201 src/dird/expand.c:152 src/dird/ua_run.c:650
 #: src/dird/ua_select.c:464 src/dird/ua_select.c:554 src/dird/ua_update.c:356
 #: src/dird/ua_update.c:426 src/dird/pythondir.c:67 src/stored/pythonsd.c:64
+#: src/wx-console/wxbrestorepanel.cpp:362
+#: src/wx-console/wxbrestorepanel.cpp:548
+#: src/wx-console/wxbrestorepanel.cpp:558
+#: src/wx-console/wxbrestorepanel.cpp:1754
 msgid "Pool"
 msgstr ""
 
@@ -222,9 +226,17 @@ msgstr ""
 msgid "Create DB Storage record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:306 src/dird/expand.c:153 src/dird/ua_cmds.c:829
-#: src/dird/ua_run.c:642 src/dird/ua_select.c:152 src/dird/ua_status.c:128
-#: src/dird/pythondir.c:68
+#: src/cats/sql_create.c:306 src/dird/expand.c:153 src/dird/ua_run.c:642
+#: src/dird/ua_select.c:152 src/dird/ua_status.c:128 src/dird/pythondir.c:68
+#: src/wx-console/wxbrestorepanel.cpp:363
+#: src/wx-console/wxbrestorepanel.cpp:379
+#: src/wx-console/wxbrestorepanel.cpp:500
+#: src/wx-console/wxbrestorepanel.cpp:501
+#: src/wx-console/wxbrestorepanel.cpp:511
+#: src/wx-console/wxbrestorepanel.cpp:512
+#: src/wx-console/wxbrestorepanel.cpp:1116
+#: src/wx-console/wxbrestorepanel.cpp:1765
+#: src/wx-console/wxbrestorepanel.cpp:1831
 msgid "Storage"
 msgstr ""
 
@@ -272,10 +284,23 @@ msgstr ""
 msgid "Create DB Client record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:507 src/dird/expand.c:150 src/dird/ua_cmds.c:830
-#: src/dird/ua_purge.c:173 src/dird/ua_purge.c:178 src/dird/ua_run.c:645
-#: src/dird/ua_select.c:272 src/dird/ua_select.c:379 src/dird/ua_status.c:129
-#: src/dird/pythondir.c:65 src/filed/pythonfd.c:77 src/stored/pythonsd.c:63
+#: src/cats/sql_create.c:507 src/dird/expand.c:150 src/dird/ua_purge.c:173
+#: src/dird/ua_purge.c:178 src/dird/ua_run.c:645 src/dird/ua_select.c:272
+#: src/dird/ua_select.c:379 src/dird/ua_status.c:129 src/dird/pythondir.c:65
+#: src/filed/pythonfd.c:77 src/stored/pythonsd.c:63
+#: src/wx-console/wxbrestorepanel.cpp:360
+#: src/wx-console/wxbrestorepanel.cpp:378
+#: src/wx-console/wxbrestorepanel.cpp:452
+#: src/wx-console/wxbrestorepanel.cpp:453
+#: src/wx-console/wxbrestorepanel.cpp:463
+#: src/wx-console/wxbrestorepanel.cpp:464
+#: src/wx-console/wxbrestorepanel.cpp:707
+#: src/wx-console/wxbrestorepanel.cpp:1086
+#: src/wx-console/wxbrestorepanel.cpp:1173
+#: src/wx-console/wxbrestorepanel.cpp:1758
+#: src/wx-console/wxbrestorepanel.cpp:1760
+#: src/wx-console/wxbrestorepanel.cpp:1829
+#: src/wx-console/wxbrestorepanel.cpp:1884
 msgid "Client"
 msgstr ""
 
@@ -299,7 +324,7 @@ msgstr ""
 msgid "Create DB FileSet record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:618 src/dird/ua_restore.c:1010 src/dird/ua_run.c:644
+#: src/cats/sql_create.c:618 src/dird/ua_restore.c:1035 src/dird/ua_run.c:644
 #: src/dird/ua_select.c:173
 msgid "FileSet"
 msgstr ""
@@ -314,7 +339,7 @@ msgstr ""
 msgid "Create db File record %s failed. ERR=%s"
 msgstr ""
 
-#: src/cats/sql_create.c:738
+#: src/cats/sql_create.c:738 src/gnome2-console/restore.c:121
 msgid "File"
 msgstr ""
 
@@ -347,7 +372,7 @@ msgstr ""
 msgid "Create db Filename record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:856
+#: src/cats/sql_create.c:856 src/wx-console/wxbrestorepanel.cpp:314
 msgid "Filename"
 msgstr ""
 
@@ -590,7 +615,7 @@ msgstr ""
 msgid "Unable to open Database=%s. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:162
+#: src/cats/sqlite.c:162 src/lib/bnet_server.c:378
 msgid "unknown"
 msgstr ""
 
@@ -609,6 +634,15 @@ msgstr ""
 msgid "next_index update error: ERR=%s\n"
 msgstr ""
 
+#: src/console/authenticate.c:41
+#, c-format
+msgid "Hello %s calling\n"
+msgstr ""
+
+#: src/console/authenticate.c:44
+msgid "1000 OK:"
+msgstr ""
+
 #: src/console/authenticate.c:104 src/dird/authenticate.c:106
 #: src/dird/authenticate.c:206 src/filed/authenticate.c:124
 #: src/filed/authenticate.c:220 src/stored/authenticate.c:128
@@ -636,7 +670,7 @@ msgid "Bad response to Hello command: ERR=%s\n"
 msgstr ""
 
 #: src/console/authenticate.c:140 src/gnome2-console/authenticate.c:95
-#: src/tray-monitor/authenticate.c:94
+#: src/tray-monitor/authenticate.c:94 src/wx-console/authenticate.c:133
 msgid "Director rejected Hello command\n"
 msgstr ""
 
@@ -650,7 +684,7 @@ msgid ""
 "help.\n"
 msgstr ""
 
-#: src/console/console.c:102 src/filed/filed.c:62
+#: src/console/console.c:102
 #, c-format
 msgid ""
 "Copyright (C) 2000-2005 Kern Sibbald\n"
@@ -658,13 +692,7 @@ msgid ""
 "Version: "
 msgstr ""
 
-#: src/console/console.c:103 src/dird/admin.c:108 src/dird/backup.c:489
-#: src/dird/dird.c:72 src/dird/mac.c:377 src/dird/restore.c:275
-#: src/dird/verify.c:415 src/dird/verify.c:448 src/filed/filed.c:63
-#: src/gnome2-console/console.c:89 src/stored/bcopy.c:59
-#: src/stored/bscan.c:110 src/stored/btape.c:2541 src/stored/stored.c:66
-#: src/tray-monitor/tray-monitor.c:104 src/tray-monitor/tray-monitor.c:499
-#: src/tray-monitor/tray-monitor.c:506
+#: src/console/console.c:103 src/dird/admin.c:108
 #, c-format
 msgid " ("
 msgstr ""
@@ -700,6 +728,7 @@ msgid "output to file"
 msgstr ""
 
 #: src/console/console.c:152 src/dird/ua_cmds.c:106 src/dird/ua_tree.c:72
+#: src/stored/btape.c:2536
 msgid "quit"
 msgstr ""
 
@@ -755,110 +784,148 @@ msgstr ""
 msgid ": is an illegal command\n"
 msgstr ""
 
-#: src/console/console.c:397 src/dird/dird.c:193 src/filed/filed.c:180
-#: src/gnome2-console/console.c:267 src/stored/stored.c:186
-#: src/wx-console/console_thread.cpp:231
+#: src/console/console.c:400 src/dird/dird.c:196 src/filed/filed.c:183
+#: src/gnome2-console/console.c:271 src/stored/stored.c:189
+#: src/wx-console/console_thread.cpp:230
 msgid "TLS library initialization failed.\n"
 msgstr ""
 
-#: src/console/console.c:401 src/dird/dird.c:197 src/dird/dird.c:407
-#: src/dird/dird.c:410 src/filed/filed.c:185 src/gnome2-console/console.c:271
-#: src/stored/stored.c:190
+#: src/console/console.c:404 src/dird/dird.c:200 src/dird/dird.c:410
+#: src/dird/dird.c:413 src/filed/filed.c:188 src/gnome2-console/console.c:275
+#: src/stored/stored.c:193
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr ""
 
-#: src/console/console.c:418
+#: src/console/console.c:421
 msgid "Available Directors:\n"
 msgstr ""
 
-#: src/console/console.c:422
+#: src/console/console.c:425
 #, c-format
 msgid "%d  %s at %s:%d\n"
 msgstr ""
 
-#: src/console/console.c:426
+#: src/console/console.c:429
 msgid "Select Director: "
 msgstr ""
 
-#: src/console/console.c:432
+#: src/console/console.c:435
 #, c-format
 msgid "You must enter a number between 1 and %d\n"
 msgstr ""
 
-#: src/console/console.c:452
+#: src/console/console.c:455 src/tray-monitor/tray-monitor.c:858
 #, c-format
 msgid "Connecting to Director %s:%d\n"
 msgstr ""
 
-#: src/console/console.c:468 src/gnome2-console/console.c:504
-#: src/wx-console/console_thread.cpp:365
+#: src/console/console.c:471 src/gnome2-console/console.c:508
+#: src/wx-console/console_thread.cpp:364
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
-#: src/console/console.c:489 src/gnome2-console/console.c:526
-#: src/wx-console/console_thread.cpp:386
+#: src/console/console.c:492 src/gnome2-console/console.c:530
+#: src/wx-console/console_thread.cpp:385
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
 
-#: src/console/console.c:512
+#: src/console/console.c:515
 msgid "Enter a period to cancel a command.\n"
 msgstr ""
 
-#: src/console/console.c:579 src/console/console.c:608 src/dird/dird.c:493
-#: src/dird/dird.c:708 src/dird/dird.c:774 src/dird/dird.c:826
-#: src/filed/filed.c:299 src/filed/filed.c:345
+#: src/console/console.c:582 src/console/console.c:611 src/dird/dird.c:496
+#: src/dird/dird.c:711 src/dird/dird.c:777 src/dird/dird.c:829
+#: src/filed/filed.c:302 src/filed/filed.c:348
 #: src/gnome2-console/console.c:140 src/gnome2-console/console.c:169
-#: src/stored/stored.c:307 src/wx-console/console_thread.cpp:93
+#: src/stored/stored.c:310 src/wx-console/console_thread.cpp:93
 #: src/wx-console/console_thread.cpp:122
 msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/console/console.c:586 src/gnome2-console/console.c:147
+#: src/console/console.c:589 src/gnome2-console/console.c:147
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/console/console.c:595 src/gnome2-console/console.c:156
+#: src/console/console.c:598 src/gnome2-console/console.c:156
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/console/console.c:615 src/gnome2-console/console.c:176
+#: src/console/console.c:618 src/gnome2-console/console.c:176
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/console/console.c:760
+#: src/console/console.c:763
 msgid "Too many arguments on input command.\n"
 msgstr ""
 
-#: src/console/console.c:764
+#: src/console/console.c:767
 msgid "First argument to input command must be a filename.\n"
 msgstr ""
 
-#: src/console/console.c:769
+#: src/console/console.c:772
 #, c-format
 msgid "Cannot open file %s for input. ERR=%s\n"
 msgstr ""
 
-#: src/console/console.c:799
+#: src/console/console.c:802
 msgid "Too many arguments on output/tee command.\n"
 msgstr ""
 
-#: src/console/console.c:815
+#: src/console/console.c:818
 #, c-format
 msgid "Cannot open file %s for output. ERR=%s\n"
 msgstr ""
 
+#: src/console/console_conf.c:123 src/gnome2-console/console_conf.c:122
+#: src/wx-console/console_conf.c:124
+#, c-format
+msgid "No record for %d %s\n"
+msgstr ""
+
+#: src/console/console_conf.c:132 src/wx-console/console_conf.c:133
+#, c-format
+msgid "Console: name=%s rcfile=%s histfile=%s\n"
+msgstr ""
+
+#: src/console/console_conf.c:136 src/gnome2-console/console_conf.c:131
+#: src/wx-console/console_conf.c:137
+#, c-format
+msgid "Director: name=%s address=%s DIRport=%d\n"
+msgstr ""
+
+#: src/console/console_conf.c:140 src/console/console_conf.c:216
+#: src/console/console_conf.c:261 src/console/console_conf.c:288
+#: src/filed/filed_conf.c:268 src/filed/filed_conf.c:327
+#: src/filed/filed_conf.c:357 src/gnome2-console/console_conf.c:142
+#: src/gnome2-console/console_conf.c:220 src/gnome2-console/console_conf.c:268
+#: src/gnome2-console/console_conf.c:298 src/stored/stored_conf.c:467
+#: src/stored/stored_conf.c:555 src/stored/stored_conf.c:590
+#: src/wx-console/console_conf.c:141 src/wx-console/console_conf.c:216
+#: src/wx-console/console_conf.c:261 src/wx-console/console_conf.c:288
+#, c-format
+msgid "Unknown resource type %d\n"
+msgstr ""
+
+#: src/console/console_conf.c:242 src/dird/dird_conf.c:1109
+#: src/dird/dird_conf.c:1124 src/filed/filed_conf.c:296
+#: src/gnome2-console/console_conf.c:246 src/tray-monitor/tray_conf.c:262
+#: src/wx-console/console_conf.c:242
+#, c-format
+msgid "%s item is required in %s resource, but not found.\n"
+msgstr ""
+
 #: src/console/console_conf.c:304 src/dird/dird_conf.c:1296
 #: src/filed/filed_conf.c:374 src/gnome2-console/console_conf.c:314
 #: src/tray-monitor/tray_conf.c:341 src/wx-console/console_conf.c:304
@@ -894,8 +961,7 @@ msgstr ""
 msgid "Inappropriate term code: %c\n"
 msgstr ""
 
-#: src/dird/admin.c:108 src/dird/backup.c:489 src/dird/mac.c:377
-#: src/dird/restore.c:275 src/dird/verify.c:415 src/dird/verify.c:448
+#: src/dird/admin.c:108
 msgid "Bacula "
 msgstr ""
 
@@ -932,6 +998,9 @@ msgid ""
 msgstr ""
 
 #: src/dird/authenticate.c:123 src/dird/authenticate.c:223
+#: src/dird/authenticate.c:356 src/filed/authenticate.c:141
+#: src/filed/authenticate.c:237 src/stored/authenticate.c:145
+#: src/stored/authenticate.c:249
 msgid "TLS negotiation failed.\n"
 msgstr ""
 
@@ -1000,6 +1069,11 @@ msgstr ""
 msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
 msgstr ""
 
+#: src/dird/authenticate.c:373
+#, c-format
+msgid "1000 OK: %s Version: %s (%s)\n"
+msgstr ""
+
 #: src/dird/autoprune.c:57
 msgid "Begin pruning Jobs.\n"
 msgstr ""
@@ -1079,22 +1153,22 @@ msgstr ""
 msgid "Backup OK -- with warnings"
 msgstr ""
 
-#: src/dird/backup.c:424 src/dird/mac.c:313 src/stored/bscan.c:1045
+#: src/dird/backup.c:424 src/dird/mac.c:313 src/stored/bscan.c:1054
 msgid "Backup OK"
 msgstr ""
 
-#: src/dird/backup.c:429 src/dird/mac.c:318 src/stored/bscan.c:1049
+#: src/dird/backup.c:429 src/dird/mac.c:318 src/stored/bscan.c:1058
 msgid "*** Backup Error ***"
 msgstr ""
 
-#: src/dird/backup.c:439 src/dird/mac.c:328 src/stored/bscan.c:1052
+#: src/dird/backup.c:439 src/dird/mac.c:328 src/stored/bscan.c:1061
 msgid "Backup Canceled"
 msgstr ""
 
 #: src/dird/backup.c:489
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Backup Level:           %s%s\n"
@@ -1156,22 +1230,58 @@ msgstr ""
 msgid "No Volumes found to restore.\n"
 msgstr ""
 
+#: src/dird/catreq.c:109 src/dird/catreq.c:298
+#, c-format
+msgid "1990 Invalid Catalog Request: %s"
+msgstr ""
+
 #: src/dird/catreq.c:110
 #, c-format
 msgid "Invalid Catalog request; DB not open: %s"
 msgstr ""
 
+#: src/dird/catreq.c:131
+msgid "1901 No Media.\n"
+msgstr ""
+
+#: src/dird/catreq.c:159
+msgid "not in Pool"
+msgstr ""
+
+#: src/dird/catreq.c:161
+msgid "not correct MediaType"
+msgstr ""
+
+#: src/dird/catreq.c:187
+#, c-format
+msgid "1998 Volume \"%s\" status is %s, %s.\n"
+msgstr ""
+
+#: src/dird/catreq.c:192
+#, c-format
+msgid "1997 Volume \"%s\" not in catalog.\n"
+msgstr ""
+
 #: src/dird/catreq.c:213
 #, c-format
 msgid "Unable to get Media record for Volume %s: ERR=%s\n"
 msgstr ""
 
+#: src/dird/catreq.c:215
+#, c-format
+msgid "1991 Catalog Request for vol=%s failed: %s"
+msgstr ""
+
 #: src/dird/catreq.c:235
 #, c-format
 msgid ""
 "Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
 msgstr ""
 
+#: src/dird/catreq.c:238 src/dird/catreq.c:270
+msgid "1992 Update Media error\n"
+msgstr ""
+
 #: src/dird/catreq.c:268
 #, c-format
 msgid "Catalog error updating Media record. %s"
@@ -1182,28 +1292,30 @@ msgstr ""
 msgid "Catalog error creating JobMedia record. %s"
 msgstr ""
 
+#: src/dird/catreq.c:289
+msgid "1991 Update JobMedia error\n"
+msgstr ""
+
 #: src/dird/catreq.c:299
 #, c-format
 msgid "Invalid Catalog request: %s"
 msgstr ""
 
+#: src/dird/catreq.c:398
+msgid "Got MD5/SHA1 but not same File as attributes\n"
+msgstr ""
+
 #: src/dird/catreq.c:422
 #, c-format
 msgid "Catalog error updating MD5/SHA1. %s"
 msgstr ""
 
-#: src/dird/dird.c:71 src/stored/btape.c:2540 src/stored/stored.c:65
+#: src/dird/dird.c:71
 #, c-format
 msgid ""
 "Copyright (C) 2000-2005 Kern Sibbald.\n"
 "\n"
-"Version: "
-msgstr ""
-
-#: src/dird/dird.c:72
-#, c-format
-msgid ""
-")\n"
+"Version: %s (%s)\n"
 "\n"
 "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
@@ -1219,46 +1331,46 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/dird.c:393
+#: src/dird/dird.c:396
 msgid "Too many open reload requests. Request ignored.\n"
 msgstr ""
 
-#: src/dird/dird.c:408
+#: src/dird/dird.c:411
 msgid "Out of reload table entries. Giving up.\n"
 msgstr ""
 
-#: src/dird/dird.c:411
+#: src/dird/dird.c:414
 msgid "Resetting previous configuration.\n"
 msgstr ""
 
-#: src/dird/dird.c:471
+#: src/dird/dird.c:474
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/dird/dird.c:479 src/filed/filed.c:292
+#: src/dird/dird.c:482 src/filed/filed.c:295
 #, c-format
 msgid "No Messages resource defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:484
+#: src/dird/dird.c:487
 #, c-format
 msgid "Only one Director resource permitted in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:499 src/filed/filed.c:354 src/stored/stored.c:359
+#: src/dird/dird.c:502 src/filed/filed.c:357 src/stored/stored.c:362
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:505 src/filed/filed.c:360 src/stored/stored.c:365
+#: src/dird/dird.c:508 src/filed/filed.c:363 src/stored/stored.c:368
 #, c-format
 msgid "\"TLS Key\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:511 src/filed/filed.c:366 src/stored/stored.c:371
+#: src/dird/dird.c:514 src/filed/filed.c:369 src/stored/stored.c:374
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -1266,50 +1378,64 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:530 src/filed/filed.c:385 src/stored/stored.c:390
+#: src/dird/dird.c:533 src/filed/filed.c:388 src/stored/stored.c:393
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:538
+#: src/dird/dird.c:541
 #, c-format
 msgid "No Job records defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:669 src/dird/job.c:101 src/dird/ua_cmds.c:1424
+#: src/dird/dird.c:585 src/dird/dird.c:598
+#, c-format
+msgid "Hey something is wrong. p=0x%lu\n"
+msgstr ""
+
+#: src/dird/dird.c:647
+#, c-format
+msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
+msgstr ""
+
+#: src/dird/dird.c:654
+msgid "Too many items in Job resource\n"
+msgstr ""
+
+#: src/dird/dird.c:672 src/dird/job.c:101 src/dird/ua_cmds.c:1424
 #: src/dird/ua_output.c:598
 #, c-format
 msgid "Could not open database \"%s\".\n"
 msgstr ""
 
-#: src/dird/dird.c:672
+#: src/dird/dird.c:675
 #, c-format
 msgid "%s"
 msgstr ""
 
-#: src/dird/dird.c:714
+#: src/dird/dird.c:717
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:730 src/stored/stored.c:345
+#: src/dird/dird.c:733 src/stored/stored.c:348
 #, c-format
 msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:781
+#: src/dird/dird.c:784
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:787
+#: src/dird/dird.c:790
 #, c-format
 msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:793
+#: src/dird/dird.c:796
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -1317,18 +1443,318 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:810 src/dird/dird.c:850 src/filed/filed.c:323
+#: src/dird/dird.c:813 src/dird/dird.c:853 src/filed/filed.c:326
 #, c-format
 msgid "Failed to initialize TLS context for File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:833
+#: src/dird/dird.c:836
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon \"%s\" in %s.\n"
 msgstr ""
 
+#: src/dird/dird_conf.c:441 src/tray-monitor/tray_conf.c:152
+#, c-format
+msgid "No %s resource defined\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:450
+#, c-format
+msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:455
+#, c-format
+msgid "   query_file=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:458 src/dird/dird_conf.c:483 src/dird/dird_conf.c:497
+#: src/dird/dird_conf.c:541 src/dird/dird_conf.c:545 src/dird/dird_conf.c:549
+#: src/dird/dird_conf.c:573 src/dird/dird_conf.c:578 src/dird/dird_conf.c:582
+#: src/dird/dird_conf.c:586 src/dird/dird_conf.c:590 src/dird/dird_conf.c:594
+#: src/dird/dird_conf.c:604
+msgid "  --> "
+msgstr ""
+
+#: src/dird/dird_conf.c:464 src/dird/dird_conf.c:467
+#, c-format
+msgid "Console: name=%s SSL=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:473
+#, c-format
+msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:478
+#, c-format
+msgid "Counter: name=%s min=%d max=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:489
+#, c-format
+msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:492
+#, c-format
+msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:504
+#, c-format
+msgid ""
+"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
+"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr=%"
+"d\n"
+"      poolid=%s volname=%s MediaType=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:514
+#, c-format
+msgid ""
+"Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
+"      DeviceName=%s MediaType=%s StorageId=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:523
+#, c-format
+msgid ""
+"Catalog: name=%s address=%s DBport=%d db_name=%s\n"
+"      db_user=%s MutliDBConn=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:531
+#, c-format
+msgid "%s: name=%s JobType=%d level=%s Priority=%d MaxJobs=%u\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:532
+msgid "JobDefs"
+msgstr ""
+
+#: src/dird/dird_conf.c:536
+#, c-format
+msgid "     Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:553
+#, c-format
+msgid "  --> Where=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:556
+#, c-format
+msgid "  --> Bootstrap=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:559
+#, c-format
+msgid "  --> RunBefore=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:562
+#, c-format
+msgid "  --> RunAfter=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:565
+#, c-format
+msgid "  --> RunAfterFailed=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:568
+#, c-format
+msgid "  --> WriteBootstrap=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:600
+#, c-format
+msgid "  --> Run=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:611
+#, c-format
+msgid "FileSet: name=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:673 src/dird/dird_conf.c:752
+#, c-format
+msgid "Schedule: name=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:678
+#, c-format
+msgid "  --> Run Level=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:679
+msgid "      hour="
+msgstr ""
+
+#: src/dird/dird_conf.c:688
+msgid "      mday="
+msgstr ""
+
+#: src/dird/dird_conf.c:697
+msgid "      month="
+msgstr ""
+
+#: src/dird/dird_conf.c:706
+msgid "      wday="
+msgstr ""
+
+#: src/dird/dird_conf.c:715
+msgid "      wom="
+msgstr ""
+
+#: src/dird/dird_conf.c:724
+msgid "      woy="
+msgstr ""
+
+#: src/dird/dird_conf.c:733
+#, c-format
+msgid "      mins=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:735 src/dird/dird_conf.c:739 src/dird/dird_conf.c:743
+msgid "     --> "
+msgstr ""
+
+#: src/dird/dird_conf.c:756
+#, c-format
+msgid "Pool: name=%s PoolType=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:758
+#, c-format
+msgid "      use_cat=%d use_once=%d acpt_any=%d cat_files=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:761
+#, c-format
+msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:764
+#, c-format
+msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:768
+#, c-format
+msgid "      CleaningPrefix=%s LabelType=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:770
+#, c-format
+msgid "      RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:776
+#, c-format
+msgid "Messages: name=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:778
+#, c-format
+msgid "      mailcmd=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:780
+#, c-format
+msgid "      opcmd=%s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:783 src/tray-monitor/tray_conf.c:179
+#, c-format
+msgid "Unknown resource type %d in dump_resource.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1077 src/tray-monitor/tray_conf.c:232
+#, c-format
+msgid "Unknown resource type %d in free_resource.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1115 src/lib/parse_conf.c:211
+#: src/tray-monitor/tray_conf.c:268
+#, c-format
+msgid "Too many items in %s resource\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1149
+#, c-format
+msgid "Cannot find Console resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1155 src/filed/filed_conf.c:316
+#: src/stored/stored_conf.c:523
+#, c-format
+msgid "Cannot find Director resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1162 src/stored/stored_conf.c:529
+#, c-format
+msgid "Cannot find Storage resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1171
+#, c-format
+msgid "Cannot find Job resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1189
+#, c-format
+msgid "Cannot find Counter resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1197 src/filed/filed_conf.c:322
+#, c-format
+msgid "Cannot find Client resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1209
+#, c-format
+msgid "Cannot find Schedule resource %s\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1214 src/tray-monitor/tray_conf.c:287
+#, c-format
+msgid "Unknown resource type %d in save_resource.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1274 src/tray-monitor/tray_conf.c:322
+#, c-format
+msgid "Unknown resource type %d in save_resrouce.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1289
+#, c-format
+msgid "Name item is required in %s resource, but not found.\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1301
+#, c-format
+msgid "Inserting %s res: %s index=%d pass=%d\n"
+msgstr ""
+
+#: src/dird/dird_conf.c:1374
+#, c-format
+msgid "Expected a Job Type keyword, got: %s"
+msgstr ""
+
+#: src/dird/dird_conf.c:1398
+#, c-format
+msgid "Expected a Job Level keyword, got: %s"
+msgstr ""
+
+#: src/dird/dird_conf.c:1418
+#, c-format
+msgid "Expected a Restore replacement option, got: %s"
+msgstr ""
+
 #: src/dird/expand.c:137
 msgid "Year"
 msgstr ""
@@ -1424,7 +1850,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:73
+#: src/dird/fd_cmds.c:73 src/tray-monitor/tray-monitor.c:867
 msgid "File daemon"
 msgstr ""
 
@@ -1443,15 +1869,28 @@ msgstr ""
 msgid "FD gave bad response to JobId command: %s\n"
 msgstr ""
 
+#: src/dird/fd_cmds.c:144 src/dird/fd_cmds.c:180
+msgid ", since="
+msgstr ""
+
 #: src/dird/fd_cmds.c:164
 msgid "No prior or suitable Full backup found. Doing FULL backup.\n"
 msgstr ""
 
+#: src/dird/fd_cmds.c:165 src/dird/fd_cmds.c:173
+#, c-format
+msgid " (upgraded from %s)"
+msgstr ""
+
 #: src/dird/fd_cmds.c:171
 #, c-format
 msgid "Prior failed job found. Upgrading to %s.\n"
 msgstr ""
 
+#: src/dird/fd_cmds.c:196
+msgid "since_utime "
+msgstr ""
+
 #: src/dird/fd_cmds.c:232
 #, c-format
 msgid "Unimplemented backup level %d %c\n"
@@ -1488,7 +1927,7 @@ msgid ""
 "msglen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:571 src/dird/verify.c:692
+#: src/dird/fd_cmds.c:571 src/dird/verify.c:696
 #, c-format
 msgid "MD5/SHA1 index %d not same as attributes %d\n"
 msgstr ""
@@ -1516,7 +1955,7 @@ msgstr ""
 
 #: src/dird/getmsg.c:318
 #, c-format
-msgid "Bad response to %s command: wanted %s got: %s\n"
+msgid "Bad response to %s command: wanted %s, got %s\n"
 msgstr ""
 
 #: src/dird/getmsg.c:323
@@ -1524,6 +1963,11 @@ msgstr ""
 msgid "Socket error on %s command: ERR=%s\n"
 msgstr ""
 
+#: src/dird/inc_conf.c:249
+#, c-format
+msgid "Expected a FileSet option keyword, got:%s:"
+msgstr ""
+
 #: src/dird/inc_conf.c:282
 msgid "Old style Include/Exclude not supported\n"
 msgstr ""
@@ -1533,6 +1977,16 @@ msgstr ""
 msgid "Expecting keyword, got: %s\n"
 msgstr ""
 
+#: src/dird/inc_conf.c:318 src/dird/inc_conf.c:583 src/lib/parse_conf.c:819
+#, c-format
+msgid "expected an equals, got: %s"
+msgstr ""
+
+#: src/dird/inc_conf.c:328 src/dird/inc_conf.c:592
+#, c-format
+msgid "Keyword %s not permitted in this resource"
+msgstr ""
+
 #: src/dird/inc_conf.c:381
 #, c-format
 msgid "Regex compile error. ERR=%s\n"
@@ -1558,12 +2012,22 @@ msgstr ""
 msgid "Expected a filename, got: %s"
 msgstr ""
 
-#: src/dird/job.c:50
+#: src/dird/inc_conf.c:562
+#, c-format
+msgid "Expecting open brace. Got %s"
+msgstr ""
+
+#: src/dird/inc_conf.c:617
+#, c-format
+msgid "Expected a FileSet keyword, got: %s"
+msgstr ""
+
+#: src/dird/job.c:50
 #, c-format
 msgid "Could not init job queue: ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:86 src/stored/dircmd.c:174 src/stored/stored.c:485
+#: src/dird/job.c:86 src/stored/dircmd.c:174 src/stored/stored.c:488
 #, c-format
 msgid "Unable to init job cond variable: ERR=%s\n"
 msgstr ""
@@ -1577,6 +2041,11 @@ msgstr ""
 msgid "Job canceled because max start delay time exceeded.\n"
 msgstr ""
 
+#: src/dird/job.c:229 src/dird/job.c:307
+#, c-format
+msgid "Unimplemented job type: %d\n"
+msgstr ""
+
 #: src/dird/job.c:254
 #, c-format
 msgid "RunBefore: %s"
@@ -1621,7 +2090,7 @@ msgstr ""
 msgid "Unhandled job status code %d\n"
 msgstr ""
 
-#: src/dird/job.c:621 src/stored/bscan.c:893
+#: src/dird/job.c:621 src/stored/bscan.c:902
 #, c-format
 msgid "Could not create Client record. ERR=%s\n"
 msgstr ""
@@ -1640,11 +2109,62 @@ msgstr ""
 msgid "Error updating job record. %s"
 msgstr ""
 
+#: src/dird/jobq.c:67
+#, c-format
+msgid "pthread_attr_init: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:76
+#, c-format
+msgid "pthread_mutex_init: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:82
+#, c-format
+msgid "pthread_cond_init: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:115 src/dird/jobq.c:242 src/dird/jobq.c:307
+#: src/dird/jobq.c:388
+#, c-format
+msgid "pthread_mutex_lock: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:128
+#, c-format
+msgid "pthread_cond_broadcast: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:136
+#, c-format
+msgid "pthread_cond_wait: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:144
+#, c-format
+msgid "pthread_mutex_unlock: ERR=%s\n"
+msgstr ""
+
 #: src/dird/jobq.c:180
 #, c-format
 msgid "Job %s waiting %d seconds for scheduled start time.\n"
 msgstr ""
 
+#: src/dird/jobq.c:235
+#, c-format
+msgid "pthread_thread_create: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:353
+#, c-format
+msgid "pthread_cond_signal: ERR=%s\n"
+msgstr ""
+
+#: src/dird/jobq.c:362
+#, c-format
+msgid "pthread_create: ERR=%s\n"
+msgstr ""
+
 #: src/dird/jobq.c:487
 #, c-format
 msgid "Rescheduled Job %s at %s to re-run in %d seconds.\n"
@@ -1662,7 +2182,7 @@ msgstr ""
 #: src/dird/mac.c:377
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Backup Level:           %s%s\n"
@@ -1690,6 +2210,7 @@ msgid ""
 msgstr ""
 
 #: src/dird/msgchan.c:78 src/filed/job.c:1128
+#: src/tray-monitor/tray-monitor.c:874
 msgid "Storage daemon"
 msgstr ""
 
@@ -1784,6 +2305,40 @@ msgstr ""
 msgid "Catalog error updating volume \"%s\". ERR=%s"
 msgstr ""
 
+#: src/dird/next_vol.c:262
+msgid "volume has expired"
+msgstr ""
+
+#: src/dird/next_vol.c:280 src/dird/next_vol.c:316
+#, c-format
+msgid "Recycled current volume \"%s\"\n"
+msgstr ""
+
+#: src/dird/next_vol.c:285
+msgid "and recycling of current volume failed"
+msgstr ""
+
+#: src/dird/next_vol.c:291
+msgid "but should be Append, Purged or Recycle"
+msgstr ""
+
+#: src/dird/next_vol.c:319
+msgid ""
+"but should be Append, Purged or Recycle (recycling of the current volume "
+"failed)"
+msgstr ""
+
+#: src/dird/next_vol.c:323
+msgid ""
+"but should be Append, Purged or Recycle (cannot automatically recycle "
+"current volume, as it still contains unpruned data)"
+msgstr ""
+
+#: src/dird/recycle.c:102
+#, c-format
+msgid "Recycled volume \"%s\"\n"
+msgstr ""
+
 #: src/dird/restore.c:70
 msgid "Cannot restore without bootstrap file.\n"
 msgstr ""
@@ -1812,7 +2367,7 @@ msgstr ""
 #: src/dird/restore.c:275
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Client:                 %s\n"
@@ -2041,7 +2596,12 @@ msgstr ""
 msgid "fifth"
 msgstr ""
 
-#: src/dird/run_conf.c:201 src/dird/run_conf.c:213 src/lib/parse_conf.c:699
+#: src/dird/run_conf.c:188
+#, c-format
+msgid "Expected an equals, got: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:201 src/dird/run_conf.c:213
 #, c-format
 msgid "Expect a YES or NO, got: %s"
 msgstr ""
@@ -2051,6 +2611,26 @@ msgstr ""
 msgid "Job level field: %s not found in run record"
 msgstr ""
 
+#: src/dird/run_conf.c:245
+#, c-format
+msgid "Could not find specified Pool Resource: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:270
+#, c-format
+msgid "Could not find specified Storage Resource: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:282
+#, c-format
+msgid "Could not find specified Messages Resource: %s"
+msgstr ""
+
+#: src/dird/run_conf.c:290
+#, c-format
+msgid "Expected a keyword name, got: %s"
+msgstr ""
+
 #: src/dird/run_conf.c:325
 msgid "Day number out of range (1-31)"
 msgstr ""
@@ -2106,10 +2686,34 @@ msgstr ""
 msgid "Job %s not found\n"
 msgstr ""
 
+#: src/dird/scheduler.c:102
+msgid "Walk queue"
+msgstr ""
+
+#: src/dird/scheduler.c:112
+msgid "Dequeued job"
+msgstr ""
+
 #: src/dird/scheduler.c:115
 msgid "Scheduler logic error\n"
 msgstr ""
 
+#: src/dird/scheduler.c:132
+msgid "Run job"
+msgstr ""
+
+#: src/dird/scheduler.c:345
+msgid "Inserted job"
+msgstr ""
+
+#: src/dird/scheduler.c:353
+msgid "Appended job"
+msgstr ""
+
+#: src/dird/scheduler.c:357
+msgid "Run queue"
+msgstr ""
+
 #: src/dird/ua_cmds.c:88
 msgid "add"
 msgstr ""
@@ -2175,10 +2779,11 @@ msgid "gui [on|off] -- non-interactive gui mode"
 msgstr ""
 
 #: src/dird/ua_cmds.c:97 src/dird/ua_output.c:112 src/dird/ua_tree.c:64
+#: src/stored/btape.c:2533
 msgid "help"
 msgstr ""
 
-#: src/dird/ua_cmds.c:97
+#: src/dird/ua_cmds.c:97 src/stored/btape.c:2533
 msgid "print this command"
 msgstr ""
 
@@ -2192,7 +2797,7 @@ msgid ""
 "from catalog"
 msgstr ""
 
-#: src/dird/ua_cmds.c:99
+#: src/dird/ua_cmds.c:99 src/stored/btape.c:2534
 msgid "label"
 msgstr ""
 
@@ -2292,7 +2897,7 @@ msgstr ""
 msgid "run <job-name>"
 msgstr ""
 
-#: src/dird/ua_cmds.c:113
+#: src/dird/ua_cmds.c:113 src/stored/btape.c:2543
 msgid "status"
 msgstr ""
 
@@ -2332,7 +2937,7 @@ msgstr ""
 msgid "use SQL to query catalog"
 msgstr ""
 
-#: src/dird/ua_cmds.c:119 src/dird/ua_cmds.c:768
+#: src/dird/ua_cmds.c:119
 msgid "trace"
 msgstr ""
 
@@ -2470,10 +3075,9 @@ msgstr ""
 msgid "off"
 msgstr ""
 
-#: src/dird/ua_cmds.c:368 src/dird/ua_cmds.c:1055 src/dird/ua_cmds.c:1071
-#: src/dird/ua_cmds.c:1115 src/dird/ua_output.c:272 src/dird/ua_output.c:296
-#: src/dird/ua_output.c:315 src/dird/ua_output.c:346 src/dird/ua_select.c:618
-#: src/dird/ua_select.c:793
+#: src/dird/ua_cmds.c:368 src/dird/ua_cmds.c:1055 src/dird/ua_cmds.c:1115
+#: src/dird/ua_output.c:272 src/dird/ua_output.c:296 src/dird/ua_output.c:315
+#: src/dird/ua_output.c:346 src/dird/ua_select.c:618 src/dird/ua_select.c:793
 msgid "jobid"
 msgstr ""
 
@@ -2482,9 +3086,9 @@ msgstr ""
 msgid "JobId %s is not running. Use Job name to cancel inactive jobs.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:379 src/dird/ua_cmds.c:919 src/dird/ua_output.c:282
-#: src/dird/ua_output.c:291 src/dird/ua_output.c:310 src/dird/ua_output.c:341
-#: src/dird/ua_select.c:615 src/dird/ua_select.c:807
+#: src/dird/ua_cmds.c:379 src/dird/ua_output.c:282 src/dird/ua_output.c:291
+#: src/dird/ua_output.c:310 src/dird/ua_output.c:341 src/dird/ua_select.c:615
+#: src/dird/ua_select.c:807
 msgid "job"
 msgstr ""
 
@@ -2493,7 +3097,7 @@ msgstr ""
 msgid "Warning Job %s is not running. Continuing anyway ...\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:407 src/filed/status.c:193 src/stored/status.c:311
+#: src/dird/ua_cmds.c:407 src/filed/status.c:193 src/stored/status.c:315
 msgid "No Jobs running.\n"
 msgstr ""
 
@@ -2501,6 +3105,11 @@ msgstr ""
 msgid "Select Job:\n"
 msgstr ""
 
+#: src/dird/ua_cmds.c:417
+#, c-format
+msgid "JobId=%s Job=%s"
+msgstr ""
+
 #: src/dird/ua_cmds.c:422
 msgid "Choose Job to cancel"
 msgstr ""
@@ -2552,16 +3161,16 @@ msgstr ""
 msgid "Client \"%s\" address set to %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:616 src/dird/ua_status.c:281
+#: src/dird/ua_cmds.c:616 src/dird/ua_status.c:286
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:622 src/dird/ua_status.c:292
+#: src/dird/ua_cmds.c:622 src/dird/ua_status.c:297
 msgid "Connected to storage daemon\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:642 src/dird/ua_cmds.c:982 src/dird/ua_status.c:319
+#: src/dird/ua_cmds.c:642 src/dird/ua_cmds.c:982 src/dird/ua_status.c:324
 #, c-format
 msgid "Connecting to Client %s at %s:%d\n"
 msgstr ""
@@ -2570,73 +3179,18 @@ msgstr ""
 msgid "Failed to connect to Client.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:756 src/dird/ua_cmds.c:935
-msgid "level"
-msgstr ""
-
 #: src/dird/ua_cmds.c:761
 msgid "Enter new debug level: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:778 src/dird/ua_output.c:111 src/dird/ua_status.c:101
-msgid "all"
-msgstr ""
-
-#: src/dird/ua_cmds.c:782 src/dird/ua_status.c:104 src/dird/ua_tree.c:59
-msgid "dir"
-msgstr ""
-
-#: src/dird/ua_cmds.c:783 src/dird/ua_status.c:105
-msgid "director"
-msgstr ""
-
-#: src/dird/ua_cmds.c:788 src/dird/ua_cmds.c:912 src/dird/ua_restore.c:272
-#: src/dird/ua_select.c:288 src/dird/ua_select.c:325 src/dird/ua_status.c:108
-#: src/lib/bnet_server.c:291
-msgid "client"
-msgstr ""
-
-#: src/dird/ua_cmds.c:789 src/dird/ua_cmds.c:913 src/dird/ua_select.c:289
-#: src/dird/ua_select.c:326
-msgid "fd"
-msgstr ""
-
-#: src/dird/ua_cmds.c:805
-msgid "store"
-msgstr ""
-
-#: src/dird/ua_cmds.c:806 src/dird/ua_select.c:788
-msgid "storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:807 src/dird/ua_select.c:789
-msgid "sd"
-msgstr ""
-
 #: src/dird/ua_cmds.c:827
 msgid "Available daemons are: \n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:828 src/dird/ua_status.c:127
-msgid "Director"
-msgstr ""
-
-#: src/dird/ua_cmds.c:831 src/dird/ua_status.c:130
-msgid "All"
-msgstr ""
-
 #: src/dird/ua_cmds.c:832
 msgid "Select daemon type to set debug level"
 msgstr ""
 
-#: src/dird/ua_cmds.c:925
-msgid "fileset"
-msgstr ""
-
-#: src/dird/ua_cmds.c:931
-msgid "listing"
-msgstr ""
-
 #: src/dird/ua_cmds.c:937 src/dird/ua_run.c:478
 #, c-format
 msgid "Level %s not valid.\n"
@@ -2705,14 +3259,14 @@ msgstr ""
 msgid "Using Catalog name=%s DB=%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1369 src/dird/ua_tree.c:590 src/stored/btape.c:2531
+#: src/dird/ua_cmds.c:1369 src/dird/ua_tree.c:594 src/stored/btape.c:2580
 #, c-format
 msgid ""
 "  Command    Description\n"
 "  =======    ===========\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1371 src/dird/ua_tree.c:592
+#: src/dird/ua_cmds.c:1371
 #, c-format
 msgid "  %-10s %s\n"
 msgstr ""
@@ -2724,9 +3278,9 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1382
+#: src/dird/ua_cmds.c:1389
 #, c-format
-msgid "%s %s\n"
+msgid "%s Version: %s (%s)\n"
 msgstr ""
 
 #: src/dird/ua_cmds.c:1408
@@ -2802,20 +3356,35 @@ msgstr ""
 msgid ".exit"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:221 src/dird/ua_restore.c:739
-#: src/dird/ua_restore.c:777
+#: src/dird/ua_dotcmds.c:121
+msgid "The Director will segment fault.\n"
+msgstr ""
+
+#: src/dird/ua_dotcmds.c:221 src/dird/ua_restore.c:747
+#: src/dird/ua_restore.c:785
 #, c-format
 msgid "Query failed: %s. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_input.c:120 src/dird/ua_restore.c:228 src/dird/ua_run.c:487
+#: src/dird/ua_input.c:82
+msgid "Enter slot"
+msgstr ""
+
+#: src/dird/ua_input.c:86 src/dird/ua_input.c:92
+#, c-format
+msgid "Expected a positive integer, got: %s\n"
+msgstr ""
+
+#: src/dird/ua_input.c:120 src/dird/ua_restore.c:232 src/dird/ua_run.c:487
 #: src/dird/ua_run.c:860 src/dird/ua_select.c:54 src/dird/ua_update.c:232
 #: src/dird/ua_update.c:247 src/dird/ua_update.c:495
+#: src/stored/parse_bsr.c:741 src/tools/dbcheck.c:1098
 msgid "yes"
 msgstr ""
 
 #: src/dird/ua_input.c:124 src/dird/ua_select.c:57 src/dird/ua_update.c:234
 #: src/dird/ua_update.c:247 src/dird/ua_update.c:495
+#: src/stored/parse_bsr.c:741
 msgid "no"
 msgstr ""
 
@@ -2851,7 +3420,7 @@ msgstr ""
 msgid "Slot too large.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:170
+#: src/dird/ua_label.c:170 src/stored/btape.c:2541
 msgid "scan"
 msgstr ""
 
@@ -2934,7 +3503,7 @@ msgid ""
 "==============\n"
 msgstr ""
 
-#: src/dird/ua_label.c:484
+#: src/dird/ua_label.c:484 src/stored/btape.c:608
 msgid "Do you want to continue? (y/n): "
 msgstr ""
 
@@ -2943,11 +3512,21 @@ msgstr ""
 msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
 msgstr ""
 
+#: src/dird/ua_label.c:511
+#, c-format
+msgid "Error setting InChanger: ERR=%s"
+msgstr ""
+
 #: src/dird/ua_label.c:536
 #, c-format
 msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
 msgstr ""
 
+#: src/dird/ua_label.c:543
+#, c-format
+msgid "Catalog error on cleaning tape: %s"
+msgstr ""
+
 #: src/dird/ua_label.c:579
 #, c-format
 msgid "Illegal character \"%c\" in a volume name.\n"
@@ -3061,6 +3640,10 @@ msgstr ""
 msgid "pools"
 msgstr ""
 
+#: src/dird/ua_output.c:111 src/dird/ua_status.c:101
+msgid "all"
+msgstr ""
+
 #: src/dird/ua_output.c:178
 msgid "Keywords for the show command are:\n"
 msgstr ""
@@ -3166,7 +3749,7 @@ msgid "Jobs"
 msgstr ""
 
 #: src/dird/ua_prune.c:163 src/dird/ua_purge.c:174 src/dird/ua_purge.c:179
-#: src/stored/label.c:957
+#: src/stored/label.c:956
 msgid "Volume"
 msgstr ""
 
@@ -3192,6 +3775,16 @@ msgstr ""
 msgid "Pruned %d %s for client %s from catalog.\n"
 msgstr ""
 
+#: src/dird/ua_prune.c:502
+#, c-format
+msgid "There are no Jobs associated with Volume \"%s\". Prune not needed.\n"
+msgstr ""
+
+#: src/dird/ua_prune.c:509 src/dird/ua_purge.c:488
+#, c-format
+msgid "There are no Jobs associated with Volume \"%s\". Marking it purged.\n"
+msgstr ""
+
 #: src/dird/ua_prune.c:567
 #, c-format
 msgid "Pruned %d %s on Volume \"%s\" from catalog.\n"
@@ -3255,11 +3848,23 @@ msgstr ""
 msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
 msgstr ""
 
+#: src/dird/ua_purge.c:555
+#, c-format
+msgid ""
+"There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
+msgstr ""
+
 #: src/dird/ua_purge.c:584
 #, c-format
 msgid "Cannot purge Volume with VolStatus=%s\n"
 msgstr ""
 
+#: src/dird/ua_query.c:59 src/findlib/create_file.c:276
+#: src/findlib/create_file.c:333
+#, c-format
+msgid "Could not open %s: ERR=%s\n"
+msgstr ""
+
 #: src/dird/ua_query.c:64
 msgid "Available queries:\n"
 msgstr ""
@@ -3288,7 +3893,7 @@ msgid ""
 "Terminate query mode with a blank line.\n"
 msgstr ""
 
-#: src/dird/ua_query.c:272
+#: src/dird/ua_query.c:255 src/dird/ua_query.c:272
 msgid "Enter SQL query: "
 msgstr ""
 
@@ -3314,43 +3919,105 @@ msgstr ""
 msgid "Unable to construct a valid BSR. Cannot continue.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:182 src/dird/ua_restore.c:192
+#: src/dird/ua_restore.c:182 src/dird/ua_restore.c:196
 msgid "No files selected to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:189
+#: src/dird/ua_restore.c:190
+msgid ""
+"\n"
+"1 file selected to be restored.\n"
+"\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:193
 #, c-format
 msgid ""
 "\n"
-"%u file%s selected to be restored.\n"
+"%u files selected to be restored.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:207
+#: src/dird/ua_restore.c:211
 msgid "No Restore Job resource found!\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:352
+#: src/dird/ua_restore.c:276 src/dird/ua_select.c:288 src/dird/ua_select.c:325
+#: src/dird/ua_status.c:108 src/lib/bnet_server.c:291
+#: src/lib/bnet_server.c:385
+msgid "client"
+msgstr ""
+
+#: src/dird/ua_restore.c:309
+msgid "List last 20 Jobs run"
+msgstr ""
+
+#: src/dird/ua_restore.c:310
+msgid "List Jobs where a given File is saved"
+msgstr ""
+
+#: src/dird/ua_restore.c:311
+msgid "Enter list of comma separated JobIds to select"
+msgstr ""
+
+#: src/dird/ua_restore.c:312
+msgid "Enter SQL list command"
+msgstr ""
+
+#: src/dird/ua_restore.c:313
+msgid "Select the most recent backup for a client"
+msgstr ""
+
+#: src/dird/ua_restore.c:314
+msgid "Select backup for a client before a specified time"
+msgstr ""
+
+#: src/dird/ua_restore.c:315
+msgid "Enter a list of files to restore"
+msgstr ""
+
+#: src/dird/ua_restore.c:316
+msgid "Enter a list of files to restore before a specified time"
+msgstr ""
+
+#: src/dird/ua_restore.c:317
+msgid "Find the JobIds of the most recent backup for a client"
+msgstr ""
+
+#: src/dird/ua_restore.c:318
+msgid "Find the JobIds for a backup for a client before a specified time"
+msgstr ""
+
+#: src/dird/ua_restore.c:319
+msgid "Enter a list of directories to restore for found JobIds"
+msgstr ""
+
+#: src/dird/ua_restore.c:320 src/dird/ua_status.c:702 src/filed/status.c:249
+#: src/stored/status.c:367 src/wx-console/wxbconfigpanel.cpp:191
+msgid "Cancel"
+msgstr ""
+
+#: src/dird/ua_restore.c:356
 #, c-format
 msgid "Unknown keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:370
+#: src/dird/ua_restore.c:374
 #, c-format
 msgid "Improper date format: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:404 src/dird/ua_select.c:576
+#: src/dird/ua_restore.c:408 src/dird/ua_select.c:576
 #, c-format
 msgid "Error: Pool resource \"%s\" does not exist.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:409
+#: src/dird/ua_restore.c:413
 #, c-format
 msgid "Error: Pool resource \"%s\" access not allowed.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:428
+#: src/dird/ua_restore.c:432
 msgid ""
 "\n"
 "First you select one or more JobIds that contain files\n"
@@ -3360,181 +4027,221 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:440
+#: src/dird/ua_restore.c:444
 msgid "To select the JobIds, you have the following choices:\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:445
+#: src/dird/ua_restore.c:449
 msgid "Select item: "
 msgstr ""
 
-#: src/dird/ua_restore.c:459
+#: src/dird/ua_restore.c:463
 msgid "Enter Filename (no path):"
 msgstr ""
 
-#: src/dird/ua_restore.c:474 src/dird/ua_restore.c:574
+#: src/dird/ua_restore.c:478 src/dird/ua_restore.c:578
 msgid "Enter JobId(s), comma separated, to restore: "
 msgstr ""
 
-#: src/dird/ua_restore.c:480
+#: src/dird/ua_restore.c:484
 msgid "Enter SQL list command: "
 msgstr ""
 
-#: src/dird/ua_restore.c:508 src/dird/ua_restore.c:533
+#: src/dird/ua_restore.c:512 src/dird/ua_restore.c:537
 msgid ""
 "Enter file names with paths, or < to enter a filename\n"
 "containg a list of file names with paths, and terminate\n"
 "them with a blank line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:512 src/dird/ua_restore.c:537
+#: src/dird/ua_restore.c:516 src/dird/ua_restore.c:541
 msgid "Enter full filename: "
 msgstr ""
 
-#: src/dird/ua_restore.c:572
+#: src/dird/ua_restore.c:576
 #, c-format
 msgid "You have already seleted the following JobIds: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:587
+#: src/dird/ua_restore.c:591
 msgid ""
 "Enter full directory names or start the name\n"
 "with a < to indicate it is a filename containg a list\n"
 "of directories and terminate them with a blank line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:591
+#: src/dird/ua_restore.c:595
 msgid "Enter directory name: "
 msgstr ""
 
-#: src/dird/ua_restore.c:616
+#: src/dird/ua_restore.c:620
 msgid "No Jobs selected.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:619
+#: src/dird/ua_restore.c:624
+#, c-format
+msgid "You have selected the following JobIds: %s\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:627
 #, c-format
-msgid "You have selected the following JobId%s: %s\n"
+msgid "You have selected the following JobId: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:628
+#: src/dird/ua_restore.c:636
 msgid "Invalid JobId in list.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:640
+#: src/dird/ua_restore.c:648
 #, c-format
 msgid "Unable to get Job record for JobId=%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:645
+#: src/dird/ua_restore.c:653
 #, c-format
 msgid "No authorization. Job \"%s\" not selected.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:659
+#: src/dird/ua_restore.c:667
 msgid ""
 "The restored files will the most current backup\n"
 "BEFORE the date you specify below.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:662
+#: src/dird/ua_restore.c:670
 msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
 msgstr ""
 
-#: src/dird/ua_restore.c:668
+#: src/dird/ua_restore.c:676
 msgid "Improper date format.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:689
+#: src/dird/ua_restore.c:697
 #, c-format
 msgid "Cannot open file %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:697 src/dird/ua_restore.c:701
+#: src/dird/ua_restore.c:705 src/dird/ua_restore.c:709
 #, c-format
 msgid "Error occurred on line %d of %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:743 src/dird/ua_restore.c:781
+#: src/dird/ua_restore.c:751 src/dird/ua_restore.c:789
 #, c-format
 msgid "No database record found for: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:768
+#: src/dird/ua_restore.c:776
 msgid "No JobId specified cannot continue.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:887
+#: src/dird/ua_restore.c:895
 #, c-format
 msgid ""
 "\n"
 "Building directory tree for JobId %s ...  "
 msgstr ""
 
-#: src/dird/ua_restore.c:908
+#: src/dird/ua_restore.c:914
+msgid ""
+"\n"
+"There were no files inserted into the tree, so file selection\n"
+"is not possible.Most likely your retention policy pruned the files\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:916
 msgid ""
 "\n"
 "Do you want to restore all the files? (yes|no): "
 msgstr ""
 
-#: src/dird/ua_restore.c:929 src/dird/ua_tree.c:60
+#: src/dird/ua_restore.c:932
+#, c-format
+msgid ""
+"\n"
+"1 Job, %s files inserted into the tree and marked for extraction.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:936
+#, c-format
+msgid ""
+"\n"
+"1 Job, %s files inserted into the tree.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:942
+#, c-format
+msgid ""
+"\n"
+"%d Jobs, %s files inserted into the tree and marked for extraction.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:946
+#, c-format
+msgid ""
+"\n"
+"%d Jobs, %s files inserted into the tree.\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:954 src/dird/ua_tree.c:60
 msgid "done"
 msgstr ""
 
-#: src/dird/ua_restore.c:998
+#: src/dird/ua_restore.c:1023
 #, c-format
 msgid "Error getting FileSet \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1006 src/dird/ua_select.c:165
+#: src/dird/ua_restore.c:1031 src/dird/ua_select.c:165
 msgid "The defined FileSet resources are:\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1010 src/dird/ua_select.c:173
+#: src/dird/ua_restore.c:1035 src/dird/ua_select.c:173
 msgid "Select FileSet resource"
 msgstr ""
 
-#: src/dird/ua_restore.c:1017
+#: src/dird/ua_restore.c:1042
 #, c-format
 msgid "Error getting FileSet record: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1018
+#: src/dird/ua_restore.c:1043
 msgid ""
 "This probably means you modified the FileSet.\n"
 "Continuing anyway.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1033
+#: src/dird/ua_restore.c:1058
 #, c-format
 msgid "Pool \"%s\" not found, using any pool.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1059 src/dird/ua_restore.c:1075
+#: src/dird/ua_restore.c:1084 src/dird/ua_restore.c:1100
 #, c-format
 msgid "No Full backup before %s found.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1098
+#: src/dird/ua_restore.c:1123
 msgid "No jobs found.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1264
+#: src/dird/ua_restore.c:1289
 msgid ""
 "Warning, the JobIds that you selected refer to more than one MediaType.\n"
 "Restore is not possible. The MediaTypes used are:\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1272
+#: src/dird/ua_restore.c:1297
 msgid "No MediaType found for your JobIds.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1304
+#: src/dird/ua_restore.c:1329
 #, c-format
 msgid "Warning default storage overridden by %s on command line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1315
+#: src/dird/ua_restore.c:1340
 #, c-format
 msgid ""
 "\n"
@@ -3787,11 +4494,16 @@ msgstr ""
 msgid "Parameters to modify:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:646
+#: src/dird/ua_run.c:646 src/wx-console/wxbrestorepanel.cpp:380
+#: src/wx-console/wxbrestorepanel.cpp:808
+#: src/wx-console/wxbrestorepanel.cpp:1833
 msgid "When"
 msgstr ""
 
 #: src/dird/ua_run.c:647 src/dird/pythondir.c:73 src/dird/pythondir.c:83
+#: src/wx-console/wxbrestorepanel.cpp:381
+#: src/wx-console/wxbrestorepanel.cpp:1079
+#: src/wx-console/wxbrestorepanel.cpp:1835
 msgid "Priority"
 msgstr ""
 
@@ -3799,15 +4511,24 @@ msgstr ""
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:655
+#: src/dird/ua_run.c:655 src/wx-console/wxbrestorepanel.cpp:373
+#: src/wx-console/wxbrestorepanel.cpp:1814
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:656
+#: src/dird/ua_run.c:656 src/wx-console/wxbrestorepanel.cpp:374
+#: src/wx-console/wxbrestorepanel.cpp:1055
+#: src/wx-console/wxbrestorepanel.cpp:1816
 msgid "Where"
 msgstr ""
 
-#: src/dird/ua_run.c:657
+#: src/dird/ua_run.c:657 src/wx-console/wxbrestorepanel.cpp:376
+#: src/wx-console/wxbrestorepanel.cpp:1063
+#: src/wx-console/wxbrestorepanel.cpp:1820
+#: src/wx-console/wxbrestorepanel.cpp:1821
+#: src/wx-console/wxbrestorepanel.cpp:1822
+#: src/wx-console/wxbrestorepanel.cpp:1823
+#: src/wx-console/wxbrestorepanel.cpp:1824
 msgid "Replace"
 msgstr ""
 
@@ -3820,27 +4541,27 @@ msgid "Levels:\n"
 msgstr ""
 
 #: src/dird/ua_run.c:665 src/filed/status.c:368 src/lib/util.c:319
-#: src/stored/status.c:402
+#: src/stored/status.c:406
 msgid "Base"
 msgstr ""
 
-#: src/dird/ua_run.c:666 src/filed/status.c:370 src/lib/util.c:321
-#: src/stored/status.c:404
+#: src/dird/ua_run.c:666 src/dird/ua_update.c:106 src/dird/ua_update.c:438
+#: src/filed/status.c:370 src/lib/util.c:321 src/stored/status.c:408
 msgid "Full"
 msgstr ""
 
 #: src/dird/ua_run.c:667 src/filed/status.c:373 src/lib/util.c:324
-#: src/stored/status.c:407
+#: src/stored/status.c:411
 msgid "Incremental"
 msgstr ""
 
 #: src/dird/ua_run.c:668 src/filed/status.c:376 src/lib/util.c:327
-#: src/stored/status.c:410
+#: src/stored/status.c:414
 msgid "Differential"
 msgstr ""
 
 #: src/dird/ua_run.c:669 src/filed/status.c:379 src/lib/util.c:330
-#: src/stored/status.c:413
+#: src/stored/status.c:417
 msgid "Since"
 msgstr ""
 
@@ -3853,7 +4574,7 @@ msgid "Initialize Catalog"
 msgstr ""
 
 #: src/dird/ua_run.c:693 src/filed/status.c:382 src/lib/util.c:333
-#: src/stored/status.c:416
+#: src/stored/status.c:420
 msgid "Verify Catalog"
 msgstr ""
 
@@ -3990,6 +4711,10 @@ msgstr ""
 msgid "Select Client (File daemon) resource"
 msgstr ""
 
+#: src/dird/ua_select.c:289 src/dird/ua_select.c:326
+msgid "fd"
+msgstr ""
+
 #: src/dird/ua_select.c:297
 #, c-format
 msgid "Error: Client resource %s does not exist.\n"
@@ -4096,6 +4821,14 @@ msgstr ""
 msgid "Storage name given twice.\n"
 msgstr ""
 
+#: src/dird/ua_select.c:788
+msgid "storage"
+msgstr ""
+
+#: src/dird/ua_select.c:789
+msgid "sd"
+msgstr ""
+
 #: src/dird/ua_select.c:796
 #, c-format
 msgid "Expecting jobid=nn command, got: %s\n"
@@ -4116,6 +4849,11 @@ msgstr ""
 msgid "Job \"%s\" is not running.\n"
 msgstr ""
 
+#: src/dird/ua_select.c:829
+#, c-format
+msgid "Storage resource \"%s\": not found\n"
+msgstr ""
+
 #: src/dird/ua_select.c:862
 msgid "Media Types defined in conf file:\n"
 msgstr ""
@@ -4137,25 +4875,57 @@ msgstr ""
 msgid "You have messages.\n"
 msgstr ""
 
+#: src/dird/ua_status.c:104 src/dird/ua_tree.c:59
+msgid "dir"
+msgstr ""
+
+#: src/dird/ua_status.c:105
+msgid "director"
+msgstr ""
+
 #: src/dird/ua_status.c:126
 msgid "Status available for:\n"
 msgstr ""
 
+#: src/dird/ua_status.c:127
+msgid "Director"
+msgstr ""
+
+#: src/dird/ua_status.c:130
+msgid "All"
+msgstr ""
+
 #: src/dird/ua_status.c:132
 msgid "Select daemon type for status"
 msgstr ""
 
-#: src/dird/ua_status.c:248 src/filed/status.c:71 src/stored/status.c:69
+#: src/dird/ua_status.c:245
 #, c-format
-msgid "Daemon started %s, %d Job%s run since started.\n"
+msgid "%s Version: %s (%s) %s %s %s\n"
+msgstr ""
+
+#: src/dird/ua_status.c:249 src/stored/status.c:70
+#, c-format
+msgid "Daemon started %s, 1 Job run since started.\n"
+msgstr ""
+
+#: src/dird/ua_status.c:252 src/stored/status.c:73
+#, c-format
+msgid "Daemon started %s, %d Jobs run since started.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:252 src/filed/status.c:119 src/stored/status.c:73
+#: src/dird/ua_status.c:257 src/filed/status.c:119 src/stored/status.c:77
 #, c-format
 msgid " Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:284
+#: src/dird/ua_status.c:277 src/dird/ua_status.c:482 src/dird/ua_status.c:644
+#: src/filed/status.c:196 src/filed/status.c:275 src/stored/status.c:317
+#: src/stored/status.c:393
+msgid "====\n"
+msgstr ""
+
+#: src/dird/ua_status.c:289
 #, c-format
 msgid ""
 "\n"
@@ -4163,182 +4933,210 @@ msgid ""
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:322
+#: src/dird/ua_status.c:327
 #, c-format
 msgid ""
 "Failed to connect to Client %s.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:330
+#: src/dird/ua_status.c:335
 msgid "Connected to file daemon\n"
 msgstr ""
 
-#: src/dird/ua_status.c:345
+#: src/dird/ua_status.c:350
 msgid ""
 "\n"
 "Scheduled Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:346
+#: src/dird/ua_status.c:351
 msgid ""
 "Level          Type     Pri  Scheduled          Name               Volume\n"
 msgstr ""
 
-#: src/dird/ua_status.c:347
+#: src/dird/ua_status.c:352
 msgid "===================================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:394
+#: src/dird/ua_status.c:399
 #, c-format
 msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:475
+#: src/dird/ua_status.c:480
 msgid "No Scheduled Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:492 src/stored/status.c:265
+#: src/dird/ua_status.c:497 src/stored/status.c:269
 msgid ""
 "\n"
 "Running Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:501
+#: src/dird/ua_status.c:506
 #, c-format
 msgid "Console connected at %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:509
+#: src/dird/ua_status.c:514
 msgid ""
 "No Jobs running.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:514
+#: src/dird/ua_status.c:519
 msgid " JobId Level   Name                       Status\n"
 msgstr ""
 
-#: src/dird/ua_status.c:515 src/filed/status.c:219 src/stored/status.c:333
+#: src/dird/ua_status.c:520 src/filed/status.c:219 src/stored/status.c:337
 msgid "======================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:524
+#: src/dird/ua_status.c:529
 msgid "is waiting execution"
 msgstr ""
 
-#: src/dird/ua_status.c:527
+#: src/dird/ua_status.c:532
 msgid "is running"
 msgstr ""
 
-#: src/dird/ua_status.c:530
+#: src/dird/ua_status.c:535
 msgid "is blocked"
 msgstr ""
 
-#: src/dird/ua_status.c:533
+#: src/dird/ua_status.c:538
 msgid "has terminated"
 msgstr ""
 
-#: src/dird/ua_status.c:536
+#: src/dird/ua_status.c:541
 msgid "has erred"
 msgstr ""
 
-#: src/dird/ua_status.c:539
+#: src/dird/ua_status.c:544
 msgid "has errors"
 msgstr ""
 
-#: src/dird/ua_status.c:542
+#: src/dird/ua_status.c:547
 msgid "has a fatal error"
 msgstr ""
 
-#: src/dird/ua_status.c:545
+#: src/dird/ua_status.c:550
 msgid "has verify differences"
 msgstr ""
 
-#: src/dird/ua_status.c:548
+#: src/dird/ua_status.c:553
 msgid "has been canceled"
 msgstr ""
 
-#: src/dird/ua_status.c:552
+#: src/dird/ua_status.c:557
 #, c-format
 msgid "is waiting on Client %s"
 msgstr ""
 
-#: src/dird/ua_status.c:558
+#: src/dird/ua_status.c:563
 #, c-format
 msgid "is waiting on Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:563
+#: src/dird/ua_status.c:568
 msgid "is waiting on max Storage jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:566
+#: src/dird/ua_status.c:571
 msgid "is waiting on max Client jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:569
+#: src/dird/ua_status.c:574
 msgid "is waiting on max Job jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:572
+#: src/dird/ua_status.c:577
 msgid "is waiting on max total jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:575
+#: src/dird/ua_status.c:580
 msgid "is waiting for its start time"
 msgstr ""
 
-#: src/dird/ua_status.c:578
+#: src/dird/ua_status.c:583
 msgid "is waiting for higher priority jobs to finish"
 msgstr ""
 
-#: src/dird/ua_status.c:583
+#: src/dird/ua_status.c:588
 #, c-format
 msgid "is in unknown state %c"
 msgstr ""
 
-#: src/dird/ua_status.c:597
+#: src/dird/ua_status.c:602
 msgid "is waiting for a mount request"
 msgstr ""
 
-#: src/dird/ua_status.c:604
+#: src/dird/ua_status.c:609
 msgid "is waiting for an appendable Volume"
 msgstr ""
 
-#: src/dird/ua_status.c:611
+#: src/dird/ua_status.c:616
 #, c-format
 msgid "is waiting for Client %s to connect to Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:627
+#: src/dird/ua_status.c:632
 #, c-format
 msgid "%6d %-6s  %-20s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:649 src/filed/status.c:209 src/stored/status.c:324
+#: src/dird/ua_status.c:654 src/filed/status.c:209 src/stored/status.c:328
 msgid "No Terminated Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:654 src/stored/status.c:329
+#: src/dird/ua_status.c:659 src/stored/status.c:333
 msgid ""
 "\n"
 "Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:655
+#: src/dird/ua_status.c:660
 msgid " JobId  Level     Files      Bytes     Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/ua_status.c:656
+#: src/dird/ua_status.c:661
 msgid "========================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:706 src/filed/status.c:266 src/stored/status.c:380
+#: src/dird/ua_status.c:692 src/filed/status.c:239 src/lib/util.c:184
+#: src/stored/status.c:357
+msgid "Created"
+msgstr ""
+
+#: src/dird/ua_status.c:696 src/filed/status.c:243 src/lib/util.c:197
+#: src/lib/util.c:264 src/stored/status.c:361
+msgid "Error"
+msgstr ""
+
+#: src/dird/ua_status.c:699 src/filed/status.c:246 src/stored/status.c:364
+msgid "Diffs"
+msgstr ""
+
+#: src/dird/ua_status.c:705 src/filed/status.c:252 src/lib/util.c:193
+#: src/lib/util.c:260 src/stored/btape.c:1160 src/stored/status.c:370
+#: src/wx-console/wxbconfigpanel.cpp:180
+msgid "OK"
+msgstr ""
+
+#: src/dird/ua_status.c:708 src/filed/status.c:255 src/stored/status.c:373
+msgid "Other"
+msgstr ""
+
+#: src/dird/ua_status.c:711 src/filed/status.c:266 src/stored/status.c:384
 #, c-format
 msgid "%6d  %-6s %8s %14s %-7s  %-8s %s\n"
 msgstr ""
 
+#: src/dird/ua_status.c:719 src/stored/btape.c:180
+msgid "\n"
+msgstr ""
+
 #: src/dird/ua_tree.c:57
 msgid "cd"
 msgstr ""
@@ -4457,7 +5255,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:102 src/dird/ua_tree.c:629 src/dird/ua_tree.c:637
+#: src/dird/ua_tree.c:102 src/dird/ua_tree.c:633 src/dird/ua_tree.c:641
 #, c-format
 msgid "cwd is: %s\n"
 msgstr ""
@@ -4466,48 +5264,79 @@ msgstr ""
 msgid "Illegal command. Enter \"done\" to exit.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:296 src/dird/ua_tree.c:307 src/dird/ua_tree.c:322
+#: src/dird/ua_tree.c:296 src/dird/ua_tree.c:307 src/dird/ua_tree.c:324
 msgid "No files marked.\n"
 msgstr ""
 
 #: src/dird/ua_tree.c:309
+msgid "1 file marked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:311
 #, c-format
-msgid "%s file%s marked.\n"
+msgid "%s files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:336
+#: src/dird/ua_tree.c:338
 msgid "No directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:338
+#: src/dird/ua_tree.c:340
+msgid "1 directory marked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:342
+#, c-format
+msgid "%s directories marked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:363
 #, c-format
-msgid "%s director%s marked.\n"
+msgid "%s total files/dirs. %s marked to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:370
+#: src/dird/ua_tree.c:374
 msgid "No file specification given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:621
+#: src/dird/ua_tree.c:502
+#, c-format
+msgid "Node %s has no children.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:583
+#, c-format
+msgid "%d total files; %d marked to be restored; %s bytes.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:625
 msgid "Invalid path given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:648 src/dird/ua_tree.c:659
+#: src/dird/ua_tree.c:652 src/dird/ua_tree.c:663
 msgid "No files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:661
+#: src/dird/ua_tree.c:665
+msgid "1 file unmarked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:667
 #, c-format
-msgid "%d file%s unmarked.\n"
+msgid "%d files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:672 src/dird/ua_tree.c:688
+#: src/dird/ua_tree.c:678 src/dird/ua_tree.c:694
 msgid "No directories unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:690
+#: src/dird/ua_tree.c:696
+msgid "1 directory unmarked.\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:698
 #, c-format
-msgid "%d director%s unmarked.\n"
+msgid "%d directories unmarked.\n"
 msgstr ""
 
 #: src/dird/verify.c:87
@@ -4579,7 +5408,7 @@ msgstr ""
 #: src/dird/verify.c:415
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  FileSet:                %s\n"
@@ -4598,10 +5427,10 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/verify.c:448
+#: src/dird/verify.c:450
 #, c-format
 msgid ""
-"): %s\n"
+"Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  FileSet:                %s\n"
@@ -4618,90 +5447,90 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/verify.c:522
+#: src/dird/verify.c:526
 #, c-format
 msgid ""
 "bird<filed: bad attributes, expected 3 fields got %d\n"
 " mslen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:566
+#: src/dird/verify.c:570
 #, c-format
 msgid "New file: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:567
+#: src/dird/verify.c:571
 #, c-format
 msgid "File not in catalog: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:591
+#: src/dird/verify.c:595
 #, c-format
 msgid "      st_ino   differ. Cat: %s File: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:600
+#: src/dird/verify.c:604
 #, c-format
 msgid "      st_mode  differ. Cat: %x File: %x\n"
 msgstr ""
 
-#: src/dird/verify.c:608
+#: src/dird/verify.c:612
 #, c-format
 msgid "      st_nlink differ. Cat: %d File: %d\n"
 msgstr ""
 
-#: src/dird/verify.c:616
+#: src/dird/verify.c:620
 #, c-format
 msgid "      st_uid   differ. Cat: %u File: %u\n"
 msgstr ""
 
-#: src/dird/verify.c:624
+#: src/dird/verify.c:628
 #, c-format
 msgid "      st_gid   differ. Cat: %u File: %u\n"
 msgstr ""
 
-#: src/dird/verify.c:632
+#: src/dird/verify.c:636
 #, c-format
 msgid "      st_size  differ. Cat: %s File: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:641
+#: src/dird/verify.c:645
 msgid "      st_atime differs\n"
 msgstr ""
 
-#: src/dird/verify.c:648
+#: src/dird/verify.c:652
 msgid "      st_mtime differs\n"
 msgstr ""
 
-#: src/dird/verify.c:655
+#: src/dird/verify.c:659
 msgid "      st_ctime differs\n"
 msgstr ""
 
-#: src/dird/verify.c:662
+#: src/dird/verify.c:666
 #, c-format
 msgid "      st_size  decrease. Cat: %s File: %s\n"
 msgstr ""
 
-#: src/dird/verify.c:701
+#: src/dird/verify.c:705
 #, c-format
 msgid "      %s not same. File=%s Cat=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:704
+#: src/dird/verify.c:708
 #, c-format
 msgid "      %s differs.\n"
 msgstr ""
 
-#: src/dird/verify.c:716
+#: src/dird/verify.c:720
 #, c-format
 msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
 msgstr ""
 
-#: src/dird/verify.c:753
+#: src/dird/verify.c:757
 msgid "The following files are missing:\n"
 msgstr ""
 
-#: src/dird/verify.c:767
+#: src/dird/verify.c:771 src/tools/testfind.c:338
 #, c-format
 msgid "File: %s\n"
 msgstr ""
@@ -4734,6 +5563,34 @@ msgstr ""
 msgid "Choose catalog item to update"
 msgstr ""
 
+#: src/dird/ua_update.c:103 src/dird/ua_update.c:435
+msgid "Append"
+msgstr ""
+
+#: src/dird/ua_update.c:104 src/dird/ua_update.c:436
+msgid "Archive"
+msgstr ""
+
+#: src/dird/ua_update.c:105 src/dird/ua_update.c:437
+msgid "Disabled"
+msgstr ""
+
+#: src/dird/ua_update.c:107 src/dird/ua_update.c:439
+msgid "Used"
+msgstr ""
+
+#: src/dird/ua_update.c:108 src/dird/ua_update.c:440
+msgid "Cleaning"
+msgstr ""
+
+#: src/dird/ua_update.c:109 src/dird/ua_update.c:355 src/dird/ua_update.c:442
+msgid "Recycle"
+msgstr ""
+
+#: src/dird/ua_update.c:110 src/dird/ua_update.c:444
+msgid "Read-Only"
+msgstr ""
+
 #: src/dird/ua_update.c:122
 #, c-format
 msgid "Invalid VolStatus specified: %s\n"
@@ -4841,10 +5698,6 @@ msgstr ""
 msgid "MaxVolBytes"
 msgstr ""
 
-#: src/dird/ua_update.c:355
-msgid "Recycle"
-msgstr ""
-
 #: src/dird/ua_update.c:357
 msgid "FromPool"
 msgstr ""
@@ -4919,6 +5772,10 @@ msgstr ""
 msgid "Possible Values are:\n"
 msgstr ""
 
+#: src/dird/ua_update.c:441
+msgid "Purged"
+msgstr ""
+
 #: src/dird/ua_update.c:445
 msgid "Choose new Volume Status"
 msgstr ""
@@ -5053,6 +5910,10 @@ msgstr ""
 msgid "Enter new Pool name: "
 msgstr ""
 
+#: src/dird/ua_update.c:598
+msgid "Selection done.\n"
+msgstr ""
+
 #: src/dird/ua_update.c:631
 #, c-format
 msgid "db_update_pool_record returned %d. ERR=%s\n"
@@ -5078,26 +5939,38 @@ msgstr ""
 msgid "VolumeName"
 msgstr ""
 
-#: src/filed/authenticate.c:49 src/filed/authenticate.c:50
+#: src/dird/pythondir.c:104 src/filed/pythonfd.c:102 src/filed/pythonfd.c:156
+#: src/filed/pythonfd.c:220 src/stored/pythonsd.c:95 src/stored/pythonsd.c:160
+msgid "Job pointer not found."
+msgstr ""
+
+#: src/dird/pythondir.c:136
+msgid "Pool record not found."
+msgstr ""
+
+#: src/dird/pythondir.c:163 src/filed/pythonfd.c:133 src/stored/pythonsd.c:137
 #, c-format
-msgid "I only authenticate directors, not %d\n"
+msgid "Attribute %s not found."
+msgstr ""
+
+#: src/dird/pythondir.c:206 src/dird/pythondir.c:212 src/filed/pythonfd.c:175
+#: src/stored/pythonsd.c:177
+msgid "Read-only attribute"
 msgstr ""
 
-#: src/filed/authenticate.c:54 src/filed/authenticate.c:56
-#: src/stored/authenticate.c:57 src/stored/authenticate.c:59
+#: src/filed/authenticate.c:50
 #, c-format
-msgid "Bad Hello command from Director at %s. Len=%d.\n"
+msgid "I only authenticate directors, not %d\n"
 msgstr ""
 
-#: src/filed/authenticate.c:66 src/filed/authenticate.c:68
-#: src/stored/authenticate.c:68 src/stored/authenticate.c:70
+#: src/filed/authenticate.c:56 src/stored/authenticate.c:59
 #, c-format
-msgid "Bad Hello command from Director at %s: %s\n"
+msgid "Bad Hello command from Director at %s. Len=%d.\n"
 msgstr ""
 
-#: src/filed/authenticate.c:80 src/stored/authenticate.c:83
+#: src/filed/authenticate.c:68 src/stored/authenticate.c:70
 #, c-format
-msgid "Connection from unknown Director %s at %s rejected.\n"
+msgid "Bad Hello command from Director at %s: %s\n"
 msgstr ""
 
 #: src/filed/authenticate.c:82 src/stored/authenticate.c:85
@@ -5191,7 +6064,7 @@ msgstr ""
 msgid "     Cannot open %s: ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:293
+#: src/filed/backup.c:293 src/filed/verify.c:229
 #, c-format
 msgid "     Cannot open resource fork for %s: ERR=%s.\n"
 msgstr ""
@@ -5222,9 +6095,17 @@ msgstr ""
 msgid "Too many errors.\n"
 msgstr ""
 
-#: src/filed/filed.c:63
+#: src/filed/backup.c:535
+#, c-format
+msgid "Error reading ACL of %s\n"
+msgstr ""
+
+#: src/filed/filed.c:62
+#, c-format
 msgid ""
-")\n"
+"Copyright (C) 2000-2005 Kern Sibbald\n"
+"\n"
+"Version: %s (%s)\n"
 "\n"
 "Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
 "        -c <file>   use <file> as configuration file\n"
@@ -5240,38 +6121,33 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/filed/filed.c:279
+#: src/filed/filed.c:282
 #, c-format
 msgid ""
 "No File daemon resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/filed/filed.c:284
+#: src/filed/filed.c:287
 #, c-format
 msgid "Only one Client resource permitted in %s\n"
 msgstr ""
 
-#: src/filed/filed.c:307
+#: src/filed/filed.c:310
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon in %s.\n"
 msgstr ""
 
-#: src/filed/filed.c:336
+#: src/filed/filed.c:339
 #, c-format
 msgid "No Director resource defined in %s\n"
 msgstr ""
 
-#: src/filed/filed_conf.c:296
-#, c-format
-msgid "%s item is required in %s resource, but not found.\n"
-msgstr ""
-
-#: src/filed/filed_conf.c:327 src/filed/filed_conf.c:357
+#: src/filed/job.c:323
 #, c-format
-msgid "Unknown resource type %d\n"
+msgid "2901 Job %s not found.\n"
 msgstr ""
 
 #: src/filed/job.c:339
@@ -5283,11 +6159,20 @@ msgstr ""
 msgid "2902 Error scanning cancel command.\n"
 msgstr ""
 
+#: src/filed/job.c:361
+#, c-format
+msgid "2991 Bad setdebug command: %s\n"
+msgstr ""
+
 #: src/filed/job.c:377
 #, c-format
 msgid "Bad estimate command: %s"
 msgstr ""
 
+#: src/filed/job.c:378
+msgid "2992 Bad estimate command.\n"
+msgstr ""
+
 #: src/filed/job.c:401
 #, c-format
 msgid "Bad Job Command: %s"
@@ -5298,11 +6183,19 @@ msgstr ""
 msgid "Bad RunBeforeJob command: %s\n"
 msgstr ""
 
+#: src/filed/job.c:422 src/filed/job.c:435
+msgid "2905 Bad RunBeforeJob command.\n"
+msgstr ""
+
 #: src/filed/job.c:448
 #, c-format
 msgid "Bad RunAfter command: %s\n"
 msgstr ""
 
+#: src/filed/job.c:449
+msgid "2905 Bad RunAfterJob command.\n"
+msgstr ""
+
 #: src/filed/job.c:475
 #, c-format
 msgid "%s could not execute. ERR=%s\n"
@@ -5328,6 +6221,21 @@ msgstr ""
 msgid "Cannot open FileSet input file: %s. ERR=%s\n"
 msgstr ""
 
+#: src/filed/job.c:678
+#, c-format
+msgid "REGEX %s compile error. ERR=%s\n"
+msgstr ""
+
+#: src/filed/job.c:732
+#, c-format
+msgid "Invalid FileSet command: %s\n"
+msgstr ""
+
+#: src/filed/job.c:901 src/findlib/match.c:184
+#, c-format
+msgid "Unknown include/exclude option: %c\n"
+msgstr ""
+
 #: src/filed/job.c:961 src/stored/fd_cmds.c:329
 #, c-format
 msgid "Could not create bootstrap file %s: ERR=%s\n"
@@ -5338,11 +6246,21 @@ msgstr ""
 msgid "DIR and FD clocks differ by %d seconds, FD automatically adjusting.\n"
 msgstr ""
 
+#: src/filed/job.c:1068
+#, c-format
+msgid "Unknown backup level: %s\n"
+msgstr ""
+
 #: src/filed/job.c:1080
 #, c-format
 msgid "Bad level command: %s\n"
 msgstr ""
 
+#: src/filed/job.c:1101
+#, c-format
+msgid "Bad session command: %s"
+msgstr ""
+
 #: src/filed/job.c:1122
 #, c-format
 msgid "Bad storage command: %s"
@@ -5407,6 +6325,16 @@ msgstr ""
 msgid "Bad status %d returned from Storage Daemon.\n"
 msgstr ""
 
+#: src/filed/job.c:1331
+#, c-format
+msgid "2994 Bad verify command: %s\n"
+msgstr ""
+
+#: src/filed/job.c:1346 src/filed/job.c:1385
+#, c-format
+msgid "2994 Bad verify level: %s\n"
+msgstr ""
+
 #: src/filed/job.c:1425
 #, c-format
 msgid "Bad replace command. CMD=%s\n"
@@ -5464,19 +6392,19 @@ msgid "Logic error: output file should not be open\n"
 msgstr ""
 
 #: src/filed/restore.c:218 src/filed/verify_vol.c:142
-#: src/stored/bextract.c:285 src/stored/bls.c:368 src/stored/bscan.c:640
+#: src/stored/bextract.c:289 src/stored/bls.c:372 src/stored/bscan.c:649
 #, c-format
 msgid "Record header file index %ld not equal record index %ld\n"
 msgstr ""
 
-#: src/filed/restore.c:231 src/stored/bextract.c:294
+#: src/filed/restore.c:231 src/stored/bextract.c:298
 #, c-format
 msgid "%s stream not supported on this Client.\n"
 msgstr ""
 
 #: src/filed/restore.c:308
 #, c-format
-msgid "     Cannot open resource fork for %s\n"
+msgid "     Cannot open resource fork for %s.\n"
 msgstr ""
 
 #: src/filed/restore.c:331
@@ -5489,7 +6417,17 @@ msgstr ""
 msgid "     Could not set Finder Info on %s\n"
 msgstr ""
 
-#: src/filed/restore.c:391 src/stored/bextract.c:445
+#: src/filed/restore.c:347
+#, c-format
+msgid "Can't restore ACL of %s\n"
+msgstr ""
+
+#: src/filed/restore.c:359
+#, c-format
+msgid "Can't restore default ACL of %s\n"
+msgstr ""
+
+#: src/filed/restore.c:391 src/stored/bextract.c:449
 #, c-format
 msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
 msgstr ""
@@ -5515,7 +6453,41 @@ msgstr ""
 msgid "%d non-supported acl streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:498 src/stored/bextract.c:383
+#: src/filed/restore.c:450
+msgid "None"
+msgstr ""
+
+#: src/filed/restore.c:454
+msgid "Zlib errno"
+msgstr ""
+
+#: src/filed/restore.c:456
+msgid "Zlib stream error"
+msgstr ""
+
+#: src/filed/restore.c:458
+msgid "Zlib data error"
+msgstr ""
+
+#: src/filed/restore.c:460
+msgid "Zlib memory error"
+msgstr ""
+
+#: src/filed/restore.c:462
+msgid "Zlib buffer error"
+msgstr ""
+
+#: src/filed/restore.c:464
+msgid "Zlib version error"
+msgstr ""
+
+#: src/filed/restore.c:466 src/lib/util.c:546 src/lib/util.c:556
+#: src/lib/util.c:564 src/lib/util.c:571 src/lib/util.c:578 src/lib/util.c:592
+#: src/lib/util.c:602 src/lib/util.c:609 src/lib/util.c:620
+msgid "*none*"
+msgstr ""
+
+#: src/filed/restore.c:498 src/stored/bextract.c:387
 #, c-format
 msgid "Seek to %s error on %s: ERR=%s\n"
 msgstr ""
@@ -5525,15 +6497,25 @@ msgstr ""
 msgid "Uncompression error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:530
+#: src/filed/restore.c:530 src/stored/bextract.c:421
 msgid "GZIP data stream found, but GZIP not configured!\n"
 msgstr ""
 
-#: src/filed/restore.c:539 src/stored/bextract.c:355 src/stored/bextract.c:405
+#: src/filed/restore.c:539 src/stored/bextract.c:359 src/stored/bextract.c:409
 #, c-format
 msgid "Write error on %s: %s\n"
 msgstr ""
 
+#: src/filed/status.c:67
+#, c-format
+msgid "%s Version: %s (%s) %s %s %s %s\n"
+msgstr ""
+
+#: src/filed/status.c:71
+#, c-format
+msgid "Daemon started %s, %d Job%s run since started.\n"
+msgstr ""
+
 #: src/filed/status.c:125
 #, c-format
 msgid " Sizeof: off_t=%d size_t=%d debug=%d trace=%d\n"
@@ -5558,7 +6540,7 @@ msgstr ""
 msgid "    %s%s Job started: %s\n"
 msgstr ""
 
-#: src/filed/status.c:165 src/stored/status.c:292
+#: src/filed/status.c:165 src/stored/status.c:296
 #, c-format
 msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
 msgstr ""
@@ -5577,10 +6559,6 @@ msgstr ""
 msgid "    SDSocket closed.\n"
 msgstr ""
 
-#: src/filed/status.c:196
-msgid "====\n"
-msgstr ""
-
 #: src/filed/status.c:215
 msgid "Terminated Jobs:\n"
 msgstr ""
@@ -5589,29 +6567,37 @@ msgstr ""
 msgid " JobId  Level     Files         Bytes  Status   Finished        Name \n"
 msgstr ""
 
-#: src/filed/status.c:321 src/filed/status.c:347 src/stored/status.c:464
-#: src/stored/status.c:489
+#: src/filed/status.c:321 src/filed/status.c:347 src/stored/status.c:468
+#: src/stored/status.c:493
 #, c-format
 msgid "Bad .status command: %s\n"
 msgstr ""
 
-#: src/filed/status.c:385 src/stored/status.c:419
+#: src/filed/status.c:322
+msgid "2900 Bad .status command, missing argument.\n"
+msgstr ""
+
+#: src/filed/status.c:348
+msgid "2900 Bad .status command, wrong argument.\n"
+msgstr ""
+
+#: src/filed/status.c:385 src/stored/status.c:423
 msgid "Init Catalog"
 msgstr ""
 
-#: src/filed/status.c:388 src/stored/status.c:422
+#: src/filed/status.c:388 src/stored/status.c:426
 msgid "Volume to Catalog"
 msgstr ""
 
-#: src/filed/status.c:391 src/stored/status.c:425
+#: src/filed/status.c:391 src/stored/status.c:429
 msgid "Disk to Catalog"
 msgstr ""
 
-#: src/filed/status.c:394 src/stored/status.c:428
+#: src/filed/status.c:394 src/stored/status.c:432
 msgid "Data"
 msgstr ""
 
-#: src/filed/status.c:400 src/lib/util.c:351 src/stored/status.c:434
+#: src/filed/status.c:400 src/lib/util.c:351 src/stored/status.c:438
 msgid "Unknown Job Level"
 msgstr ""
 
@@ -5665,11 +6651,6 @@ msgstr ""
 msgid "Network error in send to Director: ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify.c:229
-#, c-format
-msgid "     Cannot open resource fork for %s: ERR=%s\n"
-msgstr ""
-
 #: src/filed/verify.c:284
 #, c-format
 msgid "Error reading file %s: ERR=%s\n"
@@ -5688,6 +6669,16 @@ msgstr ""
 msgid "FDName"
 msgstr ""
 
+#: src/filed/pythonfd.c:150 src/stored/pythonsd.c:154
+#, c-format
+msgid "Cannot delete attribute %s"
+msgstr ""
+
+#: src/filed/pythonfd.c:168 src/filed/pythonfd.c:184 src/stored/pythonsd.c:187
+#, c-format
+msgid "Cannot find attribute %s"
+msgstr ""
+
 #: src/findlib/attribs.c:340
 #, c-format
 msgid "File size of restored file %s not correct. Original %s, restored %s.\n"
@@ -5723,6 +6714,62 @@ msgstr ""
 msgid "Error in %s: ERR=%s\n"
 msgstr ""
 
+#: src/findlib/bfile.c:67
+msgid "GZIP data"
+msgstr ""
+
+#: src/findlib/bfile.c:69
+msgid "GZIP sparse data"
+msgstr ""
+
+#: src/findlib/bfile.c:71
+msgid "Win32 data"
+msgstr ""
+
+#: src/findlib/bfile.c:73
+msgid "Win32 GZIP data"
+msgstr ""
+
+#: src/findlib/bfile.c:75
+msgid "File attributes"
+msgstr ""
+
+#: src/findlib/bfile.c:77
+msgid "File data"
+msgstr ""
+
+#: src/findlib/bfile.c:79
+msgid "MD5 signature"
+msgstr ""
+
+#: src/findlib/bfile.c:81
+msgid "Extended attributes"
+msgstr ""
+
+#: src/findlib/bfile.c:83
+msgid "Sparse data"
+msgstr ""
+
+#: src/findlib/bfile.c:85
+msgid "Program names"
+msgstr ""
+
+#: src/findlib/bfile.c:87
+msgid "Program data"
+msgstr ""
+
+#: src/findlib/bfile.c:89
+msgid "SHA1 signature"
+msgstr ""
+
+#: src/findlib/bfile.c:91
+msgid "HFS+ resource fork"
+msgstr ""
+
+#: src/findlib/bfile.c:93
+msgid "HFS+ Finder Info"
+msgstr ""
+
 #: src/findlib/create_file.c:86
 #, c-format
 msgid "File skipped. Not newer: %s\n"
@@ -5743,6 +6790,12 @@ msgstr ""
 msgid "File %s already exists and could not be replaced. ERR=%s.\n"
 msgstr ""
 
+#: src/findlib/create_file.c:170 src/findlib/create_file.c:271
+#: src/findlib/create_file.c:322
+#, c-format
+msgid "bpkt already open fid=%d\n"
+msgstr ""
+
 #: src/findlib/create_file.c:192
 msgid "Could not save_dirn"
 msgstr ""
@@ -5767,11 +6820,6 @@ msgstr ""
 msgid "Cannot make node %s: ERR=%s\n"
 msgstr ""
 
-#: src/findlib/create_file.c:276 src/findlib/create_file.c:333
-#, c-format
-msgid "Could not open %s: ERR=%s\n"
-msgstr ""
-
 #: src/findlib/create_file.c:291
 #, c-format
 msgid "Could not symlink %s -> %s: ERR=%s\n"
@@ -5797,6 +6845,10 @@ msgstr ""
 msgid "Zero length filename: %s\n"
 msgstr ""
 
+#: src/findlib/enable_priv.c:85
+msgid "AdjustTokenPrivileges set "
+msgstr ""
+
 #: src/findlib/find_one.c:168
 #, c-format
 msgid "Top level directory \"%s\" has an unlisted fstype\n"
@@ -5834,6 +6886,41 @@ msgstr ""
 msgid "Cannot change permissions of %s: ERR=%s\n"
 msgstr ""
 
+#: src/findlib/save-cwd.c:48
+#, c-format
+msgid "Cannot open current directory: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:62
+#, c-format
+msgid "Current directory: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:84
+#, c-format
+msgid "Cannot get current directory: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:105
+#, c-format
+msgid "Cannot return to %s from %s: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:109
+#, c-format
+msgid "Cannot return to saved working directory from %s: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:115
+#, c-format
+msgid "Cannot return to %s: %s\n"
+msgstr ""
+
+#: src/findlib/save-cwd.c:119
+#, c-format
+msgid "Cannot return to saved working directory: %s\n"
+msgstr ""
+
 #: src/gnome2-console/authenticate.c:74
 #, c-format
 msgid "%s: Director authorization problem.\n"
@@ -5863,13 +6950,7 @@ msgstr ""
 msgid ""
 "Copyright (C) 2002-2005 Kern Sibbald\n"
 "\n"
-"Version: "
-msgstr ""
-
-#: src/gnome2-console/console.c:89
-#, c-format
-msgid ""
-") %s %s %s\n"
+"Version: %s (%s) %s %s %s\n"
 "\n"
 "Usage: gnome-console [-s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
@@ -5880,35 +6961,72 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/gnome2-console/console.c:215
+#: src/gnome2-console/console.c:219
 #, c-format
 msgid "Pthread cond init error = %s\n"
 msgstr ""
 
-#: src/gnome2-console/console.c:357
+#: src/gnome2-console/console.c:361
 msgid " Not Connected"
 msgstr ""
 
-#: src/gnome2-console/console.c:478
+#: src/gnome2-console/console.c:482
 #, c-format
 msgid " Connecting to Director %s:%d"
 msgstr ""
 
-#: src/gnome2-console/console.c:479
+#: src/gnome2-console/console.c:483
 #, c-format
 msgid ""
 "Connecting to Director %s:%d\n"
 "\n"
 msgstr ""
 
-#: src/gnome2-console/console.c:591
+#: src/gnome2-console/console.c:498 src/wx-console/console_thread.cpp:354
+#, c-format
+msgid "Passphrase for Console \"%s\" TLS private key: "
+msgstr ""
+
+#: src/gnome2-console/console.c:520 src/wx-console/console_thread.cpp:375
+#, c-format
+msgid "Passphrase for Director \"%s\" TLS private key: "
+msgstr ""
+
+#: src/gnome2-console/console.c:539 src/tray-monitor/tray-monitor.c:860
+#: src/wx-console/console_thread.cpp:393
+msgid "Director daemon"
+msgstr ""
+
+#: src/gnome2-console/console.c:551
+msgid " Initializing ..."
+msgstr ""
+
+#: src/gnome2-console/console.c:587
+msgid " Connected"
+msgstr ""
+
+#: src/gnome2-console/console.c:595
 msgid " Processing command ..."
 msgstr ""
 
-#: src/gnome2-console/console.c:626
+#: src/gnome2-console/console.c:630
 msgid " At prompt waiting for input ..."
 msgstr ""
 
+#: src/gnome2-console/console.c:750
+msgid " Ready"
+msgstr ""
+
+#: src/gnome2-console/console_conf.c:135
+#, c-format
+msgid "Console: name=%s\n"
+msgstr ""
+
+#: src/gnome2-console/console_conf.c:138
+#, c-format
+msgid "ConsoleFont: name=%s font face=%s\n"
+msgstr ""
+
 #: src/gnome2-console/interface.c:32
 msgid "_Connect"
 msgstr ""
@@ -5985,7 +7103,8 @@ msgstr ""
 msgid "Bacula Console"
 msgstr ""
 
-#: src/gnome2-console/interface.c:231
+#: src/gnome2-console/interface.c:231 src/wx-console/wxbmainframe.cpp:229
+#: src/wx-console/wxbmainframe.cpp:589
 msgid "Connect"
 msgstr ""
 
@@ -6003,6 +7122,8 @@ msgid "Msgs"
 msgstr ""
 
 #: src/gnome2-console/interface.c:261 src/lib/util.c:298
+#: src/wx-console/wxbrestorepanel.cpp:426
+#: src/wx-console/wxbrestorepanel.cpp:1915
 msgid "Restore"
 msgstr ""
 
@@ -6022,7 +7143,7 @@ msgstr ""
 msgid " Status: "
 msgstr ""
 
-#: src/gnome2-console/interface.c:326 src/gnome2-console/interface.c:1692
+#: src/gnome2-console/interface.c:326
 msgid "  "
 msgstr ""
 
@@ -6050,10 +7171,6 @@ msgstr ""
 msgid "Select Director"
 msgstr ""
 
-#: src/gnome2-console/interface.c:565
-msgid "         "
-msgstr ""
-
 #: src/gnome2-console/interface.c:708 src/gnome2-console/interface.c:1616
 msgid "Job:"
 msgstr ""
@@ -6062,12 +7179,8 @@ msgstr ""
 msgid "   Type:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:747 src/gnome2-console/interface.c:777
-#: src/gnome2-console/interface.c:1273 src/gnome2-console/interface.c:1664
-msgid " "
-msgstr ""
-
 #: src/gnome2-console/interface.c:757 src/gnome2-console/interface.c:1644
+#: src/wx-console/wxbrestorepanel.cpp:1828
 msgid "Client:"
 msgstr ""
 
@@ -6075,7 +7188,7 @@ msgstr ""
 msgid "FileSet: "
 msgstr ""
 
-#: src/gnome2-console/interface.c:813
+#: src/gnome2-console/interface.c:813 src/wx-console/wxbrestorepanel.cpp:1834
 msgid "Priority:"
 msgstr ""
 
@@ -6083,26 +7196,13 @@ msgstr ""
 msgid "Level:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:857
-msgid "             "
-msgstr ""
-
 #: src/gnome2-console/interface.c:866 src/gnome2-console/interface.c:1418
 #: src/gnome2-console/interface.c:1700
 msgid "Pool:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:886 src/gnome2-console/interface.c:915
-#: src/gnome2-console/interface.c:943 src/gnome2-console/interface.c:961
-#: src/gnome2-console/interface.c:979 src/gnome2-console/interface.c:997
-#: src/gnome2-console/interface.c:1001 src/gnome2-console/interface.c:1471
-#: src/gnome2-console/interface.c:1720 src/gnome2-console/interface.c:1748
-#: src/gnome2-console/interface.c:1765 src/gnome2-console/interface.c:1769
-msgid "   "
-msgstr ""
-
 #: src/gnome2-console/interface.c:895 src/gnome2-console/interface.c:1393
-#: src/gnome2-console/interface.c:1728
+#: src/gnome2-console/interface.c:1728 src/wx-console/wxbrestorepanel.cpp:1830
 msgid "Storage:"
 msgstr ""
 
@@ -6114,11 +7214,11 @@ msgstr ""
 msgid "Where: "
 msgstr ""
 
-#: src/gnome2-console/interface.c:970
+#: src/gnome2-console/interface.c:970 src/wx-console/wxbrestorepanel.cpp:1832
 msgid "When:"
 msgstr ""
 
-#: src/gnome2-console/interface.c:988
+#: src/gnome2-console/interface.c:988 src/wx-console/wxbrestorepanel.cpp:1813
 msgid "Bootstrap:"
 msgstr ""
 
@@ -6170,11 +7270,45 @@ msgstr ""
 msgid "Progress"
 msgstr ""
 
-#: src/gnome2-console/support.c:60 src/gnome2-console/support.c:85
-#, c-format
+#: src/gnome2-console/restore.c:121
+msgid "Mark"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121
+msgid "Mode"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:330
+msgid "User"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:334
+msgid "Group"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:318
+msgid "Size"
+msgstr ""
+
+#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:322
+msgid "Date"
+msgstr ""
+
+#: src/gnome2-console/support.c:41
+#, c-format
+msgid "Widget not found: %s"
+msgstr ""
+
+#: src/gnome2-console/support.c:60 src/gnome2-console/support.c:85
+#, c-format
 msgid "Couldn't find pixmap file: %s"
 msgstr ""
 
+#: src/gnome2-console/support.c:92
+#, c-format
+msgid "Failed to load pixbuf file: %s: %s\n"
+msgstr ""
+
 #: src/lib/address_conf.c:55
 #, c-format
 msgid "Only ipv4 and ipv6 are supported (%d)\n"
@@ -6200,6 +7334,20 @@ msgstr ""
 msgid "Can't add default address (%s)\n"
 msgstr ""
 
+#: src/lib/address_conf.c:285
+msgid "the old style addresses cannot be mixed with new style"
+msgstr ""
+
+#: src/lib/address_conf.c:308
+#, c-format
+msgid "can't resolve service(%s)"
+msgstr ""
+
+#: src/lib/address_conf.c:318
+#, c-format
+msgid "can't resolve hostname(%s) %s"
+msgstr ""
+
 #: src/lib/address_conf.c:407
 #, c-format
 msgid "Expected a block begin { , got: %s"
@@ -6291,10 +7439,37 @@ msgstr ""
 msgid "Error scanning attributes: %s\n"
 msgstr ""
 
+#: src/lib/berrno.c:66
+msgid "Child exited normally."
+msgstr ""
+
+#: src/lib/berrno.c:73
+msgid "Unknown error during program execvp"
+msgstr ""
+
+#: src/lib/berrno.c:76
+#, c-format
+msgid "Child exited with code %d"
+msgstr ""
+
+#: src/lib/berrno.c:84
+#, c-format
+msgid "Child died from signal %d: %s"
+msgstr ""
+
 #: src/lib/berrno.c:90
 msgid "Invalid errno. No error message possible."
 msgstr ""
 
+#: src/lib/bget_msg.c:91
+msgid "Status OK\n"
+msgstr ""
+
+#: src/lib/bget_msg.c:95
+#, c-format
+msgid "bget_msg: unknown signal %d\n"
+msgstr ""
+
 #: src/lib/bnet.c:102
 #, c-format
 msgid "Attr spool write error. ERR=%s\n"
@@ -6360,36 +7535,92 @@ msgstr ""
 msgid "TLS not configured.\n"
 msgstr ""
 
+#: src/lib/bnet.c:607
+msgid "No problem."
+msgstr ""
+
+#: src/lib/bnet.c:610
+msgid "Authoritative answer for host not found."
+msgstr ""
+
+#: src/lib/bnet.c:613
+msgid "Non-authoritative for host not found, or ServerFail."
+msgstr ""
+
+#: src/lib/bnet.c:616
+msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
+msgstr ""
+
+#: src/lib/bnet.c:619
+msgid "Valid name, no data record of resquested type."
+msgstr ""
+
+#: src/lib/bnet.c:622
+msgid "Unknown error."
+msgstr ""
+
+#: src/lib/bnet.c:757
+#, c-format
+msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+msgstr ""
+
+#: src/lib/bnet.c:777
+#, c-format
+msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
+msgstr ""
+
 #: src/lib/bnet.c:786 src/lib/bnet.c:811 src/lib/bnet_server.c:200
 #: src/lib/bnet_server.c:358
 #, c-format
 msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bnet.c:847
+#: src/lib/bnet.c:842
+#, c-format
+msgid ""
+"Could not connect to %s on %s:%d. ERR=%s\n"
+"Retrying ...\n"
+msgstr ""
+
+#: src/lib/bnet.c:848
 #, c-format
 msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet.c:925
+#: src/lib/bnet.c:926
 msgid "Could not malloc BSOCK data buffer\n"
 msgstr ""
 
-#: src/lib/bnet.c:932 src/lib/bnet.c:956
+#: src/lib/bnet.c:933 src/lib/bnet.c:957
 #, c-format
 msgid "sockopt error: %s\n"
 msgstr ""
 
-#: src/lib/bnet.c:938 src/lib/bnet.c:962
+#: src/lib/bnet.c:939 src/lib/bnet.c:963
 #, c-format
 msgid "Warning network buffer = %d bytes not max size.\n"
 msgstr ""
 
-#: src/lib/bnet.c:942 src/lib/bnet.c:966
+#: src/lib/bnet.c:943 src/lib/bnet.c:967
 #, c-format
 msgid "Network buffer size %d not multiple of tape block size.\n"
 msgstr ""
 
+#: src/lib/bnet.c:987 src/lib/bnet.c:1020
+#, c-format
+msgid "fcntl F_GETFL error. ERR=%s\n"
+msgstr ""
+
+#: src/lib/bnet.c:993 src/lib/bnet.c:1026 src/lib/bnet.c:1050
+#, c-format
+msgid "fcntl F_SETFL error. ERR=%s\n"
+msgstr ""
+
+#: src/lib/bnet.c:1104
+#, c-format
+msgid "Unknown sig %d"
+msgstr ""
+
 #: src/lib/bnet_pkt.c:89 src/lib/bnet_pkt.c:147
 #, c-format
 msgid "Unknown BPKT type: %d\n"
@@ -6407,7 +7638,7 @@ msgstr ""
 
 #: src/lib/bnet_server.c:124
 #, c-format
-msgid "Cannot bind port %d: ERR=%s. Retrying ...\n"
+msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
 msgstr ""
 
 #: src/lib/bnet_server.c:129
@@ -6463,6 +7694,35 @@ msgstr ""
 msgid "Socket accept error for %s. ERR=%s\n"
 msgstr ""
 
+#: src/lib/bpipe.c:282 src/lib/bpipe.c:357
+msgid "Program killed by Bacula watchdog (timeout)\n"
+msgstr ""
+
+#: src/lib/bshm.c:69
+#, c-format
+msgid "shmget failure key = %x\n"
+msgstr ""
+
+#: src/lib/bshm.c:77
+#, c-format
+msgid "Could not get %d bytes of shared memory: %s\n"
+msgstr ""
+
+#: src/lib/bshm.c:102
+#, c-format
+msgid "Could not attach shared memory: %s\n"
+msgstr ""
+
+#: src/lib/bshm.c:123
+#, c-format
+msgid "Error detaching shared memory: %s\n"
+msgstr ""
+
+#: src/lib/bshm.c:139
+#, c-format
+msgid "Could not destroy shared memory: %s\n"
+msgstr ""
+
 #: src/lib/bsys.c:176 src/lib/bsys.c:192 src/lib/bsys.c:202 src/lib/bsys.c:214
 #, c-format
 msgid "Out of memory: ERR=%s\n"
@@ -6499,6 +7759,11 @@ msgstr ""
 msgid "Mutex unlock failure. ERR=%s\n"
 msgstr ""
 
+#: src/lib/bsys.c:396
+#, c-format
+msgid "Memset for %d bytes at %s:%d\n"
+msgstr ""
+
 #: src/lib/bsys.c:425
 #, c-format
 msgid "Cannot open pid file. %s ERR=%s\n"
@@ -6516,11 +7781,16 @@ msgstr ""
 msgid "Could not open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:535 src/lib/bsys.c:536
+#: src/lib/bsys.c:536
 #, c-format
 msgid "Could not create state file. %s ERR=%s\n"
 msgstr ""
 
+#: src/lib/bsys.c:552
+#, c-format
+msgid "Write final hdr error: ERR=%s\n"
+msgstr ""
+
 #: src/lib/bsys.c:574
 #, c-format
 msgid "Could not find specified group: %s\n"
@@ -6541,6 +7811,19 @@ msgstr ""
 msgid "Could not set specified userid: %s\n"
 msgstr ""
 
+#: src/lib/btimers.c:239
+msgid "stop_btimer called with NULL btimer_id\n"
+msgstr ""
+
+#: src/lib/cram-md5.c:80 src/lib/cram-md5.c:105
+msgid "1999 Authorization failed.\n"
+msgstr ""
+
+#: src/lib/daemon.c:58
+#, c-format
+msgid "Cannot fork to become daemon: %s\n"
+msgstr ""
+
 #: src/lib/edit.c:400
 #, c-format
 msgid "Illegal character \"%c\" in name.\n"
@@ -6550,6 +7833,14 @@ msgstr ""
 msgid "Name too long.\n"
 msgstr ""
 
+#: src/lib/events.c:161
+msgid "Events not available"
+msgstr ""
+
+#: src/lib/jcr.c:277
+msgid "NULL jcr.\n"
+msgstr ""
+
 #: src/lib/jcr.c:396
 #, c-format
 msgid "JCR use_count=%d JobId=%d\n"
@@ -6574,12 +7865,12 @@ msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
 msgstr ""
 
-#: src/lib/lex.c:79 src/wx-console/console_thread.cpp:190
+#: src/lib/lex.c:79 src/wx-console/console_thread.cpp:189
 #, c-format
 msgid "Problem probably begins at line %d.\n"
 msgstr ""
 
-#: src/lib/lex.c:84
+#: src/lib/lex.c:84 src/wx-console/console_thread.cpp:194
 #, c-format
 msgid ""
 "Config error: %s\n"
@@ -6593,11 +7884,47 @@ msgstr ""
 msgid "Config error: %s\n"
 msgstr ""
 
+#: src/lib/lex.c:108
+msgid "Close of NULL file\n"
+msgstr ""
+
+#: src/lib/lex.c:181
+msgid "get_char: called after EOF\n"
+msgstr ""
+
 #: src/lib/lex.c:220
 #, c-format
 msgid "Config token too long, file: %s, line %d, begins at line %d\n"
 msgstr ""
 
+#: src/lib/lex.c:244
+msgid "none"
+msgstr ""
+
+#: src/lib/lex.c:245
+msgid "comment"
+msgstr ""
+
+#: src/lib/lex.c:246
+msgid "number"
+msgstr ""
+
+#: src/lib/lex.c:247
+msgid "ip_addr"
+msgstr ""
+
+#: src/lib/lex.c:248
+msgid "identifier"
+msgstr ""
+
+#: src/lib/lex.c:249
+msgid "string"
+msgstr ""
+
+#: src/lib/lex.c:250
+msgid "quoted_string"
+msgstr ""
+
 #: src/lib/lex.c:286
 #, c-format
 msgid "expected a positive integer number, got: %s"
@@ -6638,6 +7965,18 @@ msgstr ""
 msgid "expected a string, got %s: %s"
 msgstr ""
 
+#: src/lib/mem_pool.c:100
+#, c-format
+msgid "MemPool index %d larger than max %d\n"
+msgstr ""
+
+#: src/lib/mem_pool.c:118 src/lib/mem_pool.c:138 src/lib/mem_pool.c:173
+#: src/lib/mem_pool.c:244 src/lib/mem_pool.c:264 src/lib/mem_pool.c:302
+#: src/lib/mem_pool.c:521
+#, c-format
+msgid "Out of memory requesting %d bytes\n"
+msgstr ""
+
 #: src/lib/message.c:253 src/lib/message.c:263
 #, c-format
 msgid "Could not open console message file %s: ERR=%s\n"
@@ -6648,6 +7987,24 @@ msgstr ""
 msgid "Could not get con mutex: ERR=%s\n"
 msgstr ""
 
+#: src/lib/message.c:372
+#, c-format
+msgid "open mail pipe %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/lib/message.c:378
+msgid "Bacula Message"
+msgstr ""
+
+#: src/lib/message.c:431
+msgid "open mail pipe failed.\n"
+msgstr ""
+
+#: src/lib/message.c:443
+#, c-format
+msgid "close error: ERR=%s\n"
+msgstr ""
+
 #: src/lib/message.c:454
 #, c-format
 msgid "Mail prog: %s"
@@ -6669,6 +8026,81 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
+#: src/lib/message.c:667 src/lib/message.c:689 src/lib/message.c:705
+#, c-format
+msgid "fopen %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/lib/message.c:933
+#, c-format
+msgid "%s: ABORTING due to ERROR in %s:%d\n"
+msgstr ""
+
+#: src/lib/message.c:937
+#, c-format
+msgid "%s: ERROR TERMINATION at %s:%d\n"
+msgstr ""
+
+#: src/lib/message.c:942
+#, c-format
+msgid "%s: Fatal Error because: "
+msgstr ""
+
+#: src/lib/message.c:944
+#, c-format
+msgid "%s: Fatal Error at %s:%d because:\n"
+msgstr ""
+
+#: src/lib/message.c:948
+#, c-format
+msgid "%s: ERROR: "
+msgstr ""
+
+#: src/lib/message.c:950
+#, c-format
+msgid "%s: ERROR in %s:%d "
+msgstr ""
+
+#: src/lib/message.c:953
+#, c-format
+msgid "%s: Warning: "
+msgstr ""
+
+#: src/lib/message.c:956
+#, c-format
+msgid "%s: Security violation: "
+msgstr ""
+
+#: src/lib/message.c:1032
+#, c-format
+msgid "%s ABORTING due to ERROR\n"
+msgstr ""
+
+#: src/lib/message.c:1035
+#, c-format
+msgid "%s ERROR TERMINATION\n"
+msgstr ""
+
+#: src/lib/message.c:1038
+#, c-format
+msgid "%s: %s Fatal error: "
+msgstr ""
+
+#: src/lib/message.c:1044
+#, c-format
+msgid "%s: %s Error: "
+msgstr ""
+
+#: src/lib/message.c:1050
+#, c-format
+msgid "%s: %s Warning: "
+msgstr ""
+
+#: src/lib/message.c:1053
+#, c-format
+msgid "%s: %s Security violation: "
+msgstr ""
+
 #: src/lib/parse_conf.c:160
 msgid "***UNKNOWN***"
 msgstr ""
@@ -6678,11 +8110,6 @@ msgstr ""
 msgid "Unable to initialize resource lock. ERR=%s\n"
 msgstr ""
 
-#: src/lib/parse_conf.c:211
-#, c-format
-msgid "Too many items in %s resource\n"
-msgstr ""
-
 #: src/lib/parse_conf.c:262 src/lib/parse_conf.c:281
 #, c-format
 msgid "expected an =, got: %s"
@@ -6743,6 +8170,16 @@ msgstr ""
 msgid "expected a time period, got: %s"
 msgstr ""
 
+#: src/lib/parse_conf.c:699
+#, c-format
+msgid "Expect a %s or %s, got: %s"
+msgstr ""
+
+#: src/lib/parse_conf.c:723
+#, c-format
+msgid "Expected a Tape Label keyword, got: %s"
+msgstr ""
+
 #: src/lib/parse_conf.c:772
 #, c-format
 msgid "Cannot open config file \"%s\": %s\n"
@@ -6763,11 +8200,6 @@ msgstr ""
 msgid "not in resource definition: %s"
 msgstr ""
 
-#: src/lib/parse_conf.c:819
-#, c-format
-msgid "expected an equals, got: %s"
-msgstr ""
-
 #: src/lib/parse_conf.c:833
 #, c-format
 msgid ""
@@ -6861,1298 +8293,2308 @@ msgstr ""
 msgid "No previous regular expression"
 msgstr ""
 
-#: src/lib/smartall.c:137 src/lib/smartall.c:228 src/lib/smartall.c:243
-msgid "Out of memory\n"
-msgstr ""
-
-#: src/lib/util.c:184
-msgid "Created"
+#: src/lib/rwlock.c:289
+msgid "rwl_writeunlock called too many times.\n"
 msgstr ""
 
-#: src/lib/util.c:187
-msgid "Running"
+#: src/lib/rwlock.c:293
+msgid "rwl_writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/util.c:190
-msgid "Blocked"
+#: src/lib/rwlock.c:358 src/lib/semlock.c:248
+#, c-format
+msgid "Write lock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:193 src/lib/util.c:260
-msgid "OK"
+#: src/lib/rwlock.c:365 src/lib/semlock.c:255
+#, c-format
+msgid "Write unlock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:197 src/lib/util.c:264
-msgid "Error"
+#: src/lib/rwlock.c:375 src/lib/semlock.c:265
+#, c-format
+msgid "Read lock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:200
-msgid "Non-fatal error"
+#: src/lib/rwlock.c:382 src/lib/semlock.c:272
+#, c-format
+msgid "Read unlock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:203 src/lib/util.c:270
-msgid "Canceled"
+#: src/lib/rwlock.c:391 src/lib/semlock.c:281
+#, c-format
+msgid "Thread %d found unchanged elements %d times\n"
 msgstr ""
 
-#: src/lib/util.c:206
-msgid "Verify differences"
+#: src/lib/rwlock.c:423 src/lib/semlock.c:313
+#, c-format
+msgid "Init rwlock failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:209
-msgid "Waiting on FD"
+#: src/lib/rwlock.c:438 src/lib/semlock.c:328
+#, c-format
+msgid "Create thread failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:212
-msgid "Wait on SD"
+#: src/lib/rwlock.c:449 src/lib/semlock.c:339
+#, c-format
+msgid "Join thread failed. ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:215
-msgid "Wait for new Volume"
+#: src/lib/rwlock.c:452 src/lib/semlock.c:342
+#, c-format
+msgid "%02d: interval %d, writes %d, reads %d\n"
 msgstr ""
 
-#: src/lib/util.c:218
-msgid "Waiting for mount"
+#: src/lib/rwlock.c:462 src/lib/semlock.c:352
+#, c-format
+msgid "data %02d: value %d, %d writes\n"
 msgstr ""
 
-#: src/lib/util.c:221
-msgid "Waiting for Storage resource"
+#: src/lib/rwlock.c:467 src/lib/semlock.c:357
+#, c-format
+msgid "Total: %d thread writes, %d data writes\n"
 msgstr ""
 
-#: src/lib/util.c:224
-msgid "Waiting for Job resource"
+#: src/lib/rwlock.c:539 src/lib/semlock.c:429
+msgid "Try write lock"
 msgstr ""
 
-#: src/lib/util.c:227
-msgid "Waiting for Client resource"
+#: src/lib/rwlock.c:545 src/lib/semlock.c:435
+msgid "Try read lock"
 msgstr ""
 
-#: src/lib/util.c:230
-msgid "Waiting on Max Jobs"
+#: src/lib/rwlock.c:600 src/lib/semlock.c:490
+msgid "Create thread"
 msgstr ""
 
-#: src/lib/util.c:233
-msgid "Waiting for Start Time"
+#: src/lib/rwlock.c:610 src/lib/semlock.c:500
+msgid "Join thread"
 msgstr ""
 
-#: src/lib/util.c:236
-msgid "Waiting on Priority"
+#: src/lib/rwlock.c:612 src/lib/semlock.c:502
+#, c-format
+msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
 msgstr ""
 
-#: src/lib/util.c:243
+#: src/lib/rwlock.c:624 src/lib/semlock.c:514
 #, c-format
-msgid "Unknown Job termination status=%d"
+msgid "data %02d: value %d, %d updates\n"
 msgstr ""
 
-#: src/lib/util.c:267
-msgid "Fatal Error"
+#: src/lib/semlock.c:185
+msgid "sem_unlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/util.c:273
-msgid "Differences"
+#: src/lib/signal.c:61
+msgid "Invalid signal number"
 msgstr ""
 
-#: src/lib/util.c:276
-msgid "Unknown term code"
+#: src/lib/signal.c:87
+#, c-format
+msgid "Bacula interrupted by signal %d: %s\n"
 msgstr ""
 
-#: src/lib/util.c:304
-msgid "Unknown Type"
+#: src/lib/signal.c:100
+#, c-format
+msgid "Kaboom! %s, %s got signal %d. Attempting traceback.\n"
 msgstr ""
 
-#: src/lib/util.c:336
-msgid "Verify Init Catalog"
+#: src/lib/signal.c:102
+#, c-format
+msgid "Kaboom! exepath=%s\n"
 msgstr ""
 
-#: src/lib/util.c:345
-msgid "Verify Data"
+#: src/lib/signal.c:136
+#, c-format
+msgid "Fork error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:647
-msgid "Working directory not defined. Cannot continue.\n"
+#: src/lib/signal.c:143
+#, c-format
+msgid "Calling: %s %s %s\n"
 msgstr ""
 
-#: src/lib/util.c:650
+#: src/lib/signal.c:145
 #, c-format
-msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
+msgid "execv: %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/util.c:654
+#: src/lib/signal.c:160
 #, c-format
-msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
+msgid "Traceback complete, attempting cleanup ...\n"
 msgstr ""
 
-#: src/lib/watchdog.c:74
+#: src/lib/signal.c:168
 #, c-format
-msgid "Unable to initialize watchdog lock. ERR=%s\n"
+msgid "It looks like the traceback worked ...\n"
 msgstr ""
 
-#: src/lib/tls.c:108
+#: src/lib/signal.c:197
 #, c-format
-msgid ""
-"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
+msgid "BA_NSIG too small (%d) should be (%d)\n"
 msgstr ""
 
-#: src/lib/tls.c:155
-msgid "Error initializing SSL context"
+#: src/lib/signal.c:203
+msgid "UNKNOWN SIGNAL"
 msgstr ""
 
-#: src/lib/tls.c:176
-msgid "Error loading certificate verification stores"
+#: src/lib/signal.c:204
+msgid "Hangup"
 msgstr ""
 
-#: src/lib/tls.c:181
-msgid ""
-"Either a certificate file or a directory must be specified as a verification "
-"store\n"
+#: src/lib/signal.c:205
+msgid "Interrupt"
 msgstr ""
 
-#: src/lib/tls.c:192
-msgid "Error loading certificate file"
+#: src/lib/signal.c:206
+msgid "Quit"
 msgstr ""
 
-#: src/lib/tls.c:200
-msgid "Error loading private key"
+#: src/lib/signal.c:207
+msgid "Illegal instruction"
 msgstr ""
 
-#: src/lib/tls.c:208
-msgid "Unable to open DH parameters file"
+#: src/lib/signal.c:208
+msgid "Trace/Breakpoint trap"
 msgstr ""
 
-#: src/lib/tls.c:214
-msgid "Unable to load DH parameters from specified file"
+#: src/lib/signal.c:209
+msgid "Abort"
 msgstr ""
 
-#: src/lib/tls.c:218
-msgid "Failed to set TLS Diffie-Hellman parameters"
+#: src/lib/signal.c:211
+msgid "EMT instruction (Emulation Trap)"
 msgstr ""
 
-#: src/lib/tls.c:227
-msgid "Error setting cipher list, no valid ciphers available\n"
+#: src/lib/signal.c:214
+msgid "IOT trap"
 msgstr ""
 
-#: src/lib/tls.c:275
-msgid "Peer failed to present a TLS certificate\n"
+#: src/lib/signal.c:216
+msgid "BUS error"
 msgstr ""
 
-#: src/lib/tls.c:317
-#, c-format
-msgid "Peer %s failed to present a TLS certificate\n"
+#: src/lib/signal.c:217
+msgid "Floating-point exception"
 msgstr ""
 
-#: src/lib/tls.c:587 src/lib/tls.c:591
-msgid "TLS shutdown failure."
+#: src/lib/signal.c:218
+msgid "Kill, unblockable"
 msgstr ""
 
-#: src/lib/tls.c:642 src/lib/tls.c:658
-msgid "TLS read/write failure."
+#: src/lib/signal.c:219
+msgid "User-defined signal 1"
 msgstr ""
 
-#: src/lib/tls.c:880
-msgid "Failed to seed OpenSSL PRNG\n"
+#: src/lib/signal.c:220
+msgid "Segmentation violation"
 msgstr ""
 
-#: src/lib/tls.c:906
-msgid "Failed to save OpenSSL PRNG\n"
+#: src/lib/signal.c:221
+msgid "User-defined signal 2"
 msgstr ""
 
-#: src/stored/acquire.c:98
-#, c-format
-msgid "Hey! num_writers=%d!!!!\n"
+#: src/lib/signal.c:222
+msgid "Broken pipe"
 msgstr ""
 
-#: src/stored/acquire.c:146
-#, c-format
-msgid "Num_writers=%d not zero. Job %d canceled.\n"
+#: src/lib/signal.c:223
+msgid "Alarm clock"
 msgstr ""
 
-#: src/stored/acquire.c:154
-#, c-format
-msgid "No volumes specified. Job %d canceled.\n"
+#: src/lib/signal.c:224
+msgid "Termination"
 msgstr ""
 
-#: src/stored/acquire.c:182 src/stored/mount.c:72
-#, c-format
-msgid "Job %d canceled.\n"
+#: src/lib/signal.c:226
+msgid "Stack fault"
 msgstr ""
 
-#: src/stored/acquire.c:193
-#, c-format
-msgid "Open device %s Volume \"%s\" failed (EIO): ERR=%s\n"
+#: src/lib/signal.c:228
+msgid "Child status has changed"
 msgstr ""
 
-#: src/stored/acquire.c:208
-#, c-format
-msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
+#: src/lib/signal.c:229
+msgid "Continue"
 msgstr ""
 
-#: src/stored/acquire.c:273 src/stored/mount.c:66
-#, c-format
-msgid "Too many errors trying to mount device %s.\n"
+#: src/lib/signal.c:230
+msgid "Stop, unblockable"
 msgstr ""
 
-#: src/stored/acquire.c:282
-#, c-format
-msgid "Ready to read from volume \"%s\" on device %s.\n"
+#: src/lib/signal.c:231
+msgid "Keyboard stop"
 msgstr ""
 
-#: src/stored/acquire.c:328 src/stored/reserve.c:617
-#, c-format
-msgid "Device %s is busy reading.\n"
+#: src/lib/signal.c:232
+msgid "Background read from tty"
 msgstr ""
 
-#: src/stored/acquire.c:357
-#, c-format
-msgid "Wanted Volume \"%s\", but device %s is busy writing on \"%s\" .\n"
+#: src/lib/signal.c:233
+msgid "Background write to tty"
 msgstr ""
 
-#: src/stored/acquire.c:374
-#, c-format
-msgid ""
-"Cannot recycle volume \"%s\" on device %s because it is in use by another "
-"job.\n"
+#: src/lib/signal.c:234
+msgid "Urgent condition on socket"
 msgstr ""
 
-#: src/stored/acquire.c:396
-#, c-format
-msgid "Could not ready device %s for append.\n"
+#: src/lib/signal.c:235
+msgid "CPU limit exceeded"
 msgstr ""
 
-#: src/stored/acquire.c:459 src/stored/block.c:353 src/stored/block.c:676
-#: src/stored/block.c:744
-#, c-format
-msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
+#: src/lib/signal.c:236
+msgid "File size limit exceeded"
 msgstr ""
 
-#: src/stored/acquire.c:501
-#, c-format
-msgid "Alert: %s"
+#: src/lib/signal.c:237
+msgid "Virtual alarm clock"
 msgstr ""
 
-#: src/stored/acquire.c:509
-#, c-format
-msgid "3997 Bad alert command: %s: ERR=%s.\n"
+#: src/lib/signal.c:238
+msgid "Profiling alarm clock"
 msgstr ""
 
-#: src/stored/append.c:60
-msgid "Unable to set network buffer size.\n"
+#: src/lib/signal.c:239
+msgid "Window size change"
 msgstr ""
 
-#: src/stored/append.c:88 src/stored/btape.c:1810
-#, c-format
-msgid "Write session label failed. ERR=%s\n"
+#: src/lib/signal.c:240
+msgid "I/O now possible"
 msgstr ""
 
-#: src/stored/append.c:100
-#, c-format
-msgid "Network send error to FD. ERR=%s\n"
+#: src/lib/signal.c:242
+msgid "Power failure restart"
 msgstr ""
 
-#: src/stored/append.c:137
-#, c-format
-msgid "Error reading data header from FD. ERR=%s\n"
+#: src/lib/signal.c:245
+msgid "No runnable lwp"
 msgstr ""
 
-#: src/stored/append.c:159
-#, c-format
-msgid "Malformed data header from FD: %s\n"
+#: src/lib/signal.c:248
+msgid "SIGLWP special signal used by thread library"
 msgstr ""
 
-#: src/stored/append.c:169
-msgid "File index from FD not positive or sequential\n"
+#: src/lib/signal.c:251
+msgid "Checkpoint Freeze"
 msgstr ""
 
-#: src/stored/append.c:199 src/stored/append.c:269 src/stored/spool.c:242
-#, c-format
-msgid "Fatal append error on device %s: ERR=%s\n"
+#: src/lib/signal.c:254
+msgid "Checkpoint Thaw"
 msgstr ""
 
-#: src/stored/append.c:224
-#, c-format
-msgid "Error updating file attributes. ERR=%s\n"
+#: src/lib/signal.c:257
+msgid "Thread Cancellation"
 msgstr ""
 
-#: src/stored/append.c:237
-#, c-format
-msgid "Network error on data channel. ERR=%s\n"
+#: src/lib/signal.c:260
+msgid "Resource Lost (e.g. record-lock lost)"
 msgstr ""
 
-#: src/stored/append.c:258 src/stored/btape.c:1926
-#, c-format
-msgid "Error writting end session label. ERR=%s\n"
+#: src/lib/smartall.c:137 src/lib/smartall.c:228 src/lib/smartall.c:243
+msgid "Out of memory\n"
 msgstr ""
 
-#: src/stored/append.c:271
-msgid "Set ok=FALSE after write_block_to_device.\n"
+#: src/lib/smartall.c:165
+#, c-format
+msgid "Attempt to free NULL called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:161
-msgid "Network error on bnet_recv in req_vol_info.\n"
+#: src/lib/smartall.c:181
+#, c-format
+msgid "qp->qnext->qprev != qp called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:178
+#: src/lib/smartall.c:185
 #, c-format
-msgid "Error getting Volume info: %s\n"
+msgid "qp->qprev->qnext != qp called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:284
-msgid "NULL Volume name. This shouldn't happen!!!\n"
+#: src/lib/smartall.c:194
+#, c-format
+msgid "Buffer overrun called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:289
-msgid "Attempt to update_volume_info in read mode!!!\n"
+#: src/lib/smartall.c:265
+#, c-format
+msgid "sm_realloc size: %d\n"
 msgstr ""
 
-#: src/stored/askdir.c:349
+#: src/lib/smartall.c:306
 #, c-format
-msgid "Error creating JobMedia record: ERR=%s\n"
+msgid "sm_realloc %d at %x from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:356
+#: src/lib/smartall.c:368
 #, c-format
-msgid "Error creating JobMedia record: %s\n"
+msgid ""
+"\n"
+"Orphaned buffers exist.  Dump terminated following\n"
+"  discovery of bad links in chain of orphaned buffers.\n"
+"  Buffer address with bad links: %lx\n"
 msgstr ""
 
-#: src/stored/askdir.c:424
+#: src/lib/smartall.c:379
 #, c-format
-msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
+msgid "Orphaned buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:452
+#: src/lib/smartall.c:415
 #, c-format
-msgid ""
-"Please mount Volume \"%s\" on Storage Device %s for Job %s\n"
-"Use \"mount\" command to release Job.\n"
+msgid "Damaged buffer found. Called from %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:462
+#: src/lib/smartall.c:445
 #, c-format
 msgid ""
-"Job %s waiting. Cannot find any appendable volumes.\n"
-"Please use the \"label\"  command to create a new Volume for:\n"
-"    Storage:      %s\n"
-"    Media type:   %s\n"
-"    Pool:         %s\n"
+"\n"
+"Damaged buffers found at %s:%d\n"
 msgstr ""
 
-#: src/stored/askdir.c:486 src/stored/askdir.c:590
+#: src/lib/smartall.c:448
 #, c-format
-msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
+msgid "  discovery of bad prev link.\n"
 msgstr ""
 
-#: src/stored/askdir.c:496 src/stored/askdir.c:503
+#: src/lib/smartall.c:451
 #, c-format
-msgid "pthread error in mount_next_volume stat=%d ERR=%s\n"
+msgid "  discovery of bad next link.\n"
 msgstr ""
 
-#: src/stored/askdir.c:514
+#: src/lib/smartall.c:454
 #, c-format
-msgid ""
-"Someone woke me up, but I cannot find any appendable\n"
-"volumes for Job=%s.\n"
+msgid "  discovery of data overrun.\n"
 msgstr ""
 
-#: src/stored/askdir.c:559
-msgid "Cannot request another volume: no volume name given.\n"
+#: src/lib/smartall.c:457
+#, c-format
+msgid "  Buffer address: %lx\n"
 msgstr ""
 
-#: src/stored/askdir.c:565
+#: src/lib/smartall.c:464
 #, c-format
-msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
+msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:571
-msgid "Please mount"
+#: src/lib/util.c:187
+msgid "Running"
 msgstr ""
 
-#: src/stored/askdir.c:572
-#, c-format
-msgid "%s Volume \"%s\" on Storage Device %s for Job %s\n"
+#: src/lib/util.c:190
+msgid "Blocked"
 msgstr ""
 
-#: src/stored/askdir.c:600
-#, c-format
-msgid "pthread error in mount_volume stat=%d ERR=%s\n"
+#: src/lib/util.c:200
+msgid "Non-fatal error"
 msgstr ""
 
-#: src/stored/askdir.c:607
-#, c-format
-msgid "pthread error in mount_next_volume stat=%d: ERR=%s\n"
+#: src/lib/util.c:203 src/lib/util.c:270
+msgid "Canceled"
 msgstr ""
 
-#: src/stored/authenticate.c:52 src/stored/authenticate.c:53
-#, c-format
-msgid "I only authenticate Directors, not %d\n"
+#: src/lib/util.c:206
+msgid "Verify differences"
 msgstr ""
 
-#: src/stored/authenticate.c:120
-msgid ""
-"Incorrect password given by Director.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
+#: src/lib/util.c:209
+msgid "Waiting on FD"
 msgstr ""
 
-#: src/stored/authenticate.c:177 src/stored/authenticate.c:178
-#, c-format
-msgid "Unable to authenticate Director at %s.\n"
+#: src/lib/util.c:212
+msgid "Wait on SD"
 msgstr ""
 
-#: src/stored/authenticate.c:223 src/stored/authenticate.c:259
-#, c-format
-msgid ""
-"Incorrect authorization key from File daemon at %s rejected.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
+#: src/lib/util.c:215
+msgid "Wait for new Volume"
 msgstr ""
 
-#: src/stored/autochanger.c:87
-#, c-format
-msgid "3303 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+#: src/lib/util.c:218
+msgid "Waiting for mount"
 msgstr ""
 
-#: src/stored/autochanger.c:96
-#, c-format
-msgid "3992 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+#: src/lib/util.c:221
+msgid "Waiting for Storage resource"
 msgstr ""
 
-#: src/stored/autochanger.c:109
-#, c-format
-msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
+#: src/lib/util.c:224
+msgid "Waiting for Job resource"
 msgstr ""
 
-#: src/stored/autochanger.c:116
-#, c-format
-msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
+#: src/lib/util.c:227
+msgid "Waiting for Client resource"
 msgstr ""
 
-#: src/stored/autochanger.c:122
-#, c-format
-msgid "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
+#: src/lib/util.c:230
+msgid "Waiting on Max Jobs"
 msgstr ""
 
-#: src/stored/autochanger.c:167
-#, c-format
-msgid "3301 Issuing autochanger \"loaded drive %d\" command.\n"
+#: src/lib/util.c:233
+msgid "Waiting for Start Time"
 msgstr ""
 
-#: src/stored/autochanger.c:176
-#, c-format
-msgid "3302 Autochanger \"loaded drive %d\", result is Slot %d.\n"
+#: src/lib/util.c:236
+msgid "Waiting on Priority"
 msgstr ""
 
-#: src/stored/autochanger.c:180
+#: src/lib/util.c:243
 #, c-format
-msgid "3302 Autochanger \"loaded drive %d\", result: nothing loaded.\n"
+msgid "Unknown Job termination status=%d"
 msgstr ""
 
-#: src/stored/autochanger.c:187
-#, c-format
-msgid "3991 Bad autochanger \"loaded drive %d\" command: ERR=%s.\n"
+#: src/lib/util.c:267
+msgid "Fatal Error"
 msgstr ""
 
-#: src/stored/autochanger.c:235
-#, c-format
-msgid "3993 Device %s not an autochanger device.\n"
+#: src/lib/util.c:273
+msgid "Differences"
 msgstr ""
 
-#: src/stored/autochanger.c:253
-#, c-format
-msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+#: src/lib/util.c:276
+msgid "Unknown term code"
 msgstr ""
 
-#: src/stored/autochanger.c:265
-#, c-format
-msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+#: src/lib/util.c:304
+msgid "Unknown Type"
 msgstr ""
 
-#: src/stored/autochanger.c:277
-#, c-format
-msgid "3306 Issuing autochanger \"%s\" command.\n"
+#: src/lib/util.c:336
+msgid "Verify Init Catalog"
 msgstr ""
 
-#: src/stored/autochanger.c:282
-msgid "3996 Open bpipe failed.\n"
+#: src/lib/util.c:345
+msgid "Verify Data"
 msgstr ""
 
-#: src/stored/bcopy.c:58
-#, c-format
-msgid ""
-"Copyright (C) 2002-2005 Kern Sibbald.\n"
-"\n"
-"Version: "
+#: src/lib/util.c:647
+msgid "Working directory not defined. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:59
+#: src/lib/util.c:650
 #, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to nn\n"
-"       -i                specify input Volume names (separated by |)\n"
-"       -o                specify output Volume names (separated by |)\n"
-"       -p                proceed inspite of errors\n"
-"       -v                verbose\n"
-"       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bcopy.c:133 src/stored/bscan.c:217
-msgid "Wrong number of arguments: \n"
+msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:168 src/stored/btape.c:330 src/stored/device.c:273
+#: src/lib/util.c:654
 #, c-format
-msgid "dev open failed: %s\n"
+msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:181
-msgid "Write of last block failed.\n"
+#: src/lib/var.c:2659
+msgid "everything ok"
 msgstr ""
 
-#: src/stored/bcopy.c:184
-#, c-format
-msgid "%u Jobs copied. %u records copied.\n"
+#: src/lib/var.c:2660
+msgid "incomplete named character"
 msgstr ""
 
-#: src/stored/bcopy.c:201 src/stored/bscan.c:380
-#, c-format
-msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
+#: src/lib/var.c:2661
+msgid "incomplete hexadecimal value"
 msgstr ""
 
-#: src/stored/bcopy.c:231 src/stored/bcopy.c:238 src/stored/bcopy.c:261
-#: src/stored/btape.c:2286
-#, c-format
-msgid "Cannot fixup device error. %s\n"
+#: src/lib/var.c:2662
+msgid "invalid hexadecimal value"
 msgstr ""
 
-#: src/stored/bextract.c:274
-msgid "Logic error output file should be open but is not.\n"
+#: src/lib/var.c:2663
+msgid "octal value too large"
 msgstr ""
 
-#: src/stored/bextract.c:281 src/stored/bls.c:361 src/stored/bscan.c:636
-msgid "Cannot continue.\n"
+#: src/lib/var.c:2664
+msgid "invalid octal value"
 msgstr ""
 
-#: src/stored/bextract.c:343
-#, c-format
-msgid "Seek error on %s: %s\n"
+#: src/lib/var.c:2665
+msgid "incomplete octal value"
 msgstr ""
 
-#: src/stored/bextract.c:396
-#, c-format
-msgid "Uncompression error. ERR=%d\n"
+#: src/lib/var.c:2666
+msgid "incomplete grouped hexadecimal value"
 msgstr ""
 
-#: src/stored/block.c:147
-#, c-format
-msgid "%d block read errors not printed.\n"
+#: src/lib/var.c:2667
+msgid "incorrect character class specification"
 msgstr ""
 
-#: src/stored/block.c:235 src/stored/block.c:251 src/stored/block.c:261
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
-"discarded.\n"
+#: src/lib/var.c:2668
+msgid "invalid expansion configuration"
 msgstr ""
 
-#: src/stored/block.c:275
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Block length %u is insane (too large), probably "
-"due to a bad archive.\n"
+#: src/lib/var.c:2669
+msgid "out of memory"
 msgstr ""
 
-#: src/stored/block.c:301
-#, c-format
-msgid ""
-"Volume data error at %u:%u!\n"
-"Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
+#: src/lib/var.c:2670
+msgid "incomplete variable specification"
 msgstr ""
 
-#: src/stored/block.c:409
-msgid "Cannot write block. Device at EOM.\n"
+#: src/lib/var.c:2671
+msgid "undefined variable"
 msgstr ""
 
-#: src/stored/block.c:414
-msgid "Attempt to write on read-only Volume.\n"
+#: src/lib/var.c:2672
+msgid "input is neither text nor variable"
 msgstr ""
 
-#: src/stored/block.c:466
-#, c-format
-msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
+#: src/lib/var.c:2673
+msgid "unknown command character in variable"
 msgstr ""
 
-#: src/stored/block.c:481
-#, c-format
-msgid "Unable to write EOF. ERR=%s\n"
+#: src/lib/var.c:2674
+msgid "malformatted search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:536
-#, c-format
-msgid "Write error at %u:%u on device %s. ERR=%s.\n"
+#: src/lib/var.c:2675
+msgid "unknown flag in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:543
-#, c-format
-msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
+#: src/lib/var.c:2676
+msgid "invalid regex in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:618 src/stored/block.c:624
-#, c-format
-msgid "Backspace file at EOT failed. ERR=%s\n"
+#: src/lib/var.c:2677
+msgid "missing parameter in command"
 msgstr ""
 
-#: src/stored/block.c:631
-#, c-format
-msgid "Backspace record at EOT failed. ERR=%s\n"
+#: src/lib/var.c:2678
+msgid "empty search string in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:648
-#, c-format
-msgid "Re-read last block at EOT failed. ERR=%s"
+#: src/lib/var.c:2679
+msgid "start offset missing in cut operation"
 msgstr ""
 
-#: src/stored/block.c:652
-msgid "Re-read of last block succeeded.\n"
+#: src/lib/var.c:2680
+msgid "offsets in cut operation delimited by unknown character"
 msgstr ""
 
-#: src/stored/block.c:655
-#, c-format
-msgid "Re-read of last block failed. Last block=%u Current block=%u.\n"
+#: src/lib/var.c:2681
+msgid "range out of bounds in cut operation"
 msgstr ""
 
-#: src/stored/block.c:790 src/stored/dvd.c:621
-#, c-format
-msgid ""
-"Error while writing, current part number is less than the total number of "
-"parts (%d/%d, device=%s)\n"
+#: src/lib/var.c:2682
+msgid "offset out of bounds in cut operation"
 msgstr ""
 
-#: src/stored/block.c:798 src/stored/block.c:908
-#, c-format
-msgid "Unable to open device next part %s: ERR=%s\n"
+#: src/lib/var.c:2683
+msgid "logic error in cut operation"
 msgstr ""
 
-#: src/stored/block.c:816
-#, c-format
-msgid ""
-"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
-"free_space_errno=%d, errmsg=%s).\n"
+#: src/lib/var.c:2684
+msgid "malformatted transpose operation"
 msgstr ""
 
-#: src/stored/block.c:829
-#, c-format
-msgid ""
-"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
-"free_space_errno=%d).\n"
+#: src/lib/var.c:2685
+msgid "source and target class mismatch in transpose operation"
 msgstr ""
 
-#: src/stored/block.c:883
-#, c-format
-msgid "Block buffer size looping problem on device %s\n"
+#: src/lib/var.c:2686
+msgid "empty character class in transpose operation"
 msgstr ""
 
-#: src/stored/block.c:934
-#, c-format
-msgid "Read error at file:blk %u:%u on device %s. ERR=%s.\n"
+#: src/lib/var.c:2687
+msgid "incorrect character class in transpose operation"
 msgstr ""
 
-#: src/stored/block.c:947
-#, c-format
-msgid "Read zero bytes at %u:%u on device %s.\n"
+#: src/lib/var.c:2688
+msgid "malformatted padding operation"
 msgstr ""
 
-#: src/stored/block.c:960
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Very short block of %d bytes on device %s "
-"discarded.\n"
+#: src/lib/var.c:2689
+msgid "width parameter missing in padding operation"
 msgstr ""
 
-#: src/stored/block.c:985
-#, c-format
-msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
+#: src/lib/var.c:2690
+msgid "fill string missing in padding operation"
 msgstr ""
 
-#: src/stored/block.c:1004
-#, c-format
-msgid "Setting block buffer size to %u bytes.\n"
+#: src/lib/var.c:2691
+msgid "unknown quoted pair in search and replace operation"
 msgstr ""
 
-#: src/stored/block.c:1019
-#, c-format
-msgid ""
-"Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
+#: src/lib/var.c:2692
+msgid "sub-matching reference out of range"
 msgstr ""
 
-#: src/stored/bls.c:125
-#, c-format
-msgid "Could not open exclude file: %s, ERR=%s\n"
+#: src/lib/var.c:2693
+msgid "invalid argument"
 msgstr ""
 
-#: src/stored/bls.c:139
-#, c-format
-msgid "Could not open include file: %s, ERR=%s\n"
+#: src/lib/var.c:2694
+msgid "incomplete quoted pair"
 msgstr ""
 
-#: src/stored/bls.c:186
-msgid "No archive name specified\n"
+#: src/lib/var.c:2695
+msgid "lookup function does not support variable arrays"
 msgstr ""
 
-#: src/stored/bls.c:264
-#, c-format
-msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
+#: src/lib/var.c:2696
+msgid "index of array variable contains an invalid character"
 msgstr ""
 
-#: src/stored/bls.c:275
-#, c-format
-msgid "Mounted Volume \"%s\".\n"
+#: src/lib/var.c:2697
+msgid "index of array variable is incomplete"
 msgstr ""
 
-#: src/stored/bls.c:277
-#, c-format
-msgid "Got EOF at file %u on device %s, Volume \"%s\"\n"
+#: src/lib/var.c:2698
+msgid "bracket expression in array variable's index not closed"
 msgstr ""
 
-#: src/stored/bscan.c:109
-#, c-format
-msgid ""
-"Copyright (C) 2001-2005 Kern Sibbald.\n"
-"\n"
-"Version: "
+#: src/lib/var.c:2699
+msgid "division by zero error in index specification"
 msgstr ""
 
-#: src/stored/bscan.c:110
-#, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: bscan [ options ] <bacula-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to nn\n"
-"       -m                update media info in database\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -p                proceed inspite of I/O errors\n"
-"       -r                list records\n"
-"       -s                synchronize or store in database\n"
-"       -S                show scan progress periodically\n"
-"       -v                verbose\n"
-"       -V <Volumes>      specify Volume names (separated by |)\n"
-"       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n"
-"\n"
+#: src/lib/var.c:2700
+msgid "unterminated loop construct"
 msgstr ""
 
-#: src/stored/bscan.c:230 src/stored/stored.c:263
-#, c-format
-msgid "No Storage resource defined in %s. Cannot continue.\n"
+#: src/lib/var.c:2701
+msgid "invalid character in loop limits"
 msgstr ""
 
-#: src/stored/bscan.c:238 src/stored/stored.c:294
-#, c-format
-msgid "No Working Directory defined in %s. Cannot continue.\n"
+#: src/lib/var.c:2702
+msgid "malformed operation argument list"
 msgstr ""
 
-#: src/stored/bscan.c:246
-#, c-format
-msgid "Working Directory: %s not found. Cannot continue.\n"
+#: src/lib/var.c:2703
+msgid "undefined operation"
 msgstr ""
 
-#: src/stored/bscan.c:250
-#, c-format
-msgid "Working Directory: %s is not a directory. Cannot continue.\n"
+#: src/lib/var.c:2704
+msgid "formatting failure"
 msgstr ""
 
-#: src/stored/bscan.c:264 src/stored/bscan.c:331
-#, c-format
-msgid "First Volume Size = %sn"
+#: src/lib/var.c:2713
+msgid "unknown error"
 msgstr ""
 
-#: src/stored/bscan.c:270
-msgid "Could not init Bacula database\n"
+#: src/lib/watchdog.c:74
+#, c-format
+msgid "Unable to initialize watchdog lock. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:277
-#, c-format
-msgid "Using Database: %s, User: %s\n"
+#: src/lib/watchdog.c:170
+msgid "BUG! register_watchdog called before start_watchdog\n"
 msgstr ""
 
-#: src/stored/bscan.c:306
+#: src/lib/watchdog.c:173
 #, c-format
-msgid "Create JobMedia for Job %s\n"
+msgid "BUG! Watchdog %p has NULL callback\n"
 msgstr ""
 
-#: src/stored/bscan.c:316
+#: src/lib/watchdog.c:176
 #, c-format
-msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
+msgid "BUG! Watchdog %p has zero interval\n"
 msgstr ""
 
-#: src/stored/bscan.c:396
-msgid "Volume is prelabeled. This tape cannot be scanned.\n"
+#: src/lib/watchdog.c:196
+msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
 msgstr ""
 
-#: src/stored/bscan.c:408
+#: src/lib/watchdog.c:313
 #, c-format
-msgid "Pool record for %s found in DB.\n"
+msgid "rwl_writelock failure. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:412
+#: src/lib/watchdog.c:327
 #, c-format
-msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
+msgid "rwl_writeunlock failure. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:418
-#, c-format
-msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
+#: src/lib/pythonlib.c:108
+msgid "Could not initialize Python\n"
 msgstr ""
 
-#: src/stored/bscan.c:422
+#: src/lib/pythonlib.c:113
 #, c-format
-msgid "Pool type \"%s\" is OK.\n"
+msgid "Could not Run Python string %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:432
-#, c-format
-msgid "Media record for %s found in DB.\n"
+#: src/lib/pythonlib.c:125
+msgid "Could not initialize Python Job type.\n"
 msgstr ""
 
-#: src/stored/bscan.c:439
+#: src/lib/pythonlib.c:130
 #, c-format
-msgid "VOL_LABEL: Media record not found for Volume: %s\n"
+msgid "Could not import Python script %s/%s. Python disabled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:446
-#, c-format
-msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
+#: src/lib/pythonlib.c:230
+msgid "Could not create Python Job Object.\n"
 msgstr ""
 
-#: src/stored/bscan.c:450
+#: src/lib/pythonlib.c:243 src/lib/pythonlib.c:267
 #, c-format
-msgid "Media type \"%s\" is OK.\n"
+msgid "Python function \"%s\" not found.\n"
 msgstr ""
 
-#: src/stored/bscan.c:459
+#: src/lib/pythonlib.c:282
 #, c-format
-msgid "VOL_LABEL: OK for Volume: %s\n"
+msgid "Unknown Python daemon event %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:466
+#: src/lib/res.c:66
 #, c-format
-msgid "%d \"errors\" ignored before first Start of Session record.\n"
+msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:477
+#: src/lib/res.c:76
 #, c-format
-msgid "SOS_LABEL: Found Job record for JobId: %d\n"
+msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:482
+#: src/lib/tls.c:108
 #, c-format
-msgid "SOS_LABEL: Job record not found for JobId: %d\n"
+msgid ""
+"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:522
-#, c-format
-msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
+#: src/lib/tls.c:155
+msgid "Error initializing SSL context"
 msgstr ""
 
-#: src/stored/bscan.c:528
-#, c-format
-msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
+#: src/lib/tls.c:176
+msgid "Error loading certificate verification stores"
 msgstr ""
 
-#: src/stored/bscan.c:534
-#, c-format
-msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
+#: src/lib/tls.c:181
+msgid ""
+"Either a certificate file or a directory must be specified as a verification "
+"store\n"
 msgstr ""
 
-#: src/stored/bscan.c:552 src/stored/bscan.c:998
-#, c-format
-msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
+#: src/lib/tls.c:192
+msgid "Error loading certificate file"
 msgstr ""
 
-#: src/stored/bscan.c:595
-#, c-format
-msgid "Could not update job record. ERR=%s\n"
+#: src/lib/tls.c:200
+msgid "Error loading private key"
 msgstr ""
 
-#: src/stored/bscan.c:606
-#, c-format
-msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
+#: src/lib/tls.c:208
+msgid "Unable to open DH parameters file"
 msgstr ""
 
-#: src/stored/bscan.c:618
-#, c-format
-msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
+#: src/lib/tls.c:214
+msgid "Unable to load DH parameters from specified file"
 msgstr ""
 
-#: src/stored/bscan.c:654
-#, c-format
-msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
+#: src/lib/tls.c:218
+msgid "Failed to set TLS Diffie-Hellman parameters"
 msgstr ""
 
-#: src/stored/bscan.c:697
-#, c-format
-msgid "Got MD5 record: %s\n"
+#: src/lib/tls.c:227
+msgid "Error setting cipher list, no valid ciphers available\n"
 msgstr ""
 
-#: src/stored/bscan.c:706
-#, c-format
-msgid "Got SHA1 record: %s\n"
+#: src/lib/tls.c:275
+msgid "Peer failed to present a TLS certificate\n"
 msgstr ""
 
-#: src/stored/bscan.c:714
+#: src/lib/tls.c:317
 #, c-format
-msgid "Got Prog Names Stream: %s\n"
+msgid "Peer %s failed to present a TLS certificate\n"
 msgstr ""
 
-#: src/stored/bscan.c:720
-msgid "Got Prog Data Stream record.\n"
+#: src/lib/tls.c:416
+msgid "Error creating file descriptor-based BIO"
 msgstr ""
 
-#: src/stored/bscan.c:724
-#, c-format
-msgid "Unknown stream type!!! stream=%d data=%s\n"
+#: src/lib/tls.c:427
+msgid "Error creating new SSL object"
 msgstr ""
 
-#: src/stored/bscan.c:784
-#, c-format
-msgid "Could not create File Attributes record. ERR=%s\n"
+#: src/lib/tls.c:493 src/lib/tls.c:510
+msgid "Connect failure"
 msgstr ""
 
-#: src/stored/bscan.c:790
-#, c-format
-msgid "Created File record: %s\n"
+#: src/lib/tls.c:587 src/lib/tls.c:591
+msgid "TLS shutdown failure."
 msgstr ""
 
-#: src/stored/bscan.c:827
-#, c-format
-msgid "Could not create media record. ERR=%s\n"
+#: src/lib/tls.c:642 src/lib/tls.c:658
+msgid "TLS read/write failure."
 msgstr ""
 
-#: src/stored/bscan.c:831 src/stored/bscan.c:852
+#: src/lib/tls.c:716 src/lib/tls.c:773 src/stored/dev.c:212
+#: src/stored/dev.c:230 src/stored/dev.c:236 src/stored/stored_conf.c:550
 #, c-format
-msgid "Could not update media record. ERR=%s\n"
+msgid "Unable to init mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:835
+#: src/lib/tls.c:736 src/lib/tls.c:805
 #, c-format
-msgid "Created Media record for Volume: %s\n"
+msgid "Unable to destroy mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:856
+#: src/lib/tls.c:870
 #, c-format
-msgid "Updated Media record at end of Volume: %s\n"
+msgid "Unable to init OpenSSL threading: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:873
-#, c-format
-msgid "Could not create pool record. ERR=%s\n"
+#: src/lib/tls.c:880
+msgid "Failed to seed OpenSSL PRNG\n"
 msgstr ""
 
-#: src/stored/bscan.c:877
-#, c-format
-msgid "Created Pool record for Pool: %s\n"
+#: src/lib/tls.c:906
+msgid "Failed to save OpenSSL PRNG\n"
 msgstr ""
 
-#: src/stored/bscan.c:897
+#: src/stored/acquire.c:98
 #, c-format
-msgid "Created Client record for Client: %s\n"
+msgid "Hey! num_writers=%d!!!!\n"
 msgstr ""
 
-#: src/stored/bscan.c:914
+#: src/stored/acquire.c:146
 #, c-format
-msgid "Fileset \"%s\" already exists.\n"
+msgid "Num_writers=%d not zero. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:918
+#: src/stored/acquire.c:154
 #, c-format
-msgid "Could not create FileSet record \"%s\". ERR=%s\n"
+msgid "No volumes specified. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:923
+#: src/stored/acquire.c:182 src/stored/mount.c:72
 #, c-format
-msgid "Created FileSet record \"%s\"\n"
+msgid "Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/bscan.c:970
+#: src/stored/acquire.c:193
 #, c-format
-msgid "Could not create JobId record. ERR=%s\n"
+msgid "Open device %s Volume \"%s\" failed (EIO): ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:976
+#: src/stored/acquire.c:208
 #, c-format
-msgid "Could not update job start record. ERR=%s\n"
+msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:979
+#: src/stored/acquire.c:273 src/stored/mount.c:66
 #, c-format
-msgid "Created new JobId=%u record for original JobId=%u\n"
+msgid "Too many errors trying to mount device %s.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1029
+#: src/stored/acquire.c:282
 #, c-format
-msgid "Could not update JobId=%u record. ERR=%s\n"
+msgid "Ready to read from volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1034
+#: src/stored/acquire.c:328 src/stored/reserve.c:617
 #, c-format
-msgid "Updated Job termination record for JobId=%u TermStat=%c\n"
+msgid "Device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1056
+#: src/stored/acquire.c:357
 #, c-format
-msgid "Job Termination code: %d"
+msgid "Wanted Volume \"%s\", but device %s is busy writing on \"%s\" .\n"
 msgstr ""
 
-#: src/stored/bscan.c:1061
+#: src/stored/acquire.c:374
 #, c-format
 msgid ""
-"%s\n"
-"JobId:                  %d\n"
-"Job:                    %s\n"
-"FileSet:                %s\n"
-"Backup Level:           %s\n"
-"Client:                 %s\n"
-"Start time:             %s\n"
-"End time:               %s\n"
-"Files Written:          %s\n"
-"Bytes Written:          %s\n"
-"Volume Session Id:      %d\n"
-"Volume Session Time:    %d\n"
-"Last Volume Bytes:      %s\n"
-"Termination:            %s\n"
-"\n"
+"Cannot recycle volume \"%s\" on device %s because it is in use by another "
+"job.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1125
+#: src/stored/acquire.c:396
 #, c-format
-msgid "Could not create JobMedia record. ERR=%s\n"
+msgid "Could not ready device %s for append.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1129
+#: src/stored/acquire.c:459 src/stored/block.c:353 src/stored/block.c:676
+#: src/stored/block.c:744
 #, c-format
-msgid "Created JobMedia record JobId %d, MediaId %d\n"
+msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1145
+#: src/stored/acquire.c:501
 #, c-format
-msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
+msgid "Alert: %s"
 msgstr ""
 
-#: src/stored/bscan.c:1159
+#: src/stored/acquire.c:509
 #, c-format
-msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
+msgid "3997 Bad alert command: %s: ERR=%s.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1164
-msgid "Updated MD5/SHA1 record\n"
+#: src/stored/append.c:60
+msgid "Unable to set network buffer size.\n"
 msgstr ""
 
-#: src/stored/btape.c:483
-msgid "Moved to end of medium.\n"
+#: src/stored/append.c:73 src/stored/append.c:82 src/stored/append.c:94
+#: src/stored/append.c:249 src/stored/append.c:264 src/stored/append.c:276
+#: src/stored/askdir.c:284 src/stored/askdir.c:285
+msgid "NULL Volume name. This shouldn't happen!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:510
+#: src/stored/append.c:88 src/stored/btape.c:1853
 #, c-format
-msgid "Bad status from bsf. ERR=%s\n"
+msgid "Write session label failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:512
+#: src/stored/append.c:100
 #, c-format
-msgid "Backspaced %d file%s.\n"
+msgid "Network send error to FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:529
+#: src/stored/append.c:137
 #, c-format
-msgid "Bad status from bsr. ERR=%s\n"
+msgid "Error reading data header from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:531
+#: src/stored/append.c:159
 #, c-format
-msgid "Backspaced %d record%s.\n"
+msgid "Malformed data header from FD: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:541 src/stored/status.c:216
-#, c-format
-msgid "Configured device capabilities:\n"
+#: src/stored/append.c:169
+msgid "File index from FD not positive or sequential\n"
 msgstr ""
 
-#: src/stored/btape.c:559
+#: src/stored/append.c:199 src/stored/append.c:269 src/stored/spool.c:247
 #, c-format
-msgid "Device status:\n"
+msgid "Fatal append error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:573 src/stored/status.c:248
+#: src/stored/append.c:224
 #, c-format
-msgid "Device parameters:\n"
+msgid "Error updating file attributes. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:643
-msgid "Skipping read backwards test because BSR turned off.\n"
+#: src/stored/append.c:237
+#, c-format
+msgid "Network error on data channel. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:647
-msgid ""
-"\n"
-"=== Write, backup, and re-read test ===\n"
-"\n"
-"I'm going to write three records and an EOF\n"
-"then backup over the EOF and re-read the last record.\n"
-"Bacula does this after writing the last block on the\n"
-"tape to verify that the block was written correctly.\n"
-"\n"
-"This is not an *essential* feature ...\n"
-"\n"
+#: src/stored/append.c:258 src/stored/btape.c:1969
+#, c-format
+msgid "Error writting end session label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:660 src/stored/btape.c:671 src/stored/btape.c:682
-#: src/stored/btape.c:780 src/stored/btape.c:796 src/stored/btape.c:892
-#: src/stored/btape.c:908 src/stored/btape.c:1508 src/stored/btape.c:2351
-msgid "Error writing record to block.\n"
+#: src/stored/append.c:271
+msgid "Set ok=FALSE after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/btape.c:664 src/stored/btape.c:675 src/stored/btape.c:686
-#: src/stored/btape.c:784 src/stored/btape.c:800 src/stored/btape.c:896
-#: src/stored/btape.c:912 src/stored/btape.c:1512 src/stored/btape.c:2355
-msgid "Error writing block to device.\n"
+#: src/stored/askdir.c:161
+msgid "Network error on bnet_recv in req_vol_info.\n"
 msgstr ""
 
-#: src/stored/btape.c:667
+#: src/stored/askdir.c:178
 #, c-format
-msgid "Wrote first record of %d bytes.\n"
+msgid "Error getting Volume info: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:678
-#, c-format
-msgid "Wrote second record of %d bytes.\n"
+#: src/stored/askdir.c:289 src/stored/askdir.c:290
+msgid "Attempt to update_volume_info in read mode!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:689
+#: src/stored/askdir.c:318
 #, c-format
-msgid "Wrote third record of %d bytes.\n"
+msgid "Didn't get vol info vol=%s: ERR=%s"
 msgstr ""
 
-#: src/stored/btape.c:696 src/stored/btape.c:701
+#: src/stored/askdir.c:349
 #, c-format
-msgid "Backspace file failed! ERR=%s\n"
+msgid "Error creating JobMedia record: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:707
+#: src/stored/askdir.c:356
 #, c-format
-msgid "Backspace record failed! ERR=%s\n"
+msgid "Error creating JobMedia record: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:713 src/stored/btape.c:719
+#: src/stored/askdir.c:424
 #, c-format
-msgid "Read block failed! ERR=%s\n"
+msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
 msgstr ""
 
-#: src/stored/btape.c:724
-msgid "Bad data in record. Test failed!\n"
+#: src/stored/askdir.c:452
+#, c-format
+msgid ""
+"Please mount Volume \"%s\" on Storage Device %s for Job %s\n"
+"Use \"mount\" command to release Job.\n"
 msgstr ""
 
-#: src/stored/btape.c:728
+#: src/stored/askdir.c:462
+#, c-format
 msgid ""
-"\n"
-"Block re-read correct. Test succeeded!\n"
+"Job %s waiting. Cannot find any appendable volumes.\n"
+"Please use the \"label\"  command to create a new Volume for:\n"
+"    Storage:      %s\n"
+"    Media type:   %s\n"
+"    Pool:         %s\n"
 msgstr ""
 
-#: src/stored/btape.c:729
-msgid ""
-"=== End Write, backup, and re-read test ===\n"
-"\n"
+#: src/stored/askdir.c:486 src/stored/askdir.c:588
+#, c-format
+msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/btape.c:736
-msgid ""
-"This is not terribly serious since Bacula only uses\n"
-"this function to verify the last block written to the\n"
-"tape. Bacula will skip the last block verification\n"
-"if you add:\n"
-"\n"
-"Backward Space Record = No\n"
-"\n"
-"to your Storage daemon's Device resource definition.\n"
+#: src/stored/askdir.c:496 src/stored/askdir.c:503
+#, c-format
+msgid "pthread error in mount_next_volume stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:760
+#: src/stored/askdir.c:514
+#, c-format
 msgid ""
-"\n"
-"=== Write, rewind, and re-read test ===\n"
-"\n"
-"I'm going to write 1000 records and an EOF\n"
-"then write 1000 records and an EOF, then rewind,\n"
-"and re-read the data to verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
+"Someone woke me up, but I cannot find any appendable\n"
+"volumes for Job=%s.\n"
 msgstr ""
 
-#: src/stored/btape.c:788 src/stored/btape.c:804 src/stored/btape.c:900
-#: src/stored/btape.c:916
-#, c-format
-msgid "Wrote 1000 blocks of %d bytes.\n"
+#: src/stored/askdir.c:558
+msgid "Cannot request another volume: no volume name given.\n"
 msgstr ""
 
-#: src/stored/btape.c:820 src/stored/btape.c:974
-msgid "Got EOF on tape.\n"
+#: src/stored/askdir.c:564
+#, c-format
+msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:825
+#: src/stored/askdir.c:570
 #, c-format
-msgid "Read block %d failed! ERR=%s\n"
+msgid "Please mount Volume \"%s\" on Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/btape.c:831
+#: src/stored/askdir.c:598
 #, c-format
-msgid "Read record failed. Block %d! ERR=%s\n"
+msgid "pthread error in mount_volume stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:837 src/stored/btape.c:1004
+#: src/stored/askdir.c:605
 #, c-format
-msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
+msgid "pthread error in mount_next_volume stat=%d: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:844
-msgid "1000 blocks re-read correctly.\n"
+#: src/stored/authenticate.c:53
+#, c-format
+msgid "I only authenticate Directors, not %d\n"
 msgstr ""
 
-#: src/stored/btape.c:847 src/stored/btape.c:1011
+#: src/stored/authenticate.c:120
 msgid ""
-"=== Test Succeeded. End Write, rewind, and re-read test ===\n"
-"\n"
+"Incorrect password given by Director.\n"
+"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
+"help.\n"
 msgstr ""
 
-#: src/stored/btape.c:872
-msgid ""
-"\n"
-"=== Write, rewind, and position test ===\n"
-"\n"
-"I'm going to write 1000 records and an EOF\n"
-"then write 1000 records and an EOF, then rewind,\n"
-"and position to a few blocks and verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
+#: src/stored/authenticate.c:178
+#, c-format
+msgid "Unable to authenticate Director at %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:980
+#: src/stored/authenticate.c:223 src/stored/authenticate.c:259
 #, c-format
 msgid ""
-"Read block %d failed! file=%d blk=%d. ERR=%s\n"
-"\n"
+"Incorrect authorization key from File daemon at %s rejected.\n"
+"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
+"help.\n"
 msgstr ""
 
-#: src/stored/btape.c:982
-msgid ""
-"This may be because the tape drive block size is not\n"
+#: src/stored/autochanger.c:87
+#, c-format
+msgid "3303 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:96
+#, c-format
+msgid "3992 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:109
+#, c-format
+msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:116
+#, c-format
+msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:122
+#, c-format
+msgid "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:167
+#, c-format
+msgid "3301 Issuing autochanger \"loaded drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:176
+#, c-format
+msgid "3302 Autochanger \"loaded drive %d\", result is Slot %d.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:180
+#, c-format
+msgid "3302 Autochanger \"loaded drive %d\", result: nothing loaded.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:187
+#, c-format
+msgid "3991 Bad autochanger \"loaded drive %d\" command: ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:235
+#, c-format
+msgid "3993 Device %s not an autochanger device.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:253
+#, c-format
+msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:265
+#, c-format
+msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:277
+#, c-format
+msgid "3306 Issuing autochanger \"%s\" command.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:282
+msgid "3996 Open bpipe failed.\n"
+msgstr ""
+
+#: src/stored/autochanger.c:306
+#, c-format
+msgid "Autochanger error: ERR=%s\n"
+msgstr ""
+
+#: src/stored/bcopy.c:58
+#, c-format
+msgid ""
+"Copyright (C) 2002-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
+"       -b bootstrap      specify a bootstrap file\n"
+"       -c <file>         specify configuration file\n"
+"       -d <nn>           set debug level to nn\n"
+"       -i                specify input Volume names (separated by |)\n"
+"       -o                specify output Volume names (separated by |)\n"
+"       -p                proceed inspite of errors\n"
+"       -v                verbose\n"
+"       -w <dir>          specify working directory (default /tmp)\n"
+"       -?                print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bcopy.c:137 src/stored/bextract.c:177 src/stored/bscan.c:221
+msgid "Wrong number of arguments: \n"
+msgstr ""
+
+#: src/stored/bcopy.c:172 src/stored/btape.c:334 src/stored/device.c:273
+#, c-format
+msgid "dev open failed: %s\n"
+msgstr ""
+
+#: src/stored/bcopy.c:185
+msgid "Write of last block failed.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:188
+#, c-format
+msgid "%u Jobs copied. %u records copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:205 src/stored/bscan.c:389
+#, c-format
+msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
+msgstr ""
+
+#: src/stored/bcopy.c:220
+msgid "Volume is prelabeled. This volume cannot be copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:223
+msgid "Volume label not copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:235 src/stored/bcopy.c:242 src/stored/bcopy.c:265
+#: src/stored/btape.c:2335
+#, c-format
+msgid "Cannot fixup device error. %s\n"
+msgstr ""
+
+#: src/stored/bcopy.c:247
+msgid "EOM label not copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:250
+msgid "EOT label not copied.\n"
+msgstr ""
+
+#: src/stored/bcopy.c:290 src/stored/bextract.c:473 src/stored/bls.c:444
+#: src/stored/bscan.c:1227 src/stored/btape.c:2683
+#, c-format
+msgid "Mount Volume \"%s\" on device %s and press return when ready: "
+msgstr ""
+
+#: src/stored/bextract.c:70
+#, c-format
+msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-"
+"files>\n"
+"       -b <file>       specify a bootstrap file\n"
+"       -c <file>       specify a configuration file\n"
+"       -d <nn>         set debug level to nn\n"
+"       -e <file>       exclude list\n"
+"       -i <file>       include list\n"
+"       -p              proceed inspite of I/O errors\n"
+"       -v              verbose\n"
+"       -V <volumes>    specify Volume names (separated by |)\n"
+"       -?              print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bextract.c:127 src/stored/bls.c:129
+#, c-format
+msgid "Could not open exclude file: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/bextract.c:142 src/stored/bls.c:143
+#, c-format
+msgid "Could not open include file: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/bextract.c:198
+#, c-format
+msgid "%d Program Name and/or Program Data Stream records ignored.\n"
+msgstr ""
+
+#: src/stored/bextract.c:202
+#, c-format
+msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
+msgstr ""
+
+#: src/stored/bextract.c:226
+#, c-format
+msgid "Cannot stat %s. It must exist. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bextract.c:230
+#, c-format
+msgid "%s must be a directory.\n"
+msgstr ""
+
+#: src/stored/bextract.c:251
+#, c-format
+msgid "%u files restored.\n"
+msgstr ""
+
+#: src/stored/bextract.c:278 src/stored/bextract.c:444
+msgid "Logic error output file should be open but is not.\n"
+msgstr ""
+
+#: src/stored/bextract.c:285 src/stored/bls.c:365 src/stored/bscan.c:645
+msgid "Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bextract.c:347
+#, c-format
+msgid "Seek error on %s: %s\n"
+msgstr ""
+
+#: src/stored/bextract.c:400
+#, c-format
+msgid "Uncompression error. ERR=%d\n"
+msgstr ""
+
+#: src/stored/bextract.c:408
+msgid "===Write error===\n"
+msgstr ""
+
+#: src/stored/bextract.c:435
+msgid "Got Program Name or Data Stream. Ignored.\n"
+msgstr ""
+
+#: src/stored/block.c:78
+#, c-format
+msgid ""
+"Dump block %s %x: size=%d BlkNum=%d\n"
+"               Hdrcksum=%x cksum=%x\n"
+msgstr ""
+
+#: src/stored/block.c:91
+#, c-format
+msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
+msgstr ""
+
+#: src/stored/block.c:147
+#, c-format
+msgid "%d block read errors not printed.\n"
+msgstr ""
+
+#: src/stored/block.c:235 src/stored/block.c:251 src/stored/block.c:261
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
+"discarded.\n"
+msgstr ""
+
+#: src/stored/block.c:275
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Block length %u is insane (too large), probably "
+"due to a bad archive.\n"
+msgstr ""
+
+#: src/stored/block.c:301
+#, c-format
+msgid ""
+"Volume data error at %u:%u!\n"
+"Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
+msgstr ""
+
+#: src/stored/block.c:409
+msgid "Cannot write block. Device at EOM.\n"
+msgstr ""
+
+#: src/stored/block.c:414
+msgid "Attempt to write on read-only Volume.\n"
+msgstr ""
+
+#: src/stored/block.c:466
+#, c-format
+msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
+msgstr ""
+
+#: src/stored/block.c:481
+#, c-format
+msgid "Unable to write EOF. ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:507 src/stored/block.c:518
+msgid "Write block header zeroed.\n"
+msgstr ""
+
+#: src/stored/block.c:536
+#, c-format
+msgid "Write error at %u:%u on device %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/block.c:543
+#, c-format
+msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
+msgstr ""
+
+#: src/stored/block.c:618 src/stored/block.c:624
+#, c-format
+msgid "Backspace file at EOT failed. ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:631
+#, c-format
+msgid "Backspace record at EOT failed. ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:648
+#, c-format
+msgid "Re-read last block at EOT failed. ERR=%s"
+msgstr ""
+
+#: src/stored/block.c:652
+msgid "Re-read of last block succeeded.\n"
+msgstr ""
+
+#: src/stored/block.c:655
+#, c-format
+msgid "Re-read of last block failed. Last block=%u Current block=%u.\n"
+msgstr ""
+
+#: src/stored/block.c:684
+#, c-format
+msgid ""
+"Error writing final EOF to tape. This tape may not be readable.\n"
+"%s"
+msgstr ""
+
+#: src/stored/block.c:790 src/stored/dvd.c:622
+#, c-format
+msgid ""
+"Error while writing, current part number is less than the total number of "
+"parts (%d/%d, device=%s)\n"
+msgstr ""
+
+#: src/stored/block.c:798 src/stored/block.c:908
+#, c-format
+msgid "Unable to open device next part %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/block.c:816
+#, c-format
+msgid ""
+"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
+"free_space_errno=%d, errmsg=%s).\n"
+msgstr ""
+
+#: src/stored/block.c:829
+#, c-format
+msgid ""
+"End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
+"free_space_errno=%d).\n"
+msgstr ""
+
+#: src/stored/block.c:883
+#, c-format
+msgid "Block buffer size looping problem on device %s\n"
+msgstr ""
+
+#: src/stored/block.c:934
+#, c-format
+msgid "Read error at file:blk %u:%u on device %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/block.c:947
+#, c-format
+msgid "Read zero bytes at %u:%u on device %s.\n"
+msgstr ""
+
+#: src/stored/block.c:960
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Very short block of %d bytes on device %s "
+"discarded.\n"
+msgstr ""
+
+#: src/stored/block.c:985
+#, c-format
+msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
+msgstr ""
+
+#: src/stored/block.c:1004
+#, c-format
+msgid "Setting block buffer size to %u bytes.\n"
+msgstr ""
+
+#: src/stored/block.c:1019
+#, c-format
+msgid ""
+"Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
+msgstr ""
+
+#: src/stored/bls.c:69
+#, c-format
+msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bls [options] <device-name>\n"
+"       -b <file>       specify a bootstrap file\n"
+"       -c <file>       specify a config file\n"
+"       -d <level>      specify debug level\n"
+"       -e <file>       exclude list\n"
+"       -i <file>       include list\n"
+"       -j              list jobs\n"
+"       -k              list blocks\n"
+"    (no j or k option) list saved files\n"
+"       -L              dump label\n"
+"       -p              proceed inspite of errors\n"
+"       -v              be verbose\n"
+"       -V              specify Volume names (separated by |)\n"
+"       -?              print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bls.c:190
+msgid "No archive name specified\n"
+msgstr ""
+
+#: src/stored/bls.c:226
+#, c-format
+msgid ""
+"\n"
+"Warning, this Volume is a continuation of Volume %s\n"
+msgstr ""
+
+#: src/stored/bls.c:268
+#, c-format
+msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/bls.c:279
+#, c-format
+msgid "Mounted Volume \"%s\".\n"
+msgstr ""
+
+#: src/stored/bls.c:281
+#, c-format
+msgid "Got EOF at file %u on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/bls.c:305
+#, c-format
+msgid ""
+"File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%"
+"s rlen=%d\n"
+msgstr ""
+
+#: src/stored/bls.c:314
+#, c-format
+msgid "Block: %d size=%d\n"
+msgstr ""
+
+#: src/stored/bls.c:381
+#, c-format
+msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
+msgstr ""
+
+#: src/stored/bls.c:398 src/stored/read_record.c:321
+msgid "Fresh Volume Label"
+msgstr ""
+
+#: src/stored/bls.c:401 src/stored/read_record.c:324
+msgid "Volume Label"
+msgstr ""
+
+#: src/stored/bls.c:405 src/stored/label.c:959
+msgid "Begin Job Session"
+msgstr ""
+
+#: src/stored/bls.c:409 src/stored/label.c:962
+msgid "End Job Session"
+msgstr ""
+
+#: src/stored/bls.c:412
+msgid "End of Medium"
+msgstr ""
+
+#: src/stored/bls.c:415 src/stored/label.c:971
+msgid "Unknown"
+msgstr ""
+
+#: src/stored/bls.c:421 src/stored/read_record.c:342
+#, c-format
+msgid "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:109
+#, c-format
+msgid ""
+"Copyright (C) 2001-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: bscan [ options ] <bacula-archive>\n"
+"       -b bootstrap      specify a bootstrap file\n"
+"       -c <file>         specify configuration file\n"
+"       -d <nn>           set debug level to nn\n"
+"       -m                update media info in database\n"
+"       -n <name>         specify the database name (default bacula)\n"
+"       -u <user>         specify database user name (default bacula)\n"
+"       -P <password      specify database password (default none)\n"
+"       -h <host>         specify database host (default NULL)\n"
+"       -p                proceed inspite of I/O errors\n"
+"       -r                list records\n"
+"       -s                synchronize or store in database\n"
+"       -S                show scan progress periodically\n"
+"       -v                verbose\n"
+"       -V <Volumes>      specify Volume names (separated by |)\n"
+"       -w <dir>          specify working directory (default from conf file)\n"
+"       -?                print this message\n"
+"\n"
+msgstr ""
+
+#: src/stored/bscan.c:234 src/stored/stored.c:266
+#, c-format
+msgid "No Storage resource defined in %s. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:242 src/stored/stored.c:297
+#, c-format
+msgid "No Working Directory defined in %s. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:250
+#, c-format
+msgid "Working Directory: %s not found. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:254
+#, c-format
+msgid "Working Directory: %s is not a directory. Cannot continue.\n"
+msgstr ""
+
+#: src/stored/bscan.c:268 src/stored/bscan.c:340
+#, c-format
+msgid "First Volume Size = %sn"
+msgstr ""
+
+#: src/stored/bscan.c:274
+msgid "Could not init Bacula database\n"
+msgstr ""
+
+#: src/stored/bscan.c:281
+#, c-format
+msgid "Using Database: %s, User: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:315
+#, c-format
+msgid "Create JobMedia for Job %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:325
+#, c-format
+msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:381
+#, c-format
+msgid "done: %d%%\n"
+msgstr ""
+
+#: src/stored/bscan.c:405
+msgid "Volume is prelabeled. This tape cannot be scanned.\n"
+msgstr ""
+
+#: src/stored/bscan.c:417
+#, c-format
+msgid "Pool record for %s found in DB.\n"
+msgstr ""
+
+#: src/stored/bscan.c:421
+#, c-format
+msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:427
+#, c-format
+msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:431
+#, c-format
+msgid "Pool type \"%s\" is OK.\n"
+msgstr ""
+
+#: src/stored/bscan.c:441
+#, c-format
+msgid "Media record for %s found in DB.\n"
+msgstr ""
+
+#: src/stored/bscan.c:448
+#, c-format
+msgid "VOL_LABEL: Media record not found for Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:455
+#, c-format
+msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:459
+#, c-format
+msgid "Media type \"%s\" is OK.\n"
+msgstr ""
+
+#: src/stored/bscan.c:468
+#, c-format
+msgid "VOL_LABEL: OK for Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:475
+#, c-format
+msgid "%d \"errors\" ignored before first Start of Session record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:486
+#, c-format
+msgid "SOS_LABEL: Found Job record for JobId: %d\n"
+msgstr ""
+
+#: src/stored/bscan.c:491
+#, c-format
+msgid "SOS_LABEL: Job record not found for JobId: %d\n"
+msgstr ""
+
+#: src/stored/bscan.c:531
+#, c-format
+msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:537
+#, c-format
+msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:543
+#, c-format
+msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
+msgstr ""
+
+#: src/stored/bscan.c:561 src/stored/bscan.c:1007
+#, c-format
+msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:604
+#, c-format
+msgid "Could not update job record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:615
+#, c-format
+msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:627
+#, c-format
+msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:663
+#, c-format
+msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:706
+#, c-format
+msgid "Got MD5 record: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:715
+#, c-format
+msgid "Got SHA1 record: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:723
+#, c-format
+msgid "Got Prog Names Stream: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:729
+msgid "Got Prog Data Stream record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:733
+#, c-format
+msgid "Unknown stream type!!! stream=%d data=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:793
+#, c-format
+msgid "Could not create File Attributes record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:799
+#, c-format
+msgid "Created File record: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:836
+#, c-format
+msgid "Could not create media record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:840 src/stored/bscan.c:861
+#, c-format
+msgid "Could not update media record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:844
+#, c-format
+msgid "Created Media record for Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:865
+#, c-format
+msgid "Updated Media record at end of Volume: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:882
+#, c-format
+msgid "Could not create pool record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:886
+#, c-format
+msgid "Created Pool record for Pool: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:906
+#, c-format
+msgid "Created Client record for Client: %s\n"
+msgstr ""
+
+#: src/stored/bscan.c:923
+#, c-format
+msgid "Fileset \"%s\" already exists.\n"
+msgstr ""
+
+#: src/stored/bscan.c:927
+#, c-format
+msgid "Could not create FileSet record \"%s\". ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:932
+#, c-format
+msgid "Created FileSet record \"%s\"\n"
+msgstr ""
+
+#: src/stored/bscan.c:979
+#, c-format
+msgid "Could not create JobId record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:985
+#, c-format
+msgid "Could not update job start record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:988
+#, c-format
+msgid "Created new JobId=%u record for original JobId=%u\n"
+msgstr ""
+
+#: src/stored/bscan.c:1038
+#, c-format
+msgid "Could not update JobId=%u record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:1043
+#, c-format
+msgid "Updated Job termination record for JobId=%u TermStat=%c\n"
+msgstr ""
+
+#: src/stored/bscan.c:1065
+#, c-format
+msgid "Job Termination code: %d"
+msgstr ""
+
+#: src/stored/bscan.c:1070
+#, c-format
+msgid ""
+"%s\n"
+"JobId:                  %d\n"
+"Job:                    %s\n"
+"FileSet:                %s\n"
+"Backup Level:           %s\n"
+"Client:                 %s\n"
+"Start time:             %s\n"
+"End time:               %s\n"
+"Files Written:          %s\n"
+"Bytes Written:          %s\n"
+"Volume Session Id:      %d\n"
+"Volume Session Time:    %d\n"
+"Last Volume Bytes:      %s\n"
+"Termination:            %s\n"
+"\n"
+msgstr ""
+
+#: src/stored/bscan.c:1134
+#, c-format
+msgid "Could not create JobMedia record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:1138
+#, c-format
+msgid "Created JobMedia record JobId %d, MediaId %d\n"
+msgstr ""
+
+#: src/stored/bscan.c:1154
+#, c-format
+msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
+msgstr ""
+
+#: src/stored/bscan.c:1168
+#, c-format
+msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
+msgstr ""
+
+#: src/stored/bscan.c:1173
+msgid "Updated MD5/SHA1 record\n"
+msgstr ""
+
+#: src/stored/btape.c:157 src/stored/stored.c:107
+#, c-format
+msgid "Tape block size (%d) not multiple of system size (%d)\n"
+msgstr ""
+
+#: src/stored/btape.c:161 src/stored/stored.c:111
+#, c-format
+msgid "Tape block size (%d) is not a power of 2\n"
+msgstr ""
+
+#: src/stored/btape.c:164
+#, c-format
+msgid ""
+"\n"
+"\n"
+"!!!! Warning large disk addressing disabled. off_t=%d should be 8 or "
+"more !!!!!\n"
+"\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:171
+#, c-format
+msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
+msgstr ""
+
+#: src/stored/btape.c:180
+msgid "64 bit printf/scanf problem. i=%d x64=%"
+msgstr ""
+
+#: src/stored/btape.c:180
+msgid " y64=%"
+msgstr ""
+
+#: src/stored/btape.c:184
+#, c-format
+msgid "Tape block granularity is %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:251
+msgid "No archive name specified.\n"
+msgstr ""
+
+#: src/stored/btape.c:255
+msgid "Improper number of arguments specified.\n"
+msgstr ""
+
+#: src/stored/btape.c:340
+#, c-format
+msgid "open device %s: OK\n"
+msgstr ""
+
+#: src/stored/btape.c:361
+msgid "Enter Volume Name: "
+msgstr ""
+
+#: src/stored/btape.c:368
+#, c-format
+msgid "Device open failed. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:373
+#, c-format
+msgid "Wrote Volume label for volume \"%s\".\n"
+msgstr ""
+
+#: src/stored/btape.c:387
+msgid "Volume has no label.\n"
+msgstr ""
+
+#: src/stored/btape.c:390
+msgid "Volume label read correctly.\n"
+msgstr ""
+
+#: src/stored/btape.c:393
+#, c-format
+msgid "I/O error on device: ERR=%s"
+msgstr ""
+
+#: src/stored/btape.c:396
+msgid "Volume name error\n"
+msgstr ""
+
+#: src/stored/btape.c:399
+#, c-format
+msgid "Error creating label. ERR=%s"
+msgstr ""
+
+#: src/stored/btape.c:402
+msgid "Volume version error.\n"
+msgstr ""
+
+#: src/stored/btape.c:405
+msgid "Bad Volume label type.\n"
+msgstr ""
+
+#: src/stored/btape.c:408
+msgid "Unknown error.\n"
+msgstr ""
+
+#: src/stored/btape.c:426
+#, c-format
+msgid "Bad status from load. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:428
+#, c-format
+msgid "Loaded %s\n"
+msgstr ""
+
+#: src/stored/btape.c:437 src/stored/btape.c:777 src/stored/btape.c:819
+#: src/stored/btape.c:889 src/stored/btape.c:931 src/stored/btape.c:1200
+#, c-format
+msgid "Bad status from rewind. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:440 src/stored/btape.c:1208
+#, c-format
+msgid "Rewound %s\n"
+msgstr ""
+
+#: src/stored/btape.c:467 src/stored/btape.c:1212
+#, c-format
+msgid "Bad status from weof %d. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:471
+#, c-format
+msgid "Wrote 1 EOF to %s\n"
+msgstr ""
+
+#: src/stored/btape.c:474
+#, c-format
+msgid "Wrote %d EOFs to %s\n"
+msgstr ""
+
+#: src/stored/btape.c:492
+msgid "Moved to end of medium.\n"
+msgstr ""
+
+#: src/stored/btape.c:519
+#, c-format
+msgid "Bad status from bsf. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:521
+#, c-format
+msgid "Backspaced %d file%s.\n"
+msgstr ""
+
+#: src/stored/btape.c:538
+#, c-format
+msgid "Bad status from bsr. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:540
+#, c-format
+msgid "Backspaced %d record%s.\n"
+msgstr ""
+
+#: src/stored/btape.c:550 src/stored/status.c:220
+#, c-format
+msgid "Configured device capabilities:\n"
+msgstr ""
+
+#: src/stored/btape.c:568
+#, c-format
+msgid "Device status:\n"
+msgstr ""
+
+#: src/stored/btape.c:582 src/stored/status.c:252
+#, c-format
+msgid "Device parameters:\n"
+msgstr ""
+
+#: src/stored/btape.c:587
+#, c-format
+msgid "Status:\n"
+msgstr ""
+
+#: src/stored/btape.c:602
+msgid ""
+"Test writting larger and larger records.\n"
+"This is a torture test for records.\n"
+"I am going to write\n"
+"larger and larger records. It will stop when the record size\n"
+"plus the header exceeds the block size (by default about 64K)\n"
+msgstr ""
+
+#: src/stored/btape.c:610 src/stored/btape.c:1814
+msgid "Command aborted.\n"
+msgstr ""
+
+#: src/stored/btape.c:626
+#, c-format
+msgid "Block %d i=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:652
+msgid "Skipping read backwards test because BSR turned off.\n"
+msgstr ""
+
+#: src/stored/btape.c:656
+msgid ""
+"\n"
+"=== Write, backup, and re-read test ===\n"
+"\n"
+"I'm going to write three records and an EOF\n"
+"then backup over the EOF and re-read the last record.\n"
+"Bacula does this after writing the last block on the\n"
+"tape to verify that the block was written correctly.\n"
+"\n"
+"This is not an *essential* feature ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:669 src/stored/btape.c:680 src/stored/btape.c:691
+#: src/stored/btape.c:789 src/stored/btape.c:805 src/stored/btape.c:901
+#: src/stored/btape.c:917 src/stored/btape.c:1526 src/stored/btape.c:2400
+msgid "Error writing record to block.\n"
+msgstr ""
+
+#: src/stored/btape.c:673 src/stored/btape.c:684 src/stored/btape.c:695
+#: src/stored/btape.c:793 src/stored/btape.c:809 src/stored/btape.c:905
+#: src/stored/btape.c:921 src/stored/btape.c:1530 src/stored/btape.c:2404
+msgid "Error writing block to device.\n"
+msgstr ""
+
+#: src/stored/btape.c:676
+#, c-format
+msgid "Wrote first record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:687
+#, c-format
+msgid "Wrote second record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:698
+#, c-format
+msgid "Wrote third record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:705 src/stored/btape.c:710
+#, c-format
+msgid "Backspace file failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:714
+msgid "Backspaced over EOF OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:716
+#, c-format
+msgid "Backspace record failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:719
+msgid "Backspace record OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:722 src/stored/btape.c:728
+#, c-format
+msgid "Read block failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:733
+msgid "Bad data in record. Test failed!\n"
+msgstr ""
+
+#: src/stored/btape.c:737
+msgid ""
+"\n"
+"Block re-read correct. Test succeeded!\n"
+msgstr ""
+
+#: src/stored/btape.c:738
+msgid ""
+"=== End Write, backup, and re-read test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:745
+msgid ""
+"This is not terribly serious since Bacula only uses\n"
+"this function to verify the last block written to the\n"
+"tape. Bacula will skip the last block verification\n"
+"if you add:\n"
+"\n"
+"Backward Space Record = No\n"
+"\n"
+"to your Storage daemon's Device resource definition.\n"
+msgstr ""
+
+#: src/stored/btape.c:769
+msgid ""
+"\n"
+"=== Write, rewind, and re-read test ===\n"
+"\n"
+"I'm going to write 1000 records and an EOF\n"
+"then write 1000 records and an EOF, then rewind,\n"
+"and re-read the data to verify that it is correct.\n"
+"\n"
+"This is an *essential* feature ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:797 src/stored/btape.c:813 src/stored/btape.c:909
+#: src/stored/btape.c:925
+#, c-format
+msgid "Wrote 1000 blocks of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:822 src/stored/btape.c:934
+msgid "Rewind OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:829 src/stored/btape.c:983
+msgid "Got EOF on tape.\n"
+msgstr ""
+
+#: src/stored/btape.c:834
+#, c-format
+msgid "Read block %d failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:840
+#, c-format
+msgid "Read record failed. Block %d! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:846 src/stored/btape.c:1013
+#, c-format
+msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
+msgstr ""
+
+#: src/stored/btape.c:853
+msgid "1000 blocks re-read correctly.\n"
+msgstr ""
+
+#: src/stored/btape.c:856 src/stored/btape.c:1020
+msgid ""
+"=== Test Succeeded. End Write, rewind, and re-read test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:881
+msgid ""
+"\n"
+"=== Write, rewind, and position test ===\n"
+"\n"
+"I'm going to write 1000 records and an EOF\n"
+"then write 1000 records and an EOF, then rewind,\n"
+"and position to a few blocks and verify that it is correct.\n"
+"\n"
+"This is an *essential* feature ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:974
+#, c-format
+msgid "Reposition to file:block %d:%d\n"
+msgstr ""
+
+#: src/stored/btape.c:976
+msgid "Reposition error.\n"
+msgstr ""
+
+#: src/stored/btape.c:989
+#, c-format
+msgid ""
+"Read block %d failed! file=%d blk=%d. ERR=%s\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:991
+msgid ""
+"This may be because the tape drive block size is not\n"
 " set to variable blocking as normally used by Bacula.\n"
 " Please see the Tape Testing chapter in the manual and \n"
 " look for using mt with defblksize and setoptions\n"
@@ -8164,2060 +10606,4378 @@ msgid ""
 " in your Device resource.\n"
 msgstr ""
 
-#: src/stored/btape.c:998
+#: src/stored/btape.c:1007
+#, c-format
+msgid "Read record failed! ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1018
+#, c-format
+msgid "Block %d re-read correctly.\n"
+msgstr ""
+
+#: src/stored/btape.c:1039
+msgid ""
+"\n"
+"\n"
+"=== Append files test ===\n"
+"\n"
+"This test is essential to Bacula.\n"
+"\n"
+"I'm going to write one record  in file 0,\n"
+"                   two records in file 1,\n"
+"             and three records in file 2\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1063
+msgid "Now moving to end of medium.\n"
+msgstr ""
+
+#: src/stored/btape.c:1065 src/stored/btape.c:1295
+#, c-format
+msgid "We should be in file 3. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1066 src/stored/btape.c:1084 src/stored/btape.c:1284
+#: src/stored/btape.c:1296 src/stored/btape.c:1309 src/stored/btape.c:1326
+msgid "This is correct!"
+msgstr ""
+
+#: src/stored/btape.c:1066 src/stored/btape.c:1084 src/stored/btape.c:1284
+#: src/stored/btape.c:1296 src/stored/btape.c:1309 src/stored/btape.c:1326
+msgid "This is NOT correct!!!!"
+msgstr ""
+
+#: src/stored/btape.c:1072
+msgid ""
+"\n"
+"Now the important part, I am going to attempt to append to the tape.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1079
+msgid ""
+"Done appending, there should be no I/O errors\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1080
+msgid "Doing Bacula scan of blocks:\n"
+msgstr ""
+
+#: src/stored/btape.c:1082
+msgid "End scanning the tape.\n"
+msgstr ""
+
+#: src/stored/btape.c:1083 src/stored/btape.c:1308
+#, c-format
+msgid "We should be in file 4. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1108
+msgid ""
+"\n"
+"Autochanger enabled, but no name or no command device specified.\n"
+msgstr ""
+
+#: src/stored/btape.c:1112
+msgid ""
+"\n"
+"Ah, I see you have an autochanger configured.\n"
+"To test the autochanger you must have a blank tape\n"
+" that I can write on in Slot 1.\n"
+msgstr ""
+
+#: src/stored/btape.c:1115
+msgid ""
+"\n"
+"Do you wish to continue with the Autochanger test? (y/n): "
+msgstr ""
+
+#: src/stored/btape.c:1122
+msgid ""
+"\n"
+"\n"
+"=== Autochanger test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1131
+msgid "3301 Issuing autochanger \"loaded\" command.\n"
+msgstr ""
+
+#: src/stored/btape.c:1140
+#, c-format
+msgid "3991 Bad autochanger command: %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1141
+#, c-format
+msgid "3991 result=\"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1145
+#, c-format
+msgid "Slot %d loaded. I am going to unload it.\n"
+msgstr ""
+
+#: src/stored/btape.c:1147
+msgid "Nothing loaded in the drive. OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:1155
+#, c-format
+msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
+msgstr ""
+
+#: src/stored/btape.c:1160
+#, c-format
+msgid "unload status=%s %d\n"
+msgstr ""
+
+#: src/stored/btape.c:1160
+msgid "Bad"
+msgstr ""
+
+#: src/stored/btape.c:1163
+#, c-format
+msgid "3992 Bad autochanger command: %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1164
+#, c-format
+msgid "3992 result=\"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1174
+#, c-format
+msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
+msgstr ""
+
+#: src/stored/btape.c:1182
+#, c-format
+msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
+msgstr ""
+
+#: src/stored/btape.c:1186
+#, c-format
+msgid "3993 Bad autochanger command: %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1187
+#, c-format
+msgid "3993 result=\"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1202
+msgid ""
+"\n"
+"The test failed, probably because you need to put\n"
+"a longer sleep time in the mtx-script in the load) case.\n"
+"Adding a 30 second sleep and trying again ...\n"
+msgstr ""
+
+#: src/stored/btape.c:1215
+#, c-format
+msgid "Wrote EOF to %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1219
+#, c-format
+msgid ""
+"\n"
+"The test worked this time. Please add:\n"
+"\n"
+"   sleep %d\n"
+"\n"
+"to your mtx-changer script in the load) case.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1224
+msgid ""
+"\n"
+"The test autochanger worked!!\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1235
+msgid "You must correct this error or the Autochanger will not work.\n"
+msgstr ""
+
+#: src/stored/btape.c:1253
+msgid ""
+"\n"
+"\n"
+"=== Forward space files test ===\n"
+"\n"
+"This test is essential to Bacula.\n"
+"\n"
+"I'm going to write five files then test forward spacing\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1278
+msgid "Now forward spacing 1 file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1280 src/stored/btape.c:1292 src/stored/btape.c:1305
+#: src/stored/btape.c:1323 src/stored/btape.c:1492
+#, c-format
+msgid "Bad status from fsr. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1283
+#, c-format
+msgid "We should be in file 1. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1290
+msgid "Now forward spacing 2 files.\n"
+msgstr ""
+
+#: src/stored/btape.c:1303
+msgid "Now forward spacing 4 files.\n"
+msgstr ""
+
+#: src/stored/btape.c:1315
+msgid ""
+"The test worked this time. Please add:\n"
+"\n"
+"   Fast Forward Space File = no\n"
+"\n"
+"to your Device resource for this drive.\n"
+msgstr ""
+
+#: src/stored/btape.c:1321
+msgid "Now forward spacing 1 more file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1325
+#, c-format
+msgid "We should be in file 5. I am at file %d. %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1330
+msgid ""
+"\n"
+"=== End Forward space files test ===\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1334
+msgid ""
+"\n"
+"The forward space file test failed.\n"
+msgstr ""
+
+#: src/stored/btape.c:1336
+msgid ""
+"You have Fast Forward Space File enabled.\n"
+"I am turning it off then retrying the test.\n"
+msgstr ""
+
+#: src/stored/btape.c:1342
+msgid ""
+"You must correct this error or Bacula will not work.\n"
+"Some systems, e.g. OpenBSD, require you to set\n"
+"   Use MTIOCGET= no\n"
+"in your device resource. Use with caution.\n"
+msgstr ""
+
+#: src/stored/btape.c:1374
+msgid ""
+"\n"
+"Append test failed. Attempting again.\n"
+"Setting \"Hardware End of Medium = no\n"
+"    and \"Fast Forward Space File = no\n"
+"and retrying append test.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1382
+msgid ""
+"\n"
+"\n"
+"It looks like the test worked this time, please add:\n"
+"\n"
+"    Hardware End of Medium = No\n"
+"\n"
+"    Fast Forward Space File = No\n"
+"to your Device resource in the Storage conf file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1389
+msgid ""
+"\n"
+"\n"
+"That appears *NOT* to have corrected the problem.\n"
+msgstr ""
+
+#: src/stored/btape.c:1394
+msgid ""
+"\n"
+"\n"
+"It looks like the append failed. Attempting again.\n"
+"Setting \"BSF at EOM = yes\" and retrying append test.\n"
+msgstr ""
+
+#: src/stored/btape.c:1399
+msgid ""
+"\n"
+"\n"
+"It looks like the test worked this time, please add:\n"
+"\n"
+"    Hardware End of Medium = No\n"
+"    Fast Forward Space File = No\n"
+"    BSF at EOM = yes\n"
+"\n"
+"to your Device resource in the Storage conf file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1410
+msgid ""
+"\n"
+"Append test failed.\n"
+"\n"
+"\n"
+"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
+"Unable to correct the problem. You MUST fix this\n"
+"problem before Bacula can use your tape drive correctly\n"
+"\n"
+"Perhaps running Bacula in fixed block mode will work.\n"
+"Do so by setting:\n"
+"\n"
+"Minimum Block Size = nnn\n"
+"Maximum Block Size = nnn\n"
+"\n"
+"in your Storage daemon's Device definition.\n"
+"nnn must match your tape driver's block size, which\n"
+"can be determined by reading your tape manufacturers\n"
+"information, and the information on your kernel dirver.\n"
+"Fixed block sizes, however, are not normally an ideal solution.\n"
+"\n"
+"Some systems, e.g. OpenBSD, require you to set\n"
+"   Use MTIOCGET= no\n"
+"in your device resource. Use with caution.\n"
+msgstr ""
+
+#: src/stored/btape.c:1431
+msgid ""
+"\n"
+"The above Bacula scan should have output identical to what follows.\n"
+"Please double check it ...\n"
+"=== Sample correct output ===\n"
+"1 block of 64448 bytes in file 1\n"
+"End of File mark.\n"
+"2 blocks of 64448 bytes in file 2\n"
+"End of File mark.\n"
+"3 blocks of 64448 bytes in file 3\n"
+"End of File mark.\n"
+"1 block of 64448 bytes in file 4\n"
+"End of File mark.\n"
+"Total files=4, blocks=7, bytes = 451,136\n"
+"=== End sample correct output ===\n"
+"\n"
+"If the above scan output is not identical to the\n"
+"sample output, you MUST correct the problem\n"
+"or Bacula will not be able to write multiple Jobs to \n"
+"the tape.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1470
+#, c-format
+msgid "Bad status from fsf. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1474
+msgid "Forward spaced 1 file.\n"
+msgstr ""
+
+#: src/stored/btape.c:1477
+#, c-format
+msgid "Forward spaced %d files.\n"
+msgstr ""
+
+#: src/stored/btape.c:1496
+msgid "Forward spaced 1 record.\n"
+msgstr ""
+
+#: src/stored/btape.c:1499
+#, c-format
+msgid "Forward spaced %d records.\n"
+msgstr ""
+
+#: src/stored/btape.c:1533
+#, c-format
+msgid "Wrote one record of %d bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:1535
+msgid "Wrote block to device.\n"
+msgstr ""
+
+#: src/stored/btape.c:1550
+msgid "Enter length to read: "
+msgstr ""
+
+#: src/stored/btape.c:1555
+msgid "Bad length entered, using default of 1024 bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:1564
+#, c-format
+msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1587 src/stored/btape.c:1636
+#, c-format
+msgid "End of tape\n"
+msgstr ""
+
+#: src/stored/btape.c:1592
+#, c-format
+msgid "Starting scan at file %u\n"
+msgstr ""
+
+#: src/stored/btape.c:1597 src/stored/dev.c:1234
+#, c-format
+msgid "read error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/btape.c:1599
+#, c-format
+msgid "Bad status from read %d. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1602 src/stored/btape.c:1616 src/stored/btape.c:1679
+#: src/stored/btape.c:1691 src/stored/btape.c:1704 src/stored/btape.c:1720
+#, c-format
+msgid "1 block of %d bytes in file %d\n"
+msgstr ""
+
+#: src/stored/btape.c:1605 src/stored/btape.c:1619 src/stored/btape.c:1682
+#: src/stored/btape.c:1694 src/stored/btape.c:1707 src/stored/btape.c:1723
+#, c-format
+msgid "%d blocks of %d bytes in file %d\n"
+msgstr ""
+
+#: src/stored/btape.c:1627 src/stored/btape.c:1698
+#, c-format
+msgid "End of File mark.\n"
+msgstr ""
+
+#: src/stored/btape.c:1648 src/stored/btape.c:1751
+#, c-format
+msgid "Total files=%d, blocks=%d, bytes = %s\n"
+msgstr ""
+
+#: src/stored/btape.c:1711
+#, c-format
+msgid "Short block read.\n"
+msgstr ""
+
+#: src/stored/btape.c:1714
+#, c-format
+msgid "Error reading block. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1738
+#, c-format
+msgid ""
+"Blk_block: %u dev_blk=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%"
+"s rlen=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:1760
+#, c-format
+msgid "Device status: %u. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:1788
+msgid ""
+"\n"
+"This command simulates Bacula writing to a tape.\n"
+"It requires either one or two blank tapes, which it\n"
+"will label and write.\n"
+"\n"
+"If you have an autochanger configured, it will use\n"
+"the tapes that are in slots 1 and 2, otherwise, you will\n"
+"be prompted to insert the tapes when necessary.\n"
+"\n"
+"It will print a status approximately\n"
+"every 322 MB, and write an EOF every 3.2 GB.  If you have\n"
+"selected the simple test option, after writing the first tape\n"
+"it will rewind it and re-read the last block written.\n"
+"\n"
+"If you have selected the multiple tape test, when the first tape\n"
+"fills, it will ask for a second, and after writing a few more \n"
+"blocks, it will stop.  Then it will begin re-reading the\n"
+"two tapes.\n"
+"\n"
+"This may take a long time -- hours! ...\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:1805
+msgid ""
+"Do you want to run the simplified test (s) with one tape\n"
+"or the complete multiple tape (m) test: (s/m) "
+msgstr ""
+
+#: src/stored/btape.c:1808
+msgid "Simple test (single tape) selected.\n"
+msgstr ""
+
+#: src/stored/btape.c:1811
+msgid "Multiple tape test selected.\n"
+msgstr ""
+
+#: src/stored/btape.c:1827
+msgid "Rewind failed.\n"
+msgstr ""
+
+#: src/stored/btape.c:1830
+msgid "Write EOF failed.\n"
+msgstr ""
+
+#: src/stored/btape.c:1857
+msgid "Wrote Start of Session label.\n"
+msgstr ""
+
+#: src/stored/btape.c:1886
+msgid "Begin writing Bacula records to tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:1888
+msgid "Begin writing Bacula records to first tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:1928
+#, c-format
+msgid "Wrote blk_block=%u, dev_blk_num=%u VolBytes=%s rate=%.1f KB/s\n"
+msgstr ""
+
+#: src/stored/btape.c:1935
+msgid "Flush block, write EOF\n"
+msgstr ""
+
+#: src/stored/btape.c:1946
+msgid "Not OK\n"
+msgstr ""
+
+#: src/stored/btape.c:1974
+msgid "Set ok=false after write_block_to_device.\n"
+msgstr ""
+
+#: src/stored/btape.c:1977
+msgid "Wrote End of Session label.\n"
+msgstr ""
+
+#: src/stored/btape.c:2001
+#, c-format
+msgid "Wrote state file last_block_num1=%d last_block_num2=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2005
+#, c-format
+msgid "Could not create state file: %s ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2010
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:2014
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:2053
+msgid ""
+"\n"
+"The state file level has changed. You must redo\n"
+"the fill command.\n"
+msgstr ""
+
+#: src/stored/btape.c:2059
+#, c-format
+msgid ""
+"\n"
+"Could not find the state file: %s ERR=%s\n"
+"You must redo the fill command.\n"
+msgstr ""
+
+#: src/stored/btape.c:2101
+msgid "Mount first tape. Press enter when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2125
+msgid "Reading the first 10000 records.\n"
+msgstr ""
+
+#: src/stored/btape.c:2128 src/stored/btape.c:2195
+#, c-format
+msgid "Reposition from %u:%u to %u:%u\n"
+msgstr ""
+
+#: src/stored/btape.c:2131 src/stored/btape.c:2182 src/stored/btape.c:2198
+#, c-format
+msgid "Reposition error. ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2134
+#, c-format
+msgid "Reading block %u.\n"
+msgstr ""
+
+#: src/stored/btape.c:2136 src/stored/btape.c:2187 src/stored/btape.c:2203
+#, c-format
+msgid "Error reading block: ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2141
+msgid ""
+"\n"
+"The last block on the tape matches. Test succeeded.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2143
+msgid ""
+"\n"
+"The last block of the first tape matches.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2168
+msgid "Mount second tape. Press enter when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2180
+#, c-format
+msgid "Reposition from %u:%u to 0:1\n"
+msgstr ""
+
+#: src/stored/btape.c:2185 src/stored/btape.c:2201
+#, c-format
+msgid "Reading block %d.\n"
+msgstr ""
+
+#: src/stored/btape.c:2191
+msgid ""
+"\n"
+"The first block on the second tape matches.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2207
+msgid ""
+"\n"
+"The last block on the second tape matches. Test succeeded.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2221
+#, c-format
+msgid "ERROR! device at %d:%d count=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2227
+#, c-format
+msgid "1000 records read now at %d:%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2250 src/stored/btape.c:2261 src/stored/btape.c:2309
+msgid "Last block written"
+msgstr ""
+
+#: src/stored/btape.c:2252 src/stored/btape.c:2262
+msgid "Block read back"
+msgstr ""
+
+#: src/stored/btape.c:2253
+#, c-format
+msgid ""
+"\n"
+"\n"
+"The blocks differ at byte %u\n"
+msgstr ""
+
+#: src/stored/btape.c:2254
+msgid ""
+"\n"
+"\n"
+"!!!! The last block written and the block\n"
+"that was read back differ. The test FAILED !!!!\n"
+"This must be corrected before you use Bacula\n"
+"to write multi-tape Volumes.!!!!\n"
+msgstr ""
+
+#: src/stored/btape.c:2293
+#, c-format
+msgid "Last block at: %u:%u this_dev_block_num=%d\n"
+msgstr ""
+
+#: src/stored/btape.c:2307
+#, c-format
+msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
+msgstr ""
+
+#: src/stored/btape.c:2311
+msgid "Block not written"
+msgstr ""
+
+#: src/stored/btape.c:2326
+#, c-format
+msgid "End of tape %d:%d. VolumeCapacity=%s. Write rate = %.1f KB/s\n"
+msgstr ""
+
+#: src/stored/btape.c:2376
+msgid "Test writing blocks of 64512 bytes to tape.\n"
+msgstr ""
+
+#: src/stored/btape.c:2378
+msgid "How many blocks do you want to write? (1000): "
+msgstr ""
+
+#: src/stored/btape.c:2393
+#, c-format
+msgid "Begin writing %d Bacula blocks to tape ...\n"
+msgstr ""
+
+#: src/stored/btape.c:2445
+#, c-format
+msgid "Begin writing raw blocks of %u bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:2465
+#, c-format
+msgid "Write failed at block %u. stat=%d ERR=%s\n"
+msgstr ""
+
+#: src/stored/btape.c:2495
+#, c-format
+msgid "Begin writing Bacula blocks of %u bytes.\n"
+msgstr ""
+
+#: src/stored/btape.c:2514
+#, c-format
+msgid "Write failed at block %u.\n"
+msgstr ""
+
+#: src/stored/btape.c:2521
+msgid "autochanger"
+msgstr ""
+
+#: src/stored/btape.c:2521
+msgid "test autochanger"
+msgstr ""
+
+#: src/stored/btape.c:2522
+msgid "bsf"
+msgstr ""
+
+#: src/stored/btape.c:2522
+msgid "backspace file"
+msgstr ""
+
+#: src/stored/btape.c:2523
+msgid "bsr"
+msgstr ""
+
+#: src/stored/btape.c:2523
+msgid "backspace record"
+msgstr ""
+
+#: src/stored/btape.c:2524
+msgid "bfill"
+msgstr ""
+
+#: src/stored/btape.c:2524
+msgid "fill tape using Bacula writes"
+msgstr ""
+
+#: src/stored/btape.c:2525
+msgid "cap"
+msgstr ""
+
+#: src/stored/btape.c:2525
+msgid "list device capabilities"
+msgstr ""
+
+#: src/stored/btape.c:2526
+msgid "clear"
+msgstr ""
+
+#: src/stored/btape.c:2526
+msgid "clear tape errors"
+msgstr ""
+
+#: src/stored/btape.c:2527
+msgid "eod"
+msgstr ""
+
+#: src/stored/btape.c:2527
+msgid "go to end of Bacula data for append"
+msgstr ""
+
+#: src/stored/btape.c:2528
+msgid "eom"
+msgstr ""
+
+#: src/stored/btape.c:2528
+msgid "go to the physical end of medium"
+msgstr ""
+
+#: src/stored/btape.c:2529
+msgid "fill"
+msgstr ""
+
+#: src/stored/btape.c:2529
+msgid "fill tape, write onto second volume"
+msgstr ""
+
+#: src/stored/btape.c:2530
+msgid "unfill"
+msgstr ""
+
+#: src/stored/btape.c:2530
+msgid "read filled tape"
+msgstr ""
+
+#: src/stored/btape.c:2531
+msgid "fsf"
+msgstr ""
+
+#: src/stored/btape.c:2531
+msgid "forward space a file"
+msgstr ""
+
+#: src/stored/btape.c:2532
+msgid "fsr"
+msgstr ""
+
+#: src/stored/btape.c:2532
+msgid "forward space a record"
+msgstr ""
+
+#: src/stored/btape.c:2534
+msgid "write a Bacula label to the tape"
+msgstr ""
+
+#: src/stored/btape.c:2535
+msgid "load"
+msgstr ""
+
+#: src/stored/btape.c:2535
+msgid "load a tape"
+msgstr ""
+
+#: src/stored/btape.c:2536
+msgid "quit btape"
+msgstr ""
+
+#: src/stored/btape.c:2537
+msgid "rawfill"
+msgstr ""
+
+#: src/stored/btape.c:2537
+msgid "use write() to fill tape"
+msgstr ""
+
+#: src/stored/btape.c:2538
+msgid "readlabel"
+msgstr ""
+
+#: src/stored/btape.c:2538
+msgid "read and print the Bacula tape label"
+msgstr ""
+
+#: src/stored/btape.c:2539
+msgid "rectest"
+msgstr ""
+
+#: src/stored/btape.c:2539
+msgid "test record handling functions"
+msgstr ""
+
+#: src/stored/btape.c:2540
+msgid "rewind"
+msgstr ""
+
+#: src/stored/btape.c:2540
+msgid "rewind the tape"
+msgstr ""
+
+#: src/stored/btape.c:2541
+msgid "read() tape block by block to EOT and report"
+msgstr ""
+
+#: src/stored/btape.c:2542
+msgid "scanblocks"
+msgstr ""
+
+#: src/stored/btape.c:2542
+msgid "Bacula read block by block to EOT and report"
+msgstr ""
+
+#: src/stored/btape.c:2543
+msgid "print tape status"
+msgstr ""
+
+#: src/stored/btape.c:2544
+msgid "test"
+msgstr ""
+
+#: src/stored/btape.c:2544
+msgid "General test Bacula tape functions"
+msgstr ""
+
+#: src/stored/btape.c:2545
+msgid "weof"
+msgstr ""
+
+#: src/stored/btape.c:2545
+msgid "write an EOF on the tape"
+msgstr ""
+
+#: src/stored/btape.c:2546
+msgid "wr"
+msgstr ""
+
+#: src/stored/btape.c:2546
+msgid "write a single Bacula block"
+msgstr ""
+
+#: src/stored/btape.c:2547
+msgid "rr"
+msgstr ""
+
+#: src/stored/btape.c:2547
+msgid "read a single record"
+msgstr ""
+
+#: src/stored/btape.c:2548
+msgid "qfill"
+msgstr ""
+
+#: src/stored/btape.c:2548
+msgid "quick fill command"
+msgstr ""
+
+#: src/stored/btape.c:2569
+#, c-format
+msgid "%s is an illegal command\n"
+msgstr ""
+
+#: src/stored/btape.c:2579
+#, c-format
+msgid "Interactive commands:\n"
+msgstr ""
+
+#: src/stored/btape.c:2589
+#, c-format
+msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: btape <options> <device_name>\n"
+"       -b <file>   specify bootstrap file\n"
+"       -c <file>   set configuration file to file\n"
+"       -d <nn>     set debug level to nn\n"
+"       -p          proceed inspite of I/O errors\n"
+"       -s          turn off signals\n"
+"       -v          be verbose\n"
+"       -?          print this message.\n"
+"\n"
+msgstr ""
+
+#: src/stored/btape.c:2680
+#, c-format
+msgid "Mount second Volume on device %s and press return when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2707
+#, c-format
+msgid "Mount blank Volume on device %s and press return when ready: "
+msgstr ""
+
+#: src/stored/btape.c:2725
+#, c-format
+msgid "End of Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/btape.c:2737
+#, c-format
+msgid "Read block=%u, VolBytes=%s rate=%.1f KB/s\n"
+msgstr ""
+
+#: src/stored/btape.c:2752 src/stored/mount.c:493
+#, c-format
+msgid "Cannot open Dev=%s, Vol=%s\n"
+msgstr ""
+
+#: src/stored/butil.c:46
+msgid "Nohdr,"
+msgstr ""
+
+#: src/stored/butil.c:49
+msgid "partial,"
+msgstr ""
+
+#: src/stored/butil.c:52
+msgid "empty,"
+msgstr ""
+
+#: src/stored/butil.c:55
+msgid "Nomatch,"
+msgstr ""
+
+#: src/stored/butil.c:58
+msgid "cont,"
+msgstr ""
+
+#: src/stored/butil.c:128
+msgid "Volume name or names is too long. Please use a .bsr file.\n"
+msgstr ""
+
+#: src/stored/butil.c:148
+#, c-format
+msgid "Cannot find device \"%s\" in config file %s.\n"
+msgstr ""
+
+#: src/stored/butil.c:155
+#, c-format
+msgid "Cannot init device %s\n"
+msgstr ""
+
+#: src/stored/butil.c:174
+#, c-format
+msgid "Cannot open %s\n"
+msgstr ""
+
+#: src/stored/butil.c:253
+#, c-format
+msgid "Could not find device \"%s\" in config file %s.\n"
+msgstr ""
+
+#: src/stored/butil.c:258
+#, c-format
+msgid "Using device: \"%s\" for reading.\n"
+msgstr ""
+
+#: src/stored/butil.c:261
+#, c-format
+msgid "Using device: \"%s\" for writing.\n"
+msgstr ""
+
+#: src/stored/butil.c:277
+msgid "Unexpected End of Data\n"
+msgstr ""
+
+#: src/stored/butil.c:279
+msgid "Unexpected End of Tape\n"
+msgstr ""
+
+#: src/stored/butil.c:281
+msgid "Unexpected End of File\n"
+msgstr ""
+
+#: src/stored/butil.c:283
+msgid "Tape Door is Open\n"
+msgstr ""
+
+#: src/stored/butil.c:285
+msgid "Unexpected Tape is Off-line\n"
+msgstr ""
+
+#: src/stored/dev.c:110
+#, c-format
+msgid "Unable to stat device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:125
+#, c-format
+msgid ""
+"%s is an unknown device type. Must be tape or directory\n"
+" or have RequiresMount=yes for DVD. st_mode=%x\n"
+msgstr ""
+
+#: src/stored/dev.c:183
+#, c-format
+msgid "Unable to stat mount point %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:188
+msgid ""
+"Mount and unmount commands must defined for a device which requires mount.\n"
+msgstr ""
+
+#: src/stored/dev.c:191
+msgid "Write part command must be defined for a device which requires mount.\n"
+msgstr ""
+
+#: src/stored/dev.c:197
+#, c-format
+msgid "Block size %u on device %s is too large, using default %u\n"
+msgstr ""
+
+#: src/stored/dev.c:202
+#, c-format
+msgid "Max block size %u not multiple of device %s block size.\n"
+msgstr ""
+
+#: src/stored/dev.c:218 src/stored/dev.c:224
+#, c-format
+msgid "Unable to init cond variable: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:310
+msgid "Illegal mode given to open dev.\n"
+msgstr ""
+
+#: src/stored/dev.c:372 src/stored/device.c:302
+#, c-format
+msgid "Unable to open device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:392
+#, c-format
+msgid "fcntl error. ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:430 src/stored/dev.c:489
+#, c-format
+msgid "Could not open file device %s. No Volume name given.\n"
+msgstr ""
+
+#: src/stored/dev.c:455 src/stored/dev.c:569
+#, c-format
+msgid "Could not open: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:514
+#, c-format
+msgid ""
+"The media in the device %s is not empty, please blank it before writing "
+"anything to it.\n"
+msgstr ""
+
+#: src/stored/dev.c:530
+#, c-format
+msgid "There is no valid media in the device %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:537
+#, c-format
+msgid "Could not mount device %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:595
+#, c-format
+msgid "Could not fstat: %s, ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:648
+#, c-format
+msgid "Bad call to rewind_dev. Device %s not open\n"
+msgstr ""
+
+#: src/stored/dev.c:677
+#, c-format
+msgid "Rewind error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:687 src/stored/dev.c:800 src/stored/dev.c:937
+#: src/stored/dev.c:1462
+#, c-format
+msgid "lseek_dev error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:727
+msgid "unknown blocked code"
+msgstr ""
+
+#: src/stored/dev.c:770
+#, c-format
+msgid "Bad call to eod_dev. Device %s not open\n"
+msgstr ""
+
+#: src/stored/dev.c:836
+#, c-format
+msgid "ioctl MTEOM error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:844 src/stored/dev.c:977
+#, c-format
+msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:923
+msgid "Bad device call. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:936
+#, c-format
+msgid "Seek error: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:972
+msgid " Bacula status:"
+msgstr ""
+
+#: src/stored/dev.c:973 src/stored/dev.c:1022 src/stored/dev.c:1024
+#, c-format
+msgid " file=%d block=%d\n"
+msgstr ""
+
+#: src/stored/dev.c:981
+msgid " Device status:"
+msgstr ""
+
+#: src/stored/dev.c:1046
+msgid "Bad call to load_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1057 src/stored/dev.c:1070
+#, c-format
+msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1089
+msgid "Bad call to offline_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1112
+#, c-format
+msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1153
+msgid "Bad call to fsf_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1163 src/stored/dev.c:1284
+#, c-format
+msgid "Device %s at End of Tape.\n"
+msgstr ""
+
+#: src/stored/dev.c:1188 src/stored/dev.c:1264
+#, c-format
+msgid "ioctl MTFSF error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1313
+msgid "Bad call to bsf_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1319
+#, c-format
+msgid "Device %s cannot BSF because it is not a tape.\n"
+msgstr ""
+
+#: src/stored/dev.c:1334
+#, c-format
+msgid "ioctl MTBSF error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1354
+msgid "Bad call to fsr. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1363
+#, c-format
+msgid "ioctl MTFSR not permitted on %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1391
+#, c-format
+msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1411
+msgid "Bad call to bsr_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1421
+#, c-format
+msgid "ioctl MTBSR not permitted on %s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1434
+#, c-format
+msgid "ioctl MTBSR error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1451
+msgid "Bad call to reposition_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1519
+msgid "Bad call to weof_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/dev.c:1529
+msgid "Attempt to WEOF on non-appendable Volume\n"
+msgstr ""
+
+#: src/stored/dev.c:1546
+#, c-format
+msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
+msgstr ""
+
+#: src/stored/dev.c:1588
+msgid "Got ENOTTY on read/write!\n"
+msgstr ""
+
+#: src/stored/dev.c:1635
+#, c-format
+msgid "unknown func code %d"
+msgstr ""
+
+#: src/stored/dev.c:1641
+#, c-format
+msgid "I/O function \"%s\" not supported on this device.\n"
+msgstr ""
+
+#: src/stored/dev.c:1779 src/stored/dvd.c:668
+#, c-format
+msgid "Unable to truncate device %s. ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:1818
+msgid "Bad call to term_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/device.c:105
+#, c-format
+msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
+msgstr ""
+
+#: src/stored/device.c:119
+#, c-format
+msgid "New volume \"%s\" mounted on device %s at %s.\n"
+msgstr ""
+
+#: src/stored/device.c:131
+#, c-format
+msgid "write_block_to_device Volume label failed. ERR=%s"
+msgstr ""
+
+#: src/stored/device.c:168
+#, c-format
+msgid "write_block_to_device overflow block failed. ERR=%s"
+msgstr ""
+
+#: src/stored/device.c:304
+#, c-format
+msgid "Unable to open archive %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/device.c:328
+msgid "Bad call to force_close_dev. Device not open\n"
+msgstr ""
+
+#: src/stored/device.c:346
+#, c-format
+msgid "Device write lock failure. ERR=%s\n"
+msgstr ""
+
+#: src/stored/device.c:354
+#, c-format
+msgid "Device write unlock failure. ERR=%s\n"
+msgstr ""
+
+#: src/stored/device.c:373
+#, c-format
+msgid "pthread_cond_wait failure. ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:140
+msgid "Connection request failed.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:149
+#, c-format
+msgid "Invalid connection. Len=%d\n"
+msgstr ""
+
+#: src/stored/dircmd.c:241
+#, c-format
+msgid "3991 Bad setdebug command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:262
+#, c-format
+msgid "3902 Job %s not found.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:279
+#, c-format
+msgid "3000 Job %s marked to be canceled.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:283
+msgid "3903 Error scanning cancel command.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:352 src/stored/dircmd.c:648 src/stored/dircmd.c:712
+#: src/stored/dircmd.c:770 src/stored/dircmd.c:822 src/stored/dircmd.c:860
+#, c-format
+msgid "3999 Device \"%s\" not found\n"
+msgstr ""
+
+#: src/stored/dircmd.c:357
+#, c-format
+msgid "3903 Error scanning label command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:401
+#, c-format
+msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
+msgstr ""
+
+#: src/stored/dircmd.c:407
+msgid "3921 Wrong volume mounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:411
+msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:419 src/stored/dircmd.c:428
+#, c-format
+msgid "3912 Failed to label Volume: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:431
+#, c-format
+msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
+msgstr ""
+
+#: src/stored/dircmd.c:464
+#, c-format
+msgid "3001 Mounted Volume: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:468 src/stored/dircmd.c:896
+#, c-format
+msgid ""
+"3902 Cannot mount Volume on Storage Device %s because:\n"
+"%s"
+msgstr ""
+
+#: src/stored/dircmd.c:491 src/stored/reserve.c:518
+#, c-format
+msgid ""
+"\n"
+"     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:512 src/stored/reserve.c:514
+#, c-format
+msgid ""
+"\n"
+"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
+"does not exist.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:568 src/stored/dircmd.c:616
+#, c-format
+msgid "3901 open device failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:583 src/stored/dircmd.c:607
+#, c-format
+msgid "3001 Device %s is mounted with Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/dircmd.c:586 src/stored/dircmd.c:610 src/stored/dircmd.c:625
+#, c-format
+msgid ""
+"3905 Device %s open but no Bacula volume is mounted.\n"
+"If this is not a blank tape, try unmounting and remounting the Volume.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:595
+#, c-format
+msgid "3001 Device %s is doing acquire.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:600 src/stored/dircmd.c:690
+#, c-format
+msgid "3903 Device %s is being labeled.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:622
+#, c-format
+msgid "3001 Device %s is already mounted with Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/dircmd.c:631
+#, c-format
+msgid "3002 Device %s is mounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:634
+#, c-format
+msgid "3907 %s"
+msgstr ""
+
+#: src/stored/dircmd.c:637
+#, c-format
+msgid "3906 File device %s is always mounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:643
+#, c-format
+msgid "3905 Bizarre wait state %d\n"
+msgstr ""
+
+#: src/stored/dircmd.c:652
+#, c-format
+msgid "3909 Error scanning mount command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:673
+#, c-format
+msgid "3901 Device %s is already unmounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:682
+#, c-format
+msgid "3001 Device %s unmounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:686
+#, c-format
+msgid "3902 Device %s is busy in acquire.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:707
+#, c-format
+msgid "3002 Device %s unmounted.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:717
+#, c-format
+msgid "3907 Error scanning unmount command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:742
+#, c-format
+msgid "3911 Device %s already released.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:749
+#, c-format
+msgid "3912 Device %s waiting for mount.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:753
+#, c-format
+msgid "3913 Device %s is busy in acquire.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:757
+#, c-format
+msgid "3914 Device %s is being labeled.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:765
+#, c-format
+msgid "3012 Device %s released.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:775
+#, c-format
+msgid "3917 Error scanning release command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:808
+#, c-format
+msgid "3995 Device %s is not an autochanger.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:826
+#, c-format
+msgid "3908 Error scanning autocharger list/slots command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:864
+#, c-format
+msgid "3909 Error scanning readlabel command: %s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:892
+#, c-format
+msgid "3001 Volume=%s Slot=%d\n"
+msgstr ""
+
+#: src/stored/dircmd.c:921
+#, c-format
+msgid "3910 Unable to open device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dircmd.c:931
+#, c-format
+msgid "3911 Device %s is busy reading.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:934
+#, c-format
+msgid "3912 Device %s is busy with %d writer(s).\n"
+msgstr ""
+
+#: src/stored/fd_cmds.c:340
+msgid "Error parsing bootstrap file.\n"
+msgstr ""
+
+#: src/stored/job.c:79
+#, c-format
+msgid "Bad Job Command from Director: %s\n"
+msgstr ""
+
+#: src/stored/job.c:189
+#, c-format
+msgid "Job name not found: %s\n"
+msgstr ""
+
+#: src/stored/job.c:200
+#, c-format
+msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
+msgstr ""
+
+#: src/stored/job.c:211
+msgid "Unable to authenticate File daemon\n"
+msgstr ""
+
+#: src/stored/job.c:338
+msgid "In free_jcr(), but still attached to device!!!!\n"
+msgstr ""
+
+#: src/stored/label.c:74
+msgid "BAD call to read_dev_volume_label\n"
+msgstr ""
+
+#: src/stored/label.c:79 src/stored/label.c:120 src/stored/label.c:208
+#, c-format
+msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
+msgstr ""
+
+#: src/stored/label.c:86 src/stored/label.c:123 src/stored/label.c:195
+#, c-format
+msgid "Too many tries: %s"
+msgstr ""
+
+#: src/stored/label.c:102
+#, c-format
+msgid "Couldn't rewind device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:140
+#, c-format
+msgid ""
+"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
+msgstr ""
+
+#: src/stored/label.c:145
+msgid "Could not read Volume label from block.\n"
+msgstr ""
+
+#: src/stored/label.c:148
+#, c-format
+msgid "Could not unserialize Volume label: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:153
+#, c-format
+msgid "Volume Header Id bad: %s\n"
+msgstr ""
+
+#: src/stored/label.c:180
+#, c-format
+msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
+msgstr ""
+
+#: src/stored/label.c:191
+#, c-format
+msgid "Volume on %s has bad Bacula label type: %x\n"
+msgstr ""
+
+#: src/stored/label.c:272
+#, c-format
+msgid "Cannot write Volume label to block for device %s\n"
+msgstr ""
+
+#: src/stored/label.c:393
+#, c-format
+msgid "Rewind error on device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:398
+#, c-format
+msgid "Truncate error on device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:420
+#, c-format
+msgid "Unable to write device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/label.c:448
+#, c-format
+msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
+msgstr ""
+
+#: src/stored/label.c:451
+#, c-format
+msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
+msgstr ""
+
+#: src/stored/label.c:648
+#, c-format
+msgid "Bad session label = %d\n"
+msgstr ""
+
+#: src/stored/label.c:666 src/stored/label.c:673
+#, c-format
+msgid "Error writing Session label to %s: %s\n"
+msgstr ""
+
+#: src/stored/label.c:707
+#, c-format
+msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
+msgstr ""
+
+#: src/stored/label.c:834
+#, c-format
+msgid "Unknown %d"
+msgstr ""
+
+#: src/stored/label.c:838
+#, c-format
+msgid ""
+"\n"
+"Volume Label:\n"
+"Id                : %sVerNo             : %d\n"
+"VolName           : %s\n"
+"PrevVolName       : %s\n"
+"VolFile           : %d\n"
+"LabelType         : %s\n"
+"LabelSize         : %d\n"
+"PoolName          : %s\n"
+"MediaType         : %s\n"
+"PoolType          : %s\n"
+"HostName          : %s\n"
+msgstr ""
+
+#: src/stored/label.c:860
+#, c-format
+msgid "Date label written: %s\n"
+msgstr ""
+
+#: src/stored/label.c:866
+#, c-format
+msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
+msgstr ""
+
+#: src/stored/label.c:886
+#, c-format
+msgid ""
+"\n"
+"%s Record:\n"
+"JobId             : %d\n"
+"VerNum            : %d\n"
+"PoolName          : %s\n"
+"PoolType          : %s\n"
+"JobName           : %s\n"
+"ClientName        : %s\n"
+msgstr ""
+
+#: src/stored/label.c:899
+#, c-format
+msgid ""
+"Job (unique name) : %s\n"
+"FileSet           : %s\n"
+"JobType           : %c\n"
+"JobLevel          : %c\n"
+msgstr ""
+
+#: src/stored/label.c:908
+#, c-format
+msgid ""
+"JobFiles          : %s\n"
+"JobBytes          : %s\n"
+"StartBlock        : %s\n"
+"EndBlock          : %s\n"
+"StartFile         : %s\n"
+"EndFile           : %s\n"
+"JobErrors         : %s\n"
+"JobStatus         : %c\n"
+msgstr ""
+
+#: src/stored/label.c:929
+#, c-format
+msgid "Date written      : %s\n"
+msgstr ""
+
+#: src/stored/label.c:934
+#, c-format
+msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
+msgstr ""
+
+#: src/stored/label.c:953
+msgid "Fresh Volume"
+msgstr ""
+
+#: src/stored/label.c:965 src/stored/read_record.c:335
+msgid "End of Media"
+msgstr ""
+
+#: src/stored/label.c:968
+msgid "End of Tape"
+msgstr ""
+
+#: src/stored/label.c:988 src/stored/label.c:996 src/stored/label.c:1029
+#, c-format
+msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
+msgstr ""
+
+#: src/stored/label.c:993
+msgid "End of physical tape.\n"
+msgstr ""
+
+#: src/stored/label.c:1008 src/stored/label.c:1017
+#, c-format
+msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
+msgstr ""
+
+#: src/stored/label.c:1010
+#, c-format
+msgid "   Job=%s Date=%s Level=%c Type=%c\n"
+msgstr ""
+
+#: src/stored/label.c:1019
+#, c-format
+msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
+msgstr ""
+
+#: src/stored/mount.c:197 src/stored/mount.c:294
+#, c-format
+msgid "Volume \"%s\" not on device %s.\n"
+msgstr ""
+
+#: src/stored/mount.c:230
+#, c-format
+msgid ""
+"Director wanted Volume \"%s\".\n"
+"    Current Volume \"%s\" not acceptable because:\n"
+"    %s"
+msgstr ""
+
+#: src/stored/mount.c:284
+#, c-format
+msgid "Labeled new Volume \"%s\" on device %s.\n"
+msgstr ""
+
+#: src/stored/mount.c:289
+#, c-format
+msgid "Warning device %s not configured to autolabel Volumes.\n"
+msgstr ""
+
+#: src/stored/mount.c:340
+#, c-format
+msgid "Volume \"%s\" previously written, moving to end of data.\n"
+msgstr ""
+
+#: src/stored/mount.c:343
+#, c-format
+msgid "Unable to position to end of data on device %s: ERR=%s\n"
+msgstr ""
+
+#: src/stored/mount.c:355
+#, c-format
+msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
+msgstr ""
+
+#: src/stored/mount.c:358
+#, c-format
+msgid ""
+"I cannot write on Volume \"%s\" because:\n"
+"The number of files mismatch! Volume=%u Catalog=%u\n"
+msgstr ""
+
+#: src/stored/mount.c:411
+#, c-format
+msgid "Marking Volume \"%s\" in Error in Catalog.\n"
+msgstr ""
+
+#: src/stored/mount.c:427
+#, c-format
+msgid ""
+"Autochanger Volume \"%s\" not found in slot %d.\n"
+"    Setting InChanger to zero in catalog.\n"
+msgstr ""
+
+#: src/stored/mount.c:446
+msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:104 src/stored/parse_bsr.c:108
+#, c-format
+msgid ""
+"Bootstrap file error: %s\n"
+"            : Line %d, col %d of file %s\n"
+"%s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:130
+#, c-format
+msgid "Cannot open bootstrap file %s: %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:260
+#, c-format
+msgid "MediaType %s in bsr at inappropriate place.\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:416
+msgid "JobType not yet implemented\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:424
+msgid "JobLevel not yet implemented\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:626
+#, c-format
+msgid "VolFile     : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:634
+#, c-format
+msgid "VolBlock    : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:644
+#, c-format
+msgid "FileIndex   : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:646
+#, c-format
+msgid "FileIndex   : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:656
+#, c-format
+msgid "JobId       : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:658
+#, c-format
+msgid "JobId       : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:668
+#, c-format
+msgid "SessId      : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:670
+#, c-format
+msgid "SessId      : %u-%u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:679
+#, c-format
+msgid "VolumeName  : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:688
+#, c-format
+msgid "Client      : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:696
+#, c-format
+msgid "Job          : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:704
+#, c-format
+msgid "SessTime    : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:718
+msgid "BSR is NULL\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:722
+#, c-format
+msgid "Next        : 0x%x\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:723
+#, c-format
+msgid "Root bsr    : 0x%x\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:734
+#, c-format
+msgid "Slot        : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:737
+#, c-format
+msgid "count       : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:738
+#, c-format
+msgid "found       : %u\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:741
+#, c-format
+msgid "done        : %s\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:742
+#, c-format
+msgid "positioning : %d\n"
+msgstr ""
+
+#: src/stored/parse_bsr.c:743
 #, c-format
-msgid "Read record failed! ERR=%s\n"
+msgid "fast_reject : %d\n"
+msgstr ""
+
+#: src/stored/read.c:55
+msgid "No Volume names found for restore.\n"
 msgstr ""
 
-#: src/stored/btape.c:1009
+#: src/stored/read.c:109
 #, c-format
-msgid "Block %d re-read correctly.\n"
+msgid ">filed: Error Hdr=%s\n"
+msgstr ""
+
+#: src/stored/read.c:110 src/stored/read.c:125
+#, c-format
+msgid "Error sending to File daemon. ERR=%s\n"
+msgstr ""
+
+#: src/stored/read.c:124
+#, c-format
+msgid "Error sending to FD. ERR=%s\n"
+msgstr ""
+
+#: src/stored/read_record.c:68
+#, c-format
+msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/read_record.c:71
+msgid "End of all volumes.\n"
+msgstr ""
+
+#: src/stored/read_record.c:105
+#, c-format
+msgid "Got EOF at file %u  on device %s, Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/read_record.c:119
+msgid "Did fsr\n"
+msgstr ""
+
+#: src/stored/read_record.c:275
+#, c-format
+msgid "Reposition from (file:block) %u:%u to %u:%u\n"
+msgstr ""
+
+#: src/stored/read_record.c:302
+#, c-format
+msgid "Forward spacing to file:block %u:%u.\n"
+msgstr ""
+
+#: src/stored/read_record.c:328
+msgid "Begin Session"
+msgstr ""
+
+#: src/stored/read_record.c:332
+msgid "End Session"
+msgstr ""
+
+#: src/stored/read_record.c:338
+#, c-format
+msgid "Unknown code %d\n"
+msgstr ""
+
+#: src/stored/record.c:61
+#, c-format
+msgid "unknown: %d"
+msgstr ""
+
+#: src/stored/record.c:332
+msgid "Damaged buffer\n"
+msgstr ""
+
+#: src/stored/spool.c:69
+#, c-format
+msgid ""
+"Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"
+msgstr ""
+
+#: src/stored/spool.c:75
+#, c-format
+msgid "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
+msgstr ""
+
+#: src/stored/spool.c:91
+msgid "Spooling data ...\n"
+msgstr ""
+
+#: src/stored/spool.c:117
+#, c-format
+msgid "Bad return from despool WroteVol=%d\n"
+msgstr ""
+
+#: src/stored/spool.c:150
+#, c-format
+msgid "Open data spool file %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:199
+#, c-format
+msgid "Committing spooled data to Volume. Despooling %s bytes ...\n"
+msgstr ""
+
+#: src/stored/spool.c:203
+#, c-format
+msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
+msgstr ""
+
+#: src/stored/spool.c:257 src/stored/spool.c:431 src/stored/spool.c:469
+#, c-format
+msgid "Ftruncate spool file failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:259
+#, c-format
+msgid "Bad return from ftruncate. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:308
+#, c-format
+msgid "Spool header read error. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:311
+#, c-format
+msgid "Spool read error. Wanted %u bytes, got %d\n"
+msgstr ""
+
+#: src/stored/spool.c:312
+#, c-format
+msgid "Spool header read error. Wanted %u bytes, got %d\n"
+msgstr ""
+
+#: src/stored/spool.c:318 src/stored/spool.c:319
+#, c-format
+msgid "Spool block too big. Max %u bytes, got %u\n"
+msgstr ""
+
+#: src/stored/spool.c:324 src/stored/spool.c:325
+#, c-format
+msgid "Spool data read error. Wanted %u bytes, got %d\n"
+msgstr ""
+
+#: src/stored/spool.c:382
+msgid "User specified spool size reached.\n"
+msgstr ""
+
+#: src/stored/spool.c:384
+msgid "Bad return from despool in write_block.\n"
+msgstr ""
+
+#: src/stored/spool.c:392
+msgid "Spooling data again ...\n"
+msgstr ""
+
+#: src/stored/spool.c:423
+#, c-format
+msgid "Error writing header to spool file. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:437 src/stored/spool.c:475
+msgid "Fatal despooling error."
+msgstr ""
+
+#: src/stored/spool.c:444
+msgid "Retrying after header spooling error failed.\n"
+msgstr ""
+
+#: src/stored/spool.c:458
+#, c-format
+msgid "Error writing data to spool file. ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:485
+msgid "Retrying after data spooling error failed.\n"
+msgstr ""
+
+#: src/stored/spool.c:540 src/stored/spool.c:547
+#, c-format
+msgid "Fseek on attributes file failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:557
+#, c-format
+msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
 msgstr ""
 
-#: src/stored/btape.c:1030
+#: src/stored/spool.c:584
+#, c-format
+msgid "fopen attr spool file %s failed: ERR=%s\n"
+msgstr ""
+
+#: src/stored/status.c:66
+#, c-format
 msgid ""
 "\n"
+"%s Version: %s (%s) %s %s %s\n"
+msgstr ""
+
+#: src/stored/status.c:97
+msgid ""
 "\n"
-"=== Append files test ===\n"
+"Device status:\n"
+msgstr ""
+
+#: src/stored/status.c:99
+#, c-format
+msgid "Autochanger \"%s\" with devices:\n"
+msgstr ""
+
+#: src/stored/status.c:113
+#, c-format
+msgid "Device %s is mounted with Volume \"%s\"\n"
+msgstr ""
+
+#: src/stored/status.c:116
+#, c-format
+msgid "Device %s open but no Bacula volume is mounted.\n"
+msgstr ""
+
+#: src/stored/status.c:126
+#, c-format
+msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
+msgstr ""
+
+#: src/stored/status.c:140
+#, c-format
+msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
+msgstr ""
+
+#: src/stored/status.c:145
+#, c-format
+msgid "    Positioned at File=%s Block=%s\n"
+msgstr ""
+
+#: src/stored/status.c:151
+#, c-format
+msgid "Device %s is not open or does not exist.\n"
+msgstr ""
+
+#: src/stored/status.c:153
+#, c-format
+msgid "Device \"%s\" is not open or does not exist.\n"
+msgstr ""
+
+#: src/stored/status.c:158 src/stored/status.c:165 src/stored/status.c:168
+msgid ""
+"====\n"
 "\n"
-"This test is essential to Bacula.\n"
+msgstr ""
+
+#: src/stored/status.c:159
+msgid "Volume status:\n"
+msgstr ""
+
+#: src/stored/status.c:183
+msgid ""
+"No DEVICE structure.\n"
 "\n"
-"I'm going to write one record  in file 0,\n"
-"                   two records in file 1,\n"
-"             and three records in file 2\n"
+msgstr ""
+
+#: src/stored/status.c:188
+msgid "    Device is BLOCKED. User unmounted.\n"
+msgstr ""
+
+#: src/stored/status.c:191
+msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
+msgstr ""
+
+#: src/stored/status.c:195
+#, c-format
+msgid "    Device is BLOCKED waiting for mount of volume \"%s\".\n"
+msgstr ""
+
+#: src/stored/status.c:198
+msgid "    Device is BLOCKED waiting for media.\n"
+msgstr ""
+
+#: src/stored/status.c:202
+msgid "    Device is being initialized.\n"
+msgstr ""
+
+#: src/stored/status.c:205
+msgid "    Device is blocked labeling a Volume.\n"
+msgstr ""
+
+#: src/stored/status.c:213
+#, c-format
+msgid "    Slot %d is loaded in drive %d.\n"
+msgstr ""
+
+#: src/stored/status.c:216
+#, c-format
+msgid "    Drive %d is not loaded.\n"
+msgstr ""
+
+#: src/stored/status.c:235
+msgid "Device state:\n"
+msgstr ""
+
+#: src/stored/status.c:249
+#, c-format
+msgid ""
+"num_writers=%d JobStatus=%c block=%d\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1054
-msgid "Now moving to end of medium.\n"
+#: src/stored/status.c:253
+#, c-format
+msgid "Archive name: %s Device name: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1056 src/stored/btape.c:1286
+#: src/stored/status.c:255
 #, c-format
-msgid "We should be in file 3. I am at file %d. This is %s\n"
+msgid "File=%u block=%u\n"
 msgstr ""
 
-#: src/stored/btape.c:1063
+#: src/stored/status.c:256
+#, c-format
+msgid "Min block=%u Max block=%u\n"
+msgstr ""
+
+#: src/stored/status.c:272
+#, c-format
+msgid "%s Job %s waiting for Client connection.\n"
+msgstr ""
+
+#: src/stored/status.c:284
+#, c-format
+msgid "%s %s job %s JobId=%d Volume=\"%s\" device=\"%s\"\n"
+msgstr ""
+
+#: src/stored/status.c:303
+#, c-format
+msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
+msgstr ""
+
+#: src/stored/status.c:308
+msgid "    FDSocket closed\n"
+msgstr ""
+
+#: src/stored/status.c:335
+msgid " JobId  Level   Files          Bytes Status   Finished        Name \n"
+msgstr ""
+
+#: src/stored/status.c:469
+msgid "3900 Bad .status command, missing argument.\n"
+msgstr ""
+
+#: src/stored/status.c:494
+msgid "3900 Bad .status command, wrong argument.\n"
+msgstr ""
+
+#: src/stored/stored.c:65
+#, c-format
 msgid ""
+"Copyright (C) 2000-2005 Kern Sibbald.\n"
 "\n"
-"Now the important part, I am going to attempt to append to the tape.\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: stored [options] [-c config_file] [config_file]\n"
+"        -c <file>   use <file> as configuration file\n"
+"        -dnn        set debug level to nn\n"
+"        -f          run in foreground (for debugging)\n"
+"        -g <group>  set groupid to group\n"
+"        -p          proceed despite I/O errors\n"
+"        -s          no signals (for debugging)\n"
+"        -t          test - read config and exit\n"
+"        -u <user>   userid to <user>\n"
+"        -v          verbose user messages\n"
+"        -?          print this message.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1070
-msgid ""
-"Done appending, there should be no I/O errors\n"
-"\n"
+#: src/stored/stored.c:220
+msgid "Volume Session Time is ZERO!\n"
 msgstr ""
 
-#: src/stored/btape.c:1073
-msgid "End scanning the tape.\n"
+#: src/stored/stored.c:233
+#, c-format
+msgid "Unable to create thread. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1074 src/stored/btape.c:1299
+#: src/stored/stored.c:272
 #, c-format
-msgid "We should be in file 4. I am at file %d. This is %s\n"
+msgid "Only one Storage resource permitted in %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1113
-msgid ""
-"\n"
-"\n"
-"=== Autochanger test ===\n"
-"\n"
+#: src/stored/stored.c:277
+#, c-format
+msgid "No Director resource defined in %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1122
-msgid "3301 Issuing autochanger \"loaded\" command.\n"
+#: src/stored/stored.c:282
+#, c-format
+msgid "No Device resource defined in %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1131
+#: src/stored/stored.c:290
 #, c-format
-msgid "3991 Bad autochanger command: %s\n"
+msgid "No Messages resource defined in %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1132
+#: src/stored/stored.c:317
 #, c-format
-msgid "3991 result=\"%s\": ERR=%s\n"
+msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:1146
+#: src/stored/stored.c:323
 #, c-format
-msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
+msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/stored/btape.c:1154
+#: src/stored/stored.c:329
 #, c-format
-msgid "3992 Bad autochanger command: %s\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Storage \"%s\" in %s. At least one CA certificate store is required when "
+"using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/stored/btape.c:1155
+#: src/stored/stored.c:417
 #, c-format
-msgid "3992 result=\"%s\": ERR=%s\n"
+msgid "No Changer Name given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1165
+#: src/stored/stored.c:423
 #, c-format
-msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
+msgid "No Changer Command given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1173
+#: src/stored/stored.c:435
 #, c-format
-msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
+msgid ""
+"Media Type not the same for all devices in changer %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/btape.c:1177
+#: src/stored/stored.c:496
 #, c-format
-msgid "3993 Bad autochanger command: %s\n"
+msgid "Could not initialize %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1178
+#: src/stored/stored.c:509
 #, c-format
-msgid "3993 result=\"%s\": ERR=%s\n"
+msgid "Could not open device %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1244
-msgid ""
-"\n"
-"\n"
-"=== Forward space files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write five files then test forward spacing\n"
-"\n"
+#: src/stored/stored.c:526
+#, c-format
+msgid "Could not mount device %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1269
-msgid "Now forward spacing 1 file.\n"
+#: src/stored/stored_conf.c:188
+#, c-format
+msgid "Warning: no \"%s\" resource (%d) defined.\n"
 msgstr ""
 
-#: src/stored/btape.c:1274
+#: src/stored/stored_conf.c:191
 #, c-format
-msgid "We should be in file 1. I am at file %d. This is %s\n"
+msgid "dump_resource type=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:1281
-msgid "Now forward spacing 2 files.\n"
+#: src/stored/stored_conf.c:307
+#, c-format
+msgid "Warning: unknown resource type %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1294
-msgid "Now forward spacing 4 files.\n"
+#: src/stored/stored_conf.c:496
+#, c-format
+msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
 msgstr ""
 
-#: src/stored/btape.c:1312
-msgid "Now forward spacing 1 more file.\n"
+#: src/stored/stored_conf.c:502
+#, c-format
+msgid "Too many items in \"%s\" resource\n"
 msgstr ""
 
-#: src/stored/btape.c:1316
+#: src/stored/stored_conf.c:536
 #, c-format
-msgid "We should be in file 5. I am at file %d. This is %s\n"
+msgid "Cannot find AutoChanger resource %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1321
+#: src/stored/stored_conf.c:607
+#, c-format
 msgid ""
-"\n"
-"=== End Forward space files test ===\n"
-"\n"
+"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/stored/btape.c:1325
-msgid ""
-"\n"
-"The forward space file test failed.\n"
+#: src/stored/ansi_label.c:83
+#, c-format
+msgid "Read error on device %s in ANSI label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1422
-msgid ""
-"\n"
-"The above Bacula scan should have output identical to what follows.\n"
-"Please double check it ...\n"
-"=== Sample correct output ===\n"
-"1 block of 64448 bytes in file 1\n"
-"End of File mark.\n"
-"2 blocks of 64448 bytes in file 2\n"
-"End of File mark.\n"
-"3 blocks of 64448 bytes in file 3\n"
-"End of File mark.\n"
-"1 block of 64448 bytes in file 4\n"
-"End of File mark.\n"
-"Total files=4, blocks=7, bytes = 451,136\n"
-"=== End sample correct output ===\n"
-"\n"
+#: src/stored/ansi_label.c:93
+msgid "Insane! End of tape while reading ANSI label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1436
-msgid ""
-"If the above scan output is not identical to the\n"
-"sample output, you MUST correct the problem\n"
-"or Bacula will not be able to write multiple Jobs to \n"
-"the tape.\n"
-"\n"
+#: src/stored/ansi_label.c:117
+msgid "No VOL1 label while reading ANSI/IBM label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1515
+#: src/stored/ansi_label.c:137
 #, c-format
-msgid "Wrote one record of %d bytes.\n"
+msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
 msgstr ""
 
-#: src/stored/btape.c:1517
-msgid "Wrote block to device.\n"
+#: src/stored/ansi_label.c:148
+msgid "No HDR1 label while reading ANSI label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1537
-msgid "Bad length entered, using default of 1024 bytes.\n"
+#: src/stored/ansi_label.c:154
+#, c-format
+msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
 msgstr ""
 
-#: src/stored/btape.c:1546
-#, c-format
-msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
+#: src/stored/ansi_label.c:165
+msgid "No HDR2 label while reading ANSI/IBM label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1574
-#, c-format
-msgid "Starting scan at file %u\n"
+#: src/stored/ansi_label.c:179
+msgid "Unknown or bad ANSI/IBM label record.\n"
+msgstr ""
+
+#: src/stored/ansi_label.c:186
+msgid "Too many records in while reading ANSI/IBM label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1663
+#: src/stored/ansi_label.c:285
 #, c-format
-msgid "End of File mark.\n"
+msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
 msgstr ""
 
-#: src/stored/btape.c:1672
+#: src/stored/ansi_label.c:302
 #, c-format
-msgid "Short block read.\n"
+msgid "Could not write ANSI VOL1 label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1675
+#: src/stored/ansi_label.c:340 src/stored/ansi_label.c:369
 #, c-format
-msgid "Error reading block. ERR=%s\n"
+msgid "Could not write ANSI HDR1 label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1903
-msgid "Not OK\n"
+#: src/stored/ansi_label.c:345 src/stored/ansi_label.c:376
+msgid "Could not write ANSI HDR1 label.\n"
 msgstr ""
 
-#: src/stored/btape.c:1931
-msgid "Set ok=false after write_block_to_device.\n"
+#: src/stored/ansi_label.c:381
+#, c-format
+msgid "Error writing EOF to tape. ERR=%s"
 msgstr ""
 
-#: src/stored/btape.c:1934
-msgid "Wrote End of Session label.\n"
+#: src/stored/ansi_label.c:386
+msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
 msgstr ""
 
-#: src/stored/btape.c:1962
+#: src/stored/dvd.c:153
 #, c-format
-msgid "Could not create state file: %s ERR=%s\n"
+msgid "Device %s cannot be mounted. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1966
+#: src/stored/dvd.c:261
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Done filling tape%s at %d:%d. Now beginning re-read of %stape ...\n"
+msgid "Cannot run free space command (%s)\n"
 msgstr ""
 
-#: src/stored/btape.c:2052
-msgid "Mount first tape. Press enter when ready: "
+#: src/stored/dvd.c:322
+#, c-format
+msgid "Error while writing current part to the DVD: %s"
 msgstr ""
 
-#: src/stored/btape.c:2076
-msgid "Reading the first 10000 records.\n"
+#: src/stored/dvd.c:343
+#, c-format
+msgid "Remaining free space %s on %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2079 src/stored/btape.c:2146
+#: src/stored/dvd.c:412
 #, c-format
-msgid "Reposition from %u:%u to %u:%u\n"
+msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2085
+#: src/stored/dvd.c:430
 #, c-format
-msgid "Reading block %u.\n"
+msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2087 src/stored/btape.c:2138 src/stored/btape.c:2154
+#: src/stored/dvd.c:634
 #, c-format
-msgid "Error reading block: ERR=%s\n"
+msgid "Unable to write part %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2092
-msgid ""
-"\n"
-"The last block on the tape matches. Test succeeded.\n"
-"\n"
+#: src/stored/wait.c:178 src/stored/wait.c:236
+#, c-format
+msgid "Job %s waiting to reserve a device.\n"
 msgstr ""
 
-#: src/stored/btape.c:2094
-msgid ""
-"\n"
-"The last block of the first tape matches.\n"
-"\n"
+#: src/stored/pythonsd.c:59
+msgid "SDName"
 msgstr ""
 
-#: src/stored/btape.c:2119
-msgid "Mount second tape. Press enter when ready: "
+#: src/stored/pythonsd.c:202
+msgid "Error in ParseTuple\n"
 msgstr ""
 
-#: src/stored/btape.c:2131
-#, c-format
-msgid "Reposition from %u:%u to 0:1\n"
+#: src/stored/pythonsd.c:218
+msgid "Parse tuple error in job_write\n"
 msgstr ""
 
-#: src/stored/btape.c:2136 src/stored/btape.c:2152
+#: src/stored/pythonsd.c:254
 #, c-format
-msgid "Reading block %d.\n"
+msgid "Error in Python method %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2142
-msgid ""
-"\n"
-"The first block on the second tape matches.\n"
-"\n"
+#: src/stored/reserve.c:344 src/stored/reserve.c:361
+#, c-format
+msgid "Failed command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2158
+#: src/stored/reserve.c:346
+#, c-format
 msgid ""
 "\n"
-"The last block on the second tape matches. Test succeeded.\n"
-"\n"
+"     Device \"%s\" with MediaType \"%s\" requested by DIR not found in SD "
+"Device resources.\n"
 msgstr ""
 
-#: src/stored/btape.c:2201 src/stored/btape.c:2212
-msgid "Last block written"
+#: src/stored/reserve.c:528
+#, c-format
+msgid "3926 Could not get dcr for device: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2203 src/stored/btape.c:2213
-msgid "Block read back"
+#: src/stored/reserve.c:568 src/stored/reserve.c:623
+#, c-format
+msgid "Device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/btape.c:2520
+#: src/stored/reserve.c:576
 #, c-format
-msgid "%s is an illegal command\n"
+msgid "Device %s is busy.\n"
 msgstr ""
 
-#: src/stored/btape.c:2530
+#: src/stored/reserve.c:631
 #, c-format
-msgid "Interactive commands:\n"
+msgid "Device %s is busy writing on another Volume.\n"
 msgstr ""
 
-#: src/stored/btape.c:2541
+#: src/stored/reserve.c:705
 #, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: btape <options> <device_name>\n"
-"       -b <file>   specify bootstrap file\n"
-"       -c <file>   set configuration file to file\n"
-"       -d <nn>     set debug level to nn\n"
-"       -p          proceed inspite of I/O errors\n"
-"       -s          turn off signals\n"
-"       -v          be verbose\n"
-"       -?          print this message.\n"
-"\n"
+msgid "Wanted Pool \"%s\", but device %s is using Pool \"%s\" .\n"
 msgstr ""
 
-#: src/stored/butil.c:128
-msgid "Volume name or names is too long. Please use a .bsr file.\n"
+#: src/stored/reserve.c:710 src/stored/reserve.c:711
+msgid "Logic error!!!! Should not get here.\n"
 msgstr ""
 
-#: src/stored/butil.c:148
+#: src/tools/bsmtp.c:85
 #, c-format
-msgid "Cannot find device \"%s\" in config file %s.\n"
+msgid "Fatal malformed reply from %s: %s\n"
 msgstr ""
 
-#: src/stored/butil.c:155
+#: src/tools/bsmtp.c:121
 #, c-format
-msgid "Cannot init device %s\n"
+msgid ""
+"\n"
+"Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -c          set the Cc: field\n"
+"       -dnn        set debug level to nn\n"
+"       -f          set the From: field\n"
+"       -h          use mailhost:port as the SMTP server\n"
+"       -s          set the Subject: field\n"
+"       -?          print this message.\n"
+"\n"
 msgstr ""
 
-#: src/stored/butil.c:174
-#, c-format
-msgid "Cannot open %s\n"
+#: src/tools/bsmtp.c:204
+msgid "Fatal error: no recipient given.\n"
 msgstr ""
 
-#: src/stored/butil.c:253
+#: src/tools/bsmtp.c:225
 #, c-format
-msgid "Could not find device \"%s\" in config file %s.\n"
+msgid "Fatal gethostname error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/butil.c:257
+#: src/tools/bsmtp.c:229
 #, c-format
-msgid "Using device: \"%s\" for %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:273
-msgid "Unexpected End of Data\n"
-msgstr ""
-
-#: src/stored/butil.c:275
-msgid "Unexpected End of Tape\n"
+msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/butil.c:277
-msgid "Unexpected End of File\n"
+#: src/tools/bsmtp.c:254
+#, c-format
+msgid "Error unknown mail host \"%s\": ERR=%s\n"
 msgstr ""
-
-#: src/stored/butil.c:279
-msgid "Tape Door is Open\n"
+
+#: src/tools/bsmtp.c:257
+msgid "Retrying connection using \"localhost\".\n"
 msgstr ""
 
-#: src/stored/butil.c:281
-msgid "Unexpected Tape is Off-line\n"
+#: src/tools/bsmtp.c:265
+#, c-format
+msgid "Fatal error: Unknown address family for smtp host: %d\n"
 msgstr ""
 
-#: src/stored/dev.c:110
+#: src/tools/bsmtp.c:273
 #, c-format
-msgid "Unable to stat device %s: ERR=%s\n"
+msgid "Fatal socket error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:125
+#: src/tools/bsmtp.c:277
 #, c-format
-msgid ""
-"%s is an unknown device type. Must be tape or directory\n"
-" or have RequiresMount=yes for DVD. st_mode=%x\n"
+msgid "Fatal connect error to %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:183
+#: src/tools/bsmtp.c:282
 #, c-format
-msgid "Unable to stat mount point %s: ERR=%s\n"
+msgid "Fatal dup error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:188
-msgid ""
-"Mount and unmount commands must defined for a device which requires mount.\n"
+#: src/tools/bsmtp.c:286 src/tools/bsmtp.c:290
+#, c-format
+msgid "Fatal fdopen error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:191
-msgid "Write part command must be defined for a device which requires mount.\n"
+#: src/tools/dbcheck.c:158
+msgid ""
+"Warning skipping the additional parameters for working directory/dbname/user/"
+"password/host.\n"
 msgstr ""
 
-#: src/stored/dev.c:197
+#: src/tools/dbcheck.c:174
 #, c-format
-msgid "Block size %u on device %s is too large, using default %u\n"
+msgid "Error can not find the Catalog name[%s] in the given config file [%s]\n"
 msgstr ""
 
-#: src/stored/dev.c:202
+#: src/tools/dbcheck.c:176
 #, c-format
-msgid "Max block size %u not multiple of device %s block size.\n"
+msgid "Error there is no Catalog section in the given config file [%s]\n"
 msgstr ""
 
-#: src/stored/dev.c:212 src/stored/dev.c:230 src/stored/dev.c:236
-#: src/stored/stored_conf.c:550
-#, c-format
-msgid "Unable to init mutex: ERR=%s\n"
+#: src/tools/dbcheck.c:185
+msgid "Error no Director resource defined.\n"
 msgstr ""
 
-#: src/stored/dev.c:218 src/stored/dev.c:224
-#, c-format
-msgid "Unable to init cond variable: ERR=%s\n"
+#: src/tools/dbcheck.c:199
+msgid "Wrong number of arguments.\n"
 msgstr ""
 
-#: src/stored/dev.c:310
-msgid "Illegal mode given to open dev.\n"
+#: src/tools/dbcheck.c:204
+msgid "Working directory not supplied.\n"
 msgstr ""
 
-#: src/stored/dev.c:372 src/stored/device.c:302
+#: src/tools/dbcheck.c:269
 #, c-format
-msgid "Unable to open device %s: ERR=%s\n"
+msgid "Hello, this is the database check/correct program.\n"
 msgstr ""
 
-#: src/stored/dev.c:430 src/stored/dev.c:489
+#: src/tools/dbcheck.c:271
 #, c-format
-msgid "Could not open file device %s. No Volume name given.\n"
+msgid "Modify database is on."
 msgstr ""
 
-#: src/stored/dev.c:455 src/stored/dev.c:569
+#: src/tools/dbcheck.c:273
 #, c-format
-msgid "Could not open: %s, ERR=%s\n"
+msgid "Modify database is off."
 msgstr ""
 
-#: src/stored/dev.c:514
+#: src/tools/dbcheck.c:275 src/tools/dbcheck.c:336
 #, c-format
-msgid ""
-"The media in the device %s is not empty, please blank it before writing "
-"anything to it.\n"
+msgid " Verbose is on.\n"
 msgstr ""
 
-#: src/stored/dev.c:530
+#: src/tools/dbcheck.c:277 src/tools/dbcheck.c:338
 #, c-format
-msgid "There is no valid media in the device %s.\n"
+msgid " Verbose is off.\n"
 msgstr ""
 
-#: src/stored/dev.c:537
+#: src/tools/dbcheck.c:279
 #, c-format
-msgid "Could not mount device %s.\n"
+msgid "Please select the fuction you want to perform.\n"
 msgstr ""
 
-#: src/stored/dev.c:595
+#: src/tools/dbcheck.c:283
 #, c-format
-msgid "Could not fstat: %s, ERR=%s\n"
+msgid ""
+"\n"
+"     1) Toggle modify database flag\n"
+"     2) Toggle verbose flag\n"
+"     3) Repair bad Filename records\n"
+"     4) Repair bad Path records\n"
+"     5) Eliminate duplicate Filename records\n"
+"     6) Eliminate duplicate Path records\n"
+"     7) Eliminate orphaned Jobmedia records\n"
+"     8) Eliminate orphaned File records\n"
+"     9) Eliminate orphaned Path records\n"
+"    10) Eliminate orphaned Filename records\n"
+"    11) Eliminate orphaned FileSet records\n"
+"    12) Eliminate orphaned Client records\n"
+"    13) Eliminate orphaned Job records\n"
+"    14) Eliminate all Admin records\n"
+"    15) Eliminate all Restore records\n"
+"    16) All (3-15)\n"
+"    17) Quit\n"
 msgstr ""
 
-#: src/stored/dev.c:648
+#: src/tools/dbcheck.c:302
 #, c-format
-msgid "Bad call to rewind_dev. Device %s not open\n"
+msgid ""
+"\n"
+"     1) Toggle modify database flag\n"
+"     2) Toggle verbose flag\n"
+"     3) Check for bad Filename records\n"
+"     4) Check for bad Path records\n"
+"     5) Check for duplicate Filename records\n"
+"     6) Check for duplicate Path records\n"
+"     7) Check for orphaned Jobmedia records\n"
+"     8) Check for orphaned File records\n"
+"     9) Check for orphaned Path records\n"
+"    10) Check for orphaned Filename records\n"
+"    11) Check for orphaned FileSet records\n"
+"    12) Check for orphaned Client records\n"
+"    13) Check for orphaned Job records\n"
+"    14) Check for all Admin records\n"
+"    15) Check for all Restore records\n"
+"    16) All (3-15)\n"
+"    17) Quit\n"
 msgstr ""
 
-#: src/stored/dev.c:677
+#: src/tools/dbcheck.c:322
+msgid "Select function number: "
+msgstr ""
+
+#: src/tools/dbcheck.c:329
 #, c-format
-msgid "Rewind error on %s. ERR=%s.\n"
+msgid "Database will be modified.\n"
 msgstr ""
 
-#: src/stored/dev.c:687 src/stored/dev.c:800 src/stored/dev.c:937
-#: src/stored/dev.c:1462
+#: src/tools/dbcheck.c:331
 #, c-format
-msgid "lseek_dev error on %s. ERR=%s.\n"
+msgid "Database will NOT be modified.\n"
 msgstr ""
 
-#: src/stored/dev.c:770
+#: src/tools/dbcheck.c:421
 #, c-format
-msgid "Bad call to eod_dev. Device %s not open\n"
+msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:836
+#: src/tools/dbcheck.c:429
 #, c-format
-msgid "ioctl MTEOM error on %s. ERR=%s.\n"
+msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
 msgstr ""
 
-#: src/stored/dev.c:844 src/stored/dev.c:977
+#: src/tools/dbcheck.c:436
 #, c-format
-msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
+msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
 msgstr ""
 
-#: src/stored/dev.c:923
-msgid "Bad device call. Device not open\n"
+#: src/tools/dbcheck.c:443
+#, c-format
+msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1046
-msgid "Bad call to load_dev. Device not open\n"
+#: src/tools/dbcheck.c:450
+#, c-format
+msgid "Orphaned ClientId=%s Name=\"%s\"\n"
 msgstr ""
 
-#: src/stored/dev.c:1057 src/stored/dev.c:1070
+#: src/tools/dbcheck.c:503
 #, c-format
-msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
+msgid "Deleting: %s\n"
 msgstr ""
 
-#: src/stored/dev.c:1089
-msgid "Bad call to offline_dev. Device not open\n"
+#: src/tools/dbcheck.c:577
+#, c-format
+msgid "Checking for duplicate Filename entries.\n"
 msgstr ""
 
-#: src/stored/dev.c:1112
+#: src/tools/dbcheck.c:586
 #, c-format
-msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
+msgid "Found %d duplicate Filename records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1153
-msgid "Bad call to fsf_dev. Device not open\n"
+#: src/tools/dbcheck.c:587
+msgid "Print the list? (yes/no): "
 msgstr ""
 
-#: src/stored/dev.c:1163 src/stored/dev.c:1284
+#: src/tools/dbcheck.c:603 src/tools/dbcheck.c:657
 #, c-format
-msgid "Device %s at End of Tape.\n"
+msgid "Found %d for: %s\n"
 msgstr ""
 
-#: src/stored/dev.c:1188 src/stored/dev.c:1264
+#: src/tools/dbcheck.c:630
 #, c-format
-msgid "ioctl MTFSF error on %s. ERR=%s.\n"
+msgid "Checking for duplicate Path entries.\n"
 msgstr ""
 
-#: src/stored/dev.c:1234
+#: src/tools/dbcheck.c:640
 #, c-format
-msgid "read error on %s. ERR=%s.\n"
+msgid "Found %d duplicate Path records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1313
-msgid "Bad call to bsf_dev. Device not open\n"
+#: src/tools/dbcheck.c:641 src/tools/dbcheck.c:691 src/tools/dbcheck.c:723
+#: src/tools/dbcheck.c:755 src/tools/dbcheck.c:783 src/tools/dbcheck.c:811
+#: src/tools/dbcheck.c:849 src/tools/dbcheck.c:887 src/tools/dbcheck.c:918
+#: src/tools/dbcheck.c:948 src/tools/dbcheck.c:982 src/tools/dbcheck.c:1040
+msgid "Print them? (yes/no): "
 msgstr ""
 
-#: src/stored/dev.c:1319
+#: src/tools/dbcheck.c:683
 #, c-format
-msgid "Device %s cannot BSF because it is not a tape.\n"
+msgid "Checking for orphaned JobMedia entries.\n"
 msgstr ""
 
-#: src/stored/dev.c:1334
+#: src/tools/dbcheck.c:690
 #, c-format
-msgid "ioctl MTBSF error on %s. ERR=%s.\n"
+msgid "Found %d orphaned JobMedia records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1354
-msgid "Bad call to fsr. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1363
+#: src/tools/dbcheck.c:703
 #, c-format
-msgid "ioctl MTFSR not permitted on %s.\n"
+msgid "Deleting %d orphaned JobMedia records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1391
+#: src/tools/dbcheck.c:712
 #, c-format
-msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
+msgid "Checking for orphaned File entries. This may take some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1411
-msgid "Bad call to bsr_dev. Device not open\n"
+#: src/tools/dbcheck.c:722
+#, c-format
+msgid "Found %d orphaned File records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1421
+#: src/tools/dbcheck.c:735
 #, c-format
-msgid "ioctl MTBSR not permitted on %s.\n"
+msgid "Deleting %d orphaned File records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1434
+#: src/tools/dbcheck.c:744
 #, c-format
-msgid "ioctl MTBSR error on %s. ERR=%s.\n"
+msgid "Checking for orphaned Path entries. This may take some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1451
-msgid "Bad call to reposition_dev. Device not open\n"
+#: src/tools/dbcheck.c:754
+#, c-format
+msgid "Found %d orphaned Path records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1519
-msgid "Bad call to weof_dev. Device not open\n"
+#: src/tools/dbcheck.c:763
+#, c-format
+msgid "Deleting %d orphaned Path records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1529
-msgid "Attempt to WEOF on non-appendable Volume\n"
+#: src/tools/dbcheck.c:772
+#, c-format
+msgid "Checking for orphaned Filename entries. This may take some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1546
+#: src/tools/dbcheck.c:782
 #, c-format
-msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
+msgid "Found %d orphaned Filename records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1641
+#: src/tools/dbcheck.c:791
 #, c-format
-msgid "I/O function \"%s\" not supported on this device.\n"
+msgid "Deleting %d orphaned Filename records.\n"
 msgstr ""
 
-#: src/stored/dev.c:1779 src/stored/dvd.c:667
+#: src/tools/dbcheck.c:800
 #, c-format
-msgid "Unable to truncate device %s. ERR=%s\n"
+msgid "Checking for orphaned FileSet entries. This takes some time!\n"
 msgstr ""
 
-#: src/stored/dev.c:1818
-msgid "Bad call to term_dev. Device not open\n"
+#: src/tools/dbcheck.c:810
+#, c-format
+msgid "Found %d orphaned FileSet records.\n"
 msgstr ""
 
-#: src/stored/device.c:105
+#: src/tools/dbcheck.c:822
 #, c-format
-msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
+msgid "Deleting %d orphaned FileSet records.\n"
 msgstr ""
 
-#: src/stored/device.c:119
+#: src/tools/dbcheck.c:831
 #, c-format
-msgid "New volume \"%s\" mounted on device %s at %s.\n"
+msgid "Checking for orphaned Client entries.\n"
 msgstr ""
 
-#: src/stored/device.c:328
-msgid "Bad call to force_close_dev. Device not open\n"
+#: src/tools/dbcheck.c:848
+#, c-format
+msgid "Found %d orphaned Client records.\n"
 msgstr ""
 
-#: src/stored/device.c:373
+#: src/tools/dbcheck.c:860
 #, c-format
-msgid "pthread_cond_wait failure. ERR=%s\n"
+msgid "Deleting %d orphaned Client records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:140
-msgid "Connection request failed.\n"
+#: src/tools/dbcheck.c:869
+#, c-format
+msgid "Checking for orphaned Job entries.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:149
+#: src/tools/dbcheck.c:886
 #, c-format
-msgid "Invalid connection. Len=%d\n"
+msgid "Found %d orphaned Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:262
+#: src/tools/dbcheck.c:898
 #, c-format
-msgid "3902 Job %s not found.\n"
+msgid "Deleting %d orphaned Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:279
+#: src/tools/dbcheck.c:908
 #, c-format
-msgid "3000 Job %s marked to be canceled.\n"
+msgid "Checking for Admin Job entries.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:283
-msgid "3903 Error scanning cancel command.\n"
+#: src/tools/dbcheck.c:917
+#, c-format
+msgid "Found %d Admin Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:352 src/stored/dircmd.c:648 src/stored/dircmd.c:712
-#: src/stored/dircmd.c:770 src/stored/dircmd.c:822 src/stored/dircmd.c:860
+#: src/tools/dbcheck.c:929
 #, c-format
-msgid "3999 Device \"%s\" not found\n"
+msgid "Deleting %d Admin Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:357
+#: src/tools/dbcheck.c:938
 #, c-format
-msgid "3903 Error scanning label command: %s\n"
+msgid "Checking for Restore Job entries.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:401
+#: src/tools/dbcheck.c:947
 #, c-format
-msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
+msgid "Found %d Restore Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:407
-msgid "3921 Wrong volume mounted.\n"
+#: src/tools/dbcheck.c:959
+#, c-format
+msgid "Deleting %d Restore Job records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:411
-msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
+#: src/tools/dbcheck.c:972
+#, c-format
+msgid "Checking for Filenames with a trailing slash\n"
 msgstr ""
 
-#: src/stored/dircmd.c:419 src/stored/dircmd.c:428
+#: src/tools/dbcheck.c:981
 #, c-format
-msgid "3912 Failed to label Volume: ERR=%s\n"
+msgid "Found %d bad Filename records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:431
+#: src/tools/dbcheck.c:995 src/tools/dbcheck.c:1053
 #, c-format
-msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
+msgid "Reparing %d bad Filename records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:464
+#: src/tools/dbcheck.c:1030
 #, c-format
-msgid "3001 Mounted Volume: %s\n"
+msgid "Checking for Paths without a trailing slash\n"
 msgstr ""
 
-#: src/stored/dircmd.c:468 src/stored/dircmd.c:896
+#: src/tools/dbcheck.c:1039
 #, c-format
-msgid ""
-"3902 Cannot mount Volume on Storage Device %s because:\n"
-"%s"
+msgid "Found %d bad Path records.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:491 src/stored/reserve.c:518
+#: src/tools/testfind.c:49
 #, c-format
 msgid ""
 "\n"
-"     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
+"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
+"       -a          print extended attributes (Win32 debug)\n"
+"       -dnn        set debug level to nn\n"
+"       -e          specify file of exclude patterns\n"
+"       -i          specify file of include patterns\n"
+"       -           read pattern(s) from stdin\n"
+"       -?          print this message.\n"
+"\n"
+"Patterns are used for file inclusion -- normally directories.\n"
+"Debug level >= 1 prints each file found.\n"
+"Debug level >= 10 prints path/file for catalog.\n"
+"Errors are always printed.\n"
+"Files/paths truncated is the number of files/paths with len > 255.\n"
+"Truncation is only in the catalog.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:512 src/stored/reserve.c:514
+#: src/tools/testfind.c:134 src/tools/testls.c:130
 #, c-format
-msgid ""
-"\n"
-"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
-"does not exist.\n"
+msgid "Could not open include file: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:568 src/stored/dircmd.c:616
+#: src/tools/testfind.c:147 src/tools/testls.c:143
 #, c-format
-msgid "3901 open device failed: ERR=%s\n"
+msgid "Could not open exclude file: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:583 src/stored/dircmd.c:607
+#: src/tools/testfind.c:160
 #, c-format
-msgid "3001 Device %s is mounted with Volume \"%s\"\n"
+msgid ""
+"Total files    : %d\n"
+"Max file length: %d\n"
+"Max path length: %d\n"
+"Files truncated: %d\n"
+"Paths truncated: %d\n"
+"Hard links     : %d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:586 src/stored/dircmd.c:610 src/stored/dircmd.c:625
+#: src/tools/testfind.c:199
 #, c-format
-msgid ""
-"3905 Device %s open but no Bacula volume is mounted.\n"
-"If this is not a blank tape, try unmounting and remounting the Volume.\n"
+msgid "Reg: %s\n"
+msgstr ""
+
+#: src/tools/testfind.c:220
+msgid "\t[will not descend: recursion turned off]"
+msgstr ""
+
+#: src/tools/testfind.c:222
+msgid "\t[will not descend: file system change not allowed]"
+msgstr ""
+
+#: src/tools/testfind.c:224
+msgid "\t[will not descend: disallowed file system]"
 msgstr ""
 
-#: src/stored/dircmd.c:595
+#: src/tools/testfind.c:240 src/tools/testls.c:178
 #, c-format
-msgid "3001 Device %s is doing acquire.\n"
+msgid "Err: Could not access %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:600 src/stored/dircmd.c:690
+#: src/tools/testfind.c:243 src/tools/testls.c:181
 #, c-format
-msgid "3903 Device %s is being labeled.\n"
+msgid "Err: Could not follow ff->link %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:622
+#: src/tools/testfind.c:246 src/tools/testls.c:184
 #, c-format
-msgid "3001 Device %s is already mounted with Volume \"%s\"\n"
+msgid "Err: Could not stat %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:631
+#: src/tools/testfind.c:249 src/tools/testls.c:187
 #, c-format
-msgid "3002 Device %s is mounted.\n"
+msgid "Skip: File not saved. No change. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:637
+#: src/tools/testfind.c:252 src/tools/testls.c:190
 #, c-format
-msgid "3906 File device %s is always mounted.\n"
+msgid "Err: Attempt to backup archive. Not saved. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:643
+#: src/tools/testfind.c:255 src/tools/testls.c:199
 #, c-format
-msgid "3905 Bizarre wait state %d\n"
+msgid "Err: Could not open directory %s: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:652
+#: src/tools/testfind.c:258 src/tools/testls.c:202
 #, c-format
-msgid "3909 Error scanning mount command: %s\n"
+msgid "Err: Unknown file ff->type %d: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:673
+#: src/tools/testfind.c:308
 #, c-format
-msgid "3901 Device %s is already unmounted.\n"
+msgid "===== Filename truncated to 255 chars: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:682
+#: src/tools/testfind.c:325
 #, c-format
-msgid "3001 Device %s unmounted.\n"
+msgid "========== Path name truncated to 255 chars: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:686
+#: src/tools/testfind.c:334
 #, c-format
-msgid "3902 Device %s is busy in acquire.\n"
+msgid "========== Path length is zero. File=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:707
+#: src/tools/testfind.c:337
 #, c-format
-msgid "3002 Device %s unmounted.\n"
+msgid "Path: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:717
+#: src/tools/testls.c:45
 #, c-format
-msgid "3907 Error scanning unmount command: %s\n"
+msgid ""
+"\n"
+"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
+"       -a          print extended attributes (Win32 debug)\n"
+"       -dnn        set debug level to nn\n"
+"       -e          specify file of exclude patterns\n"
+"       -i          specify file of include patterns\n"
+"       -           read pattern(s) from stdin\n"
+"       -?          print this message.\n"
+"\n"
+"Patterns are file inclusion -- normally directories.\n"
+"Debug level >= 1 prints each file found.\n"
+"Debug level >= 10 prints path/file for catalog.\n"
+"Errors always printed.\n"
+"Files/paths truncated is number with len > 255.\n"
+"Truncation is only in catalog.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:742
+#: src/tools/testls.c:193
 #, c-format
-msgid "3911 Device %s already released.\n"
+msgid "Recursion turned off. Directory not entered. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:749
+#: src/tools/testls.c:196
 #, c-format
-msgid "3912 Device %s waiting for mount.\n"
+msgid "Skip: File system change prohibited. Directory not entered. %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:753
+#: src/tools/fstype.c:34
 #, c-format
-msgid "3913 Device %s is busy in acquire.\n"
+msgid ""
+"\n"
+"Usage: fstype [-d debug_level] path ...\n"
+"\n"
+"       Print the file system type a given file/directory is on.\n"
+"       The following options are supported:\n"
+"\n"
+"       -v     print both path and file system type.\n"
+"       -?     print this message.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:757
+#: src/tools/fstype.c:86
 #, c-format
-msgid "3914 Device %s is being labeled.\n"
+msgid "%s: unknown\n"
 msgstr ""
 
-#: src/stored/dircmd.c:765
-#, c-format
-msgid "3012 Device %s released.\n"
+#: src/tray-monitor/authenticate.c:78
+msgid ""
+"Director authorization problem.\n"
+"Most likely the passwords do not agree.\n"
+"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
+"for help.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:775
-#, c-format
-msgid "3917 Error scanning release command: %s\n"
+#: src/tray-monitor/authenticate.c:127
+msgid ""
+"Director and Storage daemon passwords or names not the same.\n"
+"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
+"for help.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:808
-#, c-format
-msgid "3995 Device %s is not an autochanger.\n"
+#: src/tray-monitor/authenticate.c:172
+msgid ""
+"Director and File daemon passwords or names not the same.\n"
+"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
+"for help.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:826
+#: src/tray-monitor/tray-monitor.c:102
 #, c-format
-msgid "3908 Error scanning autocharger list/slots command: %s\n"
+msgid ""
+"Copyright (C) 2000-2004 Kern Sibbald and John Walker\n"
+"Written by Nicolas Boichat (2004)\n"
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     set configuration file to file\n"
+"       -dnn          set debug level to nn\n"
+"       -t            test - read configuration and exit\n"
+"       -?            print this message.\n"
+"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:864
+#: src/tray-monitor/tray-monitor.c:251
 #, c-format
-msgid "3909 Error scanning readlabel command: %s\n"
+msgid ""
+"Error: %d Monitor resource defined in %s. You must define one and only one "
+"Monitor resource.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:892
+#: src/tray-monitor/tray-monitor.c:282
 #, c-format
-msgid "3001 Volume=%s Slot=%d\n"
+msgid ""
+"No Client, Storage nor Director resource defined in %s\n"
+"Without that I don't how to get status from the File, Storage or Director "
+"Daemon :-(\n"
 msgstr ""
 
-#: src/stored/dircmd.c:921
+#: src/tray-monitor/tray-monitor.c:304
 #, c-format
-msgid "3910 Unable to open device %s: ERR=%s\n"
+msgid ""
+"Invalid refresh interval defined in %s\n"
+"This value must be greater or equal to 1 second and less or equal to 10 "
+"minutes (read value: %d).\n"
 msgstr ""
 
-#: src/stored/dircmd.c:931
-#, c-format
-msgid "3911 Device %s is busy reading.\n"
+#: src/tray-monitor/tray-monitor.c:319
+msgid "Open status window..."
 msgstr ""
 
-#: src/stored/dircmd.c:934
-#, c-format
-msgid "3912 Device %s is busy with %d writer(s).\n"
+#: src/tray-monitor/tray-monitor.c:325
+msgid "Exit"
 msgstr ""
 
-#: src/stored/fd_cmds.c:340
-msgid "Error parsing bootstrap file.\n"
+#: src/tray-monitor/tray-monitor.c:337
+msgid "Bacula tray monitor"
 msgstr ""
 
-#: src/stored/job.c:79
-#, c-format
-msgid "Bad Job Command from Director: %s\n"
+#: src/tray-monitor/tray-monitor.c:362
+msgid " (DIR)"
 msgstr ""
 
-#: src/stored/job.c:189
-#, c-format
-msgid "Job name not found: %s\n"
+#: src/tray-monitor/tray-monitor.c:366
+msgid " (FD)"
 msgstr ""
 
-#: src/stored/job.c:211
-msgid "Unable to authenticate File daemon\n"
+#: src/tray-monitor/tray-monitor.c:370
+msgid " (SD)"
 msgstr ""
 
-#: src/stored/job.c:338
-msgid "In free_jcr(), but still attached to device!!!!\n"
+#: src/tray-monitor/tray-monitor.c:383
+msgid "Unknown status."
 msgstr ""
 
-#: src/stored/label.c:74
-msgid "BAD call to read_dev_volume_label\n"
+#: src/tray-monitor/tray-monitor.c:424
+msgid "Refresh interval in seconds: "
 msgstr ""
 
-#: src/stored/label.c:79 src/stored/label.c:120 src/stored/label.c:208
+#: src/tray-monitor/tray-monitor.c:432
+msgid "Refresh now"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:436
+msgid "About"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:440
+msgid "Close"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:460
 #, c-format
-msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
+msgid "Disconnecting from Director %s:%d\n"
 msgstr ""
 
-#: src/stored/label.c:102
+#: src/tray-monitor/tray-monitor.c:463
 #, c-format
-msgid "Couldn't rewind device %s: ERR=%s\n"
+msgid "Disconnecting from Client %s:%d\n"
 msgstr ""
 
-#: src/stored/label.c:140
+#: src/tray-monitor/tray-monitor.c:466
 #, c-format
+msgid "Disconnecting from Storage %s:%d\n"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:502 src/tray-monitor/tray-monitor.c:512
+msgid "Bacula Tray Monitor"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:503 src/tray-monitor/tray-monitor.c:513
 msgid ""
-"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
+"Copyright (C) 2004 Kern Sibbald and John Walker\n"
+"Written by Nicolas Boichat\n"
 msgstr ""
 
-#: src/stored/label.c:145
-msgid "Could not read Volume label from block.\n"
+#: src/tray-monitor/tray-monitor.c:505
+msgid "Version"
 msgstr ""
 
-#: src/stored/label.c:148
+#: src/tray-monitor/tray-monitor.c:509
 #, c-format
-msgid "Could not unserialize Volume label: ERR=%s\n"
+msgid ""
+"%s\n"
+"\n"
+"%s\n"
+"%s %s (%s) %s %s %s"
 msgstr ""
 
-#: src/stored/label.c:153
-#, c-format
-msgid "Volume Header Id bad: %s\n"
+#: src/tray-monitor/tray-monitor.c:515
+msgid "Version:"
 msgstr ""
 
-#: src/stored/label.c:180
+#: src/tray-monitor/tray-monitor.c:583
 #, c-format
-msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
+msgid "Error, currentitem is not a Client or a Storage..\n"
 msgstr ""
 
-#: src/stored/label.c:191
+#: src/tray-monitor/tray-monitor.c:656
 #, c-format
-msgid "Volume on %s has bad Bacula label type: %x\n"
+msgid ""
+"Current job: %s\n"
+"Last job: %s"
 msgstr ""
 
-#: src/stored/label.c:272
+#: src/tray-monitor/tray-monitor.c:668
 #, c-format
-msgid "Cannot write Volume label to block for device %s\n"
+msgid " (%d errors)"
 msgstr ""
 
-#: src/stored/label.c:393
+#: src/tray-monitor/tray-monitor.c:671
 #, c-format
-msgid "Rewind error on device %s: ERR=%s\n"
+msgid " (%d error)"
 msgstr ""
 
-#: src/stored/label.c:398
-#, c-format
-msgid "Truncate error on device %s: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:708
+msgid "No current job."
 msgstr ""
 
-#: src/stored/label.c:420
-#, c-format
-msgid "Unable to write device %s: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:711
+msgid "No last job."
 msgstr ""
 
-#: src/stored/label.c:448
-#, c-format
-msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
+#: src/tray-monitor/tray-monitor.c:719
+msgid "Job status: Created"
 msgstr ""
 
-#: src/stored/label.c:451
-#, c-format
-msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
+#: src/tray-monitor/tray-monitor.c:724
+msgid "Job status: Running"
 msgstr ""
 
-#: src/stored/label.c:648
-#, c-format
-msgid "Bad session label = %d\n"
+#: src/tray-monitor/tray-monitor.c:728
+msgid "Job status: Blocked"
 msgstr ""
 
-#: src/stored/label.c:666 src/stored/label.c:673
-#, c-format
-msgid "Error writing Session label to %s: %s\n"
+#: src/tray-monitor/tray-monitor.c:733
+msgid "Job status: Terminated"
 msgstr ""
 
-#: src/stored/label.c:707
-#, c-format
-msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
+#: src/tray-monitor/tray-monitor.c:738
+msgid "Job status: Terminated in error"
 msgstr ""
 
-#: src/stored/label.c:929
-#, c-format
-msgid "Date written      : %s\n"
+#: src/tray-monitor/tray-monitor.c:744
+msgid "Job status: Error"
 msgstr ""
 
-#: src/stored/label.c:934
-#, c-format
-msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
+#: src/tray-monitor/tray-monitor.c:748
+msgid "Job status: Fatal error"
 msgstr ""
 
-#: src/stored/label.c:954
-msgid "Fresh Volume"
+#: src/tray-monitor/tray-monitor.c:753
+msgid "Job status: Verify differences"
 msgstr ""
 
-#: src/stored/label.c:960
-msgid "Begin Job Session"
+#: src/tray-monitor/tray-monitor.c:758
+msgid "Job status: Canceled"
 msgstr ""
 
-#: src/stored/label.c:963
-msgid "End Job Session"
+#: src/tray-monitor/tray-monitor.c:763
+msgid "Job status: Waiting on File daemon"
 msgstr ""
 
-#: src/stored/label.c:966
-msgid "End of Media"
+#: src/tray-monitor/tray-monitor.c:768
+msgid "Job status: Waiting on the Storage daemon"
 msgstr ""
 
-#: src/stored/label.c:972
-msgid "Unknown"
+#: src/tray-monitor/tray-monitor.c:773
+msgid "Job status: Waiting for new media"
 msgstr ""
 
-#: src/stored/label.c:994
-msgid "End of physical tape.\n"
+#: src/tray-monitor/tray-monitor.c:778
+msgid "Job status: Waiting for Mount"
 msgstr ""
 
-#: src/stored/mount.c:197 src/stored/mount.c:294
-#, c-format
-msgid "Volume \"%s\" not on device %s.\n"
+#: src/tray-monitor/tray-monitor.c:783
+msgid "Job status: Waiting for storage resource"
 msgstr ""
 
-#: src/stored/mount.c:230
+#: src/tray-monitor/tray-monitor.c:788
+msgid "Job status: Waiting for job resource"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:793
+msgid "Job status: Waiting for Client resource"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:798
+msgid "Job status: Waiting for maximum jobs"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:803
+msgid "Job status: Waiting for start time"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:808
+msgid "Job status: Waiting for higher priority jobs to finish"
+msgstr ""
+
+#: src/tray-monitor/tray-monitor.c:813
 #, c-format
-msgid ""
-"Director wanted Volume \"%s\".\n"
-"    Current Volume \"%s\" not acceptable because:\n"
-"    %s"
+msgid "Unknown job status %c."
 msgstr ""
 
-#: src/stored/mount.c:284
+#: src/tray-monitor/tray-monitor.c:814
 #, c-format
-msgid "Labeled new Volume \"%s\" on device %s.\n"
+msgid "Job status: Unknown(%c)"
 msgstr ""
 
-#: src/stored/mount.c:289
+#: src/tray-monitor/tray-monitor.c:821
 #, c-format
-msgid "Warning device %s not configured to autolabel Volumes.\n"
+msgid "Bad scan : '%s' %d\n"
 msgstr ""
 
-#: src/stored/mount.c:340
+#: src/tray-monitor/tray-monitor.c:859
 #, c-format
-msgid "Volume \"%s\" previously written, moving to end of data.\n"
+msgid "Connecting to Director %s:%d"
 msgstr ""
 
-#: src/stored/mount.c:343
+#: src/tray-monitor/tray-monitor.c:865
 #, c-format
-msgid "Unable to position to end of data on device %s: ERR=%s\n"
+msgid "Connecting to Client %s:%d\n"
 msgstr ""
 
-#: src/stored/mount.c:355
+#: src/tray-monitor/tray-monitor.c:866
 #, c-format
-msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
+msgid "Connecting to Client %s:%d"
 msgstr ""
 
-#: src/stored/mount.c:358
+#: src/tray-monitor/tray-monitor.c:872
 #, c-format
-msgid ""
-"I cannot write on Volume \"%s\" because:\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
+msgid "Connecting to Storage %s:%d\n"
 msgstr ""
 
-#: src/stored/mount.c:411
+#: src/tray-monitor/tray-monitor.c:873
 #, c-format
-msgid "Marking Volume \"%s\" in Error in Catalog.\n"
+msgid "Connecting to Storage %s:%d"
 msgstr ""
 
-#: src/stored/mount.c:427
+#: src/tray-monitor/tray-monitor.c:878 src/tray-monitor/tray-monitor.c:916
 #, c-format
-msgid ""
-"Autochanger Volume \"%s\" not found in slot %d.\n"
-"    Setting InChanger to zero in catalog.\n"
+msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:104 src/stored/parse_bsr.c:108
-#, c-format
-msgid ""
-"Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n"
-"%s\n"
+#: src/tray-monitor/tray-monitor.c:884
+msgid "Cannot connect to daemon.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:130
-#, c-format
-msgid "Cannot open bootstrap file %s: %s\n"
+#: src/tray-monitor/tray-monitor.c:885
+msgid "Cannot connect to daemon."
 msgstr ""
 
-#: src/stored/parse_bsr.c:260
+#: src/tray-monitor/tray-monitor.c:897
 #, c-format
-msgid "MediaType %s in bsr at inappropriate place.\n"
+msgid "Authentication error : %s"
 msgstr ""
 
-#: src/stored/read.c:55
-msgid "No Volume names found for restore.\n"
+#: src/tray-monitor/tray-monitor.c:904
+msgid "Opened connection with Director daemon.\n"
 msgstr ""
 
-#: src/stored/read.c:110 src/stored/read.c:125
-#, c-format
-msgid "Error sending to File daemon. ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:905
+msgid "Opened connection with Director daemon."
 msgstr ""
 
-#: src/stored/read_record.c:302
-#, c-format
-msgid "Forward spacing to file:block %u:%u.\n"
+#: src/tray-monitor/tray-monitor.c:908
+msgid "Opened connection with File daemon.\n"
 msgstr ""
 
-#: src/stored/spool.c:91
-msgid "Spooling data ...\n"
+#: src/tray-monitor/tray-monitor.c:909
+msgid "Opened connection with File daemon."
 msgstr ""
 
-#: src/stored/spool.c:150
-#, c-format
-msgid "Open data spool file %s failed: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:912
+msgid "Opened connection with Storage daemon.\n"
 msgstr ""
 
-#: src/stored/spool.c:198
-#, c-format
-msgid "%s spooled data to Volume. Despooling %s bytes ...\n"
+#: src/tray-monitor/tray-monitor.c:913
+msgid "Opened connection with Storage daemon."
 msgstr ""
 
-#: src/stored/spool.c:252 src/stored/spool.c:426 src/stored/spool.c:464
-#, c-format
-msgid "Ftruncate spool file failed: ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:948
+msgid "<< Error: BNET_PROMPT signal received. >>\n"
 msgstr ""
 
-#: src/stored/spool.c:303
-#, c-format
-msgid "Spool header read error. ERR=%s\n"
+#: src/tray-monitor/tray-monitor.c:953 src/wx-console/console_thread.cpp:442
+msgid "<< Heartbeat signal received, answered. >>\n"
 msgstr ""
 
-#: src/stored/spool.c:307
+#: src/tray-monitor/tray-monitor.c:957
 #, c-format
-msgid "Spool header read error. Wanted %u bytes, got %d\n"
+msgid "<< Unexpected signal received : %s >>\n"
 msgstr ""
 
-#: src/stored/spool.c:314
-#, c-format
-msgid "Spool block too big. Max %u bytes, got %u\n"
+#: src/tray-monitor/tray-monitor.c:962
+msgid "<ERROR>\n"
 msgstr ""
 
-#: src/stored/spool.c:320
-#, c-format
-msgid "Spool data read error. Wanted %u bytes, got %d\n"
+#: src/tray-monitor/tray-monitor.c:966
+msgid "Error : BNET_HARDEOF or BNET_ERROR"
 msgstr ""
 
-#: src/stored/spool.c:377
-msgid "User specified spool size reached.\n"
+#: src/tray-monitor/tray-monitor.c:972
+msgid "<STOP>\n"
 msgstr ""
 
-#: src/stored/spool.c:387
-msgid "Spooling data again ...\n"
+#: src/tray-monitor/tray-monitor.c:976
+msgid "Error : Connection closed."
 msgstr ""
 
-#: src/stored/spool.c:418
+#: src/tray-monitor/tray_conf.c:161
 #, c-format
-msgid "Error writing header to spool file. ERR=%s\n"
+msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:432 src/stored/spool.c:470
-msgid "Fatal despooling error."
+#: src/tray-monitor/tray_conf.c:167
+#, c-format
+msgid "Director: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:439
-msgid "Retrying after header spooling error failed.\n"
+#: src/tray-monitor/tray_conf.c:171
+#, c-format
+msgid "Client: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:453
+#: src/tray-monitor/tray_conf.c:175
 #, c-format
-msgid "Error writing data to spool file. ERR=%s\n"
+msgid "Storage: name=%s address=%s SDport=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:480
-msgid "Retrying after data spooling error failed.\n"
+#: src/wx-console/authenticate.c:126
+msgid "Bad response to Hello command: ERR="
 msgstr ""
 
-#: src/stored/spool.c:535 src/stored/spool.c:542
+#: src/baconfig.h:52
 #, c-format
-msgid "Fseek on attributes file failed: ERR=%s\n"
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/stored/spool.c:552
-#, c-format
-msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
+#: src/baconfig.h:59
+msgid "*None*"
 msgstr ""
 
-#: src/stored/spool.c:579
+#: src/wx-console/console_thread.cpp:100
 #, c-format
-msgid "fopen attr spool file %s failed: ERR=%s\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Director \"%s\" in config file.\n"
+" At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/stored/status.c:93
+#: src/wx-console/console_thread.cpp:109
 msgid ""
-"\n"
-"Device status:\n"
+"No Director resource defined in config file.\n"
+"Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/stored/status.c:95
+#: src/wx-console/console_thread.cpp:129
 #, c-format
-msgid "Autochanger \"%s\" with devices:\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Console \"%s\" in config file.\n"
 msgstr ""
 
-#: src/stored/status.c:109
-#, c-format
-msgid "Device %s is mounted with Volume \"%s\"\n"
+#: src/wx-console/console_thread.cpp:151
+msgid "Error while initializing windows sockets...\n"
 msgstr ""
 
-#: src/stored/status.c:112
-#, c-format
-msgid "Device %s open but no Bacula volume is mounted.\n"
+#: src/wx-console/console_thread.cpp:166
+msgid "Error while cleaning up windows sockets...\n"
 msgstr ""
 
-#: src/stored/status.c:122
-#, c-format
-msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
+#: src/wx-console/console_thread.cpp:204
+msgid "Error while initializing library."
 msgstr ""
 
-#: src/stored/status.c:136
-#, c-format
-msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
+#: src/wx-console/console_thread.cpp:234
+msgid "Please correct configuration file.\n"
 msgstr ""
 
-#: src/stored/status.c:141
-#, c-format
-msgid "    Positioned at File=%s Block=%s\n"
+#: src/wx-console/console_thread.cpp:267
+msgid "Error : Library not initialized\n"
 msgstr ""
 
-#: src/stored/status.c:147
-#, c-format
-msgid "Device %s is not open or does not exist.\n"
+#: src/wx-console/console_thread.cpp:278
+msgid "Error : No configuration file loaded\n"
 msgstr ""
 
-#: src/stored/status.c:149
-#, c-format
-msgid "Device \"%s\" is not open or does not exist.\n"
+#: src/wx-console/console_thread.cpp:288
+msgid "Connecting...\n"
 msgstr ""
 
-#: src/stored/status.c:184
-msgid "    Device is BLOCKED. User unmounted.\n"
+#: src/wx-console/console_thread.cpp:304
+msgid "Error : No director defined in config file.\n"
 msgstr ""
 
-#: src/stored/status.c:187
-msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
+#: src/wx-console/console_thread.cpp:316
+msgid "Multiple directors found in your config file.\n"
 msgstr ""
 
-#: src/stored/status.c:191
+#: src/wx-console/console_thread.cpp:325
 #, c-format
-msgid "    Device is BLOCKED waiting for mount of volume \"%s\".\n"
+msgid "Please choose a director (1-%s): "
 msgstr ""
 
-#: src/stored/status.c:194
-msgid "    Device is BLOCKED waiting for media.\n"
+#: src/wx-console/console_thread.cpp:397
+msgid "Failed to connect to the director\n"
 msgstr ""
 
-#: src/stored/status.c:198
-msgid "    Device is being initialized.\n"
+#: src/wx-console/console_thread.cpp:407
+msgid "Connected\n"
 msgstr ""
 
-#: src/stored/status.c:201
-msgid "    Device is blocked labeling a Volume.\n"
+#: src/wx-console/console_thread.cpp:445
+msgid "<< Unexpected signal received : "
 msgstr ""
 
-#: src/stored/status.c:209
-#, c-format
-msgid "    Slot %d is loaded in drive %d.\n"
+#: src/wx-console/console_thread.cpp:463
+msgid "Connection terminated\n"
+msgstr ""
+
+#: src/wx-console/main.cpp:96
+msgid "Bacula wx-console"
 msgstr ""
 
-#: src/stored/status.c:212
+#: src/wx-console/main.cpp:101 src/wx-console/wxbmainframe.cpp:248
 #, c-format
-msgid "    Drive %d is not loaded.\n"
+msgid "Welcome to bacula wx-console %s (%s)!\n"
 msgstr ""
 
-#: src/stored/status.c:231
-msgid "Device state:\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:41
+msgid "Config file editor"
 msgstr ""
 
-#: src/stored/status.c:268
-#, c-format
-msgid "%s Job %s waiting for Client connection.\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:57
+msgid "Save and close"
 msgstr ""
 
-#: src/stored/status.c:280
-#, c-format
-msgid "%s %s job %s JobId=%d Volume=\"%s\" device=\"%s\"\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:58
+msgid "Close without saving"
 msgstr ""
 
-#: src/stored/status.c:331
-msgid " JobId  Level   Files          Bytes Status   Finished        Name \n"
+#: src/wx-console/wxbconfigfileeditor.cpp:69
+msgid "# Bacula wx-console Configuration File\n"
 msgstr ""
 
-#: src/stored/stored.c:66
+#: src/wx-console/wxbconfigfileeditor.cpp:100
 #, c-format
-msgid ""
-")\n"
-"\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -dnn        set debug level to nn\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g <group>  set groupid to group\n"
-"        -p          proceed despite I/O errors\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test - read config and exit\n"
-"        -u <user>   userid to <user>\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
+msgid "Unable to write to %s\n"
 msgstr ""
 
-#: src/stored/stored.c:217
-msgid "Volume Session Time is ZERO!\n"
+#: src/wx-console/wxbconfigfileeditor.cpp:101
+msgid "Error while saving"
 msgstr ""
 
-#: src/stored/stored.c:230
-#, c-format
-msgid "Unable to create thread. ERR=%s\n"
+#: src/wx-console/wxbconfigpanel.cpp:184
+msgid "Apply"
 msgstr ""
 
-#: src/stored/stored.c:269
-#, c-format
-msgid "Only one Storage resource permitted in %s\n"
+#: src/wx-console/wxbhistorytextctrl.cpp:61
+#: src/wx-console/wxbhistorytextctrl.cpp:132
+#: src/wx-console/wxbmainframe.cpp:272
+msgid "Type your command below:"
 msgstr ""
 
-#: src/stored/stored.c:274
-#, c-format
-msgid "No Director resource defined in %s. Cannot continue.\n"
+#: src/wx-console/wxbhistorytextctrl.cpp:96
+msgid "Unknown command."
 msgstr ""
 
-#: src/stored/stored.c:279
-#, c-format
-msgid "No Device resource defined in %s. Cannot continue.\n"
+#: src/wx-console/wxbhistorytextctrl.cpp:105
+msgid "Possible completions: "
 msgstr ""
 
-#: src/stored/stored.c:287
-#, c-format
-msgid "No Messages resource defined in %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:258
+#: src/wx-console/wxbrestorepanel.cpp:1861
+#: src/wx-console/wxbrestorepanel.cpp:1890
+msgid "Enter restore mode"
 msgstr ""
 
-#: src/stored/stored.c:314
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
+#: src/wx-console/wxbrestorepanel.cpp:261
+msgid "Cancel restore"
 msgstr ""
 
-#: src/stored/stored.c:320
-#, c-format
-msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
+#: src/wx-console/wxbrestorepanel.cpp:287
+#: src/wx-console/wxbrestorepanel.cpp:341
+msgid "Add"
 msgstr ""
 
-#: src/stored/stored.c:326
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
+#: src/wx-console/wxbrestorepanel.cpp:289
+#: src/wx-console/wxbrestorepanel.cpp:343
+msgid "Remove"
 msgstr ""
 
-#: src/stored/stored.c:414
-#, c-format
-msgid "No Changer Name given for device %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:291
+#: src/wx-console/wxbrestorepanel.cpp:345
+msgid "Refresh"
 msgstr ""
 
-#: src/stored/stored.c:420
-#, c-format
-msgid "No Changer Command given for device %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:310
+msgid "M"
 msgstr ""
 
-#: src/stored/stored.c:432
-#, c-format
-msgid ""
-"Media Type not the same for all devices in changer %s. Cannot continue.\n"
+#: src/wx-console/wxbrestorepanel.cpp:326
+msgid "Perm."
 msgstr ""
 
-#: src/stored/stored.c:493
-#, c-format
-msgid "Could not initialize %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:359
+#: src/wx-console/wxbrestorepanel.cpp:372
+#: src/wx-console/wxbrestorepanel.cpp:524
+#: src/wx-console/wxbrestorepanel.cpp:534
+#: src/wx-console/wxbrestorepanel.cpp:537
+#: src/wx-console/wxbrestorepanel.cpp:1732
+#: src/wx-console/wxbrestorepanel.cpp:1812
+msgid "Job Name"
 msgstr ""
 
-#: src/stored/stored.c:506
-#, c-format
-msgid "Could not open device %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:361
+#: src/wx-console/wxbrestorepanel.cpp:377
+#: src/wx-console/wxbrestorepanel.cpp:476
+#: src/wx-console/wxbrestorepanel.cpp:477
+#: src/wx-console/wxbrestorepanel.cpp:487
+#: src/wx-console/wxbrestorepanel.cpp:488
+#: src/wx-console/wxbrestorepanel.cpp:1101
+#: src/wx-console/wxbrestorepanel.cpp:1768
+#: src/wx-console/wxbrestorepanel.cpp:1827
+msgid "Fileset"
 msgstr ""
 
-#: src/stored/stored.c:523
-#, c-format
-msgid "Could not mount device %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:364
+#: src/wx-console/wxbrestorepanel.cpp:1168
+#: src/wx-console/wxbrestorepanel.cpp:1183
+#: src/wx-console/wxbrestorepanel.cpp:1185
+#: src/wx-console/wxbrestorepanel.cpp:1193
+#: src/wx-console/wxbrestorepanel.cpp:1195
+#: src/wx-console/wxbrestorepanel.cpp:1212
+#: src/wx-console/wxbrestorepanel.cpp:1219
+#: src/wx-console/wxbrestorepanel.cpp:1759
+#: src/wx-console/wxbrestorepanel.cpp:1885
+msgid "Before"
 msgstr ""
 
-#: src/stored/stored_conf.c:188
-#, c-format
-msgid "Warning: no \"%s\" resource (%d) defined.\n"
+#: src/wx-console/wxbrestorepanel.cpp:366
+msgid "Please configure parameters concerning files to restore :"
 msgstr ""
 
-#: src/stored/stored_conf.c:307
-#, c-format
-msgid "Warning: unknown resource type %d\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+#: src/wx-console/wxbrestorepanel.cpp:1820
+msgid "always"
 msgstr ""
 
-#: src/stored/stored_conf.c:496
-#, c-format
-msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+msgid "if newer"
 msgstr ""
 
-#: src/stored/stored_conf.c:502
-#, c-format
-msgid "Too many items in \"%s\" resource\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+msgid "if older"
 msgstr ""
 
-#: src/stored/stored_conf.c:607
-#, c-format
-msgid ""
-"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
+#: src/wx-console/wxbrestorepanel.cpp:375
+#: src/wx-console/wxbrestorepanel.cpp:1823
+msgid "never"
 msgstr ""
 
-#: src/stored/ansi_label.c:83
-#, c-format
-msgid "Read error on device %s in ANSI label. ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:383
+msgid "Please configure parameters concerning files restoration :"
 msgstr ""
 
-#: src/stored/ansi_label.c:93
-msgid "Insane! End of tape while reading ANSI label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:448
+msgid "Getting parameters list."
 msgstr ""
 
-#: src/stored/ansi_label.c:117
-msgid "No VOL1 label while reading ANSI/IBM label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:456
+msgid "Error : no clients returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:148
-msgid "No HDR1 label while reading ANSI label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:480
+msgid "Error : no filesets returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:154
-#, c-format
-msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
+#: src/wx-console/wxbrestorepanel.cpp:504
+msgid "Error : no storage returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:165
-msgid "No HDR2 label while reading ANSI/IBM label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:527
+#: src/wx-console/wxbrestorepanel.cpp:551
+msgid "Error : no jobs returned by the director."
 msgstr ""
 
-#: src/stored/ansi_label.c:179
-msgid "Unknown or bad ANSI/IBM label record.\n"
+#: src/wx-console/wxbrestorepanel.cpp:537
+msgid "RestoreFiles"
 msgstr ""
 
-#: src/stored/ansi_label.c:186
-msgid "Too many records in while reading ANSI/IBM label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:572
+msgid "Please configure your restore parameters."
 msgstr ""
 
-#: src/stored/ansi_label.c:285
-#, c-format
-msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
+#: src/wx-console/wxbrestorepanel.cpp:583
+msgid "Building restore tree..."
 msgstr ""
 
-#: src/stored/ansi_label.c:302
-#, c-format
-msgid "Could not write ANSI VOL1 label. ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:622
+msgid "Error while starting restore: "
 msgstr ""
 
-#: src/stored/ansi_label.c:340 src/stored/ansi_label.c:369
-#, c-format
-msgid "Could not write ANSI HDR1 label. ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:712
+msgid ""
+"Right click on a file or on a directory, or double-click on its mark to add "
+"it to the restore list."
 msgstr ""
 
-#: src/stored/ansi_label.c:345 src/stored/ansi_label.c:376
-msgid "Could not write ANSI HDR1 label.\n"
+#: src/wx-console/wxbrestorepanel.cpp:729
+msgid " files selected to be restored."
 msgstr ""
 
-#: src/stored/ansi_label.c:381
+#: src/wx-console/wxbrestorepanel.cpp:734
+msgid " file selected to be restored."
+msgstr ""
+
+#: src/wx-console/wxbrestorepanel.cpp:741
 #, c-format
-msgid "Error writing EOF to tape. ERR=%s"
+msgid "Please configure your restore (%s files selected to be restored)..."
 msgstr ""
 
-#: src/stored/ansi_label.c:386
-msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
+#: src/wx-console/wxbrestorepanel.cpp:751
+msgid "Restore failed : no file selected.\n"
 msgstr ""
 
-#: src/stored/dvd.c:342
-#, c-format
-msgid "Remaining free space %s on %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:752
+msgid "Restore failed : no file selected."
 msgstr ""
 
-#: src/stored/dvd.c:411
-#, c-format
-msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:762
+msgid "Restoring, please wait..."
 msgstr ""
 
-#: src/stored/dvd.c:429
-#, c-format
-msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:775
+msgid "Job started. JobId="
 msgstr ""
 
-#: src/stored/dvd.c:633
-#, c-format
-msgid "Unable to write part %s: ERR=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:777
+msgid "Restore started, jobid="
 msgstr ""
 
-#: src/stored/wait.c:178 src/stored/wait.c:236
-#, c-format
-msgid "Job %s waiting to reserve a device.\n"
+#: src/wx-console/wxbrestorepanel.cpp:781
+msgid "Job failed."
 msgstr ""
 
-#: src/stored/pythonsd.c:59
-msgid "SDName"
+#: src/wx-console/wxbrestorepanel.cpp:782
+msgid "Restore failed, please look at messages.\n"
 msgstr ""
 
-#: src/stored/reserve.c:344 src/stored/reserve.c:361
-#, c-format
-msgid "Failed command: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:783
+msgid "Restore failed, please look at messages in console."
 msgstr ""
 
-#: src/stored/reserve.c:346
-#, c-format
-msgid ""
-"\n"
-"     Device \"%s\" with MediaType \"%s\" requested by DIR not found in SD "
-"Device resources.\n"
+#: src/wx-console/wxbrestorepanel.cpp:789
+#: src/wx-console/wxbrestorepanel.cpp:790
+msgid "Failed to retrieve jobid.\n"
 msgstr ""
 
-#: src/stored/reserve.c:528
-#, c-format
-msgid "3926 Could not get dcr for device: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:816
+msgid ""
+"Restore is scheduled in more than two minutes, wx-console will not wait for "
+"its completion.\n"
 msgstr ""
 
-#: src/stored/reserve.c:568 src/stored/reserve.c:623
-#, c-format
-msgid "Device %s is BLOCKED due to user unmount.\n"
+#: src/wx-console/wxbrestorepanel.cpp:817
+msgid ""
+"Restore is scheduled in more than two minutes, wx-console will not wait for "
+"its completion."
 msgstr ""
 
-#: src/stored/reserve.c:576
-#, c-format
-msgid "Device %s is busy.\n"
+#: src/wx-console/wxbrestorepanel.cpp:841
+msgid "Restore job created, but not yet running."
 msgstr ""
 
-#: src/stored/reserve.c:631
+#: src/wx-console/wxbrestorepanel.cpp:846
 #, c-format
-msgid "Device %s is busy writing on another Volume.\n"
+msgid "Restore job running, please wait (%d of %d files restored)..."
 msgstr ""
 
-#: src/stored/reserve.c:705
-#, c-format
-msgid "Wanted Pool \"%s\", but device %s is using Pool \"%s\" .\n"
+#: src/wx-console/wxbrestorepanel.cpp:850
+msgid "Restore job terminated successfully."
 msgstr ""
 
-#: src/stored/reserve.c:711
-msgid "Logic error!!!! Should not get here.\n"
+#: src/wx-console/wxbrestorepanel.cpp:851
+msgid "Restore job terminated successfully.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:154
-msgid ""
-"Warning skipping the additional parameters for working directory/dbname/user/"
-"password/host.\n"
+#: src/wx-console/wxbrestorepanel.cpp:856
+msgid "Restore job terminated in error, see messages in console."
+msgstr ""
+
+#: src/wx-console/wxbrestorepanel.cpp:857
+msgid "Restore job terminated in error, see messages.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:195
-msgid "Wrong number of arguments.\n"
+#: src/wx-console/wxbrestorepanel.cpp:862
+msgid "Restore job reported a non-fatal error."
 msgstr ""
 
-#: src/tools/dbcheck.c:200
-msgid "Working directory not supplied.\n"
+#: src/wx-console/wxbrestorepanel.cpp:866
+msgid "Restore job reported a fatal error."
 msgstr ""
 
-#: src/tools/dbcheck.c:272
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Repair bad Filename records\n"
-"     4) Repair bad Path records\n"
-"     5) Eliminate duplicate Filename records\n"
-"     6) Eliminate duplicate Path records\n"
-"     7) Eliminate orphaned Jobmedia records\n"
-"     8) Eliminate orphaned File records\n"
-"     9) Eliminate orphaned Path records\n"
-"    10) Eliminate orphaned Filename records\n"
-"    11) Eliminate orphaned FileSet records\n"
-"    12) Eliminate orphaned Client records\n"
-"    13) Eliminate orphaned Job records\n"
-"    14) Eliminate all Admin records\n"
-"    15) Eliminate all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
+#: src/wx-console/wxbrestorepanel.cpp:871
+msgid "Restore job cancelled by user."
 msgstr ""
 
-#: src/tools/dbcheck.c:291
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Check for bad Filename records\n"
-"     4) Check for bad Path records\n"
-"     5) Check for duplicate Filename records\n"
-"     6) Check for duplicate Path records\n"
-"     7) Check for orphaned Jobmedia records\n"
-"     8) Check for orphaned File records\n"
-"     9) Check for orphaned Path records\n"
-"    10) Check for orphaned Filename records\n"
-"    11) Check for orphaned FileSet records\n"
-"    12) Check for orphaned Client records\n"
-"    13) Check for orphaned Job records\n"
-"    14) Check for all Admin records\n"
-"    15) Check for all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
+#: src/wx-console/wxbrestorepanel.cpp:872
+msgid "Restore job cancelled by user.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:311
-msgid "Select function number: "
+#: src/wx-console/wxbrestorepanel.cpp:877
+msgid "Restore job is waiting on File daemon."
 msgstr ""
 
-#: src/tools/dbcheck.c:317
-#, c-format
-msgid "Database will %sbe modified.\n"
+#: src/wx-console/wxbrestorepanel.cpp:881
+msgid "Restore job is waiting for new media."
 msgstr ""
 
-#: src/tools/dbcheck.c:317
-msgid "NOT "
+#: src/wx-console/wxbrestorepanel.cpp:885
+msgid "Restore job is waiting for storage resource."
 msgstr ""
 
-#: src/tools/dbcheck.c:321
-#, c-format
-msgid "Verbose is %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:889
+msgid "Restore job is waiting for job resource."
 msgstr ""
 
-#: src/tools/dbcheck.c:321
-msgid "On"
+#: src/wx-console/wxbrestorepanel.cpp:893
+msgid "Restore job is waiting for Client resource."
 msgstr ""
 
-#: src/tools/dbcheck.c:321
-msgid "Off"
+#: src/wx-console/wxbrestorepanel.cpp:897
+msgid "Restore job is waiting for maximum jobs."
 msgstr ""
 
-#: src/tools/dbcheck.c:404
-#, c-format
-msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:901
+msgid "Restore job is waiting for start time."
 msgstr ""
 
-#: src/tools/dbcheck.c:412
-#, c-format
-msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
+#: src/wx-console/wxbrestorepanel.cpp:905
+msgid "Restore job is waiting for higher priority jobs to finish."
 msgstr ""
 
-#: src/tools/dbcheck.c:419
-#, c-format
-msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
+#: src/wx-console/wxbrestorepanel.cpp:954
+msgid ""
+"The restore job has not been started within one minute, wx-console will not "
+"wait for its completion anymore.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:426
-#, c-format
-msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:955
+msgid ""
+"The restore job has not been started within one minute, wx-console will not "
+"wait for its completion anymore."
 msgstr ""
 
-#: src/tools/dbcheck.c:433
-#, c-format
-msgid "Orphaned ClientId=%s Name=\"%s\"\n"
+#: src/wx-console/wxbrestorepanel.cpp:965
+msgid "Restore done successfully.\n"
 msgstr ""
 
-#: src/tools/dbcheck.c:613
-#, c-format
-msgid "Checking for duplicate Path entries.\n"
+#: src/wx-console/wxbrestorepanel.cpp:966
+msgid "Restore done successfully."
 msgstr ""
 
-#: src/tools/testfind.c:49
-#, c-format
-msgid ""
-"\n"
-"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -dnn        set debug level to nn\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are used for file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors are always printed.\n"
-"Files/paths truncated is the number of files/paths with len > 255.\n"
-"Truncation is only in the catalog.\n"
-"\n"
+#: src/wx-console/wxbrestorepanel.cpp:1037
+msgid "Applying restore configuration changes..."
 msgstr ""
 
-#: src/tools/testfind.c:156
-#, c-format
-msgid ""
-"Total files    : %d\n"
-"Max file length: %d\n"
-"Max path length: %d\n"
-"Files truncated: %d\n"
-"Paths truncated: %d\n"
-"Hard links     : %d\n"
+#: src/wx-console/wxbrestorepanel.cpp:1088
+msgid "Failed to find the selected client."
 msgstr ""
 
-#: src/tools/testfind.c:236 src/tools/testls.c:174
-#, c-format
-msgid "Err: Could not access %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1103
+msgid "Failed to find the selected fileset."
 msgstr ""
 
-#: src/tools/testfind.c:239 src/tools/testls.c:177
-#, c-format
-msgid "Err: Could not follow ff->link %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1118
+msgid "Failed to find the selected storage."
 msgstr ""
 
-#: src/tools/testfind.c:242 src/tools/testls.c:180
-#, c-format
-msgid "Err: Could not stat %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1135
+#: src/wx-console/wxbrestorepanel.cpp:1801
+msgid "Run Restore job"
 msgstr ""
 
-#: src/tools/testfind.c:245 src/tools/testls.c:183
-#, c-format
-msgid "Skip: File not saved. No change. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1151
+msgid "Restore configuration changes were applied."
 msgstr ""
 
-#: src/tools/testfind.c:248 src/tools/testls.c:186
-#, c-format
-msgid "Err: Attempt to backup archive. Not saved. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1160
+msgid "Restore cancelled.\n"
 msgstr ""
 
-#: src/tools/testfind.c:251 src/tools/testls.c:195
-#, c-format
-msgid "Err: Could not open directory %s: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1161
+msgid "Restore cancelled."
 msgstr ""
 
-#: src/tools/testfind.c:254 src/tools/testls.c:198
-#, c-format
-msgid "Err: Unknown file ff->type %d: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1182
+msgid "No results to list."
 msgstr ""
 
-#: src/tools/testfind.c:304
-#, c-format
-msgid "===== Filename truncated to 255 chars: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1184
+msgid "No backup found for this client."
 msgstr ""
 
-#: src/tools/testfind.c:321
-#, c-format
-msgid "========== Path name truncated to 255 chars: %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1191
+msgid "ERROR"
 msgstr ""
 
-#: src/tools/testfind.c:330
-#, c-format
-msgid "========== Path length is zero. File=%s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1192
+msgid "Query failed"
 msgstr ""
 
-#: src/tools/testls.c:45
-#, c-format
-msgid ""
-"\n"
-"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -dnn        set debug level to nn\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors always printed.\n"
-"Files/paths truncated is number with len > 255.\n"
-"Truncation is only in catalog.\n"
-"\n"
+#: src/wx-console/wxbrestorepanel.cpp:1194
+msgid "Cannot get previous backups list, see console."
 msgstr ""
 
-#: src/tools/testls.c:189
-#, c-format
-msgid "Recursion turned off. Directory not entered. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1811
+msgid "JobName:"
 msgstr ""
 
-#: src/tools/testls.c:192
-#, c-format
-msgid "Skip: File system change prohibited. Directory not entered. %s\n"
+#: src/wx-console/wxbrestorepanel.cpp:1815
+msgid "Where:"
 msgstr ""
 
-#: src/tools/fstype.c:34
-#, c-format
-msgid ""
-"\n"
-"Usage: fstype [-d debug_level] path ...\n"
-"\n"
-"       Print the file system type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
+#: src/wx-console/wxbrestorepanel.cpp:1818
+msgid "Replace:"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:78
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/wx-console/wxbrestorepanel.cpp:1821
+msgid "ifnewer"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:127
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/wx-console/wxbrestorepanel.cpp:1822
+msgid "ifolder"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:172
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/html-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/wx-console/wxbrestorepanel.cpp:1826
+msgid "FileSet:"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:102
-#, c-format
-msgid ""
-"Copyright (C) 2000-2004 Kern Sibbald and John Walker\n"
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: "
+#: src/wx-console/wxbrestorepanel.cpp:1942
+msgid "Restoring..."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:104
-#, c-format
-msgid ""
-") %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -dnn          set debug level to nn\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
+#: src/wx-console/wxbmainframe.cpp:227
+msgid "&About...\tF1"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:248
-#, c-format
-msgid ""
-"Error: %d Monitor resource defined in %s. You must define one and only one "
-"Monitor resource.\n"
+#: src/wx-console/wxbmainframe.cpp:227
+msgid "Show about dialog"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:279
-#, c-format
-msgid ""
-"No Client, Storage nor Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
+#: src/wx-console/wxbmainframe.cpp:229 src/wx-console/wxbmainframe.cpp:590
+msgid "Connect to the director"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:301
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
+#: src/wx-console/wxbmainframe.cpp:230
+msgid "Disconnect"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:359
-msgid " (DIR)"
+#: src/wx-console/wxbmainframe.cpp:230
+msgid "Disconnect of the director"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:363
-msgid " (FD)"
+#: src/wx-console/wxbmainframe.cpp:232
+msgid "Change of configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:367
-msgid " (SD)"
+#: src/wx-console/wxbmainframe.cpp:232
+msgid "Change your default configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:380
-msgid "Unknown status."
+#: src/wx-console/wxbmainframe.cpp:233
+msgid "Edit your configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:421
-msgid "Refresh interval in seconds: "
+#: src/wx-console/wxbmainframe.cpp:235
+msgid "E&xit\tAlt-X"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:429
-msgid "Refresh now"
+#: src/wx-console/wxbmainframe.cpp:235
+msgid "Quit this program"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:433
-msgid "About"
+#: src/wx-console/wxbmainframe.cpp:239
+msgid "&File"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:437
-msgid "Close"
+#: src/wx-console/wxbmainframe.cpp:240
+msgid "&Help"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:496
-msgid ""
-"<span size='x-large' weight='bold'>Bacula Tray Monitor</span>\n"
-"\n"
-"Copyright (C) 2004 Kern Sibbald and John Walker\n"
-"Written by Nicolas Boichat\n"
-"\n"
-"<small>Version: "
+#: src/wx-console/wxbmainframe.cpp:257
+msgid "Console"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:499
-#, c-format
-msgid ") %s %s %s</small>"
+#: src/wx-console/wxbmainframe.cpp:264
+msgid ""
+"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:503
+#: src/wx-console/wxbmainframe.cpp:268
 msgid ""
-"Bacula Tray Monitor\n"
-"\n"
-"Copyright (C) 2004 Kern Sibbald and John Walker\n"
-"Written by Nicolas Boichat\n"
-"\n"
-"Version: "
+"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
+"support when handling non-ASCII filenames: Every non-ASCII character in such "
+"filenames will be replaced by an interrogation mark.\n"
+"If this behaviour disturbs you, please build wx-console against a Unicode "
+"version of wxWidgets for GTK+ 2.0.\n"
+"---\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:506
-#, c-format
-msgid ") %s %s %s"
+#: src/wx-console/wxbmainframe.cpp:279
+msgid "Send"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:690
-msgid "No current job."
+#: src/wx-console/wxbmainframe.cpp:356 src/wx-console/wxbmainframe.cpp:368
+msgid "Error while parsing command line arguments, using defaults.\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:693
-msgid "No last job."
+#: src/wx-console/wxbmainframe.cpp:357 src/wx-console/wxbmainframe.cpp:369
+msgid "Usage: wx-console [-c configfile] [-w tmp]\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:701
+#: src/wx-console/wxbmainframe.cpp:397
 #, c-format
-msgid "Job status: Created (%d error%s)"
+msgid ""
+"It seems that it is the first time you run wx-console.\n"
+"This file (%s) has been choosen as default configuration file.\n"
+"Do you want to edit it? (if you click No you will have to select another "
+"file)"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:705
-#, c-format
-msgid "Job status: Running (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:401
+msgid "First run"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:708
+#: src/wx-console/wxbmainframe.cpp:418
 #, c-format
-msgid "Job status: Blocked (%d error%s)"
+msgid ""
+"Unable to read %s\n"
+"Error: %s\n"
+"Do you want to choose another one? (Press no to edit this file)"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:712
-#, c-format
-msgid "Job status: Terminated (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:421
+msgid "Unable to read configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:716
-#, c-format
-msgid "Job status: Terminated in error (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:433
+msgid "Please choose a configuration file to use"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:721
-#, c-format
-msgid "Job status: Error (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:446
+msgid "This configuration file has been successfully read, use it as default?"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:724
-#, c-format
-msgid "Job status: Fatal error (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:447
+msgid "Configuration file read successfully"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:728
+#: src/wx-console/wxbmainframe.cpp:457
 #, c-format
-msgid "Job status: Verify differences (%d error%s)"
+msgid "Using this configuration file: %s\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:732
-#, c-format
-msgid "Job status: Canceled (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:462
+msgid "Connecting to the director..."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:736
-#, c-format
-msgid "Job status: Waiting on File daemon (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:477
+msgid "Failed to unregister a data parser !"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:740
-#, c-format
-msgid "Job status: Waiting on the Storage daemon (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:485
+msgid "Quitting.\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:744
-#, c-format
-msgid "Job status: Waiting for new media (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:500
+msgid ""
+"Welcome to Bacula wx-console.\n"
+"Written by Nicolas Boichat <nicolas@boichat.ch>\n"
+"(C) 2004 Kern Sibbald and John Walker\n"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:748
-#, c-format
-msgid "Job status: Waiting for Mount (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:502
+msgid "About Bacula wx-console"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:752
-#, c-format
-msgid "Job status: Waiting for storage resource (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:508
+msgid "Please choose your default configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:756
-#, c-format
-msgid "Job status: Waiting for job resource (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:512
+msgid "Use this configuration file as default?"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:760
-#, c-format
-msgid "Job status: Waiting for Client resource (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:513
+msgid "Configuration file"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:764
-#, c-format
-msgid "Job status: Waiting for maximum jobs (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:577
+msgid "Console thread terminated."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:768
-#, c-format
-msgid "Job status: Waiting for start time (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:581
+msgid "Connection to the director lost. Quit program?"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:772
-#, c-format
-msgid "Job status: Waiting for higher priority jobs to finish (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:582
+msgid "Connection lost"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:777
-#, c-format
-msgid "Job status: Unknown(%c) (%d error%s)"
+#: src/wx-console/wxbmainframe.cpp:598
+msgid "Connected to the director."
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:100
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in config file.\n"
-" At least one CA certificate store is required.\n"
+#: src/wx-console/wxbmainframe.cpp:612
+msgid "Reconnect"
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:109
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
+#: src/wx-console/wxbmainframe.cpp:613
+msgid "Reconnect to the director"
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:129
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
+#: src/wx-console/wxbmainframe.cpp:623
+msgid "Disconnected of the director."
 msgstr ""
 
-#: src/wx-console/console_thread.cpp:235
-msgid "Please correct configuration file.\n"
+#: src/wx-console/wxbmainframe.cpp:642
+msgid "Unexpected question has been received.\n"
+msgstr ""
+
+#: src/wx-console/wxbmainframe.cpp:665 src/wx-console/wxbmainframe.cpp:680
+msgid "wx-console: unexpected director's question."
 msgstr ""
index f9580908997860512b133b02ce780fdd1ff7411d..d7000e57095d0dc2a4a2fdca3946e9c2ead1010a 100644 (file)
 #ifdef DEBUG
 #define ASSERT(x) if (!(x)) { \
    char *jcr = NULL; \
-   Emsg1(M_ERROR, 0, "Failed ASSERT: %s\n", #x); \
+   Emsg1(M_ERROR, 0, _("Failed ASSERT: %s\n"), #x); \
    jcr[0] = 0; }
 #else
 #define ASSERT(x)
 #endif
 
 /* Allow printing of NULL pointers */
-#define NPRT(x) (x)?(x):"*None*"
+#define NPRT(x) (x)?(x):_("*None*")
 
 #ifdef ENABLE_NLS
 #include <libintl.h>
+#include <locale.h>
+#ifndef _
 #define _(s) gettext((s))
+#endif /* N */
+#ifndef N_
 #define N_(s) (s)
+#endif /* N_ */
 #else
 #undef _
 #define _(s) (s)
 #define N_(s) (s)
 #undef textdomain
 #define textdomain(d)
-/* #define bindtextdomain(p, d) */
+#undef bindtextdomain
+#define bindtextdomain(p, d)
+#undef setlocale
+#define setlocale(p, d)
 #endif
 
 /* This should go away! ****FIXME***** */
@@ -572,6 +580,7 @@ extern "C" long gethostid(void);
 #endif
 
 
+/* Disabled because it breaks internationalisation...
 #undef HAVE_SETLOCALE
 #ifdef HAVE_SETLOCALE
 #include <locale.h>
@@ -583,6 +592,7 @@ extern "C" long gethostid(void);
 #else
 #define nl_langinfo(x) ("ANSI_X3.4-1968")
 #endif
+*/
 
 /* Fake entry points if regex does not exist */
 #ifndef HAVE_REGEX_H
index 66a1d67faf11a2fa2b48064519e343d2d2ba6168..fcbed7b946af4fd9f0a964513ef4492670fcd37d 100644 (file)
@@ -38,10 +38,10 @@ void senditf(const char *fmt, ...);
 void sendit(const char *buf);
 
 /* Commands sent to Director */
-static char hello[]    = "Hello %s calling\n";
+static char hello[]    = N_("Hello %s calling\n");
 
 /* Response from Director */
-static char OKhello[]   = "1000 OK:";
+static char OKhello[]   = N_("1000 OK:");
 
 /* Forward referenced functions */
 
index af82ec5e7830643d457f16c24776ff3a35667a44..9bea604bd5f126bb26c5a0cce5137dc92818e858 100644 (file)
@@ -321,9 +321,12 @@ int main(int argc, char *argv[])
    bool test_config = false;
    JCR jcr;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    init_stack_dump();
    my_name_is(argc, argv, "bconsole");
-   textdomain("bacula");
    init_msg(NULL, NULL);
    working_directory = "/tmp";
    args = get_pool_memory(PM_FNAME);
index 75483db0c21e9caaf06d19b111108770bb47d1aa..19b1a117c8b6b16145beede8c16c9e6fed53d610 100644 (file)
@@ -120,7 +120,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    bool recurse = true;
 
    if (res == NULL) {
-      printf("No record for %d %s\n", type, res_to_str(type));
+      printf(_("No record for %d %s\n"), type, res_to_str(type));
       return;
    }
    if (type < 0) {                    /* no recursion */
@@ -129,15 +129,15 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    }
    switch (type) {
    case R_CONSOLE:
-      printf("Console: name=%s rcfile=%s histfile=%s\n", reshdr->name,
+      printf(_("Console: name=%s rcfile=%s histfile=%s\n"), reshdr->name,
              res->res_cons.rc_file, res->res_cons.hist_file);
       break;
    case R_DIRECTOR:
-      printf("Director: name=%s address=%s DIRport=%d\n", reshdr->name,
+      printf(_("Director: name=%s address=%s DIRport=%d\n"), reshdr->name,
               res->res_dir.address, res->res_dir.DIRport);
       break;
    default:
-      printf("Unknown resource type %d\n", type);
+      printf(_("Unknown resource type %d\n"), type);
    }
    if (recurse && res->res_dir.hdr.next) {
       dump_resource(type, res->res_dir.hdr.next, sendit, sock);
@@ -213,7 +213,7 @@ void free_resource(RES *sres, int type)
       }
       break;
    default:
-      printf("Unknown resource type %d\n", type);
+      printf(_("Unknown resource type %d\n"), type);
    }
    /* Common stuff again -- free the resource, recurse to next one */
    free(res);
@@ -239,7 +239,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
    for (i=0; items[i].name; i++) {
       if (items[i].flags & ITEM_REQUIRED) {
             if (!bit_is_set(i, res_all.res_dir.hdr.item_present)) {
-               Emsg2(M_ABORT, 0, "%s item is required in %s resource, but not found.\n",
+               Emsg2(M_ABORT, 0, _("%s item is required in %s resource, but not found.\n"),
                  items[i].name, resources[rindex]);
              }
       }
@@ -258,7 +258,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
             break;
 
          default:
-            Emsg1(M_ERROR, 0, "Unknown resource type %d\n", type);
+            Emsg1(M_ERROR, 0, _("Unknown resource type %d\n"), type);
             error = 1;
             break;
       }
@@ -285,7 +285,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
       size = sizeof(DIRRES);
       break;
    default:
-      printf("Unknown resource type %d\n", type);
+      printf(_("Unknown resource type %d\n"), type);
       error = 1;
       size = 1;
       break;
index f18e0a4e53ce9cd93730e5f832fe341ca3e148db..f49b7c47c2e79b6ce9ee292817401b2c98e3680d 100644 (file)
@@ -353,7 +353,7 @@ int authenticate_user_agent(UAContext *uac)
 
       /* Engage TLS! Full Speed Ahead! */
       if (!bnet_tls_server(tls_ctx, ua, verify_list)) {
-         Emsg0(M_ERROR, 0, "TLS negotiation failed.\n");
+         Emsg0(M_ERROR, 0, _("TLS negotiation failed.\n"));
          auth_success = false;
          goto auth_done;
       }
@@ -370,6 +370,6 @@ auth_done:
       sleep(5);
       return 0;
    }
-   bnet_fsend(ua, "1000 OK: %s Version: " VERSION " (" BDATE ")\n", my_name);
+   bnet_fsend(ua, _("1000 OK: %s Version: %s (%s)\n"), my_name, VERSION, BDATE);
    return 1;
 }
index 715b53aebcadaf9981abf6f08064a547996fc71c..2406fc79477457ab723211477d1729557f72d586 100644 (file)
@@ -486,7 +486,7 @@ void backup_cleanup(JCR *jcr, int TermCode)
 
 // bmicrosleep(15, 0);                /* for debugging SIGHUP */
 
-   Jmsg(jcr, msg_type, 0, _("Bacula " VERSION " (" LSMDATE "): %s\n"
+   Jmsg(jcr, msg_type, 0, _("Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Backup Level:           %s%s\n"
@@ -513,6 +513,8 @@ void backup_cleanup(JCR *jcr, int TermCode)
 "  FD termination status:  %s\n"
 "  SD termination status:  %s\n"
 "  Termination:            %s\n\n"),
+        VERSION,
+        LSMDATE,
         edt,
         jcr->jr.JobId,
         jcr->jr.Job,
index 030ea7d3e99492032250d8965532862530617b89..c563d35eace0ded4e37351142a0fe6e3a50c3267 100644 (file)
@@ -106,7 +106,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
    if (!jcr->db) {
       omsg = get_memory(bs->msglen+1);
       pm_strcpy(omsg, bs->msg);
-      bnet_fsend(bs, "1990 Invalid Catalog Request: %s", omsg);    
+      bnet_fsend(bs, _("1990 Invalid Catalog Request: %s"), omsg);    
       Jmsg1(jcr, M_FATAL, 0, _("Invalid Catalog request; DB not open: %s"), omsg);
       free_memory(omsg);
       return;
@@ -128,7 +128,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
       if (ok) {
          send_volume_info_to_storage_daemon(jcr, bs, &mr);
       } else {
-         bnet_fsend(bs, "1901 No Media.\n");
+         bnet_fsend(bs, _("1901 No Media.\n"));
          Dmsg0(500, "1901 No Media.\n");
       }
 
@@ -156,9 +156,9 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
              *   and Media Type matches and Pool allows any volume.
              */
             if (mr.PoolId != jcr->PoolId) {
-               reason = "not in Pool";
+               reason = _("not in Pool");
             } else if (strcmp(mr.MediaType, jcr->store->media_type) != 0) {
-               reason = "not correct MediaType";
+               reason = _("not correct MediaType");
             } else {
               /*
                * ****FIXME***
@@ -184,12 +184,12 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
             send_volume_info_to_storage_daemon(jcr, bs, &mr);
          } else {
             /* Not suitable volume */
-            bnet_fsend(bs, "1998 Volume \"%s\" status is %s, %s.\n", mr.VolumeName,
+            bnet_fsend(bs, _("1998 Volume \"%s\" status is %s, %s.\n"), mr.VolumeName,
                mr.VolStatus, reason);
          }
 
       } else {
-         bnet_fsend(bs, "1997 Volume \"%s\" not in catalog.\n", mr.VolumeName);
+         bnet_fsend(bs, _("1997 Volume \"%s\" not in catalog.\n"), mr.VolumeName);
          Dmsg1(100, "1997 Volume \"%s\" not in catalog.\n", mr.VolumeName);
       }
 
@@ -212,7 +212,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
       if (!db_get_media_record(jcr, jcr->db, &mr)) {
          Jmsg(jcr, M_ERROR, 0, _("Unable to get Media record for Volume %s: ERR=%s\n"),
               mr.VolumeName, db_strerror(jcr->db));
-         bnet_fsend(bs, "1991 Catalog Request for vol=%s failed: %s", 
+         bnet_fsend(bs, _("1991 Catalog Request for vol=%s failed: %s"),
             mr.VolumeName, db_strerror(jcr->db));
          db_unlock(jcr->db);
          return;
@@ -235,7 +235,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
             Jmsg(jcr, M_FATAL, 0, _("Volume Files at %u being set to %u"
                  " for Volume \"%s\". This is incorrect.\n"),
                mr.VolFiles, sdmr.VolFiles, mr.VolumeName);
-            bnet_fsend(bs, "1992 Update Media error\n");
+            bnet_fsend(bs, _("1992 Update Media error\n"));
             db_unlock(jcr->db);
             return;
          }
@@ -267,7 +267,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
       } else {
          Jmsg(jcr, M_FATAL, 0, _("Catalog error updating Media record. %s"),
             db_strerror(jcr->db));
-         bnet_fsend(bs, "1992 Update Media error\n");
+         bnet_fsend(bs, _("1992 Update Media error\n"));
          Dmsg0(400, "send error\n");
       }
       db_unlock(jcr->db);
@@ -286,7 +286,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
       if (!db_create_jobmedia_record(jcr, jcr->db, &jm)) {
          Jmsg(jcr, M_FATAL, 0, _("Catalog error creating JobMedia record. %s"),
             db_strerror(jcr->db));
-         bnet_fsend(bs, "1991 Update JobMedia error\n");
+         bnet_fsend(bs, _("1991 Update JobMedia error\n"));
       } else {
          Dmsg0(400, "JobMedia record created\n");
          bnet_fsend(bs, OK_create);
@@ -295,7 +295,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
    } else {
       omsg = get_memory(bs->msglen+1);
       pm_strcpy(omsg, bs->msg);
-      bnet_fsend(bs, "1990 Invalid Catalog Request: %s", omsg);
+      bnet_fsend(bs, _("1990 Invalid Catalog Request: %s"), omsg);
       Jmsg1(jcr, M_FATAL, 0, _("Invalid Catalog request: %s"), omsg);
       free_memory(omsg);
    }
@@ -395,7 +395,7 @@ void catalog_update(JCR *jcr, BSOCK *bs, char *msg)
    } else if (Stream == STREAM_MD5_SIGNATURE || Stream == STREAM_SHA1_SIGNATURE) {
       fname = p;
       if (ar->FileIndex != FileIndex) {
-         Jmsg(jcr, M_WARNING, 0, "Got MD5/SHA1 but not same File as attributes\n");
+         Jmsg(jcr, M_WARNING, 0, _("Got MD5/SHA1 but not same File as attributes\n"));
       } else {
          /* Update signature in catalog */
          char SIGbuf[50];           /* 24 bytes should be enough */
index e6f0f57dc40f26a3fbe3fec9c70d937a2f939617..eec2b9f2cac91bdb1dd39da86af30de6269cf98f 100644 (file)
@@ -69,7 +69,7 @@ static void usage()
 {
    fprintf(stderr, _(
 "Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\nVersion: " VERSION " (" BDATE ")\n\n"
+"\nVersion: %s (%s)\n\n"
 "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
 "       -dnn        set debug level to nn\n"
@@ -81,7 +81,7 @@ static void usage()
 "       -u          userid\n"
 "       -v          verbose user messages\n"
 "       -?          print this message.\n"
-"\n"));
+"\n"), VERSION, BDATE);
 
    exit(1);
 }
@@ -101,9 +101,12 @@ int main (int argc, char *argv[])
    char *uid = NULL;
    char *gid = NULL;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    init_stack_dump();
    my_name_is(argc, argv, "bacula-dir");
-   textdomain("bacula");
    init_msg(NULL, NULL);              /* initialize message handler */
    init_reload();
    daemon_start_time = time(NULL);
@@ -579,7 +582,7 @@ static int check_resources()
                        job->hdr.name, job_items[i].name, *def_svalue, i, offset);
                   svalue = (char **)((char *)job + offset);
                   if (*svalue) {
-                     Pmsg1(000, "Hey something is wrong. p=0x%lu\n", *svalue);
+                     Pmsg1(000, _("Hey something is wrong. p=0x%lu\n"), *svalue);
                   }
                   *svalue = bstrdup(*def_svalue);
                   set_bit(i, job->hdr.item_present);
@@ -592,7 +595,7 @@ static int check_resources()
                        job->hdr.name, job_items[i].name, i, offset);
                   svalue = (char **)((char *)job + offset);
                   if (*svalue) {
-                     Pmsg1(000, "Hey something is wrong. p=0x%lu\n", *svalue);
+                     Pmsg1(000, _("Hey something is wrong. p=0x%lu\n"), *svalue);
                   }
                   *svalue = *def_svalue;
                   set_bit(i, job->hdr.item_present);
@@ -641,14 +644,14 @@ static int check_resources()
       for (i=0; job_items[i].name; i++) {
          if (job_items[i].flags & ITEM_REQUIRED) {
                if (!bit_is_set(i, job->hdr.item_present)) {
-                  Jmsg(NULL, M_FATAL, 0, "\"%s\" directive in Job \"%s\" resource is required, but not found.\n",
+                  Jmsg(NULL, M_FATAL, 0, _("\"%s\" directive in Job \"%s\" resource is required, but not found.\n"),
                     job_items[i].name, job->hdr.name);
                   OK = false;
                 }
          }
          /* If this triggers, take a look at lib/parse_conf.h */
          if (i >= MAX_RES_ITEMS) {
-            Emsg0(M_ERROR_TERM, 0, "Too many items in Job resource\n");
+            Emsg0(M_ERROR_TERM, 0, _("Too many items in Job resource\n"));
          }
       }
    } /* End loop over Job res */
index 7c34b250bcd62743b5a6388e088c1bccc1f8d592..75f813e30c99cf372196544a77e782f32c836c6b 100644 (file)
@@ -438,7 +438,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    DEVICE *dev;
 
    if (res == NULL) {
-      sendit(sock, "No %s resource defined\n", res_to_str(type));
+      sendit(sock, _("No %s resource defined\n"), res_to_str(type));
       return;
    }
    if (type < 0) {                    /* no recursion */
@@ -447,63 +447,63 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    }
    switch (type) {
    case R_DIRECTOR:
-      sendit(sock, "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n",
+      sendit(sock, _("Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"),
          reshdr->name, res->res_dir.MaxConcurrentJobs,
          edit_uint64(res->res_dir.FDConnectTimeout, ed1),
          edit_uint64(res->res_dir.SDConnectTimeout, ed2));
       if (res->res_dir.query_file) {
-         sendit(sock, "   query_file=%s\n", res->res_dir.query_file);
+         sendit(sock, _("   query_file=%s\n"), res->res_dir.query_file);
       }
       if (res->res_dir.messages) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_MSGS, (RES *)res->res_dir.messages, sendit, sock);
       }
       break;
    case R_CONSOLE:
 #ifdef HAVE_TLS
-      sendit(sock, "Console: name=%s SSL=%d\n",
+      sendit(sock, _("Console: name=%s SSL=%d\n"),
          res->res_con.hdr.name, res->res_con.tls_enable);
 #else
-      sendit(sock, "Console: name=%s SSL=%d\n",
+      sendit(sock, _("Console: name=%s SSL=%d\n"),
          res->res_con.hdr.name, BNET_TLS_NONE);
 #endif
       break;
    case R_COUNTER:
       if (res->res_counter.WrapCounter) {
-         sendit(sock, "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n",
+         sendit(sock, _("Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"),
             res->res_counter.hdr.name, res->res_counter.MinValue,
             res->res_counter.MaxValue, res->res_counter.CurrentValue,
             res->res_counter.WrapCounter->hdr.name);
       } else {
-         sendit(sock, "Counter: name=%s min=%d max=%d\n",
+         sendit(sock, _("Counter: name=%s min=%d max=%d\n"),
             res->res_counter.hdr.name, res->res_counter.MinValue,
             res->res_counter.MaxValue);
       }
       if (res->res_counter.Catalog) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_CATALOG, (RES *)res->res_counter.Catalog, sendit, sock);
       }
       break;
 
    case R_CLIENT:
-      sendit(sock, "Client: name=%s address=%s FDport=%d MaxJobs=%u\n",
+      sendit(sock, _("Client: name=%s address=%s FDport=%d MaxJobs=%u\n"),
          res->res_client.hdr.name, res->res_client.address, res->res_client.FDport,
          res->res_client.MaxConcurrentJobs);
-      sendit(sock, "      JobRetention=%s FileRetention=%s AutoPrune=%d\n",
+      sendit(sock, _("      JobRetention=%s FileRetention=%s AutoPrune=%d\n"),
          edit_utime(res->res_client.JobRetention, ed1, sizeof(ed1)),
          edit_utime(res->res_client.FileRetention, ed2, sizeof(ed2)),
          res->res_client.AutoPrune);
       if (res->res_client.catalog) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_CATALOG, (RES *)res->res_client.catalog, sendit, sock);
       }
       break;
    case R_DEVICE:
       dev = &res->res_dev;
       char ed1[50];
-      sendit(sock, "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
+      sendit(sock, _("Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
 "      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr=%d\n"
-"      poolid=%s volname=%s MediaType=%s\n",
+"      poolid=%s volname=%s MediaType=%s\n"),
          dev->hdr.name, dev->found, dev->num_writers, dev->max_writers,
          dev->reserved, dev->open, dev->append, dev->read, dev->labeled,
          dev->offline, dev->autochanger,
@@ -511,8 +511,8 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          dev->VolumeName, dev->MediaType);
       break;
    case R_STORAGE:
-      sendit(sock, "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
-"      DeviceName=%s MediaType=%s StorageId=%s\n",
+      sendit(sock, _("Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
+"      DeviceName=%s MediaType=%s StorageId=%s\n"),
          res->res_store.hdr.name, res->res_store.address, res->res_store.SDport,
          res->res_store.MaxConcurrentJobs,
          res->res_store.dev_name(),
@@ -520,95 +520,95 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          edit_int64(res->res_store.StorageId, ed1));
       break;
    case R_CATALOG:
-      sendit(sock, "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
-"      db_user=%s MutliDBConn=%d\n",
+      sendit(sock, _("Catalog: name=%s address=%s DBport=%d db_name=%s\n"
+"      db_user=%s MutliDBConn=%d\n"),
          res->res_cat.hdr.name, NPRT(res->res_cat.db_address),
          res->res_cat.db_port, res->res_cat.db_name, NPRT(res->res_cat.db_user),
          res->res_cat.mult_db_connections);
       break;
    case R_JOB:
    case R_JOBDEFS:
-      sendit(sock, "%s: name=%s JobType=%d level=%s Priority=%d MaxJobs=%u\n",
-         type == R_JOB ? "Job" : "JobDefs",
+      sendit(sock, _("%s: name=%s JobType=%d level=%s Priority=%d MaxJobs=%u\n"),
+         type == R_JOB ? _("Job") : _("JobDefs"),
          res->res_job.hdr.name, res->res_job.JobType,
          level_to_str(res->res_job.JobLevel), res->res_job.Priority,
          res->res_job.MaxConcurrentJobs);
-      sendit(sock, "     Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob=%d\n",
+      sendit(sock, _("     Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob=%d\n"),
           res->res_job.RescheduleOnError, res->res_job.RescheduleTimes,
           edit_uint64_with_commas(res->res_job.RescheduleInterval, ed1),
           res->res_job.spool_data, res->res_job.write_part_after_job);
       if (res->res_job.client) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_CLIENT, (RES *)res->res_job.client, sendit, sock);
       }
       if (res->res_job.fileset) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_FILESET, (RES *)res->res_job.fileset, sendit, sock);
       }
       if (res->res_job.schedule) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_SCHEDULE, (RES *)res->res_job.schedule, sendit, sock);
       }
       if (res->res_job.RestoreWhere) {
-         sendit(sock, "  --> Where=%s\n", NPRT(res->res_job.RestoreWhere));
+         sendit(sock, _("  --> Where=%s\n"), NPRT(res->res_job.RestoreWhere));
       }
       if (res->res_job.RestoreBootstrap) {
-         sendit(sock, "  --> Bootstrap=%s\n", NPRT(res->res_job.RestoreBootstrap));
+         sendit(sock, _("  --> Bootstrap=%s\n"), NPRT(res->res_job.RestoreBootstrap));
       }
       if (res->res_job.RunBeforeJob) {
-         sendit(sock, "  --> RunBefore=%s\n", NPRT(res->res_job.RunBeforeJob));
+         sendit(sock, _("  --> RunBefore=%s\n"), NPRT(res->res_job.RunBeforeJob));
       }
       if (res->res_job.RunAfterJob) {
-         sendit(sock, "  --> RunAfter=%s\n", NPRT(res->res_job.RunAfterJob));
+         sendit(sock, _("  --> RunAfter=%s\n"), NPRT(res->res_job.RunAfterJob));
       }
       if (res->res_job.RunAfterFailedJob) {
-         sendit(sock, "  --> RunAfterFailed=%s\n", NPRT(res->res_job.RunAfterFailedJob));
+         sendit(sock, _("  --> RunAfterFailed=%s\n"), NPRT(res->res_job.RunAfterFailedJob));
       }
       if (res->res_job.WriteBootstrap) {
-         sendit(sock, "  --> WriteBootstrap=%s\n", NPRT(res->res_job.WriteBootstrap));
+         sendit(sock, _("  --> WriteBootstrap=%s\n"), NPRT(res->res_job.WriteBootstrap));
       }
       if (res->res_job.storage) {
          STORE *store;
          foreach_alist(store, res->res_job.storage) {
-            sendit(sock, "  --> ");
+            sendit(sock, _("  --> "));
             dump_resource(-R_STORAGE, (RES *)store, sendit, sock);
          }
       }
       if (res->res_job.pool) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_POOL, (RES *)res->res_job.pool, sendit, sock);
       }
       if (res->res_job.full_pool) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_POOL, (RES *)res->res_job.full_pool, sendit, sock);
       }
       if (res->res_job.inc_pool) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_POOL, (RES *)res->res_job.inc_pool, sendit, sock);
       }
       if (res->res_job.dif_pool) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_POOL, (RES *)res->res_job.dif_pool, sendit, sock);
       }
       if (res->res_job.verify_job) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-type, (RES *)res->res_job.verify_job, sendit, sock);
       }
       if (res->res_job.run_cmds) {
          char *runcmd;
          foreach_alist(runcmd, res->res_job.run_cmds) {
-            sendit(sock, "  --> Run=%s\n", runcmd);
+            sendit(sock, _("  --> Run=%s\n"), runcmd);
          }
       }
       if (res->res_job.messages) {
-         sendit(sock, "  --> ");
+         sendit(sock, _("  --> "));
          dump_resource(-R_MSGS, (RES *)res->res_job.messages, sendit, sock);
       }
       break;
    case R_FILESET:
    {
       int i, j, k;
-      sendit(sock, "FileSet: name=%s\n", res->res_fs.hdr.name);
+      sendit(sock, _("FileSet: name=%s\n"), res->res_fs.hdr.name);
       for (i=0; i<res->res_fs.num_includes; i++) {
          INCEXE *incexe = res->res_fs.include_items[i];
          for (j=0; j<incexe->num_opts; j++) {
@@ -670,13 +670,13 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          int i;
          RUN *run = res->res_sch.run;
          char buf[1000], num[30];
-         sendit(sock, "Schedule: name=%s\n", res->res_sch.hdr.name);
+         sendit(sock, _("Schedule: name=%s\n"), res->res_sch.hdr.name);
          if (!run) {
             break;
          }
 next_run:
-         sendit(sock, "  --> Run Level=%s\n", level_to_str(run->level));
-         bstrncpy(buf, "      hour=", sizeof(buf));
+         sendit(sock, _("  --> Run Level=%s\n"), level_to_str(run->level));
+         bstrncpy(buf, _("      hour="), sizeof(buf));
          for (i=0; i<24; i++) {
             if (bit_is_set(i, run->hour)) {
                bsnprintf(num, sizeof(num), "%d ", i);
@@ -685,7 +685,7 @@ next_run:
          }
          bstrncat(buf, "\n", sizeof(buf));
          sendit(sock, buf);
-         bstrncpy(buf, "      mday=", sizeof(buf));
+         bstrncpy(buf, _("      mday="), sizeof(buf));
          for (i=0; i<31; i++) {
             if (bit_is_set(i, run->mday)) {
                bsnprintf(num, sizeof(num), "%d ", i);
@@ -694,7 +694,7 @@ next_run:
          }
          bstrncat(buf, "\n", sizeof(buf));
          sendit(sock, buf);
-         bstrncpy(buf, "      month=", sizeof(buf));
+         bstrncpy(buf, _("      month="), sizeof(buf));
          for (i=0; i<12; i++) {
             if (bit_is_set(i, run->month)) {
                bsnprintf(num, sizeof(num), "%d ", i);
@@ -703,7 +703,7 @@ next_run:
          }
          bstrncat(buf, "\n", sizeof(buf));
          sendit(sock, buf);
-         bstrncpy(buf, "      wday=", sizeof(buf));
+         bstrncpy(buf, _("      wday="), sizeof(buf));
          for (i=0; i<7; i++) {
             if (bit_is_set(i, run->wday)) {
                bsnprintf(num, sizeof(num), "%d ", i);
@@ -712,7 +712,7 @@ next_run:
          }
          bstrncat(buf, "\n", sizeof(buf));
          sendit(sock, buf);
-         bstrncpy(buf, "      wom=", sizeof(buf));
+         bstrncpy(buf, _("      wom="), sizeof(buf));
          for (i=0; i<5; i++) {
             if (bit_is_set(i, run->wom)) {
                bsnprintf(num, sizeof(num), "%d ", i);
@@ -721,7 +721,7 @@ next_run:
          }
          bstrncat(buf, "\n", sizeof(buf));
          sendit(sock, buf);
-         bstrncpy(buf, "      woy=", sizeof(buf));
+         bstrncpy(buf, _("      woy="), sizeof(buf));
          for (i=0; i<54; i++) {
             if (bit_is_set(i, run->woy)) {
                bsnprintf(num, sizeof(num), "%d ", i);
@@ -730,17 +730,17 @@ next_run:
          }
          bstrncat(buf, "\n", sizeof(buf));
          sendit(sock, buf);
-         sendit(sock, "      mins=%d\n", run->minute);
+         sendit(sock, _("      mins=%d\n"), run->minute);
          if (run->pool) {
-            sendit(sock, "     --> ");
+            sendit(sock, _("     --> "));
             dump_resource(-R_POOL, (RES *)run->pool, sendit, sock);
          }
          if (run->storage) {
-            sendit(sock, "     --> ");
+            sendit(sock, _("     --> "));
             dump_resource(-R_STORAGE, (RES *)run->storage, sendit, sock);
          }
          if (run->msgs) {
-            sendit(sock, "     --> ");
+            sendit(sock, _("     --> "));
             dump_resource(-R_MSGS, (RES *)run->msgs, sendit, sock);
          }
          /* If another Run record is chained in, go print it */
@@ -749,38 +749,38 @@ next_run:
             goto next_run;
          }
       } else {
-         sendit(sock, "Schedule: name=%s\n", res->res_sch.hdr.name);
+         sendit(sock, _("Schedule: name=%s\n"), res->res_sch.hdr.name);
       }
       break;
    case R_POOL:
-      sendit(sock, "Pool: name=%s PoolType=%s\n", res->res_pool.hdr.name,
+      sendit(sock, _("Pool: name=%s PoolType=%s\n"), res->res_pool.hdr.name,
               res->res_pool.pool_type);
-      sendit(sock, "      use_cat=%d use_once=%d acpt_any=%d cat_files=%d\n",
+      sendit(sock, _("      use_cat=%d use_once=%d acpt_any=%d cat_files=%d\n"),
               res->res_pool.use_catalog, res->res_pool.use_volume_once,
               res->res_pool.accept_any_volume, res->res_pool.catalog_files);
-      sendit(sock, "      max_vols=%d auto_prune=%d VolRetention=%s\n",
+      sendit(sock, _("      max_vols=%d auto_prune=%d VolRetention=%s\n"),
               res->res_pool.max_volumes, res->res_pool.AutoPrune,
               edit_utime(res->res_pool.VolRetention, ed1, sizeof(ed1)));
-      sendit(sock, "      VolUse=%s recycle=%d LabelFormat=%s\n",
+      sendit(sock, _("      VolUse=%s recycle=%d LabelFormat=%s\n"),
               edit_utime(res->res_pool.VolUseDuration, ed1, sizeof(ed1)),
               res->res_pool.Recycle,
               NPRT(res->res_pool.label_format));
-      sendit(sock, "      CleaningPrefix=%s LabelType=%d\n",
+      sendit(sock, _("      CleaningPrefix=%s LabelType=%d\n"),
               NPRT(res->res_pool.cleaning_prefix), res->res_pool.LabelType);
-      sendit(sock, "      RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n",
+      sendit(sock, _("      RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n"),
               res->res_pool.recycle_oldest_volume,
               res->res_pool.purge_oldest_volume,
               res->res_pool.MaxVolJobs, res->res_pool.MaxVolFiles);
       break;
    case R_MSGS:
-      sendit(sock, "Messages: name=%s\n", res->res_msgs.hdr.name);
+      sendit(sock, _("Messages: name=%s\n"), res->res_msgs.hdr.name);
       if (res->res_msgs.mail_cmd)
-         sendit(sock, "      mailcmd=%s\n", res->res_msgs.mail_cmd);
+         sendit(sock, _("      mailcmd=%s\n"), res->res_msgs.mail_cmd);
       if (res->res_msgs.operator_cmd)
-         sendit(sock, "      opcmd=%s\n", res->res_msgs.operator_cmd);
+         sendit(sock, _("      opcmd=%s\n"), res->res_msgs.operator_cmd);
       break;
    default:
-      sendit(sock, "Unknown resource type %d in dump_resource.\n", type);
+      sendit(sock, _("Unknown resource type %d in dump_resource.\n"), type);
       break;
    }
    if (recurse && res->res_dir.hdr.next) {
@@ -1074,7 +1074,7 @@ void free_resource(RES *sres, int type)
       res = NULL;
       break;
    default:
-      printf("Unknown resource type %d in free_resource.\n", type);
+      printf(_("Unknown resource type %d in free_resource.\n"), type);
    }
    /* Common stuff again -- free the resource, recurse to next one */
    if (res) {
@@ -1106,13 +1106,13 @@ void save_resource(int type, RES_ITEM *items, int pass)
       for (i=0; items[i].name; i++) {
          if (items[i].flags & ITEM_REQUIRED) {
             if (!bit_is_set(i, res_all.res_dir.hdr.item_present)) {
-                Emsg2(M_ERROR_TERM, 0, "%s item is required in %s resource, but not found.\n",
+                Emsg2(M_ERROR_TERM, 0, _("%s item is required in %s resource, but not found.\n"),
                     items[i].name, resources[rindex]);
             }
          }
          /* If this triggers, take a look at lib/parse_conf.h */
          if (i >= MAX_RES_ITEMS) {
-            Emsg1(M_ERROR_TERM, 0, "Too many items in %s resource\n", resources[rindex]);
+            Emsg1(M_ERROR_TERM, 0, _("Too many items in %s resource\n"), resources[rindex]);
          }
       }
    } else if (type == R_JOB) {
@@ -1121,7 +1121,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
        */
       if (items[0].flags & ITEM_REQUIRED) {
          if (!bit_is_set(0, res_all.res_dir.hdr.item_present)) {
-             Emsg2(M_ERROR_TERM, 0, "%s item is required in %s resource, but not found.\n",
+             Emsg2(M_ERROR_TERM, 0, _("%s item is required in %s resource, but not found.\n"),
                    items[0].name, resources[rindex]);
          }
       }
@@ -1146,20 +1146,20 @@ void save_resource(int type, RES_ITEM *items, int pass)
       /* Resources containing another resource or alist */
       case R_CONSOLE:
          if ((res = (URES *)GetResWithName(R_CONSOLE, res_all.res_con.hdr.name)) == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Cannot find Console resource %s\n", res_all.res_con.hdr.name);
+            Emsg1(M_ERROR_TERM, 0, _("Cannot find Console resource %s\n"), res_all.res_con.hdr.name);
          }
          res->res_con.tls_allowed_cns = res_all.res_con.tls_allowed_cns;
          break;
       case R_DIRECTOR:
          if ((res = (URES *)GetResWithName(R_DIRECTOR, res_all.res_dir.hdr.name)) == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Cannot find Director resource %s\n", res_all.res_dir.hdr.name);
+            Emsg1(M_ERROR_TERM, 0, _("Cannot find Director resource %s\n"), res_all.res_dir.hdr.name);
          }
          res->res_dir.messages = res_all.res_dir.messages;
          res->res_dir.tls_allowed_cns = res_all.res_dir.tls_allowed_cns;
          break;
       case R_STORAGE:
          if ((res = (URES *)GetResWithName(type, res_all.res_store.hdr.name)) == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Cannot find Storage resource %s\n",
+            Emsg1(M_ERROR_TERM, 0, _("Cannot find Storage resource %s\n"),
                   res_all.res_dir.hdr.name);
          }
          /* we must explicitly copy the device alist pointer */
@@ -1168,7 +1168,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
       case R_JOB:
       case R_JOBDEFS:
          if ((res = (URES *)GetResWithName(type, res_all.res_dir.hdr.name)) == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Cannot find Job resource %s\n",
+            Emsg1(M_ERROR_TERM, 0, _("Cannot find Job resource %s\n"),
                   res_all.res_dir.hdr.name);
          }
          res->res_job.messages   = res_all.res_job.messages;
@@ -1186,7 +1186,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
          break;
       case R_COUNTER:
          if ((res = (URES *)GetResWithName(R_COUNTER, res_all.res_counter.hdr.name)) == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Cannot find Counter resource %s\n", res_all.res_counter.hdr.name);
+            Emsg1(M_ERROR_TERM, 0, _("Cannot find Counter resource %s\n"), res_all.res_counter.hdr.name);
          }
          res->res_counter.Catalog = res_all.res_counter.Catalog;
          res->res_counter.WrapCounter = res_all.res_counter.WrapCounter;
@@ -1194,7 +1194,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
 
       case R_CLIENT:
          if ((res = (URES *)GetResWithName(R_CLIENT, res_all.res_client.hdr.name)) == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Cannot find Client resource %s\n", res_all.res_client.hdr.name);
+            Emsg1(M_ERROR_TERM, 0, _("Cannot find Client resource %s\n"), res_all.res_client.hdr.name);
          }
          res->res_client.catalog = res_all.res_client.catalog;
          break;
@@ -1206,12 +1206,12 @@ void save_resource(int type, RES_ITEM *items, int pass)
           * into the Schedule resource.
           */
          if ((res = (URES *)GetResWithName(R_SCHEDULE, res_all.res_client.hdr.name)) == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Cannot find Schedule resource %s\n", res_all.res_client.hdr.name);
+            Emsg1(M_ERROR_TERM, 0, _("Cannot find Schedule resource %s\n"), res_all.res_client.hdr.name);
          }
          res->res_sch.run = res_all.res_sch.run;
          break;
       default:
-         Emsg1(M_ERROR, 0, "Unknown resource type %d in save_resource.\n", type);
+         Emsg1(M_ERROR, 0, _("Unknown resource type %d in save_resource.\n"), type);
          error = true;
          break;
       }
@@ -1271,7 +1271,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
       error = true;
       break;
    default:
-      printf("Unknown resource type %d in save_resrouce.\n", type);
+      printf(_("Unknown resource type %d in save_resrouce.\n"), type);
       error = true; 
       break;
    }
@@ -1286,7 +1286,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
       } else {
          RES *next;
          if (res->res_dir.hdr.name == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Name item is required in %s resource, but not found.\n",
+            Emsg1(M_ERROR_TERM, 0, _("Name item is required in %s resource, but not found.\n"),
                   resources[rindex]);
          }   
          /* Add new res to end of chain */
@@ -1298,7 +1298,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
             }
          }
          next->next = (RES *)res;
-         Dmsg4(900, "Inserting %s res: %s index=%d pass=%d\n", res_to_str(type),
+         Dmsg4(900, _("Inserting %s res: %s index=%d pass=%d\n"), res_to_str(type),
                res->res_dir.hdr.name, rindex, pass);
       }
    }
@@ -1371,7 +1371,7 @@ void store_jobtype(LEX *lc, RES_ITEM *item, int index, int pass)
       }
    }
    if (i != 0) {
-      scan_err1(lc, "Expected a Job Type keyword, got: %s", lc->str);
+      scan_err1(lc, _("Expected a Job Type keyword, got: %s"), lc->str);
    }
    scan_to_eol(lc);
    set_bit(index, res_all.hdr.item_present);
@@ -1395,7 +1395,7 @@ void store_level(LEX *lc, RES_ITEM *item, int index, int pass)
       }
    }
    if (i != 0) {
-      scan_err1(lc, "Expected a Job Level keyword, got: %s", lc->str);
+      scan_err1(lc, _("Expected a Job Level keyword, got: %s"), lc->str);
    }
    scan_to_eol(lc);
    set_bit(index, res_all.hdr.item_present);
@@ -1415,7 +1415,7 @@ void store_replace(LEX *lc, RES_ITEM *item, int index, int pass)
       }
    }
    if (i != 0) {
-      scan_err1(lc, "Expected a Restore replacement option, got: %s", lc->str);
+      scan_err1(lc, _("Expected a Restore replacement option, got: %s"), lc->str);
    }
    scan_to_eol(lc);
    set_bit(index, res_all.hdr.item_present);
index c2f55318f7ef5ddc9778db0f28a0cd0434a98067..c0f2cddc79ef6afb5ee1fe886de137f8ee31a4d8 100644 (file)
@@ -141,7 +141,7 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
    since[0] = 0;
    if (jcr->cloned) {
       if ( jcr->stime && jcr->stime[0]) {
-         bstrncpy(since, ", since=", since_len);
+         bstrncpy(since, _(", since="), since_len);
          bstrncat(since, jcr->stime, since_len);
       }
       return;
@@ -162,7 +162,7 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
          /* No job found, so upgrade this one to Full */
          Jmsg(jcr, M_INFO, 0, "%s", db_strerror(jcr->db));
          Jmsg(jcr, M_INFO, 0, _("No prior or suitable Full backup found. Doing FULL backup.\n"));
-         bsnprintf(since, since_len, " (upgraded from %s)",
+         bsnprintf(since, since_len, _(" (upgraded from %s)"),
             level_to_str(jcr->JobLevel));
          jcr->JobLevel = jcr->jr.JobLevel = L_FULL;
       } else {
@@ -170,14 +170,14 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
             if (db_find_failed_job_since(jcr, jcr->db, &jcr->jr, jcr->stime, JobLevel)) {
                Jmsg(jcr, M_INFO, 0, _("Prior failed job found. Upgrading to %s.\n"),
                   level_to_str(JobLevel));
-               bsnprintf(since, since_len, " (upgraded from %s)",
+               bsnprintf(since, since_len, _(" (upgraded from %s)"),
                   level_to_str(jcr->JobLevel));
                jcr->JobLevel = jcr->jr.JobLevel = JobLevel;
                jcr->jr.JobId = jcr->JobId;
                break;
             }
          }
-         bstrncpy(since, ", since=", since_len);
+         bstrncpy(since, _(", since="), since_len);
          bstrncat(since, jcr->stime, since_len);
       }
       jcr->jr.JobId = jcr->JobId;
@@ -193,7 +193,7 @@ static void send_since_time(JCR *jcr)
    char ed1[50];
 
    stime = str_to_utime(jcr->stime);
-   bnet_fsend(fd, levelcmd, "since_utime ", edit_uint64(stime, ed1), 0);
+   bnet_fsend(fd, levelcmd, _("since_utime "), edit_uint64(stime, ed1), 0);
    while (bget_dirmsg(fd) >= 0) {  /* allow him to poll us to sync clocks */
       Jmsg(jcr, M_INFO, 0, "%s\n", fd->msg);
    }
index 06c9d62b753c4f2439c51e62df8dbef9ccbf6244..b9d4247080c23e06f41f8e46d4992eda4a414028 100644 (file)
@@ -315,7 +315,7 @@ bool response(JCR *jcr, BSOCK *bs, char *resp, const char *cmd, e_prtmsg prtmsg)
       }
       Dmsg1(900, "Bad response: ERR=%s", bs->msg);
       if (prtmsg == DISPLAY_ERROR) {
-         Jmsg(jcr, M_FATAL, 0, _("Bad response to %s command: wanted %s got: %s\n"),
+         Jmsg(jcr, M_FATAL, 0, _("Bad response to %s command: wanted %s, got %s\n"),
             cmd, resp, bs->msg);
       }
       return false;
index c99b83f3df31f435f3825e9086273ddca58dae04..0ca26731ab20e9edf9dca00bbdf875e2a3eeef12 100644 (file)
@@ -246,7 +246,7 @@ static void scan_include_options(LEX *lc, int keyword, char *opts, int optlen)
          }
       }
       if (i != 0) {
-         scan_err1(lc, "Expected a FileSet option keyword, got:%s:", lc->str);
+         scan_err1(lc, _("Expected a FileSet option keyword, got:%s:"), lc->str);
       } else { /* add option */
          bstrncat(opts, option, optlen);
          Dmsg3(900, "Catopts=%s option=%s optlen=%d\n", opts, option,optlen);
@@ -315,7 +315,7 @@ static void store_newinc(LEX *lc, RES_ITEM *item, int index, int pass)
             if (!options) {
                token = lex_get_token(lc, T_SKIP_EOL);
                if (token != T_EQUALS) {
-                  scan_err1(lc, "expected an equals, got: %s", lc->str);
+                  scan_err1(lc, _("expected an equals, got: %s"), lc->str);
                }
             }
             /* Call item handler */
@@ -325,7 +325,7 @@ static void store_newinc(LEX *lc, RES_ITEM *item, int index, int pass)
          }
       }
       if (i >=0) {
-         scan_err1(lc, "Keyword %s not permitted in this resource", lc->str);
+         scan_err1(lc, _("Keyword %s not permitted in this resource"), lc->str);
       }
    }
    if (pass == 1) {
@@ -559,7 +559,7 @@ static void options_res(LEX *lc, RES_ITEM *item, int index, int pass)
 
    token = lex_get_token(lc, T_SKIP_EOL);
    if (token != T_BOB) {
-      scan_err1(lc, "Expecting open brace. Got %s", lc->str);
+      scan_err1(lc, _("Expecting open brace. Got %s"), lc->str);
    }
 
    if (pass == 1) {
@@ -580,7 +580,7 @@ static void options_res(LEX *lc, RES_ITEM *item, int index, int pass)
          if (strcasecmp(options_items[i].name, lc->str) == 0) {
             token = lex_get_token(lc, T_SKIP_EOL);
             if (token != T_EQUALS) {
-               scan_err1(lc, "expected an equals, got: %s", lc->str);
+               scan_err1(lc, _("expected an equals, got: %s"), lc->str);
             }
             /* Call item handler */
             options_items[i].handler(lc, &options_items[i], i, pass);
@@ -589,7 +589,7 @@ static void options_res(LEX *lc, RES_ITEM *item, int index, int pass)
          }
       }
       if (i >=0) {
-         scan_err1(lc, "Keyword %s not permitted in this resource", lc->str);
+         scan_err1(lc, _("Keyword %s not permitted in this resource"), lc->str);
       }
    }
 }
@@ -614,7 +614,7 @@ static void store_opts(LEX *lc, RES_ITEM *item, int index, int pass)
       }
    }
    if (keyword == INC_KW_NONE) {
-      scan_err1(lc, "Expected a FileSet keyword, got: %s", lc->str);
+      scan_err1(lc, _("Expected a FileSet keyword, got: %s"), lc->str);
    }
    /* Now scan for the value */
    scan_include_options(lc, keyword, inc_opts, sizeof(inc_opts));
index 03cbfac60ccb6c2953c669f1f21a214547c91912..faef49445ae0c4371c159e54b0b61582fe8fd43e 100644 (file)
@@ -226,7 +226,7 @@ static void *job_thread(void *arg)
       }
       break;
    default:
-      Pmsg1(0, "Unimplemented job type: %d\n", jcr->JobType);
+      Pmsg1(0, _("Unimplemented job type: %d\n"), jcr->JobType);
       set_jcr_job_status(jcr, JS_ErrorTerminated);
       break;
    }
@@ -304,7 +304,7 @@ static void *job_thread(void *arg)
          }
          break;
       default:
-         Pmsg1(0, "Unimplemented job type: %d\n", jcr->JobType);
+         Pmsg1(0, _("Unimplemented job type: %d\n"), jcr->JobType);
          break;
       }
       if ((jcr->job->RunAfterJob && jcr->JobStatus == JS_Terminated) ||
index c1f5a7866d06c0060ea075b56f98bd140e1e747c..7c0d86485f675d0364946e9960db863af5387156 100755 (executable)
@@ -64,7 +64,7 @@ int jobq_init(jobq_t *jq, int threads, void *(*engine)(void *arg))
 
    if ((stat = pthread_attr_init(&jq->attr)) != 0) {
       berrno be;
-      Jmsg1(NULL, M_ERROR, 0, "pthread_attr_init: ERR=%s\n", be.strerror(stat));
+      Jmsg1(NULL, M_ERROR, 0, _("pthread_attr_init: ERR=%s\n"), be.strerror(stat));
       return stat;
    }
    if ((stat = pthread_attr_setdetachstate(&jq->attr, PTHREAD_CREATE_DETACHED)) != 0) {
@@ -73,13 +73,13 @@ int jobq_init(jobq_t *jq, int threads, void *(*engine)(void *arg))
    }
    if ((stat = pthread_mutex_init(&jq->mutex, NULL)) != 0) {
       berrno be;
-      Jmsg1(NULL, M_ERROR, 0, "pthread_mutex_init: ERR=%s\n", be.strerror(stat));
+      Jmsg1(NULL, M_ERROR, 0, _("pthread_mutex_init: ERR=%s\n"), be.strerror(stat));
       pthread_attr_destroy(&jq->attr);
       return stat;
    }
    if ((stat = pthread_cond_init(&jq->work, NULL)) != 0) {
       berrno be;
-      Jmsg1(NULL, M_ERROR, 0, "pthread_cond_init: ERR=%s\n", be.strerror(stat));
+      Jmsg1(NULL, M_ERROR, 0, _("pthread_cond_init: ERR=%s\n"), be.strerror(stat));
       pthread_mutex_destroy(&jq->mutex);
       pthread_attr_destroy(&jq->attr);
       return stat;
@@ -112,7 +112,7 @@ int jobq_destroy(jobq_t *jq)
    }
    if ((stat = pthread_mutex_lock(&jq->mutex)) != 0) {
       berrno be;
-      Jmsg1(NULL, M_ERROR, 0, "pthread_mutex_lock: ERR=%s\n", be.strerror(stat));
+      Jmsg1(NULL, M_ERROR, 0, _("pthread_mutex_lock: ERR=%s\n"), be.strerror(stat));
       return stat;
    }
    jq->valid = 0;                      /* prevent any more operations */
@@ -125,7 +125,7 @@ int jobq_destroy(jobq_t *jq)
       if (jq->idle_workers) {
          if ((stat = pthread_cond_broadcast(&jq->work)) != 0) {
             berrno be;
-            Jmsg1(NULL, M_ERROR, 0, "pthread_cond_broadcast: ERR=%s\n", be.strerror(stat));
+            Jmsg1(NULL, M_ERROR, 0, _("pthread_cond_broadcast: ERR=%s\n"), be.strerror(stat));
             pthread_mutex_unlock(&jq->mutex);
             return stat;
          }
@@ -133,7 +133,7 @@ int jobq_destroy(jobq_t *jq)
       while (jq->num_workers > 0) {
          if ((stat = pthread_cond_wait(&jq->work, &jq->mutex)) != 0) {
             berrno be;
-            Jmsg1(NULL, M_ERROR, 0, "pthread_cond_wait: ERR=%s\n", be.strerror(stat));
+            Jmsg1(NULL, M_ERROR, 0, _("pthread_cond_wait: ERR=%s\n"), be.strerror(stat));
             pthread_mutex_unlock(&jq->mutex);
             return stat;
          }
@@ -141,7 +141,7 @@ int jobq_destroy(jobq_t *jq)
    }
    if ((stat = pthread_mutex_unlock(&jq->mutex)) != 0) {
       berrno be;
-      Jmsg1(NULL, M_ERROR, 0, "pthread_mutex_unlock: ERR=%s\n", be.strerror(stat));
+      Jmsg1(NULL, M_ERROR, 0, _("pthread_mutex_unlock: ERR=%s\n"), be.strerror(stat));
       return stat;
    }
    stat  = pthread_mutex_destroy(&jq->mutex);
@@ -232,14 +232,14 @@ int jobq_add(jobq_t *jq, JCR *jcr)
       stat = pthread_create(&id, &jq->attr, sched_wait, (void *)sched_pkt);        
       if (stat != 0) {                /* thread not created */
          berrno be;
-         Jmsg1(jcr, M_ERROR, 0, "pthread_thread_create: ERR=%s\n", be.strerror(stat));
+         Jmsg1(jcr, M_ERROR, 0, _("pthread_thread_create: ERR=%s\n"), be.strerror(stat));
       }
       return stat;
    }
 
    if ((stat = pthread_mutex_lock(&jq->mutex)) != 0) {
       berrno be;
-      Jmsg1(jcr, M_ERROR, 0, "pthread_mutex_lock: ERR=%s\n", be.strerror(stat));
+      Jmsg1(jcr, M_ERROR, 0, _("pthread_mutex_lock: ERR=%s\n"), be.strerror(stat));
       jcr->use_count--;               /* release jcr */
       return stat;
    }
@@ -304,7 +304,7 @@ int jobq_remove(jobq_t *jq, JCR *jcr)
 
    if ((stat = pthread_mutex_lock(&jq->mutex)) != 0) {
       berrno be;
-      Jmsg1(NULL, M_ERROR, 0, "pthread_mutex_lock: ERR=%s\n", be.strerror(stat));
+      Jmsg1(NULL, M_ERROR, 0, _("pthread_mutex_lock: ERR=%s\n"), be.strerror(stat));
       return stat;
    }
 
@@ -350,7 +350,7 @@ static int start_server(jobq_t *jq)
       Dmsg0(2300, "Signal worker to wake up\n");
       if ((stat = pthread_cond_broadcast(&jq->work)) != 0) {
          berrno be;
-         Jmsg1(NULL, M_ERROR, 0, "pthread_cond_signal: ERR=%s\n", be.strerror(stat));
+         Jmsg1(NULL, M_ERROR, 0, _("pthread_cond_signal: ERR=%s\n"), be.strerror(stat));
          return stat;
       }
    } else if (jq->num_workers < jq->max_workers) {
@@ -359,7 +359,7 @@ static int start_server(jobq_t *jq)
       set_thread_concurrency(jq->max_workers + 1);
       if ((stat = pthread_create(&id, &jq->attr, jobq_server, (void *)jq)) != 0) {
          berrno be;
-         Jmsg1(NULL, M_ERROR, 0, "pthread_create: ERR=%s\n", be.strerror(stat));
+         Jmsg1(NULL, M_ERROR, 0, _("pthread_create: ERR=%s\n"), be.strerror(stat));
          return stat;
       }
    }
@@ -385,7 +385,7 @@ void *jobq_server(void *arg)
    Dmsg0(2300, "Start jobq_server\n");
    if ((stat = pthread_mutex_lock(&jq->mutex)) != 0) {
       berrno be;
-      Jmsg1(NULL, M_ERROR, 0, "pthread_mutex_lock: ERR=%s\n", be.strerror(stat));
+      Jmsg1(NULL, M_ERROR, 0, _("pthread_mutex_lock: ERR=%s\n"), be.strerror(stat));
       return NULL;
    }
    jq->num_workers++;
index 9cf64be42cc6dadabcb452150f608b7e89d6b331..3356fb8a1e033233d1de57f0e0662547daecea68 100644 (file)
@@ -64,7 +64,7 @@ bool do_mac_init(JCR *jcr)
    Dmsg1(100, "find last jobid for: %s\n", NPRT(Name));
    if (!db_find_last_jobid(jcr, jcr->db, Name, &jr)) {
       Jmsg(jcr, M_FATAL, 0, _(
-           "Unable to find JobId of previous Job for this client.\n"));
+           _("Unable to find JobId of previous Job for this client.\n")));
       return false;
    }
    input_jobid = jr.JobId;
@@ -374,7 +374,7 @@ void mac_cleanup(JCR *jcr, int TermCode)
 
 // bmicrosleep(15, 0);               /* for debugging SIGHUP */
 
-   Jmsg(jcr, msg_type, 0, _("Bacula " VERSION " (" LSMDATE "): %s\n"
+   Jmsg(jcr, msg_type, 0, _("Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Backup Level:           %s%s\n"
@@ -398,6 +398,8 @@ void mac_cleanup(JCR *jcr, int TermCode)
 "  FD termination status:  %s\n"
 "  SD termination status:  %s\n"
 "  Termination:            %s\n\n"),
+   VERSION,
+   LSMDATE,
        edt,
        jcr->jr.JobId,
        jcr->jr.Job,
index 7dac9fee0b7f4593a91d5858f718764551f4e177..9da9150771622c76305603fcbdca15b57bf555cd 100644 (file)
@@ -40,7 +40,7 @@ static char jobcmd[]     = "JobId=%d job=%s job_name=%s client_name=%s "
 static char use_storage[] = "use storage=%s media_type=%s pool_name=%s "
    "pool_type=%s append=%d copy=%d stripe=%d\n";
 static char use_device[] = "use device=%s\n";
-//static char query_device[] = "query device=%s";
+//static char query_device[] = _("query device=%s");
 
 /* Response from Storage daemon */
 static char OKjob[]      = "3000 OK Job SDid=%d SDtime=%d Authorization=%100s\n";
index 6954d2ddfc2b86196870787794c969afff02a237..52086651a1e2a103d18398b78eda42b889611c38 100644 (file)
@@ -259,7 +259,7 @@ void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, const char **r
 
    /*  Check if a duration or limit has expired */
    if (has_volume_expired(jcr, mr)) {
-      *reason = "volume has expired";
+      *reason = _("volume has expired");
       /* Keep going because we may be able to recycle volume */
    }
 
@@ -277,18 +277,18 @@ void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, const char **r
     */
    if (strcmp(mr->VolStatus, "Purged") == 0) {
       if (recycle_volume(jcr, mr)) {
-         Jmsg(jcr, M_INFO, 0, "Recycled current volume \"%s\"\n", mr->VolumeName);
+         Jmsg(jcr, M_INFO, 0, _("Recycled current volume \"%s\"\n"), mr->VolumeName);
          *reason = NULL;
          return;
       } else {
          /* In principle this shouldn't happen */
-         *reason = "and recycling of current volume failed";
+         *reason = _("and recycling of current volume failed");
          return;
       }
    }
 
    /* At this point, the volume is not valid for writing */
-   *reason = "but should be Append, Purged or Recycle";
+   *reason = _("but should be Append, Purged or Recycle");
 
    /*
     * What we're trying to do here is see if the current volume is
@@ -313,15 +313,15 @@ void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, const char **r
       if (ok) {
          /* If fully purged, recycle current volume */
          if (recycle_volume(jcr, mr)) {
-            Jmsg(jcr, M_INFO, 0, "Recycled current volume \"%s\"\n", mr->VolumeName);
+            Jmsg(jcr, M_INFO, 0, _("Recycled current volume \"%s\"\n"), mr->VolumeName);
             *reason = NULL;
          } else {
-            *reason = "but should be Append, Purged or Recycle (recycling of the "
-               "current volume failed)";
+            *reason = _("but should be Append, Purged or Recycle (recycling of the "
+               "current volume failed)");
          }
       } else {
-         *reason = "but should be Append, Purged or Recycle (cannot automatically "
-            "recycle current volume, as it still contains unpruned data)";
+         *reason = _("but should be Append, Purged or Recycle (cannot automatically "
+            "recycle current volume, as it still contains unpruned data)");
       }
    }
 }
index 64388426b8585a1ca1d5b2abe4f795b215e11582..5893be1d784425f1e7b7bdd31ebf02ed4ab8065a 100644 (file)
@@ -101,7 +101,7 @@ PyObject *job_getattr(PyObject *self, char *attrname)
    Dmsg0(100, "In job_getattr.\n");
    jcr = get_jcr_from_PyObject(self);
    if (!jcr) {
-      bstrncpy(errmsg, "Job pointer not found.", sizeof(errmsg));
+      bstrncpy(errmsg, _("Job pointer not found."), sizeof(errmsg));
       goto bail_out;
    }
    for (i=0; getvars[i].name; i++) {
@@ -133,7 +133,7 @@ PyObject *job_getattr(PyObject *self, char *attrname)
          jcr->NumVols = pr.NumVols;
          return Py_BuildValue(getvars[i].fmt, jcr->NumVols);
       } else {
-         bsnprintf(errmsg, sizeof(errmsg), "Pool record not found.");
+         bsnprintf(errmsg, sizeof(errmsg), _("Pool record not found."));
          goto bail_out;
       }
    case 6:                            /* Pool */
@@ -160,7 +160,7 @@ PyObject *job_getattr(PyObject *self, char *attrname)
          catalog_db);
 
    }
-   bsnprintf(errmsg, sizeof(errmsg), "Attribute %s not found.", attrname);
+   bsnprintf(errmsg, sizeof(errmsg), _("Attribute %s not found."), attrname);
 bail_out:
    PyErr_SetString(PyExc_AttributeError, errmsg);
    return NULL;
@@ -203,13 +203,13 @@ int job_setattr(PyObject *self, char *attrname, PyObject *value)
       switch (setvars[i].fmt[0]) {
       case 's':
          if (!PyArg_Parse(value, setvars[i].fmt, &strval)) {
-            PyErr_SetString(PyExc_TypeError, "Read-only attribute");
+            PyErr_SetString(PyExc_TypeError, _("Read-only attribute"));
             return -1;
          }
          break;
       case 'i':
          if (!PyArg_Parse(value, setvars[i].fmt, &intval)) {
-            PyErr_SetString(PyExc_TypeError, "Read-only attribute");
+            PyErr_SetString(PyExc_TypeError, _("Read-only attribute"));
             return -1;
          }
          break;
index c242d1bc8116eddb2ce0cf475081d0dd8cc097d0..633cb5d35aa42626bb18cd31be5a34dbd217f1f7 100644 (file)
@@ -99,7 +99,7 @@ int recycle_oldest_purged_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
       mr->MediaId = oldest.MediaId;
       if (db_get_media_record(jcr, jcr->db, mr)) {
         if (recycle_volume(jcr, mr)) {
-            Jmsg(jcr, M_INFO, 0, "Recycled volume \"%s\"\n", mr->VolumeName);
+            Jmsg(jcr, M_INFO, 0, _("Recycled volume \"%s\"\n"), mr->VolumeName);
             Dmsg1(100, "return 1  recycle_oldest_purged_volume Vol=%s\n", mr->VolumeName);
            return 1;
         }
index 9c0d1573cc916397556290e6f379d99d91877527..2e1d24fe4beac24a5080fdfb327be1fbde6a3d12 100644 (file)
@@ -272,7 +272,7 @@ void restore_cleanup(JCR *jcr, int TermCode)
    jobstatus_to_ascii(jcr->FDJobStatus, fd_term_msg, sizeof(fd_term_msg));
    jobstatus_to_ascii(jcr->SDJobStatus, sd_term_msg, sizeof(sd_term_msg));
 
-   Jmsg(jcr, msg_type, 0, _("Bacula " VERSION " (" LSMDATE "): %s\n"
+   Jmsg(jcr, msg_type, 0, _("Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  Client:                 %s\n"
@@ -286,6 +286,8 @@ void restore_cleanup(JCR *jcr, int TermCode)
 "  FD termination status:  %s\n"
 "  SD termination status:  %s\n"
 "  Termination:            %s\n\n"),
+        VERSION,
+        LSMDATE,
         edt,
         jcr->jr.JobId,
         jcr->jr.Job,
index a5d354a7e6b547a3890e0fb79e2c964e44e27117..2a06fc5afff931f782ef294aa0216957889432b8 100644 (file)
@@ -185,7 +185,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
          if (strcasecmp(lc->str, RunFields[i].name) == 0) {
             found = true;
             if (lex_get_token(lc, T_ALL) != T_EQUALS) {
-               scan_err1(lc, "Expected an equals, got: %s", lc->str);
+               scan_err1(lc, _("Expected an equals, got: %s"), lc->str);
                /* NOT REACHED */
             }
             switch (RunFields[i].token) {
@@ -242,7 +242,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
                if (pass == 2) {
                   res = GetResWithName(R_POOL, lc->str);
                   if (res == NULL) {
-                     scan_err1(lc, "Could not find specified Pool Resource: %s",
+                     scan_err1(lc, _("Could not find specified Pool Resource: %s"),
                                 lc->str);
                      /* NOT REACHED */
                   }
@@ -267,7 +267,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
                if (pass == 2) {
                   res = GetResWithName(R_STORAGE, lc->str);
                   if (res == NULL) {
-                     scan_err1(lc, "Could not find specified Storage Resource: %s",
+                     scan_err1(lc, _("Could not find specified Storage Resource: %s"),
                                 lc->str);
                      /* NOT REACHED */
                   }
@@ -279,7 +279,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
                if (pass == 2) {
                   res = GetResWithName(R_MSGS, lc->str);
                   if (res == NULL) {
-                     scan_err1(lc, "Could not find specified Messages Resource: %s",
+                     scan_err1(lc, _("Could not find specified Messages Resource: %s"),
                                 lc->str);
                      /* NOT REACHED */
                   }
@@ -287,7 +287,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
                }
                break;
             default:
-               scan_err1(lc, "Expected a keyword name, got: %s", lc->str);
+               scan_err1(lc, _("Expected a keyword name, got: %s"), lc->str);
                /* NOT REACHED */
                break;
             } /* end switch */
index b1361ebfa3813066a408fefe42bb18c235777950..a2a977ebb51a9f46bb5d1f69a2b560ac58c02b07 100644 (file)
@@ -99,7 +99,7 @@ JCR *wait_for_next_job(char *one_shot_job_to_run)
 #ifdef  list_chain
    job_item *je;
    foreach_dlist(je, jobs_to_run) {
-      dump_job(je, "Walk queue");
+      dump_job(je, _("Walk queue"));
    }
 #endif
    /*
@@ -109,7 +109,7 @@ JCR *wait_for_next_job(char *one_shot_job_to_run)
    next_job = (job_item *)jobs_to_run->first();
    jobs_to_run->remove(next_job);
 
-   dump_job(next_job, "Dequeued job");
+   dump_job(next_job, _("Dequeued job"));
 
    if (!next_job) {                /* we really should have something now */
       Emsg0(M_ABORT, 0, _("Scheduler logic error\n"));
@@ -129,7 +129,7 @@ JCR *wait_for_next_job(char *one_shot_job_to_run)
    job = next_job->job;
    run->last_run = now;               /* mark as run now */
 
-   dump_job(next_job, "Run job");
+   dump_job(next_job, _("Run job"));
 
    free(next_job);
 
@@ -342,7 +342,7 @@ static void add_job(JOB *job, RUN *run, time_t now, time_t runtime)
       if (ji->runtime > je->runtime ||
           (ji->runtime == je->runtime && ji->Priority > je->Priority)) {
          jobs_to_run->insert_before(je, ji);
-         dump_job(je, "Inserted job");
+         dump_job(je, _("Inserted job"));
          inserted = true;
          break;
       }
@@ -350,11 +350,11 @@ static void add_job(JOB *job, RUN *run, time_t now, time_t runtime)
    /* If place not found in queue, append it */
    if (!inserted) {
       jobs_to_run->append(je);
-      dump_job(je, "Appended job");
+      dump_job(je, _("Appended job"));
    }
 #ifdef SCHED_DEBUG
    foreach_dlist(ji, jobs_to_run) {
-      dump_job(ji, "Run queue");
+      dump_job(ji, _("Run queue"));
    }
    Dmsg0(000, "End run queue\n");
 #endif
index ba2208487c3eafdf4273571518c893555767e359..04f8672e7825c9a499367db855491404689f0a9d 100644 (file)
@@ -414,7 +414,7 @@ static int cancel_cmd(UAContext *ua, const char *cmd)
             free_jcr(jcr);
             continue;
          }
-         bsnprintf(buf, sizeof(buf), "JobId=%s Job=%s", edit_int64(jcr->JobId, ed1), jcr->Job);
+         bsnprintf(buf, sizeof(buf), _("JobId=%s Job=%s"), edit_int64(jcr->JobId, ed1), jcr->Job);
          add_prompt(ua, buf);
          free_jcr(jcr);
       }
@@ -753,7 +753,7 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
    Dmsg1(120, "setdebug:%s:\n", cmd);
 
    level = -1;
-   i = find_arg_with_value(ua, _("level"));
+   i = find_arg_with_value(ua, "level");
    if (i >= 0) {
       level = atoi(ua->argv[i]);
    }
@@ -765,7 +765,7 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
    }
 
    /* Look for trace flag. -1 => not change */
-   i = find_arg_with_value(ua, _("trace"));
+   i = find_arg_with_value(ua, "trace");
    if (i >= 0) {
       trace_flag = atoi(ua->argv[i]);
       if (trace_flag > 0) {
@@ -775,18 +775,18 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
 
    /* General debug? */
    for (i=1; i<ua->argc; i++) {
-      if (strcasecmp(ua->argk[i], _("all")) == 0) {
+      if (strcasecmp(ua->argk[i], "all") == 0) {
          do_all_setdebug(ua, level, trace_flag);
          return 1;
       }
-      if (strcasecmp(ua->argk[i], _("dir")) == 0 ||
-          strcasecmp(ua->argk[i], _("director")) == 0) {
+      if (strcasecmp(ua->argk[i], "dir") == 0 ||
+          strcasecmp(ua->argk[i], "director") == 0) {
          debug_level = level;
          set_trace(trace_flag);
          return 1;
       }
-      if (strcasecmp(ua->argk[i], _("client")) == 0 ||
-          strcasecmp(ua->argk[i], _("fd")) == 0) {
+      if (strcasecmp(ua->argk[i], "client") == 0 ||
+          strcasecmp(ua->argk[i], "fd") == 0) {
          client = NULL;
          if (ua->argv[i]) {
             client = (CLIENT *)GetResWithName(R_CLIENT, ua->argv[i]);
@@ -802,9 +802,9 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
          }
       }
 
-      if (strcasecmp(ua->argk[i], _("store")) == 0 ||
-          strcasecmp(ua->argk[i], _("storage")) == 0 ||
-          strcasecmp(ua->argk[i], _("sd")) == 0) {
+      if (strcasecmp(ua->argk[i], "store") == 0 ||
+          strcasecmp(ua->argk[i], "storage") == 0 ||
+          strcasecmp(ua->argk[i], "sd") == 0) {
          store = NULL;
          if (ua->argv[i]) {
             store = (STORE *)GetResWithName(R_STORAGE, ua->argv[i]);
@@ -825,10 +825,10 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
     * prompt the user.
     */
    start_prompt(ua, _("Available daemons are: \n"));
-   add_prompt(ua, _("Director"));
-   add_prompt(ua, _("Storage"));
-   add_prompt(ua, _("Client"));
-   add_prompt(ua, _("All"));
+   add_prompt(ua, "Director");
+   add_prompt(ua, "Storage");
+   add_prompt(ua, "Client");
+   add_prompt(ua, "All");
    switch(do_prompt(ua, "", _("Select daemon type to set debug level"), NULL, 0)) {
    case 0:                         /* Director */
       debug_level = level;
@@ -909,30 +909,30 @@ static int estimate_cmd(UAContext *ua, const char *cmd)
 
    jcr->JobLevel = L_FULL;
    for (int i=1; i<ua->argc; i++) {
-      if (strcasecmp(ua->argk[i], _("client")) == 0 ||
-          strcasecmp(ua->argk[i], _("fd")) == 0) {
+      if (strcasecmp(ua->argk[i], "client") == 0 ||
+          strcasecmp(ua->argk[i], "fd") == 0) {
          if (ua->argv[i]) {
             client = (CLIENT *)GetResWithName(R_CLIENT, ua->argv[i]);
             continue;
          }
       }
-      if (strcasecmp(ua->argk[i], _("job")) == 0) {
+      if (strcasecmp(ua->argk[i], "job") == 0) {
          if (ua->argv[i]) {
             job = (JOB *)GetResWithName(R_JOB, ua->argv[i]);
             continue;
          }
       }
-      if (strcasecmp(ua->argk[i], _("fileset")) == 0) {
+      if (strcasecmp(ua->argk[i], "fileset") == 0) {
          if (ua->argv[i]) {
             fileset = (FILESET *)GetResWithName(R_FILESET, ua->argv[i]);
             continue;
          }
       }
-      if (strcasecmp(ua->argk[i], _("listing")) == 0) {
+      if (strcasecmp(ua->argk[i], "listing") == 0) {
          listing = 1;
          continue;
       }
-      if (strcasecmp(ua->argk[i], _("level")) == 0) {
+      if (strcasecmp(ua->argk[i], "level") == 0) {
          if (!get_level_from_name(ua->jcr, ua->argv[i])) {
             bsendmsg(ua, _("Level %s not valid.\n"), ua->argv[i]);
          }
@@ -1068,7 +1068,7 @@ static int delete_cmd(UAContext *ua, const char *cmd)
       return 1;
    case 2:
       int i;
-      while ((i=find_arg(ua, _("jobid"))) > 0) {
+      while ((i=find_arg(ua, "jobid")) > 0) {
          delete_job(ua);
          *ua->argk[i] = 0;         /* zap keyword already visited */
       }
@@ -1112,7 +1112,7 @@ static void delete_job(UAContext *ua)
    JobId_t JobId;
    char *s,*sep,*tok;
 
-   int i = find_arg_with_value(ua, _("jobid"));
+   int i = find_arg_with_value(ua, N_("jobid"));
    if (i >= 0) {
       if (strchr(ua->argv[i], ',') != NULL || strchr(ua->argv[i], '-') != NULL) {
         s = bstrdup(ua->argv[i]);
@@ -1379,14 +1379,14 @@ int qhelp_cmd(UAContext *ua, const char *cmd)
    unsigned int i;
 
    for (i=0; i<comsize; i++) {
-      bsendmsg(ua, _("%s %s\n"), _(commands[i].key), _(commands[i].help));
+      bsendmsg(ua, "%s %s\n", _(commands[i].key), _(commands[i].help));
    }
    return 1;
 }
 
 static int version_cmd(UAContext *ua, const char *cmd)
 {
-   bsendmsg(ua, "%s Version: " VERSION " (" BDATE ")\n", my_name);
+   bsendmsg(ua, _("%s Version: %s (%s)\n"), my_name, VERSION, BDATE);
    return 1;
 }
 
index 569d8ae4ef344fe77a1a2df72e41d73a44f22071..db41f08611a0ead2a694b09c92e8811c43950946 100644 (file)
@@ -118,7 +118,7 @@ static int diecmd(UAContext *ua, const char *cmd)
    JCR *jcr = NULL;
    int a;
 
-   bsendmsg(ua, "The Director will segment fault.\n");
+   bsendmsg(ua, _("The Director will segment fault.\n"));
    a = jcr->JobId; /* ref NULL pointer */
    jcr->JobId = 1000; /* another ref NULL pointer */
    return 0;
index e4ecafd2a9aa544a338c58e353fd661ad35f3282..f1101d2cd09c95a095d665e17e16f86d0c81c555 100644 (file)
@@ -79,17 +79,17 @@ bool get_pint(UAContext *ua, const char *prompt)
          return false;
       }
       /* Kludge for slots blank line => 0 */
-      if (ua->cmd[0] == 0 && strncmp(prompt, "Enter slot", 10) == 0) {
+      if (ua->cmd[0] == 0 && strncmp(prompt, _("Enter slot"), strlen(_("Enter slot"))) == 0) {
          return true;
       }
       if (!is_a_number(ua->cmd)) {
-         bsendmsg(ua, "Expected a positive integer, got: %s\n", ua->cmd);
+         bsendmsg(ua, _("Expected a positive integer, got: %s\n"), ua->cmd);
          continue;
       }
       errno = 0;
       dval = strtod(ua->cmd, NULL);
       if (errno != 0 || dval < 0) {
-         bsendmsg(ua, "Expected a positive integer, got: %s\n", ua->cmd);
+         bsendmsg(ua, _("Expected a positive integer, got: %s\n"), ua->cmd);
          continue;
       }
       ua->pint32_val = (uint32_t)dval;
index f9c53967179dc5a4681bee4d8c0d7ab3cce3a8cf..408f04f5406574966983cea31f6e41242757d309 100644 (file)
@@ -167,7 +167,7 @@ int update_slots(UAContext *ua)
    }
    set_storage(ua->jcr, store);
 
-   scan = find_arg(ua, _("scan")) >= 0;
+   scan = find_arg(ua, N_("scan")) >= 0;
 
    max_slots = get_num_slots_from_SD(ua);
    if (max_slots <= 0) {
@@ -508,7 +508,7 @@ static void label_from_barcodes(UAContext *ua)
              mr.InChanger = 1;
              mr.StorageId = store->StorageId;
              if (!db_update_media_record(ua->jcr, ua->db, &mr)) {
-                bsendmsg(ua, "Error setting InChanger: ERR=%s", db_strerror(ua->db));
+                bsendmsg(ua, _("Error setting InChanger: ERR=%s"), db_strerror(ua->db));
              }
              continue;
           }
@@ -540,7 +540,7 @@ static void label_from_barcodes(UAContext *ua)
                   bsendmsg(ua, "%s", db_strerror(ua->db));
                }
             } else {
-               bsendmsg(ua, "Catalog error on cleaning tape: %s", db_strerror(ua->db));
+               bsendmsg(ua, _("Catalog error on cleaning tape: %s"), db_strerror(ua->db));
             }
          }
          continue;                    /* done, go handle next volume */
index 09f44df8b4cde99034572626af31919e0903d502..e68100bcf416cfe22dd04f5d18fde928572e3f57 100644 (file)
@@ -256,20 +256,20 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
    /* Scan arguments looking for things to do */
    for (i=1; i<ua->argc; i++) {
       /* List JOBS */
-      if (strcasecmp(ua->argk[i], _("jobs")) == 0) {
+      if (strcasecmp(ua->argk[i], N_("jobs")) == 0) {
         /* Apply any limit */
-         j = find_arg_with_value(ua, _("limit"));
+         j = find_arg_with_value(ua, N_("limit"));
         if (j >= 0) {
            jr.limit = atoi(ua->argv[j]);
         }
         db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua, llist);
 
         /* List JOBTOTALS */
-      } else if (strcasecmp(ua->argk[i], _("jobtotals")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("jobtotals")) == 0) {
         db_list_job_totals(ua->jcr, ua->db, &jr, prtit, ua);
 
       /* List JOBID */
-      } else if (strcasecmp(ua->argk[i], _("jobid")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("jobid")) == 0) {
         if (ua->argv[i]) {
            jobid = str_to_int64(ua->argv[i]);
            if (jobid > 0) {
@@ -279,21 +279,21 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
         }
 
       /* List JOB */
-      } else if (strcasecmp(ua->argk[i], _("job")) == 0 && ua->argv[i]) {
+      } else if (strcasecmp(ua->argk[i], N_("job")) == 0 && ua->argv[i]) {
         bstrncpy(jr.Job, ua->argv[i], MAX_NAME_LENGTH);
         jr.JobId = 0;
         db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua, llist);
 
       /* List FILES */
-      } else if (strcasecmp(ua->argk[i], _("files")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("files")) == 0) {
 
         for (j=i+1; j<ua->argc; j++) {
-            if (strcasecmp(ua->argk[j], _("job")) == 0 && ua->argv[j]) {
+            if (strcasecmp(ua->argk[j], N_("job")) == 0 && ua->argv[j]) {
               bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH);
               jr.JobId = 0;
               db_get_job_record(ua->jcr, ua->db, &jr);
               jobid = jr.JobId;
-            } else if (strcasecmp(ua->argk[j], _("jobid")) == 0 && ua->argv[j]) {
+            } else if (strcasecmp(ua->argk[j], N_("jobid")) == 0 && ua->argv[j]) {
               jobid = str_to_int64(ua->argv[j]);
            } else {
               continue;
@@ -304,15 +304,15 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
         }
 
       /* List JOBMEDIA */
-      } else if (strcasecmp(ua->argk[i], _("jobmedia")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("jobmedia")) == 0) {
         int done = FALSE;
         for (j=i+1; j<ua->argc; j++) {
-            if (strcasecmp(ua->argk[j], _("job")) == 0 && ua->argv[j]) {
+            if (strcasecmp(ua->argk[j], N_("job")) == 0 && ua->argv[j]) {
               bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH);
               jr.JobId = 0;
               db_get_job_record(ua->jcr, ua->db, &jr);
               jobid = jr.JobId;
-            } else if (strcasecmp(ua->argk[j], _("jobid")) == 0 && ua->argv[j]) {
+            } else if (strcasecmp(ua->argk[j], N_("jobid")) == 0 && ua->argv[j]) {
               jobid = str_to_int64(ua->argv[j]);
            } else {
               continue;
@@ -326,24 +326,24 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
         }
 
       /* List POOLS */
-      } else if (strcasecmp(ua->argk[i], _("pools")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("pools")) == 0) {
         db_list_pool_records(ua->jcr, ua->db, prtit, ua, llist);
 
-      } else if (strcasecmp(ua->argk[i], _("clients")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("clients")) == 0) {
         db_list_client_records(ua->jcr, ua->db, prtit, ua, llist);
 
 
       /* List MEDIA or VOLUMES */
-      } else if (strcasecmp(ua->argk[i], _("media")) == 0 ||
-                 strcasecmp(ua->argk[i], _("volumes")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("media")) == 0 ||
+                 strcasecmp(ua->argk[i], N_("volumes")) == 0) {
         bool done = false;
         for (j=i+1; j<ua->argc; j++) {
-            if (strcasecmp(ua->argk[j], _("job")) == 0 && ua->argv[j]) {
+            if (strcasecmp(ua->argk[j], N_("job")) == 0 && ua->argv[j]) {
               bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH);
               jr.JobId = 0;
               db_get_job_record(ua->jcr, ua->db, &jr);
               jobid = jr.JobId;
-            } else if (strcasecmp(ua->argk[j], _("jobid")) == 0 && ua->argv[j]) {
+            } else if (strcasecmp(ua->argk[j], N_("jobid")) == 0 && ua->argv[j]) {
               jobid = str_to_int64(ua->argv[j]);
            } else {
               continue;
@@ -360,7 +360,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
            uint32_t *ids;
            /* Is a specific pool wanted? */
            for (i=1; i<ua->argc; i++) {
-               if (strcasecmp(ua->argk[i], _("pool")) == 0) {
+               if (strcasecmp(ua->argk[i], N_("pool")) == 0) {
                  if (!get_pool_dbr(ua, &pr)) {
                      bsendmsg(ua, _("No Pool specified.\n"));
                     return 1;
@@ -391,7 +391,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
            return 1;
         }
       /* List a specific volume */
-      } else if (strcasecmp(ua->argk[i], _("volume")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("volume")) == 0) {
         if (!ua->argv[i]) {
             bsendmsg(ua, _("No Volume Name specified.\n"));
            return 1;
@@ -400,10 +400,10 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
         db_list_media_records(ua->jcr, ua->db, &mr, prtit, ua, llist);
         return 1;
       /* List next volume */
-      } else if (strcasecmp(ua->argk[i], _("nextvol")) == 0 ||
-                 strcasecmp(ua->argk[i], _("nextvolume")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("nextvol")) == 0 ||
+                 strcasecmp(ua->argk[i], N_("nextvolume")) == 0) {
         list_nextvol(ua);
-      } else if (strcasecmp(ua->argk[i], _("limit")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("limit")) == 0) {
         /* Ignore it */
       } else {
          bsendmsg(ua, _("Unknown list keyword: %s\n"), NPRT(ua->argk[i]));
index 840902e945740a1014ab411f0552e0337abebf3a..18641bbedce8914b1e6e567b2f7788871f5404a9 100644 (file)
@@ -499,14 +499,14 @@ int prune_volume(UAContext *ua, MEDIA_DBR *mr)
    if (cnt.count == 0) {
       /* Don't mark appendable volume as purged */
       if (strcmp(mr->VolStatus, "Append") == 0 && verbose) {
-         bsendmsg(ua, "There are no Jobs associated with Volume \"%s\". Prune not needed.\n",
+         bsendmsg(ua, _("There are no Jobs associated with Volume \"%s\". Prune not needed.\n"),
             mr->VolumeName);
          stat = 1;
          goto bail_out;
       }
       /* If volume not already purged, do so */
       if (strcmp(mr->VolStatus, "Purged") != 0 && verbose) {
-         bsendmsg(ua, "There are no Jobs associated with Volume \"%s\". Marking it purged.\n",
+         bsendmsg(ua, _("There are no Jobs associated with Volume \"%s\". Marking it purged.\n"),
             mr->VolumeName);
       }
       stat = mark_media_purged(ua, mr);
index df739c96862e74bad2b9823ae956cc9f9a12a6cd..c5d969425cc991284266f41ef73b8c19152d6577 100644 (file)
@@ -229,7 +229,7 @@ int purgecmd(UAContext *ua, const char *cmd)
       }
    /* Volume */
    case 2:
-      while ((i=find_arg(ua, _("volume"))) >= 0) {
+      while ((i=find_arg(ua, N_("volume"))) >= 0) {
          if (select_media_dbr(ua, &mr)) {
             purge_jobs_from_volume(ua, &mr);
          }
@@ -485,7 +485,7 @@ int purge_jobs_from_volume(UAContext *ua, MEDIA_DBR *mr)
    }
 
    if (cnt.count == 0) {
-      bsendmsg(ua, "There are no Jobs associated with Volume \"%s\". Marking it purged.\n",
+      bsendmsg(ua, _("There are no Jobs associated with Volume \"%s\". Marking it purged.\n"),
          mr->VolumeName);
       if (!mark_media_purged(ua, mr)) {
          bsendmsg(ua, "%s", db_strerror(ua->db));
@@ -552,7 +552,7 @@ int purge_jobs_from_volume(UAContext *ua, MEDIA_DBR *mr)
    }
 
    if (cnt.count == 0) {
-      bsendmsg(ua, "There are no more Jobs associated with Volume \"%s\". Marking it purged.\n",
+      bsendmsg(ua, _("There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"),
          mr->VolumeName);
       if (!(stat = mark_media_purged(ua, mr))) {
          bsendmsg(ua, "%s", db_strerror(ua->db));
index fd55b19d3226e4e5131a1467fedecb4d73072119..ba8cd815343298edf1fa2cf161791c2825931d96 100644 (file)
@@ -56,7 +56,7 @@ int querycmd(UAContext *ua, const char *cmd)
       goto bail_out;
    }
    if ((fd=fopen(query_file, "r")) == NULL) {
-      bsendmsg(ua, "Could not open %s: ERR=%s\n", query_file,
+      bsendmsg(ua, _("Could not open %s: ERR=%s\n"), query_file,
          strerror(errno));
       goto bail_out;
    }
@@ -252,7 +252,7 @@ int sqlquerycmd(UAContext *ua, const char *cmd)
    bsendmsg(ua, _("Entering SQL query mode.\n"
 "Terminate each query with a semicolon.\n"
 "Terminate query mode with a blank line.\n"));
-   msg = "Enter SQL query: ";
+   msg = _("Enter SQL query: ");
    while (get_cmd(ua, msg)) {
       len = strlen(ua->cmd);
       Dmsg2(400, "len=%d cmd=%s:\n", len, ua->cmd);
index ef8d764595f0b5b2a14f8f8391ab645c5da36b4b..a0fde9b6aaa643a0d0acd07a95499c50be0e34e2 100644 (file)
@@ -186,8 +186,12 @@ int restore_cmd(UAContext *ua, const char *cmd)
       if (rx.selected_files == 0) {
          rx.selected_files = selected_files;
       }
-      bsendmsg(ua, _("\n%u file%s selected to be restored.\n\n"), rx.selected_files,
-         rx.selected_files==1?"":"s");
+      if (rx.selected_files==1) {
+         bsendmsg(ua, _("\n1 file selected to be restored.\n\n"));
+      }
+      else {
+         bsendmsg(ua, _("\n%u files selected to be restored.\n\n"), rx.selected_files);
+      }
    } else {
       bsendmsg(ua, _("No files selected to be restored.\n"));
       goto bail_out;
@@ -225,7 +229,7 @@ int restore_cmd(UAContext *ua, const char *cmd)
           fname, rx.selected_files, ua->catalog->hdr.name);
    }
    free_pool_memory(fname);
-   if (find_arg(ua, _("yes")) > 0) {
+   if (find_arg(ua, N_("yes")) > 0) {
       pm_strcat(ua->cmd, " yes");    /* pass it on to the run command */
    }
    Dmsg1(400, "Submitting: %s\n", ua->cmd);
@@ -269,7 +273,7 @@ static int get_client_name(UAContext *ua, RESTORE_CTX *rx)
    if (!rx->ClientName[0]) {
       CLIENT_DBR cr;
       /* try command line argument */
-      int i = find_arg_with_value(ua, _("client"));
+      int i = find_arg_with_value(ua, N_("client"));
       if (i >= 0) {
          bstrncpy(rx->ClientName, ua->argv[i], sizeof(rx->ClientName));
          return 1;
@@ -302,18 +306,18 @@ static int user_select_jobids_or_files(UAContext *ua, RESTORE_CTX *rx)
    bool done = false;
    int i, j;
    const char *list[] = {
-      "List last 20 Jobs run",
-      "List Jobs where a given File is saved",
-      "Enter list of comma separated JobIds to select",
-      "Enter SQL list command",
-      "Select the most recent backup for a client",
-      "Select backup for a client before a specified time",
-      "Enter a list of files to restore",
-      "Enter a list of files to restore before a specified time",
-      "Find the JobIds of the most recent backup for a client",
-      "Find the JobIds for a backup for a client before a specified time",
-      "Enter a list of directories to restore for found JobIds",
-      "Cancel",
+      _("List last 20 Jobs run"),
+      _("List Jobs where a given File is saved"),
+      _("Enter list of comma separated JobIds to select"),
+      _("Enter SQL list command"),
+      _("Select the most recent backup for a client"),
+      _("Select backup for a client before a specified time"),
+      _("Enter a list of files to restore"),
+      _("Enter a list of files to restore before a specified time"),
+      _("Find the JobIds of the most recent backup for a client"),
+      _("Find the JobIds for a backup for a client before a specified time"),
+      _("Enter a list of directories to restore for found JobIds"),
+      _("Cancel"),
       NULL };
 
    const char *kw[] = {
@@ -616,8 +620,12 @@ static int user_select_jobids_or_files(UAContext *ua, RESTORE_CTX *rx)
       bsendmsg(ua, _("No Jobs selected.\n"));
       return 0;
    }
-   bsendmsg(ua, _("You have selected the following JobId%s: %s\n"),
-      strchr(rx->JobIds,',')?"s":"",rx->JobIds);
+   if (strchr(rx->JobIds,',')) {
+      bsendmsg(ua, _("You have selected the following JobIds: %s\n"), rx->JobIds);
+   }
+   else {
+      bsendmsg(ua, _("You have selected the following JobId: %s\n"), rx->JobIds);
+   }
 
    memset(&jr, 0, sizeof(JOB_DBR));
 
@@ -903,8 +911,8 @@ static bool build_directory_tree(UAContext *ua, RESTORE_CTX *rx)
       }
    }
    if (tree.FileCount == 0) {
-      bsendmsg(ua, "\nThere were no files inserted into the tree, so file selection\n"
-         "is not possible.Most likely your retention policy pruned the files\n");
+      bsendmsg(ua, _("\nThere were no files inserted into the tree, so file selection\n"
+         "is not possible.Most likely your retention policy pruned the files\n"));
       if (!get_yesno(ua, _("\nDo you want to restore all the files? (yes|no): "))) {
          OK = false;
       } else {
@@ -919,14 +927,31 @@ static bool build_directory_tree(UAContext *ua, RESTORE_CTX *rx)
       }
    } else {
       char ec1[50];
-      bsendmsg(ua, "\n%d Job%s, %s files inserted into the tree%s.\n",
-         items, items==1?"":"s", edit_uint64_with_commas(tree.FileCount, ec1),
-         tree.all?" and marked for extraction":"");
+      if (items==1) {
+         if (tree.all) {
+            bsendmsg(ua, _("\n1 Job, %s files inserted into the tree and marked for extraction.\n"),
+              edit_uint64_with_commas(tree.FileCount, ec1));
+         }
+         else {
+            bsendmsg(ua, _("\n1 Job, %s files inserted into the tree.\n"),
+              edit_uint64_with_commas(tree.FileCount, ec1));
+         }
+      }
+      else {
+         if (tree.all) {
+            bsendmsg(ua, _("\n%d Jobs, %s files inserted into the tree and marked for extraction.\n"),
+              items, edit_uint64_with_commas(tree.FileCount, ec1));
+         }
+         else {
+            bsendmsg(ua, _("\n%d Jobs, %s files inserted into the tree.\n"),
+              items, edit_uint64_with_commas(tree.FileCount, ec1));
+         }
+      }
 
       /* Check MediaType and select storage that corresponds */
       get_storage_from_mediatype(ua, &rx->name_list, rx);
 
-      if (find_arg(ua, _("done")) < 0) {
+      if (find_arg(ua, N_("done")) < 0) {
          /* Let the user interact in selecting which files to restore */
          OK = user_select_files_from_tree(&tree);
       }
index 21d15d76286f338f4210ea4966b7cf1bd61a739a..2373114527d2c16cce9bdff8084e010c355cde8b 100644 (file)
@@ -461,7 +461,7 @@ int run_cmd(UAContext *ua, const char *cmd)
 
    jcr->cloned = cloned;
 
-   if (find_arg(ua, _("fdcalled")) > 0) {
+   if (find_arg(ua, N_("fdcalled")) > 0) {
       jcr->file_bsock = dup_bsock(ua->UA_sock);
       ua->quit = true;
    }
@@ -484,7 +484,7 @@ try_again:
    }
 
    /* Run without prompting? */
-   if (ua->batch || find_arg(ua, _("yes")) > 0) {
+   if (ua->batch || find_arg(ua, N_("yes")) > 0) {
       goto start_job;
    }
 
index 48d09485b4b98e563de511206685fcca500eafd1..5409ee49b32463f0b03ea2e413edbec341a96a21 100644 (file)
@@ -285,8 +285,8 @@ CLIENT *get_client_resource(UAContext *ua)
    int i;
 
    for (i=1; i<ua->argc; i++) {
-      if ((strcasecmp(ua->argk[i], _("client")) == 0 ||
-           strcasecmp(ua->argk[i], _("fd")) == 0) && ua->argv[i]) {
+      if ((strcasecmp(ua->argk[i], N_("client")) == 0 ||
+           strcasecmp(ua->argk[i], N_("fd")) == 0) && ua->argv[i]) {
          if (!acl_access_ok(ua, Client_ACL, ua->argv[i])) {
             break;
          }
@@ -428,7 +428,7 @@ bool select_pool_dbr(UAContext *ua, POOL_DBR *pr)
    uint32_t *ids;
 
    for (i=1; i<ua->argc; i++) {
-      if (strcasecmp(ua->argk[i], _("pool")) == 0 && ua->argv[i] &&
+      if (strcasecmp(ua->argk[i], N_("pool")) == 0 && ua->argv[i] &&
           acl_access_ok(ua, Pool_ACL, ua->argv[i])) {
          bstrncpy(pr->Name, ua->argv[i], sizeof(pr->Name));
          if (!db_get_pool_record(ua->jcr, ua->db, pr)) {
@@ -612,10 +612,10 @@ int get_job_dbr(UAContext *ua, JOB_DBR *jr)
    int i;
 
    for (i=1; i<ua->argc; i++) {
-      if (strcasecmp(ua->argk[i], _("job")) == 0 && ua->argv[i]) {
+      if (strcasecmp(ua->argk[i], N_("job")) == 0 && ua->argv[i]) {
          jr->JobId = 0;
          bstrncpy(jr->Job, ua->argv[i], sizeof(jr->Job));
-      } else if (strcasecmp(ua->argk[i], _("jobid")) == 0 && ua->argv[i]) {
+      } else if (strcasecmp(ua->argk[i], N_("jobid")) == 0 && ua->argv[i]) {
          jr->JobId = str_to_int64(ua->argv[i]);
       } else {
          continue;
@@ -785,12 +785,12 @@ STORE *get_storage_resource(UAContext *ua, int use_default)
             break;
          }
       } else {
-         if (strcasecmp(ua->argk[i], _("storage")) == 0 ||
-             strcasecmp(ua->argk[i], _("sd")) == 0) {
+         if (strcasecmp(ua->argk[i], N_("storage")) == 0 ||
+             strcasecmp(ua->argk[i], N_("sd")) == 0) {
             store_name = ua->argv[i];
             break;
 
-         } else if (strcasecmp(ua->argk[i], _("jobid")) == 0) {
+         } else if (strcasecmp(ua->argk[i], N_("jobid")) == 0) {
             jobid = str_to_int64(ua->argv[i]);
             if (jobid <= 0) {
                bsendmsg(ua, _("Expecting jobid=nn command, got: %s\n"), ua->argk[i]);
@@ -804,7 +804,7 @@ STORE *get_storage_resource(UAContext *ua, int use_default)
             free_jcr(jcr);
             break;
 
-         } else if (strcasecmp(ua->argk[i], _("job")) == 0) {
+         } else if (strcasecmp(ua->argk[i], N_("job")) == 0) {
             if (!ua->argv[i]) {
                bsendmsg(ua, _("Expecting job=xxx, got: %s.\n"), ua->argk[i]);
                return NULL;
@@ -826,7 +826,7 @@ STORE *get_storage_resource(UAContext *ua, int use_default)
    if (!store && store_name) {
       store = (STORE *)GetResWithName(R_STORAGE, store_name);
       if (!store) {
-         bsendmsg(ua, "Storage resource \"%s\": not found\n", store_name);
+         bsendmsg(ua, _("Storage resource \"%s\": not found\n"), store_name);
       }
    }
    if (store && !acl_access_ok(ua, Storage_ACL, store->hdr.name)) {
index 7a6e172edad21e9030231ff6b317da7462b6c5e6..314371659704476da1d2007a1f3f52792e28e6af 100644 (file)
@@ -98,14 +98,14 @@ int status_cmd(UAContext *ua, const char *cmd)
    Dmsg1(20, "status:%s:\n", cmd);
 
    for (i=1; i<ua->argc; i++) {
-      if (strcasecmp(ua->argk[i], _("all")) == 0) {
+      if (strcasecmp(ua->argk[i], N_("all")) == 0) {
          do_all_status(ua);
          return 1;
-      } else if (strcasecmp(ua->argk[i], _("dir")) == 0 ||
-                 strcasecmp(ua->argk[i], _("director")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("dir")) == 0 ||
+                 strcasecmp(ua->argk[i], N_("director")) == 0) {
          do_director_status(ua);
          return 1;
-      } else if (strcasecmp(ua->argk[i], _("client")) == 0) {
+      } else if (strcasecmp(ua->argk[i], N_("client")) == 0) {
          client = get_client_resource(ua);
          if (client) {
             do_client_status(ua, client);
@@ -124,10 +124,10 @@ int status_cmd(UAContext *ua, const char *cmd)
        char prmt[MAX_NAME_LENGTH];
 
       start_prompt(ua, _("Status available for:\n"));
-      add_prompt(ua, _("Director"));
-      add_prompt(ua, _("Storage"));
-      add_prompt(ua, _("Client"));
-      add_prompt(ua, _("All"));
+      add_prompt(ua, N_("Director"));
+      add_prompt(ua, N_("Storage"));
+      add_prompt(ua, N_("Client"));
+      add_prompt(ua, N_("All"));
       Dmsg0(20, "do_prompt: select daemon\n");
       if ((item=do_prompt(ua, "",  _("Select daemon type for status"), prmt, sizeof(prmt))) < 0) {
          return 1;
@@ -242,11 +242,16 @@ static void do_director_status(UAContext *ua)
 {
    char dt[MAX_TIME_LENGTH];
 
-   bsendmsg(ua, "%s Version: " VERSION " (" BDATE ") %s %s %s\n", my_name,
+   bsendmsg(ua, _("%s Version: %s (%s) %s %s %s\n"), my_name, VERSION, BDATE,
             HOST_OS, DISTNAME, DISTVER);
    bstrftime_nc(dt, sizeof(dt), daemon_start_time);
-   bsendmsg(ua, _("Daemon started %s, %d Job%s run since started.\n"),
-        dt, num_jobs_run, num_jobs_run == 1 ? "" : "s");
+   if (num_jobs_run == 1) {
+      bsendmsg(ua, _("Daemon started %s, 1 Job run since started.\n"), dt);
+   }
+   else {
+      bsendmsg(ua, _("Daemon started %s, %d Jobs run since started.\n"),
+        dt, num_jobs_run);
+   }
    if (debug_level > 0) {
       char b1[35], b2[35], b3[35], b4[35];
       bsendmsg(ua, _(" Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
@@ -269,7 +274,7 @@ static void do_director_status(UAContext *ua)
     * List terminated jobs
     */
    list_terminated_jobs(ua);
-   bsendmsg(ua, "====\n");
+   bsendmsg(ua, _("====\n"));
 }
 
 static void do_storage_status(UAContext *ua, STORE *store)
@@ -474,7 +479,7 @@ static void list_scheduled_jobs(UAContext *ua)
    if (num_jobs == 0) {
       bsendmsg(ua, _("No Scheduled Jobs.\n"));
    }
-   bsendmsg(ua, "====\n");
+   bsendmsg(ua, _("====\n"));
    Dmsg0(200, "Leave list_sched_jobs_runs()\n");
 }
 
@@ -636,7 +641,7 @@ static void list_running_jobs(UAContext *ua)
       }
       free_jcr(jcr);
    }
-   bsendmsg(ua, "====\n");
+   bsendmsg(ua, _("====\n"));
    Dmsg0(200, "leave list_run_jobs()\n");
 }
 
@@ -684,23 +689,23 @@ static void list_terminated_jobs(UAContext *ua)
       }
       switch (je->JobStatus) {
       case JS_Created:
-         termstat = "Created";
+         termstat = _("Created");
          break;
       case JS_FatalError:
       case JS_ErrorTerminated:
-         termstat = "Error";
+         termstat = _("Error");
          break;
       case JS_Differences:
-         termstat = "Diffs";
+         termstat = _("Diffs");
          break;
       case JS_Canceled:
-         termstat = "Cancel";
+         termstat = _("Cancel");
          break;
       case JS_Terminated:
-         termstat = "OK";
+         termstat = _("OK");
          break;
       default:
-         termstat = "Other";
+         termstat = _("Other");
          break;
       }
       bsendmsg(ua, _("%6d  %-6s %8s %14s %-7s  %-8s %s\n"),
@@ -711,6 +716,6 @@ static void list_terminated_jobs(UAContext *ua)
          termstat,
          dt, JobName);
    }
-   bsendmsg(ua, "\n");
+   bsendmsg(ua, _("\n"));
    unlock_last_jobs_list();
 }
index 9174b27b2d8aa6cd5572a794b7393a6c7e8faa46..ed999b7991ca9ada15aa6abfb746a73b961c8814 100644 (file)
@@ -305,9 +305,11 @@ static int markcmd(UAContext *ua, TREE_CTX *tree)
    }
    if (count == 0) {
       bsendmsg(ua, _("No files marked.\n"));
+   } else if (count == 1) {
+      bsendmsg(ua, _("1 file marked.\n"));
    } else {
-      bsendmsg(ua, _("%s file%s marked.\n"),
-               edit_uint64_with_commas(count, ec1), count==0?"":"s");
+      bsendmsg(ua, _("%s files marked.\n"),
+               edit_uint64_with_commas(count, ec1));
    }
    return 1;
 }
@@ -334,9 +336,11 @@ static int markdircmd(UAContext *ua, TREE_CTX *tree)
    }
    if (count == 0) {
       bsendmsg(ua, _("No directories marked.\n"));
+   } else if (count == 1) {
+      bsendmsg(ua, _("1 directory marked.\n"));
    } else {
-      bsendmsg(ua, _("%s director%s marked.\n"),
-               edit_uint64_with_commas(count, ec1), count==1?"y":"ies");
+      bsendmsg(ua, _("%s directories marked.\n"),
+               edit_uint64_with_commas(count, ec1));
    }
    return 1;
 }
@@ -356,7 +360,7 @@ static int countcmd(UAContext *ua, TREE_CTX *tree)
          }
       }
    }
-   bsendmsg(ua, "%s total files/dirs. %s marked to be restored.\n",
+   bsendmsg(ua, _("%s total files/dirs. %s marked to be restored.\n"),
             edit_uint64_with_commas(total, ec1),
             edit_uint64_with_commas(num_extract, ec2));
    return 1;
@@ -495,7 +499,7 @@ static int dircmd(UAContext *ua, TREE_CTX *tree)
    char cwd[1100], *pcwd;
 
    if (!tree_node_has_child(tree->node)) {
-      bsendmsg(ua, "Node %s has no children.\n", tree->node->fname);
+      bsendmsg(ua, _("Node %s has no children.\n"), tree->node->fname);
       return 1;
    }
 
@@ -576,7 +580,7 @@ static int estimatecmd(UAContext *ua, TREE_CTX *tree)
          }
       }
    }
-   bsendmsg(ua, "%d total files; %d marked to be restored; %s bytes.\n",
+   bsendmsg(ua, _("%d total files; %d marked to be restored; %s bytes.\n"),
             total, num_extract, edit_uint64_with_commas(total_bytes, ec1));
    return 1;
 }
@@ -589,7 +593,7 @@ static int helpcmd(UAContext *ua, TREE_CTX *tree)
 
    bsendmsg(ua, _("  Command    Description\n  =======    ===========\n"));
    for (i=0; i<comsize; i++) {
-      bsendmsg(ua, _("  %-10s %s\n"), _(commands[i].key), _(commands[i].help));
+      bsendmsg(ua, "  %-10s %s\n", _(commands[i].key), _(commands[i].help));
    }
    bsendmsg(ua, "\n");
    return 1;
@@ -657,8 +661,10 @@ static int unmarkcmd(UAContext *ua, TREE_CTX *tree)
    }
    if (count == 0) {
       bsendmsg(ua, _("No files unmarked.\n"));
+   } else if (count == 1) {
+      bsendmsg(ua, _("1 file unmarked.\n"));
    } else {
-      bsendmsg(ua, _("%d file%s unmarked.\n"), count, count==0?"":"s");
+      bsendmsg(ua, _("%d files unmarked.\n"), count);
    }
    return 1;
 }
@@ -686,8 +692,10 @@ static int unmarkdircmd(UAContext *ua, TREE_CTX *tree)
 
    if (count == 0) {
       bsendmsg(ua, _("No directories unmarked.\n"));
+   } else if (count == 1) {
+      bsendmsg(ua, _("1 directory unmarked.\n"));
    } else {
-      bsendmsg(ua, _("%d director%s unmarked.\n"), count, count==1?"y":"ies");
+      bsendmsg(ua, _("%d directories unmarked.\n"), count);
    }
    return 1;
 }
index bf219264b814d414d4df531401924aa0cac2aebb..d8a4d5b161a4ab4d19723a1e2e16567f55764a88 100644 (file)
@@ -100,14 +100,14 @@ static void update_volstatus(UAContext *ua, const char *val, MEDIA_DBR *mr)
 {
    POOLMEM *query = get_pool_memory(PM_MESSAGE);
    const char *kw[] = {
-      "Append",
-      "Archive",
-      "Disabled",
-      "Full",
-      "Used",
-      "Cleaning",
-      "Recycle",
-      "Read-Only",
+      _("Append"),
+      _("Archive"),
+      _("Disabled"),
+      _("Full"),
+      _("Used"),
+      _("Cleaning"),
+      _("Recycle"),
+      _("Read-Only"),
       NULL};
    bool found = false;
    int i;
@@ -346,16 +346,16 @@ static int update_volume(UAContext *ua)
    char ed1[130];
    bool done = false;
    const char *kw[] = {
-      N_("VolStatus"),                /* 0 */
-      N_("VolRetention"),             /* 1 */
-      N_("VolUse"),                   /* 2 */
-      N_("MaxVolJobs"),               /* 3 */
-      N_("MaxVolFiles"),              /* 4 */
-      N_("MaxVolBytes"),              /* 5 */
-      N_("Recycle"),                  /* 6 */
-      N_("Pool"),                     /* 7 */
-      N_("FromPool"),                 /* 8 */
-      N_("AllFromPool"),              /* 9 */
+      _("VolStatus"),                /* 0 */
+      _("VolRetention"),             /* 1 */
+      _("VolUse"),                   /* 2 */
+      _("MaxVolJobs"),               /* 3 */
+      _("MaxVolFiles"),              /* 4 */
+      _("MaxVolBytes"),              /* 5 */
+      _("Recycle"),                  /* 6 */
+      _("Pool"),                     /* 7 */
+      _("FromPool"),                 /* 8 */
+      _("AllFromPool"),              /* 9 */
       NULL };
 
    for (int i=0; kw[i]; i++) {
@@ -432,16 +432,16 @@ static int update_volume(UAContext *ua)
          /* Modify Volume Status */
          bsendmsg(ua, _("Current Volume status is: %s\n"), mr.VolStatus);
          start_prompt(ua, _("Possible Values are:\n"));
-         add_prompt(ua, "Append");      /* Better not translate these as */
-         add_prompt(ua, "Archive");     /* They are known in the database code */
-         add_prompt(ua, "Disabled");
-         add_prompt(ua, "Full");
-         add_prompt(ua, "Used");
-         add_prompt(ua, "Cleaning");
-         if (strcmp(mr.VolStatus, "Purged") == 0) {
-            add_prompt(ua, "Recycle");
+         add_prompt(ua, _("Append")); 
+         add_prompt(ua, _("Archive"));
+         add_prompt(ua, _("Disabled"));
+         add_prompt(ua, _("Full"));
+         add_prompt(ua, _("Used"));
+         add_prompt(ua, _("Cleaning"));
+         if (strcmp(mr.VolStatus, _("Purged")) == 0) {
+            add_prompt(ua, _("Recycle"));
          }
-         add_prompt(ua, "Read-Only");
+         add_prompt(ua, _("Read-Only"));
          if (do_prompt(ua, "", _("Choose new Volume Status"), ua->cmd, sizeof(mr.VolStatus)) < 0) {
             return 1;
          }
@@ -595,7 +595,7 @@ static int update_volume(UAContext *ua)
          update_all_vols_from_pool(ua);
          return 1;
       default:                        /* Done or error */
-         bsendmsg(ua, "Selection done.\n");
+         bsendmsg(ua, _("Selection done.\n"));
          return 1;
       }
    }
index bf4ef9cd6915a776e7fbb72b6e10bf9a11194457..20261083c8391cffeea641ef482a3a2774b231c4 100644 (file)
@@ -412,7 +412,7 @@ void verify_cleanup(JCR *jcr, int TermCode)
    jobstatus_to_ascii(jcr->FDJobStatus, fd_term_msg, sizeof(fd_term_msg));
    if (jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG) {
       jobstatus_to_ascii(jcr->SDJobStatus, sd_term_msg, sizeof(sd_term_msg));
-      Jmsg(jcr, msg_type, 0, _("Bacula " VERSION " (" LSMDATE "): %s\n"
+      Jmsg(jcr, msg_type, 0, _("Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  FileSet:                %s\n"
@@ -428,6 +428,8 @@ void verify_cleanup(JCR *jcr, int TermCode)
 "  FD termination status:  %s\n"
 "  SD termination status:  %s\n"
 "  Termination:            %s\n\n"),
+         VERSION,
+         LSMDATE,
          edt,
          jcr->jr.JobId,
          jcr->jr.Job,
@@ -445,7 +447,7 @@ void verify_cleanup(JCR *jcr, int TermCode)
          sd_term_msg,
          term_msg);
    } else {
-      Jmsg(jcr, msg_type, 0, _("Bacula " VERSION " (" LSMDATE "): %s\n"
+      Jmsg(jcr, msg_type, 0, _("Bacula %s (%s): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
 "  FileSet:                %s\n"
@@ -459,6 +461,8 @@ void verify_cleanup(JCR *jcr, int TermCode)
 "  Non-fatal FD errors:    %d\n"
 "  FD termination status:  %s\n"
 "  Termination:            %s\n\n"),
+         VERSION,
+         LSMDATE,
          edt,
          jcr->jr.JobId,
          jcr->jr.Job,
index d44655d13ab735336b8e4a2384983e3f7f9794b3..186c0afc74b76aae8703c23d6dc2920efda7cb77 100644 (file)
@@ -46,12 +46,12 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
    alist *verify_list = NULL;
 
    if (rcode != R_DIRECTOR) {
-      Dmsg1(50, _("I only authenticate directors, not %d\n"), rcode);
+      Dmsg1(50, "I only authenticate directors, not %d\n", rcode);
       Emsg1(M_FATAL, 0, _("I only authenticate directors, not %d\n"), rcode);
       return 0;
    }
    if (bs->msglen < 25 || bs->msglen > 200) {
-      Dmsg2(50, _("Bad Hello command from Director at %s. Len=%d.\n"),
+      Dmsg2(50, "Bad Hello command from Director at %s. Len=%d.\n",
             bs->who, bs->msglen);
       Emsg2(M_FATAL, 0, _("Bad Hello command from Director at %s. Len=%d.\n"),
             bs->who, bs->msglen);
@@ -63,7 +63,7 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
    if (sscanf(bs->msg, "Hello Director %s calling\n", dirname) != 1) {
       free_pool_memory(dirname);
       bs->msg[100] = 0;
-      Dmsg2(50, _("Bad Hello command from Director at %s: %s\n"),
+      Dmsg2(50, "Bad Hello command from Director at %s: %s\n",
             bs->who, bs->msg);
       Emsg2(M_FATAL, 0, _("Bad Hello command from Director at %s: %s\n"),
             bs->who, bs->msg);
@@ -77,7 +77,7 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
    }
    UnlockRes();
    if (!director) {
-      Dmsg2(50, _("Connection from unknown Director %s at %s rejected.\n"),
+      Dmsg2(50, "Connection from unknown Director %s at %s rejected.\n",
             dirname, bs->who);
       Emsg2(M_FATAL, 0, _("Connection from unknown Director %s at %s rejected.\n"
        "Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for help.\n"),
@@ -138,7 +138,7 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
       if (tls_local_need >= BNET_TLS_OK && tls_remote_need >= BNET_TLS_OK) {
          /* Engage TLS! Full Speed Ahead! */
          if (!bnet_tls_server(director->tls_ctx, bs, verify_list)) {
-            Emsg0(M_FATAL, 0, "TLS negotiation failed.\n");
+            Emsg0(M_FATAL, 0, _("TLS negotiation failed.\n"));
             director = NULL;
             goto auth_fatal;
          }
@@ -234,7 +234,7 @@ int authenticate_storagedaemon(JCR *jcr)
    if (tls_local_need >= BNET_TLS_OK && tls_remote_need >= BNET_TLS_OK) {
       /* Engage TLS! Full Speed Ahead! */
       if (!bnet_tls_client(me->tls_ctx, sd)) {
-         Jmsg(jcr, M_FATAL, 0, "TLS negotiation failed.\n");
+         Jmsg(jcr, M_FATAL, 0, _("TLS negotiation failed.\n"));
          auth_success = false;
          goto auth_fatal;
       }
index f030b007e5b8f629b66b5951a0bfa7c35711365e..857fb499bcc007056b14abb25e65ceb1f5b70c81 100644 (file)
@@ -532,7 +532,7 @@ static bool read_and_send_acl(JCR *jcr, int acltype, int stream)
 
    len = bacl_get(jcr, acltype);
    if (len < 0) {
-      Jmsg1(jcr, M_WARNING, 0, "Error reading ACL of %s\n", jcr->last_fname);
+      Jmsg1(jcr, M_WARNING, 0, _("Error reading ACL of %s\n"), jcr->last_fname);
       return true; 
    }
    if (len == 0) {
index 8fdbea30449d8b41f8a928e931f83e879dbcb420..fd36fa3df57311d0443c6aef8938ff71fa79b55f 100644 (file)
@@ -58,9 +58,9 @@ static pthread_t server_tid;
 
 static void usage()
 {
-   Pmsg0(-1, _(
+   Pmsg2(-1, _(
 "Copyright (C) 2000-2005 Kern Sibbald\n"
-"\nVersion: " VERSION " (" BDATE ")\n\n"
+"\nVersion: %s (%s)\n\n"
 "Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
 "        -c <file>   use <file> as configuration file\n"
 "        -dnn        set debug level to nn\n"
@@ -72,7 +72,7 @@ static void usage()
 "        -u          userid\n"
 "        -v          verbose user messages\n"
 "        -?          print this message.\n"
-"\n"));
+"\n"), VERSION, BDATE);
    exit(1);
 }
 
@@ -93,9 +93,12 @@ int main (int argc, char *argv[])
    char *uid = NULL;
    char *gid = NULL;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    init_stack_dump();
    my_name_is(argc, argv, "bacula-fd");
-   textdomain("bacula");
    init_msg(NULL, NULL);
    daemon_start_time = time(NULL);
 
index cc4a3d4c767dd26b8863b5070eabed2eb8890c0c..1490b59a8efc90b5c20dd0923cb95bfd5444af1e 100644 (file)
@@ -265,7 +265,7 @@ void free_resource(RES *sres, int type)
       res = NULL;
       break;
    default:
-      printf("Unknown resource type %d\n", type);
+      printf(_("Unknown resource type %d\n"), type);
    }
    /* Common stuff again -- free the resource, recurse to next one */
    if (res) {
@@ -313,13 +313,13 @@ void save_resource(int type, RES_ITEM *items, int pass)
          /* Resources containing another resource */
          case R_DIRECTOR:
             if ((res = (URES *)GetResWithName(R_DIRECTOR, res_all.res_dir.hdr.name)) == NULL) {
-               Emsg1(M_ABORT, 0, "Cannot find Director resource %s\n", res_all.res_dir.hdr.name);
+               Emsg1(M_ABORT, 0, _("Cannot find Director resource %s\n"), res_all.res_dir.hdr.name);
             }
             res->res_dir.tls_allowed_cns = res_all.res_dir.tls_allowed_cns;
             break;
          case R_CLIENT:
             if ((res = (URES *)GetResWithName(R_CLIENT, res_all.res_dir.hdr.name)) == NULL) {
-               Emsg1(M_ABORT, 0, "Cannot find Client resource %s\n", res_all.res_dir.hdr.name);
+               Emsg1(M_ABORT, 0, _("Cannot find Client resource %s\n"), res_all.res_dir.hdr.name);
             }
             res->res_client.messages = res_all.res_client.messages;
             break;
index 39518d1f4370d7267f1f0b2516edb3893614e7de..e30ed6720d5fc5d569a0babc16012910e2939ba2 100644 (file)
@@ -320,7 +320,7 @@ static int cancel_cmd(JCR *jcr)
 
    if (sscanf(dir->msg, "cancel Job=%127s", Job) == 1) {
       if (!(cjcr=get_jcr_by_full_name(Job))) {
-         bnet_fsend(dir, "2901 Job %s not found.\n", Job);
+         bnet_fsend(dir, _("2901 Job %s not found.\n"), Job);
       } else {
          if (cjcr->store_bsock) {
             P(cjcr->mutex);
@@ -358,7 +358,7 @@ static int setdebug_cmd(JCR *jcr)
    Dmsg1(110, "setdebug_cmd: %s", dir->msg);
    if (sscanf(dir->msg, "setdebug=%d trace=%d", &level, &trace_flag) != 2 || level < 0) {
       pm_strcpy(jcr->errmsg, dir->msg);
-      bnet_fsend(dir, "2991 Bad setdebug command: %s\n", jcr->errmsg);
+      bnet_fsend(dir, _("2991 Bad setdebug command: %s\n"), jcr->errmsg);
       return 0;
    }
    debug_level = level;
@@ -375,7 +375,7 @@ static int estimate_cmd(JCR *jcr)
    if (sscanf(dir->msg, estimatecmd, &jcr->listing) != 1) {
       pm_strcpy(jcr->errmsg, dir->msg);
       Jmsg(jcr, M_FATAL, 0, _("Bad estimate command: %s"), jcr->errmsg);
-      bnet_fsend(dir, "2992 Bad estimate command.\n");
+      bnet_fsend(dir, _("2992 Bad estimate command.\n"));
       return 0;
    }
    make_estimate(jcr);
@@ -419,7 +419,7 @@ static int runbefore_cmd(JCR *jcr)
    if (sscanf(dir->msg, runbefore, cmd) != 1) {
       pm_strcpy(jcr->errmsg, dir->msg);
       Jmsg1(jcr, M_FATAL, 0, _("Bad RunBeforeJob command: %s\n"), jcr->errmsg);
-      bnet_fsend(dir, "2905 Bad RunBeforeJob command.\n");
+      bnet_fsend(dir, _("2905 Bad RunBeforeJob command.\n"));
       free_memory(cmd);
       return 0;
    }
@@ -432,7 +432,7 @@ static int runbefore_cmd(JCR *jcr)
       bnet_fsend(dir, OKRunBefore);
       return 1;
    } else {
-      bnet_fsend(dir, "2905 Bad RunBeforeJob command.\n");
+      bnet_fsend(dir, _("2905 Bad RunBeforeJob command.\n"));
       return 0;
    }
 }
@@ -446,7 +446,7 @@ static int runafter_cmd(JCR *jcr)
    if (sscanf(dir->msg, runafter, msg) != 1) {
       pm_strcpy(jcr->errmsg, dir->msg);
       Jmsg1(jcr, M_FATAL, 0, _("Bad RunAfter command: %s\n"), jcr->errmsg);
-      bnet_fsend(dir, "2905 Bad RunAfterJob command.\n");
+      bnet_fsend(dir, _("2905 Bad RunAfterJob command.\n"));
       free_memory(msg);
       return 0;
    }
@@ -675,7 +675,7 @@ static void add_fileset(JCR *jcr, const char *item)
          regerror(rc, preg, prbuf, sizeof(prbuf));
          regfree(preg);
          free(preg);
-         Jmsg(jcr, M_FATAL, 0, "REGEX %s compile error. ERR=%s\n", item, prbuf);
+         Jmsg(jcr, M_FATAL, 0, _("REGEX %s compile error. ERR=%s\n"), item, prbuf);
          state = state_error;
          break;
       }
@@ -729,7 +729,7 @@ static void add_fileset(JCR *jcr, const char *item)
       state = state_options;
       break;
    default:
-      Jmsg(jcr, M_FATAL, 0, "Invalid FileSet command: %s\n", item);
+      Jmsg(jcr, M_FATAL, 0, _("Invalid FileSet command: %s\n"), item);
       state = state_error;
       break;
    }
@@ -898,7 +898,7 @@ static void set_options(findFOPTS *fo, const char *opts)
          Dmsg1(200, "Compression level=%d\n", fo->GZIP_level);
          break;
       default:
-         Emsg1(M_ERROR, 0, "Unknown include/exclude option: %c\n", *p);
+         Emsg1(M_ERROR, 0, _("Unknown include/exclude option: %c\n"), *p);
          break;
       }
    }
@@ -1065,7 +1065,7 @@ static int level_cmd(JCR *jcr)
       jcr->incremental = 1;           /* set incremental or decremental backup */
       jcr->mtime = (time_t)since_time; /* set since time */
    } else {
-      Jmsg1(jcr, M_FATAL, 0, "Unknown backup level: %s\n", level);
+      Jmsg1(jcr, M_FATAL, 0, _("Unknown backup level: %s\n"), level);
       free_memory(level);
       return 0;
    }
@@ -1098,7 +1098,7 @@ static int session_cmd(JCR *jcr)
               &jcr->StartFile, &jcr->EndFile,
               &jcr->StartBlock, &jcr->EndBlock) != 7) {
       pm_strcpy(jcr->errmsg, dir->msg);
-      Jmsg(jcr, M_FATAL, 0, "Bad session command: %s", jcr->errmsg);
+      Jmsg(jcr, M_FATAL, 0, _("Bad session command: %s"), jcr->errmsg);
       return 0;
    }
 
@@ -1328,7 +1328,7 @@ static int verify_cmd(JCR *jcr)
 
    jcr->JobType = JT_VERIFY;
    if (sscanf(dir->msg, verifycmd, level) != 1) {
-      bnet_fsend(dir, "2994 Bad verify command: %s\n", dir->msg);
+      bnet_fsend(dir, _("2994 Bad verify command: %s\n"), dir->msg);
       return 0;
    }
 
@@ -1343,7 +1343,7 @@ static int verify_cmd(JCR *jcr)
    } else if (strcasecmp(level, "disk_to_catalog") == 0) {
       jcr->JobLevel = L_VERIFY_DISK_TO_CATALOG;
    } else {
-      bnet_fsend(dir, "2994 Bad verify level: %s\n", dir->msg);
+      bnet_fsend(dir, _("2994 Bad verify level: %s\n"), dir->msg);
       return 0;
    }
 
@@ -1382,7 +1382,7 @@ static int verify_cmd(JCR *jcr)
       do_verify(jcr);
       break;
    default:
-      bnet_fsend(dir, "2994 Bad verify level: %s\n", dir->msg);
+      bnet_fsend(dir, _("2994 Bad verify level: %s\n"), dir->msg);
       return 0;
    }
 
index bf2646973d84643f22b64a2f1673a406cf391b4f..4ba9c9c5ad75310c1beb8ffe560f749d1c4bfc38 100644 (file)
@@ -99,7 +99,7 @@ PyObject *job_getattr(PyObject *self, char *attrname)
 
    jcr = get_jcr_from_PyObject(self);
    if (!jcr) {
-      bstrncpy(errmsg, "Job pointer not found.", sizeof(errmsg));
+      bstrncpy(errmsg, _("Job pointer not found."), sizeof(errmsg));
       goto bail_out;
    }
    for (i=0; getvars[i].name; i++) {
@@ -130,7 +130,7 @@ PyObject *job_getattr(PyObject *self, char *attrname)
       buf[0] = jcr->JobStatus;
       return Py_BuildValue(getvars[i].fmt, buf);
    }
-   bsnprintf(errmsg, sizeof(errmsg), "Attribute %s not found.", attrname);
+   bsnprintf(errmsg, sizeof(errmsg), _("Attribute %s not found."), attrname);
 bail_out:
    PyErr_SetString(PyExc_AttributeError, errmsg);
    return NULL;
@@ -147,13 +147,13 @@ int job_setattr(PyObject *self, char *attrname, PyObject *value)
 
    Dmsg2(100, "In job_setattr=%s val=%p.\n", attrname, value);
    if (value == NULL) {                /* Cannot delete variables */
-      bsnprintf(buf, sizeof(buf), "Cannot delete attribute %s", attrname);
+      bsnprintf(buf, sizeof(buf), _("Cannot delete attribute %s"), attrname);
       errmsg = buf;
       goto bail_out;
    }
    jcr = get_jcr_from_PyObject(self);
    if (!jcr) {
-      errmsg = "Job pointer not found.";
+      errmsg = _("Job pointer not found.");
       goto bail_out;
    }
 
@@ -165,14 +165,14 @@ int job_setattr(PyObject *self, char *attrname, PyObject *value)
       }
    }
    if (!found) {
-      bsnprintf(buf, sizeof(buf), "Cannot find attribute %s", attrname);
+      bsnprintf(buf, sizeof(buf), _("Cannot find attribute %s"), attrname);
       errmsg = buf;
       goto bail_out;
    }
    /* Get argument value ***FIXME*** handle other formats */
    if (setvars[i].fmt != NULL) {
       if (!PyArg_Parse(value, setvars[i].fmt, &strval)) {
-         PyErr_SetString(PyExc_TypeError, "Read-only attribute");
+         PyErr_SetString(PyExc_TypeError, _("Read-only attribute"));
          return -1;
       }
    }   
@@ -181,7 +181,7 @@ int job_setattr(PyObject *self, char *attrname, PyObject *value)
       Jmsg(jcr, M_INFO, 0, "%s", strval);
       return 0;
    }
-   bsnprintf(buf, sizeof(buf), "Cannot find attribute %s", attrname);
+   bsnprintf(buf, sizeof(buf), _("Cannot find attribute %s"), attrname);
    errmsg = buf;
 bail_out:
    PyErr_SetString(PyExc_AttributeError, errmsg);
@@ -217,7 +217,7 @@ static PyObject *set_job_events(PyObject *self, PyObject *arg)
    }
    jcr = get_jcr_from_PyObject(self);
    if (!jcr) {
-      PyErr_SetString(PyExc_AttributeError, "Job pointer not found.");
+      PyErr_SetString(PyExc_AttributeError, _("Job pointer not found."));
       return NULL;
    }
    Py_XDECREF((PyObject *)jcr->Python_events);  /* release any old events Object */
index 269be4ae6611ee9a9378705e9e5fe9eb034e1049..e2686298d22fcd9035ef25fa837ccabf02337dd2 100644 (file)
@@ -305,7 +305,7 @@ void do_restore(JCR *jcr)
          if (extract) {
             if (prev_stream != stream) {
                if (bopen_rsrc(&altbfd, jcr->last_fname, O_WRONLY | O_TRUNC | O_BINARY, 0) < 0) {
-                  Jmsg(jcr, M_ERROR, 0, _("     Cannot open resource fork for %s\n"), jcr->last_fname);
+                  Jmsg(jcr, M_ERROR, 0, _("     Cannot open resource fork for %s.\n"), jcr->last_fname);
                   extract = false;
                   continue;
                }
@@ -344,7 +344,7 @@ void do_restore(JCR *jcr)
          pm_strcpy(jcr->acl_text, sd->msg);
          Dmsg2(400, "Restoring ACL type 0x%2x <%s>\n", BACL_TYPE_ACCESS, jcr->acl_text);
          if (bacl_set(jcr, BACL_TYPE_ACCESS) != 0) {
-               Jmsg1(jcr, M_WARNING, 0, "Can't restore ACL of %s\n", jcr->last_fname);
+               Jmsg1(jcr, M_WARNING, 0, _("Can't restore ACL of %s\n"), jcr->last_fname);
          }
 #else 
          non_support_acl++;
@@ -356,7 +356,7 @@ void do_restore(JCR *jcr)
          pm_strcpy(jcr->acl_text, sd->msg);
          Dmsg2(400, "Restoring ACL type 0x%2x <%s>\n", BACL_TYPE_DEFAULT, jcr->acl_text);
          if (bacl_set(jcr, BACL_TYPE_DEFAULT) != 0) {
-               Jmsg1(jcr, M_WARNING, 0, "Can't restore default ACL of %s\n", jcr->last_fname);
+               Jmsg1(jcr, M_WARNING, 0, _("Can't restore default ACL of %s\n"), jcr->last_fname);
          }
 #else 
          non_support_acl++;
@@ -447,23 +447,23 @@ ok_out:
 static const char *zlib_strerror(int stat)
 {
    if (stat >= 0) {
-      return "None";
+      return _("None");
    }
    switch (stat) {
    case Z_ERRNO:
-      return "Zlib errno";
+      return _("Zlib errno");
    case Z_STREAM_ERROR:
-      return "Zlib stream error";
+      return _("Zlib stream error");
    case Z_DATA_ERROR:
-      return "Zlib data error";
+      return _("Zlib data error");
    case Z_MEM_ERROR:
-      return "Zlib memory error";
+      return _("Zlib memory error");
    case Z_BUF_ERROR:
-      return "Zlib buffer error";
+      return _("Zlib buffer error");
    case Z_VERSION_ERROR:
-      return "Zlib version error";
+      return _("Zlib version error");
    default:
-      return "*none*";
+      return _("*none*");
    }
 }
 #endif
index 3e86e6e0c5cecdedbc50d8797c46bebc98c55e2c..daa6b15e3283bcf9eeba75d1d7e14ad8f298001b 100755 (executable)
@@ -64,8 +64,8 @@ static void do_status(void sendit(const char *msg, int len, void *sarg), void *a
 
    msg = (char *)get_pool_memory(PM_MESSAGE);
    found = 0;
-   len = Mmsg(msg, "%s Version: " VERSION " (" BDATE ")" VSS " %s %s %s\n"
-              my_name, HOST_OS, DISTNAME, DISTVER);
+   len = Mmsg(msg, _("%s Version: %s (%s) %s %s %s %s\n")
+              my_name, VERSION, BDATE, VSS, HOST_OS, DISTNAME, DISTVER);
    sendit(msg, len, arg);
    bstrftime_nc(dt, sizeof(dt), daemon_start_time);
    len = Mmsg(msg, _("Daemon started %s, %d Job%s run since started.\n"),
@@ -236,23 +236,23 @@ static void  list_terminated_jobs(void sendit(const char *msg, int len, void *sa
       }
       switch (je->JobStatus) {
       case JS_Created:
-         termstat = "Created";
+         termstat = _("Created");
          break;
       case JS_FatalError:
       case JS_ErrorTerminated:
-         termstat = "Error";
+         termstat = _("Error");
          break;
       case JS_Differences:
-         termstat = "Diffs";
+         termstat = _("Diffs");
          break;
       case JS_Canceled:
-         termstat = "Cancel";
+         termstat = _("Cancel");
          break;
       case JS_Terminated:
-         termstat = "OK";
+         termstat = _("OK");
          break;
       default:
-         termstat = "Other";
+         termstat = _("Other");
          break;
       }
       bstrncpy(JobName, je->Job, sizeof(JobName));
@@ -272,7 +272,7 @@ static void  list_terminated_jobs(void sendit(const char *msg, int len, void *sa
          dt, JobName);
       sendit(buf, strlen(buf), arg);
    }
-   sendit("====\n", 5, arg);
+   sendit(_("====\n"), 5, arg);
    unlock_last_jobs_list();
 }
 
@@ -319,7 +319,7 @@ int qstatus_cmd(JCR *jcr)
    if (sscanf(dir->msg, qstatus, time) != 1) {
       pm_strcpy(&jcr->errmsg, dir->msg);
       Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
-      bnet_fsend(dir, "2900 Bad .status command, missing argument.\n");
+      bnet_fsend(dir, _("2900 Bad .status command, missing argument.\n"));
       bnet_sig(dir, BNET_EOD);
       free_memory(time);
       return 0;
@@ -345,7 +345,7 @@ int qstatus_cmd(JCR *jcr)
    else {
       pm_strcpy(&jcr->errmsg, dir->msg);
       Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
-      bnet_fsend(dir, "2900 Bad .status command, wrong argument.\n");
+      bnet_fsend(dir, _("2900 Bad .status command, wrong argument.\n"));
       bnet_sig(dir, BNET_EOD);
       free_memory(time);
       return 0;
index ec1b5412510fd0e9ccef3ed47f23b91278a51cb1..c25f8294ccc034514f8541171b6b298a2fa89e76 100644 (file)
@@ -226,7 +226,7 @@ static int verify_file(FF_PKT *ff_pkt, void *pkt, bool top_level)
          if (bopen_rsrc(&bfd, ff_pkt->fname, O_RDONLY | O_BINARY, 0) < 0) {
             ff_pkt->ff_errno = errno;
             berrno be;
-            Jmsg(jcr, M_NOTSAVED, -1, _("     Cannot open resource fork for %s: ERR=%s\n"),
+            Jmsg(jcr, M_NOTSAVED, -1, _("     Cannot open resource fork for %s: ERR=%s.\n"),
                   ff_pkt->fname, be.strerror());
             jcr->Errors++;
             if (is_bopen(&ff_pkt->bfd)) {
index 7ec967ab671447932f02ab4063654ceac45d3c51..4dc9df53925d2207a29d3227dbf86a064b4c9cc3 100644 (file)
@@ -64,33 +64,33 @@ const char *stream_to_ascii(int stream)
 
    switch (stream) {
    case STREAM_GZIP_DATA:
-      return "GZIP data";
+      return _("GZIP data");
    case STREAM_SPARSE_GZIP_DATA:
-      return "GZIP sparse data";
+      return _("GZIP sparse data");
    case STREAM_WIN32_DATA:
-      return "Win32 data";
+      return _("Win32 data");
    case STREAM_WIN32_GZIP_DATA:
-      return "Win32 GZIP data";
+      return _("Win32 GZIP data");
    case STREAM_UNIX_ATTRIBUTES:
-      return "File attributes";
+      return _("File attributes");
    case STREAM_FILE_DATA:
-      return "File data";
+      return _("File data");
    case STREAM_MD5_SIGNATURE:
-      return "MD5 signature";
+      return _("MD5 signature");
    case STREAM_UNIX_ATTRIBUTES_EX:
-      return "Extended attributes";
+      return _("Extended attributes");
    case STREAM_SPARSE_DATA:
-      return "Sparse data";
+      return _("Sparse data");
    case STREAM_PROGRAM_NAMES:
-      return "Program names";
+      return _("Program names");
    case STREAM_PROGRAM_DATA:
-      return "Program data";
+      return _("Program data");
    case STREAM_SHA1_SIGNATURE:
-      return "SHA1 signature";
+      return _("SHA1 signature");
    case STREAM_MACOS_FORK_DATA:
-      return "HFS+ resource fork";
+      return _("HFS+ resource fork");
    case STREAM_HFSPLUS_ATTRIBUTES:
-      return "HFS+ Finder Info";
+      return _("HFS+ Finder Info");
    default:
       sprintf(buf, "%d", stream);
       return (const char *)buf;
index 9144bfc10a4a0614693cb7dd90e2bb96df431466..8733c03e36f710eb955d92df531f869463235991 100644 (file)
@@ -167,7 +167,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
          }
          Dmsg1(50, "Create file: %s\n", attr->ofname);
          if (is_bopen(bfd)) {
-            Jmsg1(jcr, M_ERROR, 0, "bpkt already open fid=%d\n", bfd->fid);
+            Jmsg1(jcr, M_ERROR, 0, _("bpkt already open fid=%d\n"), bfd->fid);
             bclose(bfd);
          }
          /*
@@ -268,7 +268,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
                tid = NULL;
             }
             if (is_bopen(bfd)) {
-               Jmsg1(jcr, M_ERROR, 0, "bpkt already open fid=%d\n", bfd->fid);
+               Jmsg1(jcr, M_ERROR, 0, _("bpkt already open fid=%d\n"), bfd->fid);
             }
             if ((bopen(bfd, attr->ofname, mode, 0)) < 0) {
                berrno be;
@@ -319,7 +319,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
        */
       if (!is_portable_backup(bfd)) {
          if (is_bopen(bfd)) {
-            Jmsg1(jcr, M_ERROR, 0, "bpkt already open fid=%d\n", bfd->fid);
+            Jmsg1(jcr, M_ERROR, 0, _("bpkt already open fid=%d\n"), bfd->fid);
          }
          if ((bopen(bfd, attr->ofname, O_WRONLY|O_BINARY, 0)) < 0) {
             berrno be;
index a5a1e388ff2b858a780cf5ec440654b607254b07..38b69462e516c040286d591643384435322aefad 100755 (executable)
@@ -82,7 +82,7 @@ enable_priv(JCR *jcr, HANDLE hToken, char *name, int ignore_errors)
     if (lerror != ERROR_SUCCESS) {
        if (!ignore_errors) {
          char buf[200];
-         strcpy(buf, "AdjustTokenPrivileges set ");
+         strcpy(buf, _("AdjustTokenPrivileges set "));
          bstrncat(buf, name, sizeof(buf));
          win_error(jcr, buf, lerror);
        }
index 762c69e4a32ba15e243c55abef208fcd4e6a9b3d..7daf08430d21826690a7d81a4040f983b18dfb20 100644 (file)
@@ -181,7 +181,7 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, const char *fname)
             Dmsg1(200, "Compression level=%d\n", inc->level);
             break;
          default:
-            Emsg1(M_ERROR, 0, "Unknown include/exclude option: %c\n", *rp);
+            Emsg1(M_ERROR, 0, _("Unknown include/exclude option: %c\n"), *rp);
             break;
          }
       }
index 4ce4678772e8fbae196fa00599d317f6a8811888..6cf2983dd23cbb8037e14575c0e1e2ec50314dec 100644 (file)
@@ -45,7 +45,7 @@ save_cwd(struct saved_cwd *cwd)
       cwd->desc = open(".", O_RDONLY);
       if (cwd->desc < 0) {
         berrno be;
-        Emsg1(M_ERROR, 0, "Cannot open current directory: %s\n", be.strerror());
+        Emsg1(M_ERROR, 0, _("Cannot open current directory: %s\n"), be.strerror());
         return 1;
       }
 
@@ -59,7 +59,7 @@ save_cwd(struct saved_cwd *cwd)
              have_working_fchdir = 0;
          } else {
              berrno be;
-             Emsg1(M_ERROR, 0, "Current directory: %s\n", be.strerror());
+             Emsg1(M_ERROR, 0, _("Current directory: %s\n"), be.strerror());
              close(cwd->desc);
              cwd->desc = -1;
              return 1;
@@ -81,7 +81,7 @@ save_cwd(struct saved_cwd *cwd)
       cwd->name = (POOLMEM *)getcwd(buf, sizeof_pool_memory(buf));
       if (cwd->name == NULL) {
         berrno be;
-        Emsg1(M_ERROR, 0, "Cannot get current directory: %s\n", be.strerror());
+        Emsg1(M_ERROR, 0, _("Cannot get current directory: %s\n"), be.strerror());
         free_pool_memory(buf);
         return 1;
       }
@@ -99,12 +99,28 @@ restore_cwd(const struct saved_cwd *cwd, const char *dest, const char *from)
   int fail = 0;
   if (cwd->desc >= 0) {
       if (fchdir(cwd->desc)) {
-        berrno be;
-        Emsg4(M_ERROR, 0, "Cannot return to %s%s%s: %s\n",
-                (dest ? dest : "saved working directory"),
-                (from ? " from " : ""),
-                (from ? from : ""), be.strerror());
-        fail = 1;
+         berrno be;
+         if (from) {
+            if (dest) {
+               Emsg3(M_ERROR, 0, _("Cannot return to %s from %s: %s\n"),
+                  dest, from, be.strerror());
+            }
+            else {
+               Emsg2(M_ERROR, 0, _("Cannot return to saved working directory from %s: %s\n"),
+                  from, be.strerror());
+            }
+         }
+         else {
+            if (dest) {
+               Emsg2(M_ERROR, 0, _("Cannot return to %s: %s\n"),
+                  dest, be.strerror());
+            }
+            else {
+               Emsg1(M_ERROR, 0, _("Cannot return to saved working directory: %s\n"),
+                  be.strerror());
+            }
+         }
+         fail = 1;
       }
   } else if (chdir(cwd->name) < 0) {
       berrno be;
index e2223c49a25f1f2b3159f8a3c9300a7e1d41fcdf..681950fbbb5aba89c803f6f504e4df71726b170c 100644 (file)
@@ -86,14 +86,14 @@ static void usage()
 {
    fprintf(stderr, _(
 "Copyright (C) 2002-2005 Kern Sibbald\n"
-"\nVersion: " VERSION " (" BDATE ") %s %s %s\n\n"
+"\nVersion: %s (%s) %s %s %s\n\n"
 "Usage: gnome-console [-s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
 "       -dnn        set debug level to nn\n"
 "       -s          no signals\n"
 "       -t          test - read configuration and exit\n"
 "       -?          print this message.\n"
-"\n"), HOST_OS, DISTNAME, DISTVER);
+"\n"), VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
 
    exit(1);
 }
@@ -200,6 +200,10 @@ int main(int argc, char *argv[])
    const char *gargv[2] = {"gnome-console", NULL};
    CONFONTRES *con_font;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    init_stack_dump();
    my_name_is(argc, argv, "gnome-console");
    init_msg(NULL, NULL);
@@ -491,7 +495,7 @@ int connect_to_director(gpointer data)
    /* Initialize Console TLS context */
    if (cons && (cons->tls_enable || cons->tls_require)) {
       /* Generate passphrase prompt */
-      bsnprintf(buf, sizeof(buf), "Passphrase for Console \"%s\" TLS private key: ", cons->hdr.name);
+      bsnprintf(buf, sizeof(buf), _("Passphrase for Console \"%s\" TLS private key: "), cons->hdr.name);
 
       /* Initialize TLS context:
        * Args: CA certfile, CA certdir, Certfile, Keyfile,
@@ -513,7 +517,7 @@ int connect_to_director(gpointer data)
    /* Initialize Director TLS context */
    if (dir->tls_enable || dir->tls_require) {
       /* Generate passphrase prompt */
-      bsnprintf(buf, sizeof(buf), "Passphrase for Director \"%s\" TLS private key: ", dir->hdr.name);
+      bsnprintf(buf, sizeof(buf), _("Passphrase for Director \"%s\" TLS private key: "), dir->hdr.name);
 
       /* Initialize TLS context:
        * Args: CA certfile, CA certdir, Certfile, Keyfile,
@@ -532,7 +536,7 @@ int connect_to_director(gpointer data)
    }
 
 
-   UA_sock = bnet_connect(NULL, 5, 15, "Director daemon", dir->address,
+   UA_sock = bnet_connect(NULL, 5, 15, _("Director daemon"), dir->address,
                           NULL, dir->DIRport, 0);
    if (UA_sock == NULL) {
       return 0;
@@ -544,7 +548,7 @@ int connect_to_director(gpointer data)
       return 0;
    }
 
-   set_status(" Initializing ...");
+   set_status(_(" Initializing ..."));
 
    bnet_fsend(UA_sock, "autodisplay on");
 
@@ -580,7 +584,7 @@ int connect_to_director(gpointer data)
    fill_combo(restore_dialog, "combo_restore_pool", pool_list);
    fill_combo(restore_dialog, "combo_restore_storage", storage_list);
 
-   set_status(" Connected");
+   set_status(_(" Connected"));
    return 1;
 }
 
@@ -743,7 +747,7 @@ void set_statusf(const char *fmt, ...)
 
 void set_status_ready()
 {
-   gtk_label_set_text(GTK_LABEL(status1), " Ready");
+   gtk_label_set_text(GTK_LABEL(status1), _(" Ready"));
    ready = true;
 // set_scroll_bar_to_end();
 }
index e0601dcc8588875e5dac76215fb9f6459090ead4..400ae7726c816165e94cdab85f36e7240ac25d6a 100644 (file)
@@ -119,7 +119,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    bool recurse = true;
 
    if (res == NULL) {
-      printf("No record for %d %s\n", type, res_to_str(type));
+      printf(_("No record for %d %s\n"), type, res_to_str(type));
       return;
    }
    if (type < 0) {                    /* no recursion */
@@ -128,18 +128,18 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    }
    switch (type) {
    case R_DIRECTOR:
-      printf("Director: name=%s address=%s DIRport=%d\n", reshdr->name,
+      printf(_("Director: name=%s address=%s DIRport=%d\n"), reshdr->name,
               res->dir_res.address, res->dir_res.DIRport);
       break;
    case R_CONSOLE:
-      printf("Console: name=%s\n", reshdr->name);
+      printf(_("Console: name=%s\n"), reshdr->name);
       break;
    case R_CONSOLE_FONT:
-      printf("ConsoleFont: name=%s font face=%s\n",
+      printf(_("ConsoleFont: name=%s font face=%s\n"),
              reshdr->name, NPRT(res->con_font.fontface));
       break;
    default:
-      printf("Unknown resource type %d\n", type);
+      printf(_("Unknown resource type %d\n"), type);
    }
    if (recurse && res->dir_res.hdr.next) {
       dump_resource(type, res->dir_res.hdr.next, sendit, sock);
@@ -217,7 +217,7 @@ void free_resource(RES *sres, int type)
       }
       break;
    default:
-      printf("Unknown resource type %d\n", type);
+      printf(_("Unknown resource type %d\n"), type);
    }
    /* Common stuff again -- free the resource, recurse to next one */
    free(res);
@@ -243,7 +243,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
    for (i=0; items[i].name; i++) {
       if (items[i].flags & ITEM_REQUIRED) {
             if (!bit_is_set(i, res_all.dir_res.hdr.item_present)) {
-               Emsg2(M_ABORT, 0, "%s item is required in %s resource, but not found.\n",
+               Emsg2(M_ABORT, 0, _("%s item is required in %s resource, but not found.\n"),
                  items[i].name, resources[rindex]);
              }
       }
@@ -265,7 +265,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
          break;
 
       default:
-         Emsg1(M_ERROR, 0, "Unknown resource type %d\n", type);
+         Emsg1(M_ERROR, 0, _("Unknown resource type %d\n"), type);
          error = 1;
          break;
       }
@@ -295,7 +295,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
       size = sizeof(CONRES);
       break;
    default:
-      printf("Unknown resource type %d\n", type);
+      printf(_("Unknown resource type %d\n"), type);
       error = 1;
       break;
    }
index ec3f830e13093ca4e2076db8e0a498ca6375d1f2..86b61c6806dee66a79dd4e694bb1dc58d2955b6f 100644 (file)
 static GnomeUIInfo file1_menu_uiinfo[] =
 {
   {
-    GNOME_APP_UI_ITEM, N_("_Connect"),
-    N_("Connect to Director"),
+    GNOME_APP_UI_ITEM, _("_Connect"),
+    _("Connect to Director"),
     (gpointer) on_connect_activate, NULL, NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
-    GNOME_APP_UI_ITEM, N_("_Disconnect"),
-    N_("Disconnect from Director"),
+    GNOME_APP_UI_ITEM, _("_Disconnect"),
+    _("Disconnect from Director"),
     (gpointer) on_disconnect_activate, NULL, NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
@@ -90,7 +90,7 @@ static GnomeUIInfo edit1_menu_uiinfo[] =
 static GnomeUIInfo item1_menu_uiinfo[] =
 {
   {
-    GNOME_APP_UI_ITEM, N_("_Display Messages"),
+    GNOME_APP_UI_ITEM, _("_Display Messages"),
     NULL,
     (gpointer) on_msgs_activate, NULL, NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
@@ -126,35 +126,35 @@ static GnomeUIInfo help1_menu_uiinfo[] =
 static GnomeUIInfo menubar1_uiinfo[] =
 {
   {
-    GNOME_APP_UI_SUBTREE, N_("_File"),
+    GNOME_APP_UI_SUBTREE, _("_File"),
     NULL,
     file1_menu_uiinfo, NULL, NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
-    GNOME_APP_UI_SUBTREE, N_("_Edit"),
+    GNOME_APP_UI_SUBTREE,_("_Edit"),
     NULL,
     edit1_menu_uiinfo, NULL, NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
-    GNOME_APP_UI_SUBTREE, N_("_View"),
-    N_("Display Messages"),
+    GNOME_APP_UI_SUBTREE, _("_View"),
+    _("Display Messages"),
     item1_menu_uiinfo, NULL, NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
-    GNOME_APP_UI_SUBTREE, N_("_Settings"),
+    GNOME_APP_UI_SUBTREE, _("_Settings"),
     NULL,
     settings1_menu_uiinfo, NULL, NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
-    GNOME_APP_UI_SUBTREE, N_("_Help"),
+    GNOME_APP_UI_SUBTREE, _("_Help"),
     NULL,
     help1_menu_uiinfo, NULL, NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
@@ -562,7 +562,7 @@ create_SelectDirectorDialog (void)
   gtk_widget_show (button11);
   gtk_box_pack_start (GTK_BOX (hbox21), button11, FALSE, FALSE, 0);
 
-  label46 = gtk_label_new (_("         "));
+  label46 = gtk_label_new ("         ");
   gtk_widget_show (label46);
   gtk_box_pack_start (GTK_BOX (hbox21), label46, FALSE, FALSE, 0);
   gtk_misc_set_padding (GTK_MISC (label46), 2, 0);
@@ -744,7 +744,7 @@ create_RunDialog (void)
   gtk_widget_show (entry_type);
   gtk_editable_set_editable (GTK_EDITABLE (entry_type), FALSE);
 
-  label114 = gtk_label_new (_(" "));
+  label114 = gtk_label_new (" ");
   gtk_widget_show (label114);
   gtk_box_pack_start (GTK_BOX (hbox28), label114, FALSE, FALSE, 30);
   gtk_label_set_justify (GTK_LABEL (label114), GTK_JUSTIFY_LEFT);
@@ -774,7 +774,7 @@ create_RunDialog (void)
   gtk_widget_show (entry_client);
   gtk_editable_set_editable (GTK_EDITABLE (entry_client), FALSE);
 
-  label67 = gtk_label_new (_(" "));
+  label67 = gtk_label_new (" ");
   gtk_widget_show (label67);
   gtk_box_pack_start (GTK_BOX (hbox30), label67, FALSE, FALSE, 123);
 
@@ -854,7 +854,7 @@ create_RunDialog (void)
   gtk_widget_show (entry_level);
   gtk_editable_set_editable (GTK_EDITABLE (entry_level), FALSE);
 
-  label71 = gtk_label_new (_("             "));
+  label71 = gtk_label_new ("             ");
   gtk_widget_show (label71);
   gtk_box_pack_start (GTK_BOX (hbox32), label71, FALSE, FALSE, 100);
 
@@ -883,7 +883,7 @@ create_RunDialog (void)
   gtk_widget_show (entry_pool);
   gtk_editable_set_editable (GTK_EDITABLE (entry_pool), FALSE);
 
-  label73 = gtk_label_new (_("   "));
+  label73 = gtk_label_new ("   ");
   gtk_widget_show (label73);
   gtk_box_pack_start (GTK_BOX (hbox33), label73, FALSE, FALSE, 120);
 
@@ -912,7 +912,7 @@ create_RunDialog (void)
   gtk_widget_show (entry_storage);
   gtk_editable_set_editable (GTK_EDITABLE (entry_storage), FALSE);
 
-  label97 = gtk_label_new (_("   "));
+  label97 = gtk_label_new ("   ");
   gtk_widget_show (label97);
   gtk_box_pack_start (GTK_BOX (hbox39), label97, FALSE, FALSE, 120);
 
@@ -940,7 +940,7 @@ create_RunDialog (void)
   gtk_widget_show (entry_messages);
   gtk_editable_set_editable (GTK_EDITABLE (entry_messages), FALSE);
 
-  label99 = gtk_label_new (_("   "));
+  label99 = gtk_label_new ("   ");
   gtk_widget_show (label99);
   gtk_box_pack_start (GTK_BOX (hbox40), label99, FALSE, FALSE, 120);
 
@@ -958,7 +958,7 @@ create_RunDialog (void)
   gtk_widget_show (entry_where);
   gtk_box_pack_start (GTK_BOX (hbox34), entry_where, TRUE, TRUE, 0);
 
-  label78 = gtk_label_new (_("   "));
+  label78 = gtk_label_new ("   ");
   gtk_widget_show (label78);
   gtk_box_pack_start (GTK_BOX (hbox34), label78, FALSE, FALSE, 120);
 
@@ -976,7 +976,7 @@ create_RunDialog (void)
   gtk_widget_show (entry_when);
   gtk_box_pack_start (GTK_BOX (hbox41), entry_when, TRUE, TRUE, 0);
 
-  label101 = gtk_label_new (_("   "));
+  label101 = gtk_label_new ("   ");
   gtk_widget_show (label101);
   gtk_box_pack_start (GTK_BOX (hbox41), label101, FALSE, FALSE, 120);
 
@@ -994,11 +994,11 @@ create_RunDialog (void)
   gtk_widget_show (entry28);
   gtk_box_pack_start (GTK_BOX (hbox60), entry28, TRUE, TRUE, 0);
 
-  label154 = gtk_label_new (_("   "));
+  label154 = gtk_label_new ("   ");
   gtk_widget_show (label154);
   gtk_box_pack_start (GTK_BOX (hbox60), label154, FALSE, FALSE, 36);
 
-  label84 = gtk_label_new (_("   "));
+  label84 = gtk_label_new ("   ");
   gtk_widget_show (label84);
   gtk_box_pack_start (GTK_BOX (vbox11), label84, FALSE, FALSE, 0);
   gtk_widget_set_size_request (label84, 12, 19);
@@ -1105,7 +1105,7 @@ create_RunDialog (void)
 
 static GnomeUIInfo file2_menu_uiinfo[] =
 {
-  GNOMEUIINFO_MENU_NEW_ITEM (N_("_New"), NULL, on_new1_activate, NULL),
+  GNOMEUIINFO_MENU_NEW_ITEM (_("_New"), NULL, on_new1_activate, NULL),
   GNOMEUIINFO_MENU_OPEN_ITEM (on_open1_activate, NULL),
   GNOMEUIINFO_MENU_SAVE_ITEM (on_save1_activate, NULL),
   GNOMEUIINFO_MENU_SAVE_AS_ITEM (on_save_as1_activate, NULL),
@@ -1270,7 +1270,7 @@ create_restore_file_selection (void)
   gtk_widget_show (restore_select_cancel);
   gtk_box_pack_start (GTK_BOX (hbox44), restore_select_cancel, FALSE, TRUE, 0);
 
-  label1001 = gtk_label_new (_(" "));
+  label1001 = gtk_label_new (" ");
   gtk_widget_show (label1001);
   gtk_box_pack_start (GTK_BOX (hbox44), label1001, FALSE, FALSE, 8);
   gtk_label_set_justify (GTK_LABEL (label1001), GTK_JUSTIFY_LEFT);
@@ -1468,7 +1468,7 @@ create_label_dialog (void)
   gtk_box_pack_start (GTK_BOX (hbox48), label_slot, TRUE, TRUE, 0);
   gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (label_slot), TRUE);
 
-  label113 = gtk_label_new (_("   "));
+  label113 = gtk_label_new ("   ");
   gtk_widget_show (label113);
   gtk_box_pack_start (GTK_BOX (vbox16), label113, FALSE, FALSE, 0);
 
@@ -1661,7 +1661,7 @@ create_RestoreDialog (void)
   gtk_widget_show (restore_client_entry);
   gtk_editable_set_editable (GTK_EDITABLE (restore_client_entry), FALSE);
 
-  label127 = gtk_label_new (_(" "));
+  label127 = gtk_label_new (" ");
   gtk_widget_show (label127);
   gtk_box_pack_start (GTK_BOX (hbox52), label127, FALSE, FALSE, 25);
 
@@ -1689,7 +1689,7 @@ create_RestoreDialog (void)
   gtk_widget_show (restore_fileset_entry);
   gtk_editable_set_editable (GTK_EDITABLE (restore_fileset_entry), FALSE);
 
-  label130 = gtk_label_new (_("  "));
+  label130 = gtk_label_new ("  ");
   gtk_widget_show (label130);
   gtk_box_pack_start (GTK_BOX (hbox53), label130, FALSE, FALSE, 23);
 
@@ -1717,7 +1717,7 @@ create_RestoreDialog (void)
   gtk_widget_show (restore_pool_entry);
   gtk_editable_set_editable (GTK_EDITABLE (restore_pool_entry), FALSE);
 
-  label138 = gtk_label_new (_("   "));
+  label138 = gtk_label_new ("   ");
   gtk_widget_show (label138);
   gtk_box_pack_start (GTK_BOX (hbox55), label138, FALSE, FALSE, 21);
 
@@ -1745,7 +1745,7 @@ create_RestoreDialog (void)
   gtk_widget_show (restore_storage_entry);
   gtk_editable_set_editable (GTK_EDITABLE (restore_storage_entry), FALSE);
 
-  label142 = gtk_label_new (_("   "));
+  label142 = gtk_label_new ("   ");
   gtk_widget_show (label142);
   gtk_box_pack_start (GTK_BOX (hbox56), label142, FALSE, FALSE, 21);
 
@@ -1762,11 +1762,11 @@ create_RestoreDialog (void)
   gtk_widget_show (restore_before_entry);
   gtk_box_pack_start (GTK_BOX (hbox59), restore_before_entry, TRUE, TRUE, 0);
 
-  label149 = gtk_label_new (_("   "));
+  label149 = gtk_label_new ("   ");
   gtk_widget_show (label149);
   gtk_box_pack_start (GTK_BOX (hbox59), label149, FALSE, FALSE, 53);
 
-  label150 = gtk_label_new (_("   "));
+  label150 = gtk_label_new ("   ");
   gtk_widget_show (label150);
   gtk_box_pack_start (GTK_BOX (vbox17), label150, FALSE, FALSE, 0);
 
index 6c7d9ea83f7c598396ff888be0c2fc1b38d70deb..c7cb31e19571df7544c112de0b68faed50959b15 100755 (executable)
@@ -118,7 +118,7 @@ on_restore_remove_button_clicked(GtkButton *button, gpointer user_data)
  */
 void select_restore_setup()
 {
-   const gchar *title[NUM_COLUMNS] = {"Mark", "File", "Mode", "User", "Group", "Size", "Date"};
+   const gchar *title[NUM_COLUMNS] = {_("Mark"), _("File"), _("Mode"), _("User"), _("Group"), _("Size"), _("Date")};
 
    restore_file_selection = create_restore_file_selection();
    if (!restore_file_selection) {
index 27ea655a744e06b682f18e99fd2be4db908a5c11..1bc775a00ec920108270d9b7278b9d5d71e3052e 100644 (file)
@@ -38,7 +38,7 @@ lookup_widget                          (GtkWidget       *widget,
   found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget),
                                                 widget_name);
   if (!found_widget)
-    g_warning ("Widget not found: %s", widget_name);
+    g_warning (_("Widget not found: %s"), widget_name);
   return found_widget;
 }
 
@@ -89,7 +89,7 @@ create_pixbuf                          (const gchar     *filename)
   pixbuf = gdk_pixbuf_new_from_file (pathname, &error);
   if (!pixbuf)
     {
-      fprintf (stderr, "Failed to load pixbuf file: %s: %s\n",
+      fprintf (stderr, _("Failed to load pixbuf file: %s: %s\n"),
               pathname, error->message);
       g_error_free (error);
     }
index 81fe37a800b05f8042f268d6e81f90269b240d81..81a7b115bd2bc6bf517619920755f9513196495b 100644 (file)
@@ -282,7 +282,7 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp
         } else if (iaddr->get_type() != type) {
            *errstr = (char *)malloc(1024);
            bsnprintf(*errstr, 1023,
-                      "the old style addresses cannot be mixed with new style");
+                      _("the old style addresses cannot be mixed with new style"));
            return 0;
         }
       }
@@ -305,7 +305,7 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp
            port = s->s_port;
         } else {
            *errstr = (char *)malloc(1024);
-            bsnprintf(*errstr, 1023, "can't resolve service(%s)", port_str);
+            bsnprintf(*errstr, 1023, _("can't resolve service(%s)"), port_str);
            return 0;
         }
       }
@@ -315,7 +315,7 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp
    hostaddrs = bnet_host2ipaddrs(hostname_str, family, &myerrstr);
    if (!hostaddrs) {
       *errstr = (char *)malloc(1024);
-      bsnprintf(*errstr, 1023, "can't resolve hostname(%s) %s", hostname_str,
+      bsnprintf(*errstr, 1023, _("can't resolve hostname(%s) %s"), hostname_str,
                myerrstr);
       return 0;
    }
index 922a032f07327b8453b5d9e7735808ced4810599..d3a73f331e0dce6057c81405d42f8711e2dd9803 100644 (file)
@@ -63,17 +63,17 @@ const char *berrno::strerror()
    if (berrno_ & b_errno_exit) {
       stat = (berrno_ & ~b_errno_exit);       /* remove bit */
       if (stat == 0) {
-         return "Child exited normally.";    /* this really shouldn't happen */
+         return _("Child exited normally.");    /* this really shouldn't happen */
       } else {
          /* Maybe an execvp failure */
          if (stat >= 200) {
             if (stat < 200 + num_execvp_errors) {
                berrno_ = execvp_errors[stat - 200];
             } else {
-               return "Unknown error during program execvp";
+               return _("Unknown error during program execvp");
             }
          } else {
-            Mmsg(&buf_, "Child exited with code %d", stat);
+            Mmsg(&buf_, _("Child exited with code %d"), stat);
             return buf_;
          }
          /* If we drop out here, berrno_ is set to an execvp errno */
@@ -81,7 +81,7 @@ const char *berrno::strerror()
    }
    if (berrno_ & b_errno_signal) {
       stat = (berrno_ & ~b_errno_signal);        /* remove bit */
-      Mmsg(&buf_, "Child died from signal %d: %s", stat, get_signal_name(stat));
+      Mmsg(&buf_, _("Child died from signal %d: %s"), stat, get_signal_name(stat));
       return buf_;
    }
 #endif
index 18e8fc26df7cf1469b2a511a667554e651f345fe..e0084533ffa244155f95b07ca06047132120177c 100644 (file)
@@ -88,11 +88,11 @@ int bget_msg(BSOCK *sock)
       case BNET_STATUS:
         /* *****FIXME***** Implement BNET_STATUS */
         Dmsg0(msglvl, "Got BNET_STATUS\n");
-        bnet_fsend(sock, "Status OK\n");
+        bnet_fsend(sock, _("Status OK\n"));
         bnet_sig(sock, BNET_EOD);
         break;
       default:
-        Emsg1(M_ERROR, 0, "bget_msg: unknown signal %d\n", sock->msglen);
+        Emsg1(M_ERROR, 0, _("bget_msg: unknown signal %d\n"), sock->msglen);
         break;
       }
    }
index 48bfcdefc87877c54fe42c5998d303268fb1876d..da653f43fbb3cc572377c2cd486ed77e0ae2e769 100644 (file)
@@ -604,22 +604,22 @@ static const char *gethost_strerror()
       msg = be.strerror();
       break;
    case NETDB_SUCCESS:
-      msg = "No problem.";
+      msg = _("No problem.");
       break;
    case HOST_NOT_FOUND:
-      msg = "Authoritative answer for host not found.";
+      msg = _("Authoritative answer for host not found.");
       break;
    case TRY_AGAIN:
-      msg = "Non-authoritative for host not found, or ServerFail.";
+      msg = _("Non-authoritative for host not found, or ServerFail.");
       break;
    case NO_RECOVERY:
-      msg = "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP.";
+      msg = _("Non-recoverable errors, FORMERR, REFUSED, or NOTIMP.");
       break;
    case NO_DATA:
-      msg = "Valid name, no data record of resquested type.";
+      msg = _("Valid name, no data record of resquested type.");
       break;
    default:
-      msg = "Unknown error.";
+      msg = _("Unknown error.");
    }
    return msg;
 }
@@ -754,7 +754,7 @@ static BSOCK *bnet_open(JCR * jcr, const char *name, char *host, char *service,
     */
    if ((addr_list = bnet_host2ipaddrs(host, 0, &errstr)) == NULL) {
       /* Note errstr is not malloc'ed */
-      Qmsg2(jcr, M_ERROR, 0, "gethostbyname() for host \"%s\" failed: ERR=%s\n",
+      Qmsg2(jcr, M_ERROR, 0, _("gethostbyname() for host \"%s\" failed: ERR=%s\n"),
             host, errstr);
       Dmsg2(100, "bnet_host2ipaddrs() for host %s failed: ERR=%s\n",
             host, errstr);
@@ -774,7 +774,7 @@ static BSOCK *bnet_open(JCR * jcr, const char *name, char *host, char *service,
          berrno be;
          save_errno = errno;
          *fatal = 1;
-         Pmsg3(000, "Socket open error. proto=%d port=%d. ERR=%s\n",
+         Pmsg3(000, _("Socket open error. proto=%d port=%d. ERR=%s\n"),
             ipaddr->get_family(), ipaddr->get_port_host_order(), be.strerror());
          continue;
       }
@@ -838,8 +838,9 @@ BSOCK *bnet_connect(JCR * jcr, int retry_interval, int max_retry_time,
       if (i < 0) {
          i = 60 * 5;               /* complain again in 5 minutes */
          if (verbose)
-            Qmsg4(jcr, M_WARNING, 0, "Could not connect to %s on %s:%d. ERR=%s\n"
-"Retrying ...\n", name, host, port, be.strerror());
+            Qmsg4(jcr, M_WARNING, 0, _(
+               "Could not connect to %s on %s:%d. ERR=%s\n"
+               "Retrying ...\n"), name, host, port, be.strerror());
       }
       bmicrosleep(retry_interval, 0);
       max_retry_time -= retry_interval;
@@ -983,13 +984,13 @@ int bnet_set_nonblocking (BSOCK *bsock) {
    /* Get current flags */
    if((oflags = fcntl(bsock->fd, F_GETFL, 0)) < 0) {
       berrno be;
-      Emsg1(M_ABORT, 0, "fcntl F_GETFL error. ERR=%s\n", be.strerror());
+      Emsg1(M_ABORT, 0, _("fcntl F_GETFL error. ERR=%s\n"), be.strerror());
    }
 
    /* Set O_NONBLOCK flag */
    if((fcntl(bsock->fd, F_SETFL, oflags|O_NONBLOCK)) < 0) {
       berrno be;
-      Emsg1(M_ABORT, 0, "fcntl F_SETFL error. ERR=%s\n", be.strerror());
+      Emsg1(M_ABORT, 0, _("fcntl F_SETFL error. ERR=%s\n"), be.strerror());
    }
 
    bsock->blocking = 0;
@@ -1016,13 +1017,13 @@ int bnet_set_blocking (BSOCK *bsock) {
    /* Get current flags */
    if((oflags = fcntl(bsock->fd, F_GETFL, 0)) < 0) {
       berrno be;
-      Emsg1(M_ABORT, 0, "fcntl F_GETFL error. ERR=%s\n", be.strerror());
+      Emsg1(M_ABORT, 0, _("fcntl F_GETFL error. ERR=%s\n"), be.strerror());
    }
 
    /* Set O_NONBLOCK flag */
    if((fcntl(bsock->fd, F_SETFL, oflags & ~O_NONBLOCK)) < 0) {
       berrno be;
-      Emsg1(M_ABORT, 0, "fcntl F_SETFL error. ERR=%s\n", be.strerror());
+      Emsg1(M_ABORT, 0, _("fcntl F_SETFL error. ERR=%s\n"), be.strerror());
    }
 
    bsock->blocking = 1;
@@ -1046,7 +1047,7 @@ void bnet_restore_blocking (BSOCK *bsock, int flags) {
 #ifndef WIN32
    if((fcntl(bsock->fd, F_SETFL, flags)) < 0) {
       berrno be;
-      Emsg1(M_ABORT, 0, "fcntl F_SETFL error. ERR=%s\n", be.strerror());
+      Emsg1(M_ABORT, 0, _("fcntl F_SETFL error. ERR=%s\n"), be.strerror());
    }
 
    bsock->blocking = (flags & O_NONBLOCK);
@@ -1100,7 +1101,7 @@ const char *bnet_sig_to_ascii(BSOCK * bs)
    case BNET_PROMPT:
       return "BNET_PROMPT";
    default:
-      sprintf(buf, "Unknown sig %d", (int)bs->msglen);
+      sprintf(buf, _("Unknown sig %d"), (int)bs->msglen);
       return buf;
    }
 }
index c2cad7deaa5afa8fdce7fd2fe2588f7cfcc700db..f94bc710e8a4fbf98d89ce00c99d92900db1bc7e 100644 (file)
@@ -121,7 +121,7 @@ bnet_thread_server(dlist *addrs, int max_clients, workq_t *client_wq,
         berrno be;
         if (tlog <= 0) {
            tlog = 2 * 60;         /* Complain every 2 minutes */
-            Emsg2(M_WARNING, 0, _("Cannot bind port %d: ERR=%s. Retrying ...\n"),
+            Emsg2(M_WARNING, 0, _("Cannot bind port %d: ERR=%s: Retrying ...\n"),
                  ntohs(fd_ptr->port), be.strerror());
         }
         bmicrosleep(5, 0);
@@ -375,14 +375,14 @@ BSOCK *bnet_accept(BSOCK * bsock, char *who)
       return NULL;
    } else {
       if (caller == NULL) {
-         caller = "unknown";
+         caller = _("unknown");
       }
       len = strlen(caller) + strlen(who) + 3;
       buf = (char *)malloc(len);
       bstrncpy(buf, len, who);
       bstrncat(buf, len, ": ");
       bstrncat(buf, len, caller);
-      bs = init_bsock(NULL, newsockfd, "client", buf, bsock->port, &cli_addr);
+      bs = init_bsock(NULL, newsockfd, _("client"), buf, bsock->port, &cli_addr);
       free(buf);
       return bs;                  /* return new BSOCK */
    }
index 03b7e3501785bc5e6c06f6b41af3b33e0b663a74..03a1ee1a7f0e766b8dfb5f053d1f7f1ab0205605 100644 (file)
@@ -279,7 +279,7 @@ int run_program(char *prog, int wait, POOLMEM *results)
              * by the watchdog. */
             if (bpipe->timer_id->killed) {
                stat1 = ETIME;
-               pm_strcat(results, "Program killed by Bacula watchdog (timeout)\n");
+               pm_strcat(results, _("Program killed by Bacula watchdog (timeout)\n"));
             }
          }
       }
@@ -354,7 +354,7 @@ int run_program_full_output(char *prog, int wait, POOLMEM *results)
          if (bpipe->timer_id) {
             Dmsg1(100, "Run program fgets killed=%d\n", bpipe->timer_id->killed);
             if (bpipe->timer_id->killed) {
-               pm_strcat(tmp, "Program killed by Bacula watchdog (timeout)\n");
+               pm_strcat(tmp, _("Program killed by Bacula watchdog (timeout)\n"));
                stat1 = ETIME;
                break;
             }
index ade0e4b8db2b14658051f5f1bad536b6ffc4945b..4ba4db165810abe6b316fe7e8b2eff335aaa0957 100644 (file)
@@ -66,7 +66,7 @@ void shm_create(BSHM *shm)
    Dmsg1(110, "shm_create size=%d\n", shm->size);
    for (i=0; i<MAX_TRIES; i++) {
       if ((shmid = shmget(shmkey, shm->size, shm->perms | IPC_CREAT)) < 0) {
-        Emsg1(M_WARN, 0, "shmget failure key = %x\n", shmkey);
+        Emsg1(M_WARN, 0, _("shmget failure key = %x\n"), shmkey);
         shmkey++;
         continue;
       }
@@ -74,7 +74,7 @@ void shm_create(BSHM *shm)
       break;
    }
    if (not_found)
-      Emsg2(M_ABORT, 0, "Could not get %d bytes of shared memory: %s\n", shm->size, strerror(errno));
+      Emsg2(M_ABORT, 0, _("Could not get %d bytes of shared memory: %s\n"), shm->size, strerror(errno));
    shm->shmkey = shmkey;
    shm->shmid = shmid;
    Dmsg2(110, "shm_create return key=%x id=%d\n", shmkey, shmid);
@@ -99,7 +99,7 @@ void *shm_open(BSHM *shm)
    shmbuf = shmat(shmid, NULL, 0);
    Dmsg1(110, "shm_open buf=%x\n", shmbuf);
    if (shmbuf == (char *) -1)
-      Emsg1(M_ABORT, 0, "Could not attach shared memory: %s\n", strerror(errno));
+      Emsg1(M_ABORT, 0, _("Could not attach shared memory: %s\n"), strerror(errno));
    shm->shmbuf = shmbuf;
    shm->shmid = shmid;
    return shmbuf;
@@ -120,7 +120,7 @@ void shm_close(BSHM *shm)
 #ifdef NEED_SHARED_MEMORY
    if (shm->size) {
       if (shmdt(shm->shmbuf) < 0) {
-        Emsg1(M_ERROR, 0, "Error detaching shared memory: %s\n", strerror(errno));
+        Emsg1(M_ERROR, 0, _("Error detaching shared memory: %s\n"), strerror(errno));
       }
    }
 #else
@@ -136,7 +136,7 @@ void shm_destroy(BSHM *shm)
 #ifdef NEED_SHARED_MEMORY
    if (shm->size) {
       if (shmctl(shm->shmid, IPC_RMID, NULL) < 0) {
-        Emsg1(M_ERROR, 0, "Could not destroy shared memory: %s\n", strerror(errno));
+        Emsg1(M_ERROR, 0, _("Could not destroy shared memory: %s\n"), strerror(errno));
       }
    }
 #else
index be6582b3559589082731b50681448f4645ed953c..d41d971077e1f040925d71b410f20390a9e6ea76 100644 (file)
@@ -393,7 +393,7 @@ void b_memset(const char *file, int line, void *mem, int val, size_t num)
 {
    /* Testing for 2000 byte zero at beginning of Volume block */
    if (num > 1900 && num < 3000) {
-      Pmsg3(000, "Memset for %d bytes at %s:%d\n", (int)num, file, line);
+      Pmsg3(000, _("Memset for %d bytes at %s:%d\n"), (int)num, file, line);
    }
    memset(mem, val, num);
 }
@@ -532,7 +532,7 @@ void write_state_file(char *dir, const char *progname, int port)
    Mmsg(&fname, "%s/%s.%d.state", dir, progname, port);
    /* Create new state file */
    if ((sfd = open(fname, O_CREAT|O_WRONLY|O_BINARY, 0640)) < 0) {
-      Dmsg2(000, _("Could not create state file. %s ERR=%s\n"), fname, strerror(errno));
+      Dmsg2(000, "Could not create state file. %s ERR=%s\n", fname, strerror(errno));
       Emsg2(M_ERROR, 0, _("Could not create state file. %s ERR=%s\n"), fname, strerror(errno));
       goto bail_out;
    }
@@ -549,7 +549,7 @@ void write_state_file(char *dir, const char *progname, int port)
       goto bail_out;
    }
    if (write(sfd, &state_hdr, sizeof(state_hdr)) != sizeof(state_hdr)) {
-      Pmsg1(000, "Write final hdr error: ERR=%s\n", strerror(errno));
+      Pmsg1(000, _("Write final hdr error: ERR=%s\n"), strerror(errno));
    }
 // Dmsg1(010, "rewrote header = %d\n", sizeof(state_hdr));
 bail_out:
index 3023677f52c529dc47e80d9ed83e923a30648cfb..3f530c6fc2a3e05a742c5ae710c22aa9097b5f22 100644 (file)
@@ -236,7 +236,7 @@ static btimer_t *btimer_start_common(uint32_t wait)
 static void stop_btimer(btimer_t *wid)
 {
    if (wid == NULL) {
-      Emsg0(M_ABORT, 0, "stop_btimer called with NULL btimer_id\n");
+      Emsg0(M_ABORT, 0, _("stop_btimer called with NULL btimer_id\n"));
    }
    unregister_watchdog(wid->wd);
    free(wid->wd);
index 1eb58bb5525da22b7b267e6ee9c12c54ee62524c..540ae5b4afacddf57d2d7edb3d319066cc1e5291 100644 (file)
@@ -77,7 +77,7 @@ int cram_md5_auth(BSOCK *bs, char *password, int tls_local_need)
       bnet_fsend(bs, "1000 OK auth\n");
    } else {
       Dmsg1(50, "Auth failed PW: %s\n", password);
-      bnet_fsend(bs, "1999 Authorization failed.\n");
+      bnet_fsend(bs, _("1999 Authorization failed.\n"));
       bmicrosleep(5, 0);
    }
    return ok;
@@ -102,7 +102,7 @@ int cram_md5_get_auth(BSOCK *bs, char *password, int *tls_remote_need)
    if (sscanf(bs->msg, "auth cram-md5 %s ssl=%d\n", chal, tls_remote_need) != 2) {
       if (sscanf(bs->msg, "auth cram-md5 %s\n", chal) != 1) {
         Dmsg1(50, "Cannot scan challenge: %s", bs->msg);
-        bnet_fsend(bs, "1999 Authorization failed.\n");
+        bnet_fsend(bs, _("1999 Authorization failed.\n"));
         bmicrosleep(5, 0);
         return 0;
       }
index cd0545a61cde4b323ec5d95df5b09654a8662659..55ce00b6bceda5681ab24f4fc4431a0ec0fe63dc 100644 (file)
@@ -55,7 +55,7 @@ daemon_start()
 
    Dmsg0(900, "Enter daemon_start\n");
    if ( (cpid = fork() ) < 0)
-      Emsg1(M_ABORT, 0, "Cannot fork to become daemon: %s\n", strerror(errno));
+      Emsg1(M_ABORT, 0, _("Cannot fork to become daemon: %s\n"), strerror(errno));
    else if (cpid > 0)
       exit(0);             /* parent exits */
    /* Child continues */
index 187793e2ea8cc57213a862cffce19cd87d4f21b8..861c8c8b785d61814460d39a2cb063ec8166ecf6 100644 (file)
@@ -158,7 +158,7 @@ void FillEventsBox(HWND hwnd, int idlist)
     if (!shm_OK || myUPS.eventfile[0] == 0 ||
        (events_file = fopen(myUPS.eventfile, "r")) == NULL) {
        SendDlgItemMessage(hwnd, idlist, LB_ADDSTRING, 0,
-          (LONG)"Events not available");
+          (LONG)_("Events not available"));
        return;
     }
 
index a5e878303d4d687ea78b05d4d9b6fc683d52630a..fbb1356ac840a640c49eb8ab0e4ef6087e7e11fe 100755 (executable)
@@ -274,7 +274,7 @@ static void remove_jcr(JCR *jcr)
 {
    Dmsg0(3400, "Enter remove_jcr\n");
    if (!jcr) {
-      Emsg0(M_ABORT, 0, "NULL jcr.\n");
+      Emsg0(M_ABORT, 0, _("NULL jcr.\n"));
    }
    jcrs->remove(jcr);
    Dmsg0(3400, "Leave remove_jcr\n");
index 01ab91ad60e8b8a7678c18130ce735c29e8fa979..a9925f2cd4b6c34e4cae1683b1ae47ad2df94d25 100644 (file)
@@ -105,7 +105,7 @@ LEX *lex_close_file(LEX *lf)
 
    Dmsg1(2000, "Close lex file: %s\n", lf->fname);
    if (lf == NULL) {
-      Emsg0(M_ABORT, 0, "Close of NULL file\n");
+      Emsg0(M_ABORT, 0, _("Close of NULL file\n"));
    }
    of = lf->next;
    fclose(lf->fd);
@@ -178,7 +178,7 @@ LEX *lex_open_file(LEX *lf, const char *filename, LEX_ERROR_HANDLER *scan_error)
 int lex_get_char(LEX *lf)
 {
    if (lf->ch == L_EOF) {
-      Emsg0(M_ABORT, 0, "get_char: called after EOF\n");
+      Emsg0(M_ABORT, 0, _("get_char: called after EOF\n"));
    }
    if (lf->ch == L_EOL) {
       if (bfgets(lf->line, MAXSTRING, lf->fd) == NULL) {
@@ -241,13 +241,13 @@ static void begin_str(LEX *lf, int ch)
 static const char *lex_state_to_str(int state)
 {
    switch (state) {
-   case lex_none:          return "none";
-   case lex_comment:       return "comment";
-   case lex_number:        return "number";
-   case lex_ip_addr:       return "ip_addr";
-   case lex_identifier:    return "identifier";
-   case lex_string:        return "string";
-   case lex_quoted_string: return "quoted_string";
+   case lex_none:          return _("none");
+   case lex_comment:       return _("comment");
+   case lex_number:        return _("number");
+   case lex_ip_addr:       return _("ip_addr");
+   case lex_identifier:    return _("identifier");
+   case lex_string:        return _("string");
+   case lex_quoted_string: return _("quoted_string");
    default:                return "??????";
    }
 }
index f5c2b5f11e17ae5dae7c3f0d7897474d1ed51856..8b0a502dfb55f1cc5e705d6d6d3b0cd7f80aad53 100644 (file)
@@ -97,7 +97,7 @@ POOLMEM *sm_get_pool_memory(const char *fname, int lineno, int pool)
    struct abufhead *buf;
 
    if (pool > PM_MAX) {
-      Emsg2(M_ABORT, 0, "MemPool index %d larger than max %d\n", pool, PM_MAX);
+      Emsg2(M_ABORT, 0, _("MemPool index %d larger than max %d\n"), pool, PM_MAX);
    }
    P(mutex);
    if (pool_ctl[pool].free_buf) {
@@ -115,7 +115,7 @@ POOLMEM *sm_get_pool_memory(const char *fname, int lineno, int pool)
 
    if ((buf = (struct abufhead *)sm_malloc(fname, lineno, pool_ctl[pool].size+HEAD_SIZE)) == NULL) {
       V(mutex);
-      Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", pool_ctl[pool].size);
+      Emsg1(M_ABORT, 0, _("Out of memory requesting %d bytes\n"), pool_ctl[pool].size);
    }
    buf->ablen = pool_ctl[pool].size;
    buf->pool = pool;
@@ -135,7 +135,7 @@ POOLMEM *sm_get_memory(const char *fname, int lineno, int32_t size)
    int pool = 0;
 
    if ((buf = (struct abufhead *)sm_malloc(fname, lineno, size+HEAD_SIZE)) == NULL) {
-      Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", size);
+      Emsg1(M_ABORT, 0, _("Out of memory requesting %d bytes\n"), size);
    }
    buf->ablen = size;
    buf->pool = pool;
@@ -170,7 +170,7 @@ POOLMEM *sm_realloc_pool_memory(const char *fname, int lineno, POOLMEM *obuf, in
    buf = sm_realloc(fname, lineno, cp, size+HEAD_SIZE);
    if (buf == NULL) {
       V(mutex);
-      Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", size);
+      Emsg1(M_ABORT, 0, _("Out of memory requesting %d bytes\n"), size);
    }
    ((struct abufhead *)buf)->ablen = size;
    pool = ((struct abufhead *)buf)->pool;
@@ -241,7 +241,7 @@ POOLMEM *get_pool_memory(int pool)
 
    if ((buf=malloc(pool_ctl[pool].size+HEAD_SIZE)) == NULL) {
       V(mutex);
-      Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", pool_ctl[pool].size);
+      Emsg1(M_ABORT, 0, _("Out of memory requesting %d bytes\n"), pool_ctl[pool].size);
    }
    buf->ablen = pool_ctl[pool].size;
    buf->pool = pool;
@@ -261,7 +261,7 @@ POOLMEM *get_memory(int32_t size)
    int pool = 0;
 
    if ((buf=malloc(size+HEAD_SIZE)) == NULL) {
-      Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", size);
+      Emsg1(M_ABORT, 0, _("Out of memory requesting %d bytes\n"), size);
    }
    buf->ablen = size;
    buf->pool = pool;
@@ -299,7 +299,7 @@ POOLMEM *realloc_pool_memory(POOLMEM *obuf, int32_t size)
    buf = realloc(cp, size+HEAD_SIZE);
    if (buf == NULL) {
       V(mutex);
-      Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", size);
+      Emsg1(M_ABORT, 0, _("Out of memory requesting %d bytes\n"), size);
    }
    ((struct abufhead *)buf)->ablen = size;
    pool = ((struct abufhead *)buf)->pool;
@@ -518,7 +518,7 @@ void POOL_MEM::realloc_pm(int32_t size)
    buf = (char *)realloc(cp, size+HEAD_SIZE);
    if (buf == NULL) {
       V(mutex);
-      Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", size);
+      Emsg1(M_ABORT, 0, _("Out of memory requesting %d bytes\n"), size);
    }
    Dmsg2(000, "Old buf=0x%x new buf=0x%x\n", cp, buf);
    ((struct abufhead *)buf)->ablen = size;
index c641983ae0a7c3c9a22e258309b7820c541e906b..d4810b710a157ffa47cd72ccdc06a195b52d2210 100755 (executable)
@@ -369,13 +369,13 @@ static BPIPE *open_mail_pipe(JCR *jcr, POOLMEM *&cmd, DEST *d)
 
    if (!(bpipe = open_bpipe(cmd, 120, "rw"))) {
       berrno be;
-      Jmsg(jcr, M_ERROR, 0, "open mail pipe %s failed: ERR=%s\n",
+      Jmsg(jcr, M_ERROR, 0, _("open mail pipe %s failed: ERR=%s\n"),
          cmd, be.strerror());
    }
 
    /* If we had to use sendmail, add subject */
    if (!d->mail_cmd) {
-       fprintf(bpipe->wfd, "Subject: Bacula Message\r\n\r\n");
+       fprintf(bpipe->wfd, "Subject: %s\r\n\r\n", _("Bacula Message"));
    }
 
    return bpipe;
@@ -428,7 +428,7 @@ void close_msg(JCR *jcr)
             }
 
             if (!(bpipe=open_mail_pipe(jcr, cmd, d))) {
-               Pmsg0(000, "open mail pipe failed.\n");
+               Pmsg0(000, _("open mail pipe failed.\n"));
                goto rem_temp_file;
             }
             Dmsg0(850, "Opened mail pipe\n");
@@ -440,7 +440,7 @@ void close_msg(JCR *jcr)
             }
             if (!close_wpipe(bpipe)) {       /* close write pipe sending mail */
                berrno be;
-               Pmsg1(000, "close error: ERR=%s\n", be.strerror());
+               Pmsg1(000, _("close error: ERR=%s\n"), be.strerror());
             }
 
             /*
@@ -664,7 +664,7 @@ void dispatch_message(JCR *jcr, int type, time_t mtime, char *msg)
                    if (!d->fd) {
                       berrno be;
                       d->fd = stdout;
-                      Qmsg2(jcr, M_ERROR, 0, "fopen %s failed: ERR=%s\n", name,
+                      Qmsg2(jcr, M_ERROR, 0, _("fopen %s failed: ERR=%s\n"), name,
                             be.strerror());
                       d->fd = NULL;
                       free_pool_memory(name);
@@ -686,7 +686,7 @@ void dispatch_message(JCR *jcr, int type, time_t mtime, char *msg)
                    if (!d->fd) {
                       berrno be;
                       d->fd = stdout;
-                      Qmsg2(jcr, M_ERROR, 0, "fopen %s failed: ERR=%s\n", d->where,
+                      Qmsg2(jcr, M_ERROR, 0, _("fopen %s failed: ERR=%s\n"), d->where,
                             be.strerror());
                       d->fd = NULL;
                       break;
@@ -702,7 +702,7 @@ void dispatch_message(JCR *jcr, int type, time_t mtime, char *msg)
                    if (!d->fd) {
                       berrno be;
                       d->fd = stdout;
-                      Qmsg2(jcr, M_ERROR, 0, "fopen %s failed: ERR=%s\n", d->where,
+                      Qmsg2(jcr, M_ERROR, 0, _("fopen %s failed: ERR=%s\n"), d->where,
                             be.strerror());
                       d->fd = NULL;
                       break;
@@ -930,30 +930,30 @@ e_msg(const char *file, int line, int type, int level, const char *fmt,...)
     }
     switch (type) {
     case M_ABORT:
-       len = bsnprintf(buf, sizeof(buf), "%s: ABORTING due to ERROR in %s:%d\n",
+       len = bsnprintf(buf, sizeof(buf), _("%s: ABORTING due to ERROR in %s:%d\n"),
                my_name, file, line);
        break;
     case M_ERROR_TERM:
-       len = bsnprintf(buf, sizeof(buf), "%s: ERROR TERMINATION at %s:%d\n",
+       len = bsnprintf(buf, sizeof(buf), _("%s: ERROR TERMINATION at %s:%d\n"),
                my_name, file, line);
        break;
     case M_FATAL:
        if (level == -1)            /* skip details */
-          len = bsnprintf(buf, sizeof(buf), "%s: Fatal Error because: ", my_name);
+          len = bsnprintf(buf, sizeof(buf), _("%s: Fatal Error because: "), my_name);
        else
-          len = bsnprintf(buf, sizeof(buf), "%s: Fatal Error at %s:%d because:\n", my_name, file, line);
+          len = bsnprintf(buf, sizeof(buf), _("%s: Fatal Error at %s:%d because:\n"), my_name, file, line);
        break;
     case M_ERROR:
        if (level == -1)            /* skip details */
-          len = bsnprintf(buf, sizeof(buf), "%s: ERROR: ", my_name);
+          len = bsnprintf(buf, sizeof(buf), _("%s: ERROR: "), my_name);
        else
-          len = bsnprintf(buf, sizeof(buf), "%s: ERROR in %s:%d ", my_name, file, line);
+          len = bsnprintf(buf, sizeof(buf), _("%s: ERROR in %s:%d "), my_name, file, line);
        break;
     case M_WARNING:
-       len = bsnprintf(buf, sizeof(buf), "%s: Warning: ", my_name);
+       len = bsnprintf(buf, sizeof(buf), _("%s: Warning: "), my_name);
        break;
     case M_SECURITY:
-       len = bsnprintf(buf, sizeof(buf), "%s: Security violation: ", my_name);
+       len = bsnprintf(buf, sizeof(buf), _("%s: Security violation: "), my_name);
        break;
     default:
        len = bsnprintf(buf, sizeof(buf), "%s: ", my_name);
@@ -1029,28 +1029,28 @@ Jmsg(JCR *jcr, int type, time_t mtime, const char *fmt,...)
     }
     switch (type) {
     case M_ABORT:
-       len = bsnprintf(rbuf, sizeof(rbuf), "%s ABORTING due to ERROR\n", my_name);
+       len = bsnprintf(rbuf, sizeof(rbuf), _("%s ABORTING due to ERROR\n"), my_name);
        break;
     case M_ERROR_TERM:
-       len = bsnprintf(rbuf, sizeof(rbuf), "%s ERROR TERMINATION\n", my_name);
+       len = bsnprintf(rbuf, sizeof(rbuf), _("%s ERROR TERMINATION\n"), my_name);
        break;
     case M_FATAL:
-       len = bsnprintf(rbuf, sizeof(rbuf), "%s: %s Fatal error: ", my_name, job);
+       len = bsnprintf(rbuf, sizeof(rbuf), _("%s: %s Fatal error: "), my_name, job);
        if (jcr) {
           set_jcr_job_status(jcr, JS_FatalError);
        }
        break;
     case M_ERROR:
-       len = bsnprintf(rbuf, sizeof(rbuf), "%s: %s Error: ", my_name, job);
+       len = bsnprintf(rbuf, sizeof(rbuf), _("%s: %s Error: "), my_name, job);
        if (jcr) {
           jcr->Errors++;
        }
        break;
     case M_WARNING:
-       len = bsnprintf(rbuf, sizeof(rbuf), "%s: %s Warning: ", my_name, job);
+       len = bsnprintf(rbuf, sizeof(rbuf), _("%s: %s Warning: "), my_name, job);
        break;
     case M_SECURITY:
-       len = bsnprintf(rbuf, sizeof(rbuf), "%s: %s Security violation: ", my_name, job);
+       len = bsnprintf(rbuf, sizeof(rbuf), _("%s: %s Security violation: "), my_name, job);
        break;
     default:
        len = bsnprintf(rbuf, sizeof(rbuf), "%s: ", my_name);
index 2765489552dc780c717def6fbf414aae06e785ad..18a103a65e5e4632ab52585e237824a5ac1f3abb 100755 (executable)
@@ -696,7 +696,7 @@ void store_yesno(LEX *lc, RES_ITEM *item, int index, int pass)
    } else if (strcasecmp(lc->str, "no") == 0) {
       *(int *)(item->value) &= ~(item->code);
    } else {
-      scan_err1(lc, _("Expect a YES or NO, got: %s"), lc->str);
+      scan_err3(lc, _("Expect a %s or %s, got: %s"), "YES", "NO", lc->str); /* YES and NO must not be translated */
    }
    scan_to_eol(lc);
    set_bit(index, res_all.hdr.item_present);
@@ -720,7 +720,7 @@ void store_label(LEX *lc, RES_ITEM *item, int index, int pass)
       }
    }
    if (i != 0) {
-      scan_err1(lc, "Expected a Tape Label keyword, got: %s", lc->str);
+      scan_err1(lc, _("Expected a Tape Label keyword, got: %s"), lc->str);
    }
    scan_to_eol(lc);
    set_bit(index, res_all.hdr.item_present);
index 884727193d468434edb77c8af156a98c4b0b337e..34d738a6cf9fb674f9a30fe6099a172b4a3c213d 100644 (file)
@@ -105,12 +105,12 @@ void init_python_interpreter(const char *progname, const char *scripts,
    PyModule_AddStringConstant(bacula_module, "ConfigFile", configfile);
    PyModule_AddStringConstant(bacula_module, "WorkingDir", (char *)working_directory);
    if (!bacula_module) {
-      Jmsg0(NULL, M_ERROR_TERM, 0, "Could not initialize Python\n");
+      Jmsg0(NULL, M_ERROR_TERM, 0, _("Could not initialize Python\n"));
    }
    bsnprintf(buf, sizeof(buf), "import sys\n"
             "sys.path.append('%s')\n", scripts);
    if (PyRun_SimpleString(buf) != 0) {
-      Jmsg1(NULL, M_ERROR_TERM, 0, "Could not Run Python string %s\n", buf);
+      Jmsg1(NULL, M_ERROR_TERM, 0, _("Could not Run Python string %s\n"), buf);
    }   
 
    /* Explicitly set values we want */
@@ -122,12 +122,12 @@ void init_python_interpreter(const char *progname, const char *scripts,
    JobType.tp_setattr = job_setattr;
 
    if (PyType_Ready(&JobType) != 0) {
-      Jmsg0(NULL, M_ERROR_TERM, 0, "Could not initialize Python Job type.\n");
+      Jmsg0(NULL, M_ERROR_TERM, 0, _("Could not initialize Python Job type.\n"));
       PyErr_Print();
    }   
    StartUp_module = PyImport_ImportModule((char *)module);
    if (!StartUp_module) {
-      Emsg2(M_ERROR, 0, "Could not import Python script %s/%s. Python disabled.\n",
+      Emsg2(M_ERROR, 0, _("Could not import Python script %s/%s. Python disabled.\n"),
            scripts, module);
       if (PyErr_Occurred()) {
          PyErr_Print();
@@ -227,7 +227,7 @@ int generate_daemon_event(JCR *jcr, const char *event)
       /* Create JCR argument to send to function */
       pJob = (PyObject *)PyObject_New(JobObject, &JobType);
       if (!pJob) {
-         Jmsg(jcr, M_ERROR, 0, "Could not create Python Job Object.\n");
+         Jmsg(jcr, M_ERROR, 0, _("Could not create Python Job Object.\n"));
          goto bail_out;
       }
       ((JobObject *)pJob)->jcr = jcr;
@@ -240,7 +240,7 @@ int generate_daemon_event(JCR *jcr, const char *event)
             PyErr_Print();
             Dmsg0(000, "Python JobStart error.\n");
          }
-         Jmsg(jcr, M_ERROR, 0, "Python function \"%s\" not found.\n", event);
+         Jmsg(jcr, M_ERROR, 0, _("Python function \"%s\" not found.\n"), event);
          Py_XDECREF(pJob);
          goto bail_out;
       }
@@ -264,7 +264,7 @@ int generate_daemon_event(JCR *jcr, const char *event)
                jcr->JobId);
             JobEnd_method = NULL;
          }
-         Jmsg(jcr, M_ERROR, 0, "Python function \"%s\" not found.\n", event);
+         Jmsg(jcr, M_ERROR, 0, _("Python function \"%s\" not found.\n"), event);
          goto bail_out;
       }
       stat = 1;                    /* OK */
@@ -279,7 +279,7 @@ int generate_daemon_event(JCR *jcr, const char *event)
       }
       stat = 1;                    /* OK */
    } else {
-      Jmsg1(jcr, M_ABORT, 0, "Unknown Python daemon event %s\n", event);
+      Jmsg1(jcr, M_ABORT, 0, _("Unknown Python daemon event %s\n"), event);
    }
 
 bail_out:
index 40e4c0d492833df8a27c36dee8f4c6e84796a10d..c8634e1fb12b20e7088988122117a439ffb523a1 100644 (file)
@@ -1037,55 +1037,55 @@ weak_alias (__re_set_syntax, re_set_syntax)
 static const char re_error_msgid[] =
   {
 #define REG_NOERROR_IDX 0
-    gettext_noop ("Success")    /* REG_NOERROR */
+    _("Success")    /* REG_NOERROR */
     "\0"
 #define REG_NOMATCH_IDX (REG_NOERROR_IDX + sizeof "Success")
-    gettext_noop ("No match")   /* REG_NOMATCH */
+    _("No match")   /* REG_NOMATCH */
     "\0"
 #define REG_BADPAT_IDX  (REG_NOMATCH_IDX + sizeof "No match")
-    gettext_noop ("Invalid regular expression") /* REG_BADPAT */
+    _("Invalid regular expression") /* REG_BADPAT */
     "\0"
 #define REG_ECOLLATE_IDX (REG_BADPAT_IDX + sizeof "Invalid regular expression")
-    gettext_noop ("Invalid collation character") /* REG_ECOLLATE */
+    _("Invalid collation character") /* REG_ECOLLATE */
     "\0"
 #define REG_ECTYPE_IDX  (REG_ECOLLATE_IDX + sizeof "Invalid collation character")
-    gettext_noop ("Invalid character class name") /* REG_ECTYPE */
+    _("Invalid character class name") /* REG_ECTYPE */
     "\0"
 #define REG_EESCAPE_IDX (REG_ECTYPE_IDX + sizeof "Invalid character class name")
-    gettext_noop ("Trailing backslash") /* REG_EESCAPE */
+    _("Trailing backslash") /* REG_EESCAPE */
     "\0"
 #define REG_ESUBREG_IDX (REG_EESCAPE_IDX + sizeof "Trailing backslash")
-    gettext_noop ("Invalid back reference") /* REG_ESUBREG */
+    _("Invalid back reference") /* REG_ESUBREG */
     "\0"
 #define REG_EBRACK_IDX  (REG_ESUBREG_IDX + sizeof "Invalid back reference")
-    gettext_noop ("Unmatched [ or [^") /* REG_EBRACK */
+    _("Unmatched [ or [^") /* REG_EBRACK */
     "\0"
 #define REG_EPAREN_IDX  (REG_EBRACK_IDX + sizeof "Unmatched [ or [^")
-    gettext_noop ("Unmatched ( or \\(") /* REG_EPAREN */
+    _("Unmatched ( or \\(") /* REG_EPAREN */
     "\0"
 #define REG_EBRACE_IDX  (REG_EPAREN_IDX + sizeof "Unmatched ( or \\(")
-    gettext_noop ("Unmatched \\{") /* REG_EBRACE */
+    _("Unmatched \\{") /* REG_EBRACE */
     "\0"
 #define REG_BADBR_IDX   (REG_EBRACE_IDX + sizeof "Unmatched \\{")
-    gettext_noop ("Invalid content of \\{\\}") /* REG_BADBR */
+    _("Invalid content of \\{\\}") /* REG_BADBR */
     "\0"
 #define REG_ERANGE_IDX  (REG_BADBR_IDX + sizeof "Invalid content of \\{\\}")
-    gettext_noop ("Invalid range end")  /* REG_ERANGE */
+    _("Invalid range end")  /* REG_ERANGE */
     "\0"
 #define REG_ESPACE_IDX  (REG_ERANGE_IDX + sizeof "Invalid range end")
-    gettext_noop ("Memory exhausted") /* REG_ESPACE */
+    _("Memory exhausted") /* REG_ESPACE */
     "\0"
 #define REG_BADRPT_IDX  (REG_ESPACE_IDX + sizeof "Memory exhausted")
-    gettext_noop ("Invalid preceding regular expression") /* REG_BADRPT */
+    _("Invalid preceding regular expression") /* REG_BADRPT */
     "\0"
 #define REG_EEND_IDX    (REG_BADRPT_IDX + sizeof "Invalid preceding regular expression")
-    gettext_noop ("Premature end of regular expression") /* REG_EEND */
+    _("Premature end of regular expression") /* REG_EEND */
     "\0"
 #define REG_ESIZE_IDX   (REG_EEND_IDX + sizeof "Premature end of regular expression")
-    gettext_noop ("Regular expression too big") /* REG_ESIZE */
+    _("Regular expression too big") /* REG_ESIZE */
     "\0"
 #define REG_ERPAREN_IDX (REG_ESIZE_IDX + sizeof "Regular expression too big")
-    gettext_noop ("Unmatched ) or \\)") /* REG_ERPAREN */
+    _("Unmatched ) or \\)") /* REG_ERPAREN */
   };
 
 static const size_t re_error_msgid_idx[] =
index 72b6775687d92e83c47835dc07d75c9af55db615..83408ba7be6c4eac32813e7a62545860bcb37638 100644 (file)
@@ -63,7 +63,7 @@ void b_LockRes(const char *file, int line)
      }
 #endif
    if ((errstat=rwl_writelock(&res_lock)) != 0) {
-      Emsg3(M_ABORT, 0, "rwl_writelock failure at %s:%d:  ERR=%s\n",
+      Emsg3(M_ABORT, 0, _("rwl_writelock failure at %s:%d:  ERR=%s\n"),
            file, line, strerror(errstat));
    }
    res_locked++;
@@ -73,7 +73,7 @@ void b_UnlockRes(const char *file, int line)
 {
    int errstat;
    if ((errstat=rwl_writeunlock(&res_lock)) != 0) {
-      Emsg3(M_ABORT, 0, "rwl_writeunlock failure at %s:%d:. ERR=%s\n",
+      Emsg3(M_ABORT, 0, _("rwl_writeunlock failure at %s:%d:. ERR=%s\n"),
            file, line, strerror(errstat));
    }
    res_locked--;
index 16ce457fb043659370e3591d86376d835d82f3ef..d66a5cc98322dfadd55be6447f0c8b675cec094a 100644 (file)
@@ -286,11 +286,11 @@ int rwl_writeunlock(brwlock_t *rwl)
       return stat;
    }
    if (rwl->w_active <= 0) {
-      Emsg0(M_ABORT, 0, "rwl_writeunlock called too many times.\n");
+      Emsg0(M_ABORT, 0, _("rwl_writeunlock called too many times.\n"));
    }
    rwl->w_active--;
    if (!pthread_equal(pthread_self(), rwl->writer_id)) {
-      Emsg0(M_ABORT, 0, "rwl_writeunlock by non-owner.\n");
+      Emsg0(M_ABORT, 0, _("rwl_writeunlock by non-owner.\n"));
    }
    if (rwl->w_active > 0) {
       stat = 0;                       /* writers still active */
@@ -355,14 +355,14 @@ void *thread_routine(void *arg)
       if ((iteration % self->interval) == 0) {
          status = rwl_writelock(&data[element].lock);
          if (status != 0) {
-            Emsg1(M_ABORT, 0, "Write lock failed. ERR=%s\n", strerror(status));
+            Emsg1(M_ABORT, 0, _("Write lock failed. ERR=%s\n"), strerror(status));
          }
          data[element].data = self->thread_num;
          data[element].writes++;
          self->writes++;
          status = rwl_writeunlock(&data[element].lock);
          if (status != 0) {
-            Emsg1(M_ABORT, 0, "Write unlock failed. ERR=%s\n", strerror(status));
+            Emsg1(M_ABORT, 0, _("Write unlock failed. ERR=%s\n"), strerror(status));
          }
       } else {
          /*
@@ -372,14 +372,14 @@ void *thread_routine(void *arg)
           */
           status = rwl_readlock(&data[element].lock);
           if (status != 0) {
-             Emsg1(M_ABORT, 0, "Read lock failed. ERR=%s\n", strerror(status));
+             Emsg1(M_ABORT, 0, _("Read lock failed. ERR=%s\n"), strerror(status));
           }
           self->reads++;
           if (data[element].data == self->thread_num)
              repeats++;
           status = rwl_readunlock(&data[element].lock);
           if (status != 0) {
-             Emsg1(M_ABORT, 0, "Read unlock failed. ERR=%s\n", strerror(status));
+             Emsg1(M_ABORT, 0, _("Read unlock failed. ERR=%s\n"), strerror(status));
           }
       }
       element++;
@@ -388,7 +388,7 @@ void *thread_routine(void *arg)
       }
    }
    if (repeats > 0) {
-      Pmsg2(000, "Thread %d found unchanged elements %d times\n",
+      Pmsg2(000, _("Thread %d found unchanged elements %d times\n"),
          self->thread_num, repeats);
    }
    return NULL;
@@ -420,7 +420,7 @@ int main (int argc, char *argv[])
         data[data_count].writes = 0;
         status = rwl_init (&data[data_count].lock);
         if (status != 0) {
-           Emsg1(M_ABORT, 0, "Init rwlock failed. ERR=%s\n", strerror(status));
+           Emsg1(M_ABORT, 0, _("Init rwlock failed. ERR=%s\n"), strerror(status));
         }
     }
 
@@ -435,7 +435,7 @@ int main (int argc, char *argv[])
         status = pthread_create (&threads[count].thread_id,
             NULL, thread_routine, (void*)&threads[count]);
         if (status != 0) {
-           Emsg1(M_ABORT, 0, "Create thread failed. ERR=%s\n", strerror(status));
+           Emsg1(M_ABORT, 0, _("Create thread failed. ERR=%s\n"), strerror(status));
         }
     }
 
@@ -446,10 +446,10 @@ int main (int argc, char *argv[])
     for (count = 0; count < THREADS; count++) {
         status = pthread_join (threads[count].thread_id, NULL);
         if (status != 0) {
-           Emsg1(M_ABORT, 0, "Join thread failed. ERR=%s\n", strerror(status));
+           Emsg1(M_ABORT, 0, _("Join thread failed. ERR=%s\n"), strerror(status));
         }
         thread_writes += threads[count].writes;
-        printf ("%02d: interval %d, writes %d, reads %d\n",
+        printf (_("%02d: interval %d, writes %d, reads %d\n"),
             count, threads[count].interval,
             threads[count].writes, threads[count].reads);
     }
@@ -459,12 +459,12 @@ int main (int argc, char *argv[])
      */
     for (data_count = 0; data_count < DATASIZE; data_count++) {
         data_writes += data[data_count].writes;
-        printf ("data %02d: value %d, %d writes\n",
+        printf (_("data %02d: value %d, %d writes\n"),
             data_count, data[data_count].data, data[data_count].writes);
         rwl_destroy (&data[data_count].lock);
     }
 
-    printf ("Total: %d thread writes, %d data writes\n",
+    printf (_("Total: %d thread writes, %d data writes\n"),
         thread_writes, data_writes);
     return 0;
 }
@@ -536,13 +536,13 @@ void *thread_routine (void *arg)
                 self->updates++;
                 rwl_writeunlock (&data[element].lock);
             } else
-                err_abort (status, "Try write lock");
+                err_abort (status, _("Try write lock"));
         } else {
             status = rwl_readtrylock (&data[element].lock);
             if (status == EBUSY)
                 self->r_collisions++;
             else if (status != 0) {
-                err_abort (status, "Try read lock");
+                err_abort (status, _("Try read lock"));
             } else {
                 if (data[element].data != data[element].updates)
                     printf ("%d: data[%d] %d != %d\n",
@@ -597,7 +597,7 @@ int main (int argc, char *argv[])
         status = pthread_create (&threads[count].thread_id,
             NULL, thread_routine, (void*)&threads[count]);
         if (status != 0)
-            err_abort (status, "Create thread");
+            err_abort (status, _("Create thread"));
     }
 
     /*
@@ -607,10 +607,10 @@ int main (int argc, char *argv[])
     for (count = 0; count < THREADS; count++) {
         status = pthread_join (threads[count].thread_id, NULL);
         if (status != 0)
-            err_abort (status, "Join thread");
+            err_abort (status, _("Join thread"));
         thread_updates += threads[count].updates;
-        printf ("%02d: interval %d, updates %d, "
-                "r_collisions %d, w_collisions %d\n",
+        printf (_("%02d: interval %d, updates %d, "
+                "r_collisions %d, w_collisions %d\n"),
             count, threads[count].interval,
             threads[count].updates,
             threads[count].r_collisions, threads[count].w_collisions);
@@ -621,7 +621,7 @@ int main (int argc, char *argv[])
      */
     for (data_count = 0; data_count < DATASIZE; data_count++) {
         data_updates += data[data_count].updates;
-        printf ("data %02d: value %d, %d updates\n",
+        printf (_("data %02d: value %d, %d updates\n"),
             data_count, data[data_count].data, data[data_count].updates);
         rwl_destroy (&data[data_count].lock);
     }
index e20d77f5341a754938d7b6fee30bd623a84df423..41273819e702c48aea410e2298641760bd4e477c 100644 (file)
@@ -182,7 +182,7 @@ int sem_unlock(semlock_t *sem)
    }
    sem->active--;
    if (sem->active < 0) {
-      Emsg0(M_ABORT, 0, "sem_unlock by non-owner.\n");
+      Emsg0(M_ABORT, 0, _("sem_unlock by non-owner.\n"));
    }
    if (sem->active >= sem->max_active) {
       stat = 0;                      /* caller(s) still active */
@@ -245,14 +245,14 @@ void *thread_routine(void *arg)
       if ((iteration % self->interval) == 0) {
         status = sem_writelock(&data[element].lock);
         if (status != 0) {
-           Emsg1(M_ABORT, 0, "Write lock failed. ERR=%s\n", strerror(status));
+           Emsg1(M_ABORT, 0, _("Write lock failed. ERR=%s\n"), strerror(status));
         }
         data[element].data = self->thread_num;
         data[element].writes++;
         self->writes++;
         status = sem_writeunlock(&data[element].lock);
         if (status != 0) {
-           Emsg1(M_ABORT, 0, "Write unlock failed. ERR=%s\n", strerror(status));
+           Emsg1(M_ABORT, 0, _("Write unlock failed. ERR=%s\n"), strerror(status));
         }
       } else {
         /*
@@ -262,14 +262,14 @@ void *thread_routine(void *arg)
          */
          status = sem_readlock(&data[element].lock);
          if (status != 0) {
-            Emsg1(M_ABORT, 0, "Read lock failed. ERR=%s\n", strerror(status));
+            Emsg1(M_ABORT, 0, _("Read lock failed. ERR=%s\n"), strerror(status));
          }
          self->reads++;
          if (data[element].data == self->thread_num)
             repeats++;
          status = sem_readunlock(&data[element].lock);
          if (status != 0) {
-            Emsg1(M_ABORT, 0, "Read unlock failed. ERR=%s\n", strerror(status));
+            Emsg1(M_ABORT, 0, _("Read unlock failed. ERR=%s\n"), strerror(status));
          }
       }
       element++;
@@ -278,7 +278,7 @@ void *thread_routine(void *arg)
       }
    }
    if (repeats > 0) {
-      Pmsg2(000, "Thread %d found unchanged elements %d times\n",
+      Pmsg2(000, _("Thread %d found unchanged elements %d times\n"),
         self->thread_num, repeats);
    }
    return NULL;
@@ -310,7 +310,7 @@ int main (int argc, char *argv[])
        data[data_count].writes = 0;
        status = sem_init (&data[data_count].lock);
        if (status != 0) {
-          Emsg1(M_ABORT, 0, "Init rwlock failed. ERR=%s\n", strerror(status));
+          Emsg1(M_ABORT, 0, _("Init rwlock failed. ERR=%s\n"), strerror(status));
        }
     }
 
@@ -325,7 +325,7 @@ int main (int argc, char *argv[])
        status = pthread_create(&threads[count].thread_id,
            NULL, thread_routine, (void*)&threads[count]);
        if (status != 0) {
-          Emsg1(M_ABORT, 0, "Create thread failed. ERR=%s\n", strerror(status));
+          Emsg1(M_ABORT, 0, _("Create thread failed. ERR=%s\n"), strerror(status));
        }
     }
 
@@ -336,10 +336,10 @@ int main (int argc, char *argv[])
     for (count = 0; count < THREADS; count++) {
        status = pthread_join (threads[count].thread_id, NULL);
        if (status != 0) {
-          Emsg1(M_ABORT, 0, "Join thread failed. ERR=%s\n", strerror(status));
+          Emsg1(M_ABORT, 0, _("Join thread failed. ERR=%s\n"), strerror(status));
        }
        thread_writes += threads[count].writes;
-       printf ("%02d: interval %d, writes %d, reads %d\n",
+       printf (_("%02d: interval %d, writes %d, reads %d\n"),
            count, threads[count].interval,
            threads[count].writes, threads[count].reads);
     }
@@ -349,12 +349,12 @@ int main (int argc, char *argv[])
      */
     for (data_count = 0; data_count < DATASIZE; data_count++) {
        data_writes += data[data_count].writes;
-       printf ("data %02d: value %d, %d writes\n",
+       printf (_("data %02d: value %d, %d writes\n"),
            data_count, data[data_count].data, data[data_count].writes);
        sem_destroy (&data[data_count].lock);
     }
 
-    printf ("Total: %d thread writes, %d data writes\n",
+    printf (_("Total: %d thread writes, %d data writes\n"),
        thread_writes, data_writes);
     return 0;
 }
@@ -426,13 +426,13 @@ void *thread_routine (void *arg)
                self->updates++;
                sem_writeunlock (&data[element].lock);
            } else
-               err_abort (status, "Try write lock");
+               err_abort (status, _("Try write lock"));
        } else {
            status = sem_readtrylock (&data[element].lock);
            if (status == EBUSY)
                self->r_collisions++;
            else if (status != 0) {
-               err_abort (status, "Try read lock");
+               err_abort (status, _("Try read lock"));
            } else {
                if (data[element].data != data[element].updates)
                    printf ("%d: data[%d] %d != %d\n",
@@ -487,7 +487,7 @@ int main (int argc, char *argv[])
        status = pthread_create (&threads[count].thread_id,
            NULL, thread_routine, (void*)&threads[count]);
        if (status != 0)
-           err_abort (status, "Create thread");
+           err_abort (status, _("Create thread"));
     }
 
     /*
@@ -497,10 +497,10 @@ int main (int argc, char *argv[])
     for (count = 0; count < THREADS; count++) {
        status = pthread_join(threads[count].thread_id, NULL);
        if (status != 0)
-           err_abort(status, "Join thread");
+           err_abort(status, _("Join thread"));
        thread_updates += threads[count].updates;
-       printf ("%02d: interval %d, updates %d, "
-               "r_collisions %d, w_collisions %d\n",
+       printf (_("%02d: interval %d, updates %d, "
+               "r_collisions %d, w_collisions %d\n"),
            count, threads[count].interval,
            threads[count].updates,
            threads[count].r_collisions, threads[count].w_collisions);
@@ -511,7 +511,7 @@ int main (int argc, char *argv[])
      */
     for (data_count = 0; data_count < DATASIZE; data_count++) {
        data_updates += data[data_count].updates;
-       printf ("data %02d: value %d, %d updates\n",
+       printf (_("data %02d: value %d, %d updates\n"),
            data_count, data[data_count].data, data[data_count].updates);
        sem_destroy(&data[data_count].lock);
     }
index 83333deb58490d740b48e6dcff782a40ee70acce..f9be096f4ded48f00b25b897ab66a83b9c6e29c3 100644 (file)
@@ -58,7 +58,7 @@ static pid_t main_pid = 0;
 const char *get_signal_name(int sig)
 {
    if (sig < 0 || sig > BA_NSIG || !sig_names[sig]) {
-      return "Invalid signal number";
+      return _("Invalid signal number");
    } else {
       return sig_names[sig];
    }
@@ -84,7 +84,7 @@ extern "C" void signal_handler(int sig)
    if (sig == SIGTERM) {
 //    Emsg1(M_TERM, -1, "Shutting down Bacula service: %s ...\n", my_name);
    } else {
-      Emsg2(M_FATAL, -1, "Bacula interrupted by signal %d: %s\n", sig, sig_names[sig]);
+      Emsg2(M_FATAL, -1, _("Bacula interrupted by signal %d: %s\n"), sig, sig_names[sig]);
    }
 
 #ifdef TRACEBACK
@@ -97,9 +97,9 @@ extern "C" void signal_handler(int sig)
       pid_t pid;
       int exelen = strlen(exepath);
 
-      fprintf(stderr, "Kaboom! %s, %s got signal %d. Attempting traceback.\n",
+      fprintf(stderr, _("Kaboom! %s, %s got signal %d. Attempting traceback.\n"),
               exename, my_name, sig);
-      fprintf(stderr, "Kaboom! exepath=%s\n", exepath);
+      fprintf(stderr, _("Kaboom! exepath=%s\n"), exepath);
 
       if (exelen + 12 > (int)sizeof(btpath)) {
          bstrncpy(btpath, "btraceback", sizeof(btpath));
@@ -133,16 +133,16 @@ extern "C" void signal_handler(int sig)
       Dmsg1(300, "exepath=%s\n", exepath);
       switch (pid = fork()) {
       case -1:                        /* error */
-         fprintf(stderr, "Fork error: ERR=%s\n", strerror(errno));
+         fprintf(stderr, _("Fork error: ERR=%s\n"), strerror(errno));
          break;
       case 0:                         /* child */
          argv[0] = btpath;            /* path to btraceback */
          argv[1] = exepath;           /* path to exe */
          argv[2] = pid_buf;
          argv[3] = (char *)NULL;
-         fprintf(stderr, "Calling: %s %s %s\n", btpath, exepath, pid_buf);
+         fprintf(stderr, _("Calling: %s %s %s\n"), btpath, exepath, pid_buf);
          if (execv(btpath, argv) != 0) {
-            printf("execv: %s failed: ERR=%s\n", btpath, strerror(errno));
+            printf(_("execv: %s failed: ERR=%s\n"), btpath, strerror(errno));
          }
          exit(-1);
       default:                        /* parent */
@@ -157,7 +157,7 @@ extern "C" void signal_handler(int sig)
       if (pid > 0) {
          Dmsg0(500, "Doing waitpid\n");
          waitpid(pid, NULL, 0);       /* wait for child to produce dump */
-         fprintf(stderr, "Traceback complete, attempting cleanup ...\n");
+         fprintf(stderr, _("Traceback complete, attempting cleanup ...\n"));
          Dmsg0(500, "Done waitpid\n");
          exit_handler(sig);           /* clean up if possible */
          Dmsg0(500, "Done exit_handler\n");
@@ -165,7 +165,7 @@ extern "C" void signal_handler(int sig)
          Dmsg0(500, "Doing sleep\n");
          bmicrosleep(30, 0);
       }
-      fprintf(stderr, "It looks like the traceback worked ...\n");
+      fprintf(stderr, _("It looks like the traceback worked ...\n"));
    }
 #endif
 
@@ -194,70 +194,70 @@ void init_signals(void terminate(int sig))
 
    exit_handler = terminate;
    if (BA_NSIG < _sys_nsig)
-      Emsg2(M_ABORT, 0, "BA_NSIG too small (%d) should be (%d)\n", BA_NSIG, _sys_nsig);
+      Emsg2(M_ABORT, 0, _("BA_NSIG too small (%d) should be (%d)\n"), BA_NSIG, _sys_nsig);
 
    for (i=0; i<_sys_nsig; i++)
       sig_names[i] = _sys_siglist[i];
 #else
    exit_handler = terminate;
-   sig_names[0]         = "UNKNOWN SIGNAL";
-   sig_names[SIGHUP]    = "Hangup";
-   sig_names[SIGINT]    = "Interrupt";
-   sig_names[SIGQUIT]   = "Quit";
-   sig_names[SIGILL]    = "Illegal instruction";;
-   sig_names[SIGTRAP]   = "Trace/Breakpoint trap";
-   sig_names[SIGABRT]   = "Abort";
+   sig_names[0]         = _("UNKNOWN SIGNAL");
+   sig_names[SIGHUP]    = _("Hangup");
+   sig_names[SIGINT]    = _("Interrupt");
+   sig_names[SIGQUIT]   = _("Quit");
+   sig_names[SIGILL]    = _("Illegal instruction");;
+   sig_names[SIGTRAP]   = _("Trace/Breakpoint trap");
+   sig_names[SIGABRT]   = _("Abort");
 #ifdef SIGEMT
-   sig_names[SIGEMT]    = "EMT instruction (Emulation Trap)";
+   sig_names[SIGEMT]    = _("EMT instruction (Emulation Trap)");
 #endif
 #ifdef SIGIOT
-   sig_names[SIGIOT]    = "IOT trap";
+   sig_names[SIGIOT]    = _("IOT trap");
 #endif
-   sig_names[SIGBUS]    = "BUS error";
-   sig_names[SIGFPE]    = "Floating-point exception";
-   sig_names[SIGKILL]   = "Kill, unblockable";
-   sig_names[SIGUSR1]   = "User-defined signal 1";
-   sig_names[SIGSEGV]   = "Segmentation violation";
-   sig_names[SIGUSR2]   = "User-defined signal 2";
-   sig_names[SIGPIPE]   = "Broken pipe";
-   sig_names[SIGALRM]   = "Alarm clock";
-   sig_names[SIGTERM]   = "Termination";
+   sig_names[SIGBUS]    = _("BUS error");
+   sig_names[SIGFPE]    = _("Floating-point exception");
+   sig_names[SIGKILL]   = _("Kill, unblockable");
+   sig_names[SIGUSR1]   = _("User-defined signal 1");
+   sig_names[SIGSEGV]   = _("Segmentation violation");
+   sig_names[SIGUSR2]   = _("User-defined signal 2");
+   sig_names[SIGPIPE]   = _("Broken pipe");
+   sig_names[SIGALRM]   = _("Alarm clock");
+   sig_names[SIGTERM]   = _("Termination");
 #ifdef SIGSTKFLT
-   sig_names[SIGSTKFLT] = "Stack fault";
+   sig_names[SIGSTKFLT] = _("Stack fault");
 #endif
-   sig_names[SIGCHLD]   = "Child status has changed";
-   sig_names[SIGCONT]   = "Continue";
-   sig_names[SIGSTOP]   = "Stop, unblockable";
-   sig_names[SIGTSTP]   = "Keyboard stop";
-   sig_names[SIGTTIN]   = "Background read from tty";
-   sig_names[SIGTTOU]   = "Background write to tty";
-   sig_names[SIGURG]    = "Urgent condition on socket";
-   sig_names[SIGXCPU]   = "CPU limit exceeded";
-   sig_names[SIGXFSZ]   = "File size limit exceeded";
-   sig_names[SIGVTALRM] = "Virtual alarm clock";
-   sig_names[SIGPROF]   = "Profiling alarm clock";
-   sig_names[SIGWINCH]  = "Window size change";
-   sig_names[SIGIO]     = "I/O now possible";
+   sig_names[SIGCHLD]   = _("Child status has changed");
+   sig_names[SIGCONT]   = _("Continue");
+   sig_names[SIGSTOP]   = _("Stop, unblockable");
+   sig_names[SIGTSTP]   = _("Keyboard stop");
+   sig_names[SIGTTIN]   = _("Background read from tty");
+   sig_names[SIGTTOU]   = _("Background write to tty");
+   sig_names[SIGURG]    = _("Urgent condition on socket");
+   sig_names[SIGXCPU]   = _("CPU limit exceeded");
+   sig_names[SIGXFSZ]   = _("File size limit exceeded");
+   sig_names[SIGVTALRM] = _("Virtual alarm clock");
+   sig_names[SIGPROF]   = _("Profiling alarm clock");
+   sig_names[SIGWINCH]  = _("Window size change");
+   sig_names[SIGIO]     = _("I/O now possible");
 #ifdef SIGPWR
-   sig_names[SIGPWR]    = "Power failure restart";
+   sig_names[SIGPWR]    = _("Power failure restart");
 #endif
 #ifdef SIGWAITING
-   sig_names[SIGWAITING] = "No runnable lwp";
+   sig_names[SIGWAITING] = _("No runnable lwp");
 #endif
 #ifdef SIGLWP
-   sig_name[SIGLWP]     = "SIGLWP special signal used by thread library";
+   sig_name[SIGLWP]     = _("SIGLWP special signal used by thread library");
 #endif
 #ifdef SIGFREEZE
-   sig_names[SIGFREEZE] = "Checkpoint Freeze";
+   sig_names[SIGFREEZE] = _("Checkpoint Freeze");
 #endif
 #ifdef SIGTHAW
-   sig_names[SIGTHAW]   = "Checkpoint Thaw";
+   sig_names[SIGTHAW]   = _("Checkpoint Thaw");
 #endif
 #ifdef SIGCANCEL
-   sig_names[SIGCANCEL] = "Thread Cancellation";
+   sig_names[SIGCANCEL] = _("Thread Cancellation");
 #endif
 #ifdef SIGLOST
-   sig_names[SIGLOST]   = "Resource Lost (e.g. record-lock lost)";
+   sig_names[SIGLOST]   = _("Resource Lost (e.g. record-lock lost)");
 #endif
 #endif
 
index a6873dc53bdd89f34455b852d5b9b5b98deae680..0f7c00fd5dfe1ba8b3de74361978398af5ac4794 100644 (file)
@@ -162,7 +162,7 @@ void sm_free(const char *file, int line, void *fp)
    struct b_queue *qp;
 
    if (cp == NULL) {
-      Emsg2(M_ABORT, 0, "Attempt to free NULL called from %s:%d\n", file, line);
+      Emsg2(M_ABORT, 0, _("Attempt to free NULL called from %s:%d\n"), file, line);
    }
 
    cp -= HEAD_SIZE;
@@ -178,11 +178,11 @@ void sm_free(const char *file, int line, void *fp)
       of an address which isn't an allocated buffer. */
    if (qp->qnext->qprev != qp) {
       V(mutex);
-      Emsg2(M_ABORT, 0, "qp->qnext->qprev != qp called from %s:%d\n", file, line);
+      Emsg2(M_ABORT, 0, _("qp->qnext->qprev != qp called from %s:%d\n"), file, line);
    }
    if (qp->qprev->qnext != qp) {
       V(mutex);
-      Emsg2(M_ABORT, 0, "qp->qprev->qnext != qp called from %s:%d\n", file, line);
+      Emsg2(M_ABORT, 0, _("qp->qprev->qnext != qp called from %s:%d\n"), file, line);
    }
 
    /* The following assertion detects storing off the  end  of the
@@ -191,7 +191,7 @@ void sm_free(const char *file, int line, void *fp)
 
    if (((unsigned char *)cp)[head->ablen - 1] != ((((long) cp) & 0xFF) ^ 0xC5)) {
       V(mutex);
-      Emsg2(M_ABORT, 0, "Buffer overrun called from %s:%d\n", file, line);
+      Emsg2(M_ABORT, 0, _("Buffer overrun called from %s:%d\n"), file, line);
    }
    sm_buffers--;
    sm_bytes -= head->ablen;
@@ -262,7 +262,7 @@ void *sm_realloc(const char *fname, int lineno, void *ptr, unsigned int size)
 
    Dmsg4(400, "sm_realloc %s:%d 0x%x %d\n", fname, lineno, ptr, size);
    if (size <= 0) {
-      e_msg(fname, lineno, M_ABORT, 0, "sm_realloc size: %d\n", size);
+      e_msg(fname, lineno, M_ABORT, 0, _("sm_realloc size: %d\n"), size);
    }
 
    /*  If  the old  block  pointer  is  NULL, treat realloc() as a
@@ -303,7 +303,7 @@ void *sm_realloc(const char *fname, int lineno, void *ptr, unsigned int size)
 
       sm_free(__FILE__, __LINE__, ptr);
    }
-   Dmsg4(150, "sm_realloc %d at %x from %s:%d\n", size, buf, fname, lineno);
+   Dmsg4(150, _("sm_realloc %d at %x from %s:%d\n"), size, buf, fname, lineno);
    return buf;
 }
 
@@ -364,12 +364,10 @@ void sm_dump(bool bufdump)
       if ((ap == NULL) ||
          (ap->abq.qnext->qprev != (struct b_queue *) ap) ||
          (ap->abq.qprev->qnext != (struct b_queue *) ap)) {
-        fprintf(stderr,
-           "\nOrphaned buffers exist.  Dump terminated following\n");
-        fprintf(stderr,
-           "  discovery of bad links in chain of orphaned buffers.\n");
-        fprintf(stderr,
-           "  Buffer address with bad links: %lx\n", (long) ap);
+        fprintf(stderr, _(
+           "\nOrphaned buffers exist.  Dump terminated following\n"
+           "  discovery of bad links in chain of orphaned buffers.\n"
+           "  Buffer address with bad links: %lx\n"), (long) ap);
         break;
       }
 
@@ -378,7 +376,7 @@ void sm_dump(bool bufdump)
         char errmsg[500];
 
         bsnprintf(errmsg, sizeof(errmsg),
-          "Orphaned buffer:  %6u bytes allocated at line %d of %s %s\n",
+          _("Orphaned buffer:  %6u bytes allocated at line %d of %s %s\n"),
            memsize, ap->ablineno, my_name, ap->abfname
         );
         fprintf(stderr, "%s", errmsg);
@@ -414,7 +412,7 @@ void sm_dump(bool bufdump)
 void sm_check(const char *fname, int lineno, bool bufdump)
 {
        if (!sm_check_rtn(fname, lineno, bufdump)) {
-          Emsg2(M_ABORT, 0, "Damaged buffer found. Called from %s:%d\n",
+          Emsg2(M_ABORT, 0, _("Damaged buffer found. Called from %s:%d\n"),
              fname, lineno);
        }
 }
@@ -444,26 +442,26 @@ int sm_check_rtn(const char *fname, int lineno, bool bufdump)
       badbuf |= bad;
       if (bad) {
         fprintf(stderr,
-           "\nDamaged buffers found at %s:%d\n", fname, lineno);
+           _("\nDamaged buffers found at %s:%d\n"), fname, lineno);
 
         if (bad & 0x1) {
-           fprintf(stderr, "  discovery of bad prev link.\n");
+           fprintf(stderr, _("  discovery of bad prev link.\n"));
         }
         if (bad & 0x2) {
-           fprintf(stderr, "  discovery of bad next link.\n");
+           fprintf(stderr, _("  discovery of bad next link.\n"));
         }
         if (bad & 0x4) {
-           fprintf(stderr, "  discovery of data overrun.\n");
+           fprintf(stderr, _("  discovery of data overrun.\n"));
         }
 
-        fprintf(stderr, "  Buffer address: %lx\n", (long) ap);
+        fprintf(stderr, _("  Buffer address: %lx\n"), (long) ap);
 
         if (ap->abfname != NULL) {
            unsigned memsize = ap->ablen - (HEAD_SIZE + 1);
            char errmsg[80];
 
            fprintf(stderr,
-             "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n",
+             _("Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"),
               memsize, ap->ablineno, my_name, ap->abfname
            );
            if (bufdump) {
index ae596b8d82f9fdc97a50253321f1fd4ba7d42b0f..024b8c3034c4cc7ab30f34eb59f979eb2e06740e 100644 (file)
@@ -413,7 +413,7 @@ TLS_CONNECTION *new_tls_connection (TLS_CONTEXT *ctx, int fd)
    bio = BIO_new(BIO_s_socket());
    if (!bio) {
       /* Not likely, but never say never */
-      openssl_post_errors(M_ERROR, "Error creating file descriptor-based BIO");
+      openssl_post_errors(M_ERROR, _("Error creating file descriptor-based BIO"));
       return NULL; /* Nothing allocated, nothing to clean up */
    }
    BIO_set_fd(bio, fd, BIO_NOCLOSE);
@@ -424,7 +424,7 @@ TLS_CONNECTION *new_tls_connection (TLS_CONTEXT *ctx, int fd)
    /* Create the SSL object and attach the socket BIO */
    if ((tls->openssl = SSL_new(ctx->openssl)) == NULL) {
       /* Not likely, but never say never */
-      openssl_post_errors(M_ERROR, "Error creating new SSL object");
+      openssl_post_errors(M_ERROR, _("Error creating new SSL object"));
       goto err;
    }
 
@@ -490,7 +490,7 @@ static inline bool openssl_bsock_session_start(BSOCK *bsock, bool server)
               goto cleanup;
            case SSL_ERROR_ZERO_RETURN:
               /* TLS connection was cleanly shut down */
-              openssl_post_errors(M_ERROR, "Connect failure");
+              openssl_post_errors(M_ERROR, _("Connect failure"));
               stat = false;
               goto cleanup;
            case SSL_ERROR_WANT_READ:
@@ -507,7 +507,7 @@ static inline bool openssl_bsock_session_start(BSOCK *bsock, bool server)
               break;
            default:
               /* Socket Error Occured */
-              openssl_post_errors(M_ERROR, "Connect failure");
+              openssl_post_errors(M_ERROR, _("Connect failure"));
               stat = false;
               goto cleanup;
       }
@@ -713,7 +713,7 @@ static struct CRYPTO_dynlock_value *openssl_create_dynamic_mutex (const char *fi
    dynlock = (struct CRYPTO_dynlock_value *) malloc(sizeof(struct CRYPTO_dynlock_value));
 
    if ((stat = pthread_mutex_init(&dynlock->mutex, NULL)) != 0) {
-      Emsg1(M_ABORT, 0, "Unable to init mutex: ERR=%s\n", strerror(stat));
+      Emsg1(M_ABORT, 0, _("Unable to init mutex: ERR=%s\n"), strerror(stat));
    }
 
    return dynlock;
@@ -733,7 +733,7 @@ static void openssl_destroy_dynamic_mutex (struct CRYPTO_dynlock_value *dynlock,
    int stat;
 
    if ((stat = pthread_mutex_destroy(&dynlock->mutex)) != 0) {
-      Emsg1(M_ABORT, 0, "Unable to destroy mutex: ERR=%s\n", strerror(stat));
+      Emsg1(M_ABORT, 0, _("Unable to destroy mutex: ERR=%s\n"), strerror(stat));
    }
 
    free(dynlock);
@@ -770,7 +770,7 @@ static int openssl_init_threads (void)
    mutexes = (pthread_mutex_t *) malloc(numlocks * sizeof(pthread_mutex_t));
    for (i = 0; i < numlocks; i++) {
       if ((stat = pthread_mutex_init(&mutexes[i], NULL)) != 0) {
-         Emsg1(M_ERROR, 0, "Unable to init mutex: ERR=%s\n", strerror(stat));
+         Emsg1(M_ERROR, 0, _("Unable to init mutex: ERR=%s\n"), strerror(stat));
          return stat;
       }
    }
@@ -802,7 +802,7 @@ static void openssl_cleanup_threads (void)
    for (i = 0; i < numlocks; i++) {
       if ((stat = pthread_mutex_destroy(&mutexes[i])) != 0) {
          /* We don't halt execution, reporting the error should be sufficient */
-         Emsg1(M_ERROR, 0, "Unable to destroy mutex: ERR=%s\n", strerror(stat));
+         Emsg1(M_ERROR, 0, _("Unable to destroy mutex: ERR=%s\n"), strerror(stat));
       }
    }
 
@@ -867,7 +867,7 @@ int init_tls (void)
    int stat;
 
    if ((stat = openssl_init_threads()) != 0) {
-      Emsg1(M_ABORT, 0, "Unable to init OpenSSL threading: ERR=%s\n", strerror(stat));
+      Emsg1(M_ABORT, 0, _("Unable to init OpenSSL threading: ERR=%s\n"), strerror(stat));
    }
 
    /* Load libssl and libcrypto human-readable error strings */
index b592a21a6fe8abf62f42e4ebb820d1832c9aacf9..1d53dc2e227fc7d7a2da67043579f2cfd3911f34 100644 (file)
@@ -543,7 +543,7 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)
            if (jcr) {
               str = jcr->client_name;
            } else {
-               str = "*none*";
+               str = _("*none*");
            }
            break;
          case 'd':
@@ -553,7 +553,7 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)
            if (jcr) {
               str = job_status_to_str(jcr->JobStatus);
            } else {
-               str = "*none*";
+               str = _("*none*");
            }
            break;
          case 'i':
@@ -561,21 +561,21 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)
                bsnprintf(add, sizeof(add), "%d", jcr->JobId);
               str = add;
            } else {
-               str = "*none*";
+               str = _("*none*");
            }
            break;
          case 'j':                    /* Job name */
            if (jcr) {
               str = jcr->Job;
            } else {
-               str = "*none*";
+               str = _("*none*");
            }
            break;
          case 'l':
            if (jcr) {
               str = job_level_to_str(jcr->JobLevel);
            } else {
-               str = "*none*";
+               str = _("*none*");
            }
            break;
          case 'n':
@@ -589,7 +589,7 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)
                }
                str = name;
             } else {
-                str = "*none*";
+                str = _("*none*");
             }
             break;
          case 'r':
@@ -599,14 +599,14 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)
            if (jcr && jcr->stime) {
               str = jcr->stime;
            } else {
-               str = "*none*";
+               str = _("*none*");
            }
            break;
          case 't':
            if (jcr) {
               str = job_type_to_str(jcr->JobType);
            } else {
-               str = "*none*";
+               str = _("*none*");
            }
            break;
          case 'v':
@@ -617,7 +617,7 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)
                   str = "";
               }
            } else {
-               str = "*none*";
+               str = _("*none*");
            }
            break;
         default:
index d9b58d74971d4c3ed64b3147f55d2420cbb6d1bc..14a59227c1a1e25030e369d759a46d9a3407616c 100644 (file)
@@ -2656,52 +2656,52 @@ var_format(
 
 /* var_rc_t to string mapping table */
 static const char *var_errors[] = {
-    "everything ok",                                           /* VAR_OK = 0 */
-    "incomplete named character",                              /* VAR_ERR_INCOMPLETE_NAMED_CHARACTER */
-    "incomplete hexadecimal value",                            /* VAR_ERR_INCOMPLETE_HEX */
-    "invalid hexadecimal value",                               /* VAR_ERR_INVALID_HEX */
-    "octal value too large",                                   /* VAR_ERR_OCTAL_TOO_LARGE */
-    "invalid octal value",                                     /* VAR_ERR_INVALID_OCTAL */
-    "incomplete octal value",                                  /* VAR_ERR_INCOMPLETE_OCTAL */
-    "incomplete grouped hexadecimal value",                    /* VAR_ERR_INCOMPLETE_GROUPED_HEX */
-    "incorrect character class specification",                 /* VAR_ERR_INCORRECT_CLASS_SPEC */
-    "invalid expansion configuration",                         /* VAR_ERR_INVALID_CONFIGURATION */
-    "out of memory",                                           /* VAR_ERR_OUT_OF_MEMORY */
-    "incomplete variable specification",                       /* VAR_ERR_INCOMPLETE_VARIABLE_SPEC */
-    "undefined variable",                                      /* VAR_ERR_UNDEFINED_VARIABLE */
-    "input is neither text nor variable",                      /* VAR_ERR_INPUT_ISNT_TEXT_NOR_VARIABLE */
-    "unknown command character in variable",                   /* VAR_ERR_UNKNOWN_COMMAND_CHAR */
-    "malformatted search and replace operation",               /* VAR_ERR_MALFORMATTED_REPLACE */
-    "unknown flag in search and replace operation",            /* VAR_ERR_UNKNOWN_REPLACE_FLAG */
-    "invalid regex in search and replace operation",           /* VAR_ERR_INVALID_REGEX_IN_REPLACE */
-    "missing parameter in command",                            /* VAR_ERR_MISSING_PARAMETER_IN_COMMAND */
-    "empty search string in search and replace operation",     /* VAR_ERR_EMPTY_SEARCH_STRING */
-    "start offset missing in cut operation",                   /* VAR_ERR_MISSING_START_OFFSET */
-    "offsets in cut operation delimited by unknown character", /* VAR_ERR_INVALID_OFFSET_DELIMITER */
-    "range out of bounds in cut operation",                    /* VAR_ERR_RANGE_OUT_OF_BOUNDS */
-    "offset out of bounds in cut operation",                   /* VAR_ERR_OFFSET_OUT_OF_BOUNDS */
-    "logic error in cut operation",                            /* VAR_ERR_OFFSET_LOGIC */
-    "malformatted transpose operation",                        /* VAR_ERR_MALFORMATTED_TRANSPOSE */
-    "source and target class mismatch in transpose operation", /* VAR_ERR_TRANSPOSE_CLASSES_MISMATCH */
-    "empty character class in transpose operation",            /* VAR_ERR_EMPTY_TRANSPOSE_CLASS */
-    "incorrect character class in transpose operation",        /* VAR_ERR_INCORRECT_TRANSPOSE_CLASS_SPEC */
-    "malformatted padding operation",                          /* VAR_ERR_MALFORMATTED_PADDING */
-    "width parameter missing in padding operation",            /* VAR_ERR_MISSING_PADDING_WIDTH */
-    "fill string missing in padding operation",                /* VAR_ERR_EMPTY_PADDING_FILL_STRING */
-    "unknown quoted pair in search and replace operation",     /* VAR_ERR_UNKNOWN_QUOTED_PAIR_IN_REPLACE */
-    "sub-matching reference out of range",                     /* VAR_ERR_SUBMATCH_OUT_OF_RANGE */
-    "invalid argument",                                        /* VAR_ERR_INVALID_ARGUMENT */
-    "incomplete quoted pair",                                  /* VAR_ERR_INCOMPLETE_QUOTED_PAIR */
-    "lookup function does not support variable arrays",        /* VAR_ERR_ARRAY_LOOKUPS_ARE_UNSUPPORTED */
-    "index of array variable contains an invalid character",   /* VAR_ERR_INVALID_CHAR_IN_INDEX_SPEC */
-    "index of array variable is incomplete",                   /* VAR_ERR_INCOMPLETE_INDEX_SPEC */
-    "bracket expression in array variable's index not closed", /* VAR_ERR_UNCLOSED_BRACKET_IN_INDEX */
-    "division by zero error in index specification",           /* VAR_ERR_DIVISION_BY_ZERO_IN_INDEX */
-    "unterminated loop construct",                             /* VAR_ERR_UNTERMINATED_LOOP_CONSTRUCT */
-    "invalid character in loop limits",                        /* VAR_ERR_INVALID_CHAR_IN_LOOP_LIMITS */
-    "malformed operation argument list",                       /* VAR_ERR_MALFORMED_OPERATION_ARGUMENTS */
-    "undefined operation",                                     /* VAR_ERR_UNDEFINED_OPERATION */
-    "formatting failure"                                       /* VAR_ERR_FORMATTING_FAILURE */
+    _("everything ok"),                                           /* VAR_OK = 0 */
+    _("incomplete named character"),                              /* VAR_ERR_INCOMPLETE_NAMED_CHARACTER */
+    _("incomplete hexadecimal value"),                            /* VAR_ERR_INCOMPLETE_HEX */
+    _("invalid hexadecimal value"),                               /* VAR_ERR_INVALID_HEX */
+    _("octal value too large"),                                   /* VAR_ERR_OCTAL_TOO_LARGE */
+    _("invalid octal value"),                                     /* VAR_ERR_INVALID_OCTAL */
+    _("incomplete octal value"),                                  /* VAR_ERR_INCOMPLETE_OCTAL */
+    _("incomplete grouped hexadecimal value"),                    /* VAR_ERR_INCOMPLETE_GROUPED_HEX */
+    _("incorrect character class specification"),                 /* VAR_ERR_INCORRECT_CLASS_SPEC */
+    _("invalid expansion configuration"),                         /* VAR_ERR_INVALID_CONFIGURATION */
+    _("out of memory"),                                           /* VAR_ERR_OUT_OF_MEMORY */
+    _("incomplete variable specification"),                       /* VAR_ERR_INCOMPLETE_VARIABLE_SPEC */
+    _("undefined variable"),                                      /* VAR_ERR_UNDEFINED_VARIABLE */
+    _("input is neither text nor variable"),                      /* VAR_ERR_INPUT_ISNT_TEXT_NOR_VARIABLE */
+    _("unknown command character in variable"),                   /* VAR_ERR_UNKNOWN_COMMAND_CHAR */
+    _("malformatted search and replace operation"),               /* VAR_ERR_MALFORMATTED_REPLACE */
+    _("unknown flag in search and replace operation"),            /* VAR_ERR_UNKNOWN_REPLACE_FLAG */
+    _("invalid regex in search and replace operation"),           /* VAR_ERR_INVALID_REGEX_IN_REPLACE */
+    _("missing parameter in command"),                            /* VAR_ERR_MISSING_PARAMETER_IN_COMMAND */
+    _("empty search string in search and replace operation"),     /* VAR_ERR_EMPTY_SEARCH_STRING */
+    _("start offset missing in cut operation"),                   /* VAR_ERR_MISSING_START_OFFSET */
+    _("offsets in cut operation delimited by unknown character"), /* VAR_ERR_INVALID_OFFSET_DELIMITER */
+    _("range out of bounds in cut operation"),                    /* VAR_ERR_RANGE_OUT_OF_BOUNDS */
+    _("offset out of bounds in cut operation"),                   /* VAR_ERR_OFFSET_OUT_OF_BOUNDS */
+    _("logic error in cut operation"),                            /* VAR_ERR_OFFSET_LOGIC */
+    _("malformatted transpose operation"),                        /* VAR_ERR_MALFORMATTED_TRANSPOSE */
+    _("source and target class mismatch in transpose operation"), /* VAR_ERR_TRANSPOSE_CLASSES_MISMATCH */
+    _("empty character class in transpose operation"),            /* VAR_ERR_EMPTY_TRANSPOSE_CLASS */
+    _("incorrect character class in transpose operation"),        /* VAR_ERR_INCORRECT_TRANSPOSE_CLASS_SPEC */
+    _("malformatted padding operation"),                          /* VAR_ERR_MALFORMATTED_PADDING */
+    _("width parameter missing in padding operation"),            /* VAR_ERR_MISSING_PADDING_WIDTH */
+    _("fill string missing in padding operation"),                /* VAR_ERR_EMPTY_PADDING_FILL_STRING */
+    _("unknown quoted pair in search and replace operation"),     /* VAR_ERR_UNKNOWN_QUOTED_PAIR_IN_REPLACE */
+    _("sub-matching reference out of range"),                     /* VAR_ERR_SUBMATCH_OUT_OF_RANGE */
+    _("invalid argument"),                                        /* VAR_ERR_INVALID_ARGUMENT */
+    _("incomplete quoted pair"),                                  /* VAR_ERR_INCOMPLETE_QUOTED_PAIR */
+    _("lookup function does not support variable arrays"),        /* VAR_ERR_ARRAY_LOOKUPS_ARE_UNSUPPORTED */
+    _("index of array variable contains an invalid character"),   /* VAR_ERR_INVALID_CHAR_IN_INDEX_SPEC */
+    _("index of array variable is incomplete"),                   /* VAR_ERR_INCOMPLETE_INDEX_SPEC */
+    _("bracket expression in array variable's index not closed"), /* VAR_ERR_UNCLOSED_BRACKET_IN_INDEX */
+    _("division by zero error in index specification"),           /* VAR_ERR_DIVISION_BY_ZERO_IN_INDEX */
+    _("unterminated loop construct"),                             /* VAR_ERR_UNTERMINATED_LOOP_CONSTRUCT */
+    _("invalid character in loop limits"),                        /* VAR_ERR_INVALID_CHAR_IN_LOOP_LIMITS */
+    _("malformed operation argument list"),                       /* VAR_ERR_MALFORMED_OPERATION_ARGUMENTS */
+    _("undefined operation"),                                     /* VAR_ERR_UNDEFINED_OPERATION */
+    _("formatting failure")                                       /* VAR_ERR_FORMATTING_FAILURE */
 };
 
 /* translate a return code into its corresponding descriptive text */
@@ -2710,7 +2710,7 @@ const char *var_strerror(var_t *var, var_rc_t rc)
     const char *str;
     rc = (var_rc_t)(0 - rc);
     if (rc < 0 || rc >= (int)sizeof(var_errors) / (int)sizeof(char *)) {
-       str = "unknown error";
+       str = _("unknown error");
     } else {
        str = (char *)var_errors[rc];
     }
index 985856dc3953e20fd5518989e01777c928ea856d..7784681161a38674df41d2f92b0edd7820458aec 100755 (executable)
@@ -167,13 +167,13 @@ watchdog_t *new_watchdog(void)
 bool register_watchdog(watchdog_t *wd)
 {
    if (!wd_is_init) {
-      Emsg0(M_ABORT, 0, "BUG! register_watchdog called before start_watchdog\n");
+      Emsg0(M_ABORT, 0, _("BUG! register_watchdog called before start_watchdog\n"));
    }
    if (wd->callback == NULL) {
-      Emsg1(M_ABORT, 0, "BUG! Watchdog %p has NULL callback\n", wd);
+      Emsg1(M_ABORT, 0, _("BUG! Watchdog %p has NULL callback\n"), wd);
    }
    if (wd->interval == 0) {
-      Emsg1(M_ABORT, 0, "BUG! Watchdog %p has zero interval\n", wd);
+      Emsg1(M_ABORT, 0, _("BUG! Watchdog %p has zero interval\n"), wd);
    }
 
    wd_lock();
@@ -193,7 +193,7 @@ bool unregister_watchdog(watchdog_t *wd)
    bool ok = false;
 
    if (!wd_is_init) {
-      Emsg0(M_ABORT, 0, "BUG! unregister_watchdog_unlocked called before start_watchdog\n");
+      Emsg0(M_ABORT, 0, _("BUG! unregister_watchdog_unlocked called before start_watchdog\n"));
    }
 
    wd_lock();
@@ -310,7 +310,7 @@ static void wd_lock()
 {
    int errstat;
    if ((errstat=rwl_writelock(&lock)) != 0) {
-      Emsg1(M_ABORT, 0, "rwl_writelock failure. ERR=%s\n",
+      Emsg1(M_ABORT, 0, _("rwl_writelock failure. ERR=%s\n"),
            strerror(errstat));
    }
 }
@@ -324,7 +324,7 @@ static void wd_unlock()
 {
    int errstat;
    if ((errstat=rwl_writeunlock(&lock)) != 0) {
-      Emsg1(M_ABORT, 0, "rwl_writeunlock failure. ERR=%s\n",
+      Emsg1(M_ABORT, 0, _("rwl_writeunlock failure. ERR=%s\n"),
            strerror(errstat));
    }
 }
index ef2e6561a9c977d87d6ac6aef5741c2a8f5f9b38..b8e02b3a594631106535428766b97fe32a8f37d9 100644 (file)
@@ -134,7 +134,7 @@ int read_ansi_ibm_label(DCR *dcr)
                *q = 0;
                new_volume(dcr, dev->VolHdr.VolumeName);
                Dmsg2(100, "Wanted ANSI Vol %s got %6s\n", VolName, dev->VolHdr.VolumeName);
-               Mmsg2(jcr->errmsg, "Wanted ANSI Volume \"%s\" got \"%s\"\n", VolName, dev->VolHdr.VolumeName);
+               Mmsg2(jcr->errmsg, _("Wanted ANSI Volume \"%s\" got \"%s\"\n"), VolName, dev->VolHdr.VolumeName);
                return VOL_NAME_ERROR;
             }
          }
index b6ee3f1ce1a4b0ddc1b16b44e6a5c046a21579cf..8f6e71bb617a0cc6f8047becab72b633fabec07b 100644 (file)
@@ -70,7 +70,7 @@ bool do_append_data(JCR *jcr)
    dir_send_job_status(jcr);
 
    if (dev->VolCatInfo.VolCatName[0] == 0) {
-      Pmsg0(000, "NULL Volume name. This shouldn't happen!!!\n");
+      Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
    }
    Dmsg1(20, "Begin append device=%s\n", dev->print_name());
 
@@ -79,7 +79,7 @@ bool do_append_data(JCR *jcr)
 
    Dmsg0(100, "Just after acquire_device_for_append\n");
    if (dev->VolCatInfo.VolCatName[0] == 0) {
-      Pmsg0(000, "NULL Volume name. This shouldn't happen!!!\n");
+      Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
    }
    /*
     * Write Begin Session Record
@@ -91,7 +91,7 @@ bool do_append_data(JCR *jcr)
       ok = false;
    }
    if (dev->VolCatInfo.VolCatName[0] == 0) {
-      Pmsg0(000, "NULL Volume name. This shouldn't happen!!!\n");
+      Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
    }
 
    /* Tell File daemon to send data */
@@ -246,7 +246,7 @@ bool do_append_data(JCR *jcr)
 
    Dmsg1(200, "Write session label JobStatus=%d\n", jcr->JobStatus);
    if ((!ok || job_canceled(jcr)) && dev->VolCatInfo.VolCatName[0] == 0) {
-      Pmsg0(000, "NULL Volume name. This shouldn't happen!!!\n");
+      Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
    }
 
    /*
@@ -261,7 +261,7 @@ bool do_append_data(JCR *jcr)
          ok = false;
       }
       if (dev->VolCatInfo.VolCatName[0] == 0) {
-         Pmsg0(000, "NULL Volume name. This shouldn't happen!!!\n");
+         Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
       }
       Dmsg0(90, "back from write_end_session_label()\n");
       /* Flush out final partial block of this session */
@@ -273,7 +273,7 @@ bool do_append_data(JCR *jcr)
       }
    }
    if (dev->VolCatInfo.VolCatName[0] == 0) {
-      Pmsg0(000, "NULL Volume name. This shouldn't happen!!!\n");
+      Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
    }
 
    if (!ok) {
index d67880dfe5f8718769edc89047aad8d11472c21a..992873a9b24d2528206336a341b8efb72106eb46 100644 (file)
@@ -282,12 +282,12 @@ bool dir_update_volume_info(DCR *dcr, bool label)
 
    if (vol->VolCatName[0] == 0) {
       Jmsg0(jcr, M_FATAL, 0, _("NULL Volume name. This shouldn't happen!!!\n"));
-      Pmsg0(000, "NULL Volume name. This shouldn't happen!!!\n");
+      Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
       return false;
    }
    if (dev->can_read()) {
       Jmsg0(jcr, M_FATAL, 0, _("Attempt to update_volume_info in read mode!!!\n"));
-      Pmsg0(000, "Attempt to update_volume_info in read mode!!!\n");
+      Pmsg0(000, _("Attempt to update_volume_info in read mode!!!\n"));
       return false;
    }
 
@@ -315,7 +315,7 @@ bool dir_update_volume_info(DCR *dcr, bool label)
    /* Do not lock device here because it may be locked from label */
    if (!do_get_volume_info(dcr)) {
       Jmsg(jcr, M_FATAL, 0, "%s", jcr->errmsg);
-      Pmsg2(000, "Didn't get vol info vol=%s: ERR=%s"
+      Pmsg2(000, _("Didn't get vol info vol=%s: ERR=%s")
          vol->VolCatName, jcr->errmsg);
       return false;
    }
@@ -550,7 +550,6 @@ bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr)
 bool dir_ask_sysop_to_mount_volume(DCR *dcr)
 {
    int stat = 0;
-   const char *msg;
    DEVICE *dev = dcr->dev;
    JCR *jcr = dcr->jcr;
 
@@ -568,9 +567,8 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr)
       }
 
       if (!dev->poll) {
-         msg = _("Please mount");
-         Jmsg(jcr, M_MOUNT, 0, _("%s Volume \"%s\" on Storage Device %s for Job %s\n"),
-              msg, dcr->VolumeName, dev->print_name(), jcr->Job);
+         Jmsg(jcr, M_MOUNT, 0, _("Please mount Volume \"%s\" on Storage Device %s for Job %s\n"),
+              dcr->VolumeName, dev->print_name(), jcr->Job);
          Dmsg3(400, "Mount \"%s\" on device \"%s\" for Job %s\n",
                dcr->VolumeName, dev->print_name(), jcr->Job);
       }
index 1dac37c54e2ae0762be848ec2c8be77215c1d1e7..d93f1359969ae0d574ecea82314c7c7f37529658 100644 (file)
@@ -49,12 +49,12 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
 #endif
 
    if (rcode != R_DIRECTOR) {
-      Dmsg1(50, _("I only authenticate Directors, not %d\n"), rcode);
+      Dmsg1(50, "I only authenticate Directors, not %d\n", rcode);
       Emsg1(M_FATAL, 0, _("I only authenticate Directors, not %d\n"), rcode);
       return 0;
    }
    if (bs->msglen < 25 || bs->msglen > 200) {
-      Dmsg2(50, _("Bad Hello command from Director at %s. Len=%d.\n"),
+      Dmsg2(50, "Bad Hello command from Director at %s. Len=%d.\n",
             bs->who, bs->msglen);
       Emsg2(M_FATAL, 0, _("Bad Hello command from Director at %s. Len=%d.\n"),
             bs->who, bs->msglen);
@@ -65,7 +65,7 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
 
    if (sscanf(bs->msg, "Hello Director %127s calling\n", dirname) != 1) {
       bs->msg[100] = 0;
-      Dmsg2(50, _("Bad Hello command from Director at %s: %s\n"),
+      Dmsg2(50, "Bad Hello command from Director at %s: %s\n",
             bs->who, bs->msg);
       Emsg2(M_FATAL, 0, _("Bad Hello command from Director at %s: %s\n"),
             bs->who, bs->msg);
@@ -80,7 +80,7 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
    }
 // UnlockRes();
    if (!director) {
-      Dmsg2(50, _("Connection from unknown Director %s at %s rejected.\n"),
+      Dmsg2(50, "Connection from unknown Director %s at %s rejected.\n",
             dirname, bs->who);
       Emsg2(M_FATAL, 0, _("Connection from unknown Director %s at %s rejected.\n"
        "Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for help.\n"),
@@ -142,7 +142,7 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
    if (tls_local_need >= BNET_TLS_OK && tls_remote_need >= BNET_TLS_OK) {
       /* Engage TLS! Full Speed Ahead! */
       if (!bnet_tls_server(director->tls_ctx, bs, verify_list)) {
-         Emsg0(M_FATAL, 0, "TLS negotiation failed.\n");
+         Emsg0(M_FATAL, 0, _("TLS negotiation failed.\n"));
          auth_success = false;
          goto auth_fatal;
       }
@@ -174,7 +174,7 @@ int authenticate_director(JCR *jcr)
 
    if (!authenticate(R_DIRECTOR, dir, jcr)) {
       bnet_fsend(dir, "%s", Dir_sorry);
-      Dmsg1(50, _("Unable to authenticate Director at %s.\n"), dir->who);
+      Dmsg1(50, "Unable to authenticate Director at %s.\n", dir->who);
       Emsg1(M_ERROR, 0, _("Unable to authenticate Director at %s.\n"), dir->who);
       bmicrosleep(5, 0);
       return 0;
@@ -246,7 +246,7 @@ int authenticate_filed(JCR *jcr)
    if (tls_local_need >= BNET_TLS_OK && tls_remote_need >= BNET_TLS_OK) {
       /* Engage TLS! Full Speed Ahead! */
       if (!bnet_tls_server(me->tls_ctx, fd, verify_list)) {
-         Jmsg(jcr, M_FATAL, 0, "TLS negotiation failed.\n");
+         Jmsg(jcr, M_FATAL, 0, _("TLS negotiation failed.\n"));
          auth_success = false;
          goto auth_fatal;
       }
index f7b9619bcc4b1ed4b13f9c22628e88c9dbe66d3e..9ab4a452e4efd0eec14615440bcb558437dbb87d 100644 (file)
@@ -303,7 +303,7 @@ bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
    if (stat != 0) {
       berrno be;
       be.set_errno(stat);
-      bnet_fsend(dir, "Autochanger error: ERR=%s\n", be.strerror());
+      bnet_fsend(dir, _("Autochanger error: ERR=%s\n"), be.strerror());
    }
    bnet_sig(dir, BNET_EOD);
    ok = true;
index efc70b9bc2732ae5278e6d0eecf858834adca9f9..15766ac356e195d345c2b7ad3d13eb89c48250a6 100644 (file)
@@ -56,7 +56,7 @@ static void usage()
 {
    fprintf(stderr, _(
 "Copyright (C) 2002-2005 Kern Sibbald.\n"
-"\nVersion: " VERSION " (" BDATE ")\n\n"
+"\nVersion: %s (%s)\n\n"
 "Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
 "       -b bootstrap      specify a bootstrap file\n"
 "       -c <file>         specify configuration file\n"
@@ -66,7 +66,7 @@ static void usage()
 "       -p                proceed inspite of errors\n"
 "       -v                verbose\n"
 "       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n\n"));
+"       -?                print this message\n\n"), VERSION, BDATE);
    exit(1);
 }
 
@@ -77,6 +77,10 @@ int main (int argc, char *argv[])
    char *oVolumeName = NULL;
    bool ignore_label_errors = false;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    my_name_is(argc, argv, "bcopy");
    init_msg(NULL, NULL);
 
@@ -213,10 +217,10 @@ static bool record_cb(DCR *in_dcr, DEV_RECORD *rec)
       }
       switch (rec->FileIndex) {
       case PRE_LABEL:
-         Pmsg0(000, "Volume is prelabeled. This volume cannot be copied.\n");
+         Pmsg0(000, _("Volume is prelabeled. This volume cannot be copied.\n"));
          return false;
       case VOL_LABEL:
-         Pmsg0(000, "Volume label not copied.\n");
+         Pmsg0(000, _("Volume label not copied.\n"));
          return true;
       case SOS_LABEL:
          jobs++;
@@ -240,10 +244,10 @@ static bool record_cb(DCR *in_dcr, DEV_RECORD *rec)
          }
          break;
       case EOM_LABEL:
-         Pmsg0(000, "EOM label not copied.\n");
+         Pmsg0(000, _("EOM label not copied.\n"));
          return true;
       case EOT_LABEL:              /* end of all tapes */
-         Pmsg0(000, "EOT label not copied.\n");
+         Pmsg0(000, _("EOT label not copied.\n"));
          return true;
       default:
          break;
@@ -283,7 +287,7 @@ void    free_unused_volume(DCR *dcr) { }
 bool dir_ask_sysop_to_mount_volume(DCR *dcr)
 {
    DEVICE *dev = dcr->dev;
-   fprintf(stderr, "Mount Volume \"%s\" on device %s and press return when ready: ",
+   fprintf(stderr, _("Mount Volume \"%s\" on device %s and press return when ready: "),
       dcr->VolumeName, dev->print_name());
    getchar();
    return true;
index 2c45c974495756b4267982fce1f1868c4d91ea31..a882a883d39df5b77e881cb73473da5e8afcbc01 100644 (file)
@@ -66,9 +66,9 @@ pthread_cond_t wait_device_release = PTHREAD_COND_INITIALIZER;
 
 static void usage()
 {
-   fprintf(stderr,
+   fprintf(stderr, _(
 "Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\nVersion: " VERSION " (" BDATE ")\n\n"
+"\nVersion: %s (%s)\n\n"
 "Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-files>\n"
 "       -b <file>       specify a bootstrap file\n"
 "       -c <file>       specify a configuration file\n"
@@ -78,7 +78,7 @@ static void usage()
 "       -p              proceed inspite of I/O errors\n"
 "       -v              verbose\n"
 "       -V <volumes>    specify Volume names (separated by |)\n"
-"       -?              print this message\n\n");
+"       -?              print this message\n\n"), VERSION, BDATE);
    exit(1);
 }
 
@@ -90,6 +90,10 @@ int main (int argc, char *argv[])
    char line[1000];
    bool got_inc = false;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    working_directory = "/tmp";
    my_name_is(argc, argv, "bextract");
    init_msg(NULL, NULL);              /* setup message handler */
@@ -120,7 +124,7 @@ int main (int argc, char *argv[])
       case 'e':                    /* exclude list */
          if ((fd = fopen(optarg, "r")) == NULL) {
             berrno be;
-            Pmsg2(0, "Could not open exclude file: %s, ERR=%s\n",
+            Pmsg2(0, _("Could not open exclude file: %s, ERR=%s\n"),
                optarg, be.strerror());
             exit(1);
          }
@@ -135,7 +139,7 @@ int main (int argc, char *argv[])
       case 'i':                    /* include list */
          if ((fd = fopen(optarg, "r")) == NULL) {
             berrno be;
-            Pmsg2(0, "Could not open include file: %s, ERR=%s\n",
+            Pmsg2(0, _("Could not open include file: %s, ERR=%s\n"),
                optarg, be.strerror());
             exit(1);
          }
@@ -170,7 +174,7 @@ int main (int argc, char *argv[])
    argv += optind;
 
    if (argc != 2) {
-      Pmsg0(0, "Wrong number of arguments: \n");
+      Pmsg0(0, _("Wrong number of arguments: \n"));
       usage();
    }
 
@@ -191,11 +195,11 @@ int main (int argc, char *argv[])
       free_bsr(bsr);
    }
    if (prog_name_msg) {
-      Pmsg1(000, "%d Program Name and/or Program Data Stream records ignored.\n",
+      Pmsg1(000, _("%d Program Name and/or Program Data Stream records ignored.\n"),
          prog_name_msg);
    }
    if (win32_data_msg) {
-      Pmsg1(000, "%d Win32 data or Win32 gzip data stream records. Ignored.\n",
+      Pmsg1(000, _("%d Win32 data or Win32 gzip data stream records. Ignored.\n"),
          win32_data_msg);
    }
    term_include_exclude_files(ff);
@@ -219,11 +223,11 @@ static void do_extract(char *devname)
    /* Make sure where directory exists and that it is a directory */
    if (stat(where, &statp) < 0) {
       berrno be;
-      Emsg2(M_ERROR_TERM, 0, "Cannot stat %s. It must exist. ERR=%s\n",
+      Emsg2(M_ERROR_TERM, 0, _("Cannot stat %s. It must exist. ERR=%s\n"),
          where, be.strerror());
    }
    if (!S_ISDIR(statp.st_mode)) {
-      Emsg1(M_ERROR_TERM, 0, "%s must be a directory.\n", where);
+      Emsg1(M_ERROR_TERM, 0, _("%s must be a directory.\n"), where);
    }
 
    free(jcr->where);
@@ -244,7 +248,7 @@ static void do_extract(char *devname)
    free_jcr(jcr);
    term_dev(dev);
 
-   printf("%u files restored.\n", num_files);
+   printf(_("%u files restored.\n"), num_files);
    return;
 }
 
@@ -401,7 +405,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
          Dmsg2(100, "Write uncompressed %d bytes, total before write=%d\n", compress_len, total);
          if ((uLongf)bwrite(&bfd, compress_buf, (size_t)compress_len) != compress_len) {
             berrno be;
-            Pmsg0(0, "===Write error===\n");
+            Pmsg0(0, _("===Write error===\n"));
             Emsg2(M_ERROR, 0, _("Write error on %s: %s\n"),
                attr->ofname, be.strerror());
             extract = false;
@@ -414,7 +418,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
       }
 #else
       if (extract) {
-         Emsg0(M_ERROR, 0, "GZIP data stream found, but GZIP not configured!\n");
+         Emsg0(M_ERROR, 0, _("GZIP data stream found, but GZIP not configured!\n"));
          extract = false;
          return true;
       }
@@ -428,7 +432,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
    case STREAM_PROGRAM_NAMES:
    case STREAM_PROGRAM_DATA:
       if (!prog_name_msg) {
-         Pmsg0(000, "Got Program Name or Data Stream. Ignored.\n");
+         Pmsg0(000, _("Got Program Name or Data Stream. Ignored.\n"));
          prog_name_msg++;
       }
       break;
@@ -437,7 +441,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
       /* If extracting, wierd stream (not 1 or 2), close output file anyway */
       if (extract) {
          if (!is_bopen(&bfd)) {
-            Emsg0(M_ERROR, 0, "Logic error output file should be open but is not.\n");
+            Emsg0(M_ERROR, 0, _("Logic error output file should be open but is not.\n"));
          }
          set_attributes(jcr, attr, &bfd);
          extract = false;
@@ -466,7 +470,7 @@ void    free_unused_volume(DCR *dcr) { }
 bool dir_ask_sysop_to_mount_volume(DCR *dcr)
 {
    DEVICE *dev = dcr->dev;
-   fprintf(stderr, "Mount Volume \"%s\" on device %s and press return when ready: ",
+   fprintf(stderr, _("Mount Volume \"%s\" on device %s and press return when ready: "),
       dcr->VolumeName, dev->print_name());
    getchar();
    return true;
index bda9911ff500832510347d891adee06c969b3ced..1461f777144db3c830f4af549635e10b4b4cff23 100644 (file)
@@ -75,8 +75,8 @@ void dump_block(DEV_BLOCK *b, const char *msg)
 
    BlockCheckSum = bcrc32((uint8_t *)b->buf+BLKHDR_CS_LENGTH,
                          block_len-BLKHDR_CS_LENGTH);
-   Pmsg6(000, "Dump block %s %x: size=%d BlkNum=%d\n"
-"               Hdrcksum=%x cksum=%x\n",
+   Pmsg6(000, _("Dump block %s %x: size=%d BlkNum=%d\n"
+"               Hdrcksum=%x cksum=%x\n"),
       msg, b, block_len, BlockNumber, CheckSum, BlockCheckSum);
    p = b->buf + bhl;
    while (p < (b->buf + block_len+WRITE_RECHDR_LENGTH)) {
@@ -88,7 +88,7 @@ void dump_block(DEV_BLOCK *b, const char *msg)
       unser_int32(FileIndex);
       unser_int32(Stream);
       unser_uint32(data_len);
-      Pmsg6(000, "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n",
+      Pmsg6(000, _("   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"),
            VolSessionId, VolSessionTime, FI_to_ascii(FileIndex),
            stream_to_ascii(Stream, FileIndex), data_len, p);
       p += data_len + rhl;
@@ -504,7 +504,7 @@ bool write_block_to_dev(DCR *dcr)
 #ifdef DEBUG_BLOCK_ZEROING
    uint32_t *bp = (uint32_t *)block->buf;
    if (bp[0] == 0 && bp[1] == 0 && bp[2] == 0 && block->buf[12] == 0) {
-      Jmsg0(jcr, M_ABORT, 0, "Write block header zeroed.\n");
+      Jmsg0(jcr, M_ABORT, 0, _("Write block header zeroed.\n"));
    }
 #endif
 
@@ -515,7 +515,7 @@ bool write_block_to_dev(DCR *dcr)
 
 #ifdef DEBUG_BLOCK_ZEROING
    if (bp[0] == 0 && bp[1] == 0 && bp[2] == 0 && block->buf[12] == 0) {
-      Jmsg0(jcr, M_ABORT, 0, "Write block header zeroed.\n");
+      Jmsg0(jcr, M_ABORT, 0, _("Write block header zeroed.\n"));
    }
 #endif
 
@@ -681,8 +681,8 @@ static bool terminate_writing_volume(DCR *dcr)
    dcr->block->write_failed = true;
    if (weof_dev(dev, 1) != 0) {         /* end the tape */
       dev->VolCatInfo.VolCatErrors++;
-      Jmsg(dcr->jcr, M_ERROR, 0, "Error writing final EOF to tape. This tape may not be readable.\n"
-           "%s", dev->errmsg);
+      Jmsg(dcr->jcr, M_ERROR, 0, _("Error writing final EOF to tape. This tape may not be readable.\n"
+           "%s"), dev->errmsg);
       ok = false;
       Dmsg0(100, "WEOF error.\n");
    }
index c67f8a3b9ea01198ddf914581940e098f934f66a..22845d6bc51dc6112c9479431e7d4dbcad9bd29e 100644 (file)
@@ -65,9 +65,9 @@ static BSR *bsr = NULL;
 
 static void usage()
 {
-   fprintf(stderr,
+   fprintf(stderr, _(
 "Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\nVersion: " VERSION " (" BDATE ")\n\n"
+"\nVersion: %s (%s)\n\n"
 "Usage: bls [options] <device-name>\n"
 "       -b <file>       specify a bootstrap file\n"
 "       -c <file>       specify a config file\n"
@@ -81,7 +81,7 @@ static void usage()
 "       -p              proceed inspite of errors\n"
 "       -v              be verbose\n"
 "       -V              specify Volume names (separated by |)\n"
-"       -?              print this message\n\n");
+"       -?              print this message\n\n"), VERSION, BDATE);
    exit(1);
 }
 
@@ -95,6 +95,10 @@ int main (int argc, char *argv[])
    char *bsrName = NULL;
    bool ignore_label_errors = false;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    working_directory = "/tmp";
    my_name_is(argc, argv, "bls");
    init_msg(NULL, NULL);              /* initialize message handler */
@@ -219,8 +223,8 @@ int main (int argc, char *argv[])
        * If on second or subsequent volume, adjust buffer pointer
        */
       if (dev->VolHdr.PrevVolumeName[0] != 0) { /* second volume */
-         Pmsg1(0, "\n"
-"Warning, this Volume is a continuation of Volume %s\n",
+         Pmsg1(0, _("\n"
+                    "Warning, this Volume is a continuation of Volume %s\n"),
                 dev->VolHdr.PrevVolumeName);
       }
 
@@ -298,7 +302,7 @@ static void do_blocks(char *infname)
         block->VolSessionId, block->VolSessionTime);
       if (verbose == 1) {
          read_record_from_block(block, rec);
-         Pmsg9(-1, "File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s rlen=%d\n",
+         Pmsg9(-1, _("File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s rlen=%d\n"),
               dev->file, dev->block_num,
               block->BlockNumber, block->block_len,
               FI_to_ascii(rec->FileIndex), rec->VolSessionId, rec->VolSessionTime,
@@ -307,7 +311,7 @@ static void do_blocks(char *infname)
       } else if (verbose > 1) {
          dump_block(block, "");
       } else {
-         printf("Block: %d size=%d\n", block->BlockNumber, block->block_len);
+         printf(_("Block: %d size=%d\n"), block->BlockNumber, block->block_len);
       }
 
    }
@@ -374,7 +378,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
 
       if (file_is_included(ff, attr->fname) && !file_is_excluded(ff, attr->fname)) {
          if (verbose) {
-            Pmsg5(-1, "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n",
+            Pmsg5(-1, _("FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"),
                   rec->FileIndex, rec->VolSessionId, rec->VolSessionTime, rec->Stream, rec->data_len);
          }
          print_ls_output(jcr, attr);
@@ -391,30 +395,30 @@ static void get_session_record(DEVICE *dev, DEV_RECORD *rec, SESSION_LABEL *sess
    memset(sessrec, 0, sizeof(sessrec));
    switch (rec->FileIndex) {
    case PRE_LABEL:
-      rtype = "Fresh Volume Label";
+      rtype = _("Fresh Volume Label");
       break;
    case VOL_LABEL:
-      rtype = "Volume Label";
+      rtype = _("Volume Label");
       unser_volume_label(dev, rec);
       break;
    case SOS_LABEL:
-      rtype = "Begin Job Session";
+      rtype = _("Begin Job Session");
       unser_session_label(sessrec, rec);
       break;
    case EOS_LABEL:
-      rtype = "End Job Session";
+      rtype = _("End Job Session");
       break;
    case EOM_LABEL:
-      rtype = "End of Medium";
+      rtype = _("End of Medium");
       break;
    default:
-      rtype = "Unknown";
+      rtype = _("Unknown");
       break;
    }
    Dmsg5(10, "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n",
          rtype, rec->VolSessionId, rec->VolSessionTime, rec->Stream, rec->data_len);
    if (verbose) {
-      Pmsg5(-1, "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n",
+      Pmsg5(-1, _("%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"),
             rtype, rec->VolSessionId, rec->VolSessionTime, rec->Stream, rec->data_len);
    }
 }
@@ -437,7 +441,7 @@ void    free_unused_volume(DCR *dcr) { }
 bool dir_ask_sysop_to_mount_volume(DCR *dcr)
 {
    DEVICE *dev = dcr->dev;
-   fprintf(stderr, "Mount Volume \"%s\" on device %s and press return when ready: ",
+   fprintf(stderr, _("Mount Volume \"%s\" on device %s and press return when ready: "),
       dcr->VolumeName, dev->print_name());
    getchar();
    return true;
index a01236ef68d3a74ac1431a38d5f5e8513a184f97..b46c66c27328a00ff40302cb09ac308210420a1b 100644 (file)
@@ -107,7 +107,7 @@ static void usage()
 {
    fprintf(stderr, _(
 "Copyright (C) 2001-2005 Kern Sibbald.\n"
-"\nVersion: " VERSION " (" BDATE ")\n\n"
+"\nVersion: %s (%s)\n\n"
 "Usage: bscan [ options ] <bacula-archive>\n"
 "       -b bootstrap      specify a bootstrap file\n"
 "       -c <file>         specify configuration file\n"
@@ -124,7 +124,7 @@ static void usage()
 "       -v                verbose\n"
 "       -V <Volumes>      specify Volume names (separated by |)\n"
 "       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n\n"));
+"       -?                print this message\n\n"), VERSION, BDATE);
    exit(1);
 }
 
@@ -134,6 +134,10 @@ int main (int argc, char *argv[])
    struct stat stat_buf;
    char *VolumeName = NULL;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    my_name_is(argc, argv, "bscan");
    init_msg(NULL, NULL);
 
@@ -278,9 +282,14 @@ int main (int argc, char *argv[])
    }
 
    do_scan();
-   printf("Records %sadded or updated in the catalog:\n%7d Media\n%7d Pool\n%7d Job\n%7d File\n",
-      update_db?"":"would have been ",
-      num_media, num_pools, num_jobs, num_files);
+   if (update_db) {
+      printf("Records added or updated in the catalog:\n%7d Media\n%7d Pool\n%7d Job\n%7d File\n",
+         num_media, num_pools, num_jobs, num_files);
+   }
+   else {
+      printf("Records would have been added or updated in the catalog:\n%7d Media\n%7d Pool\n%7d Job\n%7d File\n",
+         num_media, num_pools, num_jobs, num_files);
+   }
 
    free_jcr(bjcr);
    term_dev(dev);
@@ -369,7 +378,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
       if (showProgress) {
          int pct = (mr.VolBytes * 100) / currentVolumeSize;
          if (pct != last_pct) {
-            fprintf(stdout, "done: %d%%\n", pct);
+            fprintf(stdout, _("done: %d%%\n"), pct);
             fflush(stdout);
             last_pct = pct;
          }
@@ -1215,7 +1224,7 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr)
       offline_dev(dev);
    }
    force_close_device(dev);
-   fprintf(stderr, "Mount Volume \"%s\" on device %s and press return when ready: ",
+   fprintf(stderr, _("Mount Volume \"%s\" on device %s and press return when ready: "),
          dcr->VolumeName, dev->print_name());
    getchar();
    return true;
index 58820280738def28a2276d34e510cee16abf83fd..dd73797be5533115b5e70d0f8ada746e0d9dfbe0 100644 (file)
@@ -147,24 +147,28 @@ int main(int margc, char *margv[])
    uint32_t x32, y32;
    uint64_t x64, y64;
    char buf[1000];
+   
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
 
    /* Sanity checks */
    if (TAPE_BSIZE % B_DEV_BSIZE != 0 || TAPE_BSIZE / B_DEV_BSIZE == 0) {
-      Emsg2(M_ABORT, 0, "Tape block size (%d) not multiple of system size (%d)\n",
+      Emsg2(M_ABORT, 0, _("Tape block size (%d) not multiple of system size (%d)\n"),
          TAPE_BSIZE, B_DEV_BSIZE);
    }
    if (TAPE_BSIZE != (1 << (ffs(TAPE_BSIZE)-1))) {
-      Emsg1(M_ABORT, 0, "Tape block size (%d) is not a power of 2\n", TAPE_BSIZE);
+      Emsg1(M_ABORT, 0, _("Tape block size (%d) is not a power of 2\n"), TAPE_BSIZE);
    }
    if (sizeof(off_t) < 8) {
-      Pmsg1(-1, "\n\n!!!! Warning large disk addressing disabled. off_t=%d should be 8 or more !!!!!\n\n\n",
+      Pmsg1(-1, _("\n\n!!!! Warning large disk addressing disabled. off_t=%d should be 8 or more !!!!!\n\n\n"),
          sizeof(off_t));
    }
    x32 = 123456789;
    bsnprintf(buf, sizeof(buf), "%u", x32);
    i = bsscanf(buf, "%u", &y32);
    if (i != 1 || x32 != y32) {
-      Pmsg3(-1, "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n", i, x32, y32);
+      Pmsg3(-1, _("32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"), i, x32, y32);
       exit(1);
    }
    x64 = 123456789;
@@ -173,11 +177,11 @@ int main(int margc, char *margv[])
    bsnprintf(buf, sizeof(buf), "%" llu, x64);
    i = bsscanf(buf, "%llu", &y64);
    if (i != 1 || x64 != y64) {
-      Pmsg3(-1, "64 bit printf/scanf problem. i=%d x64=%" llu " y64=%" llu "\n", i, x64, y64);
+      Pmsg3(-1, _("64 bit printf/scanf problem. i=%d x64=%" llu " y64=%" llu "\n"), i, x64, y64);
       exit(1);
    }
 
-   printf("Tape block granularity is %d bytes.\n", TAPE_BSIZE);
+   printf(_("Tape block granularity is %d bytes.\n"), TAPE_BSIZE);
 
    working_directory = "/tmp";
    my_name_is(margc, margv, "btape");
@@ -244,11 +248,11 @@ int main(int margc, char *margv[])
 
    /* See if we can open a device */
    if (margc == 0) {
-      Pmsg0(000, "No archive name specified.\n");
+      Pmsg0(000, _("No archive name specified.\n"));
       usage();
       exit(1);
    } else if (margc != 1) {
-      Pmsg0(000, "Improper number of arguments specified.\n");
+      Pmsg0(000, _("Improper number of arguments specified.\n"));
       usage();
       exit(1);
    }
@@ -333,7 +337,7 @@ static bool open_the_device()
          return false;
       }
    }
-   Pmsg1(000, "open device %s: OK\n", dev->print_name());
+   Pmsg1(000, _("open device %s: OK\n"), dev->print_name());
    dev->set_append();                 /* put volume in append mode */
    unlock_device(dev);
    free_block(block);
@@ -354,19 +358,19 @@ static void labelcmd()
    if (VolumeName) {
       pm_strcpy(cmd, VolumeName);
    } else {
-      if (!get_cmd("Enter Volume Name: ")) {
+      if (!get_cmd(_("Enter Volume Name: "))) {
          return;
       }
    }
 
    if (!dev->is_open()) {
       if (!first_open_device(dcr)) {
-         Pmsg1(0, "Device open failed. ERR=%s\n", strerror_dev(dev));
+         Pmsg1(0, _("Device open failed. ERR=%s\n"), strerror_dev(dev));
       }
    }
    rewind_dev(dev);
    write_new_volume_label_to_dev(dcr, cmd, "Default");
-   Pmsg1(-1, "Wrote Volume label for volume \"%s\".\n", cmd);
+   Pmsg1(-1, _("Wrote Volume label for volume \"%s\".\n"), cmd);
 }
 
 /*
@@ -380,28 +384,28 @@ static void readlabelcmd()
    stat = read_dev_volume_label(dcr);
    switch (stat) {
    case VOL_NO_LABEL:
-      Pmsg0(0, "Volume has no label.\n");
+      Pmsg0(0, _("Volume has no label.\n"));
       break;
    case VOL_OK:
-      Pmsg0(0, "Volume label read correctly.\n");
+      Pmsg0(0, _("Volume label read correctly.\n"));
       break;
    case VOL_IO_ERROR:
-      Pmsg1(0, "I/O error on device: ERR=%s", strerror_dev(dev));
+      Pmsg1(0, _("I/O error on device: ERR=%s"), strerror_dev(dev));
       break;
    case VOL_NAME_ERROR:
-      Pmsg0(0, "Volume name error\n");
+      Pmsg0(0, _("Volume name error\n"));
       break;
    case VOL_CREATE_ERROR:
-      Pmsg1(0, "Error creating label. ERR=%s", strerror_dev(dev));
+      Pmsg1(0, _("Error creating label. ERR=%s"), strerror_dev(dev));
       break;
    case VOL_VERSION_ERROR:
-      Pmsg0(0, "Volume version error.\n");
+      Pmsg0(0, _("Volume version error.\n"));
       break;
    case VOL_LABEL_ERROR:
-      Pmsg0(0, "Bad Volume label type.\n");
+      Pmsg0(0, _("Bad Volume label type.\n"));
       break;
    default:
-      Pmsg0(0, "Unknown error.\n");
+      Pmsg0(0, _("Unknown error.\n"));
       break;
    }
 
@@ -419,9 +423,9 @@ static void loadcmd()
 {
 
    if (!load_dev(dev)) {
-      Pmsg1(0, "Bad status from load. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from load. ERR=%s\n"), strerror_dev(dev));
    } else
-      Pmsg1(0, "Loaded %s\n", dev->print_name());
+      Pmsg1(0, _("Loaded %s\n"), dev->print_name());
 }
 
 /*
@@ -430,10 +434,10 @@ static void loadcmd()
 static void rewindcmd()
 {
    if (!rewind_dev(dev)) {
-      Pmsg1(0, "Bad status from rewind. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from rewind. ERR=%s\n"), strerror_dev(dev));
       clrerror_dev(dev, -1);
    } else {
-      Pmsg1(0, "Rewound %s\n", dev->print_name());
+      Pmsg1(0, _("Rewound %s\n"), dev->print_name());
    }
 }
 
@@ -460,10 +464,15 @@ static void weofcmd()
    }
 
    if ((stat = weof_dev(dev, num)) < 0) {
-      Pmsg2(0, "Bad status from weof %d. ERR=%s\n", stat, strerror_dev(dev));
+      Pmsg2(0, _("Bad status from weof %d. ERR=%s\n"), stat, strerror_dev(dev));
       return;
    } else {
-      Pmsg3(0, "Wrote %d EOF%s to %s\n", num, num==1?"":"s", dev->print_name());
+      if (num==1) {
+         Pmsg1(0, _("Wrote 1 EOF to %s\n"), dev->print_name());
+      }
+      else {
+         Pmsg2(0, _("Wrote %d EOFs to %s\n"), num, dev->print_name());
+      }
    }
 }
 
@@ -575,7 +584,7 @@ static void capcmd()
    printf("File=%u block=%u\n", dev->file, dev->block_num);
    printf("Min block=%u Max block=%u\n", dev->min_block_size, dev->max_block_size);
 
-   printf("Status:\n");
+   printf(_("Status:\n"));
    statcmd();
 
 }
@@ -590,15 +599,15 @@ static void rectestcmd()
    DEV_RECORD *rec;
    int i, blkno = 0;
 
-   Pmsg0(0, "Test writting larger and larger records.\n"
+   Pmsg0(0, _("Test writting larger and larger records.\n"
 "This is a torture test for records.\nI am going to write\n"
 "larger and larger records. It will stop when the record size\n"
-"plus the header exceeds the block size (by default about 64K)\n");
+"plus the header exceeds the block size (by default about 64K)\n"));
 
 
-   get_cmd("Do you want to continue? (y/n): ");
+   get_cmd(_("Do you want to continue? (y/n): "));
    if (cmd[0] != 'y') {
-      Pmsg0(000, "Command aborted.\n");
+      Pmsg0(000, _("Command aborted.\n"));
       return;
    }
 
@@ -614,7 +623,7 @@ static void rectestcmd()
       if (write_record_to_block(block, rec)) {
          empty_block(block);
          blkno++;
-         Pmsg2(0, "Block %d i=%d\n", blkno, i);
+         Pmsg2(0, _("Block %d i=%d\n"), blkno, i);
       } else {
          break;
       }
@@ -702,12 +711,12 @@ static int re_read_block_test()
          goto bail_out;
       }
    }
-   Pmsg0(0, "Backspaced over EOF OK.\n");
+   Pmsg0(0, _("Backspaced over EOF OK.\n"));
    if (!bsr_dev(dev, 1)) {
       Pmsg1(0, _("Backspace record failed! ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    }
-   Pmsg0(0, "Backspace record OK.\n");
+   Pmsg0(0, _("Backspace record OK.\n"));
    if (!read_block_from_dev(dcr, NO_BLOCK_NUMBER_CHECK)) {
       berrno be;
       Pmsg1(0, _("Read block failed! ERR=%s\n"), be.strerror(dev->dev_errno));
@@ -765,7 +774,7 @@ static int write_read_test()
    block = dcr->block;
    rec = new_record();
    if (!rewind_dev(dev)) {
-      Pmsg1(0, "Bad status from rewind. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from rewind. ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    }
    rec->data = check_pool_memory_size(rec->data, block->buf_len);
@@ -807,10 +816,10 @@ static int write_read_test()
       weofcmd();
    }
    if (!rewind_dev(dev)) {
-      Pmsg1(0, "Bad status from rewind. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from rewind. ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    } else {
-      Pmsg0(0, "Rewind OK.\n");
+      Pmsg0(0, _("Rewind OK.\n"));
    }
    for (i=1; i<=2000; i++) {
 read_again:
@@ -877,7 +886,7 @@ static int position_test()
    empty_block(block);
    rec = new_record();
    if (!rewind_dev(dev)) {
-      Pmsg1(0, "Bad status from rewind. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from rewind. ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    }
    rec->data = check_pool_memory_size(rec->data, block->buf_len);
@@ -919,10 +928,10 @@ static int position_test()
       weofcmd();
    }
    if (!rewind_dev(dev)) {
-      Pmsg1(0, "Bad status from rewind. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from rewind. ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    } else {
-      Pmsg0(0, "Rewind OK.\n");
+      Pmsg0(0, _("Rewind OK.\n"));
    }
 
    while(ok) {
@@ -962,9 +971,9 @@ static int position_test()
          ok = false;
          continue;
       }
-      Pmsg2(-1, "Reposition to file:block %d:%d\n", file, blk);
+      Pmsg2(-1, _("Reposition to file:block %d:%d\n"), file, blk);
       if (!reposition_dev(dev, file, blk)) {
-         Pmsg0(0, "Reposition error.\n");
+         Pmsg0(0, _("Reposition error.\n"));
          goto bail_out;
       }
 read_again:
@@ -1053,8 +1062,8 @@ static int append_test()
    rewindcmd();
    Pmsg0(0, _("Now moving to end of medium.\n"));
    eodcmd();
-   Pmsg2(-1, _("We should be in file 3. I am at file %d. This is %s\n"),
-      dev->file, dev->file == 3 ? "correct!" : "NOT correct!!!!");
+   Pmsg2(-1, _("We should be in file 3. I am at file %d. %s\n"),
+      dev->file, dev->file == 3 ? _("This is correct!") : _("This is NOT correct!!!!"));
 
    if (dev->file != 3) {
       return -1;
@@ -1068,11 +1077,11 @@ static int append_test()
    }
    rewindcmd();
    Pmsg0(-1, _("Done appending, there should be no I/O errors\n\n"));
-   Pmsg0(-1, "Doing Bacula scan of blocks:\n");
+   Pmsg0(-1, _("Doing Bacula scan of blocks:\n"));
    scan_blocks();
    Pmsg0(-1, _("End scanning the tape.\n"));
-   Pmsg2(-1, _("We should be in file 4. I am at file %d. This is %s\n"),
-      dev->file, dev->file == 4 ? "correct!" : "NOT correct!!!!");
+   Pmsg2(-1, _("We should be in file 4. I am at file %d. %s\n"),
+      dev->file, dev->file == 4 ? _("This is correct!") : _("This is NOT correct!!!!"));
 
    if (dev->file != 4) {
       return -2;
@@ -1096,14 +1105,14 @@ static int autochanger_test()
       return 1;
    }
    if (!(dcr->device && dcr->device->changer_name && dcr->device->changer_command)) {
-      Pmsg0(-1, "\nAutochanger enabled, but no name or no command device specified.\n");
+      Pmsg0(-1, _("\nAutochanger enabled, but no name or no command device specified.\n"));
       return 1;
    }
 
-   Pmsg0(-1, "\nAh, I see you have an autochanger configured.\n"
+   Pmsg0(-1, _("\nAh, I see you have an autochanger configured.\n"
              "To test the autochanger you must have a blank tape\n"
-             " that I can write on in Slot 1.\n");
-   if (!get_cmd("\nDo you wish to continue with the Autochanger test? (y/n): ")) {
+             " that I can write on in Slot 1.\n"));
+   if (!get_cmd(_("\nDo you wish to continue with the Autochanger test? (y/n): "))) {
       return 0;
    }
    if (cmd[0] != 'y' && cmd[0] != 'Y') {
@@ -1133,9 +1142,9 @@ try_again:
       goto bail_out;
    }
    if (loaded) {
-      Pmsg1(-1, "Slot %d loaded. I am going to unload it.\n", loaded);
+      Pmsg1(-1, _("Slot %d loaded. I am going to unload it.\n"), loaded);
    } else {
-      Pmsg0(-1, "Nothing loaded in the drive. OK.\n");
+      Pmsg0(-1, _("Nothing loaded in the drive. OK.\n"));
    }
    Dmsg1(100, "Results from loaded query=%s\n", results);
    if (loaded) {
@@ -1148,7 +1157,7 @@ try_again:
       changer = edit_device_codes(dcr, changer, 
                    dcr->device->changer_command, "unload");
       status = run_program(changer, timeout, results);
-      Pmsg2(-1, "unload status=%s %d\n", status==0?"OK":"Bad", status);
+      Pmsg2(-1, _("unload status=%s %d\n"), status==0?_("OK"):_("Bad"), status);
       if (status != 0) {
          berrno be;
          Pmsg1(-1, _("3992 Bad autochanger command: %s\n"), changer);
@@ -1188,31 +1197,31 @@ try_again:
     */
    bmicrosleep(sleep_time, 0);
    if (!rewind_dev(dev) || weof_dev(dev,1) < 0) {
-      Pmsg1(0, "Bad status from rewind. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from rewind. ERR=%s\n"), strerror_dev(dev));
       clrerror_dev(dev, -1);
-      Pmsg0(-1, "\nThe test failed, probably because you need to put\n"
+      Pmsg0(-1, _("\nThe test failed, probably because you need to put\n"
                 "a longer sleep time in the mtx-script in the load) case.\n"
-                "Adding a 30 second sleep and trying again ...\n");
+                "Adding a 30 second sleep and trying again ...\n"));
       sleep_time += 30;
       goto try_again;
    } else {
-      Pmsg1(0, "Rewound %s\n", dev->print_name());
+      Pmsg1(0, _("Rewound %s\n"), dev->print_name());
    }
 
    if ((status = weof_dev(dev, 1)) < 0) {
-      Pmsg2(0, "Bad status from weof %d. ERR=%s\n", status, strerror_dev(dev));
+      Pmsg2(0, _("Bad status from weof %d. ERR=%s\n"), status, strerror_dev(dev));
       goto bail_out;
    } else {
-      Pmsg1(0, "Wrote EOF to %s\n", dev->print_name());
+      Pmsg1(0, _("Wrote EOF to %s\n"), dev->print_name());
    }
 
    if (sleep_time) {
-      Pmsg1(-1, "\nThe test worked this time. Please add:\n\n"
+      Pmsg1(-1, _("\nThe test worked this time. Please add:\n\n"
                 "   sleep %d\n\n"
-                "to your mtx-changer script in the load) case.\n\n",
+                "to your mtx-changer script in the load) case.\n\n"),
                 sleep_time);
    } else {
-      Pmsg0(-1, "\nThe test autochanger worked!!\n\n");
+      Pmsg0(-1, _("\nThe test autochanger worked!!\n\n"));
    }
 
    free_pool_memory(changer);
@@ -1223,7 +1232,7 @@ try_again:
 bail_out:
    free_pool_memory(changer);
    free_pool_memory(results);
-   Pmsg0(-1, "You must correct this error or the Autochanger will not work.\n");
+   Pmsg0(-1, _("You must correct this error or the Autochanger will not work.\n"));
    return -2;
 }
 
@@ -1268,11 +1277,11 @@ test_again:
    rewindcmd();
    Pmsg0(0, _("Now forward spacing 1 file.\n"));
    if (!dev->fsf(1)) {
-      Pmsg1(0, "Bad status from fsr. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from fsr. ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    }
-   Pmsg2(-1, _("We should be in file 1. I am at file %d. This is %s\n"),
-      dev->file, dev->file == 1 ? "correct!" : "NOT correct!!!!");
+   Pmsg2(-1, _("We should be in file 1. I am at file %d. %s\n"),
+      dev->file, dev->file == 1 ? _("This is correct!") : _("This is NOT correct!!!!"));
 
    if (dev->file != 1) {
       goto bail_out;
@@ -1280,11 +1289,11 @@ test_again:
 
    Pmsg0(0, _("Now forward spacing 2 files.\n"));
    if (!dev->fsf(2)) {
-      Pmsg1(0, "Bad status from fsr. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from fsr. ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    }
-   Pmsg2(-1, _("We should be in file 3. I am at file %d. This is %s\n"),
-      dev->file, dev->file == 3 ? "correct!" : "NOT correct!!!!");
+   Pmsg2(-1, _("We should be in file 3. I am at file %d. %s\n"),
+      dev->file, dev->file == 3 ? _("This is correct!") : _("This is NOT correct!!!!"));
 
    if (dev->file != 3) {
       goto bail_out;
@@ -1293,28 +1302,28 @@ test_again:
    rewindcmd();
    Pmsg0(0, _("Now forward spacing 4 files.\n"));
    if (!dev->fsf(4)) {
-      Pmsg1(0, "Bad status from fsr. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from fsr. ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    }
-   Pmsg2(-1, _("We should be in file 4. I am at file %d. This is %s\n"),
-      dev->file, dev->file == 4 ? "correct!" : "NOT correct!!!!");
+   Pmsg2(-1, _("We should be in file 4. I am at file %d. %s\n"),
+      dev->file, dev->file == 4 ? _("This is correct!") : _("This is NOT correct!!!!"));
 
    if (dev->file != 4) {
       goto bail_out;
    }
    if (set_off) {
-      Pmsg0(-1, "The test worked this time. Please add:\n\n"
+      Pmsg0(-1, _("The test worked this time. Please add:\n\n"
                 "   Fast Forward Space File = no\n\n"
-                "to your Device resource for this drive.\n");
+                "to your Device resource for this drive.\n"));
    }
 
    Pmsg0(-1, "\n");
    Pmsg0(0, _("Now forward spacing 1 more file.\n"));
    if (!dev->fsf(1)) {
-      Pmsg1(0, "Bad status from fsr. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from fsr. ERR=%s\n"), strerror_dev(dev));
    }
-   Pmsg2(-1, _("We should be in file 5. I am at file %d. This is %s\n"),
-      dev->file, dev->file == 5 ? "correct!" : "NOT correct!!!!");
+   Pmsg2(-1, _("We should be in file 5. I am at file %d. %s\n"),
+      dev->file, dev->file == 5 ? _("This is correct!") : _("This is NOT correct!!!!"));
    if (dev->file != 5) {
       goto bail_out;
    }
@@ -1324,16 +1333,16 @@ test_again:
 bail_out:
    Pmsg0(-1, _("\nThe forward space file test failed.\n"));
    if (dev_cap(dev, CAP_FASTFSF)) {
-      Pmsg0(-1, "You have Fast Forward Space File enabled.\n"
-              "I am turning it off then retrying the test.\n");
+      Pmsg0(-1, _("You have Fast Forward Space File enabled.\n"
+              "I am turning it off then retrying the test.\n"));
       dev->capabilities &= ~CAP_FASTFSF;
       set_off = true;
       goto test_again;
    }
-   Pmsg0(-1, "You must correct this error or Bacula will not work.\n"
+   Pmsg0(-1, _("You must correct this error or Bacula will not work.\n"
             "Some systems, e.g. OpenBSD, require you to set\n"
             "   Use MTIOCGET= no\n"
-            "in your device resource. Use with caution.\n");
+            "in your device resource. Use with caution.\n"));
    return -2;
 }
 
@@ -1362,47 +1371,47 @@ static void testcmd()
    }
    if (stat == -1) {                  /* first test failed */
       if (dev_cap(dev, CAP_EOM) || dev_cap(dev, CAP_FASTFSF)) {
-         Pmsg0(-1, "\nAppend test failed. Attempting again.\n"
+         Pmsg0(-1, _("\nAppend test failed. Attempting again.\n"
                    "Setting \"Hardware End of Medium = no\n"
                    "    and \"Fast Forward Space File = no\n"
-                   "and retrying append test.\n\n");
+                   "and retrying append test.\n\n"));
          dev->capabilities &= ~CAP_EOM; /* turn off eom */
          dev->capabilities &= ~CAP_FASTFSF; /* turn off fast fsf */
          stat = append_test();
          if (stat == 1) {
-            Pmsg0(-1, "\n\nIt looks like the test worked this time, please add:\n\n"
+            Pmsg0(-1, _("\n\nIt looks like the test worked this time, please add:\n\n"
                      "    Hardware End of Medium = No\n\n"
                      "    Fast Forward Space File = No\n"
-                     "to your Device resource in the Storage conf file.\n");
+                     "to your Device resource in the Storage conf file.\n"));
             goto all_done;
          }
          if (stat == -1) {
-            Pmsg0(-1, "\n\nThat appears *NOT* to have corrected the problem.\n");
+            Pmsg0(-1, _("\n\nThat appears *NOT* to have corrected the problem.\n"));
             goto failed;
          }
          /* Wrong count after append */
          if (stat == -2) {
-            Pmsg0(-1, "\n\nIt looks like the append failed. Attempting again.\n"
-                     "Setting \"BSF at EOM = yes\" and retrying append test.\n");
+            Pmsg0(-1, _("\n\nIt looks like the append failed. Attempting again.\n"
+                     "Setting \"BSF at EOM = yes\" and retrying append test.\n"));
             dev->capabilities |= CAP_BSFATEOM; /* backspace on eom */
             stat = append_test();
             if (stat == 1) {
-               Pmsg0(-1, "\n\nIt looks like the test worked this time, please add:\n\n"
+               Pmsg0(-1, _("\n\nIt looks like the test worked this time, please add:\n\n"
                      "    Hardware End of Medium = No\n"
                      "    Fast Forward Space File = No\n"
                      "    BSF at EOM = yes\n\n"
-                     "to your Device resource in the Storage conf file.\n");
+                     "to your Device resource in the Storage conf file.\n"));
                goto all_done;
             }
          }
 
       }
 failed:
-      Pmsg0(-1, "\nAppend test failed.\n\n");
-      Pmsg0(-1, "\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
+      Pmsg0(-1, _("\nAppend test failed.\n\n"
+            "\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
             "Unable to correct the problem. You MUST fix this\n"
-             "problem before Bacula can use your tape drive correctly\n");
-      Pmsg0(-1, "\nPerhaps running Bacula in fixed block mode will work.\n"
+             "problem before Bacula can use your tape drive correctly\n"
+            "\nPerhaps running Bacula in fixed block mode will work.\n"
             "Do so by setting:\n\n"
             "Minimum Block Size = nnn\n"
             "Maximum Block Size = nnn\n\n"
@@ -1414,7 +1423,7 @@ failed:
             "\n"
             "Some systems, e.g. OpenBSD, require you to set\n"
             "   Use MTIOCGET= no\n"
-            "in your device resource. Use with caution.\n");
+            "in your device resource. Use with caution.\n"));
        return;
    }
 
@@ -1431,12 +1440,11 @@ all_done:
         "1 block of 64448 bytes in file 4\n"
         "End of File mark.\n"
         "Total files=4, blocks=7, bytes = 451,136\n"
-        "=== End sample correct output ===\n\n"));
-
-   Pmsg0(-1, _("If the above scan output is not identical to the\n"
-               "sample output, you MUST correct the problem\n"
-               "or Bacula will not be able to write multiple Jobs to \n"
-               "the tape.\n\n"));
+        "=== End sample correct output ===\n\n"
+        "If the above scan output is not identical to the\n"
+        "sample output, you MUST correct the problem\n"
+        "or Bacula will not be able to write multiple Jobs to \n"
+        "the tape.\n\n"));
 
    if (stat == 1) {
       re_read_block_test();
@@ -1459,10 +1467,15 @@ static void fsfcmd()
       num = 1;
    }
    if (!dev->fsf(num)) {
-      Pmsg1(0, "Bad status from fsf. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from fsf. ERR=%s\n"), strerror_dev(dev));
       return;
    }
-   Pmsg2(0, "Forward spaced %d file%s.\n", num, num==1?"":"s");
+   if (num == 1) {
+      Pmsg0(0, _("Forward spaced 1 file.\n"));
+   }
+   else {
+      Pmsg1(0, _("Forward spaced %d files.\n"), num);
+   }
 }
 
 /* Forward space a record */
@@ -1476,10 +1489,15 @@ static void fsrcmd()
       num = 1;
    }
    if (!dev->fsr(num)) {
-      Pmsg1(0, "Bad status from fsr. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(0, _("Bad status from fsr. ERR=%s\n"), strerror_dev(dev));
       return;
    }
-   Pmsg2(0, "Forward spaced %d record%s.\n", num, num==1?"":"s");
+   if (num == 1) {
+      Pmsg0(0, _("Forward spaced 1 record.\n"));
+   }
+   else {
+      Pmsg1(0, _("Forward spaced %d records.\n"), num);
+   }
 }
 
 
@@ -1529,7 +1547,7 @@ static void rrcmd()
    char *buf;
    int stat, len;
 
-   if (!get_cmd("Enter length to read: ")) {
+   if (!get_cmd(_("Enter length to read: "))) {
       return;
    }
    len = atoi(cmd);
@@ -1566,7 +1584,7 @@ static void scancmd()
    blocks = block_size = tot_blocks = 0;
    bytes = 0;
    if (dev->state & ST_EOT) {
-      Pmsg0(0, "End of tape\n");
+      Pmsg0(0, _("End of tape\n"));
       return;
    }
    update_pos_dev(dev);
@@ -1576,12 +1594,17 @@ static void scancmd()
       if ((stat = read(dev->fd, buf, sizeof(buf))) < 0) {
          berrno be;
          clrerror_dev(dev, -1);
-         Mmsg2(dev->errmsg, "read error on %s. ERR=%s.\n",
+         Mmsg2(dev->errmsg, _("read error on %s. ERR=%s.\n"),
             dev->dev_name, be.strerror());
-         Pmsg2(0, "Bad status from read %d. ERR=%s\n", stat, strerror_dev(dev));
-         if (blocks > 0)
-            printf("%d block%s of %d bytes in file %d\n",
-                    blocks, blocks>1?"s":"", block_size, dev->file);
+         Pmsg2(0, _("Bad status from read %d. ERR=%s\n"), stat, strerror_dev(dev));
+         if (blocks > 0) {
+            if (blocks==1) {
+               printf(_("1 block of %d bytes in file %d\n"), block_size, dev->file);
+            }
+            else {
+               printf(_("%d blocks of %d bytes in file %d\n"), blocks, block_size, dev->file);
+            }
+         }
          return;
       }
       Dmsg1(200, "read status = %d\n", stat);
@@ -1589,15 +1612,19 @@ static void scancmd()
       if (stat != block_size) {
          update_pos_dev(dev);
          if (blocks > 0) {
-            printf("%d block%s of %d bytes in file %d\n",
-                 blocks, blocks>1?"s":"", block_size, dev->file);
+            if (blocks==1) {
+               printf(_("1 block of %d bytes in file %d\n"), block_size, dev->file);
+            }
+            else {
+               printf(_("%d blocks of %d bytes in file %d\n"), blocks, block_size, dev->file);
+            }
             blocks = 0;
          }
          block_size = stat;
       }
       if (stat == 0) {                /* EOF */
          update_pos_dev(dev);
-         printf("End of File mark.\n");
+         printf(_("End of File mark.\n"));
          /* Two reads of zero means end of tape */
          if (dev->state & ST_EOF)
             dev->state |= ST_EOT;
@@ -1606,7 +1633,7 @@ static void scancmd()
             dev->file++;
          }
          if (dev->state & ST_EOT) {
-            printf("End of tape\n");
+            printf(_("End of tape\n"));
             break;
          }
       } else {                        /* Got data */
@@ -1618,7 +1645,7 @@ static void scancmd()
    }
    update_pos_dev(dev);
    tot_files = dev->file - tot_files;
-   printf("Total files=%d, blocks=%d, bytes = %s\n", tot_files, tot_blocks,
+   printf(_("Total files=%d, blocks=%d, bytes = %s\n"), tot_files, tot_blocks,
       edit_uint64_with_commas(bytes, ec1));
 }
 
@@ -1648,16 +1675,24 @@ static void scan_blocks()
          Dmsg1(100, "!read_block(): ERR=%s\n", strerror_dev(dev));
          if (dev->state & ST_EOT) {
             if (blocks > 0) {
-               printf("%d block%s of %d bytes in file %d\n",
-                    blocks, blocks>1?"s":"", block_size, dev->file);
+               if (blocks==1) {
+                  printf(_("1 block of %d bytes in file %d\n"), block_size, dev->file);
+               }
+               else {
+                  printf(_("%d blocks of %d bytes in file %d\n"), blocks, block_size, dev->file);
+               }
                blocks = 0;
             }
             goto bail_out;
          }
          if (dev->state & ST_EOF) {
             if (blocks > 0) {
-               printf("%d block%s of %d bytes in file %d\n",
-                       blocks, blocks>1?"s":"", block_size, dev->file);
+               if (blocks==1) {
+                  printf(_("1 block of %d bytes in file %d\n"), block_size, dev->file);
+               }
+               else {
+                  printf(_("%d blocks of %d bytes in file %d\n"), blocks, block_size, dev->file);
+               }
                blocks = 0;
             }
             printf(_("End of File mark.\n"));
@@ -1665,8 +1700,12 @@ static void scan_blocks()
          }
          if (dev->state & ST_SHORT) {
             if (blocks > 0) {
-               printf("%d block%s of %d bytes in file %d\n",
-                       blocks, blocks>1?"s":"", block_size, dev->file);
+               if (blocks==1) {
+                  printf(_("1 block of %d bytes in file %d\n"), block_size, dev->file);
+               }
+               else {
+                  printf(_("%d blocks of %d bytes in file %d\n"), blocks, block_size, dev->file);
+               }
                blocks = 0;
             }
             printf(_("Short block read.\n"));
@@ -1677,8 +1716,12 @@ static void scan_blocks()
       }
       if (block->block_len != block_size) {
          if (blocks > 0) {
-            printf("%d block%s of %d bytes in file %d\n",
-                    blocks, blocks>1?"s":"", block_size, dev->file);
+            if (blocks==1) {
+               printf(_("1 block of %d bytes in file %d\n"), block_size, dev->file);
+            }
+            else {
+               printf(_("%d blocks of %d bytes in file %d\n"), blocks, block_size, dev->file);
+            }
             blocks = 0;
          }
          block_size = block->block_len;
@@ -1692,7 +1735,7 @@ static void scan_blocks()
       if (verbose == 1) {
          DEV_RECORD *rec = new_record();
          read_record_from_block(block, rec);
-         Pmsg8(-1, "Blk_block: %u dev_blk=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s rlen=%d\n",
+         Pmsg8(-1, _("Blk_block: %u dev_blk=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s rlen=%d\n"),
               block->BlockNumber, dev->block_num, block->block_len,
               FI_to_ascii(rec->FileIndex), rec->VolSessionId, rec->VolSessionTime,
               stream_to_ascii(rec->Stream, rec->FileIndex), rec->data_len);
@@ -1705,7 +1748,7 @@ static void scan_blocks()
    }
 bail_out:
    tot_files = dev->file - tot_files;
-   printf("Total files=%d, blocks=%d, bytes = %s\n", tot_files, tot_blocks,
+   printf(_("Total files=%d, blocks=%d, bytes = %s\n"), tot_files, tot_blocks,
       edit_uint64_with_commas(bytes, ec1));
 }
 
@@ -1714,7 +1757,7 @@ static void statcmd()
 {
    int debug = debug_level;
    debug_level = 30;
-   Pmsg2(0, "Device status: %u. ERR=%s\n", status_dev(dev), strerror_dev(dev));
+   Pmsg2(0, _("Device status: %u. ERR=%s\n"), status_dev(dev), strerror_dev(dev));
 #ifdef xxxx
    dump_volume_label(dev);
 #endif
@@ -1742,7 +1785,7 @@ static void fillcmd()
    last_block_num = 0;
    BlockNumber = 0;
 
-   Pmsg0(-1, "\n"
+   Pmsg0(-1, _("\n"
 "This command simulates Bacula writing to a tape.\n"
 "It requires either one or two blank tapes, which it\n"
 "will label and write.\n\n"
@@ -1757,18 +1800,18 @@ static void fillcmd()
 "fills, it will ask for a second, and after writing a few more \n"
 "blocks, it will stop.  Then it will begin re-reading the\n"
 "two tapes.\n\n"
-"This may take a long time -- hours! ...\n\n");
+"This may take a long time -- hours! ...\n\n"));
 
-   get_cmd("Do you want to run the simplified test (s) with one tape\n"
-           "or the complete multiple tape (m) test: (s/m) ");
+   get_cmd(_("Do you want to run the simplified test (s) with one tape\n"
+           "or the complete multiple tape (m) test: (s/m) "));
    if (cmd[0] == 's') {
-      Pmsg0(-1, "Simple test (single tape) selected.\n");
+      Pmsg0(-1, _("Simple test (single tape) selected.\n"));
       simple = true;
    } else if (cmd[0] == 'm') {
-      Pmsg0(-1, "Multiple tape test selected.\n");
+      Pmsg0(-1, _("Multiple tape test selected.\n"));
       simple = false;
    } else {
-      Pmsg0(000, "Command aborted.\n");
+      Pmsg0(000, _("Command aborted.\n"));
       return;
    }
 
@@ -1781,10 +1824,10 @@ static void fillcmd()
    set_volume_name("TestVolume1", 1);
 
    if (!dev->rewind()) {
-      Pmsg0(000, "Rewind failed.\n");
+      Pmsg0(000, _("Rewind failed.\n"));
    }
    if (!dev->weof()) {
-      Pmsg0(000, "Write EOF failed.\n");
+      Pmsg0(000, _("Write EOF failed.\n"));
    }
    labelcmd();
    dev->set_append();                 /* force volume to be relabeled */
@@ -1811,7 +1854,7 @@ static void fillcmd()
          strerror_dev(dev));
       ok = false;
    }
-   Pmsg0(-1, "Wrote Start of Session label.\n");
+   Pmsg0(-1, _("Wrote Start of Session label.\n"));
 
    memset(&rec, 0, sizeof(rec));
    rec.data = get_memory(100000);     /* max record size */
@@ -1840,9 +1883,9 @@ static void fillcmd()
    jcr->dcr->VolFirstIndex = 0;
    time(&jcr->run_time);              /* start counting time for rates */
    if (simple) {
-      Pmsg0(-1, "Begin writing Bacula records to tape ...\n");
+      Pmsg0(-1, _("Begin writing Bacula records to tape ...\n"));
    } else {
-      Pmsg0(-1, "Begin writing Bacula records to first tape ...\n");
+      Pmsg0(-1, _("Begin writing Bacula records to first tape ...\n"));
    }
    for (file_index = 0; ok && !job_canceled(jcr); ) {
       rec.VolSessionId = jcr->VolSessionId;
@@ -1882,14 +1925,14 @@ static void fillcmd()
                now = 1;          /* prevent divide error */
             }
             kbs = (double)dev->VolCatInfo.VolCatBytes / (1000.0 * (double)now);
-            Pmsg4(-1, "Wrote blk_block=%u, dev_blk_num=%u VolBytes=%s rate=%.1f KB/s\n",
+            Pmsg4(-1, _("Wrote blk_block=%u, dev_blk_num=%u VolBytes=%s rate=%.1f KB/s\n"),
                block->BlockNumber, dev->block_num,
                edit_uint64_with_commas(dev->VolCatInfo.VolCatBytes, ec1), (float)kbs);
          }
          /* Every 15000 blocks (approx 1GB) write an EOF.
           */
          if ((block->BlockNumber % 15000) == 0) {
-            Pmsg0(-1, "Flush block, write EOF\n");
+            Pmsg0(-1, _("Flush block, write EOF\n"));
             flush_block(block, 0);
             weof_dev(dev, 1);
          }
@@ -1955,7 +1998,7 @@ static void fillcmd()
       write(fd, last_block2->buf, last_block2->buf_len);
       write(fd, first_block->buf, first_block->buf_len);
       close(fd);
-      Pmsg2(-1, "Wrote state file last_block_num1=%d last_block_num2=%d\n",
+      Pmsg2(-1, _("Wrote state file last_block_num1=%d last_block_num2=%d\n"),
          last_block_num1, last_block_num2);
    } else {
       berrno be;
@@ -1963,8 +2006,14 @@ static void fillcmd()
                  be.strerror());
    }
 
-   Pmsg4(-1, _("\n\nDone filling tape%s at %d:%d. Now beginning re-read of %stape ...\n"),
-      simple?"":"s", jcr->dcr->dev->file, jcr->dcr->dev->block_num, simple?"":"first ");
+   if (simple) {
+      Pmsg2(-1, _("\n\nDone filling tape at %d:%d. Now beginning re-read of tape ...\n"),
+         jcr->dcr->dev->file, jcr->dcr->dev->block_num);
+   }
+   else {
+      Pmsg2(-1, _("\n\nDone filling tapes at %d:%d. Now beginning re-read of first tape ...\n"),
+         jcr->dcr->dev->file, jcr->dcr->dev->block_num);
+   }
 
    jcr->dcr->block = block;
    do_unfill();
@@ -2001,14 +2050,14 @@ static void unfillcmd()
       read(fd, first_block->buf, first_block->buf_len);
       close(fd);
       if (state_level != btape_state_level) {
-          Pmsg0(-1, "\nThe state file level has changed. You must redo\n"
-                  "the fill command.\n");
+          Pmsg0(-1, _("\nThe state file level has changed. You must redo\n"
+                  "the fill command.\n"));
           return;
        }
    } else {
       berrno be;
-      Pmsg2(-1, "\nCould not find the state file: %s ERR=%s\n"
-             "You must redo the fill command.\n", buf, be.strerror());
+      Pmsg2(-1, _("\nCould not find the state file: %s ERR=%s\n"
+             "You must redo the fill command.\n"), buf, be.strerror());
       return;
    }
    do_unfill();
@@ -2079,7 +2128,7 @@ static void do_unfill()
    Pmsg4(-1, _("Reposition from %u:%u to %u:%u\n"), dev->file, dev->block_num,
          last_file, last_block_num);
    if (!reposition_dev(dev, last_file, last_block_num)) {
-      Pmsg1(-1, "Reposition error. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(-1, _("Reposition error. ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    }
    Pmsg1(-1, _("Reading block %u.\n"), last_block_num);
@@ -2130,7 +2179,7 @@ static void do_unfill()
     */
    Pmsg2(-1, _("Reposition from %u:%u to 0:1\n"), dev->file, dev->block_num);
    if (!reposition_dev(dev, 0, 1)) {
-      Pmsg1(-1, "Reposition error. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(-1, _("Reposition error. ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    }
    Pmsg1(-1, _("Reading block %d.\n"), dev->block_num);
@@ -2146,7 +2195,7 @@ static void do_unfill()
    Pmsg4(-1, _("Reposition from %u:%u to %u:%u\n"), dev->file, dev->block_num,
          last_file, last_block_num);
    if (!reposition_dev(dev, last_file, last_block_num)) {
-      Pmsg1(-1, "Reposition error. ERR=%s\n", strerror_dev(dev));
+      Pmsg1(-1, _("Reposition error. ERR=%s\n"), strerror_dev(dev));
       goto bail_out;
    }
    Pmsg1(-1, _("Reading block %d.\n"), dev->block_num);
@@ -2169,13 +2218,13 @@ static bool quickie_cb(DCR *dcr, DEV_RECORD *rec)
 {
    DEVICE *dev = dcr->dev;
    if (dev->file != 0) {
-      Pmsg3(-1, "ERROR! device at %d:%d count=%d\n", dev->file, dev->block_num,
+      Pmsg3(-1, _("ERROR! device at %d:%d count=%d\n"), dev->file, dev->block_num,
          quickie_count);
       return false;
    }
    quickie_count++;
    if (quickie_count == 10000) {
-      Pmsg2(-1, "1000 records read now at %d:%d\n", dev->file, dev->block_num);
+      Pmsg2(-1, _("1000 records read now at %d:%d\n"), dev->file, dev->block_num);
    }
    return quickie_count < 10000;
 }
@@ -2201,11 +2250,11 @@ static bool compare_blocks(DEV_BLOCK *last_block, DEV_BLOCK *block)
       dump_block(last_block, _("Last block written"));
       Pmsg0(-1, "\n");
       dump_block(block, _("Block read back"));
-      Pmsg1(-1, "\n\nThe blocks differ at byte %u\n", p - last_block->buf);
-      Pmsg0(-1, "\n\n!!!! The last block written and the block\n"
+      Pmsg1(-1, _("\n\nThe blocks differ at byte %u\n"), p - last_block->buf);
+      Pmsg0(-1, _("\n\n!!!! The last block written and the block\n"
                 "that was read back differ. The test FAILED !!!!\n"
                 "This must be corrected before you use Bacula\n"
-                "to write multi-tape Volumes.!!!!\n");
+                "to write multi-tape Volumes.!!!!\n"));
       return false;
    }
    if (verbose) {
@@ -2241,7 +2290,7 @@ static int flush_block(DEV_BLOCK *block, int dump)
    this_file = dev->file;
    this_block_num = dev->block_num;
    if (!write_block_to_dev(dcr)) {
-      Pmsg3(000, "Last block at: %u:%u this_dev_block_num=%d\n",
+      Pmsg3(000, _("Last block at: %u:%u this_dev_block_num=%d\n"),
                   last_file, last_block_num, this_block_num);
       if (vol_num == 1) {
          /*
@@ -2255,11 +2304,11 @@ static int flush_block(DEV_BLOCK *block, int dump)
          first_block = dup_block(block); /* first block second tape */
       }
       if (verbose) {
-         Pmsg3(000, "Block not written: FileIndex=%u blk_block=%u Size=%u\n",
+         Pmsg3(000, _("Block not written: FileIndex=%u blk_block=%u Size=%u\n"),
             (unsigned)file_index, block->BlockNumber, block->block_len);
-         dump_block(last_block, "Last block written");
+         dump_block(last_block, _("Last block written"));
          Pmsg0(-1, "\n");
-         dump_block(block, "Block not written");
+         dump_block(block, _("Block not written"));
       }
       if (stop == 0) {
          eot_block = block->BlockNumber;
@@ -2274,7 +2323,7 @@ static int flush_block(DEV_BLOCK *block, int dump)
       }
       kbs = (double)dev->VolCatInfo.VolCatBytes / (1000 * now);
       vol_size = dev->VolCatInfo.VolCatBytes;
-      Pmsg4(000, "End of tape %d:%d. VolumeCapacity=%s. Write rate = %.1f KB/s\n",
+      Pmsg4(000, _("End of tape %d:%d. VolumeCapacity=%s. Write rate = %.1f KB/s\n"),
          dev->file, dev->block_num,
          edit_uint64_with_commas(dev->VolCatInfo.VolCatBytes, ec1), kbs);
 
@@ -2324,9 +2373,9 @@ static void qfillcmd()
    DEV_RECORD *rec = dcr->rec;
    int i, count;
 
-   Pmsg0(0, "Test writing blocks of 64512 bytes to tape.\n");
+   Pmsg0(0, _("Test writing blocks of 64512 bytes to tape.\n"));
 
-   get_cmd("How many blocks do you want to write? (1000): ");
+   get_cmd(_("How many blocks do you want to write? (1000): "));
 
    count = atoi(cmd);
    if (count <= 0) {
@@ -2341,7 +2390,7 @@ static void qfillcmd()
    memset(rec->data, i & 0xFF, i);
    rec->data_len = i;
    rewindcmd();
-   Pmsg1(0, "Begin writing %d Bacula blocks to tape ...\n", count);
+   Pmsg1(0, _("Begin writing %d Bacula blocks to tape ...\n"), count);
    for (i=0; i < count; i++) {
       if (i % 100 == 0) {
          printf("+");
@@ -2393,7 +2442,7 @@ static void rawfill_cmd()
       }
    }
    p = (uint32_t *)block->buf;
-   Pmsg1(0, "Begin writing raw blocks of %u bytes.\n", block->buf_len);
+   Pmsg1(0, _("Begin writing raw blocks of %u bytes.\n"), block->buf_len);
    for ( ;; ) {
       *p = block_num;
       stat = write(dev->fd, block->buf, block->buf_len);
@@ -2413,7 +2462,7 @@ static void rawfill_cmd()
    my_errno = errno;
    printf("\n");
    berrno be;
-   printf("Write failed at block %u. stat=%d ERR=%s\n", block_num, stat,
+   printf(_("Write failed at block %u. stat=%d ERR=%s\n"), block_num, stat,
       be.strerror(my_errno));
    weofcmd();
 }
@@ -2443,7 +2492,7 @@ static void bfill_cmd()
       }
    }
    p = (uint32_t *)block->buf;
-   Pmsg1(0, "Begin writing Bacula blocks of %u bytes.\n", block->buf_len);
+   Pmsg1(0, _("Begin writing Bacula blocks of %u bytes.\n"), block->buf_len);
    for ( ;; ) {
       *p = block_num;
       block->binbuf = block->buf_len;
@@ -2462,41 +2511,41 @@ static void bfill_cmd()
    }
    my_errno = errno;
    printf("\n");
-   printf("Write failed at block %u.\n", block_num);
+   printf(_("Write failed at block %u.\n"), block_num);
    weofcmd();
 }
 
 
 struct cmdstruct { const char *key; void (*func)(); const char *help; };
 static struct cmdstruct commands[] = {
- {"autochanger", autochangercmd, "test autochanger"},
- {"bsf",        bsfcmd,       "backspace file"},
- {"bsr",        bsrcmd,       "backspace record"},
- {"bfill",      bfill_cmd,    "fill tape using Bacula writes"},
- {"cap",        capcmd,       "list device capabilities"},
- {"clear",      clearcmd,     "clear tape errors"},
- {"eod",        eodcmd,       "go to end of Bacula data for append"},
- {"eom",        eomcmd,       "go to the physical end of medium"},
- {"fill",       fillcmd,      "fill tape, write onto second volume"},
- {"unfill",     unfillcmd,    "read filled tape"},
- {"fsf",        fsfcmd,       "forward space a file"},
- {"fsr",        fsrcmd,       "forward space a record"},
- {"help",       helpcmd,      "print this command"},
- {"label",      labelcmd,     "write a Bacula label to the tape"},
- {"load",       loadcmd,      "load a tape"},
- {"quit",       quitcmd,      "quit btape"},
- {"rawfill",    rawfill_cmd,  "use write() to fill tape"},
- {"readlabel",  readlabelcmd, "read and print the Bacula tape label"},
- {"rectest",    rectestcmd,   "test record handling functions"},
- {"rewind",     rewindcmd,    "rewind the tape"},
- {"scan",       scancmd,      "read() tape block by block to EOT and report"},
- {"scanblocks", scan_blocks,  "Bacula read block by block to EOT and report"},
- {"status",     statcmd,      "print tape status"},
- {"test",       testcmd,      "General test Bacula tape functions"},
- {"weof",       weofcmd,      "write an EOF on the tape"},
- {"wr",         wrcmd,        "write a single Bacula block"},
- {"rr",         rrcmd,        "read a single record"},
- {"qfill",      qfillcmd,     "quick fill command"},
+ {N_("autochanger"),autochangercmd, _("test autochanger")},
+ {N_("bsf"),       bsfcmd,       _("backspace file")},
+ {N_("bsr"),       bsrcmd,       _("backspace record")},
+ {N_("bfill"),     bfill_cmd,    _("fill tape using Bacula writes")},
+ {N_("cap"),       capcmd,       _("list device capabilities")},
+ {N_("clear"),     clearcmd,     _("clear tape errors")},
+ {N_("eod"),       eodcmd,       _("go to end of Bacula data for append")},
+ {N_("eom"),       eomcmd,       _("go to the physical end of medium")},
+ {N_("fill"),      fillcmd,      _("fill tape, write onto second volume")},
+ {N_("unfill"),    unfillcmd,    _("read filled tape")},
+ {N_("fsf"),       fsfcmd,       _("forward space a file")},
+ {N_("fsr"),       fsrcmd,       _("forward space a record")},
+ {N_("help"),      helpcmd,      _("print this command")},
+ {N_("label"),     labelcmd,     _("write a Bacula label to the tape")},
+ {N_("load"),      loadcmd,      _("load a tape")},
+ {N_("quit"),      quitcmd,      _("quit btape")},
+ {N_("rawfill"),   rawfill_cmd,  _("use write() to fill tape")},
+ {N_("readlabel"), readlabelcmd, _("read and print the Bacula tape label")},
+ {N_("rectest"),   rectestcmd,   _("test record handling functions")},
+ {N_("rewind"),    rewindcmd,    _("rewind the tape")},
+ {N_("scan"),      scancmd,      _("read() tape block by block to EOT and report")},
+ {N_("scanblocks"),scan_blocks,  _("Bacula read block by block to EOT and report")},
+ {N_("status"),    statcmd,      _("print tape status")},
+ {N_("test"),      testcmd,      _("General test Bacula tape functions")},
+ {N_("weof"),      weofcmd,      _("write an EOF on the tape")},
+ {N_("wr"),        wrcmd,        _("write a single Bacula block")},
+ {N_("rr"),        rrcmd,        _("read a single record")},
+ {N_("qfill"),     qfillcmd,     _("quick fill command")}
              };
 #define comsize (sizeof(commands)/sizeof(struct cmdstruct))
 
@@ -2538,7 +2587,7 @@ static void usage()
 {
    fprintf(stderr, _(
 "Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\nVersion: " VERSION " (" BDATE ")\n\n"
+"\nVersion: %s (%s)\n\n"
 "Usage: btape <options> <device_name>\n"
 "       -b <file>   specify bootstrap file\n"
 "       -c <file>   set configuration file to file\n"
@@ -2547,7 +2596,7 @@ static void usage()
 "       -s          turn off signals\n"
 "       -v          be verbose\n"
 "       -?          print this message.\n"
-"\n"));
+"\n"), VERSION, BDATE);
 
 }
 
@@ -2628,10 +2677,10 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr)
    force_close_device(dev);
    Pmsg1(-1, "%s", dev->errmsg);           /* print reason */
    if (dcr->VolumeName[0] == 0 || strcmp(dcr->VolumeName, "TestVolume2") == 0) {
-      fprintf(stderr, "Mount second Volume on device %s and press return when ready: ",
+      fprintf(stderr, _("Mount second Volume on device %s and press return when ready: "),
          dev->print_name());
    } else {
-      fprintf(stderr, "Mount Volume \"%s\" on device %s and press return when ready: ",
+      fprintf(stderr, _("Mount Volume \"%s\" on device %s and press return when ready: "),
          dcr->VolumeName, dev->print_name());
    }
    getchar();
@@ -2655,7 +2704,7 @@ bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr)
    autochanger = autoload_device(dcr, 1, NULL);
    if (!autochanger) {
       force_close_device(dev);
-      fprintf(stderr, "Mount blank Volume on device %s and press return when ready: ",
+      fprintf(stderr, _("Mount blank Volume on device %s and press return when ready: "),
          dev->print_name());
       getchar();
    }
@@ -2673,7 +2722,7 @@ static bool my_mount_next_read_volume(DCR *dcr)
    DEV_BLOCK *block = dcr->block;
 
    Dmsg0(20, "Enter my_mount_next_read_volume\n");
-   Pmsg1(000, "End of Volume \"%s\"\n", dcr->VolumeName);
+   Pmsg1(000, _("End of Volume \"%s\"\n"), dcr->VolumeName);
 
    if (LastBlock != block->BlockNumber) {
       VolBytes += block->block_len;
@@ -2685,7 +2734,7 @@ static bool my_mount_next_read_volume(DCR *dcr)
       now = 1;
    }
    kbs = (double)VolBytes / (1000.0 * (double)now);
-   Pmsg3(-1, "Read block=%u, VolBytes=%s rate=%.1f KB/s\n", block->BlockNumber,
+   Pmsg3(-1, _("Read block=%u, VolBytes=%s rate=%.1f KB/s\n"), block->BlockNumber,
             edit_uint64_with_commas(VolBytes, ec1), (float)kbs);
 
    if (strcmp(dcr->VolumeName, "TestVolume2") == 0) {
@@ -2700,7 +2749,7 @@ static bool my_mount_next_read_volume(DCR *dcr)
    close_device(dev);
    dev->clear_read();
    if (!acquire_device_for_read(dcr)) {
-      Pmsg2(0, "Cannot open Dev=%s, Vol=%s\n", dev->print_name(), dcr->VolumeName);
+      Pmsg2(0, _("Cannot open Dev=%s, Vol=%s\n"), dev->print_name(), dcr->VolumeName);
       return false;
    }
    return true;                    /* next volume mounted */
index 746ff744a98017f5968b9679e77fd7a04012c3aa..b7fcb2a5f8d56762aa6491f103a8f9849ecea48c 100644 (file)
@@ -43,19 +43,19 @@ char *rec_state_to_str(DEV_RECORD *rec)
    static char buf[200];
    buf[0] = 0;
    if (rec->state & REC_NO_HEADER) {
-      strcat(buf, "Nohdr,");
+      strcat(buf, _("Nohdr,"));
    }
    if (is_partial_record(rec)) {
-      strcat(buf, "partial,");
+      strcat(buf, _("partial,"));
    }
    if (rec->state & REC_BLOCK_EMPTY) {
-      strcat(buf, "empty,");
+      strcat(buf, _("empty,"));
    }
    if (rec->state & REC_NO_MATCH) {
-      strcat(buf, "Nomatch,");
+      strcat(buf, _("Nomatch,"));
    }
    if (rec->state & REC_CONTINUATION) {
-      strcat(buf, "cont,");
+      strcat(buf, _("cont,"));
    }
    if (buf[0]) {
       buf[strlen(buf)-1] = 0;
@@ -254,8 +254,12 @@ static DEVRES *find_device_res(char *device_name, int read_access)
             configfile);
       return NULL;
    }
-   Pmsg2(0, _("Using device: \"%s\" for %s.\n"), device_name,
-             read_access?"reading":"writing");
+   if (read_access) {
+      Pmsg1(0, _("Using device: \"%s\" for reading.\n"), device_name);
+   }
+   else {
+      Pmsg1(0, _("Using device: \"%s\" for writing.\n"), device_name);
+   }
    return device;
 }
 
index a8ea31197bf19226789a0b949d6b6d8e6f4cf149..6a7e2c23c27efcd6010e927690d47f7685408d76 100644 (file)
@@ -389,7 +389,7 @@ void DEVICE::open_tape_device(DCR *dcr, int omode)
          if ((oflags = fcntl(fd, F_GETFL, 0)) < 0 ||
              fcntl(fd, F_SETFL, oflags & ~O_NONBLOCK) < 0) {
             berrno be;
-            Jmsg1(dcr->jcr, M_ERROR, 0, "fcntl error. ERR=%s\n", be.strerror());
+            Jmsg1(dcr->jcr, M_ERROR, 0, _("fcntl error. ERR=%s\n"), be.strerror());
             ::close(fd);                   /* use system close() */
             fd = -1;
             break;
@@ -724,7 +724,7 @@ const char *DEVICE::print_blocked() const
    case BST_MOUNT:
       return "BST_MOUNT";
    default:
-      return "unknown blocked code";
+      return _("unknown blocked code");
    }
 }
 
@@ -933,7 +933,7 @@ bool update_pos_dev(DEVICE *dev)
       if (pos < 0) {
          berrno be;
          dev->dev_errno = errno;
-         Pmsg1(000, "Seek error: ERR=%s\n", be.strerror());
+         Pmsg1(000, _("Seek error: ERR=%s\n"), be.strerror());
          Mmsg2(dev->errmsg, _("lseek_dev error on %s. ERR=%s.\n"),
             dev->print_name(), be.strerror());
          ok = false;
@@ -969,8 +969,8 @@ uint32_t status_dev(DEVICE *dev)
    }
    if (dev->is_tape()) {
       stat |= BMT_TAPE;
-      Pmsg0(-20," Bacula status:");
-      Pmsg2(-20," file=%d block=%d\n", dev->file, dev->block_num);
+      Pmsg0(-20,_(" Bacula status:"));
+      Pmsg2(-20,_(" file=%d block=%d\n"), dev->file, dev->block_num);
       if (ioctl(dev->fd, MTIOCGET, (char *)&mt_stat) < 0) {
          berrno be;
          dev->dev_errno = errno;
@@ -978,7 +978,7 @@ uint32_t status_dev(DEVICE *dev)
             dev->print_name(), be.strerror());
          return 0;
       }
-      Pmsg0(-20, " Device status:");
+      Pmsg0(-20, _(" Device status:"));
 
 #if defined(HAVE_LINUX_OS)
       if (GMT_EOF(mt_stat.mt_gstat)) {
@@ -1019,9 +1019,9 @@ uint32_t status_dev(DEVICE *dev)
       }
 #endif /* !SunOS && !OSF */
       if (dev_cap(dev, CAP_MTIOCGET)) {
-         Pmsg2(-20, " file=%d block=%d\n", mt_stat.mt_fileno, mt_stat.mt_blkno);
+         Pmsg2(-20, _(" file=%d block=%d\n"), mt_stat.mt_fileno, mt_stat.mt_blkno);
       } else {
-         Pmsg2(-20, " file=%d block=%d\n", -1, -1);
+         Pmsg2(-20, _(" file=%d block=%d\n"), -1, -1);
       }
    } else {
       stat |= BMT_ONLINE | BMT_BOT;
@@ -1585,7 +1585,7 @@ clrerror_dev(DEVICE *dev, int func)
    if (errno == ENOTTY || errno == ENOSYS) { /* Function not implemented */
       switch (func) {
       case -1:
-         Emsg0(M_ABORT, 0, "Got ENOTTY on read/write!\n");
+         Emsg0(M_ABORT, 0, _("Got ENOTTY on read/write!\n"));
          break;
       case MTWEOF:
          msg = "WTWEOF";
@@ -1632,7 +1632,7 @@ clrerror_dev(DEVICE *dev, int func)
          break;
 #endif
       default:
-         bsnprintf(buf, sizeof(buf), "unknown func code %d", func);
+         bsnprintf(buf, sizeof(buf), _("unknown func code %d"), func);
          msg = buf;
          break;
       }
index 5b98bc8de789a786124041af2f08a643dc2b0bb0..5a59c9468831d0067b2fb56213162a0a117b481b 100644 (file)
@@ -128,7 +128,7 @@ bool fixup_device_block_write_error(DCR *dcr)
    Dmsg0(190, "write label block to dev\n");
    if (!write_block_to_dev(dcr)) {
       berrno be;
-      Pmsg1(0, "write_block_to_device Volume label failed. ERR=%s",
+      Pmsg1(0, _("write_block_to_device Volume label failed. ERR=%s"),
         be.strerror(dev->dev_errno));
       free_block(label_blk);
       dcr->block = block;
@@ -165,7 +165,7 @@ bool fixup_device_block_write_error(DCR *dcr)
    Dmsg0(190, "Write overflow block to dev\n");
    if (!write_block_to_dev(dcr)) {
       berrno be;
-      Pmsg1(0, "write_block_to_device overflow block failed. ERR=%s",
+      Pmsg1(0, _("write_block_to_device overflow block failed. ERR=%s"),
         be.strerror(dev->dev_errno));
       unblock_device(dev);
       return false;                /* device locked */
@@ -301,7 +301,7 @@ bool open_device(DCR *dcr)
       if ((!dev->poll) && (!dev->is_dvd())) {
          Jmsg2(dcr->jcr, M_FATAL, 0, _("Unable to open device %s: ERR=%s\n"),
             dev->print_name(), strerror_dev(dev));
-         Pmsg2(000, "Unable to open archive %s: ERR=%s\n"
+         Pmsg2(000, _("Unable to open archive %s: ERR=%s\n")
             dev->print_name(), strerror_dev(dev));
       }
       return false;
@@ -343,7 +343,7 @@ void dev_lock(DEVICE *dev)
 {
    int errstat;
    if ((errstat=rwl_writelock(&dev->lock))) {
-      Emsg1(M_ABORT, 0, "Device write lock failure. ERR=%s\n", strerror(errstat));
+      Emsg1(M_ABORT, 0, _("Device write lock failure. ERR=%s\n"), strerror(errstat));
    }
 }
 
@@ -351,7 +351,7 @@ void dev_unlock(DEVICE *dev)
 {
    int errstat;
    if ((errstat=rwl_writeunlock(&dev->lock))) {
-      Emsg1(M_ABORT, 0, "Device write unlock failure. ERR=%s\n", strerror(errstat));
+      Emsg1(M_ABORT, 0, _("Device write unlock failure. ERR=%s\n"), strerror(errstat));
    }
 }
 
index 993c3d10e604b195ca69ed0c4536ef49ca7a5739..9166d1fd6eb5471cda2b02bf37df7b56a9a091e5 100644 (file)
@@ -238,7 +238,7 @@ static bool setdebug_cmd(JCR *jcr)
 
    Dmsg1(10, "setdebug_cmd: %s", dir->msg);
    if (sscanf(dir->msg, "setdebug=%d trace=%d", &level, &trace_flag) != 2 || level < 0) {
-      bnet_fsend(dir, "3991 Bad setdebug command: %s\n", dir->msg);
+      bnet_fsend(dir, _("3991 Bad setdebug command: %s\n"), dir->msg);
       return 0;
    }
    debug_level = level;
@@ -631,7 +631,7 @@ static bool mount_cmd(JCR *jcr)
                   bnet_fsend(dir, _("3002 Device %s is mounted.\n"), 
                      dev->print_name());
                } else {
-                  bnet_fsend(dir, "3907 %s", strerror_dev(dev));
+                  bnet_fsend(dir, _("3907 %s"), strerror_dev(dev));
                } 
             } else { /* must be file */
                bnet_fsend(dir, _("3906 File device %s is always mounted.\n"),
index 2670b5cb68b4246e50131705a8850d0184380095..4e160712dd1ad506e5f5d39da75dc17fa634c836 100644 (file)
@@ -135,6 +135,7 @@ static bool do_mount_dev(DEVICE* dev, int mount, int dotimeout)
    /* If busy retry each second */
    while ((status = run_program_full_output(ocmd.c_str(), 
                        dev->max_open_wait/2, results)) != 0) {
+      /* Doesn't work with internationalisation (This is not a problem) */
       if (fnmatch("*is already mounted on", results, 0) == 0) {
          break;
       }
@@ -149,7 +150,7 @@ static bool do_mount_dev(DEVICE* dev, int mount, int dotimeout)
          continue;
       }
       Dmsg2(40, "Device %s cannot be mounted. ERR=%s\n", dev->print_name(), results);
-      Mmsg(dev->errmsg, "Device %s cannot be mounted. ERR=%s\n"
+      Mmsg(dev->errmsg, _("Device %s cannot be mounted. ERR=%s\n")
            dev->print_name(), results);
       /*
        * Now, just to be sure it is not mounted, try to read the
@@ -257,7 +258,7 @@ void update_free_space_dev(DEVICE* dev)
       }
       dev->free_space = 0;
       dev->free_space_errno = -EPIPE;
-      Mmsg1(dev->errmsg, "Cannot run free space command (%s)\n", results);
+      Mmsg1(dev->errmsg, _("Cannot run free space command (%s)\n"), results);
       
       if (--timeout > 0) {
          Dmsg4(40, "Cannot get free space on device %s. free_space=%s, "
@@ -318,7 +319,7 @@ static bool dvd_write_part(DCR *dcr)
    status = run_program_full_output(ocmd.c_str(), timeout, results.c_str());
    sm_check(__FILE__, __LINE__, false);
    if (status != 0) {
-      Mmsg1(dev->errmsg, "Error while writing current part to the DVD: %s"
+      Mmsg1(dev->errmsg, _("Error while writing current part to the DVD: %s")
             results.c_str());
       Dmsg1(000, "%s", dev->errmsg);
       dev->dev_errno = EIO;
index 5dd592256fe698af92ea85118736d0491cdd43e3..2ea2d341c037eeb8297cf09534bc6443e62e749f 100644 (file)
@@ -197,7 +197,7 @@ void handle_filed_connection(BSOCK *fd, char *job_name)
    Dmsg1(110, "Found Job %s\n", job_name);
 
    if (jcr->authenticated) {
-      Jmsg2(jcr, M_FATAL, 0, "Hey!!!! JobId %u Job %s already authenticated.\n",
+      Jmsg2(jcr, M_FATAL, 0, _("Hey!!!! JobId %u Job %s already authenticated.\n"),
          jcr->JobId, jcr->Job);
       free_jcr(jcr);
       return;
index d5319dffb5edc8bb819b71ea35aef53eb2bafceb..2ca577c680e3554aff7eac94e3093c7396e58463 100644 (file)
@@ -83,7 +83,7 @@ int read_dev_volume_label(DCR *dcr)
           *  => we are in a loop
           */
          if (!dev->poll && jcr->label_errors++ > 100) {
-            Jmsg(jcr, M_FATAL, 0, "Too many tries: %s", jcr->errmsg);
+            Jmsg(jcr, M_FATAL, 0, _("Too many tries: %s"), jcr->errmsg);
          }
          Dmsg0(100, "return VOL_NAME_ERROR\n");
          stat = VOL_NAME_ERROR;
@@ -120,7 +120,7 @@ int read_dev_volume_label(DCR *dcr)
          Mmsg(jcr->errmsg, _("Wrong Volume mounted on device %s: Wanted %s have %s\n"),
               dev->print_name(), VolName, dev->VolHdr.VolumeName);
          if (!dev->poll && jcr->label_errors++ > 100) {
-            Jmsg(jcr, M_FATAL, 0, "Too many tries: %s", jcr->errmsg);
+            Jmsg(jcr, M_FATAL, 0, _("Too many tries: %s"), jcr->errmsg);
          }
          goto bail_out;
       }
@@ -192,7 +192,7 @@ int read_dev_volume_label(DCR *dcr)
           dev->print_name(), dev->VolHdr.LabelType);
       Dmsg1(30, "%s", jcr->errmsg);
       if (!dev->poll && jcr->label_errors++ > 100) {
-         Jmsg(jcr, M_FATAL, 0, "Too many tries: %s", jcr->errmsg);
+         Jmsg(jcr, M_FATAL, 0, _("Too many tries: %s"), jcr->errmsg);
       }
       Dmsg0(100, "return VOL_LABEL_ERROR\n");
       stat = VOL_LABEL_ERROR;
@@ -831,11 +831,11 @@ void dump_volume_label(DEVICE *dev)
       goto bail_out;
    default:
       LabelType = buf;
-      sprintf(buf, "Unknown %d", dev->VolHdr.LabelType);
+      sprintf(buf, _("Unknown %d"), dev->VolHdr.LabelType);
       break;
    }
 
-   Pmsg11(-1, "\nVolume Label:\n"
+   Pmsg11(-1, _("\nVolume Label:\n"
 "Id                : %s"
 "VerNo             : %d\n"
 "VolName           : %s\n"
@@ -847,7 +847,7 @@ void dump_volume_label(DEVICE *dev)
 "MediaType         : %s\n"
 "PoolType          : %s\n"
 "HostName          : %s\n"
-"",
+""),
              dev->VolHdr.Id, dev->VolHdr.VerNum,
              dev->VolHdr.VolumeName, dev->VolHdr.PrevVolumeName,
              File, LabelType, dev->VolHdr.LabelSize,
@@ -857,13 +857,13 @@ void dump_volume_label(DEVICE *dev)
    if (dev->VolHdr.VerNum >= 11) {
       char dt[50];
       bstrftime(dt, sizeof(dt), btime_to_unix(dev->VolHdr.label_btime));
-      Pmsg1(-1, "Date label written: %s\n", dt);
+      Pmsg1(-1, _("Date label written: %s\n"), dt);
    } else {
    dt.julian_day_number   = dev->VolHdr.label_date;
    dt.julian_day_fraction = dev->VolHdr.label_time;
    tm_decode(&dt, &tm);
    Pmsg5(-1,
-"Date label written: %04d-%02d-%02d at %02d:%02d\n",
+_("Date label written: %04d-%02d-%02d at %02d:%02d\n"),
       tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday, tm.tm_hour, tm.tm_min);
    }
 
@@ -883,28 +883,28 @@ static void dump_session_label(DEV_RECORD *rec, const char *type)
    unser_session_label(&label, rec);
    dbl = debug_level;
    debug_level = 1;
-   Pmsg7(-1, "\n%s Record:\n"
+   Pmsg7(-1, _("\n%s Record:\n"
 "JobId             : %d\n"
 "VerNum            : %d\n"
 "PoolName          : %s\n"
 "PoolType          : %s\n"
 "JobName           : %s\n"
 "ClientName        : %s\n"
-"",    type, label.JobId, label.VerNum,
+""),    type, label.JobId, label.VerNum,
       label.PoolName, label.PoolType,
       label.JobName, label.ClientName);
 
    if (label.VerNum >= 10) {
-      Pmsg4(-1, ""
+      Pmsg4(-1, _(
 "Job (unique name) : %s\n"
 "FileSet           : %s\n"
 "JobType           : %c\n"
 "JobLevel          : %c\n"
-"", label.Job, label.FileSetName, label.JobType, label.JobLevel);
+""), label.Job, label.FileSetName, label.JobType, label.JobLevel);
    }
 
    if (rec->FileIndex == EOS_LABEL) {
-      Pmsg8(-1, ""
+      Pmsg8(-1, _(
 "JobFiles          : %s\n"
 "JobBytes          : %s\n"
 "StartBlock        : %s\n"
@@ -913,7 +913,7 @@ static void dump_session_label(DEV_RECORD *rec, const char *type)
 "EndFile           : %s\n"
 "JobErrors         : %s\n"
 "JobStatus         : %c\n"
-"",
+""),
          edit_uint64_with_commas(label.JobFiles, ec1),
          edit_uint64_with_commas(label.JobBytes, ec2),
          edit_uint64_with_commas(label.StartBlock, ec3),
@@ -931,8 +931,7 @@ static void dump_session_label(DEV_RECORD *rec, const char *type)
       dt.julian_day_number   = label.write_date;
       dt.julian_day_fraction = label.write_time;
       tm_decode(&dt, &tm);
-      Pmsg5(-1, _(""
-"Date written      : %04d-%02d-%02d at %02d:%02d\n"),
+      Pmsg5(-1, _("Date written      : %04d-%02d-%02d at %02d:%02d\n"),
       tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday, tm.tm_hour, tm.tm_min);
    }
 
@@ -966,7 +965,7 @@ void dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose)
       type = _("End of Media");
       break;
    case EOT_LABEL:
-      type = ("End of Tape");
+      type = _("End of Tape");
       break;
    default:
       type = _("Unknown");
@@ -986,7 +985,7 @@ void dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose)
          dump_session_label(rec, type);
          break;
       case EOM_LABEL:
-         Pmsg7(-1, "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n",
+         Pmsg7(-1, _("%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"),
             type, dev->file, dev->block_num, rec->VolSessionId, 
             rec->VolSessionTime, rec->Stream, rec->data_len);
          break;
@@ -994,7 +993,7 @@ void dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose)
          Pmsg0(-1, _("End of physical tape.\n"));
          break;
       default:
-         Pmsg7(-1, "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n",
+         Pmsg7(-1, _("%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"),
             type, dev->file, dev->block_num, rec->VolSessionId, 
             rec->VolSessionTime, rec->Stream, rec->data_len);
          break;
@@ -1006,18 +1005,18 @@ void dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose)
       case SOS_LABEL:
          unser_session_label(&label, rec);
          bstrftimes(dt, sizeof(dt), btime_to_unix(label.write_btime));
-         Pmsg6(-1, "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n",
+         Pmsg6(-1, _("%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"),
             type, dev->file, dev->block_num, rec->VolSessionId, rec->VolSessionTime, label.JobId);
-         Pmsg4(-1, "   Job=%s Date=%s Level=%c Type=%c\n",
+         Pmsg4(-1, _("   Job=%s Date=%s Level=%c Type=%c\n"),
             label.Job, dt, label.JobLevel, label.JobType);
          break;
       case EOS_LABEL:
          char ed1[30], ed2[30];
          unser_session_label(&label, rec);
          bstrftimes(dt, sizeof(dt), btime_to_unix(label.write_btime));
-         Pmsg6(-1, "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n",
+         Pmsg6(-1, _("%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"),
             type, dev->file, dev->block_num, rec->VolSessionId, rec->VolSessionTime, label.JobId);
-         Pmsg7(-1, "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n",
+         Pmsg7(-1, _("   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"),
             dt, label.JobLevel, label.JobType,
             edit_uint64_with_commas(label.JobFiles, ed1),
             edit_uint64_with_commas(label.JobBytes, ed2),
@@ -1027,7 +1026,7 @@ void dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose)
       case PRE_LABEL:
       case VOL_LABEL:
       default:
-         Pmsg7(-1, "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n",
+         Pmsg7(-1, _("%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"),
             type, dev->file, dev->block_num, rec->VolSessionId, rec->VolSessionTime, 
             rec->Stream, rec->data_len);
          break;
index abdb5ceb9e417642aef17c4679213691e97e7224..0ebd073a9bfe1c74586a3ab532fbbecba5a1a421 100644 (file)
@@ -443,7 +443,7 @@ void release_volume(DCR *dcr)
    JCR *jcr = dcr->jcr;
    DEVICE *dev = dcr->dev;
    if (dcr->WroteVol) {
-      Jmsg0(jcr, M_ERROR, 0, "Hey!!!!! WroteVol non-zero !!!!!\n");
+      Jmsg0(jcr, M_ERROR, 0, _("Hey!!!!! WroteVol non-zero !!!!!\n"));
       Dmsg0(190, "Hey!!!!! WroteVol non-zero !!!!!\n");
    }
    /*
@@ -490,7 +490,7 @@ bool mount_next_read_volume(DCR *dcr)
       close_device(dev);
       dev->clear_read();
       if (!acquire_device_for_read(dcr)) {
-         Jmsg2(jcr, M_FATAL, 0, "Cannot open Dev=%s, Vol=%s\n", dev->print_name(),
+         Jmsg2(jcr, M_FATAL, 0, _("Cannot open Dev=%s, Vol=%s\n"), dev->print_name(),
                dcr->VolumeName);
          return false;
       }
index 2b82cb80be4666c084c161824143a1bceecceab2..f5076ee584c9d769c6fbca360068802a54255648 100755 (executable)
@@ -413,7 +413,7 @@ static BSR *store_count(LEX *lc, BSR *bsr)
 static BSR *store_jobtype(LEX *lc, BSR *bsr)
 {
    /* *****FIXME****** */
-   Pmsg0(-1, "JobType not yet implemented\n");
+   Pmsg0(-1, _("JobType not yet implemented\n"));
    return bsr;
 }
 
@@ -421,7 +421,7 @@ static BSR *store_jobtype(LEX *lc, BSR *bsr)
 static BSR *store_joblevel(LEX *lc, BSR *bsr)
 {
    /* *****FIXME****** */
-   Pmsg0(-1, "JobLevel not yet implemented\n");
+   Pmsg0(-1, _("JobLevel not yet implemented\n"));
    return bsr;
 }
 
@@ -623,7 +623,7 @@ static BSR *store_exclude(LEX *lc, BSR *bsr)
 void dump_volfile(BSR_VOLFILE *volfile)
 {
    if (volfile) {
-      Pmsg2(-1, "VolFile     : %u-%u\n", volfile->sfile, volfile->efile);
+      Pmsg2(-1, _("VolFile     : %u-%u\n"), volfile->sfile, volfile->efile);
       dump_volfile(volfile->next);
    }
 }
@@ -631,7 +631,7 @@ void dump_volfile(BSR_VOLFILE *volfile)
 void dump_volblock(BSR_VOLBLOCK *volblock)
 {
    if (volblock) {
-      Pmsg2(-1, "VolBlock    : %u-%u\n", volblock->sblock, volblock->eblock);
+      Pmsg2(-1, _("VolBlock    : %u-%u\n"), volblock->sblock, volblock->eblock);
       dump_volblock(volblock->next);
    }
 }
@@ -641,9 +641,9 @@ void dump_findex(BSR_FINDEX *FileIndex)
 {
    if (FileIndex) {
       if (FileIndex->findex == FileIndex->findex2) {
-         Pmsg1(-1, "FileIndex   : %u\n", FileIndex->findex);
+         Pmsg1(-1, _("FileIndex   : %u\n"), FileIndex->findex);
       } else {
-         Pmsg2(-1, "FileIndex   : %u-%u\n", FileIndex->findex, FileIndex->findex2);
+         Pmsg2(-1, _("FileIndex   : %u-%u\n"), FileIndex->findex, FileIndex->findex2);
       }
       dump_findex(FileIndex->next);
    }
@@ -653,9 +653,9 @@ void dump_jobid(BSR_JOBID *jobid)
 {
    if (jobid) {
       if (jobid->JobId == jobid->JobId2) {
-         Pmsg1(-1, "JobId       : %u\n", jobid->JobId);
+         Pmsg1(-1, _("JobId       : %u\n"), jobid->JobId);
       } else {
-         Pmsg2(-1, "JobId       : %u-%u\n", jobid->JobId, jobid->JobId2);
+         Pmsg2(-1, _("JobId       : %u-%u\n"), jobid->JobId, jobid->JobId2);
       }
       dump_jobid(jobid->next);
    }
@@ -665,9 +665,9 @@ void dump_sessid(BSR_SESSID *sessid)
 {
    if (sessid) {
       if (sessid->sessid == sessid->sessid2) {
-         Pmsg1(-1, "SessId      : %u\n", sessid->sessid);
+         Pmsg1(-1, _("SessId      : %u\n"), sessid->sessid);
       } else {
-         Pmsg2(-1, "SessId      : %u-%u\n", sessid->sessid, sessid->sessid2);
+         Pmsg2(-1, _("SessId      : %u-%u\n"), sessid->sessid, sessid->sessid2);
       }
       dump_sessid(sessid->next);
    }
@@ -676,7 +676,7 @@ void dump_sessid(BSR_SESSID *sessid)
 void dump_volume(BSR_VOLUME *volume)
 {
    if (volume) {
-      Pmsg1(-1, "VolumeName  : %s\n", volume->VolumeName);
+      Pmsg1(-1, _("VolumeName  : %s\n"), volume->VolumeName);
       dump_volume(volume->next);
    }
 }
@@ -685,7 +685,7 @@ void dump_volume(BSR_VOLUME *volume)
 void dump_client(BSR_CLIENT *client)
 {
    if (client) {
-      Pmsg1(-1, "Client      : %s\n", client->ClientName);
+      Pmsg1(-1, _("Client      : %s\n"), client->ClientName);
       dump_client(client->next);
    }
 }
@@ -693,7 +693,7 @@ void dump_client(BSR_CLIENT *client)
 void dump_job(BSR_JOB *job)
 {
    if (job) {
-      Pmsg1(-1, "Job          : %s\n", job->Job);
+      Pmsg1(-1, _("Job          : %s\n"), job->Job);
       dump_job(job->next);
    }
 }
@@ -701,7 +701,7 @@ void dump_job(BSR_JOB *job)
 void dump_sesstime(BSR_SESSTIME *sesstime)
 {
    if (sesstime) {
-      Pmsg1(-1, "SessTime    : %u\n", sesstime->sesstime);
+      Pmsg1(-1, _("SessTime    : %u\n"), sesstime->sesstime);
       dump_sesstime(sesstime->next);
    }
 }
@@ -715,12 +715,12 @@ void dump_bsr(BSR *bsr, bool recurse)
    int save_debug = debug_level;
    debug_level = 1;
    if (!bsr) {
-      Pmsg0(-1, "BSR is NULL\n");
+      Pmsg0(-1, _("BSR is NULL\n"));
       debug_level = save_debug;
       return;
    }
-   Pmsg1(-1,    "Next        : 0x%x\n", bsr->next);
-   Pmsg1(-1,    "Root bsr    : 0x%x\n", bsr->root);
+   Pmsg1(-1,    _("Next        : 0x%x\n"), bsr->next);
+   Pmsg1(-1,    _("Root bsr    : 0x%x\n"), bsr->root);
    dump_volume(bsr->volume);
    dump_sessid(bsr->sessid);
    dump_sesstime(bsr->sesstime);
@@ -731,16 +731,16 @@ void dump_bsr(BSR *bsr, bool recurse)
    dump_job(bsr->job);
    dump_findex(bsr->FileIndex);
    if (bsr->Slot) {
-      Pmsg1(-1, "Slot        : %u\n", bsr->Slot);
+      Pmsg1(-1, _("Slot        : %u\n"), bsr->Slot);
    }
    if (bsr->count) {
-      Pmsg1(-1, "count       : %u\n", bsr->count);
-      Pmsg1(-1, "found       : %u\n", bsr->found);
+      Pmsg1(-1, _("count       : %u\n"), bsr->count);
+      Pmsg1(-1, _("found       : %u\n"), bsr->found);
    }
 
-   Pmsg1(-1,    "done        : %s\n", bsr->done?"yes":"no");
-   Pmsg1(-1,    "positioning : %d\n", bsr->use_positioning);
-   Pmsg1(-1,    "fast_reject : %d\n", bsr->use_fast_rejection);
+   Pmsg1(-1,    _("done        : %s\n"), bsr->done?_("yes"):_("no"));
+   Pmsg1(-1,    _("positioning : %d\n"), bsr->use_positioning);
+   Pmsg1(-1,    _("fast_reject : %d\n"), bsr->use_fast_rejection);
    if (recurse && bsr->next) {
       Pmsg0(-1, "\n");
       dump_bsr(bsr->next, true);
index 40b21880e6818fbc583b885ed825b8113b66e1e2..7b1cffdb4ca7920b4d89d8d9d7ce38926a2abdc9 100644 (file)
@@ -92,7 +92,7 @@ PyObject *job_getattr(PyObject *self, char *attrname)
    Dmsg1(100, "In job_getattr=%s\n", attrname);
    jcr = get_jcr_from_PyObject(self);
    if (!jcr) {
-      bstrncpy(errmsg, "Job pointer not found.", sizeof(errmsg));
+      bstrncpy(errmsg, _("Job pointer not found."), sizeof(errmsg));
       goto bail_out;
    }
 
@@ -134,7 +134,7 @@ PyObject *job_getattr(PyObject *self, char *attrname)
    case 11:
       return Py_BuildValue(getvars[i].fmt, jcr->dcr->dev_name);
    }
-   bsnprintf(errmsg, sizeof(errmsg), "Attribute %s not found.", attrname);
+   bsnprintf(errmsg, sizeof(errmsg), _("Attribute %s not found."), attrname);
 bail_out:
    PyErr_SetString(PyExc_AttributeError, errmsg);
    return NULL;
@@ -151,13 +151,13 @@ int job_setattr(PyObject *self, char *attrname, PyObject *value)
 
    Dmsg2(100, "In job_setattr=%s val=%p.\n", attrname, value);
    if (value == NULL) {                /* Cannot delete variables */
-      bsnprintf(buf, sizeof(buf), "Cannot delete attribute %s", attrname);
+      bsnprintf(buf, sizeof(buf), _("Cannot delete attribute %s"), attrname);
       errmsg = buf;
       goto bail_out;
    }
    jcr = get_jcr_from_PyObject(self);
    if (!jcr) {
-      errmsg = "Job pointer not found.";
+      errmsg = _("Job pointer not found.");
       goto bail_out;
    }
 
@@ -174,7 +174,7 @@ int job_setattr(PyObject *self, char *attrname, PyObject *value)
    /* Get argument value ***FIXME*** handle other formats */
    if (setvars[i].fmt != NULL) {
       if (!PyArg_Parse(value, setvars[i].fmt, &strval)) {
-         PyErr_SetString(PyExc_TypeError, "Read-only attribute");
+         PyErr_SetString(PyExc_TypeError, _("Read-only attribute"));
          return -1;
       }
    }   
@@ -184,7 +184,7 @@ int job_setattr(PyObject *self, char *attrname, PyObject *value)
       return 0;
    }
 not_found:
-   bsnprintf(buf, sizeof(buf), "Cannot find attribute %s", attrname);
+   bsnprintf(buf, sizeof(buf), _("Cannot find attribute %s"), attrname);
    errmsg = buf;
 bail_out:
    PyErr_SetString(PyExc_AttributeError, errmsg);
@@ -199,7 +199,7 @@ static PyObject *set_job_events(PyObject *self, PyObject *arg)
 
    Dmsg0(100, "In set_job_events.\n");
    if (!PyArg_ParseTuple(arg, "O:set_events", &eObject)) {
-      Dmsg0(000, "Error in ParseTuple\n");
+      Dmsg0(000, _("Error in ParseTuple\n"));
       return NULL;
    }
    jcr = get_jcr_from_PyObject(self);
@@ -215,7 +215,7 @@ static PyObject *job_write(PyObject *self, PyObject *args)
    char *text = NULL;
 
    if (!PyArg_ParseTuple(args, "s:write", &text)) {
-      Dmsg0(000, "Parse tuple error in job_write\n");
+      Dmsg0(000, _("Parse tuple error in job_write\n"));
       return NULL;
    }
    if (text) {
@@ -251,7 +251,7 @@ int generate_job_event(JCR *jcr, const char *event)
    if (result == NULL) {
       if (PyErr_Occurred()) {
          PyErr_Print();
-         Dmsg1(000, "Error in Python method %s\n", event);
+         Dmsg1(000, _("Error in Python method %s\n"), event);
       }
    } else {
       stat = 1;
index 45b4dd5ccaec6232b638cd70625e4e29555f33c7..6becec33771c3103425a0a03a1ce14d6c60a2b6b 100644 (file)
@@ -106,7 +106,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
    /* Send record header to File daemon */
    if (!bnet_fsend(fd, rec_header, rec->VolSessionId, rec->VolSessionTime,
           rec->FileIndex, rec->Stream, rec->data_len)) {
-      Pmsg1(000, ">filed: Error Hdr=%s\n", fd->msg);
+      Pmsg1(000, _(">filed: Error Hdr=%s\n"), fd->msg);
       Jmsg1(jcr, M_FATAL, 0, _("Error sending to File daemon. ERR=%s\n"),
          bnet_strerror(fd));
       return false;
@@ -121,7 +121,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
    fd->msglen = rec->data_len;
    Dmsg1(400, ">filed: send %d bytes data.\n", fd->msglen);
    if (!bnet_send(fd)) {
-      Pmsg1(000, "Error sending to FD. ERR=%s\n", bnet_strerror(fd));
+      Pmsg1(000, _("Error sending to FD. ERR=%s\n"), bnet_strerror(fd));
       Jmsg1(jcr, M_FATAL, 0, _("Error sending to File daemon. ERR=%s\n"),
          bnet_strerror(fd));
 
index 42056dde1832a083cec8236339c62d354f0e400e..c17be35dceb75bf4c49ace0ae4696b0ddd8a5fc1 100644 (file)
@@ -65,10 +65,10 @@ bool read_records(DCR *dcr,
       if (!read_block_from_device(dcr, CHECK_BLOCK_NUMBERS)) {
          if (dev->at_eot()) {
             DEV_RECORD *trec = new_record();
-            Jmsg(jcr, M_INFO, 0, "End of Volume at file %u on device %s, Volume \"%s\"\n",
+            Jmsg(jcr, M_INFO, 0, _("End of Volume at file %u on device %s, Volume \"%s\"\n"),
                  dev->file, dev->print_name(), dcr->VolumeName);
             if (!mount_cb(dcr)) {
-               Jmsg(jcr, M_INFO, 0, "End of all volumes.\n");
+               Jmsg(jcr, M_INFO, 0, _("End of all volumes.\n"));
                ok = false;            /* Stop everything */
                /*
                 * Create EOT Label so that Media record may
@@ -102,7 +102,7 @@ bool read_records(DCR *dcr,
 
          } else if (dev->at_eof()) {
             if (verbose) {
-               Jmsg(jcr, M_INFO, 0, "Got EOF at file %u  on device %s, Volume \"%s\"\n",
+               Jmsg(jcr, M_INFO, 0, _("Got EOF at file %u  on device %s, Volume \"%s\"\n"),
                   dev->file, dev->print_name(), dcr->VolumeName);
             }
             Dmsg3(200, "Got EOF at file %u  on device %s, Volume \"%s\"\n",
@@ -116,7 +116,7 @@ bool read_records(DCR *dcr,
             display_tape_error_status(jcr, dev);
             if (forge_on || jcr->ignore_label_errors) {
                dev->fsr(1);       /* try skipping bad record */
-               Pmsg0(000, "Did fsr\n");
+               Pmsg0(000, _("Did fsr\n"));
                continue;              /* try to continue */
             }
             ok = false;               /* stop everything */
@@ -272,7 +272,7 @@ static bool try_repositioning(JCR *jcr, DEV_RECORD *rec, DEVICE *dev)
    }
    if (bsr) {
       if (verbose) {
-         Jmsg(jcr, M_INFO, 0, "Reposition from (file:block) %u:%u to %u:%u\n",
+         Jmsg(jcr, M_INFO, 0, _("Reposition from (file:block) %u:%u to %u:%u\n"),
             dev->file, dev->block_num, bsr->volfile->sfile,
             bsr->volblock->sblock);
       }
@@ -318,28 +318,28 @@ static void handle_session_record(DEVICE *dev, DEV_RECORD *rec, SESSION_LABEL *s
    memset(sessrec, 0, sizeof(sessrec));
    switch (rec->FileIndex) {
    case PRE_LABEL:
-      rtype = "Fresh Volume Label";
+      rtype = _("Fresh Volume Label");
       break;
    case VOL_LABEL:
-      rtype = "Volume Label";
+      rtype = _("Volume Label");
       unser_volume_label(dev, rec);
       break;
    case SOS_LABEL:
-      rtype = "Begin Session";
+      rtype = _("Begin Session");
       unser_session_label(sessrec, rec);
       break;
    case EOS_LABEL:
-      rtype = "End Session";
+      rtype = _("End Session");
       break;
    case EOM_LABEL:
-      rtype = "End of Media";
+      rtype = _("End of Media");
       break;
    default:
-      bsnprintf(buf, sizeof(buf), "Unknown code %d\n", rec->FileIndex);
+      bsnprintf(buf, sizeof(buf), _("Unknown code %d\n"), rec->FileIndex);
       rtype = buf;
       break;
    }
-   Dmsg5(300, "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n",
+   Dmsg5(300, _("%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"),
          rtype, rec->VolSessionId, rec->VolSessionTime, rec->Stream, rec->data_len);
 }
 
index 2849134292ee53ccee8696666f73104fa497a6f8..45329a8444d914d635bb4ee844218c56cd2b3a93 100644 (file)
@@ -58,7 +58,7 @@ const char *FI_to_ascii(int fi)
       return "EOT_LABEL";
       break;
    default:
-     sprintf(buf, "unknown: %d", fi);
+     sprintf(buf, _("unknown: %d"), fi);
      return buf;
    }
 }
@@ -329,7 +329,7 @@ bool write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec)
             Dmsg2(0, "Damaged block: buf=%x binbuffrombuf=%d \n",
                block->buf, block->bufp-block->buf);
 
-               Emsg0(M_ABORT, 0, "Damaged buffer\n");
+               Emsg0(M_ABORT, 0, _("Damaged buffer\n"));
          }
 #endif
 
index 610093cbbf0acba8e3de4a2af96c7296d4cbaa59..62ea51375c7259c03171d01278ea989c9871ba8d 100644 (file)
@@ -707,7 +707,7 @@ static int can_reserve_drive(DCR *dcr, bool PreferMountedVols)
          return 0;                    /* wait */
       }
    } else {
-      Pmsg0(000, "Logic error!!!! Should not get here.\n");
+      Pmsg0(000, _("Logic error!!!! Should not get here.\n"));
       Jmsg0(jcr, M_FATAL, 0, _("Logic error!!!! Should not get here.\n"));
       return -1;                      /* error, should not get here */
    }
index bf6925b2f82ce383f38efc9563f41faf80912344..610c0f33bf8e1dc042f8e7d8b7110edc36453e99 100644 (file)
@@ -66,13 +66,13 @@ void list_spool_stats(BSOCK *bs)
 {
    char ed1[30], ed2[30];
    if (spool_stats.data_jobs || spool_stats.max_data_size) {
-      bnet_fsend(bs, "Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n",
+      bnet_fsend(bs, _("Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"),
          spool_stats.data_jobs, edit_uint64_with_commas(spool_stats.data_size, ed1),
          spool_stats.total_data_jobs,
          edit_uint64_with_commas(spool_stats.max_data_size, ed2));
    }
    if (spool_stats.attr_jobs || spool_stats.max_attr_size) {
-      bnet_fsend(bs, "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n",
+      bnet_fsend(bs, _("Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"),
          spool_stats.attr_jobs, edit_uint64_with_commas(spool_stats.attr_size, ed1),
          spool_stats.total_attr_jobs,
          edit_uint64_with_commas(spool_stats.max_attr_size, ed2));
@@ -114,7 +114,7 @@ bool commit_data_spool(DCR *dcr)
       Dmsg0(100, "Committing spooled data\n");
       stat = despool_data(dcr, true /*commit*/);
       if (!stat) {
-         Pmsg1(000, "Bad return from despool WroteVol=%d\n", dcr->WroteVol);
+         Pmsg1(000, _("Bad return from despool WroteVol=%d\n"), dcr->WroteVol);
          close_data_spool_file(dcr);
          return false;
       }
@@ -195,9 +195,14 @@ static bool despool_data(DCR *dcr, bool commit)
    char ec1[50];
 
    Dmsg0(100, "Despooling data\n");
-   Jmsg(jcr, M_INFO, 0, _("%s spooled data to Volume. Despooling %s bytes ...\n"),
-        commit?"Committing":"Writing",
-        edit_uint64_with_commas(jcr->dcr->job_spool_size, ec1));
+   if (commit) {
+      Jmsg(jcr, M_INFO, 0, _("Committing spooled data to Volume. Despooling %s bytes ...\n"),
+         edit_uint64_with_commas(jcr->dcr->job_spool_size, ec1));
+   }
+   else {
+      Jmsg(jcr, M_INFO, 0, _("Writing spooled data to Volume. Despooling %s bytes ...\n"),
+         edit_uint64_with_commas(jcr->dcr->job_spool_size, ec1));
+   }
    dcr->spooling = false;
    lock_device(dcr->dev);
    dcr->dev_locked = true;
@@ -251,7 +256,7 @@ static bool despool_data(DCR *dcr, bool commit)
       berrno be;
       Jmsg(dcr->jcr, M_ERROR, 0, _("Ftruncate spool file failed: ERR=%s\n"),
          be.strerror());
-      Pmsg1(000, "Bad return from ftruncate. ERR=%s\n", be.strerror());
+      Pmsg1(000, _("Bad return from ftruncate. ERR=%s\n"), be.strerror());
       ok = false;
    }
 
@@ -303,20 +308,20 @@ static int read_block_from_spool_file(DCR *dcr)
          Jmsg(dcr->jcr, M_FATAL, 0, _("Spool header read error. ERR=%s\n"),
               be.strerror());
       } else {
-         Pmsg2(000, "Spool read error. Wanted %u bytes, got %d\n", rlen, stat);
+         Pmsg2(000, _("Spool read error. Wanted %u bytes, got %d\n"), rlen, stat);
          Jmsg2(dcr->jcr, M_FATAL, 0, _("Spool header read error. Wanted %u bytes, got %d\n"), rlen, stat);
       }
       return RB_ERROR;
    }
    rlen = hdr.len;
    if (rlen > block->buf_len) {
-      Pmsg2(000, "Spool block too big. Max %u bytes, got %u\n", block->buf_len, rlen);
+      Pmsg2(000, _("Spool block too big. Max %u bytes, got %u\n"), block->buf_len, rlen);
       Jmsg2(dcr->jcr, M_FATAL, 0, _("Spool block too big. Max %u bytes, got %u\n"), block->buf_len, rlen);
       return RB_ERROR;
    }
    stat = read(dcr->spool_fd, (char *)block->buf, (size_t)rlen);
    if (stat != (ssize_t)rlen) {
-      Pmsg2(000, "Spool data read error. Wanted %u bytes, got %d\n", rlen, stat);
+      Pmsg2(000, _("Spool data read error. Wanted %u bytes, got %d\n"), rlen, stat);
       Jmsg2(dcr->jcr, M_FATAL, 0, _("Spool data read error. Wanted %u bytes, got %d\n"), rlen, stat);
       return RB_ERROR;
    }
@@ -376,7 +381,7 @@ bool write_block_to_spool_file(DCR *dcr)
 #endif
       Jmsg(dcr->jcr, M_INFO, 0, _("User specified spool size reached.\n"));
       if (!despool_data(dcr, false)) {
-         Pmsg0(000, "Bad return from despool in write_block.\n");
+         Pmsg0(000, _("Bad return from despool in write_block.\n"));
          return false;
       }
       /* Despooling cleared these variables so reset them */
index 9579d926c563eb3dd5764cc12b3abed9feee3ae6..7b7d3428996b9977dc16fdfc1d8c61a7d3cba72c 100644 (file)
@@ -63,11 +63,15 @@ bool status_cmd(JCR *jcr)
    char b1[30], b2[30], b3[30];
    int bpb;
 
-   bnet_fsend(user, "\n%s Version: " VERSION " (" BDATE ") %s %s %s\n", my_name,
-              HOST_OS, DISTNAME, DISTVER);
+   bnet_fsend(user, _("\n%s Version: %s (%s) %s %s %s\n"), my_name,
+              VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
    bstrftime_nc(dt, sizeof(dt), daemon_start_time);
-   bnet_fsend(user, _("Daemon started %s, %d Job%s run since started.\n"), dt, num_jobs_run,
-        num_jobs_run == 1 ? "" : "s");
+   if (num_jobs_run == 1) {
+      bnet_fsend(user, _("Daemon started %s, 1 Job run since started.\n"), dt);
+   }
+   else {
+      bnet_fsend(user, _("Daemon started %s, %d Jobs run since started.\n"), dt, num_jobs_run);
+   }
    if (debug_level > 0) {
       char b1[35], b2[35], b3[35], b4[35];
       bnet_fsend(user, _(" Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
@@ -151,17 +155,17 @@ bool status_cmd(JCR *jcr)
          send_blocked_status(jcr, dev);
       }
    }
-   bnet_fsend(user, "====\n\n");
-   bnet_fsend(user, "Volume status:\n");
+   bnet_fsend(user, _("====\n\n"));
+   bnet_fsend(user, _("Volume status:\n"));
    list_volumes(user);
        
 
 #ifdef xxx
    if (debug_level > 0) {
-      bnet_fsend(user, "====\n\n");
+      bnet_fsend(user, _("====\n\n"));
       dump_resource(R_DEVICE, resources[R_DEVICE-r_first].res_head, sendit, user);
    }
-   bnet_fsend(user, "====\n\n");
+   bnet_fsend(user, _("====\n\n"));
 #endif
 
    list_spool_stats(user);
@@ -176,7 +180,7 @@ static void send_blocked_status(JCR *jcr, DEVICE *dev)
    DCR *dcr = jcr->dcr;
 
    if (!dev) {
-      bnet_fsend(user, "No DEVICE structure.\n\n");
+      bnet_fsend(user, _("No DEVICE structure.\n\n"));
       return;
    }
    switch (dev->dev_blocked) {
@@ -242,14 +246,14 @@ static void send_blocked_status(JCR *jcr, DEVICE *dev)
       bnet_fsend(user, "%sSHORT ", dev->state & ST_SHORT ? "" : "!");
       bnet_fsend(user, "%sMOUNTED ", dev->state & ST_MOUNTED ? "" : "!");
       bnet_fsend(user, "\n");
-      bnet_fsend(user, "num_writers=%d JobStatus=%c block=%d\n\n", dev->num_writers,
+      bnet_fsend(user, _("num_writers=%d JobStatus=%c block=%d\n\n"), dev->num_writers,
          jcr->JobStatus, dev->dev_blocked);
 
       bnet_fsend(user, _("Device parameters:\n"));
-      bnet_fsend(user, "Archive name: %s Device name: %s\n", dev->archive_name(),
+      bnet_fsend(user, _("Archive name: %s Device name: %s\n"), dev->archive_name(),
          dev->name());
-      bnet_fsend(user, "File=%u block=%u\n", dev->file, dev->block_num);
-      bnet_fsend(user, "Min block=%u Max block=%u\n", dev->min_block_size, dev->max_block_size);
+      bnet_fsend(user, _("File=%u block=%u\n"), dev->file, dev->block_num);
+      bnet_fsend(user, _("Min block=%u Max block=%u\n"), dev->min_block_size, dev->max_block_size);
    }
 
 }
@@ -296,12 +300,12 @@ static void list_running_jobs(BSOCK *user)
          found = true;
 #ifdef DEBUG
          if (jcr->file_bsock) {
-            bnet_fsend(user, "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n",
+            bnet_fsend(user, _("    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"),
                edit_uint64_with_commas(jcr->file_bsock->read_seqno, b1),
                jcr->file_bsock->in_msg_no, jcr->file_bsock->out_msg_no,
                jcr->file_bsock->fd);
          } else {
-            bnet_fsend(user, "    FDSocket closed\n");
+            bnet_fsend(user, _("    FDSocket closed\n"));
          }
 #endif
       }
@@ -310,7 +314,7 @@ static void list_running_jobs(BSOCK *user)
    if (!found) {
       bnet_fsend(user, _("No Jobs running.\n"));
    }
-   bnet_fsend(user, "====\n");
+   bnet_fsend(user, _("====\n"));
 }
 
 static void list_terminated_jobs(void *arg)
@@ -350,23 +354,23 @@ static void list_terminated_jobs(void *arg)
       }
       switch (je->JobStatus) {
       case JS_Created:
-         termstat = "Created";
+         termstat = _("Created");
          break;
       case JS_FatalError:
       case JS_ErrorTerminated:
-         termstat = "Error";
+         termstat = _("Error");
          break;
       case JS_Differences:
-         termstat = "Diffs";
+         termstat = _("Diffs");
          break;
       case JS_Canceled:
-         termstat = "Cancel";
+         termstat = _("Cancel");
          break;
       case JS_Terminated:
-         termstat = "OK";
+         termstat = _("OK");
          break;
       default:
-         termstat = "Other";
+         termstat = _("Other");
          break;
       }
       bstrncpy(JobName, je->Job, sizeof(JobName));
@@ -386,7 +390,7 @@ static void list_terminated_jobs(void *arg)
          dt, JobName);
       sendit(buf, strlen(buf), arg);
    }
-   sendit("====\n", 5, arg);
+   sendit(_("====\n"), 5, arg);
    unlock_last_jobs_list();
 }
 
@@ -462,7 +466,7 @@ bool qstatus_cmd(JCR *jcr)
    if (sscanf(dir->msg, qstatus, time.c_str()) != 1) {
       pm_strcpy(jcr->errmsg, dir->msg);
       Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
-      bnet_fsend(dir, "3900 Bad .status command, missing argument.\n");
+      bnet_fsend(dir, _("3900 Bad .status command, missing argument.\n"));
       bnet_sig(dir, BNET_EOD);
       return false;
    }
@@ -487,7 +491,7 @@ bool qstatus_cmd(JCR *jcr)
    else {
       pm_strcpy(jcr->errmsg, dir->msg);
       Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
-      bnet_fsend(dir, "3900 Bad .status command, wrong argument.\n");
+      bnet_fsend(dir, _("3900 Bad .status command, wrong argument.\n"));
       bnet_sig(dir, BNET_EOD);
       return false;
    }
index 4171439121395a637e4d548f084d50d7371200f4..b526c581cf2051291d8cd7c3b80b33cce4ffad65 100644 (file)
@@ -63,7 +63,7 @@ static void usage()
 {
    fprintf(stderr, _(
 "Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\nVersion: " VERSION " (" BDATE ")\n\n"
+"\nVersion: %s (%s)\n\n"
 "Usage: stored [options] [-c config_file] [config_file]\n"
 "        -c <file>   use <file> as configuration file\n"
 "        -dnn        set debug level to nn\n"
@@ -75,7 +75,7 @@ static void usage()
 "        -u <user>   userid to <user>\n"
 "        -v          verbose user messages\n"
 "        -?          print this message.\n"
-"\n"));
+"\n"), VERSION, BDATE);
    exit(1);
 }
 
@@ -93,19 +93,22 @@ int main (int argc, char *argv[])
    char *uid = NULL;
    char *gid = NULL;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    init_stack_dump();
    my_name_is(argc, argv, "bacula-sd");
-   textdomain("bacula");
    init_msg(NULL, NULL);
    daemon_start_time = time(NULL);
 
    /* Sanity checks */
    if (TAPE_BSIZE % B_DEV_BSIZE != 0 || TAPE_BSIZE / B_DEV_BSIZE == 0) {
-      Emsg2(M_ABORT, 0, "Tape block size (%d) not multiple of system size (%d)\n",
+      Emsg2(M_ABORT, 0, _("Tape block size (%d) not multiple of system size (%d)\n"),
          TAPE_BSIZE, B_DEV_BSIZE);
    }
    if (TAPE_BSIZE != (1 << (ffs(TAPE_BSIZE)-1))) {
-      Emsg1(M_ABORT, 0, "Tape block size (%d) is not a power of 2\n", TAPE_BSIZE);
+      Emsg1(M_ABORT, 0, _("Tape block size (%d) is not a power of 2\n"), TAPE_BSIZE);
    }
 
    while ((ch = getopt(argc, argv, "c:d:fg:pstu:v?")) != -1) {
index 5ea530146f9a91e9458ea1b42ac5d5eff256615e..361337bb11f7cb9eaab44fe5e002e0dfc2706144 100644 (file)
@@ -188,7 +188,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
       sendit(sock, _("Warning: no \"%s\" resource (%d) defined.\n"), res_to_str(type), type);
       return;
    }
-   sendit(sock, "dump_resource type=%d\n", type);
+   sendit(sock, _("dump_resource type=%d\n"), type);
    if (type < 0) {                    /* no recursion */
       type = - type;
       recurse = 0;
@@ -464,7 +464,7 @@ void free_resource(RES *sres, int type)
       res = NULL;
       break;
    default:
-      Dmsg1(0, "Unknown resource type %d\n", type);
+      Dmsg1(0, _("Unknown resource type %d\n"), type);
       break;
    }
    /* Common stuff again -- free the resource, recurse to next one */
@@ -520,20 +520,20 @@ void save_resource(int type, RES_ITEM *items, int pass)
       /* Resources containing a resource or an alist */
       case R_DIRECTOR:
          if ((res = (URES *)GetResWithName(R_DIRECTOR, res_all.res_dir.hdr.name)) == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Cannot find Director resource \"%s\"\n", res_all.res_dir.hdr.name);
+            Emsg1(M_ERROR_TERM, 0, _("Cannot find Director resource %s\n"), res_all.res_dir.hdr.name);
          }
          res->res_dir.tls_allowed_cns = res_all.res_dir.tls_allowed_cns;
          break;
       case R_STORAGE:
          if ((res = (URES *)GetResWithName(R_STORAGE, res_all.res_dir.hdr.name)) == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Cannot find Storage resource \"%s\"\n", res_all.res_dir.hdr.name);
+            Emsg1(M_ERROR_TERM, 0, _("Cannot find Storage resource %s\n"), res_all.res_dir.hdr.name);
          }
          res->res_store.messages = res_all.res_store.messages;
          res->res_store.tls_allowed_cns = res_all.res_store.tls_allowed_cns;
          break;
       case R_AUTOCHANGER:
          if ((res = (URES *)GetResWithName(type, res_all.res_changer.hdr.name)) == NULL) {
-            Emsg1(M_ERROR_TERM, 0, "Cannot find AutoChanger resource %s\n",
+            Emsg1(M_ERROR_TERM, 0, _("Cannot find AutoChanger resource %s\n"),
                   res_all.res_changer.hdr.name);
          }
          /* we must explicitly copy the device alist pointer */
@@ -552,7 +552,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
          }
          break;
       default:
-         printf("Unknown resource type %d\n", type);
+         printf(_("Unknown resource type %d\n"), type);
          error = 1;
          break;
       }
@@ -587,7 +587,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
          size = sizeof(AUTOCHANGER);
          break;
       default:
-         printf("Unknown resource type %d\n", type);
+         printf(_("Unknown resource type %d\n"), type);
          error = 1;
          size = 1;
          break;
index bc83bd4f59ab46a4dee2bc336618c49eb9671239..ab6883db736c914bb0fc37687b740159a84d315c 100644 (file)
@@ -82,7 +82,7 @@ static void get_response(void)
         }
         Dmsg2(10, "%s --> %s\n", mailhost, buf);
         if (!isdigit((int)buf[0]) || buf[0] > '3') {
-            Pmsg2(0, "Fatal malformed reply from %s: %s\n", mailhost, buf);
+            Pmsg2(0, _("Fatal malformed reply from %s: %s\n"), mailhost, buf);
             exit(1);
         }
         if (buf[3] != '-') {
@@ -118,7 +118,7 @@ static void chat(const char *fmt, ...)
 static void usage()
 {
    fprintf(stderr,
-"\n"
+_("\n"
 "Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
 "       -c          set the Cc: field\n"
 "       -dnn        set debug level to nn\n"
@@ -126,7 +126,7 @@ static void usage()
 "       -h          use mailhost:port as the SMTP server\n"
 "       -s          set the Subject: field\n"
 "       -?          print this message.\n"
-"\n", MY_NAME);
+"\n"), MY_NAME);
 
    exit(1);
 }
@@ -146,6 +146,10 @@ int main (int argc, char *argv[])
     char *cp, *p;
     time_t now = time(NULL);
     struct tm tm;
+    
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
 
    my_name_is(argc, argv, "bsmtp");
 
@@ -197,7 +201,7 @@ int main (int argc, char *argv[])
    argv += optind;
 
    if (argc < 1) {
-      Pmsg0(0, "Fatal error: no recipient given.\n");
+      Pmsg0(0, _("Fatal error: no recipient given.\n"));
       usage();
       exit(1);
    }
@@ -218,11 +222,11 @@ int main (int argc, char *argv[])
     *  if possible, get the fully qualified domain name
     */
    if (gethostname(my_hostname, sizeof(my_hostname) - 1) < 0) {
-      Pmsg1(0, "Fatal gethostname error: ERR=%s\n", strerror(errno));
+      Pmsg1(0, _("Fatal gethostname error: ERR=%s\n"), strerror(errno));
       exit(1);
    }
    if ((hp = gethostbyname(my_hostname)) == NULL) {
-      Pmsg2(0, "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n", my_hostname,
+      Pmsg2(0, _("Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"), my_hostname,
          strerror(errno));
       exit(1);
    }
@@ -247,10 +251,10 @@ int main (int argc, char *argv[])
     */
 hp:
    if ((hp = gethostbyname(mailhost)) == NULL) {
-      Pmsg2(0, "Error unknown mail host \"%s\": ERR=%s\n", mailhost,
+      Pmsg2(0, _("Error unknown mail host \"%s\": ERR=%s\n"), mailhost,
          strerror(errno));
       if (strcasecmp(mailhost, "localhost") != 0) {
-         Pmsg0(0, "Retrying connection using \"localhost\".\n");
+         Pmsg0(0, _("Retrying connection using \"localhost\".\n"));
          mailhost = "localhost";
          goto hp;
       }
@@ -258,7 +262,7 @@ hp:
    }
 
    if (hp->h_addrtype != AF_INET) {
-      Pmsg1(0, "Fatal error: Unknown address family for smtp host: %d\n", hp->h_addrtype);
+      Pmsg1(0, _("Fatal error: Unknown address family for smtp host: %d\n"), hp->h_addrtype);
       exit(1);
    }
    memset((char *)&sin, 0, sizeof(sin));
@@ -266,24 +270,24 @@ hp:
    sin.sin_family = hp->h_addrtype;
    sin.sin_port = htons(mailport);
    if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
-      Pmsg1(0, "Fatal socket error: ERR=%s\n", strerror(errno));
+      Pmsg1(0, _("Fatal socket error: ERR=%s\n"), strerror(errno));
       exit(1);
    }
    if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
-      Pmsg2(0, "Fatal connect error to %s: ERR=%s\n", mailhost, strerror(errno));
+      Pmsg2(0, _("Fatal connect error to %s: ERR=%s\n"), mailhost, strerror(errno));
       exit(1);
    }
    Dmsg0(20, "Connected\n");
    if ((r = dup(s)) < 0) {
-      Pmsg1(0, "Fatal dup error: ERR=%s\n", strerror(errno));
+      Pmsg1(0, _("Fatal dup error: ERR=%s\n"), strerror(errno));
       exit(1);
    }
    if ((sfp = fdopen(s, "w")) == 0) {
-      Pmsg1(0, "Fatal fdopen error: ERR=%s\n", strerror(errno));
+      Pmsg1(0, _("Fatal fdopen error: ERR=%s\n"), strerror(errno));
       exit(1);
    }
    if ((rfp = fdopen(r, "r")) == 0) {
-      Pmsg1(0, "Fatal fdopen error: ERR=%s\n", strerror(errno));
+      Pmsg1(0, _("Fatal fdopen error: ERR=%s\n"), strerror(errno));
       exit(1);
    }
 
index 94e03848e90a4de83f4140b5f564241740247891..b8890a26f143522c69136e4c4d8df065be031222 100644 (file)
@@ -104,6 +104,10 @@ int main (int argc, char *argv[])
    char *configfile = NULL;
    char *catalogname = NULL;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    my_name_is(argc, argv, "dbcheck");
    init_msg(NULL, NULL);              /* setup message handler */
 
@@ -167,9 +171,9 @@ int main (int argc, char *argv[])
       UnlockRes();
       if (!found) {
          if (catalogname) {
-            Pmsg2(0, "Error can not find the Catalog name[%s] in the given config file [%s]\n", catalogname, configfile);
+            Pmsg2(0, _("Error can not find the Catalog name[%s] in the given config file [%s]\n"), catalogname, configfile);
          } else {
-            Pmsg1(0, "Error there is no Catalog section in the given config file [%s]\n", configfile);
+            Pmsg1(0, _("Error there is no Catalog section in the given config file [%s]\n"), configfile);
          }
          exit(1);
       } else {
@@ -178,7 +182,7 @@ int main (int argc, char *argv[])
          director = (DIRRES *)GetNextRes(R_DIRECTOR, NULL);
          UnlockRes();
          if (!director) {
-            Pmsg0(0, "Error no Director resource defined.\n");
+            Pmsg0(0, _("Error no Director resource defined.\n"));
             exit(1);
          }
          set_working_directory(director->working_directory);
@@ -262,10 +266,17 @@ static void do_interactive_mode()
    bool quit = false;
    const char *cmd;
 
-   printf("Hello, this is the database check/correct program.\n"
-"Modify database is %s. Verbose is %s.\n"
-"Please select the fuction you want to perform.\n",
-          fix?"On":"Off", verbose?"On":"Off");
+   printf(_("Hello, this is the database check/correct program.\n"));
+   if (fix)
+      printf(_("Modify database is on."));
+   else
+      printf(_("Modify database is off."));
+   if (verbose)
+      printf(_(" Verbose is on.\n"));
+   else
+      printf(_(" Verbose is off.\n"));
+
+   printf(_("Please select the fuction you want to perform.\n"));
 
    while (!quit) {
       if (fix) {
@@ -314,11 +325,17 @@ static void do_interactive_mode()
          switch (item) {
          case 1:
             fix = !fix;
-            printf(_("Database will %sbe modified.\n"), fix?"":_("NOT "));
+            if (fix)
+               printf(_("Database will be modified.\n"));
+            else
+               printf(_("Database will NOT be modified.\n"));
             break;
          case 2:
             verbose = verbose?0:1;
-            printf(_("Verbose is %s\n"), verbose?_("On"):_("Off"));
+            if (verbose)
+               printf(_(" Verbose is on.\n"));
+            else
+               printf(_(" Verbose is off.\n"));
             break;
          case 3:
             repair_bad_filenames();
@@ -483,7 +500,7 @@ static int delete_id_list(const char *query, ID_LIST *id_list)
    for (int i=0; i < id_list->num_ids; i++) {
       bsnprintf(buf, sizeof(buf), query, id_list->Id[i]);
       if (verbose) {
-         printf("Deleting: %s\n", buf);
+         printf(_("Deleting: %s\n"), buf);
       }
       db_sql_query(db, buf, NULL, NULL);
    }
@@ -557,7 +574,7 @@ static void eliminate_duplicate_filenames()
    const char *query;
    char esc_name[5000];
 
-   printf("Checking for duplicate Filename entries.\n");
+   printf(_("Checking for duplicate Filename entries.\n"));
 
    /* Make list of duplicated names */
    query = "SELECT Name, count(Name) as Count FROM Filename GROUP BY  Name "
@@ -566,8 +583,8 @@ static void eliminate_duplicate_filenames()
    if (!make_name_list(query, &name_list)) {
       exit(1);
    }
-   printf("Found %d duplicate Filename records.\n", name_list.num_ids);
-   if (name_list.num_ids && verbose && yes_no("Print the list? (yes/no): ")) {
+   printf(_("Found %d duplicate Filename records.\n"), name_list.num_ids);
+   if (name_list.num_ids && verbose && yes_no(_("Print the list? (yes/no): "))) {
       print_name_list(&name_list);
    }
    if (fix) {
@@ -583,7 +600,7 @@ static void eliminate_duplicate_filenames()
             exit(1);
          }
          if (verbose) {
-            printf("Found %d for: %s\n", id_list.num_ids, name_list.name[i]);
+            printf(_("Found %d for: %s\n"), id_list.num_ids, name_list.name[i]);
          }
          /* Force all records to use the first id then delete the other ids */
          for (int j=1; j<id_list.num_ids; j++) {
@@ -620,8 +637,8 @@ static void eliminate_duplicate_paths()
    if (!make_name_list(query, &name_list)) {
       exit(1);
    }
-   printf("Found %d duplicate Path records.\n", name_list.num_ids);
-   if (name_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d duplicate Path records.\n"), name_list.num_ids);
+   if (name_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       print_name_list(&name_list);
    }
    if (fix) {
@@ -637,7 +654,7 @@ static void eliminate_duplicate_paths()
             exit(1);
          }
          if (verbose) {
-            printf("Found %d for: %s\n", id_list.num_ids, name_list.name[i]);
+            printf(_("Found %d for: %s\n"), id_list.num_ids, name_list.name[i]);
          }
          /* Force all records to use the first id then delete the other ids */
          for (int j=1; j<id_list.num_ids; j++) {
@@ -663,15 +680,15 @@ static void eliminate_orphaned_jobmedia_records()
 {
    const char *query;
 
-   printf("Checking for orphaned JobMedia entries.\n");
+   printf(_("Checking for orphaned JobMedia entries.\n"));
    query = "SELECT JobMedia.JobMediaId,Job.JobId FROM JobMedia "
            "LEFT OUTER JOIN Job ON (JobMedia.JobId=Job.JobId) "
            "WHERE Job.JobId IS NULL";
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d orphaned JobMedia records.\n", id_list.num_ids);
-   if (id_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d orphaned JobMedia records.\n"), id_list.num_ids);
+   if (id_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (int i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf),
 "SELECT JobMedia.JobMediaId,JobMedia.JobId,Media.VolumeName FROM JobMedia,Media "
@@ -683,7 +700,7 @@ static void eliminate_orphaned_jobmedia_records()
    }
 
    if (fix && id_list.num_ids > 0) {
-      printf("Deleting %d orphaned JobMedia records.\n", id_list.num_ids);
+      printf(_("Deleting %d orphaned JobMedia records.\n"), id_list.num_ids);
       delete_id_list("DELETE FROM JobMedia WHERE JobMediaId=%u", &id_list);
    }
 }
@@ -692,7 +709,7 @@ static void eliminate_orphaned_file_records()
 {
    const char *query;
 
-   printf("Checking for orphaned File entries. This may take some time!\n");
+   printf(_("Checking for orphaned File entries. This may take some time!\n"));
    query = "SELECT File.FileId,Job.JobId FROM File "
            "LEFT OUTER JOIN Job ON (File.JobId=Job.JobId) "
            "WHERE Job.JobId IS NULL";
@@ -702,8 +719,8 @@ static void eliminate_orphaned_file_records()
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d orphaned File records.\n", id_list.num_ids);
-   if (name_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d orphaned File records.\n"), id_list.num_ids);
+   if (name_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (int i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf),
 "SELECT File.FileId,File.JobId,Filename.Name FROM File,Filename "
@@ -715,7 +732,7 @@ static void eliminate_orphaned_file_records()
    }
 
    if (fix && id_list.num_ids > 0) {
-      printf("Deleting %d orphaned File records.\n", id_list.num_ids);
+      printf(_("Deleting %d orphaned File records.\n"), id_list.num_ids);
       delete_id_list("DELETE FROM File WHERE FileId=%u", &id_list);
    }
 }
@@ -724,7 +741,7 @@ static void eliminate_orphaned_path_records()
 {
    const char *query;
 
-   printf("Checking for orphaned Path entries. This may take some time!\n");
+   printf(_("Checking for orphaned Path entries. This may take some time!\n"));
    query = "SELECT DISTINCT Path.PathId,File.PathId FROM Path "
            "LEFT OUTER JOIN File ON (Path.PathId=File.PathId) "
            "WHERE File.PathId IS NULL";
@@ -734,8 +751,8 @@ static void eliminate_orphaned_path_records()
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d orphaned Path records.\n", id_list.num_ids);
-   if (id_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d orphaned Path records.\n"), id_list.num_ids);
+   if (id_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (int i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf), "SELECT Path FROM Path WHERE PathId=%u", id_list.Id[i]);
          db_sql_query(db, buf, print_name_handler, NULL);
@@ -743,7 +760,7 @@ static void eliminate_orphaned_path_records()
    }
 
    if (fix && id_list.num_ids > 0) {
-      printf("Deleting %d orphaned Path records.\n", id_list.num_ids);
+      printf(_("Deleting %d orphaned Path records.\n"), id_list.num_ids);
       delete_id_list("DELETE FROM Path WHERE PathId=%u", &id_list);
    }
 }
@@ -752,7 +769,7 @@ static void eliminate_orphaned_filename_records()
 {
    const char *query;
 
-   printf("Checking for orphaned Filename entries. This may take some time!\n");
+   printf(_("Checking for orphaned Filename entries. This may take some time!\n"));
    query = "SELECT Filename.FilenameId,File.FilenameId FROM Filename "
            "LEFT OUTER JOIN File ON (Filename.FilenameId=File.FilenameId) "
            "WHERE File.FilenameId IS NULL";
@@ -762,8 +779,8 @@ static void eliminate_orphaned_filename_records()
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d orphaned Filename records.\n", id_list.num_ids);
-   if (id_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d orphaned Filename records.\n"), id_list.num_ids);
+   if (id_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (int i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf), "SELECT Name FROM Filename WHERE FilenameId=%u", id_list.Id[i]);
          db_sql_query(db, buf, print_name_handler, NULL);
@@ -771,7 +788,7 @@ static void eliminate_orphaned_filename_records()
    }
 
    if (fix && id_list.num_ids > 0) {
-      printf("Deleting %d orphaned Filename records.\n", id_list.num_ids);
+      printf(_("Deleting %d orphaned Filename records.\n"), id_list.num_ids);
       delete_id_list("DELETE FROM Filename WHERE FilenameId=%u", &id_list);
    }
 }
@@ -780,7 +797,7 @@ static void eliminate_orphaned_fileset_records()
 {
    const char *query;
 
-   printf("Checking for orphaned FileSet entries. This takes some time!\n");
+   printf(_("Checking for orphaned FileSet entries. This takes some time!\n"));
    query = "SELECT FileSet.FileSetId,Job.FileSetId FROM FileSet "
            "LEFT OUTER JOIN Job ON (FileSet.FileSetId=Job.FileSetId) "
            "WHERE Job.FileSetId IS NULL";
@@ -790,8 +807,8 @@ static void eliminate_orphaned_fileset_records()
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d orphaned FileSet records.\n", id_list.num_ids);
-   if (id_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d orphaned FileSet records.\n"), id_list.num_ids);
+   if (id_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (int i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf), "SELECT FileSetId,FileSet,MD5 FROM FileSet "
                       "WHERE FileSetId=%u", id_list.Id[i]);
@@ -802,7 +819,7 @@ static void eliminate_orphaned_fileset_records()
    }
 
    if (fix && id_list.num_ids > 0) {
-      printf("Deleting %d orphaned FileSet records.\n", id_list.num_ids);
+      printf(_("Deleting %d orphaned FileSet records.\n"), id_list.num_ids);
       delete_id_list("DELETE FROM FileSet WHERE FileSetId=%u", &id_list);
    }
 }
@@ -811,7 +828,7 @@ static void eliminate_orphaned_client_records()
 {
    const char *query;
 
-   printf("Checking for orphaned Client entries.\n");
+   printf(_("Checking for orphaned Client entries.\n"));
    /* In English:
     *   Wiffle through Client for every Client
     *   joining with the Job table including every Client even if
@@ -828,8 +845,8 @@ static void eliminate_orphaned_client_records()
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d orphaned Client records.\n", id_list.num_ids);
-   if (id_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d orphaned Client records.\n"), id_list.num_ids);
+   if (id_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (int i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf), "SELECT ClientId,Name FROM Client "
                       "WHERE ClientId=%u", id_list.Id[i]);
@@ -840,7 +857,7 @@ static void eliminate_orphaned_client_records()
    }
 
    if (fix && id_list.num_ids > 0) {
-      printf("Deleting %d orphaned Client records.\n", id_list.num_ids);
+      printf(_("Deleting %d orphaned Client records.\n"), id_list.num_ids);
       delete_id_list("DELETE FROM Client WHERE ClientId=%u", &id_list);
    }
 }
@@ -849,7 +866,7 @@ static void eliminate_orphaned_job_records()
 {
    const char *query;
 
-   printf("Checking for orphaned Job entries.\n");
+   printf(_("Checking for orphaned Job entries.\n"));
    /* In English:
     *   Wiffle through Job for every Job
     *   joining with the Client table including every Job even if
@@ -866,8 +883,8 @@ static void eliminate_orphaned_job_records()
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d orphaned Job records.\n", id_list.num_ids);
-   if (id_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d orphaned Job records.\n"), id_list.num_ids);
+   if (id_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (int i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf), "SELECT JobId,Name,StartTime FROM Job "
                       "WHERE JobId=%u", id_list.Id[i]);
@@ -878,7 +895,7 @@ static void eliminate_orphaned_job_records()
    }
 
    if (fix && id_list.num_ids > 0) {
-      printf("Deleting %d orphaned Job records.\n", id_list.num_ids);
+      printf(_("Deleting %d orphaned Job records.\n"), id_list.num_ids);
       delete_id_list("DELETE FROM Job WHERE JobId=%u", &id_list);
    }
 }
@@ -888,7 +905,7 @@ static void eliminate_admin_records()
 {
    const char *query;
 
-   printf("Checking for Admin Job entries.\n");
+   printf(_("Checking for Admin Job entries.\n"));
    query = "SELECT Job.JobId FROM Job "
            "WHERE Job.Type='D'";
    if (verbose > 1) {
@@ -897,8 +914,8 @@ static void eliminate_admin_records()
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d Admin Job records.\n", id_list.num_ids);
-   if (id_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d Admin Job records.\n"), id_list.num_ids);
+   if (id_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (int i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf), "SELECT JobId,Name,StartTime FROM Job "
                       "WHERE JobId=%u", id_list.Id[i]);
@@ -909,7 +926,7 @@ static void eliminate_admin_records()
    }
 
    if (fix && id_list.num_ids > 0) {
-      printf("Deleting %d Admin Job records.\n", id_list.num_ids);
+      printf(_("Deleting %d Admin Job records.\n"), id_list.num_ids);
       delete_id_list("DELETE FROM Job WHERE JobId=%u", &id_list);
    }
 }
@@ -918,7 +935,7 @@ static void eliminate_restore_records()
 {
    const char *query;
 
-   printf("Checking for Restore Job entries.\n");
+   printf(_("Checking for Restore Job entries.\n"));
    query = "SELECT Job.JobId FROM Job "
            "WHERE Job.Type='R'";
    if (verbose > 1) {
@@ -927,8 +944,8 @@ static void eliminate_restore_records()
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d Restore Job records.\n", id_list.num_ids);
-   if (id_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d Restore Job records.\n"), id_list.num_ids);
+   if (id_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (int i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf), "SELECT JobId,Name,StartTime FROM Job "
                       "WHERE JobId=%u", id_list.Id[i]);
@@ -939,7 +956,7 @@ static void eliminate_restore_records()
    }
 
    if (fix && id_list.num_ids > 0) {
-      printf("Deleting %d Restore Job records.\n", id_list.num_ids);
+      printf(_("Deleting %d Restore Job records.\n"), id_list.num_ids);
       delete_id_list("DELETE FROM Job WHERE JobId=%u", &id_list);
    }
 }
@@ -952,7 +969,7 @@ static void repair_bad_filenames()
    const char *query;
    int i;
 
-   printf("Checking for Filenames with a trailing slash\n");
+   printf(_("Checking for Filenames with a trailing slash\n"));
    query = "SELECT FilenameId,Name from Filename "
            "WHERE Name LIKE '%/'";
    if (verbose > 1) {
@@ -961,8 +978,8 @@ static void repair_bad_filenames()
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d bad Filename records.\n", id_list.num_ids);
-   if (id_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d bad Filename records.\n"), id_list.num_ids);
+   if (id_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf),
             "SELECT Name FROM Filename WHERE FilenameId=%u", id_list.Id[i]);
@@ -975,7 +992,7 @@ static void repair_bad_filenames()
    if (fix && id_list.num_ids > 0) {
       POOLMEM *name = get_pool_memory(PM_FNAME);
       char esc_name[5000];
-      printf("Reparing %d bad Filename records.\n", id_list.num_ids);
+      printf(_("Reparing %d bad Filename records.\n"), id_list.num_ids);
       for (i=0; i < id_list.num_ids; i++) {
          int len;
          bsnprintf(buf, sizeof(buf),
@@ -1010,7 +1027,7 @@ static void repair_bad_paths()
    const char *query;
    int i;
 
-   printf("Checking for Paths without a trailing slash\n");
+   printf(_("Checking for Paths without a trailing slash\n"));
    query = "SELECT PathId,Path from Path "
            "WHERE Path NOT LIKE '%/'";
    if (verbose > 1) {
@@ -1019,8 +1036,8 @@ static void repair_bad_paths()
    if (!make_id_list(query, &id_list)) {
       exit(1);
    }
-   printf("Found %d bad Path records.\n", id_list.num_ids);
-   if (id_list.num_ids && verbose && yes_no("Print them? (yes/no): ")) {
+   printf(_("Found %d bad Path records.\n"), id_list.num_ids);
+   if (id_list.num_ids && verbose && yes_no(_("Print them? (yes/no): "))) {
       for (i=0; i < id_list.num_ids; i++) {
          bsnprintf(buf, sizeof(buf),
             "SELECT Path FROM Path WHERE PathId=%u", id_list.Id[i]);
@@ -1033,7 +1050,7 @@ static void repair_bad_paths()
    if (fix && id_list.num_ids > 0) {
       POOLMEM *name = get_pool_memory(PM_FNAME);
       char esc_name[5000];
-      printf("Reparing %d bad Filename records.\n", id_list.num_ids);
+      printf(_("Reparing %d bad Filename records.\n"), id_list.num_ids);
       for (i=0; i < id_list.num_ids; i++) {
          int len;
          bsnprintf(buf, sizeof(buf),
@@ -1078,7 +1095,7 @@ static int yes_no(const char *prompt)
 {
    char *cmd;
    cmd = get_cmd(prompt);
-   return strcasecmp(cmd, "yes") == 0;
+   return (strcasecmp(cmd, "yes") == 0) || (strcasecmp(cmd, _("yes")) == 0);
 }
 
 bool python_set_prog(JCR*, char const*) { return false; }
index 38795b2f4f3f1996b59fb951ac9ce0ffcde501bf..e671257908a0ac1efdfc7e3973bbcd5ca855333c 100644 (file)
@@ -53,6 +53,10 @@ main (int argc, char *const *argv)
    int status = 0;
    int ch, i;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    while ((ch = getopt(argc, argv, "v?")) != -1) {
       switch (ch) {
          case 'v':
@@ -79,7 +83,7 @@ main (int argc, char *const *argv)
             puts(fs);
          }
       } else {
-         fprintf(stderr, "%s: unknown\n", *argv);
+         fprintf(stderr, _("%s: unknown\n"), *argv);
          status = 1;
       }
    }
index 0b676f02f2ea8e81fe7fb1ff97c5ba7d03f6b0e3..6313918d9f5a3f3db0e375bae5e4df07a9578042 100644 (file)
@@ -77,6 +77,10 @@ main (int argc, char *const *argv)
    char *exc = NULL;
    FILE *fd;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    while ((ch = getopt(argc, argv, "ad:e:i:?")) != -1) {
       switch (ch) {
          case 'a':                    /* print extended attributes *debug* */
@@ -127,7 +131,7 @@ main (int argc, char *const *argv)
    if (inc) {
       fd = fopen(inc, "r");
       if (!fd) {
-         printf("Could not open include file: %s\n", inc);
+         printf(_("Could not open include file: %s\n"), inc);
          exit(1);
       }
       while (fgets(name, sizeof(name)-1, fd)) {
@@ -140,7 +144,7 @@ main (int argc, char *const *argv)
    if (exc) {
       fd = fopen(exc, "r");
       if (!fd) {
-         printf("Could not open exclude file: %s\n", exc);
+         printf(_("Could not open exclude file: %s\n"), exc);
          exit(1);
       }
       while (fgets(name, sizeof(name)-1, fd)) {
@@ -192,7 +196,7 @@ static int print_file(FF_PKT *ff, void *pkt, bool top_level)
       if (debug_level == 1) {
          printf("%s\n", ff->fname);
       } else if (debug_level > 1) {
-         printf("Reg: %s\n", ff->fname);
+         printf(_("Reg: %s\n"), ff->fname);
       }
       count_files(ff);
       break;
@@ -213,11 +217,11 @@ static int print_file(FF_PKT *ff, void *pkt, bool top_level)
       if (debug_level) {
          char errmsg[100] = "";
          if (ff->type == FT_NORECURSE) {
-            bstrncpy(errmsg, "\t[will not descend: recursion turned off]", sizeof(errmsg));
+            bstrncpy(errmsg, _("\t[will not descend: recursion turned off]"), sizeof(errmsg));
          } else if (ff->type == FT_NOFSCHG) {
-            bstrncpy(errmsg, "\t[will not descend: file system change not allowed]", sizeof(errmsg));
+            bstrncpy(errmsg, _("\t[will not descend: file system change not allowed]"), sizeof(errmsg));
          } else if (ff->type == FT_INVALIDFS) {
-            bstrncpy(errmsg, "\t[will not descend: disallowed file system]", sizeof(errmsg));
+            bstrncpy(errmsg, _("\t[will not descend: disallowed file system]"), sizeof(errmsg));
          }
          printf("%s%s%s\n", (debug_level > 1 ? "Dir: " : ""), ff->fname, errmsg);
       }
@@ -330,8 +334,8 @@ static void count_files(FF_PKT *ar)
       printf(_("========== Path length is zero. File=%s\n"), ar->fname);
    }
    if (debug_level >= 10) {
-      printf("Path: %s\n", spath);
-      printf("File: %s\n", file);
+      printf(_("Path: %s\n"), spath);
+      printf(_("File: %s\n"), file);
    }
 
 }
index dafee9c899c15118f9d35dc1b9599038676086bf..e48df2e6ccfc321d289b50975d540300a374ab89 100755 (executable)
@@ -73,6 +73,10 @@ main (int argc, char *const *argv)
    char *exc = NULL;
    FILE *fd;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    while ((ch = getopt(argc, argv, "ad:e:i:?")) != -1) {
       switch (ch) {
       case 'a':                       /* print extended attributes *debug* */
@@ -123,7 +127,7 @@ main (int argc, char *const *argv)
    if (inc) {
       fd = fopen(inc, "r");
       if (!fd) {
-         printf("Could not open include file: %s\n", inc);
+         printf(_("Could not open include file: %s\n"), inc);
          exit(1);
       }
       while (fgets(name, sizeof(name)-1, fd)) {
@@ -136,7 +140,7 @@ main (int argc, char *const *argv)
    if (exc) {
       fd = fopen(exc, "r");
       if (!fd) {
-         printf("Could not open exclude file: %s\n", exc);
+         printf(_("Could not open exclude file: %s\n"), exc);
          exit(1);
       }
       while (fgets(name, sizeof(name)-1, fd)) {
index 3917beaea12192197fb4989234947d0bc95400a3..b80d4a4525c6b55b6b8313b12fa0402d43342634 100644 (file)
@@ -101,13 +101,13 @@ static void usage()
    fprintf(stderr, _(
 "Copyright (C) 2000-2004 Kern Sibbald and John Walker\n"
 "Written by Nicolas Boichat (2004)\n"
-"\nVersion: " VERSION " (" BDATE ") %s %s %s\n\n"
+"\nVersion: %s (%s) %s %s %s\n\n"
 "Usage: tray-monitor [-c config_file] [-d debug_level]\n"
 "       -c <file>     set configuration file to file\n"
 "       -dnn          set debug level to nn\n"
 "       -t            test - read configuration and exit\n"
 "       -?            print this message.\n"
-"\n"), HOST_OS, DISTNAME, DISTVER);
+"\n"), VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
 }
 
 static GtkWidget *new_image_button(const gchar *stock_id,
@@ -182,9 +182,12 @@ int main(int argc, char *argv[])
    CLIENT* filed;
    STORE* stored;
 
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    init_stack_dump();
    my_name_is(argc, argv, "tray-monitor");
-   textdomain("bacula");
    init_msg(NULL, NULL);
    working_directory = "/tmp";
 
@@ -313,13 +316,13 @@ int main(int argc, char *argv[])
 
    GtkWidget *entry;
 
-   entry = gtk_menu_item_new_with_label("Open status window...");
+   entry = gtk_menu_item_new_with_label(_("Open status window..."));
    g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(TrayIconActivate), NULL);
    gtk_menu_shell_append(GTK_MENU_SHELL(mTrayMenu), entry);
 
    gtk_menu_shell_append(GTK_MENU_SHELL(mTrayMenu), gtk_separator_menu_item_new());
 
-   entry = gtk_menu_item_new_with_label("Exit");
+   entry = gtk_menu_item_new_with_label(_("Exit"));
    g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(TrayIconExit), NULL);
    gtk_menu_shell_append(GTK_MENU_SHELL(mTrayMenu), entry);
 
@@ -331,7 +334,7 @@ int main(int argc, char *argv[])
 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
-   gtk_window_set_title(GTK_WINDOW(window), "Bacula tray monitor");
+   gtk_window_set_title(GTK_WINDOW(window), _("Bacula tray monitor"));
 
    g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(delete_event), NULL);
    //g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL);
@@ -454,13 +457,13 @@ int main(int argc, char *argv[])
       if (items[i].D_sock) {
          switch (items[i].type) {
          case R_DIRECTOR:
-            trayMessage("Disconnecting from Director %s:%d\n", ((DIRRES*)items[i].resource)->address, ((DIRRES*)items[i].resource)->DIRport);
+            trayMessage(_("Disconnecting from Director %s:%d\n"), ((DIRRES*)items[i].resource)->address, ((DIRRES*)items[i].resource)->DIRport);
             break;
          case R_CLIENT:
-            trayMessage("Disconnecting from Client %s:%d\n", ((CLIENT*)items[i].resource)->address, ((CLIENT*)items[i].resource)->FDport);
+            trayMessage(_("Disconnecting from Client %s:%d\n"), ((CLIENT*)items[i].resource)->address, ((CLIENT*)items[i].resource)->FDport);
             break;
          case R_STORAGE:
-            trayMessage("Disconnecting from Storage %s:%d\n", ((STORE*)items[i].resource)->address, ((STORE*)items[i].resource)->SDport);
+            trayMessage(_("Disconnecting from Storage %s:%d\n"), ((STORE*)items[i].resource)->address, ((STORE*)items[i].resource)->SDport);
             break;          
          default:
             break;
@@ -492,19 +495,25 @@ int main(int argc, char *argv[])
 
 static void MonitorAbout(GtkWidget *widget, gpointer data) {
 #if HAVE_GTK_2_4
-   GtkWidget* about = gtk_message_dialog_new_with_markup(GTK_WINDOW(window),GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, _(
-      "<span size='x-large' weight='bold'>Bacula Tray Monitor</span>\n\n"
-      "Copyright (C) 2004 Kern Sibbald and John Walker\n"
-      "Written by Nicolas Boichat\n"
-      "\n<small>Version: " VERSION " (" BDATE ") %s %s %s</small>"
-   ), HOST_OS, DISTNAME, DISTVER);
+   GtkWidget* about = gtk_message_dialog_new_with_markup(GTK_WINDOW(window),GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,
+      "<span size='x-large' weight='bold'>%s</span>\n\n"
+      "%s"
+      "\n<small>%s: %s (%s) %s %s %s</small>",
+      _("Bacula Tray Monitor"),
+      _("Copyright (C) 2004 Kern Sibbald and John Walker\n"
+        "Written by Nicolas Boichat\n"),
+      _("Version"),
+      VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
 #else
    GtkWidget* about = gtk_message_dialog_new(GTK_WINDOW(window),GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, _(
-      "Bacula Tray Monitor\n\n"
-      "Copyright (C) 2004 Kern Sibbald and John Walker\n"
-      "Written by Nicolas Boichat\n"
-      "\nVersion: " VERSION " (" BDATE ") %s %s %s"
-   ), HOST_OS, DISTNAME, DISTVER);
+      "%s\n\n"
+      "%s"
+      "\n%s %s (%s) %s %s %s",
+      _("Bacula Tray Monitor"),
+      _("Copyright (C) 2004 Kern Sibbald and John Walker\n"
+        "Written by Nicolas Boichat\n"),
+      _("Version:"),
+      VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
 #endif
    gtk_dialog_run(GTK_DIALOG(about));
    gtk_widget_destroy(about);
@@ -571,7 +580,7 @@ static int authenticate_daemon(monitoritem* item, JCR *jcr) {
    case R_STORAGE:
       return authenticate_storage_daemon(jcr, monitor, (STORE*)item->resource);
    default:
-      printf("Error, currentitem is not a Client or a Storage..\n");
+      printf(_("Error, currentitem is not a Client or a Storage..\n"));
       gtk_main_quit();
       return FALSE;
    }
@@ -644,7 +653,7 @@ static gboolean fd_read(gpointer data) {
    getstatus(&items[lastupdated], 0, &strlast);
    updateStatusIcon(&items[lastupdated]);
 
-   changeStatusMessage(&items[lastupdated], "Current job: %s\nLast job: %s", strcurrent->str, strlast->str);
+   changeStatusMessage(&items[lastupdated], _("Current job: %s\nLast job: %s"), strcurrent->str, strlast->str);
 
    updateStatusIcon(NULL);
 
@@ -654,6 +663,15 @@ static gboolean fd_read(gpointer data) {
    return 1;
 }
 
+void append_error_string(GString* str, int joberrors) {
+   if (joberrors > 1) {
+      g_string_append_printf(str, _(" (%d errors)"), joberrors);
+   }
+   else {
+      g_string_append_printf(str, _(" (%d error)"), joberrors);
+   }
+}
+
 void getstatus(monitoritem* item, int current, GString** str) {
    GSList *list, *it;
    stateenum ret = error;
@@ -698,89 +716,109 @@ void getstatus(monitoritem* item, int current, GString** str) {
       switch (jobstatus) {
       case JS_Created:
          ret = (joberrors > 0) ? warn : running;
-         g_string_append_printf(*str, _("Job status: Created (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Created"));
+         append_error_string(*str, joberrors);
          break;
       case JS_Running:
          ret = (joberrors > 0) ? warn : running;
-         g_string_append_printf(*str, _("Job status: Running (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Running"));
+         append_error_string(*str, joberrors);
          break;
       case JS_Blocked:
-         g_string_append_printf(*str, _("Job status: Blocked (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Blocked"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_Terminated:
-         g_string_append_printf(*str, _("Job status: Terminated (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Terminated"));
+         append_error_string(*str, joberrors);
          ret = (joberrors > 0) ? warn : idle;
          break;
       case JS_ErrorTerminated:
-         g_string_append_printf(*str, _("Job status: Terminated in error (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Terminated in error"));
+         append_error_string(*str, joberrors);
          ret = error;
          break;
       case JS_Error:
          ret = (joberrors > 0) ? warn : running;
-         g_string_append_printf(*str, _("Job status: Error (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Error"));
+         append_error_string(*str, joberrors);
          break;
       case JS_FatalError:
-         g_string_append_printf(*str, _("Job status: Fatal error (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Fatal error"));
+         append_error_string(*str, joberrors);
          ret = error;
          break;
       case JS_Differences:
-         g_string_append_printf(*str, _("Job status: Verify differences (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Verify differences"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_Canceled:
-         g_string_append_printf(*str, _("Job status: Canceled (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Canceled"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_WaitFD:
-         g_string_append_printf(*str, _("Job status: Waiting on File daemon (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Waiting on File daemon"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_WaitSD:
-         g_string_append_printf(*str, _("Job status: Waiting on the Storage daemon (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Waiting on the Storage daemon"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_WaitMedia:
-         g_string_append_printf(*str, _("Job status: Waiting for new media (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Waiting for new media"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_WaitMount:
-         g_string_append_printf(*str, _("Job status: Waiting for Mount (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Waiting for Mount"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_WaitStoreRes:
-         g_string_append_printf(*str, _("Job status: Waiting for storage resource (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Waiting for storage resource"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_WaitJobRes:
-         g_string_append_printf(*str, _("Job status: Waiting for job resource (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Waiting for job resource"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_WaitClientRes:
-         g_string_append_printf(*str, _("Job status: Waiting for Client resource (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Waiting for Client resource"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_WaitMaxJobs:
-         g_string_append_printf(*str, _("Job status: Waiting for maximum jobs (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Waiting for maximum jobs"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_WaitStartTime:
-         g_string_append_printf(*str, _("Job status: Waiting for start time (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Waiting for start time"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       case JS_WaitPriority:
-         g_string_append_printf(*str, _("Job status: Waiting for higher priority jobs to finish (%d error%s)"), joberrors, (joberrors > 1) ? "s" : "");
+         g_string_append_printf(*str, _("Job status: Waiting for higher priority jobs to finish"));
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       default:
-         g_warning("Unknown job status %c.", jobstatus);
-         g_string_append_printf(*str, _("Job status: Unknown(%c) (%d error%s)"), jobstatus, joberrors, (joberrors > 1) ? "s" : "");
+         g_warning(_("Unknown job status %c."), jobstatus);
+         g_string_append_printf(*str, _("Job status: Unknown(%c)"), jobstatus);
+         append_error_string(*str, joberrors);
          ret = warn;
          break;
       }
    }
    else {
-      fprintf(stderr, "Bad scan : '%s' %d\n", (it == NULL) ? "" : ((GString*)it->data)->str, k);
+      fprintf(stderr, _("Bad scan : '%s' %d\n"), (it == NULL) ? "" : ((GString*)it->data)->str, k);
       ret = error;
    }
 
@@ -817,34 +855,34 @@ int docmd(monitoritem* item, const char* command, GSList** list) {
       switch (item->type) {
       case R_DIRECTOR:
          dird = (DIRRES*)item->resource;
-         trayMessage("Connecting to Director %s:%d\n", dird->address, dird->DIRport);
-         changeStatusMessage(item, "Connecting to Director %s:%d", dird->address, dird->DIRport);
-         item->D_sock = bnet_connect(NULL, 0, 0, "Director daemon", dird->address, NULL, dird->DIRport, 0);
+         trayMessage(_("Connecting to Director %s:%d\n"), dird->address, dird->DIRport);
+         changeStatusMessage(item, _("Connecting to Director %s:%d"), dird->address, dird->DIRport);
+         item->D_sock = bnet_connect(NULL, 0, 0, _("Director daemon"), dird->address, NULL, dird->DIRport, 0);
          jcr.dir_bsock = item->D_sock;
          break;
       case R_CLIENT:
          filed = (CLIENT*)item->resource;
-         trayMessage("Connecting to Client %s:%d\n", filed->address, filed->FDport);
-         changeStatusMessage(item, "Connecting to Client %s:%d", filed->address, filed->FDport);
-         item->D_sock = bnet_connect(NULL, 0, 0, "File daemon", filed->address, NULL, filed->FDport, 0);
+         trayMessage(_("Connecting to Client %s:%d\n"), filed->address, filed->FDport);
+         changeStatusMessage(item, _("Connecting to Client %s:%d"), filed->address, filed->FDport);
+         item->D_sock = bnet_connect(NULL, 0, 0, _("File daemon"), filed->address, NULL, filed->FDport, 0);
          jcr.file_bsock = item->D_sock;
          break;
       case R_STORAGE:
          stored = (STORE*)item->resource;
-         trayMessage("Connecting to Storage %s:%d\n", stored->address, stored->SDport);
-         changeStatusMessage(item, "Connecting to Storage %s:%d", stored->address, stored->SDport);
-         item->D_sock = bnet_connect(NULL, 0, 0, "Storage daemon", stored->address, NULL, stored->SDport, 0);
+         trayMessage(_("Connecting to Storage %s:%d\n"), stored->address, stored->SDport);
+         changeStatusMessage(item, _("Connecting to Storage %s:%d"), stored->address, stored->SDport);
+         item->D_sock = bnet_connect(NULL, 0, 0, _("Storage daemon"), stored->address, NULL, stored->SDport, 0);
          jcr.store_bsock = item->D_sock;
          break;
       default:
-         printf("Error, currentitem is not a Client, a Storage or a Director..\n");
+         printf(_("Error, currentitem is not a Client, a Storage or a Director..\n"));
          gtk_main_quit();
          return 0;
       }
 
       if (item->D_sock == NULL) {
-         g_slist_append(*list, g_string_new("Cannot connect to daemon.\n"));
-         changeStatusMessage(item, "Cannot connect to daemon.");
+         g_slist_append(*list, _("Cannot connect to daemon.\n"));
+         changeStatusMessage(item, _("Cannot connect to daemon."));
          item->state = error;
          item->oldstate = error;
          return 0;
@@ -856,26 +894,26 @@ int docmd(monitoritem* item, const char* command, GSList** list) {
          g_slist_append(*list, str);
          item->state = error;
          item->oldstate = error;
-         changeStatusMessage(item, "Authentication error : %s", item->D_sock->msg);
+         changeStatusMessage(item, _("Authentication error : %s"), item->D_sock->msg);
          item->D_sock = NULL;
          return 0;
       }
 
       switch (item->type) {
       case R_DIRECTOR:
-         trayMessage("Opened connection with Director daemon.\n");
-         changeStatusMessage(item, "Opened connection with Director daemon.");
+         trayMessage(_("Opened connection with Director daemon.\n"));
+         changeStatusMessage(item, _("Opened connection with Director daemon."));
          break;
       case R_CLIENT:
-         trayMessage("Opened connection with File daemon.\n");
-         changeStatusMessage(item, "Opened connection with File daemon.");
+         trayMessage(_("Opened connection with File daemon.\n"));
+         changeStatusMessage(item, _("Opened connection with File daemon."));
          break;
       case R_STORAGE:
-         trayMessage("Opened connection with Storage daemon.\n");
-         changeStatusMessage(item, "Opened connection with Storage daemon.");
+         trayMessage(_("Opened connection with Storage daemon.\n"));
+         changeStatusMessage(item, _("Opened connection with Storage daemon."));
          break;
       default:
-         printf("Error, currentitem is not a Client, a Storage or a Director..\n");
+         printf(_("Error, currentitem is not a Client, a Storage or a Director..\n"));
          gtk_main_quit();
          return 0;
          break;
@@ -907,35 +945,35 @@ int docmd(monitoritem* item, const char* command, GSList** list) {
          }
          else if (item->D_sock->msglen == BNET_PROMPT) {
             //fprintf(stderr, "<< PROMPT >>\n");
-            g_slist_append(*list, g_string_new("<< Error: BNET_PROMPT signal received. >>\n"));
+            g_slist_append(*list, g_string_new(_("<< Error: BNET_PROMPT signal received. >>\n")));
             return 0;
          }
          else if (item->D_sock->msglen == BNET_HEARTBEAT) {
             bnet_sig(item->D_sock, BNET_HB_RESPONSE);
-            g_slist_append(*list, g_string_new("<< Heartbeat signal received, answered. >>\n"));
+            g_slist_append(*list, g_string_new(_("<< Heartbeat signal received, answered. >>\n")));
          }
          else {
             str = g_string_sized_new(64);
-            g_string_printf(str, "<< Unexpected signal received : %s >>\n", bnet_sig_to_ascii(item->D_sock));
+            g_string_printf(str, _("<< Unexpected signal received : %s >>\n"), bnet_sig_to_ascii(item->D_sock));
             g_slist_append(*list, str);
          }
       }
       else { /* BNET_HARDEOF || BNET_ERROR */
-         g_slist_append(*list, g_string_new("<ERROR>\n"));
+         g_slist_append(*list, g_string_new(_("<ERROR>\n")));
          item->D_sock = NULL;
          item->state = error;
          item->oldstate = error;
-         changeStatusMessage(item, "Error : BNET_HARDEOF or BNET_ERROR");
-         //fprintf(stderr, "<< ERROR >>\n");
+         changeStatusMessage(item, _("Error : BNET_HARDEOF or BNET_ERROR"));
+         //fprintf(stderr, _("<< ERROR >>\n"));
          return 0;
       }
 
       if (is_bnet_stop(item->D_sock)) {
-         g_string_append_printf(str, "<STOP>\n");
+         g_string_append_printf(str, _("<STOP>\n"));
          item->D_sock = NULL;
          item->state = error;
          item->oldstate = error;
-         changeStatusMessage(item, "Error : Connection closed.");
+         changeStatusMessage(item, _("Error : Connection closed."));
          //fprintf(stderr, "<< STOP >>\n");
          return 0;            /* error or term */
       }
index 8aaea718dfd5b9076032e8000e900ea5fe90f8de..7614c2052a4eba451cc828f8de8372742dc87809 100644 (file)
@@ -149,7 +149,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    char ed1[100], ed2[100];
 
    if (res == NULL) {
-      sendit(sock, "No %s resource defined\n", res_to_str(type));
+      sendit(sock, _("No %s resource defined\n"), res_to_str(type));
       return;
    }
    if (type < 0) {                   /* no recursion */
@@ -158,25 +158,25 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    }
    switch (type) {
    case R_MONITOR:
-      sendit(sock, "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n",
+      sendit(sock, _("Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"),
    reshdr->name,
    edit_uint64(res->res_monitor.FDConnectTimeout, ed1),
    edit_uint64(res->res_monitor.SDConnectTimeout, ed2));
       break;
    case R_DIRECTOR:
-      sendit(sock, "Director: name=%s address=%s FDport=%d\n",
+      sendit(sock, _("Director: name=%s address=%s FDport=%d\n"),
    res->res_dir.hdr.name, res->res_dir.address, res->res_dir.DIRport);
       break;
    case R_CLIENT:
-      sendit(sock, "Client: name=%s address=%s FDport=%d\n",
+      sendit(sock, _("Client: name=%s address=%s FDport=%d\n"),
    res->res_client.hdr.name, res->res_client.address, res->res_client.FDport);
       break;
    case R_STORAGE:
-      sendit(sock, "Storage: name=%s address=%s SDport=%d\n",
+      sendit(sock, _("Storage: name=%s address=%s SDport=%d\n"),
    res->res_store.hdr.name, res->res_store.address, res->res_store.SDport);
       break;
    default:
-      sendit(sock, "Unknown resource type %d in dump_resource.\n", type);
+      sendit(sock, _("Unknown resource type %d in dump_resource.\n"), type);
       break;
    }
    if (recurse && res->res_monitor.hdr.next) {
@@ -229,7 +229,7 @@ void free_resource(RES *sres, int type)
       }
       break;
    default:
-      printf("Unknown resource type %d in free_resource.\n", type);
+      printf(_("Unknown resource type %d in free_resource.\n"), type);
    }
    /* Common stuff again -- free the resource, recurse to next one */
    if (res) {
@@ -259,13 +259,13 @@ void save_resource(int type, RES_ITEM *items, int pass)
    for (i=0; items[i].name; i++) {
       if (items[i].flags & ITEM_REQUIRED) {
         if (!bit_is_set(i, res_all.res_monitor.hdr.item_present)) {
-              Emsg2(M_ERROR_TERM, 0, "%s item is required in %s resource, but not found.\n",
+              Emsg2(M_ERROR_TERM, 0, _("%s item is required in %s resource, but not found.\n"),
                  items[i].name, resources[rindex]);
         }
       }
       /* If this triggers, take a look at lib/parse_conf.h */
       if (i >= MAX_RES_ITEMS) {
-        Emsg1(M_ERROR_TERM, 0, "Too many items in %s resource\n", resources[rindex]);
+        Emsg1(M_ERROR_TERM, 0, _("Too many items in %s resource\n"), resources[rindex]);
       }
    }
 
@@ -284,7 +284,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
       case R_DIRECTOR:
         break;
       default:
-        Emsg1(M_ERROR, 0, "Unknown resource type %d in save_resource.\n", type);
+        Emsg1(M_ERROR, 0, _("Unknown resource type %d in save_resource.\n"), type);
         error = 1;
         break;
       }
@@ -319,7 +319,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
       size = sizeof(STORE);
       break;
    default:
-      printf("Unknown resource type %d in save_resrouce.\n", type);
+      printf(_("Unknown resource type %d in save_resrouce.\n"), type);
       error = 1;
       size = 1;
       break;
index 01030f4736e14d16554b40e928b6875f2a232b17..fc477f47688978d078071ce9d72e685ad27d5634 100644 (file)
@@ -123,14 +123,14 @@ int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons)
 
    Dmsg1(6, ">dird: %s", dir->msg);
    if (bnet_recv(dir) <= 0) {
-      csprint("Bad response to Hello command: ERR=", CS_DATA);
+      csprint(_("Bad response to Hello command: ERR="), CS_DATA);
       csprint(bnet_strerror(dir), CS_DATA);
       csprint("\n", CS_DATA);
       goto bail_out;
    }
    Dmsg1(10, "<dird: %s", dir->msg);
    if (strncmp(dir->msg, OKhello, sizeof(OKhello)-1) != 0) {
-      csprint("Director rejected Hello command\n", CS_DATA);
+      csprint(_("Director rejected Hello command\n"), CS_DATA);
       goto bail_out;
    } else {
       csprint(dir->msg, CS_DATA);
index 5c959db6152704e95cfb311713a772adc45aa009..7c327610e6378e3cdbd7cb5de5dabeedf0e573ff 100644 (file)
@@ -121,7 +121,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    int recurse = 1;
 
    if (res == NULL) {
-      printf("No record for %d %s\n", type, res_to_str(type));
+      printf(_("No record for %d %s\n"), type, res_to_str(type));
       return;
    }
    if (type < 0) {            /* no recursion */
@@ -130,15 +130,15 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    }
    switch (type) {
       case R_CONSOLE:
-         printf("Console: name=%s rcfile=%s histfile=%s\n", reshdr->name,
+         printf(_("Console: name=%s rcfile=%s histfile=%s\n"), reshdr->name,
       res->res_cons.rc_file, res->res_cons.hist_file);
     break;
       case R_DIRECTOR:
-         printf("Director: name=%s address=%s DIRport=%d\n", reshdr->name,
+         printf(_("Director: name=%s address=%s DIRport=%d\n"), reshdr->name,
        res->res_dir.address, res->res_dir.DIRport);
     break;
       default:
-         printf("Unknown resource type %d\n", type);
+         printf(_("Unknown resource type %d\n"), type);
    }
    if (recurse && res->res_dir.hdr.next) {
       dump_resource(type, res->res_dir.hdr.next, sendit, sock);
@@ -213,7 +213,7 @@ void free_resource(RES *sres, int type)
       }
       break;
    default:
-         printf("Unknown resource type %d\n", type);
+         printf(_("Unknown resource type %d\n"), type);
       }
    /* Common stuff again -- free the resource, recurse to next one */
    free(res);
@@ -239,7 +239,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
    for (i=0; items[i].name; i++) {
       if (items[i].flags & ITEM_REQUIRED) {
        if (!bit_is_set(i, res_all.res_dir.hdr.item_present)) {
-               Emsg2(M_ABORT, 0, "%s item is required in %s resource, but not found.\n",
+               Emsg2(M_ABORT, 0, _("%s item is required in %s resource, but not found.\n"),
        items[i].name, resources[rindex]);
         }
       }
@@ -258,7 +258,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
        break;
 
     default:
-            Emsg1(M_ERROR, 0, "Unknown resource type %d\n", type);
+            Emsg1(M_ERROR, 0, _("Unknown resource type %d\n"), type);
        error = 1;
        break;
       }
@@ -285,7 +285,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
     size = sizeof(DIRRES);
     break;
       default:
-         printf("Unknown resource type %d\n", type);
+         printf(_("Unknown resource type %d\n"), type);
     error = 1;
     size = 1;
     break;
index 2d317626793022ea388c5d09714e9190bf90fa69..46cce5379319954568dc7b6beb893edb11d1fb60 100644 (file)
@@ -148,14 +148,13 @@ void console_thread::SetWorkingDirectory(wxString w_dir) {
 
 void console_thread::InitLib() {
    if (WSA_Init() != 0) {
-      csprint("Error while initializing windows sockets...\n");
+      csprint(_("Error while initializing windows sockets...\n"));
       inited = false;
       return;
    }
    
    init_stack_dump();
    my_name_is(0, NULL, "wx-console");
-   //textdomain("bacula-console");
    working_directory = (const char*) console_thread::working_dir.GetData();
    
    inited = true;
@@ -164,7 +163,7 @@ void console_thread::InitLib() {
 void console_thread::FreeLib() {
    if (inited) {
       if (WSACleanup() != 0) {
-         csprint("Error while cleaning up windows sockets...\n");
+         csprint(_("Error while cleaning up windows sockets...\n"));
       }
    }
 }
@@ -192,7 +191,7 @@ static void scan_err(const char *file, int line, LEX *lc, const char *msg, ...)
       more[0] = 0;
    }
 
-   err.Format(wxT("Config error: %s\n            : line %d, col %d of file %s\n%s\n%s"),
+   err.Format(wxT(_("Config error: %s\n            : line %d, col %d of file %s\n%s\n%s")),
       buf, lc->line_no, lc->col_no, lc->fname, lc->line, more);
      
    errmsg << err; 
@@ -202,7 +201,7 @@ wxString console_thread::LoadConfig(wxString configfile) {
    if (!inited) {
       InitLib();
       if (!inited)
-         return wxT("Error while initializing library.");
+         return wxT(_("Error while initializing library."));
    }
    
    free_config_resources();
@@ -265,7 +264,7 @@ console_thread::~console_thread() {
 void* console_thread::Entry() {
    DIRRES* dir;
    if (!inited) {
-      csprint("Error : Library not initialized\n");
+      csprint(_("Error : Library not initialized\n"));
       csprint(NULL, CS_END);
       csprint(NULL, CS_DISCONNECTED);
       csprint(NULL, CS_TERMINATED);
@@ -276,7 +275,7 @@ void* console_thread::Entry() {
    }
    
    if (!configloaded) {
-      csprint("Error : No configuration file loaded\n");
+      csprint(_("Error : No configuration file loaded\n"));
       csprint(NULL, CS_END);
       csprint(NULL, CS_DISCONNECTED);
       csprint(NULL, CS_TERMINATED);
@@ -286,7 +285,7 @@ void* console_thread::Entry() {
       return NULL;
    }
    
-   csprint("Connecting...\n");
+   csprint(_("Connecting...\n"));
   
    int count = 0;
    DIRRES* res[16]; /* Maximum 16 directors */
@@ -302,7 +301,7 @@ void* console_thread::Entry() {
    UnlockRes();
    
    if (count == 0) {
-      csprint("Error : No director defined in config file.\n");
+      csprint(_("Error : No director defined in config file.\n"));
       csprint(NULL, CS_END);
       csprint(NULL, CS_DISCONNECTED);
       csprint(NULL, CS_TERMINATED);
@@ -314,7 +313,7 @@ void* console_thread::Entry() {
       directorchoosen = 1;
    } else {
       while (true) {
-         csprint("Multiple directors found in your config file.\n");
+         csprint(_("Multiple directors found in your config file.\n"));
          for (int i = 0; i < count; i++) {
             if (i < 9) {
                csprint(wxString(wxT("    ")) << (i+1) << wxT(": ") << wxString(res[i]->hdr.name,*wxConvCurrent) << wxT("\n"));
@@ -323,7 +322,7 @@ void* console_thread::Entry() {
                csprint(wxString(wxT("   ")) <<  (i+1) << wxT(": ") << wxString(res[i]->hdr.name,*wxConvCurrent) << wxT("\n"));
             }
          }
-         csprint(wxString(wxT("Please choose a director (1-")) << count << wxT(") : "),CS_DATA);
+         csprint(wxString::Format(wxT(_("Please choose a director (1-%s): ")), count), CS_DATA);
          csprint(NULL, CS_PROMPT);
          choosingdirector = true;
          directorchoosen = -1;
@@ -352,7 +351,7 @@ void* console_thread::Entry() {
    /* Initialize Console TLS context */
    if (cons && (cons->tls_enable || cons->tls_require)) {
       /* Generate passphrase prompt */
-      bsnprintf(buf, sizeof(buf), "Passphrase for Console \"%s\" TLS private key: ", cons->hdr.name);
+      bsnprintf(buf, sizeof(buf), _("Passphrase for Console \"%s\" TLS private key: "), cons->hdr.name);
 
       /* Initialize TLS context:
        * Args: CA certfile, CA certdir, Certfile, Keyfile,
@@ -373,7 +372,7 @@ void* console_thread::Entry() {
    /* Initialize Director TLS context */
    if (dir->tls_enable || dir->tls_require) {
       /* Generate passphrase prompt */
-      bsnprintf(buf, sizeof(buf), "Passphrase for Director \"%s\" TLS private key: ", dir->hdr.name);
+      bsnprintf(buf, sizeof(buf), _("Passphrase for Director \"%s\" TLS private key: "), dir->hdr.name);
 
       /* Initialize TLS context:
        * Args: CA certfile, CA certdir, Certfile, Keyfile,
@@ -391,11 +390,11 @@ void* console_thread::Entry() {
    }
 
 
-   UA_sock = bnet_connect(&jcr, 3, 3, "Director daemon",
+   UA_sock = bnet_connect(&jcr, 3, 3, _("Director daemon"),
       dir->address, NULL, dir->DIRport, 0);
       
    if (UA_sock == NULL) {
-      csprint("Failed to connect to the director\n");
+      csprint(_("Failed to connect to the director\n"));
       csprint(NULL, CS_END);
       csprint(NULL, CS_DISCONNECTED);
       csprint(NULL, CS_TERMINATED);
@@ -405,7 +404,7 @@ void* console_thread::Entry() {
       return NULL;
    }
 
-   csprint("Connected\n");
+   csprint(_("Connected\n"));
 
    jcr.dir_bsock = UA_sock;
    if (!authenticate_director(&jcr, dir, cons)) {
@@ -440,10 +439,10 @@ void* console_thread::Entry() {
          }
          else if (UA_sock->msglen == BNET_HEARTBEAT) {
             bnet_sig(UA_sock, BNET_HB_RESPONSE);
-            csprint("<< Heartbeat signal received, answered. >>\n", CS_DEBUG);
+            csprint(_("<< Heartbeat signal received, answered. >>\n"), CS_DEBUG);
          }
          else {
-            csprint("<< Unexpected signal received : ", CS_DEBUG);
+            csprint(_("<< Unexpected signal received : "), CS_DEBUG);
             csprint(bnet_sig_to_ascii(UA_sock), CS_DEBUG);
             csprint(">>\n", CS_DEBUG);
          }
@@ -461,7 +460,7 @@ void* console_thread::Entry() {
    
    csprint(NULL, CS_DISCONNECTED);
 
-   csprint("Connection terminated\n");
+   csprint(_("Connection terminated\n"));
    
    UA_sock = NULL;
 
index 4bd7bc96545e8ddd3e6e6bb5168c451c95cc06cd..0e6e5eca942d825a27abca8417978a2036d701b3 100644 (file)
@@ -66,6 +66,10 @@ IMPLEMENT_APP(MyApp)
 // 'Main program' equivalent: the program execution "starts" here
 bool MyApp::OnInit()
 {
+   setlocale(LC_ALL, "");
+   bindtextdomain("bacula", LOCALEDIR);
+   textdomain("bacula");
+
    long posx, posy, sizex, sizey;
    int displayx, displayy;
    InitWinAPIWrapper();
@@ -89,12 +93,12 @@ bool MyApp::OnInit()
       }
    }
 
-   wxbMainFrame *frame = wxbMainFrame::CreateInstance(wxT("Bacula wx-console"),
+   wxbMainFrame *frame = wxbMainFrame::CreateInstance(wxT(_("Bacula wx-console")),
                          wxPoint(posx, posy), wxSize(sizex, sizey));
 
    frame->Show(TRUE);
 
-   frame->Print(wxString(wxT("Welcome to bacula wx-console ")) << wxT(VERSION) << wxT(" (") << wxT(BDATE) << wxT(")!\n"), CS_DEBUG);
+   frame->Print(wxString::Format(wxT(_("Welcome to bacula wx-console %s (%s)!\n")), wxT(VERSION), wxT(BDATE)), CS_DEBUG);
 
    frame->StartConsoleThread(wxT(""));
    
index 7894f37fd627258c7591770f4c1e375884b172e6..2cba2fdcc584e8ea76d4eaafeadd9a2bc9699af0 100644 (file)
@@ -38,7 +38,7 @@ BEGIN_EVENT_TABLE(wxbConfigFileEditor, wxDialog)
 END_EVENT_TABLE()
 
 wxbConfigFileEditor::wxbConfigFileEditor(wxWindow* parent, wxString filename):
-      wxDialog(parent, -1, wxT("Config file editor"), wxDefaultPosition, wxSize(500, 300),
+      wxDialog(parent, -1, wxT(_("Config file editor")), wxDefaultPosition, wxSize(500, 300),
                    wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) {
    this->filename = filename;
    
@@ -54,8 +54,8 @@ wxbConfigFileEditor::wxbConfigFileEditor(wxWindow* parent, wxString filename):
    mainSizer->AddGrowableRow(0);
    
    wxBoxSizer *bottomsizer = new wxBoxSizer(wxHORIZONTAL);
-   bottomsizer->Add(new wxButton(this, Save, wxT("Save and close")), 0, wxALL, 10);
-   bottomsizer->Add(new wxButton(this, Quit, wxT("Close without saving")), 0, wxALL, 10);
+   bottomsizer->Add(new wxButton(this, Save, wxT(_("Save and close"))), 0, wxALL, 10);
+   bottomsizer->Add(new wxButton(this, Quit, wxT(_("Close without saving"))), 0, wxALL, 10);
    
    mainSizer->Add(textCtrl, 1, wxEXPAND);
    mainSizer->Add(bottomsizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL);
@@ -66,7 +66,7 @@ wxbConfigFileEditor::wxbConfigFileEditor(wxWindow* parent, wxString filename):
    
    if (!filen.FileExists()) {
       (*textCtrl) << wxT("#\n");
-      (*textCtrl) << wxT("# Bacula wx-console Configuration File\n");
+      (*textCtrl) << wxT(_("# Bacula wx-console Configuration File\n"));
       (*textCtrl) << wxT("#\n");
       (*textCtrl) << wxT("\n");
       (*textCtrl) << wxT("Director {\n");
@@ -97,7 +97,8 @@ wxbConfigFileEditor::~wxbConfigFileEditor() {
 void wxbConfigFileEditor::OnSave(wxCommandEvent& event) {
    wxFile file(filename, wxFile::write);
    if (!file.IsOpened()) {
-      wxMessageBox(wxString(wxT("Unable to write to ")) << filename << wxT("\n"), wxT("Error while saving"),
+      wxMessageBox(wxString::Format(wxT(_("Unable to write to %s\n")), filename.c_str()),
+                        wxT(_("Error while saving")),
                         wxOK | wxICON_ERROR, this);
       EndModal(wxCANCEL);
       return;
index 262e98dcdda558b96dc49a62722309714dc966fd..e8a6f56306d4ac96b2864f9115745c8c6caa2548 100644 (file)
@@ -177,18 +177,18 @@ wxbConfigPanel::wxbConfigPanel(wxWindow* parent, wxbConfig* config, wxString tit
    
    wxBoxSizer* restoreBottomSizer = new wxBoxSizer(wxHORIZONTAL);
    
-   cfgOk = new wxButton(this, ok, wxT("OK"), wxDefaultPosition, wxSize(70, 25));
+   cfgOk = new wxButton(this, ok, wxT(_("OK")), wxDefaultPosition, wxSize(70, 25));
    restoreBottomSizer->Add(cfgOk, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
 
    if (apply != -1) {
-      cfgApply = new wxButton(this, apply, wxT("Apply"), wxDefaultPosition, wxSize(70, 25));
+      cfgApply = new wxButton(this, apply, wxT(_("Apply")), wxDefaultPosition, wxSize(70, 25));
       restoreBottomSizer->Add(cfgApply, 1, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 10);
    }
    else {
       cfgApply = NULL;
    }
 
-   cfgCancel = new wxButton(this, cancel, wxT("Cancel"), wxDefaultPosition, wxSize(70, 25));
+   cfgCancel = new wxButton(this, cancel, wxT(_("Cancel")), wxDefaultPosition, wxSize(70, 25));
    restoreBottomSizer->Add(cfgCancel, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, 10);
    
    mainSizer->Add(restoreBottomSizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL, 5);
index b3a93f41997be54bcabd8b5da91af7ee40a4754a..6037ad582784efbccbbe1b4ffad3cc6e5004f8b5 100644 (file)
@@ -58,7 +58,7 @@ void wxbHistoryTextCtrl::HistoryAdd(wxString cmd) {
 
 void wxbHistoryTextCtrl::SetValue(const wxString& value) {
    if (value == wxT("")) {
-      help->SetLabel(wxT("Type your command below:"));
+      help->SetLabel(wxT(_("Type your command below:")));
    }
    wxTextCtrl::SetValue(value);
 }
@@ -93,7 +93,7 @@ void wxbHistoryTextCtrl::OnKeyUp(wxKeyEvent& event) {
    else if (GetValue() != wxT("")) {
       wxbCommands::iterator it;
       wxString key;
-      wxString helptext = wxT("Unknown command.");
+      wxString helptext = wxT(_("Unknown command."));
       int found = 0;      
       for( it = commands.begin(); it != commands.end(); ++it ) {         
          if (it->first.Find(GetValue()) == 0) {
@@ -102,7 +102,7 @@ void wxbHistoryTextCtrl::OnKeyUp(wxKeyEvent& event) {
                helptext += wxT(" ") + it->first;
             }
             else if (found > 1) {
-               helptext = wxT("Possible completions: ") + key + wxT(" ") + it->first;
+               helptext = wxT(_("Possible completions: ")) + key + wxT(" ") + it->first;
             }
             else { // (found == 1)
                helptext = it->first + wxT(": ") + it->second;
@@ -129,7 +129,7 @@ void wxbHistoryTextCtrl::OnKeyUp(wxKeyEvent& event) {
       }
    }
    else {
-      help->SetLabel(wxT("Type your command below:"));
+      help->SetLabel(wxT(_("Type your command below:")));
       event.Skip();
    }
 }
index 4396dcfbdae397d19f8767a8d3cfc04e58771f9b..7c1cd9edcc5158ff8abb090f07000ccd093ced92 100644 (file)
@@ -224,20 +224,20 @@ wxbMainFrame::wxbMainFrame(const wxString& title, const wxPoint& pos, const wxSi
 
    // the "About" item should be in the help menu
    wxMenu *helpMenu = new wxMenu;
-   helpMenu->Append(Minimal_About, _T("&About...\tF1"), _T("Show about dialog"));
+   helpMenu->Append(Minimal_About, _T(_("&About...\tF1")), _T(_("Show about dialog")));
 
-   menuFile->Append(MenuConnect, _T("Connect"), _T("Connect to the director"));
-   menuFile->Append(MenuDisconnect, _T("Disconnect"), _T("Disconnect of the director"));
+   menuFile->Append(MenuConnect, _T(_("Connect")), _T(_("Connect to the director")));
+   menuFile->Append(MenuDisconnect, _T(_("Disconnect")), _T(_("Disconnect of the director")));
    menuFile->AppendSeparator();
-   menuFile->Append(ChangeConfigFile, _T("Change of configuration file"), _T("Change your default configuration file"));
-   menuFile->Append(EditConfigFile, _T("Edit your configuration file"), _T("Edit your configuration file"));
+   menuFile->Append(ChangeConfigFile, _T(_("Change of configuration file")), _T(_("Change your default configuration file")));
+   menuFile->Append(EditConfigFile, _T(_("Edit your configuration file")), _T(_("Edit your configuration file")));
    menuFile->AppendSeparator();
-   menuFile->Append(Minimal_Quit, _T("E&xit\tAlt-X"), _T("Quit this program"));
+   menuFile->Append(Minimal_Quit, _T(_("E&xit\tAlt-X")), _T(_("Quit this program")));
 
    // now append the freshly created menu to the menu bar...
    wxMenuBar *menuBar = new wxMenuBar();
-   menuBar->Append(menuFile, _T("&File"));
-   menuBar->Append(helpMenu, _T("&Help"));
+   menuBar->Append(menuFile, _T(_("&File")));
+   menuBar->Append(helpMenu, _T(_("&Help")));
 
    // ... and attach this menu bar to the frame
    SetMenuBar(menuBar);
@@ -245,7 +245,7 @@ wxbMainFrame::wxbMainFrame(const wxString& title, const wxPoint& pos, const wxSi
 
    CreateStatusBar(1);
    
-   SetStatusText(wxString(wxT("Welcome to bacula wx-console ")) << wxString(wxT(VERSION)) << wxString (wxT(" (")) << wxString(wxT(BDATE)) << wxString(wxT(")!\n")));
+   SetStatusText(wxString::Format(wxT(_("Welcome to bacula wx-console %s (%s)!\n")), wxT(VERSION), wxT(BDATE)));
 
    wxPanel* global = new wxPanel(this, -1);
 
@@ -254,35 +254,35 @@ wxbMainFrame::wxbMainFrame(const wxString& title, const wxPoint& pos, const wxSi
    /* Console */
 
    wxPanel* consolePanel = new wxPanel(notebook, -1);
-   notebook->AddPage(consolePanel, wxT("Console"));
+   notebook->AddPage(consolePanel, wxT(_("Console")));
 
    consoleCtrl = new wxTextCtrl(consolePanel,-1,wxT(""),wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY | wxTE_RICH);
    wxFont font(10, wxMODERN, wxNORMAL, wxNORMAL);
 #if defined __WXGTK12__ && !defined __WXGTK20__ // Fix for "chinese" fonts under gtk+ 1.2
    font.SetDefaultEncoding(wxFONTENCODING_ISO8859_1);
    consoleCtrl->SetDefaultStyle(wxTextAttr(*wxBLACK, wxNullColour, font));
-   Print(wxT("Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"), CS_DEBUG);
+   Print(wxT(_("Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n")), CS_DEBUG);
 #else 
    consoleCtrl->SetDefaultStyle(wxTextAttr(*wxBLACK, wxNullColour, font));
 #if (wxUSE_UNICODE == 0) && __WXGTK20__
-   Print(wxT("Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode support when handling non-ASCII filenames: Every non-ASCII character in such filenames will be replaced by an interrogation mark.\nIf this behaviour disturbs you, please build wx-console against a Unicode version of wxWidgets for GTK+ 2.0.\n---\n"), CS_DEBUG);   
+   Print(wxT(_("Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode support when handling non-ASCII filenames: Every non-ASCII character in such filenames will be replaced by an interrogation mark.\nIf this behaviour disturbs you, please build wx-console against a Unicode version of wxWidgets for GTK+ 2.0.\n---\n")), CS_DEBUG);   
 #endif
 #endif
 
-   helpCtrl = new wxStaticText(consolePanel, -1, wxT("Type your command below:"));
+   helpCtrl = new wxStaticText(consolePanel, -1, wxT(_("Type your command below:")));
 
    wxFlexGridSizer *consoleSizer = new wxFlexGridSizer(4, 1, 0, 0);
    consoleSizer->AddGrowableCol(0);
    consoleSizer->AddGrowableRow(0);
 
    typeCtrl = new wxbHistoryTextCtrl(helpCtrl, consolePanel,TypeText,wxT(""),wxDefaultPosition,wxSize(200,20));
-   sendButton = new wxButton(consolePanel, SendButton, wxT("Send"));
+   sendButton = new wxButton(consolePanel, SendButton, wxT(_("Send")));
    
    wxFlexGridSizer *typeSizer = new wxFlexGridSizer(1, 2, 0, 0);
    typeSizer->AddGrowableCol(0);
    typeSizer->AddGrowableRow(0);
 
-   //typeSizer->Add(new wxStaticText(consolePanel, -1, "Command: "), 0, wxALIGN_CENTER | wxALL, 0);
+   //typeSizer->Add(new wxStaticText(consolePanel, -1, _("Command: ")), 0, wxALIGN_CENTER | wxALL, 0);
    typeSizer->Add(typeCtrl, 1, wxEXPAND | wxALL, 0);
    typeSizer->Add(sendButton, 1, wxEXPAND | wxLEFT, 5);
 
@@ -353,8 +353,8 @@ void wxbMainFrame::StartConsoleThread(const wxString& config) {
       configfile = wxT("");
       
       if (((wxTheApp->argc % 2) != 1)) {
-         Print(wxT("Error while parsing command line arguments, using defaults.\n"), CS_DEBUG);
-         Print(wxT("Usage: wx-console [-c configfile] [-w tmp]\n"), CS_DEBUG);
+         Print(wxT(_("Error while parsing command line arguments, using defaults.\n")), CS_DEBUG);
+         Print(wxT(_("Usage: wx-console [-c configfile] [-w tmp]\n")), CS_DEBUG);
       }
       else {
          for (int c = 1; c < wxTheApp->argc; c += 2) {
@@ -365,8 +365,8 @@ void wxbMainFrame::StartConsoleThread(const wxString& config) {
                console_thread::SetWorkingDirectory(wxTheApp->argv[c+1]);
             }
             if (wxTheApp->argv[c][0] != '-') {
-               Print(wxT("Error while parsing command line arguments, using defaults.\n"), CS_DEBUG);
-               Print(wxT("Usage: wx-console [-c configfile] [-w tmp]\n"), CS_DEBUG);
+               Print(wxT(_("Error while parsing command line arguments, using defaults.\n")), CS_DEBUG);
+               Print(wxT(_("Usage: wx-console [-c configfile] [-w tmp]\n")), CS_DEBUG);
                break;
             }
          }
@@ -393,10 +393,12 @@ void wxbMainFrame::StartConsoleThread(const wxString& config) {
             wxConfig::Get()->Write(wxT("/ConfigFile"), configfile);
    
             int answer = wxMessageBox(
-                              wxString(wxT("It seems that it is the first time you run wx-console.\n")) <<
-                              wxString(wxT("This file (")) << configfile << wxString(wxT(") has been choosen as default configuration file.\n")) << 
-                              wxString(wxT("Do you want to edit it? (if you click No you will have to select another file)")),
-                              wxT("First run"),
+                              wxString::Format(wxT(_(
+                              "It seems that it is the first time you run wx-console.\n"
+                              "This file (%s) has been choosen as default configuration file.\n"
+                              "Do you want to edit it? (if you click No you will have to select another file)")),
+                              configfile.c_str()),
+                              wxT(_("First run")),
                               wxYES_NO | wxICON_QUESTION, this);
             if (answer == wxYES) {
                wxbConfigFileEditor(this, configfile).ShowModal();
@@ -412,9 +414,11 @@ void wxbMainFrame::StartConsoleThread(const wxString& config) {
    
    while (err != wxT("")) {
       int answer = wxMessageBox(
-                        wxString(wxT("Unable to read ")) << configfile << wxString(wxT("\n")) << 
-                           err << wxString(wxT("\nDo you want to choose another one? (Press no to edit this file)")),
-                        wxT("Unable to read configuration file"),
+                        wxString::Format(wxT(_(
+                           "Unable to read %s\n"
+                           "Error: %s\n"
+                           "Do you want to choose another one? (Press no to edit this file)")), configfile.c_str(), err.c_str()),
+                        wxT(_("Unable to read configuration file")),
                         wxYES_NO | wxCANCEL | wxICON_ERROR, this);
       if (answer == wxNO) {
          wxbConfigFileEditor(this, configfile).ShowModal();
@@ -426,7 +430,7 @@ void wxbMainFrame::StartConsoleThread(const wxString& config) {
          return;
       }
       else { // (answer == wxYES)
-         configfile = wxFileSelector(wxT("Please choose a configuration file to use"));
+         configfile = wxFileSelector(wxT(_("Please choose a configuration file to use")));
          if ( !configfile.empty() ) {
             err = console_thread::LoadConfig(configfile);
          }
@@ -439,8 +443,8 @@ void wxbMainFrame::StartConsoleThread(const wxString& config) {
       
       if ((err == wxT("")) && (config == wxT(""))) {
          answer = wxMessageBox(
-                           wxT("This configuration file has been successfully read, use it as default?"),
-                           wxT("Configuration file read successfully"),
+                           wxT(_("This configuration file has been successfully read, use it as default?")),
+                           wxT(_("Configuration file read successfully")),
                            wxYES_NO | wxICON_QUESTION, this);
          if (answer == wxYES) {
               wxConfigBase::Get()->Write(wxT("/ConfigFile"), configfile);
@@ -450,12 +454,12 @@ void wxbMainFrame::StartConsoleThread(const wxString& config) {
    }
    
    // former was csprint
-   Print(wxString(wxT("Using this configuration file: ")) << configfile << wxT("\n"), CS_DEBUG);
+   Print(wxString::Format(wxT(_("Using this configuration file: %s\n")), configfile.c_str()), CS_DEBUG);
    
    ct = new console_thread();
    ct->Create();
    ct->Run();
-   SetStatusText(wxT("Connecting to the director..."));
+   SetStatusText(wxT(_("Connecting to the director...")));
 }
 
 /* Register a new wxbDataParser */
@@ -470,7 +474,7 @@ void wxbMainFrame::Unregister(wxbDataParser* dp) {
       parsers.RemoveAt(index);
    }
    else {
-      Print(wxT("Failed to unregister a data parser !"), CS_DEBUG);
+      Print(wxT(_("Failed to unregister a data parser !")), CS_DEBUG);
    }
 }
 
@@ -478,7 +482,7 @@ void wxbMainFrame::Unregister(wxbDataParser* dp) {
 
 void wxbMainFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 {
-   Print(wxT("Quitting.\n"), CS_DEBUG);
+   Print(wxT(_("Quitting.\n")), CS_DEBUG);
    if (ct != NULL) {
       ct->Delete();
       ct = NULL;
@@ -493,20 +497,20 @@ void wxbMainFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 void wxbMainFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 {
    wxString msg;
-   msg.Printf( _T("Welcome to Bacula wx-console.\nWritten by Nicolas Boichat <nicolas@boichat.ch>\n(C) 2004 Kern Sibbald and John Walker\n"));
+   msg.Printf( _T(_("Welcome to Bacula wx-console.\nWritten by Nicolas Boichat <nicolas@boichat.ch>\n(C) 2004 Kern Sibbald and John Walker\n")));
 
-   wxMessageBox(msg, _T("About Bacula wx-console"), wxOK | wxICON_INFORMATION, this);
+   wxMessageBox(msg, _T(_("About Bacula wx-console")), wxOK | wxICON_INFORMATION, this);
 }
 
 void wxbMainFrame::OnChangeConfig(wxCommandEvent& event) {
    wxString oriconfigfile;
    wxConfig::Get()->Read(wxT("/ConfigFile"), &oriconfigfile);
-   wxString configfile = wxFileSelector(wxT("Please choose your default configuration file"));
+   wxString configfile = wxFileSelector(wxT(_("Please choose your default configuration file")));
    if ( !configfile.empty() ) {
       if (oriconfigfile != configfile) {
          int answer = wxMessageBox(
-                           wxT("Use this configuration file as default?"),
-                           wxT("Configuration file"),
+                           wxT(_("Use this configuration file as default?")),
+                           wxT(_("Configuration file")),
                            wxYES_NO | wxICON_QUESTION, this);
          if (answer == wxYES) {
               wxConfigBase::Get()->Write(wxT("/ConfigFile"), configfile);
@@ -570,19 +574,20 @@ void wxbMainFrame::Print(wxString str, int status)
    if (status == CS_TERMINATED) {
       consoleCtrl->AppendText(consoleBuffer);
       consoleBuffer = wxT("");
-      SetStatusText(wxT("Console thread terminated."));
+      SetStatusText(wxT(_("Console thread terminated.")));
       consoleCtrl->PageDown();
       ct = NULL;
       DisablePanels();
-      int answer = wxMessageBox(wxT("Connection to the director lost. Quit program?"), wxT("Connection lost"),
+      int answer = wxMessageBox( wxT(_("Connection to the director lost. Quit program?")), 
+                                 wxT(_("Connection lost")),
                         wxYES_NO | wxICON_EXCLAMATION, this);
       if (answer == wxYES) {
          frame = NULL;
          Close(true);
       }
       menuFile->Enable(MenuConnect, true);
-      menuFile->SetLabel(MenuConnect, wxT("Connect"));
-      menuFile->SetHelpString(MenuConnect, wxT("Connect to the director"));
+      menuFile->SetLabel(MenuConnect, wxT(_("Connect")));
+      menuFile->SetHelpString(MenuConnect, wxT(_("Connect to the director")));
       menuFile->Enable(MenuDisconnect, false);
       menuFile->Enable(ChangeConfigFile, true);
       menuFile->Enable(EditConfigFile, true);
@@ -590,7 +595,7 @@ void wxbMainFrame::Print(wxString str, int status)
    }
    
    if (status == CS_CONNECTED) {
-      SetStatusText(wxT("Connected to the director."));
+      SetStatusText(wxT(_("Connected to the director.")));
       typeCtrl->ClearCommandList();
       wxbDataTokenizer* dt = wxbUtils::WaitForEnd(wxT(".help"), true);
       int i, j;
@@ -604,8 +609,8 @@ void wxbMainFrame::Print(wxString str, int status)
       }
       EnablePanels();
       menuFile->Enable(MenuConnect, true);
-      menuFile->SetLabel(MenuConnect, wxT("Reconnect"));
-      menuFile->SetHelpString(MenuConnect, wxT("Reconnect to the director"));
+      menuFile->SetLabel(MenuConnect, wxT(_("Reconnect")));
+      menuFile->SetHelpString(MenuConnect, wxT(_("Reconnect to the director")));
       menuFile->Enable(MenuDisconnect, true);
       menuFile->Enable(ChangeConfigFile, true);
       menuFile->Enable(EditConfigFile, true);
@@ -615,7 +620,7 @@ void wxbMainFrame::Print(wxString str, int status)
       consoleCtrl->AppendText(consoleBuffer);
       consoleBuffer = wxT("");
       consoleCtrl->PageDown();
-      SetStatusText(wxT("Disconnected of the director."));
+      SetStatusText(wxT(_("Disconnected of the director.")));
       DisablePanels();
       return;
    }
@@ -634,7 +639,7 @@ void wxbMainFrame::Print(wxString str, int status)
       }
          
       if ((status == CS_PROMPT) && (promptcaught < 1) && (promptparser->isPrompt())) {
-         Print(wxT("Unexpected question has been received.\n"), CS_DEBUG);
+         Print(wxT(_("Unexpected question has been received.\n")), CS_DEBUG);
 //         Print(wxString("(") << promptparser->getIntroString() << "/-/" << promptparser->getQuestionString() << ")\n", CS_DEBUG);
          
          wxString message;
@@ -657,7 +662,7 @@ void wxbMainFrame::Print(wxString str, int status)
             }
             
             int res = ::wxGetSingleChoiceIndex(message,
-               wxT("wx-console: unexpected director's question."), n, choices, this);
+               wxT(_("wx-console: unexpected director's question.")), n, choices, this);
             if (res == -1) { //Cancel pressed
                Send(wxT(".\n"));
             }
@@ -672,7 +677,8 @@ void wxbMainFrame::Print(wxString str, int status)
          }
          else {
             Send(::wxGetTextFromUser(message,
-               wxT("wx-console: unexpected director's question."), wxT(""), this) + wxT("\n"));
+               wxT(_("wx-console: unexpected director's question.")),
+               wxT(""), this) + wxT("\n"));
          }
       }
    }
index 0d7f04b39e09f7db04ac8d050e72a4af68485d4b..ecb72d1bb3b508f62ede21077180426d55155563 100644 (file)
@@ -255,10 +255,10 @@ wxbRestorePanel::wxbRestorePanel(wxWindow* parent): wxbPanel(parent) {
    firstSizer->AddGrowableCol(0);
    firstSizer->AddGrowableRow(0);
 
-   start = new wxButton(this, RestoreStart, wxT("Enter restore mode"), wxDefaultPosition, wxSize(150, 30));
+   start = new wxButton(this, RestoreStart, wxT(_("Enter restore mode")), wxDefaultPosition, wxSize(150, 30));
    firstSizer->Add(start, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 10);
 
-   cancel = new wxButton(this, RestoreCancel, wxT("Cancel restore"), wxDefaultPosition, wxSize(150, 30));
+   cancel = new wxButton(this, RestoreCancel, wxT(_("Cancel restore")), wxDefaultPosition, wxSize(150, 30));
    firstSizer->Add(cancel, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_RIGHT, 10);
 
    wxString elist[1];
@@ -284,11 +284,11 @@ wxbRestorePanel::wxbRestorePanel(wxWindow* parent): wxbPanel(parent) {
    treeSizer->Add(tree, 1, wxEXPAND, 0);
    
    wxBoxSizer *treeCtrlSizer = new wxBoxSizer(wxHORIZONTAL);
-   treeadd = new wxButton(treePanel, TreeAdd, wxT("Add"), wxDefaultPosition, wxSize(60, 25));
+   treeadd = new wxButton(treePanel, TreeAdd, wxT(_("Add")), wxDefaultPosition, wxSize(60, 25));
    treeCtrlSizer->Add(treeadd, 0, wxLEFT | wxRIGHT, 3);
-   treeremove = new wxButton(treePanel, TreeRemove, wxT("Remove"), wxDefaultPosition, wxSize(60, 25));
+   treeremove = new wxButton(treePanel, TreeRemove, wxT(_("Remove")), wxDefaultPosition, wxSize(60, 25));
    treeCtrlSizer->Add(treeremove, 0, wxLEFT | wxRIGHT, 3);
-   treerefresh = new wxButton(treePanel, TreeRefresh, wxT("Refresh"), wxDefaultPosition, wxSize(60, 25));
+   treerefresh = new wxButton(treePanel, TreeRefresh, wxT(_("Refresh")), wxDefaultPosition, wxSize(60, 25));
    treeCtrlSizer->Add(treerefresh, 0, wxLEFT | wxRIGHT, 3);
    
    treeSizer->Add(treeCtrlSizer, 1, wxALIGN_CENTER_HORIZONTAL, 0);
@@ -307,42 +307,42 @@ wxbRestorePanel::wxbRestorePanel(wxWindow* parent): wxbPanel(parent) {
 
    wxListItem info;
    info.SetMask(wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT);
-   info.SetText(wxT("M"));
+   info.SetText(wxT(_("M")));
    info.SetAlign(wxLIST_FORMAT_CENTER);
    list->InsertColumn(0, info);
    
-   info.SetText(wxT("Filename"));
+   info.SetText(wxT(_("Filename")));
    info.SetAlign(wxLIST_FORMAT_LEFT);
    list->InsertColumn(1, info);
 
-   info.SetText(wxT("Size"));
+   info.SetText(wxT(_("Size")));
    info.SetAlign(wxLIST_FORMAT_RIGHT);   
    list->InsertColumn(2, info);
 
-   info.SetText(wxT("Date"));
+   info.SetText(wxT(_("Date")));
    info.SetAlign(wxLIST_FORMAT_LEFT);
    list->InsertColumn(3, info);
 
-   info.SetText(wxT("Perm."));
+   info.SetText(wxT(_("Perm.")));
    info.SetAlign(wxLIST_FORMAT_LEFT);
    list->InsertColumn(4, info);
    
-   info.SetText(wxT("User"));
+   info.SetText(wxT(_("User")));
    info.SetAlign(wxLIST_FORMAT_RIGHT);
    list->InsertColumn(5, info);
    
-   info.SetText(wxT("Group"));
+   info.SetText(wxT(_("Group")));
    info.SetAlign(wxLIST_FORMAT_RIGHT);
    list->InsertColumn(6, info);
     
    listSizer->Add(list, 1, wxEXPAND, 0);
    
    wxBoxSizer *listCtrlSizer = new wxBoxSizer(wxHORIZONTAL);
-   listadd = new wxButton(listPanel, ListAdd, wxT("Add"), wxDefaultPosition, wxSize(60, 25));
+   listadd = new wxButton(listPanel, ListAdd, wxT(_("Add")), wxDefaultPosition, wxSize(60, 25));
    listCtrlSizer->Add(listadd, 0, wxLEFT | wxRIGHT, 5);
-   listremove = new wxButton(listPanel, ListRemove, wxT("Remove"), wxDefaultPosition, wxSize(60, 25));
+   listremove = new wxButton(listPanel, ListRemove, wxT(_("Remove")), wxDefaultPosition, wxSize(60, 25));
    listCtrlSizer->Add(listremove, 0, wxLEFT | wxRIGHT, 5);
-   listrefresh = new wxButton(listPanel, ListRefresh, wxT("Refresh"), wxDefaultPosition, wxSize(60, 25));
+   listrefresh = new wxButton(listPanel, ListRefresh, wxT(_("Refresh")), wxDefaultPosition, wxSize(60, 25));
    listCtrlSizer->Add(listrefresh, 0, wxLEFT | wxRIGHT, 5);
    
    listSizer->Add(listCtrlSizer, 1, wxALIGN_CENTER_HORIZONTAL, 0);
@@ -356,31 +356,31 @@ wxbRestorePanel::wxbRestorePanel(wxWindow* parent): wxbPanel(parent) {
    treelistPanel->Show(false);
    
    wxbConfig* config = new wxbConfig();
-   config->Add(new wxbConfigParam(wxT("Job Name"), ConfigJobName, choice, 0, elist));
-   config->Add(new wxbConfigParam(wxT("Client"), ConfigClient, choice, 0, elist));
-   config->Add(new wxbConfigParam(wxT("Fileset"), ConfigFileset, choice, 0, elist));
-   config->Add(new wxbConfigParam(wxT("Pool"), ConfigPool, choice, 0, elist));
-   config->Add(new wxbConfigParam(wxT("Storage"), ConfigStorage, choice, 0, elist));
-   config->Add(new wxbConfigParam(wxT("Before"), ConfigWhen, choice, 0, elist));
+   config->Add(new wxbConfigParam(wxT(_("Job Name")), ConfigJobName, choice, 0, elist));
+   config->Add(new wxbConfigParam(wxT(_("Client")), ConfigClient, choice, 0, elist));
+   config->Add(new wxbConfigParam(wxT(_("Fileset")), ConfigFileset, choice, 0, elist));
+   config->Add(new wxbConfigParam(wxT(_("Pool")), ConfigPool, choice, 0, elist));
+   config->Add(new wxbConfigParam(wxT(_("Storage")), ConfigStorage, choice, 0, elist));
+   config->Add(new wxbConfigParam(wxT(_("Before")), ConfigWhen, choice, 0, elist));
    
-   configPanel = new wxbConfigPanel(this, config, wxT("Please configure parameters concerning files to restore :"), RestoreStart, RestoreCancel, -1);
+   configPanel = new wxbConfigPanel(this, config, wxT(_("Please configure parameters concerning files to restore :")), RestoreStart, RestoreCancel, -1);
    
    configPanel->Show(true);
    configPanel->Enable(false);
    
    config = new wxbConfig();
-   config->Add(new wxbConfigParam(wxT("Job Name"), -1, text, wxT("")));
-   config->Add(new wxbConfigParam(wxT("Bootstrap"), -1, text, wxT("")));
-   config->Add(new wxbConfigParam(wxT("Where"), ConfigWhere, modifiableText, wxT("")));
-   wxString erlist[] = {wxT("always"), wxT("if newer"), wxT("if older"), wxT("never")};
-   config->Add(new wxbConfigParam(wxT("Replace"), ConfigReplace, choice, 4, erlist));
-   config->Add(new wxbConfigParam(wxT("Fileset"), ConfigFileset, choice, 0, erlist));
-   config->Add(new wxbConfigParam(wxT("Client"), ConfigClient, choice, 0, erlist));
-   config->Add(new wxbConfigParam(wxT("Storage"), ConfigStorage, choice, 0, erlist));
-   config->Add(new wxbConfigParam(wxT("When"), ConfigWhen, modifiableText, wxT("")));
-   config->Add(new wxbConfigParam(wxT("Priority"), ConfigPriority, modifiableText, wxT("")));
-   
-   restorePanel = new wxbConfigPanel(this, config, wxT("Please configure parameters concerning files restoration :"), ConfigOk, ConfigCancel, ConfigApply);
+   config->Add(new wxbConfigParam(wxT(_("Job Name")), -1, text, wxT("")));
+   config->Add(new wxbConfigParam(wxT(_("Bootstrap")), -1, text, wxT("")));
+   config->Add(new wxbConfigParam(wxT(_("Where")), ConfigWhere, modifiableText, wxT("")));
+   wxString erlist[] = {wxT(_("always")), wxT(_("if newer")), wxT(_("if older")), wxT(_("never"))};
+   config->Add(new wxbConfigParam(wxT(_("Replace")), ConfigReplace, choice, 4, erlist));
+   config->Add(new wxbConfigParam(wxT(_("Fileset")), ConfigFileset, choice, 0, erlist));
+   config->Add(new wxbConfigParam(wxT(_("Client")), ConfigClient, choice, 0, erlist));
+   config->Add(new wxbConfigParam(wxT(_("Storage")), ConfigStorage, choice, 0, erlist));
+   config->Add(new wxbConfigParam(wxT(_("When")), ConfigWhen, modifiableText, wxT("")));
+   config->Add(new wxbConfigParam(wxT(_("Priority")), ConfigPriority, modifiableText, wxT("")));
+   
+   restorePanel = new wxbConfigPanel(this, config, wxT(_("Please configure parameters concerning files restoration :")), ConfigOk, ConfigCancel, ConfigApply);
     
    restorePanel->Show(false);
    
@@ -423,7 +423,7 @@ wxbRestorePanel::~wxbRestorePanel() {
   ----------------------------------------------------------------------------*/
 
 wxString wxbRestorePanel::GetTitle() {
-   return wxT("Restore");
+   return wxT(_("Restore"));
 }
 
 void wxbRestorePanel::EnablePanel(bool enable) {
@@ -445,23 +445,23 @@ void wxbRestorePanel::EnablePanel(bool enable) {
 void wxbRestorePanel::CmdStart() {
    unsigned int i;
    if (status == activable) {
-      wxbMainFrame::GetInstance()->SetStatusText(wxT("Getting parameters list."));
+      wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Getting parameters list.")));
       wxbDataTokenizer* dt = wxbUtils::WaitForEnd(wxT(".clients\n"), true, false);
       wxString str;
 
-      configPanel->ClearRowChoices(wxT("Client"));
-      restorePanel->ClearRowChoices(wxT("Client"));
+      configPanel->ClearRowChoices(wxT(_("Client")));
+      restorePanel->ClearRowChoices(wxT(_("Client")));
       
       if (dt->GetCount() == 0) {
-         wxbMainFrame::GetInstance()->SetStatusText(wxT("Error : no clients returned by the director."));
+         wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Error : no clients returned by the director.")));
          return;
       }
       
       for (i = 0; i < dt->GetCount(); i++) {
          str = (*dt)[i];
          str.RemoveLast();
-         configPanel->AddRowChoice(wxT("Client"), str);
-         restorePanel->AddRowChoice(wxT("Client"), str);
+         configPanel->AddRowChoice(wxT(_("Client")), str);
+         restorePanel->AddRowChoice(wxT(_("Client")), str);
       }
           
       delete dt;
@@ -473,19 +473,19 @@ void wxbRestorePanel::CmdStart() {
       
       dt = wxbUtils::WaitForEnd(wxT(".filesets\n"), true, false);
       
-      configPanel->ClearRowChoices(wxT("Fileset"));
-      restorePanel->ClearRowChoices(wxT("Fileset"));
+      configPanel->ClearRowChoices(wxT(_("Fileset")));
+      restorePanel->ClearRowChoices(wxT(_("Fileset")));
     
       if (dt->GetCount() == 0) {
-         wxbMainFrame::GetInstance()->SetStatusText(wxT("Error : no filesets returned by the director."));
+         wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Error : no filesets returned by the director.")));
          return;
       }
       
       for (i = 0; i < dt->GetCount(); i++) {
          str = (*dt)[i];
          str.RemoveLast();
-         configPanel->AddRowChoice(wxT("Fileset"), str);
-         restorePanel->AddRowChoice(wxT("Fileset"), str);
+         configPanel->AddRowChoice(wxT(_("Fileset")), str);
+         restorePanel->AddRowChoice(wxT(_("Fileset")), str);
       }
       
       delete dt;
@@ -497,19 +497,19 @@ void wxbRestorePanel::CmdStart() {
       
       dt = wxbUtils::WaitForEnd(wxT(".storage\n"), true, false);
     
-      configPanel->ClearRowChoices(wxT("Storage"));
-      restorePanel->ClearRowChoices(wxT("Storage"));
+      configPanel->ClearRowChoices(wxT(_("Storage")));
+      restorePanel->ClearRowChoices(wxT(_("Storage")));
     
       if (dt->GetCount() == 0) {
-         wxbMainFrame::GetInstance()->SetStatusText(wxT("Error : no storage returned by the director."));
+         wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Error : no storage returned by the director.")));
          return;
       }
       
       for (i = 0; i < dt->GetCount(); i++) {
          str = (*dt)[i];
          str.RemoveLast();
-         configPanel->AddRowChoice(wxT("Storage"), str);
-         restorePanel->AddRowChoice(wxT("Storage"), str);
+         configPanel->AddRowChoice(wxT(_("Storage")), str);
+         restorePanel->AddRowChoice(wxT(_("Storage")), str);
       }
       
       delete dt;
@@ -521,20 +521,20 @@ void wxbRestorePanel::CmdStart() {
       
       dt = wxbUtils::WaitForEnd(wxT(".jobs\n"), true, false);
     
-      configPanel->ClearRowChoices(wxT("Job Name"));
+      configPanel->ClearRowChoices(wxT(_("Job Name")));
     
       if (dt->GetCount() == 0) {
-         wxbMainFrame::GetInstance()->SetStatusText(wxT("Error : no jobs returned by the director."));
+         wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Error : no jobs returned by the director.")));
          return;
       }
       
       for (i = 0; i < dt->GetCount(); i++) {
          str = (*dt)[i];
          str.RemoveLast();
-         configPanel->AddRowChoice(wxT("Job Name"), str);
+         configPanel->AddRowChoice(wxT(_("Job Name")), str);
       }
       
-      configPanel->SetRowString(wxT("Job Name"), wxT("RestoreFiles"));
+      configPanel->SetRowString(wxT(_("Job Name")), wxT(_("RestoreFiles")));
       
       delete dt;
       
@@ -545,17 +545,17 @@ void wxbRestorePanel::CmdStart() {
       
       dt = wxbUtils::WaitForEnd(wxT(".pools\n"), true, false);
     
-      configPanel->ClearRowChoices(wxT("Pool"));
+      configPanel->ClearRowChoices(wxT(_("Pool")));
     
       if (dt->GetCount() == 0) {
-         wxbMainFrame::GetInstance()->SetStatusText(wxT("Error : no jobs returned by the director."));
+         wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Error : no jobs returned by the director.")));
          return;
       }
       
       for (i = 0; i < dt->GetCount(); i++) {
          str = (*dt)[i];
          str.RemoveLast();
-         configPanel->AddRowChoice(wxT("Pool"), str);
+         configPanel->AddRowChoice(wxT(_("Pool")), str);
       }
          
       delete dt; 
@@ -569,18 +569,18 @@ void wxbRestorePanel::CmdStart() {
 
       UpdateFirstConfig();
            
-      wxbMainFrame::GetInstance()->SetStatusText(wxT("Please configure your restore parameters."));
+      wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Please configure your restore parameters.")));
    }
    else if (status == entered) {
 /*      if (clientChoice->GetStringSelection().Length() < 1) {
-         wxbMainFrame::GetInstance()->SetStatusText("Please select a client.");
+         wxbMainFrame::GetInstance()->SetStatusText(_("Please select a client."));
          return;
       }
       if (jobChoice->GetStringSelection().Length() < 1) {
-         wxbMainFrame::GetInstance()->SetStatusText("Please select a restore date.");
+         wxbMainFrame::GetInstance()->SetStatusText(_("Please select a restore date."));
          return;
       }*/
-      wxbMainFrame::GetInstance()->SetStatusText(wxT("Building restore tree..."));
+      wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Building restore tree...")));
       
       SetStatus(choosing);
       
@@ -619,7 +619,7 @@ void wxbRestorePanel::CmdStart() {
             str = (*dt)[dt->GetCount()-2];
             str.RemoveLast();
          }
-         wxbMainFrame::GetInstance()->SetStatusText(wxString(wxT("Error while starting restore: ")) << str);
+         wxbMainFrame::GetInstance()->SetStatusText(wxString(wxT(_("Error while starting restore: "))) << str);
          delete dt;
          delete tableparser;
          SetStatus(finished);
@@ -704,12 +704,12 @@ void wxbRestorePanel::CmdStart() {
       }
 
       wxbUtils::WaitForEnd(wxT("unmark *\n"));
-      wxTreeItemId root = tree->AddRoot(configPanel->GetRowString(wxT("Client")), -1, -1, new wxbTreeItemData(wxT("/"), configPanel->GetRowString(wxT("Client")), 0));
+      wxTreeItemId root = tree->AddRoot(configPanel->GetRowString(wxT(_("Client"))), -1, -1, new wxbTreeItemData(wxT("/"), configPanel->GetRowString(wxT(_("Client"))), 0));
       currentTreeItem = root;
       tree->Refresh();
       tree->SelectItem(root);
       CmdList(root);
-      wxbMainFrame::GetInstance()->SetStatusText(wxT("Right click on a file or on a directory, or double-click on its mark to add it to the restore list."));
+      wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Right click on a file or on a directory, or double-click on its mark to add it to the restore list.")));
       tree->Expand(root);
    }
    else if (status == choosing) {
@@ -726,20 +726,19 @@ void wxbRestorePanel::CmdStart() {
       SetStatus(configuring);
 
       for (i = 0; i < dt->GetCount(); i++) {
-         if ((j = (*dt)[i].Find(wxT(" files selected to be restored."))) > -1) {
+         if ((j = (*dt)[i].Find(wxT(_(" files selected to be restored.")))) > -1) {
             (*dt)[i].Mid(0, j).ToLong(&totfilemessages);
             break;
          }
 
-         if ((j = (*dt)[i].Find(wxT(" file selected to be restored."))) > -1) {
+         if ((j = (*dt)[i].Find(wxT(_(" file selected to be restored.")))) > -1) {
             (*dt)[i].Mid(0, j).ToLong(&totfilemessages);
             break;
          }
       }
       
       wxbMainFrame::GetInstance()->SetStatusText(
-         wxString(wxT("Please configure your restore (") )
-            << totfilemessages <<  wxT(" files selected to be restored)..."));
+         wxString::Format(wxT(_("Please configure your restore (%s files selected to be restored)...")), totfilemessages));
       
       UpdateSecondConfig(dt);
       
@@ -749,8 +748,8 @@ void wxbRestorePanel::CmdStart() {
       restorePanel->EnableApply(false);
 
       if (totfilemessages == 0) {
-         wxbMainFrame::GetInstance()->Print(wxT("Restore failed : no file selected.\n"), CS_DEBUG);
-         wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore failed : no file selected."));
+         wxbMainFrame::GetInstance()->Print(wxT(_("Restore failed : no file selected.\n")), CS_DEBUG);
+         wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore failed : no file selected.")));
          SetStatus(finished);
          return;
       }
@@ -760,7 +759,7 @@ void wxbRestorePanel::CmdStart() {
       jobid = wxT("");
       EnableConfig(false);
     
-      wxbMainFrame::GetInstance()->SetStatusText(wxT("Restoring, please wait..."));
+      wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restoring, please wait...")));
     
       wxbDataTokenizer* dt;
     
@@ -773,22 +772,22 @@ void wxbRestorePanel::CmdStart() {
       int j;
             
       for (i = 0; i < dt->GetCount(); i++) {
-         if ((j = (*dt)[i].Find(wxT("Job started. JobId="))) > -1) {
+         if ((j = (*dt)[i].Find(wxT(_("Job started. JobId=")))) > -1) {
             jobid = (*dt)[i].Mid(j+19);
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore started, jobid=") + jobid);
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore started, jobid=")) + jobid);
             break;
          }
 
-         if ((j = (*dt)[i].Find(wxT("Job failed."))) > -1) {
-            wxbMainFrame::GetInstance()->Print(wxT("Restore failed, please look at messages.\n"), CS_DEBUG);
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore failed, please look at messages in console."));
+         if ((j = (*dt)[i].Find(wxT(_("Job failed.")))) > -1) {
+            wxbMainFrame::GetInstance()->Print(wxT(_("Restore failed, please look at messages.\n")), CS_DEBUG);
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore failed, please look at messages in console.")));
             return;
          }
       }
       
       if (jobid == wxT("")) {
-         wxbMainFrame::GetInstance()->Print(wxT("Failed to retrieve jobid.\n"), CS_DEBUG);
-         wxbMainFrame::GetInstance()->SetStatusText(wxT("Failed to retrieve jobid.\n"));
+         wxbMainFrame::GetInstance()->Print(wxT(_("Failed to retrieve jobid.\n")), CS_DEBUG);
+         wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Failed to retrieve jobid.\n")));
          return;         
       }
 
@@ -806,7 +805,7 @@ void wxbRestorePanel::CmdStart() {
       delete dt;
     
       wxDateTime scheduledtime;
-      wxStringTokenizer stkz(restorePanel->GetRowString(wxT("When")), wxT(" "), wxTOKEN_STRTOK);
+      wxStringTokenizer stkz(restorePanel->GetRowString(wxT(_("When"))), wxT(" "), wxTOKEN_STRTOK);
       
       if ((scheduledtime.ParseDate(stkz.GetNextToken()) == NULL) || // Date
            (scheduledtime.ParseTime(stkz.GetNextToken()) == NULL)) { // Time
@@ -814,8 +813,8 @@ void wxbRestorePanel::CmdStart() {
       }
 
       if (scheduledtime.Subtract(currenttime).IsLongerThan(wxTimeSpan::Seconds(150))) {
-         wxbMainFrame::GetInstance()->Print(wxT("Restore is scheduled in more than two minutes, wx-console will not wait for its completion.\n"), CS_DEBUG);
-         wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore is scheduled in more than two minutes, wx-console will not wait for its completion."));
+         wxbMainFrame::GetInstance()->Print(wxT(_("Restore is scheduled in more than two minutes, wx-console will not wait for its completion.\n")), CS_DEBUG);
+         wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore is scheduled in more than two minutes, wx-console will not wait for its completion.")));
          SetStatus(finished);
          return;
       }
@@ -839,72 +838,71 @@ void wxbRestorePanel::CmdStart() {
          status = (*tableparser)[0][7].GetChar(0);
          switch (status) {
          case JS_Created:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job created, but not yet running."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job created, but not yet running.")));
             waitforever = false;
             break;
          case JS_Running:
             wxbMainFrame::GetInstance()->SetStatusText(
-               wxString(wxT("Restore job running, please wait (")) << filemessages << 
-               wxT(" of ") << totfilemessages << wxT(" files restored)..."));
+               wxString::Format(wxT(_("Restore job running, please wait (%d of %d files restored)...")), filemessages, totfilemessages));
             waitforever = true;
             break;
          case JS_Terminated:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job terminated successfully."));
-            wxbMainFrame::GetInstance()->Print(wxT("Restore job terminated successfully.\n"), CS_DEBUG);
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job terminated successfully.")));
+            wxbMainFrame::GetInstance()->Print(wxT(_("Restore job terminated successfully.\n")), CS_DEBUG);
             waitforever = false;
             ended = true;
             break;
          case JS_ErrorTerminated:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job terminated in error, see messages in console."));
-            wxbMainFrame::GetInstance()->Print(wxT("Restore job terminated in error, see messages.\n"), CS_DEBUG);
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job terminated in error, see messages in console.")));
+            wxbMainFrame::GetInstance()->Print(wxT(_("Restore job terminated in error, see messages.\n")), CS_DEBUG);
             waitforever = false;
             ended = true;
             break;
          case JS_Error:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job reported a non-fatal error."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job reported a non-fatal error.")));
             waitforever = false;
             break;
          case JS_FatalError:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job reported a fatal error."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job reported a fatal error.")));
             waitforever = false;
             ended = true;
             break;
          case JS_Canceled:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job cancelled by user."));
-            wxbMainFrame::GetInstance()->Print(wxT("Restore job cancelled by user.\n"), CS_DEBUG);
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job cancelled by user.")));
+            wxbMainFrame::GetInstance()->Print(wxT(_("Restore job cancelled by user.\n")), CS_DEBUG);
             waitforever = false;
             ended = true;
             break;
          case JS_WaitFD:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job is waiting on File daemon."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job is waiting on File daemon.")));
             waitforever = false;
             break;
          case JS_WaitMedia:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job is waiting for new media."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job is waiting for new media.")));
             waitforever = false;
             break;
          case JS_WaitStoreRes:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job is waiting for storage resource."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job is waiting for storage resource.")));
             waitforever = false;
             break;
          case JS_WaitJobRes:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job is waiting for job resource."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job is waiting for job resource.")));
             waitforever = false;
             break;
          case JS_WaitClientRes:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job is waiting for Client resource."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job is waiting for Client resource.")));
             waitforever = false;
             break;
          case JS_WaitMaxJobs:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job is waiting for maximum jobs."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job is waiting for maximum jobs.")));
             waitforever = false;
             break;
          case JS_WaitStartTime:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job is waiting for start time."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job is waiting for start time.")));
             waitforever = false;
             break;
          case JS_WaitPriority:
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore job is waiting for higher priority jobs to finish."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore job is waiting for higher priority jobs to finish.")));
             waitforever = false;
             break;
          }
@@ -953,8 +951,8 @@ void wxbRestorePanel::CmdStart() {
          }
          
          if ((!waitforever) && (sw.Time() > 60000)) {
-            wxbMainFrame::GetInstance()->Print(wxT("The restore job has not been started within one minute, wx-console will not wait for its completion anymore.\n"), CS_DEBUG);
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("The restore job has not been started within one minute, wx-console will not wait for its completion anymore."));
+            wxbMainFrame::GetInstance()->Print(wxT(_("The restore job has not been started within one minute, wx-console will not wait for its completion anymore.\n")), CS_DEBUG);
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("The restore job has not been started within one minute, wx-console will not wait for its completion anymore.")));
             break;
          }
       }
@@ -964,8 +962,8 @@ void wxbRestorePanel::CmdStart() {
       gauge->SetValue(totfilemessages);
 
       if (status == JS_Terminated) {
-         wxbMainFrame::GetInstance()->Print(wxT("Restore done successfully.\n"), CS_DEBUG);
-         wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore done successfully."));
+         wxbMainFrame::GetInstance()->Print(wxT(_("Restore done successfully.\n")), CS_DEBUG);
+         wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore done successfully.")));
       }
       SetStatus(finished);
    }
@@ -1036,7 +1034,7 @@ void wxbRestorePanel::CmdCancel() {
 void wxbRestorePanel::CmdConfigApply() {
    if (cfgUpdated == 0) return;
    
-   wxbMainFrame::GetInstance()->SetStatusText(wxT("Applying restore configuration changes..."));
+   wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Applying restore configuration changes...")));
    
    EnableConfig(false);
    
@@ -1054,7 +1052,7 @@ void wxbRestorePanel::CmdConfigApply() {
          wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
          wxbUtils::WaitForPrompt(wxT("9\n"));
          dt = new wxbDataTokenizer(true);
-         wxbUtils::WaitForPrompt(restorePanel->GetRowString(wxT("Where")) + wxT("\n"));
+         wxbUtils::WaitForPrompt(restorePanel->GetRowString(wxT(_("Where"))) + wxT("\n"));
          def = wxT("/tmp");
          cfgUpdated = cfgUpdated & (~(1 << ConfigWhere));
       }
@@ -1062,7 +1060,7 @@ void wxbRestorePanel::CmdConfigApply() {
          wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
          wxbUtils::WaitForPrompt(wxT("10\n"));
          dt = new wxbDataTokenizer(true);
-         wxbUtils::WaitForPrompt(wxString() << (restorePanel->GetRowSelection(wxT("Replace"))+1) << wxT("\n"));
+         wxbUtils::WaitForPrompt(wxString() << (restorePanel->GetRowSelection(wxT(_("Replace")))+1) << wxT("\n"));
          def = wxT("1");
          cfgUpdated = cfgUpdated & (~(1 << ConfigReplace));
       }
@@ -1070,7 +1068,7 @@ void wxbRestorePanel::CmdConfigApply() {
          wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
          wxbUtils::WaitForPrompt(wxT("6\n"));
          dt = new wxbDataTokenizer(true);
-         wxbUtils::WaitForPrompt(restorePanel->GetRowString(wxT("When")) + wxT("\n"));
+         wxbUtils::WaitForPrompt(restorePanel->GetRowString(wxT(("When"))) + wxT("\n"));
          def = wxT("");
          cfgUpdated = cfgUpdated & (~(1 << ConfigWhen));
       }
@@ -1078,16 +1076,16 @@ void wxbRestorePanel::CmdConfigApply() {
          wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
          wxbUtils::WaitForPrompt(wxT("7\n"));
          dt = new wxbDataTokenizer(true);
-         wxbUtils::WaitForPrompt(restorePanel->GetRowString(wxT("Priority")) + wxT("\n"));
+         wxbUtils::WaitForPrompt(restorePanel->GetRowString(wxT(_("Priority"))) + wxT("\n"));
          def = wxT("10");
          cfgUpdated = cfgUpdated & (~(1 << ConfigPriority));
       }
       else if ((cfgUpdated >> ConfigClient) & 1) {
          wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
          wxbPromptParser *pp = wxbUtils::WaitForPrompt(wxT("5\n"), true);
-         int client = pp->getChoices()->Index(restorePanel->GetRowString(wxT("Client")));
+         int client = pp->getChoices()->Index(restorePanel->GetRowString(wxT(_("Client"))));
          if (client == wxNOT_FOUND) {
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Failed to find the selected client."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Failed to find the selected client.")));
             failed = true;
             client = 1;
          }
@@ -1100,9 +1098,9 @@ void wxbRestorePanel::CmdConfigApply() {
       else if ((cfgUpdated >> ConfigFileset) & 1) {
          wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
          wxbPromptParser *pp = wxbUtils::WaitForPrompt(wxT("4\n"), true);
-         int fileset = pp->getChoices()->Index(restorePanel->GetRowString(wxT("Fileset")));
+         int fileset = pp->getChoices()->Index(restorePanel->GetRowString(wxT(_("Fileset"))));
          if (fileset == wxNOT_FOUND) {
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Failed to find the selected fileset."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Failed to find the selected fileset.")));
             failed = true;
             fileset = 1;
          }
@@ -1115,9 +1113,9 @@ void wxbRestorePanel::CmdConfigApply() {
       else if ((cfgUpdated >> ConfigStorage) & 1) {
          wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
          wxbPromptParser *pp = wxbUtils::WaitForPrompt(wxT("2\n"), true);
-         int fileset = pp->getChoices()->Index(restorePanel->GetRowString(wxT("Storage")));
+         int fileset = pp->getChoices()->Index(restorePanel->GetRowString(wxT(_("Storage"))));
          if (fileset == wxNOT_FOUND) {
-            wxbMainFrame::GetInstance()->SetStatusText(wxT("Failed to find the selected storage."));
+            wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Failed to find the selected storage.")));
             failed = true;
             fileset = 1;
          }
@@ -1134,7 +1132,7 @@ void wxbRestorePanel::CmdConfigApply() {
                  
       unsigned int i;
       for (i = 0; i < dt->GetCount(); i++) {
-         if ((*dt)[i].Find(wxT("Run Restore job")) == 0) {
+         if ((*dt)[i].Find(wxT(_("Run Restore job"))) == 0) {
             break;
          }
       }
@@ -1150,7 +1148,7 @@ void wxbRestorePanel::CmdConfigApply() {
    EnableConfig(true);
 
    if (!failed) {
-      wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore configuration changes were applied."));
+      wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore configuration changes were applied.")));
    }
 
    delete dt;
@@ -1159,20 +1157,20 @@ void wxbRestorePanel::CmdConfigApply() {
 /* Cancel restore */
 void wxbRestorePanel::CmdConfigCancel() {
    wxbUtils::WaitForEnd(wxT("no\n"));
-   wxbMainFrame::GetInstance()->Print(wxT("Restore cancelled.\n"), CS_DEBUG);
-   wxbMainFrame::GetInstance()->SetStatusText(wxT("Restore cancelled."));
+   wxbMainFrame::GetInstance()->Print(wxT(_("Restore cancelled.\n")), CS_DEBUG);
+   wxbMainFrame::GetInstance()->SetStatusText(wxT(_("Restore cancelled.")));
    SetStatus(finished);
 }
 
 /* List jobs for a specified client */
 void wxbRestorePanel::CmdListJobs() {
    if (status == entered) {
-      configPanel->ClearRowChoices(wxT("Before"));
+      configPanel->ClearRowChoices(wxT(_("Before")));
       /*wxbUtils::WaitForPrompt("query\n");
       wxbUtils::WaitForPrompt("6\n");*/
       wxbTableParser* tableparser = new wxbTableParser(false);
       wxbDataTokenizer* dt = wxbUtils::WaitForEnd(
-         wxString(wxT(".backups client=")) + configPanel->GetRowString(wxT("Client")) + wxT("\n"), true);
+         wxString(wxT(".backups client=")) + configPanel->GetRowString(wxT(_("Client"))) + wxT("\n"), true);
 
       while (!tableparser->hasFinished()) {
          wxTheApp->Yield(true);
@@ -1181,17 +1179,20 @@ void wxbRestorePanel::CmdListJobs() {
          
       if (!tableparser->GetCount() == 0) {
          for (unsigned int i = 0; i < dt->Count(); i++) {
-            if ((*dt)[i].Find(wxT("No results to list.")) == 0) {
-               configPanel->AddRowChoice(wxT("Before"), wxT("No backup found for this client."));
-               configPanel->SetRowSelection(wxT("Before"), 0);
+            if ((*dt)[i].Find(wxT(_("No results to list."))) == 0) {
+               configPanel->AddRowChoice(wxT(_("Before")),
+                  wxT(_("No backup found for this client.")));
+               configPanel->SetRowSelection(wxT(_("Before")), 0);
                configPanel->EnableApply(true); // Enabling the not existing apply button disables the ok button.
                delete tableparser;
                delete dt;
                return;
             }
-            else if (((*dt)[i].Find(wxT("ERROR")) > -1) || ((*dt)[i].Find(wxT("Query failed")) > -1)) {
-               configPanel->AddRowChoice(wxT("Before"), wxT("Cannot get previous backups list, see console."));
-               configPanel->SetRowSelection(wxT("Before"), 0);
+            else if (((*dt)[i].Find(wxT(_("ERROR"))) > -1) || 
+                  ((*dt)[i].Find(wxT(_("Query failed"))) > -1)) {
+               configPanel->AddRowChoice(wxT(_("Before")),
+                  wxT(_("Cannot get previous backups list, see console.")));
+               configPanel->SetRowSelection(wxT(_("Before")), 0);
                configPanel->EnableApply(true); // Enabling the not existing apply button disables the ok button.
                delete tableparser;
                delete dt;
@@ -1208,13 +1209,14 @@ void wxbRestorePanel::CmdListJobs() {
          const wxChar* chr;
          if ( ( (chr = datetime.ParseDate(str.GetData()) ) != NULL ) && ( datetime.ParseTime(++chr) != NULL ) ) {
             datetime += wxTimeSpan::Seconds(1);
-            configPanel->AddRowChoice(wxT("Before"), datetime.Format(wxT("%Y-%m-%d %H:%M:%S")));
+            configPanel->AddRowChoice(wxT(_("Before")),
+               datetime.Format(wxT("%Y-%m-%d %H:%M:%S")));
          }
       }
            
       delete tableparser;
 
-      configPanel->SetRowSelection(wxT("Before"), 0);
+      configPanel->SetRowSelection(wxT(_("Before")), 0);
       configPanel->EnableApply(false); // Disabling the not existing apply button enables the ok button.
    }
 }
@@ -1727,7 +1729,7 @@ void wxbRestorePanel::RefreshList() {
 /* Update first config, adapting settings to the job name selected */
 void wxbRestorePanel::UpdateFirstConfig() {
    configPanel->Enable(false);
-   wxbDataTokenizer* dt = wxbUtils::WaitForEnd(wxString(wxT(".defaults job=")) + configPanel->GetRowString(wxT("Job Name")) + wxT("\n"), true, false);
+   wxbDataTokenizer* dt = wxbUtils::WaitForEnd(wxString(wxT(".defaults job=")) + configPanel->GetRowString(wxT(_("Job Name"))) + wxT("\n"), true, false);
    /* job=RestoreFiles
     * pool=Default
     * messages=Standard
@@ -1749,20 +1751,21 @@ void wxbRestorePanel::UpdateFirstConfig() {
       if ((j = str.Find('=')) > -1) {
          name = str.Mid(0, j);
          if (name == wxT("pool")) {
-            configPanel->SetRowString(wxT("Pool"), str.Mid(j+1));
+            configPanel->SetRowString(wxT(_("Pool")), str.Mid(j+1));
          }
          else if (name == wxT("client")) {
             str = str.Mid(j+1);
-            if ((str != configPanel->GetRowString(wxT("Client"))) || (configPanel->GetRowString(wxT("Before")) == wxT(""))) {
-               configPanel->SetRowString(wxT("Client"), str);
+            if ((str != configPanel->GetRowString(wxT(_("Client")))) ||
+                  (configPanel->GetRowString(wxT(_("Before"))) == wxT(""))) {
+               configPanel->SetRowString(wxT(_("Client")), str);
                dolistjobs = true;
             }
          }
          else if (name == wxT("storage")) {
-            configPanel->SetRowString(wxT("Storage"), str.Mid(j+1));
+            configPanel->SetRowString(wxT(_("Storage")), str.Mid(j+1));
          }
          else if (name == wxT("fileset")) {
-            configPanel->SetRowString(wxT("Fileset"), str.Mid(j+1));
+            configPanel->SetRowString(wxT(_("Fileset")), str.Mid(j+1));
          }
       }
    }
@@ -1795,7 +1798,7 @@ void wxbRestorePanel::UpdateFirstConfig() {
 bool wxbRestorePanel::UpdateSecondConfig(wxbDataTokenizer* dt) {
    unsigned int i;
    for (i = 0; i < dt->GetCount(); i++) {
-      if ((*dt)[i].Find(wxT("Run Restore job")) == 0)
+      if ((*dt)[i].Find(wxT(_("Run Restore job"))) == 0)
          break;
    }
    
@@ -1805,31 +1808,31 @@ bool wxbRestorePanel::UpdateSecondConfig(wxbDataTokenizer* dt) {
    
    int k;
    
-   if ((k = (*dt)[++i].Find(wxT("JobName:"))) != 0) return false;
-   restorePanel->SetRowString(wxT("Job Name"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(wxT("Bootstrap:"))) != 0) return false;
-   restorePanel->SetRowString(wxT("Bootstrap"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(wxT("Where:"))) != 0) return false;
-   restorePanel->SetRowString(wxT("Where"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
+   if ((k = (*dt)[++i].Find(wxT(_("JobName:")))) != 0) return false;
+   restorePanel->SetRowString(wxT(_("Job Name")), (*dt)[i].Mid(10).Trim(false).RemoveLast());
+   if ((k = (*dt)[++i].Find(wxT(_("Bootstrap:")))) != 0) return false;
+   restorePanel->SetRowString(wxT(_("Bootstrap")), (*dt)[i].Mid(10).Trim(false).RemoveLast());
+   if ((k = (*dt)[++i].Find(wxT(_("Where:")))) != 0) return false;
+   restorePanel->SetRowString(wxT(_("Where")), (*dt)[i].Mid(10).Trim(false).RemoveLast());
    
-   if ((k = (*dt)[++i].Find(wxT("Replace:"))) != 0) return false;
+   if ((k = (*dt)[++i].Find(wxT(_("Replace:")))) != 0) return false;
    wxString str = (*dt)[i].Mid(10).Trim(false).RemoveLast();
-   if (str == wxT("always")) restorePanel->SetRowSelection(wxT("Replace"), 0);
-   else if (str == wxT("ifnewer")) restorePanel->SetRowSelection(wxT("Replace"), 1);
-   else if (str == wxT("ifolder")) restorePanel->SetRowSelection(wxT("Replace"), 2);
-   else if (str == wxT("never")) restorePanel->SetRowSelection(wxT("Replace"), 3);
-   else restorePanel->SetRowSelection(wxT("Replace"), 0);
-
-   if ((k = (*dt)[++i].Find(wxT("FileSet:"))) != 0) return false;
-   restorePanel->SetRowString(wxT("Fileset"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(wxT("Client:"))) != 0) return false;
-   restorePanel->SetRowString(wxT("Client"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(wxT("Storage:"))) != 0) return false;
-   restorePanel->SetRowString(wxT("Storage"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(wxT("When:"))) != 0) return false;
-   restorePanel->SetRowString(wxT("When"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(wxT("Priority:"))) != 0) return false;
-   restorePanel->SetRowString(wxT("Priority"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
+   if (str == wxT(_("always"))) restorePanel->SetRowSelection(wxT(_("Replace")), 0);
+   else if (str == wxT(_("ifnewer"))) restorePanel->SetRowSelection(wxT(_("Replace")), 1);
+   else if (str == wxT(_("ifolder"))) restorePanel->SetRowSelection(wxT(_("Replace")), 2);
+   else if (str == wxT(_("never"))) restorePanel->SetRowSelection(wxT(_("Replace")), 3);
+   else restorePanel->SetRowSelection(wxT(_("Replace")), 0);
+
+   if ((k = (*dt)[++i].Find(wxT(_("FileSet:")))) != 0) return false;
+   restorePanel->SetRowString(wxT(_("Fileset")), (*dt)[i].Mid(10).Trim(false).RemoveLast());
+   if ((k = (*dt)[++i].Find(wxT(_("Client:")))) != 0) return false;
+   restorePanel->SetRowString(wxT(_("Client")), (*dt)[i].Mid(10).Trim(false).RemoveLast());
+   if ((k = (*dt)[++i].Find(wxT(_("Storage:")))) != 0) return false;
+   restorePanel->SetRowString(wxT(_("Storage")), (*dt)[i].Mid(10).Trim(false).RemoveLast());
+   if ((k = (*dt)[++i].Find(wxT(_("When:")))) != 0) return false;
+   restorePanel->SetRowString(wxT(_("When")), (*dt)[i].Mid(10).Trim(false).RemoveLast());
+   if ((k = (*dt)[++i].Find(wxT(_("Priority:")))) != 0) return false;
+   restorePanel->SetRowString(wxT(_("Priority")), (*dt)[i].Mid(10).Trim(false).RemoveLast());
    cfgUpdated = 0;
    
    restorePanel->Layout();
@@ -1855,7 +1858,7 @@ void wxbRestorePanel::SetStatus(status_enum newstatus) {
       configPanel->Layout();
       centerSizer->Layout();
       this->Layout();
-      start->SetLabel(wxT("Enter restore mode"));
+      start->SetLabel(wxT(_("Enter restore mode")));
       start->Enable(false);
       configPanel->Enable(false);
       tree->Enable(false);
@@ -1878,13 +1881,13 @@ void wxbRestorePanel::SetStatus(status_enum newstatus) {
       this->Layout();
       tree->DeleteAllItems();
       list->DeleteAllItems();
-      configPanel->ClearRowChoices(wxT("Client"));
-      configPanel->ClearRowChoices(wxT("Before"));
+      configPanel->ClearRowChoices(wxT(_("Client")));
+      configPanel->ClearRowChoices(wxT(_("Before")));
       wxbMainFrame::GetInstance()->EnablePanels();
       newstatus = activable;
    case activable:
       cancelled = 0;
-      start->SetLabel(wxT("Enter restore mode"));
+      start->SetLabel(wxT(_("Enter restore mode")));
       start->Enable(true);
       configPanel->Enable(false);
       tree->Enable(false);
@@ -1897,7 +1900,7 @@ void wxbRestorePanel::SetStatus(status_enum newstatus) {
       wxbMainFrame::GetInstance()->DisablePanels(this);
       gauge->SetValue(0);
       start->Enable(false);
-      //start->SetLabel("Choose files to restore");
+      //start->SetLabel(_("Choose files to restore"));
       configPanel->Enable(true);
       tree->Enable(false);
       list->Enable(false);
@@ -1909,7 +1912,7 @@ void wxbRestorePanel::SetStatus(status_enum newstatus) {
       break;
    case choosing:
       start->Enable(true);
-      start->SetLabel(wxT("Restore"));
+      start->SetLabel(wxT(_("Restore")));
       centerSizer->Remove(configPanel);
       configPanel->Show(false);
       centerSizer->Add(treelistPanel, 1, wxEXPAND);
@@ -1936,7 +1939,7 @@ void wxbRestorePanel::SetStatus(status_enum newstatus) {
       restorePanel->EnableApply(false);
       break;
    case restoring:
-      start->SetLabel(wxT("Restoring..."));
+      start->SetLabel(wxT(_("Restoring...")));
       gauge->Enable(true);
       gauge->SetValue(0);
       start->Enable(false);