commit bd7300aa3ecb667f0e5b3ee252b42a3fedcb933c
parent 836d48c2d75059b7db5d0164d110b46e5a236a03
Author: Daniel "GDrooid" Rodriguez <gdrooid@openmailbox.org>
Date:   Fri,  9 Jan 2015 17:11:14 +0100
Update .po files and fix typo in tomb executable.
Diffstat:
| M | extras/po/de.po |  |  | 5745 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- | 
| M | extras/po/es.po |  |  | 5743 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- | 
| M | extras/po/fr.po |  |  | 5825 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- | 
| M | extras/po/ru.po |  |  | 5659 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- | 
| M | extras/po/tomb.pot |  |  | 4923 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- | 
| M | tomb |  |  | 2 | +- | 
6 files changed, 24873 insertions(+), 3024 deletions(-)
diff --git a/extras/po/de.po b/extras/po/de.po
@@ -1,1118 +1,5519 @@
 msgid ""
 msgstr ""
+"Project-Id-Version: Tomb the Crypto Undertaker\n"
+"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: POEditor.com\n"
-"Project-Id-Version: Tomb the Crypto Undertaker\n"
-"Language: de\n"
-
-#: failure
-msgid "Operation aborted."
-msgstr "Vorgang abgebrochen."
-
-#: warning
-msgid "often occurs on VPS and kernels that don't provide the loop module."
-msgstr "tritt oft in virtuellen Maschinen auf oder mit Kerneln ohne Loop-Modul."
-
-#: warning
-msgid "It is impossible to use Tomb on this machine at this conditions."
-msgstr "Es ist unmöglich Tomb unter diesen Umständen auf dieser Maschine zu benutzen."
-
-#: message
-msgid "Waiting for the key to be piped from stdin... "
-msgstr "Warten auf den Schlüssel auf der Standarteingabe... "
-
-#: failure
-msgid "This operation requires a key file to be specified using the -k option."
-msgstr "Diese Operation benötigt das Angeben eines Schlüssels durch die -k Option."
-
-#: failure
-msgid "Key not found, specify one using -k."
-msgstr "Schlüssel nicht gefunden, bitte mit -k einen Schlüssel angeben."
-
-#: warning
-msgid "User aborted password dialog."
-msgstr "Benutzer hat den Passwortdialog abgebrochen."
-
-#: message
-msgid "Password OK."
-msgstr "Passwort OK."
-
-#: failure
-msgid "Error: the newly generated keyfile does not seem valid."
-msgstr "Fehler: Der neu erstellte Schlüssel scheint nicht gültig zu sein."
-
-#: failure
-msgid "User aborted."
-msgstr "Vom Benutzer abgebrochen."
-
-#: failure
-msgid "You set empty password, which is not possible."
-msgstr "Fehler: Passwort nicht gesetzt."
-
-#: failure
-msgid "Wrong argument for --kdf: must be an integer number (iteration seconds)."
-msgstr "Ungültiges Argument für --kdf: dies muss eine Ganzzahl sein."
-
-#: failure
-msgid "gpg (GnuPG) is not found, Tomb cannot function without it."
-msgstr "gpg (GnuPG) welches zur Funktion von Tomb notwendig ist, nicht gefunden."
-
-#: message
-msgid "Please confirm the key password for the encoding"
-msgstr "Bitte bestätigen Sie das Passwort zur Verschlüsselung"
-
-#: warning
-msgid "Wrong password supplied."
-msgstr "Das eingegebene Passwort ist falsch."
-
-#: failure
-msgid "You shall not bury a key whose password is unknown to you."
-msgstr "Sie dürfen keinen Schlüssel vergraben, von dem Sie das Passwort nicht kennen."
-
-#: warning
-msgid "Encoding error: steghide reports problems."
-msgstr "Fehler beim Verschlüsseln: steghide meldet Fehler."
-
-#: warning
-msgid "Make explicit use of --force to overwrite."
-msgstr "Benutzen Sie --force um ein Überschreiben zu erzwingen."
-
-#: warning
-msgid "Use of --force selected: overwriting."
-msgstr "--force wurde benutzt, wird überschrieben."
-
-#: failure
-msgid "A filename needs to be specified using -k to forge a new key."
-msgstr "Mit -k muss ein Dateiname angegeben werden, um einen neuen Schlüssel zu schmieden."
-
-#: failure
-msgid "Forging this key would overwrite an existing file. Operation aborted."
-msgstr "Diesen Schlüssel zu schmieden würde eine existierende Datei überschreiben. Aktion abgebrochen."
-
-#: message
-msgid "This operation takes time, keep using this computer on other tasks,"
-msgstr "Dieser Vorgang braucht Zeit, benutzen Sie den Computer für andere Aufgaben,"
-
-#: message
-msgid "once done you will be asked to choose a password for your tomb."
-msgstr "wenn der Vorgang einmal abgeschlossen ist, werden Sie gefragt ein Passwort für ihr Grab anzugeben."
-
-#: message
-msgid "To make it faster you can move the mouse around."
-msgstr "Um den Vorgang zu Beschleunigen können Sie die Maus hin und her bewegen."
-
-#: message
-msgid "If you are on a server, you can use an Entropy Generation Daemon."
-msgstr "Falls Sie auf einem Server sind können Sie einen Daemon benutzen um Entropie zu erstellen."
-
-#: warning
-msgid "Cannot generate encryption key."
-msgstr "Verschlüsselungsschlüssel konnte nicht erstellt werden."
-
-#: message
-msgid "(You can also change it later using 'tomb passwd'.)"
-msgstr "(Sie können ihn auch später mit 'tomb passwd' wechseln.)"
-
-#: warning
-msgid "The key does not seem to be valid."
-msgstr "Der Schlüssel scheint ungültig zu sein."
-
-#: warning
-msgid "Dumping contents to screen:"
-msgstr "Inhalte werden am Bildschirm angezeigt :"
-
-#: failure
-msgid "Size argument missing, use -s"
-msgstr "Größenangabe fehlt, benutzen Sie -s"
-
-#: warning
-msgid "A tomb exists already. I'm not digging here:"
-msgstr "Es existiert bereits ein Grab. Hier grabe ich nicht:"
-
-#: message
-msgid "Your tomb is not yet ready, you need to forge a key and lock it:"
-msgstr "Ihr Grab ist noch nicht bereit, erst müssen Sie einen Schlüssel schmieden und es abschließen:"
-
-#: warning
-msgid "No tomb specified for locking."
-msgstr "Kein Grab zum verschließen angegeben"
-
-#: warning
-msgid "Usage: tomb lock file.tomb file.tomb.key"
-msgstr "Gebrauch: tomb lock file.tomb file.tomb.key"
-
-#: failure
-msgid "There is no tomb here. You have to it dig first."
-msgstr "Es ist kein Grab an diesem Ort. Sie müssen erst eins graben."
-
-#: message
-msgid "Checking if the tomb is empty (we never step on somebody else's bones)."
-msgstr "Am kontrollieren ob Grab leer ist (wir würden nie fremde Knochen stören)."
-
-#: warning
-msgid "The tomb was already locked with another key."
-msgstr "Grab ist schon mit anderem Schlüssel verschlossen."
-
-#: failure
-msgid "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
-msgstr "Vorgang abgebrochen. Ich kann kein bereits abgeschlossenes Grab nochmal abschließen. Graben Sie ein neues."
-
-#: message
-msgid "Fine, this tomb seems empty."
-msgstr "Gut, dieses Grab scheint leer."
-
-#: message
-msgid "Formatting Luks mapped device."
-msgstr "Formatieren des Luks Gerätes."
-
-#: warning
-msgid "cryptsetup luksFormat returned an error."
-msgstr "'cryptsetup luksFormat' hat einen Fehler ausgegeben."
-
-#: message
-msgid "Formatting your Tomb with Ext3/Ext4 filesystem."
-msgstr "Ihr Grab wird mit Ext3/Ext4 formatiert."
-
-#: warning
-msgid "Tomb format returned an error."
-msgstr "Beim Formatieren ist ein Fehler aufgetreten."
-
-#: message
-msgid "Here below its status is reported:"
-msgstr "Zustand des Grabes wie folgt:"
-
-#: message
-msgid "This tomb is a valid LUKS encrypted device."
-msgstr "Dieses Grab ist ein gültiges LUKS verschlüsseltes Gerät."
-
-#: failure
-msgid "Failure mounting the encrypted file."
-msgstr "Fehler beim Einhängen der verschlüsselten Datei."
-
-#: warning
-msgid "How pitiful!  A tomb, and no HOME."
-msgstr "Wie bedaurndswert ! Ein Grab aber kein Zuhause."
-
-#: warning
-msgid "Cannot exec bind hooks without a mounted tomb."
-msgstr "'Bind hooks' kann nicht benutzt werden ohne eingehängtes Grab."
-
-#: failure
-msgid "I can't see any open tomb, may they all rest in peace."
-msgstr "Ich sehe kein geöffnetes Grab. Mögen sie alle in Frieden ruhen."
-
-#: message
-msgid "Search index updated."
-msgstr "Such-Index aktualisiert."
-
-#: warning
-msgid "Run 'tomb index' to create indexes."
-msgstr "Führen Sie 'tomb index' aus um Suchindexe zu erstellen."
-
-#: message
-msgid "Search completed."
-msgstr "Suche abgeschlossen."
-
-#: failure
-msgid "No tomb name specified for resizing."
-msgstr "Kein Name für das zu vergrössernde Grab angegeben."
-
-#: failure
-msgid "Size is not an integer."
-msgstr "Die Grösse muss eine Ganzzahl sein."
-
-#: failure
-msgid "The new size must be greater then old tomb size."
-msgstr "Die neue Grösse muss grösser sein als die alte."
-
-#: failure
-msgid "There is no open tomb to be closed."
-msgstr "Es gibt kein zu schließendes Grab."
-
-#: warning
-msgid "Too many tombs mounted, please specify one (see tomb list)"
-msgstr "Zu viele Gräber geöffnet, bitte geben sie ein Grab an (siehe 'tomb list')"
-
-#: warning
-msgid "or issue the command 'tomb close all' to close them all."
-msgstr "oder 'tomb close all' ausführen um alle zu schließen."
-
-#: warning
-msgid "Please specify an existing tomb."
-msgstr "Bitte geben Sie ein existierendes Grab an."
-
-#: message
-msgid "Kill all processes busy inside the tomb."
-msgstr "Abbrechen aller laufenden Prozesse im Grab."
 
-#: warning
-msgid "Tomb is busy, cannot umount!"
-msgstr "Grab ist beschäftigt und kann nicht ausgehänkt werden!"
-
-#: failure
-msgid "Error parsing."
-msgstr "Syntax Fehler."
-
-#: warning
-msgid "Some error occurred during option processing."
-msgstr "Fehler beim interpretieren der Optionen."
-
-#: warning
-msgid "The create command is deprecated, please use dig, forge and lock instead."
-msgstr "Der Befehl create ist veraltet, benutzen Sie stattdesseb dig, forge, und lock."
-
-#: warning
-msgid "For more informations see Tomb's manual page (man tomb)."
-msgstr "Für mehr Informationen siehe Benutzerhandbuch (man tomb)."
-
-#: message
-msgid "Try -h for help."
-msgstr "Versuchen Sie -h um Hilfe zu erhalten."
+#. Fold: Safety functions
+#. Function: _whoami
+#.
+#. Code sample:
+#.   
+#.       # Set username from UID or environment
+#.       _USER=$SUDO_USER
+#.       [[ "$_USER" = "" ]] && { _USER=$USERNAME }
+#.       [[ "$_USER" = "" ]] && { _USER=$(id -u)  }
+#.       [[ "$_USER" = "" ]] && {
+#. >         _failure "Failing to identify the user who is calling us" }
+#.   
+#.       # Get GID from option -G or the environment
+#.       option_is_set -G #.           && _GID=$(option_value -G) || _GID=$(id -g $_USER)
+#: tomb:189
+msgid "Failing to identify the user who is calling us"
+msgstr "Fehler beim Identifizieren des uns rufenden Benutzers"
 
-#: failure
+#. Fold: Safety functions
+#. Function: _plot
+#.
+#. Code sample:
+#.       TOMBFILE=$(basename $TOMBPATH)
+#.   
+#.       # The tomb name is TOMBFILE without an extension.
+#.       # It can start with dots: ..foo.tomb -> ..foo
+#.       TOMBNAME="${TOMBFILE%\.[^\.]*}"
+#.       [[ -z $TOMBNAME ]] && {
+#. >         _failure "Tomb won't work without a TOMBNAME." }
+#.   
+#.       # Normalize tomb name
+#.       TOMBFILE="$TOMBNAME.tomb"
+#.   
+#: tomb:237
 msgid "Tomb won't work without a TOMBNAME."
 msgstr "Ohne GRABNAME kann Tomb nicht funktionieren."
 
-#: failure
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.   # Provide a random filename in shared memory
+#.   _tmp_create() {
+#.       [[ -d "$TMPPREFIX" ]] || {
+#.           # we create the tempdir with the sticky bit on
+#.           sudo mkdir -m 1777 "$TMPPREFIX"
+#. >         [[ $? == 0 ]] || _failure "Fatal error creating the temporary directory: ::1 temp dir::" "$TMPPREFIX"
+#.       }
+#.   
+#.       # We're going to add one more $RANDOM for each time someone complain
+#.       # about this being too weak of a random.
+#: tomb:252
+msgid "Fatal error creating the temporary directory: ::1 temp dir::"
+msgstr "Fataler Fehler beim kreieren der temporären Datei: ::1 temp dir::"
+
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       # We're going to add one more $RANDOM for each time someone complain
+#.       # about this being too weak of a random.
+#.       tfile="${TMPPREFIX}/$RANDOM$RANDOM$RANDOM$RANDOM"   # Temporary file
+#.       umask 066
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error setting the permission umask for temporary files" }
+#.   
+#.       [[ -r "$tfile" ]] && {
+#.           _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#: tomb:260
+msgid "Fatal error setting the permission umask for temporary files"
+msgstr ""
+"Fataler Fehler beim Setzen der Berechtigungsmaske für die temporären Dateien"
+
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.       tfile="${TMPPREFIX}/$RANDOM$RANDOM$RANDOM$RANDOM"   # Temporary file
+#.       umask 066
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error setting the permission umask for temporary files" }
+#.   
+#.       [[ -r "$tfile" ]] && {
+#. >         _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#: tomb:263
+msgid "Someone is messing up with us trying to hijack temporary files."
+msgstr ""
+"Jemand versucht uns durcheinander zu bringen und unsere temporären Dateien "
+"zu kapern."
+
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       [[ -r "$tfile" ]] && {
+#.           _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error setting ownership on temporary file: ::1 temp file::" "$tfile" }
+#.   
+#: tomb:267
 msgid "Fatal error creating a temporary file: ::1 temp file::"
 msgstr "Fataler Fehler beim erzeugen der temporären Datei: ::1 temp file::"
 
-#: warning
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error setting ownership on temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       _verbose "Created tempfile: ::1 temp file::" "$tfile"
+#.       TOMBTMP="$tfile"
+#.       TOMBTMPFILES+=("$tfile")
+#: tomb:270
+msgid "Fatal error setting ownership on temporary file: ::1 temp file::"
+msgstr ""
+"Fataler Fehler beim Setzen des Besitzers für die temporäre Datei: ::1 temp "
+"file::"
+
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.               r=1
+#.               is_crypt=`sudo dmsetup status "$s" | awk '/crypt/ {print $3}'`
+#.               [[ $is_crypt == "crypt" ]] && { r=2 } || { break }
+#.   
+#.           fi
+#.       done
+#. >     _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#: tomb:316
+msgid "An active swap partition is detected..."
+msgstr ""
+
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.               [[ $is_crypt == "crypt" ]] && { r=2 } || { break }
+#.   
+#.           fi
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#. >         _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#: tomb:318
+msgid "All your swaps are belong to crypt.  Good."
+msgstr "All ihre Auslagerungsdateien gehören Crypt. Gut."
+
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.           fi
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#. >         _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#: tomb:320
+msgid "This poses a security risk."
+msgstr ""
+
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#. >         _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#: tomb:321
 msgid "You can deactivate all swap partitions using the command:"
 msgstr "Sie können alle Swap-Partitionen deaktivieren mit dem Befehl:"
 
-#: warning
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#. >         _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#.   
+#: tomb:322
 msgid " swapoff -a"
 msgstr " swapoff -a"
 
-#: warning
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#. >         _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#.   
+#.   }
+#: tomb:323
 msgid "But if you want to proceed like this, use the -f (force) flag."
-msgstr "Falls sie ohne dies zu tun fortfahren wollen, benutzen sie die -f (forcieren) Option."
+msgstr ""
+"Falls sie ohne dies zu tun fortfahren wollen, benutzen sie die -f "
+"(forcieren) Option."
+
+#. Fold: Safety functions
+#. Function: _check_swap
+#.
+#. Code sample:
+#.           _ensure_safe_swap
+#.           case $? in
+#.               0|2)     # No, or encrypted swap
+#.                   return 0
+#.                   ;;
+#.               *)       # Unencrypted swap
+#. >                 _failure "Operation aborted."
+#.                   ;;
+#.           esac
+#.       fi
+#.   }
+#: tomb:342
+msgid "Operation aborted."
+msgstr "Vorgang abgebrochen."
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   SETTITLE $title
+#.   SETDESC $description
+#.   SETPROMPT Password:
+#.   GETPIN
+#.   EOF`
+#.           else
+#. >             _failure "Cannot find pinentry-curses and no DISPLAY detected."
+#.           fi
+#.   
+#.       else # a DISPLAY is found to be active
+#.   
+#: tomb:379
+msgid "Cannot find pinentry-curses and no DISPLAY detected."
+msgstr ""
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   EOF`
+#.   
+#.           else
+#.   
+#.               if _is_found "pinentry-curses"; then
+#.   
+#. >                 _warning "Detected DISPLAY, but only pinentry-curses is found."
+#.                   output=`cat <<EOF | pinentry-curses
+#.   OPTION ttyname=$TTY
+#.   OPTION lc-ctype=$LANG
+#.   SETTITLE $title
+#: tomb:432
+msgid "Detected DISPLAY, but only pinentry-curses is found."
+msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   SETTITLE $title
+#.   SETDESC $description
+#.   SETPROMPT Password:
+#.   GETPIN
+#.   EOF`
+#.               else
+#. >                 _failure "Cannot find any pinentry: impossible to ask for password."
+#.               fi
+#.   
+#.           fi
+#.   
+#: tomb:442
+msgid "Cannot find any pinentry: impossible to ask for password."
+msgstr ""
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   
+#.       fi # end of DISPLAY block
+#.   
+#.       # parse the pinentry output
+#.       for i in ${(f)output}; do
+#.           [[ "$i" =~ "^ERR.*" ]] && {
+#. >             _warning "Pinentry error: ::1 error::" ${i[(w)3]}
+#.               print "canceled"
+#.               return 1 }
+#.   
+#.           # here the password is found
+#: tomb:452
+msgid "Pinentry error: ::1 error::"
+msgstr "Pinentry Fehler: ::1 error::"
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   
+#.           # here the password is found
+#.           [[ "$i" =~ "^D .*" ]] && password="${i##D }"
+#.       done
+#.   
+#.       [[ "$password" = "" ]] && {
+#. >         _warning "Empty password"
+#.           print "empty"
+#.           return 1 }
+#.   
+#.       print "$password"
+#: tomb:461
+msgid "Empty password"
+msgstr "Leeres Passwort"
+
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.   # Check if a filename is a valid tomb
+#.   is_valid_tomb() {
+#.       _verbose "is_valid_tomb ::1 tomb file::" $1
+#.   
+#.       # First argument must be the path to a tomb
+#.       [[ -z "$1" ]] && {
+#. >         _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#: tomb:477
 msgid "Tomb file is missing from arguments."
 msgstr "Grab Datei fehlen Argumente."
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # First argument must be the path to a tomb
+#.       [[ -z "$1" ]] && {
+#.           _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#. >         _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#: tomb:481
 msgid "Tomb file not found: ::1 tomb file::"
 msgstr "Grab Datei nicht gefunden: ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#. >         _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#.           _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#: tomb:483
 msgid "Tomb file is not a regular file: ::1 tomb file::"
 msgstr "Tomb File ist keine reguläre Datei: ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#. >         _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#.           _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#.   
+#.       # TODO: split the rest of that function out.
+#: tomb:485
 msgid "Tomb file is empty (zero length): ::1 tomb file::"
 msgstr "Grab Datei ist leer (Länge: 0): ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#. >         _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#.   
+#.       # TODO: split the rest of that function out.
+#.       # We already have a valid tomb, now we're checking
+#.       # whether we can alter it.
+#: tomb:487
 msgid "Tomb file is not writable: ::1 tomb file::"
 msgstr "Grab-Datei ist nicht beschreibbar: ::1 tomb file::"
 
-#: warning
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # TODO: split the rest of that function out.
+#.       # We already have a valid tomb, now we're checking
+#.       # whether we can alter it.
+#.   
+#.       # Tomb file may be a LUKS FS (or we are creating it)
+#.       [[ "`file $1`" =~ "luks encrypted file" ]] || {
+#. >         _warning "File is not yet a tomb: ::1 tomb file::" $1 }
+#.   
+#.       _plot $1     # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#: tomb:495
 msgid "File is not yet a tomb: ::1 tomb file::"
 msgstr "Datei ist noch kein Grab: ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _warning "File is not yet a tomb: ::1 tomb file::" $1 }
+#.   
+#.       _plot $1     # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]$" ]] && {
+#. >         _failure "Tomb is currently in use: ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       _message "Valid tomb file found: ::1 tomb path::" $TOMBPATH
+#.   
+#: tomb:501
 msgid "Tomb is currently in use: ::1 tomb name::"
 msgstr "Grab wird schon benutzt ::1 tomb name::"
 
-#: message
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]$" ]] && {
+#.           _failure "Tomb is currently in use: ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#. >     _message "Valid tomb file found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:504
 msgid "Valid tomb file found: ::1 tomb path::"
 msgstr "Gültige tomb Datei gefunden: ::1 tomb path::"
 
-#: warning
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.   lo_mount() {
+#.       tpath="$1"
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#. >         _warning "Loop mount of volumes is not possible on this machine, this error"
+#.           _warning "often occurs on VPS and kernels that don't provide the loop module."
+#.           _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#: tomb:516
 msgid "Loop mount of volumes is not possible on this machine, this error"
 msgstr "Loop-Mount der Laufwerke nicht unterstützt, dieser Fehler"
 
-#: print
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.       tpath="$1"
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#.           _warning "Loop mount of volumes is not possible on this machine, this error"
+#. >         _warning "often occurs on VPS and kernels that don't provide the loop module."
+#.           _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#: tomb:517
+msgid "often occurs on VPS and kernels that don't provide the loop module."
+msgstr ""
+"tritt oft in virtuellen Maschinen auf oder mit Kerneln ohne Loop-Modul."
+
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#.           _warning "Loop mount of volumes is not possible on this machine, this error"
+#.           _warning "often occurs on VPS and kernels that don't provide the loop module."
+#. >         _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       sudo losetup -f "$tpath" # allocates the next loopback for our file
+#: tomb:518
+msgid "It is impossible to use Tomb on this machine at this conditions."
+msgstr ""
+"Es ist unmöglich Tomb unter diesen Umständen auf dieser Maschine zu benutzen."
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   # }}}
+#.   
+#.   # {{{ Commandline interaction
+#.   
+#.   usage() {
+#. >     _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#: tomb:558
 msgid "Syntax: tomb [options] command [arguments]"
 msgstr "Syntax: tomb [Optionen] Befehl [Argumente]"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   # {{{ Commandline interaction
+#.   
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#. >     _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#: tomb:560
 msgid "Commands:"
 msgstr "Befehle:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#. >     _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#: tomb:562
 msgid " // Creation:"
 msgstr " // Erstellen:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#. >     _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#: tomb:563
 msgid " dig     create a new empty TOMB file of size -s in MB"
 msgstr " dig     Neues GRAB erstellen mit der Größe -s Mb"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#. >     _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#: tomb:564
 msgid " forge   create a new KEY file and set its password"
 msgstr " forge   Neuen SCHLÜSSEL erstellen und Passwort zuweisen"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#. >     _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#: tomb:565
 msgid " lock    installs a lock on a TOMB to use it with KEY"
 msgstr " lock    GRAB mit einem SCHLÜSSEL zusperren"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#. >     _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#: tomb:567
 msgid " // Operations on tombs:"
 msgstr " // Gräber bearbeiten:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#. >     _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#: tomb:568
 msgid " open    open an existing TOMB"
 msgstr " open    Vorhandenens GRAB öffnen"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#. >     _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#: tomb:569
 msgid " index   update the search indexes of tombs"
 msgstr " index   Den Suchindex der Gräber aktualisieren"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#. >     _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#: tomb:570
 msgid " search  looks for filenames matching text patterns"
 msgstr " search  Sucht nach Dateinamen welche Textmustern entsprechen"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#. >     _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#: tomb:571
 msgid " list    list of open TOMBs and information on them"
 msgstr " list    Liste geöffneter GRÄBER mit Infos"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#. >     _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#: tomb:572
 msgid " close   close a specific TOMB (or 'all')"
 msgstr " close   Schliesst das angegebene GRAB (oder \"all\")"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#. >     _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#: tomb:573
 msgid " slam    slam a TOMB killing all programs using it"
 msgstr " slam    Knallt ein GRAB zu und bricht alle dazugehörende Programme ab"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#. >         _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#: tomb:575
 msgid " resize  resize a TOMB to a new size -s (can only grow)"
 msgstr " resize  Größe eines Grabes ändern zu -s Mb (nur vergrößern möglich)"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#. >     _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#: tomb:578
 msgid " // Operations on keys:"
 msgstr " // Schlüssel bearbeiten:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#. >     _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#: tomb:579
+msgid " passwd  change the password of a KEY (needs old pass)"
+msgstr ""
+" passwd ändern des Passworts für einen SCHLÜSSEL (benötigt altes Passwort)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#. >     _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#: tomb:580
+msgid " setkey  change the KEY locking a TOMB (needs old key and pass)"
+msgstr ""
+" setkey ändern des SCHLÜSSELS von einem GRAB (benötigt alten Schlüssel und "
+"Passwort)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#. >         _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#: tomb:583
+msgid " // Backup on paper:"
+msgstr " //Backup auf Papier:"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#. >         _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#: tomb:584
 msgid " engrave makes a QR code of a KEY to be saved on paper"
 msgstr " engrave Erstellt einen QR-Code eines SCHLÜSSELS zum ausdrucken"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#. >         _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#: tomb:588
+msgid " // Steganography:"
+msgstr " // Steganographie:"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#. >         _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#: tomb:589
+msgid " bury    hide a KEY inside a JPEG image (for use with -k)"
+msgstr ""
+" bury versteckt einen SCHLÜSSEL in einem JPEG Bild (zur Nutzung mit -k)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#. >         _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#: tomb:590
+msgid " exhume  extract a KEY from a JPEG image (prints to stdout)"
+msgstr ""
+" exhume extrahiert einen SCHLÜSSEL aus einer JPEG Datei (gibt an dei "
+"Standardausgabe aus)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#. >     _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#: tomb:593
 msgid "Options:"
 msgstr "Optionen:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#. >     _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#: tomb:595
 msgid " -s     size of the tomb file when creating/resizing one (in MB)"
-msgstr " -s        Größe eines Grabes (beim Erstellen/neue Größe zuweisen) (in Mb)"
-
-#: print
+msgstr ""
+" -s        Größe eines Grabes (beim Erstellen/neue Größe zuweisen) (in Mb)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#. >     _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#: tomb:596
 msgid " -k     path to the key to be used ('-k -' to read from stdin)"
-msgstr " -k        Dateipfad zum Schlüssel ('-k -' um ihn aus der Standarteingabe einzulesen)"
-
-#: print
+msgstr ""
+" -k        Dateipfad zum Schlüssel ('-k -' um ihn aus der Standarteingabe "
+"einzulesen)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#. >     _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#: tomb:597
 msgid " -n     don't process the hooks found in tomb"
 msgstr " -n        'Hooks' im Grab nicht benutzen"
 
-#: print
-msgid " -o     mount options used to open (default: rw,noatime,nodev)"
-msgstr " -o        Mount Optionen beim Öffnen (Standart: rw,noatime,nodev)"
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#. >     _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#: tomb:598
+msgid " -o     options passed to local command, e.g.:"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#. >     _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#: tomb:599
+msgid "          - mount options used to open (default: rw,noatime,nodev)"
+msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#. >     _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#: tomb:600
+msgid "          - an alternate cipher to forge and lock"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#. >     _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#: tomb:601
 msgid " -f     force operation (i.e. even if swap is active)"
 msgstr " -f        Vorgang erzwingen (z.B. falls Swap-Datei aktiv)"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#. >         _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#: tomb:603
 msgid " --kdf  generate passwords armored against dictionary attacks"
 msgstr " --kdf  Gegen Wörterbuchattacken gefeite Passwörter erstellen"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#. >     _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#: tomb:607
 msgid " -h     print this help"
 msgstr " -h        Anzeigen dieses Hilfetextes"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#. >     _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#: tomb:608
 msgid " -v     print version, license and list of available ciphers"
-msgstr " -v        Anzeigen der Version, Lizenzen und vorhandeners Verschlüsslungsmethoden"
-
-#: print
+msgstr ""
+" -v        Anzeigen der Version, Lizenzen und vorhandeners "
+"Verschlüsslungsmethoden"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#. >     _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#: tomb:609
 msgid " -q     run quietly without printing informations"
 msgstr " -q        Still ablaufen lassen ohne Infos anzuzeigen"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#. >     _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#: tomb:610
 msgid " -D     print debugging information at runtime"
 msgstr " -D        Debug-Infos beim Ablauf anzeigen"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#. >     _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#.   
+#.   
+#: tomb:612
 msgid "For more informations on Tomb read the manual: man tomb"
 msgstr "Für mehr Informationen siehe Benutzerhandbuch (man tomb)."
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#. >     _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#.   
+#.   
+#.   # Check whether a commandline option is set.
+#: tomb:613
 msgid "Please report bugs on <http://github.com/dyne/tomb/issues>."
 msgstr "Bug-Reports bitte an <https://github.com/dyne/tomb/issues>.."
 
-#: failure
+#. Fold: Commandline interaction
+#. Function: _ensure_dependencies
+#.
+#. Code sample:
+#.   # missing, bail out.
+#.   _ensure_dependencies() {
+#.   
+#.       # Check for required programs
+#.       for req in cryptsetup pinentry sudo gpg mkfs.ext4 e2fsck; do
+#.           command -v $req 1>/dev/null 2>/dev/null || {
+#. >             _failure "Missing required dependency ::1 command::.  Please install it." $req }
+#.       done
+#.   
+#.       # Ensure system binaries are available in the PATH
+#.       path+=(/sbin /usr/sbin) # zsh magic
+#: tomb:748
 msgid "Missing required dependency ::1 command::.  Please install it."
-msgstr "Fehlende Abhängigkeit ::1 tomb path:: wird benötigt. Bitte installieren Sie sie."
+msgstr ""
+"Fehlende Abhängigkeit ::1 tomb path:: wird benötigt. Bitte installieren Sie "
+"sie."
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.   
+#.       _verbose "is_valid_key"
+#.   
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#. >             _warning "cleartext key from stdin selected: this is unsafe."
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#: tomb:785
+msgid "cleartext key from stdin selected: this is unsafe."
+msgstr ""
+"Klartext Schlüssel von der Standarteingabe ausgewählt: Dies ist nicht sicher."
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       _verbose "is_valid_key"
+#.   
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#.               _warning "cleartext key from stdin selected: this is unsafe."
+#. >             exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#: tomb:786
+msgid "please use --unsafe if you really want to do this."
+msgstr "Bitte benutzen Sie --unsafe wenn Sie dies wirklich tun wollen."
 
-#: warning
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#.               _warning "cleartext key from stdin selected: this is unsafe."
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#. >         _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#.       [[ -z $key ]] && {
+#.           _warning "is_valid_key() called without an argument."
+#: tomb:788
+msgid "received key in cleartext from stdin (unsafe mode)"
+msgstr ""
+"Empfangen des Schlüssels in Klartext von der Standarteingabe (Nicht sicherer "
+"Modus)"
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#.       [[ -z $key ]] && {
+#. >         _warning "is_valid_key() called without an argument."
+#.           return 1
+#.       }
+#.   
+#.       # If the key file is an image don't check file header
+#: tomb:792
 msgid "is_valid_key() called without an argument."
 msgstr "is_valid_key() ausgeführt ohne gültiges Argument."
 
-#: message
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       }
+#.   
+#.       # If the key file is an image don't check file header
+#.       [[ -r $TOMBKEYFILE ]] #.           && [[ $(file $TOMBKEYFILE) =~ "JP.G" ]] #.           && {
+#. >         _message "Key is an image, it might be valid."
+#.           return 0 }
+#.   
+#.       [[ $key =~ "BEGIN PGP" ]] && {
+#.           _message "Key is valid."
+#: tomb:800
 msgid "Key is an image, it might be valid."
 msgstr "Schlüssel ist ein Bild, es könnte gültig sein"
 
-#: message
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.           && [[ $(file $TOMBKEYFILE) =~ "JP.G" ]] #.           && {
+#.           _message "Key is an image, it might be valid."
+#.           return 0 }
+#.   
+#.       [[ $key =~ "BEGIN PGP" ]] && {
+#. >         _message "Key is valid."
+#.           return 0 }
+#.   
+#.       return 1
+#.   }
+#: tomb:804
 msgid "Key is valid."
 msgstr "Schlüssel ist gültig"
 
-#: warning
+#. Fold: Key operations
+#. Function: _tomb_key_recover recover_key
+#.
+#. Code sample:
+#.   }
+#.   
+#.   # $1 is a string containing an encrypted key
+#.   _tomb_key_recover recover_key() {
+#.       local key="${1}"    # Unique argument is an encrypted key
+#.   
+#. >     _warning "Attempting key recovery."
+#.   
+#.       _head="${key[(f)1]}" # take the first line
+#.   
+#.       TOMBKEY=""        # Reset global variable
+#: tomb:814
 msgid "Attempting key recovery."
 msgstr "Versuche Schlüssel wieder herzustellen"
 
-#: warning
-msgid "The key seems invalid or its format is not known by this version of Tomb."
-msgstr "Der Schlüssel scheint ungültig zu sein, oder sein Format ist dieser Tomb Version unbekannt."
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.   # Set global variables TOMBKEY and TOMBKEYFILE.
+#.   _load_key() {
+#.       local keyfile="$1"    # Unique argument is an optional keyfile
+#.   
+#.       [[ -z $keyfile ]] && keyfile=$(option_value -k)
+#.       [[ -z $keyfile ]] && {
+#. >         _failure "This operation requires a key file to be specified using the -k option." }
+#.   
+#.       if [[ $keyfile == "-" ]]; then
+#.           _verbose "load_key reading from stdin."
+#.           _message "Waiting for the key to be piped from stdin... "
+#: tomb:838
+msgid "This operation requires a key file to be specified using the -k option."
+msgstr ""
+"Diese Operation benötigt das Angeben eines Schlüssels durch die -k Option."
+
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.       [[ -z $keyfile ]] && keyfile=$(option_value -k)
+#.       [[ -z $keyfile ]] && {
+#.           _failure "This operation requires a key file to be specified using the -k option." }
+#.   
+#.       if [[ $keyfile == "-" ]]; then
+#.           _verbose "load_key reading from stdin."
+#. >         _message "Waiting for the key to be piped from stdin... "
+#.           TOMBKEYFILE=stdin
+#.           TOMBKEY=$(cat)
+#.       elif [[ $keyfile == "cleartext" ]]; then
+#.           _verbose "load_key reading SECRET from stdin"
+#: tomb:842
+msgid "Waiting for the key to be piped from stdin... "
+msgstr "Warten auf den Schlüssel auf der Standarteingabe... "
+
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.           _message "Waiting for the key to be piped from stdin... "
+#.           TOMBKEYFILE=cleartext
+#.           TOMBKEY=cleartext
+#.           TOMBSECRET=$(cat)
+#.       else
+#.           _verbose "load_key argument: ::1 key file::" $keyfile
+#. >         [[ -r $keyfile ]] || _failure "Key not found, specify one using -k."
+#.           TOMBKEYFILE=$keyfile
+#.           TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.       fi
+#.   
+#: tomb:853
+msgid "Key not found, specify one using -k."
+msgstr "Schlüssel nicht gefunden, bitte mit -k einen Schlüssel angeben."
 
-#: failure
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.           TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.       fi
+#.   
+#.       _verbose "load_key: ::1 key::" $TOMBKEYFILE
+#.   
+#.       is_valid_key $TOMBKEY || {
+#. >         _warning "The key seems invalid or its format is not known by this version of Tomb."
+#.           _tomb_key_recover $TOMBKEY
+#.       }
+#.   
+#.       # Declared TOMBKEYFILE (path)
+#: tomb:861
+msgid ""
+"The key seems invalid or its format is not known by this version of Tomb."
+msgstr ""
+"Der Schlüssel scheint ungültig zu sein, oder sein Format ist dieser Tomb "
+"Version unbekannt."
+
+#. Fold: Key operations
+#. Function: get_lukskey
+#.
+#. Code sample:
+#.                   _verbose "KDF salt: $kdf_salt"
+#.                   _verbose "KDF ic: $kdf_ic"
+#.                   _verbose "KDF len: $kdf_len"
+#.                   _password=$(tomb-kdb-pbkdf2 $kdf_salt $kdf_ic $kdf_len 2>/dev/null <<<$_password)
+#.                   ;;
+#.               *)
+#. >                 _failure "No suitable program for KDF ::1 program::." $pbkdf_hash
+#.                   unset _password
+#.                   return 1
+#.                   ;;
+#.           esac
+#: tomb:936
 msgid "No suitable program for KDF ::1 program::."
 msgstr "Kein gültiges Programm zur Schlüsselableitung ::1 program::."
 
-#: failure
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.   
+#.   # This function asks the user for the password to use the key it tests
+#.   # it against the return code of gpg on success returns 0 and saves
+#.   # the password in the global variable $TOMBPASSWORD
+#.   ask_key_password() {
+#.       [[ -z "$TOMBKEYFILE" ]] && {
+#. >         _failure "Internal error: ask_key_password() called before _load_key()." }
+#.   
+#.       [[ "$TOMBKEYFILE" = "cleartext" ]] && {
+#.           _verbose "no password needed, using secret bytes from stdin"
+#.           return 0 }
+#: tomb:962
 msgid "Internal error: ask_key_password() called before _load_key()."
 msgstr "Interner Fehler: ask_key_password() vor _load_key() ausgeführt."
 
-#: message
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.           _failure "Internal error: ask_key_password() called before _load_key()." }
+#.   
+#.       [[ "$TOMBKEYFILE" = "cleartext" ]] && {
+#.           _verbose "no password needed, using secret bytes from stdin"
+#.           return 0 }
+#.   
+#. >     _message "A password is required to use key ::1 key::" $TOMBKEYFILE
+#.       passok=0
+#.       tombpass=""
+#.       if [[ "$1" = "" ]]; then
+#.   
+#: tomb:968
 msgid "A password is required to use key ::1 key::"
 msgstr "Ein Passwort ist zur Benutzung des Schlüssels ::1 key:: erforderlich"
 
-#: message
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.               if [[ $c == 1 ]]; then
+#.                   tombpass=$(ask_password "Insert password to: $TOMBKEYFILE")
+#.               else
+#.                   tombpass=$(ask_password "Insert password to: $TOMBKEYFILE (attempt $c)")
+#.               fi
+#.               [[ $? = 0 ]] || {
+#. >                 _warning "User aborted password dialog."
+#.                   return 1
+#.               }
+#.   
+#.               get_lukskey "$tombpass"
+#: tomb:980
+msgid "User aborted password dialog."
+msgstr "Benutzer hat den Passwortdialog abgebrochen."
+
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.                   return 1
+#.               }
+#.   
+#.               get_lukskey "$tombpass"
+#.   
+#.               [[ $? = 0 ]] && {
+#. >                 passok=1; _message "Password OK."
+#.                   break;
+#.               }
+#.           done
+#.   
+#: tomb:987
+msgid "Password OK."
+msgstr "Passwort OK."
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.   change_passwd() {
+#.       local tmpnewkey lukskey c tombpass tombpasstmp
+#.   
+#.       _check_swap  # Ensure swap is secure, if any
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#. >     _message "Commanded to change password for tomb key ::1 key::" $TOMBKEYFILE
+#.   
+#.       _tmp_create
+#.       tmpnewkey=$TOMBTMP
+#.   
+#: tomb:1025
 msgid "Commanded to change password for tomb key ::1 key::"
 msgstr "Benutzer hat Passwort für Schlüssel ::1 key:: gewechselt."
 
-#: failure
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           local tomboldpwd="`option_value --tomb-old-pwd`"
+#.           _verbose "tomb-old-pwd = ::1 old pass::" $tomboldpwd
+#.           ask_key_password "$tomboldpwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#. >     [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _success "Changing password for ::1 key file::" $TOMBKEYFILE
+#.   
+#.       # Here $TOMBSECRET contains the key material in clear
+#: tomb:1037
 msgid "No valid password supplied."
 msgstr "Kein gültiges Passwort angegeben"
 
-#: message
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           ask_key_password "$tomboldpwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#. >     _success "Changing password for ::1 key file::" $TOMBKEYFILE
+#.   
+#.       # Here $TOMBSECRET contains the key material in clear
+#.   
+#.       { option_is_set --tomb-pwd } && {
+#: tomb:1039
+msgid "Changing password for ::1 key file::"
+msgstr "Wechsle Passwort für ::1 key file::"
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           gen_key "$tombpwd" >> "$tmpnewkey"
+#.       } || {
+#.           gen_key >> "$tmpnewkey"
+#.       }
+#.   
+#.       { is_valid_key "${mapfile[$tmpnewkey]}" } || {
+#. >         _failure "Error: the newly generated keyfile does not seem valid." }
+#.   
+#.       # Copy the new key as the original keyfile name
+#.       cp -f "${tmpnewkey}" $TOMBKEYFILE
+#.       _success "Your passphrase was successfully updated."
+#: tomb:1052
+msgid "Error: the newly generated keyfile does not seem valid."
+msgstr "Fehler: Der neu erstellte Schlüssel scheint nicht gültig zu sein."
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.   
+#.       { is_valid_key "${mapfile[$tmpnewkey]}" } || {
+#.           _failure "Error: the newly generated keyfile does not seem valid." }
+#.   
+#.       # Copy the new key as the original keyfile name
+#.       cp -f "${tmpnewkey}" $TOMBKEYFILE
+#. >     _success "Your passphrase was successfully updated."
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1056
+msgid "Your passphrase was successfully updated."
+msgstr "Ihr Passphrase wurde erfolgreich auf den neuesten Stand gebracht."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.   
+#.       if [ "$1" = "" ]; then
+#.           while true; do
+#.               # 3 tries to write two times a matching password
+#.               tombpass=`ask_password "Type the new password to secure your key"`
+#.               if [[ $? != 0 ]]; then
+#. >                 _failure "User aborted."
+#.               fi
+#.               if [ -z $tombpass ]; then
+#.                   _failure "You set empty password, which is not possible."
+#.               fi
+#: tomb:1078
+msgid "User aborted."
+msgstr "Vom Benutzer abgebrochen."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # 3 tries to write two times a matching password
+#.               tombpass=`ask_password "Type the new password to secure your key"`
+#.               if [[ $? != 0 ]]; then
+#.                   _failure "User aborted."
+#.               fi
+#.               if [ -z $tombpass ]; then
+#. >                 _failure "You set empty password, which is not possible."
+#.               fi
+#.               tombpasstmp=$tombpass
+#.               tombpass=`ask_password "Type the new password to secure your key (again)"`
+#.               if [[ $? != 0 ]]; then
+#: tomb:1081
+msgid "You set empty password, which is not possible."
+msgstr "Fehler: Passwort nicht gesetzt."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # see: https://github.com/dyne/Tomb/issues/82
+#.               itertime="`option_value --kdf`"
+#.               # removing support of floating points because they can't be type checked well
+#.               if [[ "$itertime" != <-> ]]; then
+#.                   unset tombpass
+#.                   unset tombpasstmp
+#. >                 _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#: tomb:1109
+msgid ""
+"Wrong argument for --kdf: must be an integer number (iteration seconds)."
+msgstr "Ungültiges Argument für --kdf: dies muss eine Ganzzahl sein."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.                   unset tombpasstmp
+#.                   _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#. >             _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#: tomb:1114
+msgid "Using KDF, iterations: ::1 microseconds::"
+msgstr "Benutze Schlüsselableitungsverfahren, Durchläufe: ::1 microseconds::"
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.                   _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#. >             _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#.               _message "encoding the password"
+#: tomb:1115
 msgid "generating salt"
 msgstr "generiere Salt"
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#. >             _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#.               _message "encoding the password"
+#.               # We use a length of 64bytes = 512bits (more than needed!?)
+#.               tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+#: tomb:1117
 msgid "calculating iterations"
 msgstr "berechne Iterationen"
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#. >             _message "encoding the password"
+#.               # We use a length of 64bytes = 512bits (more than needed!?)
+#.               tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+#.   
+#.               header="_KDF_pbkdf2sha1_${pbkdf2_salt}_${pbkdf2_iter}_64\n"
+#: tomb:1119
 msgid "encoding the password"
 msgstr "Passwort verschlüsseln"
 
-#: warning
+#. Fold: Key operations
+#. Function: list_gnupg_ciphers
+#.
+#. Code sample:
+#.       unset tombpasstmp
+#.   }
+#.   
+#.   # prints an array of ciphers available in gnupg (to encrypt keys)
+#.   list_gnupg_ciphers() {
+#.       # prints an error if GnuPG is not found
+#. >     which gpg 2>/dev/null || _failure "gpg (GnuPG) is not found, Tomb cannot function without it."
+#.   
+#.       ciphers=(`gpg --version | awk '
+#.   BEGIN { ciphers=0 }
+#.   /^Cipher:/ { gsub(/,/,""); sub(/^Cipher:/,""); print; ciphers=1; next }
+#: tomb:1150
+msgid "gpg (GnuPG) is not found, Tomb cannot function without it."
+msgstr ""
+"gpg (GnuPG) welches zur Funktion von Tomb notwendig ist, nicht gefunden."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEY
+#.   
+#.       imagefile=$PARAM
+#.   
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#. >         _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#.       _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#: tomb:1171
 msgid "Encode failed: ::1 image file:: is not a jpeg image."
 msgstr "Verschlüsselung fehlgeschlagen: ::1 image file:: ist keine JPEG-Datei."
 
-#: failure
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#.           _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#. >     _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#.       _message "Please confirm the key password for the encoding"
+#.       # We ask the password and test if it is the same encoding the
+#.       # base key, to insure that the same password is used for the
+#.       # encryption and the steganography. This is a standard enforced
+#: tomb:1175
+msgid "Encoding key ::1 tomb key:: inside image ::2 image file::"
+msgstr "Enkodiere Schlüssel ::1 tomb key:: im Bild ::2 image file::"
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#.           _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#.       _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#. >     _message "Please confirm the key password for the encoding"
+#.       # We ask the password and test if it is the same encoding the
+#.       # base key, to insure that the same password is used for the
+#.       # encryption and the steganography. This is a standard enforced
+#.       # by Tomb, but its not strictly necessary (and having different
+#: tomb:1176
+msgid "Please confirm the key password for the encoding"
+msgstr "Bitte bestätigen Sie das Passwort zur Verschlüsselung"
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tombpwd
+#.           ask_key_password "$tombpwd"
+#.       } || {
+#.           ask_key_password
+#.       }
+#.       [[ $? != 0 ]] && {
+#. >         _warning "Wrong password supplied."
+#.           _failure "You shall not bury a key whose password is unknown to you." }
+#.   
+#.       # We omit armor strings since having them as constants can give
+#.       # ground to effective attacks on steganography
+#: tomb:1192
+msgid "Wrong password supplied."
+msgstr "Das eingegebene Passwort ist falsch."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.           ask_key_password "$tombpwd"
+#.       } || {
+#.           ask_key_password
+#.       }
+#.       [[ $? != 0 ]] && {
+#.           _warning "Wrong password supplied."
+#. >         _failure "You shall not bury a key whose password is unknown to you." }
+#.   
+#.       # We omit armor strings since having them as constants can give
+#.       # ground to effective attacks on steganography
+#.       print - "$TOMBKEY" | awk '
+#: tomb:1193
+msgid "You shall not bury a key whose password is unknown to you."
+msgstr ""
+"Sie dürfen keinen Schlüssel vergraben, von dem Sie das Passwort nicht kennen."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   /^-----/ {next}
+#.   /^Version/ {next}
+#.   {print $0}' #.       | steghide embed --embedfile - --coverfile ${imagefile} #.       -p $TOMBPASSWORD -z 9 -e serpent cbc
+#.       if [ $? != 0 ]; then
+#. >         _warning "Encoding error: steghide reports problems."
+#.           res=1
+#.       else
+#.           _success "Tomb key encoded succesfully into image ::1 image file::" $imagefile
+#.           res=0
+#: tomb:1204
+msgid "Encoding error: steghide reports problems."
+msgstr "Fehler beim Verschlüsseln: steghide meldet Fehler."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.       | steghide embed --embedfile - --coverfile ${imagefile} #.       -p $TOMBPASSWORD -z 9 -e serpent cbc
+#.       if [ $? != 0 ]; then
+#.           _warning "Encoding error: steghide reports problems."
+#.           res=1
+#.       else
+#. >         _success "Tomb key encoded succesfully into image ::1 image file::" $imagefile
+#.           res=0
+#.       fi
+#.   
+#.       return $res
+#: tomb:1207
+msgid "Tomb key encoded succesfully into image ::1 image file::"
+msgstr "Grabschlüssel erfolgreich im Bild ::1 image file:: enkodiert"
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.   # mandatory 1st arg: the image file where key is supposed to be
+#.   # optional 2nd arg: the password to use (same as key, internal use)
+#.   # optional 3rd arg: the key where to save the result (- for stdout)
+#.   exhume_key() {
+#.       [[ "$1" = "" ]] && {
+#. >         _failure "Exhume failed, no image specified" }
+#.   
+#.       local imagefile="$1"  # The image file where to look for the key
+#.       local tombpass="$2"   # (Optional) the password to use (internal use)
+#.       local destkey="$3"    # (Optional) the key file where to save the
+#: tomb:1219
+msgid "Exhume failed, no image specified"
+msgstr "Extrahieren fehlgeschlagen, keine Bilddatei angegeben"
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       local destkey="$3"    # (Optional) the key file where to save the
+#.       # result (- for stdout)
+#.       local r=1             # Return code (default: fail)
+#.   
+#.       # Ensure the image file is a readable JPEG
+#.       [[ ! -r $imagefile ]] && {
+#. >         _failure "Exhume failed, image file not found: ::1 image file::" "${imagefile:-none}" }
+#.       [[ ! $(file "$imagefile") =~ "JP.G" ]] && {
+#.           _failure "Exhume failed: ::1 image file:: is not a jpeg image." $imagefile }
+#.   
+#.       # When a password is passed as argument then always print out
+#: tomb:1229
 msgid "Exhume failed, image file not found: ::1 image file::"
 msgstr "Exhumieren fehlgeschlagen, Bilddatei nicht gefunden: ::1 image file::"
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       local r=1             # Return code (default: fail)
+#.   
+#.       # Ensure the image file is a readable JPEG
+#.       [[ ! -r $imagefile ]] && {
+#.           _failure "Exhume failed, image file not found: ::1 image file::" "${imagefile:-none}" }
+#.       [[ ! $(file "$imagefile") =~ "JP.G" ]] && {
+#. >         _failure "Exhume failed: ::1 image file:: is not a jpeg image." $imagefile }
+#.   
+#.       # When a password is passed as argument then always print out
+#.       # the exhumed key on stdout without further checks (internal use)
+#.       [[ -n "$tombpass" ]] && {
+#: tomb:1231
 msgid "Exhume failed: ::1 image file:: is not a jpeg image."
 msgstr "Verschlüsselung fehlgeschlagen: ::1 image file:: ist keine JPEG-Datei."
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.       # When a password is passed as argument then always print out
+#.       # the exhumed key on stdout without further checks (internal use)
+#.       [[ -n "$tombpass" ]] && {
+#.           TOMBKEY=$(steghide extract -sf $imagefile -p $tombpass -xf -)
+#.           [[ $? != 0 ]] && {
+#. >             _failure "Wrong password or no steganographic key found" }
+#.   
+#.           recover_key $TOMBKEY
+#.   
+#.           return 0
+#: tomb:1238
 msgid "Wrong password or no steganographic key found"
 msgstr "Falsches Passwort, oder kein steganographischer Schlüssel gefunden"
 
-#: message
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       }
+#.   
+#.       # Ensure we have a valid destination for the key
+#.       [[ -z $destkey ]] && { option_is_set -k } && destkey=$(option_value -k)
+#.       [[ -z $destkey ]] && {
+#.           destkey="-" # No key was specified: fallback to stdout
+#. >         _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#: tomb:1249
 msgid "printing exhumed key on stdout"
 msgstr "Gebe exhumierten Schlüssel auf stdout aus"
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       [[ -z $destkey ]] && {
+#.           destkey="-" # No key was specified: fallback to stdout
+#.           _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#. >         _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#: tomb:1253
 msgid "File exists: ::1 tomb key::"
 msgstr "Datei existiert: ::1 tomb key::"
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.           _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#. >             _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#: tomb:1255
+msgid "Use of --force selected: overwriting."
+msgstr "--force wurde benutzt, wird überschrieben."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#. >             _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#.       _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#: tomb:1258
+msgid "Make explicit use of --force to overwrite."
+msgstr "Benutzen Sie --force um ein Überschreiben zu erzwingen."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#. >             _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#.       _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#.       { option_is_set --tomb-pwd } && {
+#: tomb:1259
 msgid "Refusing to overwrite file. Operation aborted."
 msgstr "Überschreiben verweigert. Operation abgebrochen."
 
-#: message
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#. >     _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#.       { option_is_set --tomb-pwd } && {
+#.           tombpass=$(option_value --tomb-pwd)
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tombpass
+#.       } || {
+#: tomb:1262
 msgid "Trying to exhume a key out of image ::1 image file::"
 msgstr "Versuche Schlüssel aus ::1 image file:: zu exhumieren"
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       steghide extract -sf $imagefile -p ${tombpass} -xf $destkey
+#.       r=$?
+#.   
+#.       # Report to the user
+#.       [[ "$destkey" = "-" ]] && destkey="stdout"
+#.       [[ $r == 0 ]] && {
+#. >         _success "Key succesfully exhumed to ::1 key::." $destkey
+#.       } || {
+#.           _warning "Nothing found in ::1 image file::" $imagefile
+#.       }
+#.   
+#: tomb:1283
+msgid "Key succesfully exhumed to ::1 key::."
+msgstr "Schlüssel erfolgreich exhumiert in ::1 key::."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.       # Report to the user
+#.       [[ "$destkey" = "-" ]] && destkey="stdout"
+#.       [[ $r == 0 ]] && {
+#.           _success "Key succesfully exhumed to ::1 key::." $destkey
+#.       } || {
+#. >         _warning "Nothing found in ::1 image file::" $imagefile
+#.       }
+#.   
+#.       return $r
+#.   }
+#: tomb:1285
 msgid "Nothing found in ::1 image file::"
 msgstr "Nichts gefunden in ::1 image file::"
 
-#: failure
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#.       local keyname=$(basename $TOMBKEYFILE)
+#.       local pngname="$keyname.qr.png"
+#.   
+#. >     _success "Rendering a printable QRCode for key: ::1 tomb key file::" $TOMBKEYFILE
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#: tomb:1300
+msgid "Rendering a printable QRCode for key: ::1 tomb key file::"
+msgstr "Rendern eines ausdruckbaren QRCodes für Schlüssel: ::1 tomb key file::"
+
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.   
+#.       _success "Rendering a printable QRCode for key: ::1 tomb key file::" $TOMBKEYFILE
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#. >         _failure "QREncode reported an error." }
+#.   
+#.       _success "Operation successful:"
+#.       # TODO: only if verbose and/or not silent
+#.       ls -lh $pngname
+#: tomb:1305
 msgid "QREncode reported an error."
 msgstr "QREncode meldet einen Fehler."
 
-#: message
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#.           _failure "QREncode reported an error." }
+#.   
+#. >     _success "Operation successful:"
+#.       # TODO: only if verbose and/or not silent
+#.       ls -lh $pngname
+#.       file $pngname
+#.   }
+#: tomb:1307
+msgid "Operation successful:"
+msgstr "Operation erfolgreich:"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.   dig_tomb() {
+#.       local    tombpath="$1"    # Path to tomb
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#. >     _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#: tomb:1340
 msgid "Commanded to dig tomb ::1 tomb path::"
 msgstr "Befehl erhalten zum ausgraben des Grabes: ::1 tomb path::"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       local    tombpath="$1"    # Path to tomb
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#. >     [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#: tomb:1342
 msgid "Missing path to tomb"
 msgstr "Dateipfad zum Grab fehlt"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#. >     [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#: tomb:1343
+msgid "Size argument missing, use -s"
+msgstr "Größenangabe fehlt, benutzen Sie -s"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#. >     [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#: tomb:1344
 msgid "Size must be an integer (megabytes)"
 msgstr "Größe muss eine Ganzzahl sein (Megabytes)"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#. >     [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       [[ -e $TOMBPATH ]] && {
+#: tomb:1345
 msgid "Tombs can't be smaller than 10 megabytes"
 msgstr "Gräber können nicht kleiner als 10 Megabyte sein"
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       [[ -e $TOMBPATH ]] && {
+#. >         _warning "A tomb exists already. I'm not digging here:"
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#: tomb:1350
+msgid "A tomb exists already. I'm not digging here:"
+msgstr "Es existiert bereits ein Grab. Hier grabe ich nicht:"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       [[ -e $TOMBPATH ]] && {
+#.           _warning "A tomb exists already. I'm not digging here:"
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#. >     _success "Creating a new tomb in ::1 tomb path::" $TOMBPATH
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#: tomb:1355
+msgid "Creating a new tomb in ::1 tomb path::"
+msgstr "Erstelle ein neues Grab in ::1 tomb path::"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#.       _success "Creating a new tomb in ::1 tomb path::" $TOMBPATH
+#.   
+#. >     _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#.       touch $TOMBPATH
+#.       [[ $? = 0 ]] || {
+#: tomb:1357
 msgid "Generating ::1 tomb file:: of ::2 size::MiB"
 msgstr "Grab ::1 tomb file:: wird erstellt, mit der Größe ::2 size::Mb"
 
-#: warning
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#.       touch $TOMBPATH
+#.       [[ $? = 0 ]] || {
+#. >         _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.       chmod 0600 $TOMBPATH
+#.   
+#: tomb:1362
 msgid "Error creating the tomb ::1 tomb path::"
 msgstr "Fehler beim Erzeugen des Grabes  ::1 tomb path::"
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           ls -lh $TOMBPATH
+#.       } || {
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#. >     _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#: tomb:1377
+msgid "Done digging ::1 tomb name::"
+msgstr "Fertig mit ausgraben ::1 tomb name::"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       } || {
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#. >     _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#: tomb:1378
+msgid "Your tomb is not yet ready, you need to forge a key and lock it:"
+msgstr ""
+"Ihr Grab ist noch nicht bereit, erst müssen Sie einen Schlüssel schmieden "
+"und es abschließen:"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#. >     _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#: tomb:1379
 msgid "tomb forge ::1 tomb path::.key"
 msgstr "tomb forge ::1 tomb path::.key "
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#. >     _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1380
 msgid "tomb lock ::1 tomb path:: -k ::1 tomb path::.key"
 msgstr "tomb lock ::1 tomb path:: -k ::1 tomb path::.key "
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       local destkey="$1"
+#.       { option_is_set -k } && { destkey=$(option_value -k) }
+#.   
+#.       local algo="AES256"  # Default encryption algorithm
+#.   
+#.       [[ -z "$destkey" ]] && {
+#. >         _failure "A filename needs to be specified using -k to forge a new key." }
+#.   
+#.       _message "Commanded to forge key ::1 key::" $destkey
+#.   
+#.       _check_swap # Ensure the available memory is safe to use
+#: tomb:1401
+msgid "A filename needs to be specified using -k to forge a new key."
+msgstr ""
+"Mit -k muss ein Dateiname angegeben werden, um einen neuen Schlüssel zu "
+"schmieden."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       local algo="AES256"  # Default encryption algorithm
+#.   
+#.       [[ -z "$destkey" ]] && {
+#.           _failure "A filename needs to be specified using -k to forge a new key." }
+#.   
+#. >     _message "Commanded to forge key ::1 key::" $destkey
+#.   
+#.       _check_swap # Ensure the available memory is safe to use
+#.   
+#.       # Ensure GnuPG won't exit with an error before first run
+#: tomb:1403
 msgid "Commanded to forge key ::1 key::"
 msgstr "::1 key:: wird geschmiedet"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           mkdir -m 0700 $HOME/.gnupg
+#.           touch $HOME/.gnupg/pubring.gpg }
+#.   
+#.       # Do not overwrite any files accidentally
+#.       [[ -r "$destkey" ]] && {
+#.           ls -lh $destkey
+#. >         _failure "Forging this key would overwrite an existing file. Operation aborted." }
+#.   
+#.       touch $destkey
+#.       [[ $? == 0 ]] || {
+#.           _warning "Cannot generate encryption key."
+#: tomb:1415
+msgid "Forging this key would overwrite an existing file. Operation aborted."
+msgstr ""
+"Diesen Schlüssel zu schmieden würde eine existierende Datei überschreiben. "
+"Aktion abgebrochen."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       [[ -r "$destkey" ]] && {
+#.           ls -lh $destkey
+#.           _failure "Forging this key would overwrite an existing file. Operation aborted." }
+#.   
+#.       touch $destkey
+#.       [[ $? == 0 ]] || {
+#. >         _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.       chmod 0600 $destkey
+#.   
+#.       # Update algorithm if it was passed on the command line with -o
+#: tomb:1419
+msgid "Cannot generate encryption key."
+msgstr "Verschlüsselungsschlüssel konnte nicht erstellt werden."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       chmod 0600 $destkey
+#.   
+#.       # Update algorithm if it was passed on the command line with -o
+#.       { option_is_set -o } && algopt="$(option_value -o)"
+#.       [[ -n "$algopt" ]] && algo=$algopt
+#.   
+#. >     _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#: tomb:1427
 msgid "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::"
-msgstr "Der Schlüssel ::1 key:: wird mit dem Verschlüsselungsalgorithmus ::2 algorithm:: geschmiedet."
+msgstr ""
+"Der Schlüssel ::1 key:: wird mit dem Verschlüsselungsalgorithmus ::2 "
+"algorithm:: geschmiedet."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#. >     _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#: tomb:1432
+msgid "This operation takes time, keep using this computer on other tasks,"
+msgstr ""
+"Dieser Vorgang braucht Zeit, benutzen Sie den Computer für andere Aufgaben,"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#. >     _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#: tomb:1433
+msgid "once done you will be asked to choose a password for your tomb."
+msgstr ""
+"wenn der Vorgang einmal abgeschlossen ist, werden Sie gefragt ein Passwort "
+"für ihr Grab anzugeben."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#. >     _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#.       local random_source=/dev/random
+#: tomb:1434
+msgid "To make it faster you can move the mouse around."
+msgstr ""
+"Um den Vorgang zu Beschleunigen können Sie die Maus hin und her bewegen."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#. >     _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#.       local random_source=/dev/random
+#.       { option_is_set --use-urandom } && random_source=/dev/urandom
+#: tomb:1435
+msgid "If you are on a server, you can use an Entropy Generation Daemon."
+msgstr ""
+"Falls Sie auf einem Server sind können Sie einen Daemon benutzen um Entropie "
+"zu erstellen."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       [[ $? == 0 ]] || {
+#.           _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.   
+#.       # Here the global variable TOMBSECRET contains the naked secret
+#.   
+#. >     _success "Choose the  password of your key: ::1 tomb key::" $TOMBKEYFILE
+#.       _message "(You can also change it later using 'tomb passwd'.)"
+#.       # _user_file $TOMBKEYFILE
+#.   
+#.       tombname="$TOMBKEYFILE" # XXX ???
+#: tomb:1449
+msgid "Choose the  password of your key: ::1 tomb key::"
+msgstr "Wählen Sie das Passwort von ihrem Schlüssel: ::1 tomb key::"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.   
+#.       # Here the global variable TOMBSECRET contains the naked secret
+#.   
+#.       _success "Choose the  password of your key: ::1 tomb key::" $TOMBKEYFILE
+#. >     _message "(You can also change it later using 'tomb passwd'.)"
+#.       # _user_file $TOMBKEYFILE
+#.   
+#.       tombname="$TOMBKEYFILE" # XXX ???
+#.       # the gen_key() function takes care of the new key's encryption
+#: tomb:1450
+msgid "(You can also change it later using 'tomb passwd'.)"
+msgstr "(Sie können ihn auch später mit 'tomb passwd' wechseln.)"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       # load the key contents (set global variable)
+#.       TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.   
+#.       # this does a check on the file header
+#.       is_valid_key $TOMBKEY || {
+#. >         _warning "The key does not seem to be valid."
+#.           _warning "Dumping contents to screen:"
+#.           print "${mapfile[$TOMBKEY]}"
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#: tomb:1468
+msgid "The key does not seem to be valid."
+msgstr "Der Schlüssel scheint ungültig zu sein."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       # load the key contents (set global variable)
+#.       TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.   
+#.       # this does a check on the file header
+#.       is_valid_key $TOMBKEY || {
+#.           _warning "The key does not seem to be valid."
+#. >         _warning "Dumping contents to screen:"
+#.           print "${mapfile[$TOMBKEY]}"
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#: tomb:1469
+msgid "Dumping contents to screen:"
+msgstr "Inhalte werden am Bildschirm angezeigt :"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#. >     _message "Done forging ::1 key file::" $TOMBKEYFILE
+#.       _success "Your key is ready:"
+#.       ls -lh $TOMBKEYFILE
+#.   }
+#.   
+#: tomb:1477
 msgid "Done forging ::1 key file::"
 msgstr "::1 key file:: fertig geschmiedet"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _message "Done forging ::1 key file::" $TOMBKEYFILE
+#. >     _success "Your key is ready:"
+#.       ls -lh $TOMBKEYFILE
+#.   }
+#.   
+#.   # Step three -- Lock tomb
+#: tomb:1478
+msgid "Your key is ready:"
+msgstr "Ihr Schlüssel ist bereit:"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       # for more alternatives refer to cryptsetup(8)
+#.       local cipher="aes-xts-plain64:sha256"
+#.   
+#.       local tombpath="$1"      # First argument is the path to the tomb
+#.   
+#.       [[ -n $tombpath ]] || {
+#. >         _warning "No tomb specified for locking."
+#.           _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#: tomb:1498
+msgid "No tomb specified for locking."
+msgstr "Kein Grab zum verschließen angegeben"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       local cipher="aes-xts-plain64:sha256"
+#.   
+#.       local tombpath="$1"      # First argument is the path to the tomb
+#.   
+#.       [[ -n $tombpath ]] || {
+#.           _warning "No tomb specified for locking."
+#. >         _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#.       _plot $tombpath
+#: tomb:1499
+msgid "Usage: tomb lock file.tomb file.tomb.key"
+msgstr "Gebrauch: tomb lock file.tomb file.tomb.key"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#.       _plot $tombpath
+#.   
+#. >     _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
+#.   
+#.       [[ -f $TOMBPATH ]] || {
+#.           _failure "There is no tomb here. You have to dig it first." }
+#.   
+#: tomb:1505
 msgid "Commanded to lock tomb ::1 tomb file::"
 msgstr "Grab ::1 tomb file:: wird verschlossen"
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _plot $tombpath
+#.   
+#.       _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
+#.   
+#.       [[ -f $TOMBPATH ]] || {
+#. >         _failure "There is no tomb here. You have to dig it first." }
+#.   
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       lo_mount $TOMBPATH
+#: tomb:1508
+msgid "There is no tomb here. You have to dig it first."
+msgstr "Es ist kein Grab an diesem Ort. Sie müssen erst eins graben."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#.       _verbose "Loop mounted on ::1 mount point::" $nstloop
+#.   
+#. >     _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#: tomb:1517
+msgid "Checking if the tomb is empty (we never step on somebody else's bones)."
+msgstr ""
+"Am kontrollieren ob Grab leer ist (wir würden nie fremde Knochen stören)."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       _verbose "Loop mounted on ::1 mount point::" $nstloop
+#.   
+#.       _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#. >         _warning "The tomb was already locked with another key."
+#.           _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#.           _message "Fine, this tomb seems empty."
+#.       fi
+#: tomb:1521
+msgid "The tomb was already locked with another key."
+msgstr "Grab ist schon mit anderem Schlüssel verschlossen."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#. >         _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#.           _message "Fine, this tomb seems empty."
+#.       fi
+#.   
+#: tomb:1522
+msgid ""
+"Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+msgstr ""
+"Vorgang abgebrochen. Ich kann kein bereits abgeschlossenes Grab nochmal "
+"abschließen. Graben Sie ein neues."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#.           _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#. >         _message "Fine, this tomb seems empty."
+#.       fi
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#: tomb:1524
+msgid "Fine, this tomb seems empty."
+msgstr "Gut, dieses Grab scheint leer."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#.       # the encryption cipher for a tomb can be set when locking using -c
+#.       { option_is_set -o } && algopt="$(option_value -o)"
+#.       [[ -n "$algopt" ]] && cipher=$algopt
+#. >     _message "Locking using cipher: ::1 cipher::" $cipher
+#.   
+#.       # get the pass from the user and check it
+#.       if option_is_set --tomb-pwd; then
+#.           tomb_pwd="`option_value --tomb-pwd`"
+#: tomb:1532
 msgid "Locking using cipher: ::1 cipher::"
 msgstr "Abschließen mit Chiffre: ::1 cipher::"
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           ask_key_password "$tomb_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#. >     _success "Locking ::1 tomb file:: with ::2 tomb key file::" $TOMBFILE $TOMBKEYFILE
+#.   
+#.       _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #: tomb:1544
+msgid "Locking ::1 tomb file:: with ::2 tomb key file::"
+msgstr "Schliesse ::1 tomb file:: ab mit ::2 tomb key file::"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _success "Locking ::1 tomb file:: with ::2 tomb key file::" $TOMBFILE $TOMBKEYFILE
+#.   
+#. >     _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #.           luksFormat ${nstloop}
+#.       [[ $? == 0 ]] || {
+#: tomb:1546
+msgid "Formatting Luks mapped device."
+msgstr "Formatieren des Luks Gerätes."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #.           luksFormat ${nstloop}
+#.       [[ $? == 0 ]] || {
+#. >         _warning "cryptsetup luksFormat returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#: tomb:1551
+msgid "cryptsetup luksFormat returned an error."
+msgstr "'cryptsetup luksFormat' hat einen Fehler ausgegeben."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       [[ $? == 0 ]] || {
+#.           _warning "cryptsetup luksFormat returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#. >         _warning "cryptsetup luksOpen returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#: tomb:1556
 msgid "cryptsetup luksOpen returned an error."
 msgstr "'cryptsetup luksOpen' hat einen Fehler ausgegeben"
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#.           _warning "cryptsetup luksOpen returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#. >     _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _warning "Tomb format returned an error."
+#: tomb:1559
+msgid "Formatting your Tomb with Ext3/Ext4 filesystem."
+msgstr "Ihr Grab wird mit Ext3/Ext4 formatiert."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _failure "Operation aborted." }
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _warning "Tomb format returned an error."
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#: tomb:1563
+msgid "Tomb format returned an error."
+msgstr "Beim Formatieren ist ein Fehler aufgetreten."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _warning "Tomb format returned an error."
+#. >         _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#: tomb:1564
 msgid "Your tomb ::1 tomb file:: may be corrupted."
 msgstr "Ihr Grab ::1 tomb file:: könnte korrumpiert sein."
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Tomb format returned an error."
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#. >     _message "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::" $TOMBNAME $cipher
+#.       _success "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::" #.           $TOMBPATH $TOMBKEYFILE
+#.   
+#.   }
+#: tomb:1569
 msgid "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::"
-msgstr "Grab ::1 tomb name:: wurde erfolgreich verschlüsselt mit LUKS dm-crypt ::2 cipher::"
-
-#: message
+msgstr ""
+"Grab ::1 tomb name:: wurde erfolgreich verschlüsselt mit LUKS dm-crypt ::2 "
+"cipher::"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#.       _message "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::" $TOMBNAME $cipher
+#. >     _success "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::" #.           $TOMBPATH $TOMBKEYFILE
+#.   
+#.   }
+#.   
+#: tomb:1570
+msgid ""
+"Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::"
+msgstr ""
+"Ihr Grab ist bereit in ::1 tomb path::und gesichert mit dem Schlüssel ::2 "
+"tomb key::"
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.   # This function changes the key that locks a tomb
+#.   change_tomb_key() {
+#.       local tombkey="$1"      # Path to the tomb's key file
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#. >     _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#: tomb:1580
 msgid "Commanded to reset key for tomb ::1 tomb path::"
-msgstr "Befehl erhalten zum zurücksetzen des Schlüssels fur das Grab ::1 tomb path::"
-
-#: warning
+msgstr ""
+"Befehl erhalten zum zurücksetzen des Schlüssels fur das Grab ::1 tomb path::"
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       local tombkey="$1"      # Path to the tomb's key file
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#. >         _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#.           _failure "Execution aborted."
+#.       }
+#.   
+#: tomb:1583
 msgid "Command 'setkey' needs two arguments: the old key file and the tomb."
-msgstr "Der Befehl 'setkey' benötigt zwei Argumente: Die alte Schlüsseldatei und das Grab."
-
-#: warning
+msgstr ""
+"Der Befehl 'setkey' benötigt zwei Argumente: Die alte Schlüsseldatei und das "
+"Grab."
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#. >         _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#.           _failure "Execution aborted."
+#.       }
+#.   
+#.       _check_swap
+#: tomb:1584
 msgid "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
 msgstr "z.B.: tomb -k new.tomb.key old.tomb.key secret.tomb"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#. >         _failure "Execution aborted."
+#.       }
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#: tomb:1585
 msgid "Execution aborted."
 msgstr "Vorgang abgebrochen."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       # is it a LUKS encrypted nest? we check one more time
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Not a valid LUKS encrypted volume: ::1 volume::" $TOMBPATH }
+#.   
+#.       _load_key $tombkey    # Try loading given key and set TOMBKEY and
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#: tomb:1596
 msgid "Not a valid LUKS encrypted volume: ::1 volume::"
 msgstr "Dieses Grab ist ein gültiges LUKS verschlüsseltes Gerät: ::1 volume::"
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       _load_key $tombkey    # Try loading given key and set TOMBKEY and
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#.       local oldkeyfile=$TOMBKEYFILE
+#.   
+#.       # we have everything, prepare to mount
+#. >     _success "Changing lock on tomb ::1 tomb name::" $TOMBNAME
+#.       _message "Old key: ::1 old key::" $oldkeyfile
+#.   
+#.       # render the mapper
+#.       mapdate=`date +%s`
+#: tomb:1604
+msgid "Changing lock on tomb ::1 tomb name::"
+msgstr "Wechsle Schloss am Grab ::1 tomb name::"
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#.       local oldkeyfile=$TOMBKEYFILE
+#.   
+#.       # we have everything, prepare to mount
+#.       _success "Changing lock on tomb ::1 tomb name::" $TOMBNAME
+#. >     _message "Old key: ::1 old key::" $oldkeyfile
+#.   
+#.       # render the mapper
+#.       mapdate=`date +%s`
+#.       # save date of mount in minutes since 1970
+#: tomb:1605
 msgid "Old key: ::1 old key::"
 msgstr "Alter Schlüssel: ::1 old key::"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _verbose "tomb-old-pwd = ::1 old pass::" $tomb_old_pwd
+#.           ask_key_password "$tomb_old_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || {
+#. >         _failure "No valid password supplied for the old key." }
+#.       old_secret=$TOMBSECRET
+#.   
+#.       # luksOpen the tomb (not really mounting, just on the loopback)
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #: tomb:1621
 msgid "No valid password supplied for the old key."
 msgstr "Kein gültiges Passwort für den alten Schlüssel angegeben."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _failure "No valid password supplied for the old key." }
+#.       old_secret=$TOMBSECRET
+#.   
+#.       # luksOpen the tomb (not really mounting, just on the loopback)
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksOpen ${nstloop} ${mapper}
+#. >     [[ $? == 0 ]] || _failure "Unexpected error in luksOpen."
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#.       _message "New key: ::1 key file::" $TOMBKEYFILE
+#: tomb:1627
 msgid "Unexpected error in luksOpen."
 msgstr "Unerwarteter Fehler in luksOpen."
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksOpen ${nstloop} ${mapper}
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksOpen."
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#. >     _message "New key: ::1 key file::" $TOMBKEYFILE
+#.   
+#.       if option_is_set --tomb-pwd; then
+#.           tomb_new_pwd="`option_value --tomb-pwd`"
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_new_pwd
+#: tomb:1631
 msgid "New key: ::1 key file::"
 msgstr "Neuer Schlüssel: ::1 key file::"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_new_pwd
+#.           ask_key_password "$tomb_new_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || {
+#. >         _failure "No valid password supplied for the new key." }
+#.   
+#.       _tmp_create
+#.       tmpnewkey=$TOMBTMP
+#.       print -R -n - "$TOMBSECRET" >> $tmpnewkey
+#: tomb:1641
 msgid "No valid password supplied for the new key."
 msgstr "Kein gültiges Passwort für den neuen Schlüssel angegeben."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       tmpnewkey=$TOMBTMP
+#.       print -R -n - "$TOMBSECRET" >> $tmpnewkey
+#.   
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#. >     [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#: tomb:1650
 msgid "Unexpected error in luksChangeKey."
 msgstr "Unerwarteter Fehler in luksChangeKey."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#. >     sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#.       _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#: tomb:1652
 msgid "Unexpected error in luksClose."
 msgstr "Unerwarteter Fehler in luksClose."
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#. >     _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#.       _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#.       return 0
+#.   }
+#: tomb:1654
+msgid "Succesfully changed key for tomb: ::1 tomb file::"
+msgstr "Schlüssel Erfolgreich gewechselt für das Grab: : ::1 tomb file::"
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#. >     _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1655
 msgid "The new key is: ::1 new key::"
 msgstr "Der neue Schlüssel ist: ::1 new key::"
 
-#: failure
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.   # {{{ Open
+#.   
+#.   # $1 = tombfile $2(optional) = mountpoint
+#.   mount_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#. >     [[ -n "$tombpath" ]] || _failure "No tomb name specified for opening."
+#.   
+#.       _message "Commanded to open tomb ::1 tomb name::" $1
+#.   
+#.       _check_swap
+#: tomb:1667
 msgid "No tomb name specified for opening."
 msgstr "Bitte geben Sie den Namen des zu vöffnenden Grabes an."
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.   # $1 = tombfile $2(optional) = mountpoint
+#.   mount_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.       [[ -n "$tombpath" ]] || _failure "No tomb name specified for opening."
+#.   
+#. >     _message "Commanded to open tomb ::1 tomb name::" $1
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#.   
+#: tomb:1669
 msgid "Commanded to open tomb ::1 tomb name::"
 msgstr "Grab ::1 tomb name:: wird geöffnet"
 
-#: warning
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#.   
+#.       # check file type (if its a Luks fs)
+#.       [[ "`file $TOMBPATH`" =~ "luks encrypted file" ]] || {
+#. >         _warning "::1 tomb file:: is not a valid tomb file" $TOMBFILE
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#: tomb:1676
 msgid "::1 tomb file:: is not a valid tomb file"
 msgstr "::1 tomb file:: iste keine gültige Grabdatei"
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#.       tombmount=${2:-/media/$TOMBFILE}
+#.       [[ -z "$2" ]] && {
+#. >         _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#: tomb:1686
 msgid "Mountpoint not specified, using default: ::1 mount point::"
 msgstr "Mountpoint nicht angegeben, ::1 mount point:: wird benutzt"
 
-#: warning
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       tombmount=${2:-/media/$TOMBFILE}
+#.       [[ -z "$2" ]] && {
+#.           _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#. >         _warning "::1 tomb name:: is already open." $TOMBNAME
+#.           _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#: tomb:1690
 msgid "::1 tomb name:: is already open."
 msgstr "::1 tomb name:: ist bereits geöffnet."
 
-#: failure
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       [[ -z "$2" ]] && {
+#.           _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#. >         _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#.       _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#: tomb:1691
+msgid "Here below its status is reported:"
+msgstr "Zustand des Grabes wie folgt:"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#.           _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#. >     _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#: tomb:1695
+msgid "Opening ::1 tomb file:: on ::2 mount point::"
+msgstr "Öffne ::1 tomb file:: auf ::2 mount point::"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#.       sudo cryptsetup isLuks ${nstloop} || {
+#.           # is it a LUKS encrypted nest? see cryptsetup(1)
+#. >         _failure "::1 tomb file:: is not a valid Luks encrypted storage file." $TOMBFILE }
+#.   
+#.       _message "This tomb is a valid LUKS encrypted device."
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#: tomb:1702
 msgid "::1 tomb file:: is not a valid Luks encrypted storage file."
 msgstr "::1 tomb file:: ist keine gültige Luks verschlüsselte Datei."
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       nstloop=`lo_new`
+#.   
+#.       sudo cryptsetup isLuks ${nstloop} || {
+#.           # is it a LUKS encrypted nest? see cryptsetup(1)
+#.           _failure "::1 tomb file:: is not a valid Luks encrypted storage file." $TOMBFILE }
+#.   
+#. >     _message "This tomb is a valid LUKS encrypted device."
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#.       tombdump=(`print $luksdump | awk '
+#.           /^Cipher name/ {print $3}
+#: tomb:1704
+msgid "This tomb is a valid LUKS encrypted device."
+msgstr "Dieses Grab ist ein gültiges LUKS verschlüsseltes Gerät."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#.       tombdump=(`print $luksdump | awk '
+#.           /^Cipher name/ {print $3}
+#.           /^Cipher mode/ {print $3}
+#.           /^Hash spec/   {print $3}'`)
+#. >     _message "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\"" $tombdump[1] $tombdump[2] $tombdump[3]
+#.   
+#.       slotwarn=`print $luksdump | awk '
+#.           BEGIN { zero=0 }
+#.           /^Key slot 0/ { zero=1 }
+#: tomb:1711
 msgid "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\""
-msgstr "Verschlüsselung \"::1 cipher::\" im Modus \"::2 mode::\" und der Hashfunktion \"::3 hash::\"."
+msgstr ""
+"Verschlüsselung \"::1 cipher::\" im Modus \"::2 mode::\" und der "
+"Hashfunktion \"::3 hash::\"."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       slotwarn=`print $luksdump | awk '
+#.           BEGIN { zero=0 }
+#.           /^Key slot 0/ { zero=1 }
+#.           /^Key slot.*ENABLED/ { if(zero==1) print "WARN" }'`
+#.       [[ "$slotwarn" == "WARN" ]] && {
+#. >         _warning "Multiple key slots are enabled on this tomb. Beware: there can be a backdoor." }
+#.   
+#.       # save date of mount in minutes since 1970
+#.       mapdate=`date +%s`
+#.   
+#: tomb:1718
+msgid ""
+"Multiple key slots are enabled on this tomb. Beware: there can be a backdoor."
+msgstr ""
+"Mehrere Schlüssellöcher sind an diesem Grab angebracht. Achtung, es könnte "
+"eine Hintertür geben."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           ask_key_password
+#.       }
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _cryptsetup luksOpen ${nstloop} ${mapper}
+#.       [[ $? = 0 ]] || {
+#. >         _failure "Failure mounting the encrypted file." }
+#.   
+#.       # preserve the loopdev after exit
+#.       lo_preserve "$nstloop"
+#.   
+#: tomb:1742
+msgid "Failure mounting the encrypted file."
+msgstr "Fehler beim Einhängen der verschlüsselten Datei."
 
-#: warning
-msgid "Multiple key slots are enabled on this tomb. Beware: there can be a backdoor."
-msgstr "Mehrere Schlüssellöcher sind an diesem Grab angebracht. Achtung, es könnte eine Hintertür geben."
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       # array: [ cipher, keysize, loopdevice ]
+#.       tombstat=(`sudo cryptsetup status ${mapper} | awk '
+#.       /cipher:/  {print $2}
+#.       /keysize:/ {print $2}
+#.       /device:/  {print $2}'`)
+#. >     _success "Success unlocking tomb ::1 tomb name::" $TOMBNAME
+#.       _verbose "Key size is ::1 size:: for cipher ::2 cipher::" $tombstat[2] $tombstat[1]
+#.   
+#.       _message "Checking filesystem via ::1::" $tombstat[3]
+#.       sudo fsck -p -C0 /dev/mapper/${mapper}
+#: tomb:1752
+msgid "Success unlocking tomb ::1 tomb name::"
+msgstr "Entsperren erfolgreich von ::1 tomb name::"
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       /cipher:/  {print $2}
+#.       /keysize:/ {print $2}
+#.       /device:/  {print $2}'`)
+#.       _success "Success unlocking tomb ::1 tomb name::" $TOMBNAME
+#.       _verbose "Key size is ::1 size:: for cipher ::2 cipher::" $tombstat[2] $tombstat[1]
+#.   
+#. >     _message "Checking filesystem via ::1::" $tombstat[3]
+#.       sudo fsck -p -C0 /dev/mapper/${mapper}
+#.       _verbose "Tomb engraved as ::1 tomb name::" $TOMBNAME
+#.       sudo tune2fs -L $TOMBNAME /dev/mapper/${mapper} > /dev/null
+#.   
+#: tomb:1755
 msgid "Checking filesystem via ::1::"
 msgstr "Dateisystem kontrollieren mit ::1::"
 
-#: message
-msgid "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::"
-msgstr "Letzer Besuch von ::1 user::(::2 tomb build::) von ::3 tty:: auf ::4 host::"
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       # TODO: safety check MOUNTOPTS
+#.       # safe_mount_options && #.       sudo mount -o $MOUNTOPTS /dev/mapper/${mapper} ${tombmount}
+#.       # Clean up if the mount failed
+#.       [[ $? == 0 ]] || {
+#. > 	_warning "Error mounting ::1 mapper:: on ::2 tombmount::" $mapper $tombmount
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #.   	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#: tomb:1773
+msgid "Error mounting ::1 mapper:: on ::2 tombmount::"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       # safe_mount_options && #.       sudo mount -o $MOUNTOPTS /dev/mapper/${mapper} ${tombmount}
+#.       # Clean up if the mount failed
+#.       [[ $? == 0 ]] || {
+#.   	_warning "Error mounting ::1 mapper:: on ::2 tombmount::" $mapper $tombmount
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #. > 	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#.   	[[ -e /dev/mapper/$mapper ]] && sudo cryptsetup luksClose $mapper
+#.   	# The loop is taken care of in _endgame()
+#: tomb:1775
+msgid "Are mount options '::1 mount options::' valid?"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #.   	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#.   	[[ -e /dev/mapper/$mapper ]] && sudo cryptsetup luksClose $mapper
+#.   	# The loop is taken care of in _endgame()
+#. > 	_failure "Cannot mount ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       sudo chown $UID:$GID ${tombmount}
+#.       sudo chmod 0711 ${tombmount}
+#: tomb:1780
+msgid "Cannot mount ::1 tomb name::"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   	_failure "Cannot mount ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       sudo chown $UID:$GID ${tombmount}
+#.       sudo chmod 0711 ${tombmount}
+#.   
+#. >     _success "Success opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#.   
+#.       local tombtty tombhost tombuid tombuser
+#.   
+#.       # print out when was opened the last time, by whom and where
+#: tomb:1786
+msgid "Success opening ::1 tomb file:: on ::2 mount point::"
+msgstr "Erfolgreiches Öffnen von ::1 tomb file:: auf ::2 mount point::"
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           tombuid=$(_cat ${tombmount}/.uid | tr -d ' ')
+#.           tomblast=$(_cat ${tombmount}/.last | tr -d ' ')
+#.           for e in ${(f@)mapfile[/etc/passwd]}; do
+#.               [[ "$e" =~ ":$tombuid:" ]] && {
+#.                   tombuser="${e[(ws@:@)1]}" }
+#.           done
+#. >         _message "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::" $tombuser $tombuid $tombtty $tombhost
+#.           _message "on date ::1 date::" "`date --date=@${tomblast} +%c`"
+#.       }
+#.       # write down the UID and TTY that opened the tomb
+#.       rm -f ${tombmount}/.uid
+#: tomb:1800
+msgid "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::"
+msgstr ""
+"Letzer Besuch von ::1 user::(::2 tomb build::) von ::3 tty:: auf ::4 host::"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           tomblast=$(_cat ${tombmount}/.last | tr -d ' ')
+#.           for e in ${(f@)mapfile[/etc/passwd]}; do
+#.               [[ "$e" =~ ":$tombuid:" ]] && {
+#.                   tombuser="${e[(ws@:@)1]}" }
+#.           done
+#.           _message "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::" $tombuser $tombuid $tombtty $tombhost
+#. >         _message "on date ::1 date::" "`date --date=@${tomblast} +%c`"
+#.       }
+#.       # write down the UID and TTY that opened the tomb
+#.       rm -f ${tombmount}/.uid
+#.       print $_UID > ${tombmount}/.uid
+#: tomb:1801
 msgid "on date ::1 date::"
 msgstr "am ::1 date::"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.   
+#.       # Default mount options are overridden with the -o switch
+#.       [[ -n ${(k)OPTS[-o]} ]] && MOUNTOPTS=${OPTS[-o]}
+#.   
+#.       # No HOME set? Note: this should never happen again.
+#.       [[ -z $HOME ]] && {
+#. >         _warning "How pitiful!  A tomb, and no HOME."
+#.           return 1 }
+#.   
+#.       [[ -z $mnt || ! -d $mnt ]] && {
+#.           _warning "Cannot exec bind hooks without a mounted tomb."
+#: tomb:1849
+msgid "How pitiful!  A tomb, and no HOME."
+msgstr "Wie bedaurndswert ! Ein Grab aber kein Zuhause."
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       # No HOME set? Note: this should never happen again.
+#.       [[ -z $HOME ]] && {
+#.           _warning "How pitiful!  A tomb, and no HOME."
+#.           return 1 }
+#.   
+#.       [[ -z $mnt || ! -d $mnt ]] && {
+#. >         _warning "Cannot exec bind hooks without a mounted tomb."
+#.           return 1 }
+#.   
+#.       [[ -r "$mnt/bind-hooks" ]] || {
+#.           _verbose "bind-hooks not found in ::1 mount point::" $mnt
+#: tomb:1853
+msgid "Cannot exec bind hooks without a mounted tomb."
+msgstr "'Bind hooks' kann nicht benutzt werden ohne eingehängtes Grab."
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       # better parsing for bind hooks checks for two separated words on
+#.       # each line, using zsh word separator array subscript
+#.       _bindhooks="${mapfile[${mnt}/bind-hooks]}"
+#.       for h in ${(f)_bindhooks}; do
+#.           s="${h[(w)1]}"
+#.           d="${h[(w)2]}"
+#. >         [[ "$s" = "" ]] && { _warning "bind-hooks file is broken"; return 1 }
+#.           [[ "$d" = "" ]] && { _warning "bind-hooks file is broken"; return 1 }
+#.           maps+=($s $d)
+#.           _verbose "bind-hook found: $s -> $d"
+#.       done
+#: tomb:1869
 msgid "bind-hooks file is broken"
 msgstr "Datei mit den Bind-Hooks ist korrumpiert"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.           _verbose "bind-hook found: $s -> $d"
+#.       done
+#.       unset _bindhooks
+#.   
+#.       for dir in ${(k)maps}; do
+#.           [[ "${dir[1]}" == "/" || "${dir[1,2]}" == ".." ]] && {
+#. >             _warning "bind-hooks map format: local/to/tomb local/to/\$HOME"
+#.               continue }
+#.   
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#: tomb:1878
 msgid "bind-hooks map format: local/to/tomb local/to/$HOME"
 msgstr "'bind hooks' map format: local/to/tomb local/to/$HOME"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       for dir in ${(k)maps}; do
+#.           [[ "${dir[1]}" == "/" || "${dir[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME"
+#.               continue }
+#.   
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#. >             _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#: tomb:1882
 msgid "bind-hooks map format: local/to/tomb local/to/$HOME.  Rolling back"
-msgstr "'bind-hooks' map format: local/to/tomb local/to/$HOME.  Wird rückgängig gemacht"
-
-#: warning
+msgstr ""
+"'bind-hooks' map format: local/to/tomb local/to/$HOME.  Wird rückgängig "
+"gemacht"
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#. >             _warning "bind-hook target not existent, skipping ::1 home::/::2 subdir::" $HOME ${maps[$dir]}
+#.           elif [[ ! -r "$mnt/$dir" ]]; then
+#.               _warning "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::" $mnt $dir
+#.           else
+#.               sudo mount -o bind,$MOUNTOPTS $mnt/$dir $HOME/${maps[$dir]} #: tomb:1887
 msgid "bind-hook target not existent, skipping ::1 home::/::2 subdir::"
 msgstr "'bind-hooks' Ziel ungültig,  ::1 home::/::2 subdir:: wird ignoriert."
 
-#: warning
-msgid "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::"
-msgstr "'bind-hooks' Quelle nicht in Grab gefunden, ::1 mount point::/::2 subdir:: wird ignoriert"
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#.               _warning "bind-hook target not existent, skipping ::1 home::/::2 subdir::" $HOME ${maps[$dir]}
+#.           elif [[ ! -r "$mnt/$dir" ]]; then
+#. >             _warning "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::" $mnt $dir
+#.           else
+#.               sudo mount -o bind,$MOUNTOPTS $mnt/$dir $HOME/${maps[$dir]} #.                   && mounted+=("$HOME/${maps[$dir]}")
+#.           fi
+#: tomb:1889
+msgid ""
+"bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::"
+msgstr ""
+"'bind-hooks' Quelle nicht in Grab gefunden, ::1 mount point::/::2 subdir:: "
+"wird ignoriert"
+
+#. Fold: Open
+#. Function: exec_safe_post_hooks
+#.
+#. Code sample:
+#.       # Only run if post-hooks has the executable bit set
+#.       [[ -x $mnt/post-hooks ]] || return
+#.   
+#.       # If the file starts with a shebang, run it.
+#.       cat $mnt/post-hooks | head -n1 | grep '^#!\s*/' &> /dev/null
+#.       [[ $? == 0 ]] && {
+#. >         _success "Post hooks found, executing as user ::1 user name::." $USERNAME
+#.           $mnt/post-hooks $act $mnt
+#.       }
+#.   }
+#.   
+#: tomb:1917
+msgid "Post hooks found, executing as user ::1 user name::."
+msgstr "Post Hooks gefunden, ausführen als Benutzer ::1 user name::."
 
-#: failure
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.       local tombname tombmount tombfs tombfsopts tombloop
+#.       local ts tombtot tombused tombavail tombpercent tombp tombsince
+#.       local tombtty tombhost tombuid tombuser
+#.       # list all open tombs
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#. >         _failure "I can't see any ::1 status:: tomb, may they all rest in peace." ${1:-open} }
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#: tomb:1936
 msgid "I can't see any ::1 status:: tomb, may they all rest in peace."
 msgstr "Ich sehe keine ::1 status::. Mögen sie alle in Frieden ruhen."
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.                       tombuser="${ee[(ws@:@)1]}" }
+#.               done
+#.           }
+#.   
+#.           { option_is_set --get-mountpoint } && { print $tombmount; continue }
+#.   
+#. >         _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#.           _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#: tomb:1969
 msgid "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::"
 msgstr "::1 tombname:: geöffnet in ::2 tombmount:: mit ::3 tombfsopts::"
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.   
+#.           { option_is_set --get-mountpoint } && { print $tombmount; continue }
+#.   
+#.           _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#. >         _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#.               _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#: tomb:1972
 msgid "::1 tombname:: open since ::2 tombsince::"
 msgstr "::1 tombname:: geöffnet seit ::2 tombsince::"
 
-#: message
-msgid "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::"
-msgstr "::1 tombname:: geöffnet von ::2 tombuser:: von ::3 tombtty:: auf ::4 tombhost::"
-
-#: message
-msgid "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free "
-msgstr "::1 tombname:: Grösse ::2 tombtot:: davon ::3 tombused:: (::5 tombpercent::%) is benutzt: ::4 tombavail:: frei␣ "
-
-#: warning
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.           _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#.           _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#. >             _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#.           }
+#.   
+#.           _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #: tomb:1975
+msgid ""
+"::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::"
+msgstr ""
+"::1 tombname:: geöffnet von ::2 tombuser:: von ::3 tombtty:: auf ::4 "
+"tombhost::"
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#.               _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#.           }
+#.   
+#. >         _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #.               $tombname $tombtot $tombused $tombavail $tombpercent
+#.   
+#.           [[ ${tombp} -ge 90 ]] && {
+#.               _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#: tomb:1979
+msgid ""
+"::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::"
+"%) is used: ::4 tombavail:: free "
+msgstr ""
+"::1 tombname:: Grösse ::2 tombtot:: davon ::3 tombused:: (::5 tombpercent::"
+"%) is benutzt: ::4 tombavail:: frei␣ "
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.           }
+#.   
+#.           _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #.               $tombname $tombtot $tombused $tombavail $tombpercent
+#.   
+#.           [[ ${tombp} -ge 90 ]] && {
+#. >             _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#.           }
+#.   
+#.           # Now check hooks
+#.           mounted_hooks=(`list_tomb_binds $tombname`)
+#: tomb:1983
 msgid "::1 tombname:: warning: your tomb is almost full!"
 msgstr "::1 tombname:: Warnung: Ihr Grab ist fast voll!"
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.               _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#.           }
+#.   
+#.           # Now check hooks
+#.           mounted_hooks=(`list_tomb_binds $tombname`)
+#.           for h in ${mounted_hooks}; do
+#. >             _message "::1 tombname:: hooks ::2 hookname:: on ::3 hookdest::" #.                   $tombname "`basename ${h[(ws:;:)1]}`" ${h[(ws:;:)2]}
+#.           done
+#.       done
+#.   }
+#: tomb:1989
 msgid "::1 tombname:: hooks ::2 hookname:: on ::3 hookdest::"
 msgstr "::1 tombname:: bindet ::2 hookname:: ein auf ::3 hookdest::"
 
-#: failure
+#. Fold: List
+#. Function: list_tomb_binds
+#.
+#. Code sample:
+#.   # list_tomb_binds
+#.   # print out an array of mounted bind hooks (internal use)
+#.   # format is semi-colon separated list of attributes
+#.   # needs an argument: name of tomb whose hooks belong
+#.   list_tomb_binds() {
+#.       [[ -z "$1" ]] && {
+#. >         _failure "Internal error: list_tomb_binds called without argument." }
+#.   
+#.       # list bind hooks on util-linux 2.20 (Debian 7)
+#.       mount -l #.           | awk -vtomb="$1" '
+#: tomb:2044
 msgid "Internal error: list_tomb_binds called without argument."
 msgstr "Interner Fehler: list_tomb_binds ohne rgumente aufgerufen."
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   # {{{ Index and search
+#.   
+#.   # index files in all tombs for search
+#.   # $1 is optional, to specify a tomb
+#.   index_tombs() {
+#.       { command -v updatedb 1>/dev/null 2>/dev/null } || {
+#. >         _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#.           _warning "Cannot use GNU findutils for index/search commands." }
+#: tomb:2076
 msgid "Cannot index tombs on this system: updatedb (mlocate) not installed."
-msgstr "Kann Gräber auf diesem System nicht indexieren: updatedb (mlocate) nicht installiert."
-
-#: warning
+msgstr ""
+"Kann Gräber auf diesem System nicht indexieren: updatedb (mlocate) nicht "
+"installiert."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   index_tombs() {
+#.       { command -v updatedb 1>/dev/null 2>/dev/null } || {
+#.           _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#. >         _warning "Cannot use GNU findutils for index/search commands." }
+#.       [[ "$updatedbver" =~ "mlocate" ]] || {
+#.           _failure "Index command needs 'mlocate' to be installed." }
+#.   
+#.       _verbose "$updatedbver"
+#: tomb:2080
 msgid "Cannot use GNU findutils for index/search commands."
 msgstr "Kann GNU findutils nicht für Indexierung/Suchbefehle benutzen."
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#.           _warning "Cannot use GNU findutils for index/search commands." }
+#.       [[ "$updatedbver" =~ "mlocate" ]] || {
+#. >         _failure "Index command needs 'mlocate' to be installed." }
+#.   
+#.       _verbose "$updatedbver"
+#.   
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#: tomb:2082
 msgid "Index command needs 'mlocate' to be installed."
 msgstr "Index Befehl benötigt installiertes 'mlocate'."
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.       _verbose "$updatedbver"
+#.   
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#. >             _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#.       _success "Creating and updating search indexes."
+#: tomb:2090
 msgid "There seems to be no open tomb engraved as [::1::]"
 msgstr "Es scheint kein als [::1::] graviertes Grab offen zu sein"
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#.               _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#. >         _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#.       _success "Creating and updating search indexes."
+#.   
+#.       # start the LibreOffice document converter if installed
+#: tomb:2092
+msgid "I can't see any open tomb, may they all rest in peace."
+msgstr "Ich sehe kein geöffnetes Grab. Mögen sie alle in Frieden ruhen."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#.               _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#. >     _success "Creating and updating search indexes."
+#.   
+#.       # start the LibreOffice document converter if installed
+#.       { command -v unoconv 1>/dev/null 2>/dev/null } && {
+#.           unoconv -l 2>/dev/null &
+#: tomb:2094
+msgid "Creating and updating search indexes."
+msgstr "Kreieren und aktualisieren von Suchindexen"
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.noindex ]] && {
+#. >             _message "Skipping ::1 tomb name:: (.noindex found)." $tombname
+#.               continue }
+#.           _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#: tomb:2107
 msgid "Skipping ::1 tomb name:: (.noindex found)."
 msgstr "Überspringen von ::1 tomb name:: (.noindex gefunden)."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.noindex ]] && {
+#.               _message "Skipping ::1 tomb name:: (.noindex found)." $tombname
+#.               continue }
+#. >         _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#: tomb:2109
 msgid "Indexing ::1 tomb name:: filenames..."
 msgstr "Indexieren der Dateinamen von ::1 tomb name:: im Gange..."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.               continue }
+#.           _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#. >             _message "Indexing ::1 tomb name:: contents..." $tombname
+#.               [[ -r ${tombmount}/.swishrc ]] || {
+#.                   _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc
+#.                   cat <<EOF > ${tombmount}/.swishrc
+#.   # index directives
+#: tomb:2114
 msgid "Indexing ::1 tomb name:: contents..."
 msgstr "Indexieren der Inhalte von ::1 tomb name:: im Gange..."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#.               _message "Indexing ::1 tomb name:: contents..." $tombname
+#.               [[ -r ${tombmount}/.swishrc ]] || {
+#. >                 _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc
+#.                   cat <<EOF > ${tombmount}/.swishrc
+#.   # index directives
+#.   DefaultContents TXT*
+#.   IndexDir $tombmount
+#: tomb:2116
+msgid "Generating a new swish-e configuration file: ::1 swish conf::"
+msgstr "Kreieren einer neuen swish-e Konfigurationsdatei: ::1 swish conf::"
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.               }
+#.   
+#.               swish-e -c ${tombmount}/.swishrc -S fs -v3
+#.   
+#.           }
+#.   
+#. >         _message "Search index updated."
+#.       done
+#.   }
+#.   search_tombs() {
+#.       { command -v locate 1>/dev/null 2>/dev/null } || {
+#: tomb:2190
+msgid "Search index updated."
+msgstr "Such-Index aktualisiert."
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.   
+#.       # list all open tombs
+#.       mounted_tombs=(`list_tomb_mounts`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#. >     _success "Searching for: ::1::" ${(f)@}
+#.       for t in ${mounted_tombs}; do
+#.           _verbose "Checking for index: ::1::" ${t}
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#: tomb:2210
+msgid "Searching for: ::1::"
+msgstr "Suchen nach: ::1::"
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.           _verbose "Checking for index: ::1::" ${t}
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.updatedb ]] && {
+#.               # Use mlocate to search hits on filenames
+#. >             _message "Searching filenames in tomb ::1 tomb name::" $tombname
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#.               _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#: tomb:2218
 msgid "Searching filenames in tomb ::1 tomb name::"
 msgstr "Suche Dateinamen in::1 tomb name::"
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.updatedb ]] && {
+#.               # Use mlocate to search hits on filenames
+#.               _message "Searching filenames in tomb ::1 tomb name::" $tombname
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#. >             _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#: tomb:2220
 msgid "Matches found: ::1 matches::"
 msgstr "Ergebnisse: ::1 matches::"
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#.               _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#. >                 _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#: tomb:2225
 msgid "Searching contents in tomb ::1 tomb name::"
 msgstr "Suche in den Inhalten von ::1 tomb name::"
 
-#: warning
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#. >             _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#.       done
+#.       _message "Search completed."
+#.   }
+#: tomb:2228
 msgid "Skipping tomb ::1 tomb name::: not indexed."
 msgstr "Das Grab ::1 tomb name:: ist nicht indexiert und wird ignoriert."
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#. >             _warning "Run 'tomb index' to create indexes." }
+#.       done
+#.       _message "Search completed."
+#.   }
+#.   
+#: tomb:2229
+msgid "Run 'tomb index' to create indexes."
+msgstr "Führen Sie 'tomb index' aus um Suchindexe zu erstellen."
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#.       done
+#. >     _message "Search completed."
+#.   }
+#.   
+#.   # }}} - Index and search
+#.   
+#: tomb:2231
+msgid "Search completed."
+msgstr "Suche abgeschlossen."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   # {{{ Resize
+#.   
+#.   # resize tomb file size
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#. >     _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#: tomb:2242
 msgid "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes."
 msgstr "Grab ::1 tomb name:: wird auf ::2 size:: Mb vergrössert."
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   # resize tomb file size
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#.       _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#. >     [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#: tomb:2244
+msgid "No tomb name specified for resizing."
+msgstr "Kein Name für das zu vergrössernde Grab angegeben."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#.       _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#. >     [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#.           _failure "Aborting operations: new size was not specified, use -s" }
+#: tomb:2245
 msgid "Cannot find ::1::"
 msgstr "::1:: nicht gefunden."
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#. >         _failure "Aborting operations: new size was not specified, use -s" }
+#.   
+#.       is_valid_tomb $tombpath        # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#: tomb:2249
 msgid "Aborting operations: new size was not specified, use -s"
 msgstr "Operationen werden abgebrochen: Neue Größe nicht mit -s angegeben"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       local oldtombsize=$(( `stat -c %s "$TOMBPATH" 2>/dev/null` / 1048576 ))
+#.       local mounted_tomb=`mount -l |
+#.           awk -vtomb="[$TOMBNAME]" '/^\/dev\/mapper\/tomb/ { if($7==tomb) print $1 }'`
+#.   
+#.       # Tomb must not be open
+#.       [[ -z "$mounted_tomb" ]] || {
+#. >         _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#: tomb:2261
 msgid "Please close the tomb ::1 tomb name:: before trying to resize it."
-msgstr "Bitte schließen Sie das Grab ::1 tomb name:: bevor Sie versuchen die Größe zu ändern."
-
-#: failure
+msgstr ""
+"Bitte schließen Sie das Grab ::1 tomb name:: bevor Sie versuchen die Größe "
+"zu ändern."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   
+#.       # Tomb must not be open
+#.       [[ -z "$mounted_tomb" ]] || {
+#.           _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#. >         _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#.       [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#: tomb:2264
 msgid "You must specify the new size of ::1 tomb name::"
 msgstr "Sie müssen die neue Grösse von ::1 tomb name:: angeben"
 
-#: failure
-msgid "Error creating the extra resize ::1 size::, operation aborted."
-msgstr "Fehler beim erstellen der extra Vergrösserung ::1 size::, Operation abgebrochen."
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       [[ -z "$mounted_tomb" ]] || {
+#.           _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#. >     [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#.           _failure "The new size must be greater then old tomb size." }
+#.   
+#: tomb:2266
+msgid "Size is not an integer."
+msgstr "Die Grösse muss eine Ganzzahl sein."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#.       [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#. >         _failure "The new size must be greater then old tomb size." }
+#.   
+#.       delta="$(( $newtombsize - $oldtombsize ))"
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $newtombsize
+#: tomb:2269
+msgid "The new size must be greater then old tomb size."
+msgstr "Die neue Grösse muss grösser sein als die alte."
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $newtombsize
+#.   
+#.       _verbose "Data dump using ::1:: from /dev/urandom" ${DD[1]}
+#.       ${=DD} if=/dev/urandom bs=1048576 count=${delta} >> $TOMBPATH
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Error creating the extra resize ::1 size::, operation aborted." $tmp_resize }
+#.   
+#.       { option_is_set --tomb-pwd } && {
+#.           tomb_pwd="`option_value --tomb-pwd`"
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_pwd
+#: tomb:2279
+msgid "Error creating the extra resize ::1 size::, operation aborted."
+msgstr ""
+"Fehler beim erstellen der extra Vergrösserung ::1 size::, Operation "
+"abgebrochen."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       mapper="tomb.$TOMBNAME.$mapdate.$(basename $nstloop)"
+#.   
+#.       _cryptsetup luksOpen ${nstloop} ${mapper} || {
+#.           _failure "Failure mounting the encrypted file." }
+#.   
+#.       sudo cryptsetup resize "${mapper}" || {
+#. >         _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#.           _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#: tomb:2300
 msgid "cryptsetup failed to resize ::1 mapper::"
 msgstr "cryptsetup konnte ::1 mapper:: nicht vergrössern"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.           _failure "Failure mounting the encrypted file." }
+#.   
+#.       sudo cryptsetup resize "${mapper}" || {
+#.           _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#. >         _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#.       sudo resize2fs /dev/mapper/${mapper} || {
+#.           _failure "resize2fs failed to resize ::1 mapper::" $mapper }
+#.   
+#: tomb:2303
 msgid "e2fsck failed to check ::1 mapper::"
 msgstr "e2fsck konnte ::1 mapper:: nicht verifizieren"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.           _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#.           _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#.       sudo resize2fs /dev/mapper/${mapper} || {
+#. >         _failure "resize2fs failed to resize ::1 mapper::" $mapper }
+#.   
+#.       # close and free the loop device
+#.       sudo cryptsetup luksClose "${mapper}"
+#.   
+#: tomb:2306
 msgid "resize2fs failed to resize ::1 mapper::"
 msgstr "resize2fs konnte ::1 mapper:: nicht vergrössern"
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           mounted_tombs=(`list_tomb_mounts`)
+#.       else
+#.           mounted_tombs=(`list_tomb_mounts $1`)
+#.       fi
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#. >         _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#.           _warning "Too many tombs mounted, please specify one (see tomb list)"
+#.           _warning "or issue the command 'tomb close all' to close them all."
+#: tomb:2330
+msgid "There is no open tomb to be closed."
+msgstr "Es gibt kein zu schließendes Grab."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.       fi
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#. >         _warning "Too many tombs mounted, please specify one (see tomb list)"
+#.           _warning "or issue the command 'tomb close all' to close them all."
+#.           _failure "Operation aborted." }
+#.   
+#.       for t in ${mounted_tombs}; do
+#: tomb:2333
+msgid "Too many tombs mounted, please specify one (see tomb list)"
+msgstr ""
+"Zu viele Gräber geöffnet, bitte geben sie ein Grab an (siehe 'tomb list')"
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#.           _warning "Too many tombs mounted, please specify one (see tomb list)"
+#. >         _warning "or issue the command 'tomb close all' to close them all."
+#.           _failure "Operation aborted." }
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#: tomb:2334
+msgid "or issue the command 'tomb close all' to close them all."
+msgstr "oder 'tomb close all' ausführen um alle zu schließen."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           _verbose "Name: ::1 tomb name::" $tombname
+#.           _verbose "Mount: ::1 mount point::" $tombmount
+#.           _verbose "Mapper: ::1 mapper::" $mapper
+#.   
+#.           [[ -e "$mapper" ]] && {
+#. >             _warning "Tomb not found: ::1 tomb file::" $1
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#: tomb:2350
 msgid "Tomb not found: ::1 tomb file::"
 msgstr "Grab unauffindbar: ::1 tomb file::"
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           _verbose "Name: ::1 tomb name::" $tombname
+#.           _verbose "Mount: ::1 mount point::" $tombmount
+#.           _verbose "Mapper: ::1 mapper::" $mapper
+#.   
+#.           [[ -e "$mapper" ]] && {
+#.               _warning "Tomb not found: ::1 tomb file::" $1
+#. >             _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #: tomb:2351
+msgid "Please specify an existing tomb."
+msgstr "Bitte geben Sie ein existierendes Grab an."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           [[ -e "$mapper" ]] && {
+#.               _warning "Tomb not found: ::1 tomb file::" $1
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#. >             _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#: tomb:2355
+msgid "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::"
+msgstr ""
+"Abruptes Schließen von ::1 tomb name:: eingehangen in ::2 mount point:: "
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#. >             _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#.               _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #: tomb:2357
+msgid "Kill all processes busy inside the tomb."
+msgstr "Abbrechen aller laufenden Prozesse im Grab."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#. >                 _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#.               _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount }
+#.   
+#: tomb:2359
 msgid "Cannot slam the tomb ::1 tomb name::"
 msgstr "::1 tomb name:: kann nicht abrupt geschlossen werden !"
 
-#: message
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#. >             _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount }
+#.   
+#.           # check if there are binded dirs and close them
+#.           bind_tombs=(`list_tomb_binds $tombname`)
+#: tomb:2361
 msgid "Closing tomb ::1 tomb name:: mounted on ::2 mount point::"
 msgstr "Grab ::1 tomb name:: eingehängt in ::2 mount point:: wird geschlossen."
 
-#: message
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # check if there are binded dirs and close them
+#.           bind_tombs=(`list_tomb_binds $tombname`)
+#.           for b in ${bind_tombs}; do
+#.               bind_mapper="${b[(ws:;:)1]}"
+#.               bind_mount="${b[(ws:;:)2]}"
+#. >             _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#: tomb:2369
 msgid "Closing tomb bind hook: ::1 hook::"
 msgstr "Schliessen des 'bind hooks': ::1 hook::"
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           for b in ${bind_tombs}; do
+#.               bind_mapper="${b[(ws:;:)1]}"
+#.               bind_mount="${b[(ws:;:)2]}"
+#.               _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#. >                     _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#.                           _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#: tomb:2372
+msgid "Slamming tomb: killing all processes using this hook."
+msgstr ""
+"Abruptes Schließen des Grabes: Beenden aller Prozesse die diesen Hook "
+"benutzen."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#. >                         _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#.                   } || {
+#.                       _warning "Tomb bind hook ::1 hook:: is busy, cannot close tomb." $bind_mount }
+#.               }
+#: tomb:2375
 msgid "Cannot slam the bind hook ::1 hook::"
 msgstr "Abruptes Schliessen des 'bind hooks' ::1 hook:: nicht möglich"
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#.                           _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#.                   } || {
+#. >                     _warning "Tomb bind hook ::1 hook:: is busy, cannot close tomb." $bind_mount }
+#.               }
+#.           done
+#.   
+#.           # Execute post-hooks for eventual cleanup
+#: tomb:2378
 msgid "Tomb bind hook ::1 hook:: is busy, cannot close tomb."
-msgstr "Der 'bind hook' ::1 hook:: ist beschäftigt und kann nicht geschlossen werden."
+msgstr ""
+"Der 'bind hook' ::1 hook:: ist beschäftigt und kann nicht geschlossen werden."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           # Execute post-hooks for eventual cleanup
+#.           { option_is_set -n } || {
+#.               exec_safe_post_hooks ${tombmount%%/} close }
+#.   
+#.           _verbose "Performing umount of ::1 mount point::" $tombmount
+#.           sudo umount ${tombmount}
+#. >         [[ $? = 0 ]] || { _warning "Tomb is busy, cannot umount!"; return 1 }
+#.   
+#.           # If we used a default mountpoint and is now empty, delete it
+#.           [[ "$tombmount" == "/media/$tombname.tomb" ]] && { rmdir $tombmount }
+#.   
+#: tomb:2388
+msgid "Tomb is busy, cannot umount!"
+msgstr "Grab ist beschäftigt und kann nicht ausgehänkt werden!"
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # If we used a default mountpoint and is now empty, delete it
+#.           [[ "$tombmount" == "/media/$tombname.tomb" ]] && { rmdir $tombmount }
+#.   
+#.           sudo cryptsetup luksClose $mapper
+#.           [[ $? == 0 ]] || {
+#. >             _failure "Error occurred in cryptsetup luksClose ::1 mapper::" $mapper }
+#.   
+#.           # Normally the loopback device is detached when unused
+#.           [[ -e "/dev/$tombloop" ]] && sudo losetup -d "/dev/$tombloop"
+#.           [[ $? = 0 ]] || {
+#: tomb:2395
 msgid "Error occurred in cryptsetup luksClose ::1 mapper::"
-msgstr "Ein Fehler ist beim Ausführen von 'cryptsetup luksClose ::1 mapper::' aufgetreten."
+msgstr ""
+"Ein Fehler ist beim Ausführen von 'cryptsetup luksClose ::1 mapper::' "
+"aufgetreten."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # Normally the loopback device is detached when unused
+#.           [[ -e "/dev/$tombloop" ]] && sudo losetup -d "/dev/$tombloop"
+#.           [[ $? = 0 ]] || {
+#.               _verbose "/dev/$tombloop was already closed." }
+#.   
+#. >         _success "Tomb ::1 tomb name:: closed: your bones will rest in peace." $tombname
+#.   
+#.       done # loop across mounted tombs
+#.   
+#.       return 0
+#: tomb:2402
+msgid "Tomb ::1 tomb name:: closed: your bones will rest in peace."
+msgstr ""
+"Grab ::1 tomb name:: geschlossen: Ihre Knochen werden in Frieden ruhen."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               return 1
+#.           fi
+#.           return 0
+#.       fi
+#.       unset discardme
+#.       if ! zparseopts -M -E -D -Adiscardme ${every_opts}; then
+#. >         _failure "Error parsing."
+#.           return 127
+#.       fi
+#.       unset discardme
+#.       subcommand=$1
+#: tomb:2522
+msgid "Error parsing."
+msgstr "Syntax Fehler."
 
-#: warning
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       subcommand=$1
+#.       if [[ -z $subcommand ]]; then
+#.           subcommand="__default"
+#.       fi
+#.   
+#.       if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
+#. >         _warning "There's no such command \"::1 subcommand::\"." $subcommand
+#.           exitv=127 _failure "Please try -h for help."
+#.       fi
+#.       argv=("${(@)oldstar}")
+#.       unset oldstar
+#: tomb:2532
 msgid "There's no such command \"::1 subcommand::\"."
 msgstr "Der Befehl \"::1 subcommand::\" existiert nicht."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       if [[ -z $subcommand ]]; then
+#.           subcommand="__default"
+#.       fi
+#.   
+#.       if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
+#.           _warning "There's no such command \"::1 subcommand::\"." $subcommand
+#. >         exitv=127 _failure "Please try -h for help."
+#.       fi
+#.       argv=("${(@)oldstar}")
+#.       unset oldstar
+#.   
+#: tomb:2533
 msgid "Please try -h for help."
 msgstr "Versuchen Sie -h um Hilfe zu erhalten."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       # zsh magic: ${=string} will split to multiple arguments when spaces occur
+#.       set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
+#.       # if there is no option, we don't need parsing
+#.       if [[ -n $cmd_opts ]]; then
+#.           zparseopts -M -E -D -AOPTS ${cmd_opts}
+#.           if [[ $? != 0 ]]; then
+#. >             _warning "Some error occurred during option processing."
+#.               exitv=127 _failure "See \"tomb help\" for more info."
+#.           fi
+#.       fi
+#.       #build PARAM (array of arguments) and check if there are unrecognized options
+#: tomb:2545
+msgid "Some error occurred during option processing."
+msgstr "Fehler beim interpretieren der Optionen."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
+#.       # if there is no option, we don't need parsing
+#.       if [[ -n $cmd_opts ]]; then
+#.           zparseopts -M -E -D -AOPTS ${cmd_opts}
+#.           if [[ $? != 0 ]]; then
+#.               _warning "Some error occurred during option processing."
+#. >             exitv=127 _failure "See \"tomb help\" for more info."
+#.           fi
+#.       fi
+#.       #build PARAM (array of arguments) and check if there are unrecognized options
+#.       ok=0
+#: tomb:2546
 msgid "See \"tomb help\" for more info."
 msgstr "Sie \"tomb help\" für mehr Infos."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       for arg in $*; do
+#.           if [[ $arg == '--' || $arg == '-' ]]; then
+#.               ok=1
+#.               continue #it shouldnt be appended to PARAM
+#.           elif [[ $arg[1] == '-'  ]]; then
+#.               if [[ $ok == 0 ]]; then
+#. >                 exitv=127 _failure "Unrecognized option ::1 arg:: for subcommand ::2 subcommand::" $arg $subcommand
+#.               fi
+#.           fi
+#.           PARAM+=$arg
+#.       done
+#: tomb:2558
 msgid "Unrecognized option ::1 arg:: for subcommand ::2 subcommand::"
 msgstr "Unbekannte Option ::1 arg:: für Unterbefehl ::2 subcommand::"
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       # Use colors unless told not to
+#.       { ! option_is_set --no-color } && { autoload -Uz colors && colors }
+#.       # Some options are only available during insecure mode
+#.       { ! option_is_set --unsafe } && {
+#.           for opt in --tomb-pwd --use-urandom --tomb-old-pwd; do
+#.               { option_is_set $opt } && {
+#. >                 exitv=127 _failure "You specified option ::1 option::, which is DANGEROUS and should only be used for testing\nIf you really want so, add --unsafe" $opt }
+#.           done
+#.       }
+#.       # read -t or --tmp flags to set a custom temporary directory
+#.       option_is_set --tmp && TMPPREFIX=$(option_value --tmp)
+#: tomb:2574
+msgid ""
+"You specified option ::1 option::, which is DANGEROUS and should only be "
+"used for testing\n"
+"If you really want so, add --unsafe"
+msgstr ""
+"Sie haben die Option ::1 option:: gewählt, welche GEFÄHRLICH ist und nur zum "
+"Testen benutzt werden sollte.\n"
+"Wenn sie dies wollen, benutzen sie --unsafe"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           help)
+#.               usage
+#.               ;;
+#.   
+#.           # DEPRECATION notice (leave here as 'create' is still present in old docs)
+#.           create)
+#. >             _warning "The create command is deprecated, please use dig, forge and lock instead."
+#.               _warning "For more informations see Tomb's manual page (man tomb)."
+#.               _failure "Operation aborted."
+#.               ;;
+#.   
+#: tomb:2608
+msgid ""
+"The create command is deprecated, please use dig, forge and lock instead."
+msgstr ""
+"Der Befehl create ist veraltet, benutzen Sie stattdesseb dig, forge, und "
+"lock."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               usage
+#.               ;;
+#.   
+#.           # DEPRECATION notice (leave here as 'create' is still present in old docs)
+#.           create)
+#.               _warning "The create command is deprecated, please use dig, forge and lock instead."
+#. >             _warning "For more informations see Tomb's manual page (man tomb)."
+#.               _failure "Operation aborted."
+#.               ;;
+#.   
+#.           # CREATE Step 1: dig -s NN file.tomb
+#: tomb:2609
+msgid "For more informations see Tomb's manual page (man tomb)."
+msgstr "Für mehr Informationen siehe Benutzerhandbuch (man tomb)."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               umount_tomb $PARAM[1]
+#.               ;;
+#.   
+#.           # Grow tomb's size
+#.           resize)
+#.               [[ $RESIZER == 0 ]] && {
+#. >                 _failure "Resize2fs not installed: cannot resize tombs." }
+#.               resize_tomb $PARAM[1]
+#.               ;;
+#.   
+#.           ## Contents manipulation
+#: tomb:2643
 msgid "Resize2fs not installed: cannot resize tombs."
 msgstr "Resize2fs nicht installiert: Gräber können nicht vergrössert werden."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           ## Locking operations
+#.   
+#.           # Export key to QR Code
+#.           engrave)
+#.               [[ $QRENCODE == 0 ]] && {
+#. >                 _failure "QREncode not installed: cannot engrave keys on paper." }
+#.               engrave_key ${=PARAM}
+#.               ;;
+#.   
+#.           # Change password on existing key
+#: tomb:2669
 msgid "QREncode not installed: cannot engrave keys on paper."
 msgstr "QREncode nicht installiert: Kann Grabgravur nicht auf Papier ausgeben."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               change_tomb_key ${=PARAM}
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: hide key inside an image
+#.           bury)
+#.               [[ $STEGHIDE == 0 ]] && {
+#. >                 _failure "Steghide not installed: cannot bury keys into images." }
+#.               bury_key $PARAM[1]
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: read key hidden in an image
+#: tomb:2686
 msgid "Steghide not installed: cannot bury keys into images."
-msgstr "Steghide ist nicht installiert: Schlüssel können nicht in Bilder vergraben werden."
-
-#: failure
+msgstr ""
+"Steghide ist nicht installiert: Schlüssel können nicht in Bilder vergraben "
+"werden."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               bury_key $PARAM[1]
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: read key hidden in an image
+#.           exhume)
+#.               [[ $STEGHIDE == 0 ]] && {
+#. >                 _failure "Steghide not installed: cannot exhume keys from images." }
+#.               exhume_key $PARAM[1]
+#.               ;;
+#.   
+#.           ## Internal commands useful to developers
+#: tomb:2693
 msgid "Steghide not installed: cannot exhume keys from images."
-msgstr "Steghide ist nicht installiert: Schlüssel können nicht aus Bilder ausgegraben werden."
-
-#: print
+msgstr ""
+"Steghide ist nicht installiert: Schlüssel können nicht aus Bilder "
+"ausgegraben werden."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           # Ask user for a password interactively
+#.           askpass)    ask_password $PARAM[1] $PARAM[2] ;;
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#. >             _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#: tomb:2707
 msgid "Tomb ::1 version:: - a strong and gentle undertaker for your secrets"
-msgstr "Tomb ::1 version:: - ein starker und sanfter Totengräber für ihre Geheimnisse"
-
-#: print
-msgid " Copyright (C) 2007-2014 Dyne.org Foundation, License GNU GPL v3+"
-msgstr " Urheberrecht (C) 2007-2014 Dyne.org Foundation, Lizens GNU GPL v3+"
+msgstr ""
+"Tomb ::1 version:: - ein starker und sanfter Totengräber für ihre Geheimnisse"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           askpass)    ask_password $PARAM[1] $PARAM[2] ;;
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#. >             _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#: tomb:2709
+msgid " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#. >             _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#: tomb:2710
 msgid " This is free software: you are free to change and redistribute it"
-msgstr " This ist freie Software, Sie sind frei sie zu verändern und weiterzugeben"
-
-#: print
+msgstr ""
+" This ist freie Software, Sie sind frei sie zu verändern und weiterzugeben"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#. >             _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#: tomb:2711
+msgid " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+msgstr ""
+" Für den aktuellsten Quellcode besuchen sie <http://dyne.org/software/tomb>"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#. >                 _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#: tomb:2716
 msgid " This source code is distributed in the hope that it will be useful,"
-msgstr " Dieser Quellcode wird veröffentlicht in der Hoffnung dass er nützlich ist,"
-
-#: print
+msgstr ""
+" Dieser Quellcode wird veröffentlicht in der Hoffnung dass er nützlich ist,"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#. >                 _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#: tomb:2717
 msgid " but WITHOUT ANY WARRANTY; without even the implied warranty of"
 msgstr " aber OHNE JEDWEGE GARANTIE; inbegriffen die Garantie der"
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#. >                 _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#.                   _print "System utils:"
+#: tomb:2718
 msgid " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 msgstr " MARKTGÄNGIGKEIT oder der EIGNUNG ZU EINEM BESTIMMTEN ZWECK."
 
-#: print
-msgid "System utils:"
-msgstr "Systemwerkzeuge:"
-
-#: warning
-msgid "Command \"::1 subcommand::\" not recognized."
-msgstr "Der Befehl \"::1 subcommand::\" wurde nicht erkannt."
-
-#: print
-msgid " passwd  change the password of a KEY (needs old pass)"
-msgstr " passwd ändern des Passworts für einen SCHLÜSSEL (benötigt altes Passwort)"
-
-#: print
-msgid " setkey  change the KEY locking a TOMB (needs old key and pass)"
-msgstr " setkey ändern des SCHLÜSSELS von einem GRAB (benötigt alten Schlüssel und Passwort)"
-
-#: print
-msgid " // Backup on paper:"
-msgstr " //Backup auf Papier:"
-
-#: print
-msgid " // Steganography:"
-msgstr " // Steganographie:"
-
-#: print
-msgid " bury    hide a KEY inside a JPEG image (for use with -k)"
-msgstr " bury versteckt einen SCHLÜSSEL in einem JPEG Bild (zur Nutzung mit -k)"
-
-#: print
-msgid " exhume  extract a KEY from a JPEG image (prints to stdout)"
-msgstr " exhume extrahiert einen SCHLÜSSEL aus einer JPEG Datei (gibt an dei Standardausgabe aus)"
-
-#: failure
-msgid "Exhume failed, no image specified"
-msgstr "Extrahieren fehlgeschlagen, keine Bilddatei angegeben"
-
-#: print
-msgid " For the latest sourcecode go to <http://dyne.org/software/tomb>"
-msgstr " Für den aktuellsten Quellcode besuchen sie <http://dyne.org/software/tomb>"
-
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#. >                 _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#.                   _print "System utils:"
+#.                   _print "\000"
+#.                   cat <<EOF
+#: tomb:2720
 msgid " When in need please refer to <http://dyne.org/support>."
 msgstr " Für Hilfe bitte wenden Sie sich an <http://dyne.org/support>."
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#. >                 _print "System utils:"
+#.                   _print "\000"
+#.                   cat <<EOF
+#.     `sudo -V | head -n1`
+#.     `cryptsetup --version`
+#: tomb:2722
+msgid "System utils:"
+msgstr "Systemwerkzeuge:"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.     `cryptsetup --version`
+#.     `pinentry --version`
+#.     `gpg --version | head -n1` - key forging algorithms (GnuPG symmetric ciphers):
+#.     `list_gnupg_ciphers`
+#.   EOF
+#.                   _print "\000"
+#. >                 _print "Optional utils:"
+#.                   _print "\000"
+#.                   _list_optional_tools version
+#.                   return 0
+#.               }
+#: tomb:2732
 msgid "Optional utils:"
 msgstr "Optionelle Hilfsmittel:"
 
-#: failure
-msgid "Fatal error setting the permission umask for temporary files"
-msgstr "Fataler Fehler beim Setzen der Berechtigungsmaske für die temporären Dateien"
-
-#: failure
-msgid "Fatal error setting ownership on temporary file: ::1 temp file::"
-msgstr "Fataler Fehler beim Setzen des Besitzers für die temporäre Datei: ::1 temp file::"
-
-#: warning
-msgid "cleartext key from stdin selected: this is unsafe."
-msgstr "Klartext Schlüssel von der Standarteingabe ausgewählt: Dies ist nicht sicher."
-
-#: failure
-msgid "please use --unsafe if you really want to do this."
-msgstr "Bitte benutzen Sie --unsafe wenn Sie dies wirklich tun wollen."
-
-#: warning
-msgid "received key in cleartext from stdin (unsafe mode)"
-msgstr "Empfangen des Schlüssels in Klartext von der Standarteingabe (Nicht sicherer Modus)"
-
-#: failure
-msgid "You specified option ::1 option::, which is DANGEROUS and should only be used for testing\n"
-"If you really want so, add --unsafe"
-msgstr "Sie haben die Option ::1 option:: gewählt, welche GEFÄHRLICH ist und nur zum Testen benutzt werden sollte.\n"
-"Wenn sie dies wollen, benutzen sie --unsafe"
-
-#: failure
-msgid "Failing to identify the user who is calling us"
-msgstr "Fehler beim Identifizieren des uns rufenden Benutzers"
-
-#: failure
-msgid "Fatal error creating the temporary directory: ::1 temp dir::"
-msgstr "Fataler Fehler beim kreieren der temporären Datei: ::1 temp dir::"
-
-#: failure
-msgid "Someone is messing up with us trying to hijack temporary files."
-msgstr "Jemand versucht uns durcheinander zu bringen und unsere temporären Dateien zu kapern."
-
-#: success
-msgid "All your swaps are belong to crypt.  Good."
-msgstr "All ihre Auslagerungsdateien gehören Crypt. Gut."
-
-#: success
-msgid "Changing password for ::1 key file::"
-msgstr "Wechsle Passwort für ::1 key file::"
-
-#: success
-msgid "Your passphrase was successfully updated."
-msgstr "Ihr Passphrase wurde erfolgreich auf den neuesten Stand gebracht."
-
-#: success
-msgid "Using KDF, iterations: ::1 microseconds::"
-msgstr "Benutze Schlüsselableitungsverfahren, Durchläufe: ::1 microseconds::"
-
-#: success
-msgid "Encoding key ::1 tomb key:: inside image ::2 image file::"
-msgstr "Enkodiere Schlüssel ::1 tomb key:: im Bild ::2 image file::"
-
-#: success
-msgid "Tomb key encoded succesfully into image ::1 image file::"
-msgstr "Grabschlüssel erfolgreich im Bild ::1 image file:: enkodiert"
-
-#: success
-msgid "Key succesfully exhumed to ::1 key::."
-msgstr "Schlüssel erfolgreich exhumiert in ::1 key::."
-
-#: success
-msgid "Rendering a printable QRCode for key: ::1 tomb key file::"
-msgstr "Rendern eines ausdruckbaren QRCodes für Schlüssel: ::1 tomb key file::"
-
-#: success
-msgid "Operation successful:"
-msgstr "Operation erfolgreich:"
-
-#: success
-msgid "Creating a new tomb in ::1 tomb path::"
-msgstr "Erstelle ein neues Grab in ::1 tomb path::"
-
-#: success
-msgid "Done digging ::1 tomb name::"
-msgstr "Fertig mit ausgraben ::1 tomb name::"
-
-#: success
-msgid "Choose the  password of your key: ::1 tomb key::"
-msgstr "Wählen Sie das Passwort von ihrem Schlüssel: ::1 tomb key::"
-
-#: success
-msgid "Your key is ready:"
-msgstr "Ihr Schlüssel ist bereit:"
-
-#: success
-msgid "Locking ::1 tomb file:: with ::2 tomb key file::"
-msgstr "Schliesse ::1 tomb file:: ab mit ::2 tomb key file::"
-
-#: success
-msgid "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::"
-msgstr "Ihr Grab ist bereit in ::1 tomb path::und gesichert mit dem Schlüssel ::2 tomb key::"
-
-#: success
-msgid "Changing lock on tomb ::1 tomb name::"
-msgstr "Wechsle Schloss am Grab ::1 tomb name::"
-
-#: success
-msgid "Succesfully changed key for tomb: ::1 tomb file::"
-msgstr "Schlüssel Erfolgreich gewechselt für das Grab: : ::1 tomb file::"
-
-#: success
-msgid "Opening ::1 tomb file:: on ::2 mount point::"
-msgstr "Öffne ::1 tomb file:: auf ::2 mount point::"
-
-#: success
-msgid "Success unlocking tomb ::1 tomb name::"
-msgstr "Entsperren erfolgreich von ::1 tomb name::"
-
-#: success
-msgid "Success opening ::1 tomb file:: on ::2 mount point::"
-msgstr "Erfolgreiches Öffnen von ::1 tomb file:: auf ::2 mount point::"
-
-#: success
-msgid "Post hooks found, executing as user ::1 user name::."
-msgstr "Post Hooks gefunden, ausführen als Benutzer ::1 user name::."
-
-#: success
-msgid "Creating and updating search indexes."
-msgstr "Kreieren und aktualisieren von Suchindexen"
-
-#: message
-msgid "Generating a new swish-e configuration file: ::1 swish conf::"
-msgstr "Kreieren einer neuen swish-e Konfigurationsdatei: ::1 swish conf::"
-
-#: success
-msgid "Searching for: ::1::"
-msgstr "Suchen nach: ::1::"
-
-#: success
-msgid "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::"
-msgstr "Abruptes Schließen von ::1 tomb name:: eingehangen in ::2 mount point:: "
-
-#: success
-msgid "Slamming tomb: killing all processes using this hook."
-msgstr "Abruptes Schließen des Grabes: Beenden aller Prozesse die diesen Hook benutzen."
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               }
+#.               usage
+#.               ;;
+#.   
+#.           # Reject unknown command and suggest help
+#.           *)
+#. >             _warning "Command \"::1 subcommand::\" not recognized." $subcommand
+#.               _message "Try -h for help."
+#.               return 1
+#.               ;;
+#.       esac
+#: tomb:2742
+msgid "Command \"::1 subcommand::\" not recognized."
+msgstr "Der Befehl \"::1 subcommand::\" wurde nicht erkannt."
 
-#: success
-msgid "Tomb ::1 tomb name:: closed: your bones will rest in peace."
-msgstr "Grab ::1 tomb name:: geschlossen: Ihre Knochen werden in Frieden ruhen."
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               usage
+#.               ;;
+#.   
+#.           # Reject unknown command and suggest help
+#.           *)
+#.               _warning "Command \"::1 subcommand::\" not recognized." $subcommand
+#. >             _message "Try -h for help."
+#.               return 1
+#.               ;;
+#.       esac
+#.       return $?
+#: tomb:2743
+msgid "Try -h for help."
+msgstr "Versuchen Sie -h um Hilfe zu erhalten."
 
-#: warning
-msgid "Pinentry error: ::1 error::"
-msgstr "Pinentry Fehler: ::1 error::"
+#~ msgid " -o     mount options used to open (default: rw,noatime,nodev)"
+#~ msgstr " -o        Mount Optionen beim Öffnen (Standart: rw,noatime,nodev)"
 
-#: warning
-msgid "Empty password"
-msgstr "Leeres Passwort"
+#~ msgid " Copyright (C) 2007-2014 Dyne.org Foundation, License GNU GPL v3+"
+#~ msgstr " Urheberrecht (C) 2007-2014 Dyne.org Foundation, Lizens GNU GPL v3+"
diff --git a/extras/po/es.po b/extras/po/es.po
@@ -1,1130 +1,5499 @@
 msgid ""
 msgstr ""
+"Project-Id-Version: Tomb the Crypto Undertaker\n"
+"Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: POEditor.com\n"
-"Project-Id-Version: Tomb the Crypto Undertaker\n"
-"Language: es\n"
-
-#: failure
-msgid "Operation aborted."
-msgstr "Operación abortada."
-
-#: warning
-msgid "often occurs on VPS and kernels that don't provide the loop module."
-msgstr "ocurre frecuentemente en VPS y kernels que no proveen el módulo 'loop'."
-
-#: warning
-msgid "It is impossible to use Tomb on this machine at this conditions."
-msgstr "Es imposible usar Tomb en esta máquina en estas condiciones."
-
-#: message
-msgid "Waiting for the key to be piped from stdin... "
-msgstr "Esperando a recibir la llave a través de stdin... "
-
-#: failure
-msgid "This operation requires a key file to be specified using the -k option."
-msgstr "Esta operación requiere que se especifique una llave con la opción -k."
-
-#: failure
-msgid "Key not found, specify one using -k."
-msgstr "Llave no encontrada, especifica una usando -k."
-
-#: warning
-msgid "User aborted password dialog."
-msgstr "El usuario ha abortado el diálogo de contraseña."
-
-#: message
-msgid "Password OK."
-msgstr "Contraseña OK."
-
-#: failure
-msgid "Error: the newly generated keyfile does not seem valid."
-msgstr "Error: la llave recién generada no parece válida."
-
-#: failure
-msgid "User aborted."
-msgstr "El usuario ha abortado."
-
-#: failure
-msgid "You set empty password, which is not possible."
-msgstr "Has elegido una contraseña vacía, lo que no es posible."
-
-#: failure
-msgid "Wrong argument for --kdf: must be an integer number (iteration seconds)."
-msgstr "Argumento incorrecto para --kdf: debe ser un número entero (segundos por iteración)."
-
-#: failure
-msgid "gpg (GnuPG) is not found, Tomb cannot function without it."
-msgstr "No se encuentra gpg (GnuPG), Tomb no puede funcionar sin ello."
-
-#: message
-msgid "Please confirm the key password for the encoding"
-msgstr "Por favor, confirma la contraseña de la clave para la codificación"
-
-#: warning
-msgid "Wrong password supplied."
-msgstr "Contraseña incorrecta."
-
-#: failure
-msgid "You shall not bury a key whose password is unknown to you."
-msgstr "No deberías enterrar una clave cuya contraseña desconoces."
-
-#: warning
-msgid "Encoding error: steghide reports problems."
-msgstr "Error en la codficación: steghide reporta problemas."
-
-#: warning
-msgid "Make explicit use of --force to overwrite."
-msgstr "Usa --force para sobreescribir."
-
-#: warning
-msgid "Use of --force selected: overwriting."
-msgstr "Usando --force: sobreescribiendo."
 
-#: failure
-msgid "A filename needs to be specified using -k to forge a new key."
-msgstr "Es necesario especificar un nombre de fichero usando -k para forgar una llave nueva."
-
-#: failure
-msgid "Forging this key would overwrite an existing file. Operation aborted."
-msgstr "Forjar esta llave sobreescribiría un fichero existente. Operación abortada."
-
-#: message
-msgid "This operation takes time, keep using this computer on other tasks,"
-msgstr "Esta operación necesita tiempo, sigue usando el ordenador en otras tareas,"
-
-#: message
-msgid "once done you will be asked to choose a password for your tomb."
-msgstr "cuando termine se te pedirá que elijas una contraseña para tu tumba."
-
-#: message
-msgid "To make it faster you can move the mouse around."
-msgstr "Para acelerarlo puedes mover el ratón por la pantalla."
-
-#: message
-msgid "If you are on a server, you can use an Entropy Generation Daemon."
-msgstr "Si estás en un servidor, puede usar un Entropy Generation Daemon."
-
-#: warning
-msgid "Cannot generate encryption key."
-msgstr "No se puede generar la llave de encriptación."
-
-#: message
-msgid "(You can also change it later using 'tomb passwd'.)"
-msgstr "(También puedes cambiarla más tarde usando 'tomb passwd'.)"
-
-#: warning
-msgid "The key does not seem to be valid."
-msgstr "Parece que la llave no es válida."
-
-#: warning
-msgid "Dumping contents to screen:"
-msgstr "Volcando contenido en la pantalla:"
-
-#: failure
-msgid "Size argument missing, use -s"
-msgstr "Falta el argumento de tamaño, usa -s"
-
-#: warning
-msgid "A tomb exists already. I'm not digging here:"
-msgstr "Ya existe una tumba. No voy a cavar aquí:"
-
-#: message
-msgid "Your tomb is not yet ready, you need to forge a key and lock it:"
-msgstr "Tu tumba no está lista todavía, tienes que forjar una llave y asegurarla:"
-
-#: warning
-msgid "No tomb specified for locking."
-msgstr "No se ha especificado una tumba que asegurar."
-
-#: warning
-msgid "Usage: tomb lock file.tomb file.tomb.key"
-msgstr "Uso: tomb lock file.tomb file.tomb.key"
-
-#: failure
-msgid "There is no tomb here. You have to it dig first."
-msgstr "No hay una tumba aquí. Tienes que cavarla primero."
-
-#: message
-msgid "Checking if the tomb is empty (we never step on somebody else's bones)."
-msgstr "Comprobando que la tumba esté vacía (no queremos pisar los huesos de alguien más)."
-
-#: warning
-msgid "The tomb was already locked with another key."
-msgstr "La tumba ya estaba asegurada con otra llave."
-
-#: failure
-msgid "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
-msgstr "Operación abortada. No puedo asegurar una tumba que ya tiene un candado. Cava una nueva."
-
-#: message
-msgid "Fine, this tomb seems empty."
-msgstr "Bien, esta tumba parece vacía."
-
-#: message
-msgid "Formatting Luks mapped device."
-msgstr "Formateando dispositivo mapeado con Luks."
-
-#: warning
-msgid "cryptsetup luksFormat returned an error."
-msgstr "cryptsetup luksFormat ha devuelto un error."
-
-#: message
-msgid "Formatting your Tomb with Ext3/Ext4 filesystem."
-msgstr "Formateando tu tumba con el sistema de ficheros Ext3/Ext4."
-
-#: warning
-msgid "Tomb format returned an error."
-msgstr "El formateo de la tumba ha devuelto un error."
-
-#: message
-msgid "Here below its status is reported:"
-msgstr "Su estado se muestra a continuación:"
-
-#: message
-msgid "This tomb is a valid LUKS encrypted device."
-msgstr "Esta tumba es un dispositivo encriptado con LUKS válido."
-
-#: failure
-msgid "Failure mounting the encrypted file."
-msgstr "Fallo al montar el fichero encriptado."
-
-#: warning
-msgid "How pitiful!  A tomb, and no HOME."
-msgstr "¡Que lamentable! Una tumba, y ningún HOGAR."
-
-#: warning
-msgid "Cannot exec bind hooks without a mounted tomb."
-msgstr "No se pueden ejecutar los bind-hooks sin una tumba montada."
-
-#: failure
-msgid "I can't see any open tomb, may they all rest in peace."
-msgstr "No puedo ver ninguna tumba abierta. Que todos descansen en paz."
-
-#: message
-msgid "Search index updated."
-msgstr "Índice de búsqueda actualizado."
-
-#: warning
-msgid "Run 'tomb index' to create indexes."
-msgstr "Corre 'tomb index' para crear los índices."
-
-#: message
-msgid "Search completed."
-msgstr "Búsqueda completada."
-
-#: failure
-msgid "No tomb name specified for resizing."
-msgstr "No se ha especificado el nombre de la tumba a la que cambiar el tamaño."
-
-#: failure
-msgid "Size is not an integer."
-msgstr "El tamaño no es un número entero."
-
-#: failure
-msgid "The new size must be greater then old tomb size."
-msgstr "El nuevo tamaño debe ser mayor que el viejo tamaño de la tumba."
-
-#: failure
-msgid "There is no open tomb to be closed."
-msgstr "No hay ninguna tumba abierta que cerrar."
-
-#: warning
-msgid "Too many tombs mounted, please specify one (see tomb list)"
-msgstr "Demasiadas tumbas abietas, por favor, especifica una (véase tomb list)"
-
-#: warning
-msgid "or issue the command 'tomb close all' to close them all."
-msgstr "o utiliza el comando 'tomb close all' para cerrarlas todas."
-
-#: warning
-msgid "Please specify an existing tomb."
-msgstr "Por favor, especifica una tumba existente."
-
-#: message
-msgid "Kill all processes busy inside the tomb."
-msgstr "Mata todos los procesos ocupados dentro de la tumba."
-
-#: warning
-msgid "Tomb is busy, cannot umount!"
-msgstr "La tumba está ocupada, ¡no se puede desmontar!"
+#. Fold: Safety functions
+#. Function: _whoami
+#.
+#. Code sample:
+#.   
+#.       # Set username from UID or environment
+#.       _USER=$SUDO_USER
+#.       [[ "$_USER" = "" ]] && { _USER=$USERNAME }
+#.       [[ "$_USER" = "" ]] && { _USER=$(id -u)  }
+#.       [[ "$_USER" = "" ]] && {
+#. >         _failure "Failing to identify the user who is calling us" }
+#.   
+#.       # Get GID from option -G or the environment
+#.       option_is_set -G #.           && _GID=$(option_value -G) || _GID=$(id -g $_USER)
+#: tomb:189
+msgid "Failing to identify the user who is calling us"
+msgstr "Falló la identificación del usuario que nos llama."
 
-#: failure
-msgid "Error parsing."
-msgstr "Error al parsear."
+#. Fold: Safety functions
+#. Function: _plot
+#.
+#. Code sample:
+#.       TOMBFILE=$(basename $TOMBPATH)
+#.   
+#.       # The tomb name is TOMBFILE without an extension.
+#.       # It can start with dots: ..foo.tomb -> ..foo
+#.       TOMBNAME="${TOMBFILE%\.[^\.]*}"
+#.       [[ -z $TOMBNAME ]] && {
+#. >         _failure "Tomb won't work without a TOMBNAME." }
+#.   
+#.       # Normalize tomb name
+#.       TOMBFILE="$TOMBNAME.tomb"
+#.   
+#: tomb:237
+msgid "Tomb won't work without a TOMBNAME."
+msgstr "Tomb no funcionará sin un TOMBNAME (nombre de la tumba)."
 
-#: warning
-msgid "Some error occurred during option processing."
-msgstr "Ha ocurrido algún error al procesar las opciones."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.   # Provide a random filename in shared memory
+#.   _tmp_create() {
+#.       [[ -d "$TMPPREFIX" ]] || {
+#.           # we create the tempdir with the sticky bit on
+#.           sudo mkdir -m 1777 "$TMPPREFIX"
+#. >         [[ $? == 0 ]] || _failure "Fatal error creating the temporary directory: ::1 temp dir::" "$TMPPREFIX"
+#.       }
+#.   
+#.       # We're going to add one more $RANDOM for each time someone complain
+#.       # about this being too weak of a random.
+#: tomb:252
+msgid "Fatal error creating the temporary directory: ::1 temp dir::"
+msgstr "Error fatal al crear el directorio temporal ::1 directorio::"
 
-#: warning
-msgid "The create command is deprecated, please use dig, forge and lock instead."
-msgstr "El comando create está obsoleto, por favor, usa dig, forge y lock en su lugar."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       # We're going to add one more $RANDOM for each time someone complain
+#.       # about this being too weak of a random.
+#.       tfile="${TMPPREFIX}/$RANDOM$RANDOM$RANDOM$RANDOM"   # Temporary file
+#.       umask 066
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error setting the permission umask for temporary files" }
+#.   
+#.       [[ -r "$tfile" ]] && {
+#.           _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#: tomb:260
+msgid "Fatal error setting the permission umask for temporary files"
+msgstr ""
+"Error fatal al establecer el permiso umask para los ficheros temporales"
+
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.       tfile="${TMPPREFIX}/$RANDOM$RANDOM$RANDOM$RANDOM"   # Temporary file
+#.       umask 066
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error setting the permission umask for temporary files" }
+#.   
+#.       [[ -r "$tfile" ]] && {
+#. >         _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#: tomb:263
+msgid "Someone is messing up with us trying to hijack temporary files."
+msgstr "Alguien está intentando secuestrar nuestros ficheros temporales."
 
-#: warning
-msgid "For more informations see Tomb's manual page (man tomb)."
-msgstr "Para más información mira el manual de Tomb (man tomb)."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       [[ -r "$tfile" ]] && {
+#.           _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error setting ownership on temporary file: ::1 temp file::" "$tfile" }
+#.   
+#: tomb:267
+msgid "Fatal error creating a temporary file: ::1 temp file::"
+msgstr "Error fatal al crear el fichero temporal ::1 fichero::"
 
-#: message
-msgid "Try -h for help."
-msgstr "Prueba -h para obtener ayuda."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error setting ownership on temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       _verbose "Created tempfile: ::1 temp file::" "$tfile"
+#.       TOMBTMP="$tfile"
+#.       TOMBTMPFILES+=("$tfile")
+#: tomb:270
+msgid "Fatal error setting ownership on temporary file: ::1 temp file::"
+msgstr ""
+"Error fatal al establecer la posesión del fichero temporal ::1 fichero::"
+
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.               r=1
+#.               is_crypt=`sudo dmsetup status "$s" | awk '/crypt/ {print $3}'`
+#.               [[ $is_crypt == "crypt" ]] && { r=2 } || { break }
+#.   
+#.           fi
+#.       done
+#. >     _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#: tomb:316
+msgid "An active swap partition is detected..."
+msgstr ""
 
-#: failure
-msgid "Tomb won't work without a TOMBNAME."
-msgstr "Tomb no funcionará sin un TOMBNAME (nombre de la tumba)."
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.               [[ $is_crypt == "crypt" ]] && { r=2 } || { break }
+#.   
+#.           fi
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#. >         _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#: tomb:318
+msgid "All your swaps are belong to crypt.  Good."
+msgstr "Todas tus particiones de intercambio pertenecen a crypt. Bien."
 
-#: failure
-msgid "Fatal error creating a temporary file: ::1 temp file::"
-msgstr "Error fatal al crear el fichero temporal ::1 fichero::"
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.           fi
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#. >         _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#: tomb:320
+msgid "This poses a security risk."
+msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#. >         _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#: tomb:321
 msgid "You can deactivate all swap partitions using the command:"
-msgstr "Puedes desactivar todas las particiones swap usando el siguiente comando:"
-
-#: warning
+msgstr ""
+"Puedes desactivar todas las particiones swap usando el siguiente comando:"
+
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#. >         _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#.   
+#: tomb:322
 msgid " swapoff -a"
 msgstr " swapoff -a"
 
-#: warning
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#. >         _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#.   
+#.   }
+#: tomb:323
 msgid "But if you want to proceed like this, use the -f (force) flag."
 msgstr "Pero si deseas continuar tal cual, usa el flag -f (force)."
 
-#: failure
+#. Fold: Safety functions
+#. Function: _check_swap
+#.
+#. Code sample:
+#.           _ensure_safe_swap
+#.           case $? in
+#.               0|2)     # No, or encrypted swap
+#.                   return 0
+#.                   ;;
+#.               *)       # Unencrypted swap
+#. >                 _failure "Operation aborted."
+#.                   ;;
+#.           esac
+#.       fi
+#.   }
+#: tomb:342
+msgid "Operation aborted."
+msgstr "Operación abortada."
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   SETTITLE $title
+#.   SETDESC $description
+#.   SETPROMPT Password:
+#.   GETPIN
+#.   EOF`
+#.           else
+#. >             _failure "Cannot find pinentry-curses and no DISPLAY detected."
+#.           fi
+#.   
+#.       else # a DISPLAY is found to be active
+#.   
+#: tomb:379
+msgid "Cannot find pinentry-curses and no DISPLAY detected."
+msgstr "No se puede encontrar pinentry-curses, y no se ha detectado DISPLAY."
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   EOF`
+#.   
+#.           else
+#.   
+#.               if _is_found "pinentry-curses"; then
+#.   
+#. >                 _warning "Detected DISPLAY, but only pinentry-curses is found."
+#.                   output=`cat <<EOF | pinentry-curses
+#.   OPTION ttyname=$TTY
+#.   OPTION lc-ctype=$LANG
+#.   SETTITLE $title
+#: tomb:432
+msgid "Detected DISPLAY, but only pinentry-curses is found."
+msgstr "DISPLAY detectado, pero sólo se ha encontrado pinentry-curses."
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   SETTITLE $title
+#.   SETDESC $description
+#.   SETPROMPT Password:
+#.   GETPIN
+#.   EOF`
+#.               else
+#. >                 _failure "Cannot find any pinentry: impossible to ask for password."
+#.               fi
+#.   
+#.           fi
+#.   
+#: tomb:442
+msgid "Cannot find any pinentry: impossible to ask for password."
+msgstr ""
+"No se ha encontrado ningún pinentry: es imposible pedir una contraseña."
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   
+#.       fi # end of DISPLAY block
+#.   
+#.       # parse the pinentry output
+#.       for i in ${(f)output}; do
+#.           [[ "$i" =~ "^ERR.*" ]] && {
+#. >             _warning "Pinentry error: ::1 error::" ${i[(w)3]}
+#.               print "canceled"
+#.               return 1 }
+#.   
+#.           # here the password is found
+#: tomb:452
+msgid "Pinentry error: ::1 error::"
+msgstr "Error de pinentry: ::1 error::"
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   
+#.           # here the password is found
+#.           [[ "$i" =~ "^D .*" ]] && password="${i##D }"
+#.       done
+#.   
+#.       [[ "$password" = "" ]] && {
+#. >         _warning "Empty password"
+#.           print "empty"
+#.           return 1 }
+#.   
+#.       print "$password"
+#: tomb:461
+msgid "Empty password"
+msgstr "Contraseña vacia"
+
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.   # Check if a filename is a valid tomb
+#.   is_valid_tomb() {
+#.       _verbose "is_valid_tomb ::1 tomb file::" $1
+#.   
+#.       # First argument must be the path to a tomb
+#.       [[ -z "$1" ]] && {
+#. >         _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#: tomb:477
 msgid "Tomb file is missing from arguments."
 msgstr "La tumba falta en los argumentos."
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # First argument must be the path to a tomb
+#.       [[ -z "$1" ]] && {
+#.           _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#. >         _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#: tomb:481
 msgid "Tomb file not found: ::1 tomb file::"
 msgstr "No se ha encontrado la tumba: ::1 tumba::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#. >         _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#.           _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#: tomb:483
 msgid "Tomb file is not a regular file: ::1 tomb file::"
 msgstr "La tumba no es un fichero regular: ::1 tumba::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#. >         _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#.           _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#.   
+#.       # TODO: split the rest of that function out.
+#: tomb:485
 msgid "Tomb file is empty (zero length): ::1 tomb file::"
 msgstr "La tumba está vacía (longitud cero): ::1 tumba::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#. >         _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#.   
+#.       # TODO: split the rest of that function out.
+#.       # We already have a valid tomb, now we're checking
+#.       # whether we can alter it.
+#: tomb:487
 msgid "Tomb file is not writable: ::1 tomb file::"
 msgstr "No se puede escribir en la tumba: ::1 tumba::"
 
-#: warning
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # TODO: split the rest of that function out.
+#.       # We already have a valid tomb, now we're checking
+#.       # whether we can alter it.
+#.   
+#.       # Tomb file may be a LUKS FS (or we are creating it)
+#.       [[ "`file $1`" =~ "luks encrypted file" ]] || {
+#. >         _warning "File is not yet a tomb: ::1 tomb file::" $1 }
+#.   
+#.       _plot $1     # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#: tomb:495
 msgid "File is not yet a tomb: ::1 tomb file::"
 msgstr "El fichero no es una tumba todavía: ::1 tumba::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _warning "File is not yet a tomb: ::1 tomb file::" $1 }
+#.   
+#.       _plot $1     # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]$" ]] && {
+#. >         _failure "Tomb is currently in use: ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       _message "Valid tomb file found: ::1 tomb path::" $TOMBPATH
+#.   
+#: tomb:501
 msgid "Tomb is currently in use: ::1 tomb name::"
 msgstr "La tumba ya está en uso: ::1 tumba::"
 
-#: message
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]$" ]] && {
+#.           _failure "Tomb is currently in use: ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#. >     _message "Valid tomb file found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:504
 msgid "Valid tomb file found: ::1 tomb path::"
 msgstr "Se ha encontrado una tumba válida en ::1 ruta::"
 
-#: warning
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.   lo_mount() {
+#.       tpath="$1"
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#. >         _warning "Loop mount of volumes is not possible on this machine, this error"
+#.           _warning "often occurs on VPS and kernels that don't provide the loop module."
+#.           _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#: tomb:516
 msgid "Loop mount of volumes is not possible on this machine, this error"
-msgstr "No hay soporte para el montaje en loop de volúmenes en esta máquina, este error"
+msgstr ""
+"No hay soporte para el montaje en loop de volúmenes en esta máquina, este "
+"error"
+
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.       tpath="$1"
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#.           _warning "Loop mount of volumes is not possible on this machine, this error"
+#. >         _warning "often occurs on VPS and kernels that don't provide the loop module."
+#.           _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#: tomb:517
+msgid "often occurs on VPS and kernels that don't provide the loop module."
+msgstr ""
+"ocurre frecuentemente en VPS y kernels que no proveen el módulo 'loop'."
+
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#.           _warning "Loop mount of volumes is not possible on this machine, this error"
+#.           _warning "often occurs on VPS and kernels that don't provide the loop module."
+#. >         _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       sudo losetup -f "$tpath" # allocates the next loopback for our file
+#: tomb:518
+msgid "It is impossible to use Tomb on this machine at this conditions."
+msgstr "Es imposible usar Tomb en esta máquina en estas condiciones."
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   # }}}
+#.   
+#.   # {{{ Commandline interaction
+#.   
+#.   usage() {
+#. >     _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#: tomb:558
 msgid "Syntax: tomb [options] command [arguments]"
 msgstr "Sintaxis: tomb [opciones] comando [argumentos]"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   # {{{ Commandline interaction
+#.   
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#. >     _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#: tomb:560
 msgid "Commands:"
 msgstr "Comandos:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#. >     _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#: tomb:562
 msgid " // Creation:"
 msgstr "// Creación:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#. >     _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#: tomb:563
 msgid " dig     create a new empty TOMB file of size -s in MB"
 msgstr " dig     crear una nueva TUMBA vacía de tamaño -s en MB"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#. >     _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#: tomb:564
 msgid " forge   create a new KEY file and set its password"
 msgstr " forge   crear una nueva LLAVE y especificar su contraseña"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#. >     _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#: tomb:565
 msgid " lock    installs a lock on a TOMB to use it with KEY"
 msgstr " lock    instala un candado en una TUMBA para usarlo con la LLAVE"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#. >     _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#: tomb:567
 msgid " // Operations on tombs:"
 msgstr "// Operaciones en tumbas:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#. >     _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#: tomb:568
 msgid " open    open an existing TOMB"
 msgstr " open    abrir una TUMBA existente"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#. >     _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#: tomb:569
 msgid " index   update the search indexes of tombs"
 msgstr " index   actualiza los índices de búsqueda de las tumbas"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#. >     _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#: tomb:570
 msgid " search  looks for filenames matching text patterns"
 msgstr " search  busca nombres de fichero que coincidan con patrones de texto"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#. >     _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#: tomb:571
 msgid " list    list of open TOMBs and information on them"
 msgstr " list    lista de TUMBAs abiertas e información acerca de ellas"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#. >     _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#: tomb:572
 msgid " close   close a specific TOMB (or 'all')"
 msgstr " close   cerrar una TUMBA específica o todas ('all')"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#. >     _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#: tomb:573
 msgid " slam    slam a TOMB killing all programs using it"
-msgstr " slam    cerrar una TUMBA de un portazo, matando todos los programas que la usan"
-
-#: print
+msgstr ""
+" slam    cerrar una TUMBA de un portazo, matando todos los programas que la "
+"usan"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#. >         _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#: tomb:575
 msgid " resize  resize a TOMB to a new size -s (can only grow)"
-msgstr " resize  cambia el tamaño de una TUMBA al tamaño -s (sólo puede aumentar)"
-
-#: print
+msgstr ""
+" resize  cambia el tamaño de una TUMBA al tamaño -s (sólo puede aumentar)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#. >     _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#: tomb:578
 msgid " // Operations on keys:"
 msgstr "// Operaciones en llaves:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#. >     _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#: tomb:579
+msgid " passwd  change the password of a KEY (needs old pass)"
+msgstr ""
+" passwd  cambia la contraseña de la LLAVE (necesita la contraseña vieja)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#. >     _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#: tomb:580
+msgid " setkey  change the KEY locking a TOMB (needs old key and pass)"
+msgstr ""
+" setkey  cambia la LLAVE que cierra la TUMBA (necesita la contraseña y llave "
+"viejas)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#. >         _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#: tomb:583
+msgid " // Backup on paper:"
+msgstr " // Copia de seguridad en papel:"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#. >         _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#: tomb:584
 msgid " engrave makes a QR code of a KEY to be saved on paper"
 msgstr " engrave  crea un código QR de una LLAVE para guardarla en papel"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#. >         _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#: tomb:588
+msgid " // Steganography:"
+msgstr " // Esteganografía:"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#. >         _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#: tomb:589
+msgid " bury    hide a KEY inside a JPEG image (for use with -k)"
+msgstr ""
+" bury   esconde la LLAVE dentro de una imagen JPEG (para usarla con -k)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#. >         _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#: tomb:590
+msgid " exhume  extract a KEY from a JPEG image (prints to stdout)"
+msgstr " exhume extraer una LLAVE de una imagen JPEG (escribe en stdout)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#. >     _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#: tomb:593
 msgid "Options:"
 msgstr "Opciones:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#. >     _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#: tomb:595
 msgid " -s     size of the tomb file when creating/resizing one (in MB)"
 msgstr " -s     tamaño de la tumba al crearla o cambiar su tamaño (en MB)"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#. >     _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#: tomb:596
 msgid " -k     path to the key to be used ('-k -' to read from stdin)"
 msgstr " -k     ruta a la llave a utilizar ('-k -' para leerla de stdin)"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#. >     _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#: tomb:597
 msgid " -n     don't process the hooks found in tomb"
 msgstr " -n     no procesar los hooks encontrados en la tumba"
 
-#: print
-msgid " -o     mount options used to open (default: rw,noatime,nodev)"
-msgstr " -o     opciones de montaje usadas al abrir (por defecto: rw,noatime,nodev)"
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#. >     _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#: tomb:598
+msgid " -o     options passed to local command, e.g.:"
+msgstr ""
 
-#: print
-msgid " -f     force operation (i.e. even if swap is active)"
-msgstr " -f     forzar operación (incluso si la memoria de intercambio está activa)"
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#. >     _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#: tomb:599
+msgid "          - mount options used to open (default: rw,noatime,nodev)"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#. >     _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#: tomb:600
+msgid "          - an alternate cipher to forge and lock"
+msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#. >     _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#: tomb:601
+msgid " -f     force operation (i.e. even if swap is active)"
+msgstr ""
+" -f     forzar operación (incluso si la memoria de intercambio está activa)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#. >         _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#: tomb:603
 msgid " --kdf  generate passwords armored against dictionary attacks"
 msgstr " --kdf  generar contraseñas blindadas contra ataques de diccionario"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#. >     _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#: tomb:607
 msgid " -h     print this help"
 msgstr " -h     imprimir este mensaje de ayuda"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#. >     _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#: tomb:608
 msgid " -v     print version, license and list of available ciphers"
 msgstr " -v     imprimir versión, licencia y lista de cifrados disponibles"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#. >     _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#: tomb:609
 msgid " -q     run quietly without printing informations"
 msgstr " -q     correr silenciosamente sin imprimir información"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#. >     _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#: tomb:610
 msgid " -D     print debugging information at runtime"
 msgstr " -D     imprimir información de debugging al correr"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#. >     _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#.   
+#.   
+#: tomb:612
 msgid "For more informations on Tomb read the manual: man tomb"
 msgstr "Para más información acerca de Tomb lee el manual: man tomb"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#. >     _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#.   
+#.   
+#.   # Check whether a commandline option is set.
+#: tomb:613
 msgid "Please report bugs on <http://github.com/dyne/tomb/issues>."
 msgstr "Por favor, reporta los bugs en <http://github.com/dyne/tomb/issues>."
 
-#: failure
+#. Fold: Commandline interaction
+#. Function: _ensure_dependencies
+#.
+#. Code sample:
+#.   # missing, bail out.
+#.   _ensure_dependencies() {
+#.   
+#.       # Check for required programs
+#.       for req in cryptsetup pinentry sudo gpg mkfs.ext4 e2fsck; do
+#.           command -v $req 1>/dev/null 2>/dev/null || {
+#. >             _failure "Missing required dependency ::1 command::.  Please install it." $req }
+#.       done
+#.   
+#.       # Ensure system binaries are available in the PATH
+#.       path+=(/sbin /usr/sbin) # zsh magic
+#: tomb:748
 msgid "Missing required dependency ::1 command::.  Please install it."
 msgstr "Falta la dependencia ::1 comando::. Por favor, instálala."
 
-#: warning
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.   
+#.       _verbose "is_valid_key"
+#.   
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#. >             _warning "cleartext key from stdin selected: this is unsafe."
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#: tomb:785
+msgid "cleartext key from stdin selected: this is unsafe."
+msgstr ""
+"se ha seleccionado una clave en texto plano por la entrada estándar: esto es "
+"inseguro."
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       _verbose "is_valid_key"
+#.   
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#.               _warning "cleartext key from stdin selected: this is unsafe."
+#. >             exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#: tomb:786
+msgid "please use --unsafe if you really want to do this."
+msgstr "por favor, usa --unsafe si estás seguro."
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#.               _warning "cleartext key from stdin selected: this is unsafe."
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#. >         _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#.       [[ -z $key ]] && {
+#.           _warning "is_valid_key() called without an argument."
+#: tomb:788
+msgid "received key in cleartext from stdin (unsafe mode)"
+msgstr ""
+"se ha recibido una clave en texto plano por la entrada estándar (modo "
+"inseguro)"
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#.       [[ -z $key ]] && {
+#. >         _warning "is_valid_key() called without an argument."
+#.           return 1
+#.       }
+#.   
+#.       # If the key file is an image don't check file header
+#: tomb:792
 msgid "is_valid_key() called without an argument."
 msgstr "Se ha llamado a is_valid_key() sin argumento."
 
-#: message
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       }
+#.   
+#.       # If the key file is an image don't check file header
+#.       [[ -r $TOMBKEYFILE ]] #.           && [[ $(file $TOMBKEYFILE) =~ "JP.G" ]] #.           && {
+#. >         _message "Key is an image, it might be valid."
+#.           return 0 }
+#.   
+#.       [[ $key =~ "BEGIN PGP" ]] && {
+#.           _message "Key is valid."
+#: tomb:800
 msgid "Key is an image, it might be valid."
 msgstr "La llave es una imagen, puede que sea válida."
 
-#: message
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.           && [[ $(file $TOMBKEYFILE) =~ "JP.G" ]] #.           && {
+#.           _message "Key is an image, it might be valid."
+#.           return 0 }
+#.   
+#.       [[ $key =~ "BEGIN PGP" ]] && {
+#. >         _message "Key is valid."
+#.           return 0 }
+#.   
+#.       return 1
+#.   }
+#: tomb:804
 msgid "Key is valid."
 msgstr "La llave es válida."
 
-#: warning
+#. Fold: Key operations
+#. Function: _tomb_key_recover recover_key
+#.
+#. Code sample:
+#.   }
+#.   
+#.   # $1 is a string containing an encrypted key
+#.   _tomb_key_recover recover_key() {
+#.       local key="${1}"    # Unique argument is an encrypted key
+#.   
+#. >     _warning "Attempting key recovery."
+#.   
+#.       _head="${key[(f)1]}" # take the first line
+#.   
+#.       TOMBKEY=""        # Reset global variable
+#: tomb:814
 msgid "Attempting key recovery."
 msgstr "Intentando recuperar la llave."
 
-#: warning
-msgid "The key seems invalid or its format is not known by this version of Tomb."
-msgstr "La llave parece inválida, o este formato no es reconocido por esta versión de Tomb."
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.   # Set global variables TOMBKEY and TOMBKEYFILE.
+#.   _load_key() {
+#.       local keyfile="$1"    # Unique argument is an optional keyfile
+#.   
+#.       [[ -z $keyfile ]] && keyfile=$(option_value -k)
+#.       [[ -z $keyfile ]] && {
+#. >         _failure "This operation requires a key file to be specified using the -k option." }
+#.   
+#.       if [[ $keyfile == "-" ]]; then
+#.           _verbose "load_key reading from stdin."
+#.           _message "Waiting for the key to be piped from stdin... "
+#: tomb:838
+msgid "This operation requires a key file to be specified using the -k option."
+msgstr "Esta operación requiere que se especifique una llave con la opción -k."
+
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.       [[ -z $keyfile ]] && keyfile=$(option_value -k)
+#.       [[ -z $keyfile ]] && {
+#.           _failure "This operation requires a key file to be specified using the -k option." }
+#.   
+#.       if [[ $keyfile == "-" ]]; then
+#.           _verbose "load_key reading from stdin."
+#. >         _message "Waiting for the key to be piped from stdin... "
+#.           TOMBKEYFILE=stdin
+#.           TOMBKEY=$(cat)
+#.       elif [[ $keyfile == "cleartext" ]]; then
+#.           _verbose "load_key reading SECRET from stdin"
+#: tomb:842
+msgid "Waiting for the key to be piped from stdin... "
+msgstr "Esperando a recibir la llave a través de stdin... "
+
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.           _message "Waiting for the key to be piped from stdin... "
+#.           TOMBKEYFILE=cleartext
+#.           TOMBKEY=cleartext
+#.           TOMBSECRET=$(cat)
+#.       else
+#.           _verbose "load_key argument: ::1 key file::" $keyfile
+#. >         [[ -r $keyfile ]] || _failure "Key not found, specify one using -k."
+#.           TOMBKEYFILE=$keyfile
+#.           TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.       fi
+#.   
+#: tomb:853
+msgid "Key not found, specify one using -k."
+msgstr "Llave no encontrada, especifica una usando -k."
 
-#: failure
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.           TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.       fi
+#.   
+#.       _verbose "load_key: ::1 key::" $TOMBKEYFILE
+#.   
+#.       is_valid_key $TOMBKEY || {
+#. >         _warning "The key seems invalid or its format is not known by this version of Tomb."
+#.           _tomb_key_recover $TOMBKEY
+#.       }
+#.   
+#.       # Declared TOMBKEYFILE (path)
+#: tomb:861
+msgid ""
+"The key seems invalid or its format is not known by this version of Tomb."
+msgstr ""
+"La llave parece inválida, o este formato no es reconocido por esta versión "
+"de Tomb."
+
+#. Fold: Key operations
+#. Function: get_lukskey
+#.
+#. Code sample:
+#.                   _verbose "KDF salt: $kdf_salt"
+#.                   _verbose "KDF ic: $kdf_ic"
+#.                   _verbose "KDF len: $kdf_len"
+#.                   _password=$(tomb-kdb-pbkdf2 $kdf_salt $kdf_ic $kdf_len 2>/dev/null <<<$_password)
+#.                   ;;
+#.               *)
+#. >                 _failure "No suitable program for KDF ::1 program::." $pbkdf_hash
+#.                   unset _password
+#.                   return 1
+#.                   ;;
+#.           esac
+#: tomb:936
 msgid "No suitable program for KDF ::1 program::."
 msgstr "No hay un programa apropiado para usar KDF: ::1 programa::"
 
-#: failure
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.   
+#.   # This function asks the user for the password to use the key it tests
+#.   # it against the return code of gpg on success returns 0 and saves
+#.   # the password in the global variable $TOMBPASSWORD
+#.   ask_key_password() {
+#.       [[ -z "$TOMBKEYFILE" ]] && {
+#. >         _failure "Internal error: ask_key_password() called before _load_key()." }
+#.   
+#.       [[ "$TOMBKEYFILE" = "cleartext" ]] && {
+#.           _verbose "no password needed, using secret bytes from stdin"
+#.           return 0 }
+#: tomb:962
 msgid "Internal error: ask_key_password() called before _load_key()."
-msgstr "Error interno: se ha llamado a ask_key_password() antes de _load_key()."
-
-#: message
+msgstr ""
+"Error interno: se ha llamado a ask_key_password() antes de _load_key()."
+
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.           _failure "Internal error: ask_key_password() called before _load_key()." }
+#.   
+#.       [[ "$TOMBKEYFILE" = "cleartext" ]] && {
+#.           _verbose "no password needed, using secret bytes from stdin"
+#.           return 0 }
+#.   
+#. >     _message "A password is required to use key ::1 key::" $TOMBKEYFILE
+#.       passok=0
+#.       tombpass=""
+#.       if [[ "$1" = "" ]]; then
+#.   
+#: tomb:968
 msgid "A password is required to use key ::1 key::"
 msgstr "Es necesaria una contraseña para usar la llave ::1 llave::"
 
-#: message
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.               if [[ $c == 1 ]]; then
+#.                   tombpass=$(ask_password "Insert password to: $TOMBKEYFILE")
+#.               else
+#.                   tombpass=$(ask_password "Insert password to: $TOMBKEYFILE (attempt $c)")
+#.               fi
+#.               [[ $? = 0 ]] || {
+#. >                 _warning "User aborted password dialog."
+#.                   return 1
+#.               }
+#.   
+#.               get_lukskey "$tombpass"
+#: tomb:980
+msgid "User aborted password dialog."
+msgstr "El usuario ha abortado el diálogo de contraseña."
+
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.                   return 1
+#.               }
+#.   
+#.               get_lukskey "$tombpass"
+#.   
+#.               [[ $? = 0 ]] && {
+#. >                 passok=1; _message "Password OK."
+#.                   break;
+#.               }
+#.           done
+#.   
+#: tomb:987
+msgid "Password OK."
+msgstr "Contraseña OK."
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.   change_passwd() {
+#.       local tmpnewkey lukskey c tombpass tombpasstmp
+#.   
+#.       _check_swap  # Ensure swap is secure, if any
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#. >     _message "Commanded to change password for tomb key ::1 key::" $TOMBKEYFILE
+#.   
+#.       _tmp_create
+#.       tmpnewkey=$TOMBTMP
+#.   
+#: tomb:1025
 msgid "Commanded to change password for tomb key ::1 key::"
 msgstr "Se ha ordenado cambiar la contraseña de la llave ::1 llave::"
 
-#: failure
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           local tomboldpwd="`option_value --tomb-old-pwd`"
+#.           _verbose "tomb-old-pwd = ::1 old pass::" $tomboldpwd
+#.           ask_key_password "$tomboldpwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#. >     [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _success "Changing password for ::1 key file::" $TOMBKEYFILE
+#.   
+#.       # Here $TOMBSECRET contains the key material in clear
+#: tomb:1037
 msgid "No valid password supplied."
 msgstr "Contraseña incorrecta."
 
-#: message
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           ask_key_password "$tomboldpwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#. >     _success "Changing password for ::1 key file::" $TOMBKEYFILE
+#.   
+#.       # Here $TOMBSECRET contains the key material in clear
+#.   
+#.       { option_is_set --tomb-pwd } && {
+#: tomb:1039
+msgid "Changing password for ::1 key file::"
+msgstr "Cambiando la contraseña para ::1 fichero::"
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           gen_key "$tombpwd" >> "$tmpnewkey"
+#.       } || {
+#.           gen_key >> "$tmpnewkey"
+#.       }
+#.   
+#.       { is_valid_key "${mapfile[$tmpnewkey]}" } || {
+#. >         _failure "Error: the newly generated keyfile does not seem valid." }
+#.   
+#.       # Copy the new key as the original keyfile name
+#.       cp -f "${tmpnewkey}" $TOMBKEYFILE
+#.       _success "Your passphrase was successfully updated."
+#: tomb:1052
+msgid "Error: the newly generated keyfile does not seem valid."
+msgstr "Error: la llave recién generada no parece válida."
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.   
+#.       { is_valid_key "${mapfile[$tmpnewkey]}" } || {
+#.           _failure "Error: the newly generated keyfile does not seem valid." }
+#.   
+#.       # Copy the new key as the original keyfile name
+#.       cp -f "${tmpnewkey}" $TOMBKEYFILE
+#. >     _success "Your passphrase was successfully updated."
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1056
+msgid "Your passphrase was successfully updated."
+msgstr "Tu contraseña ha sido actualizada con éxito."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.   
+#.       if [ "$1" = "" ]; then
+#.           while true; do
+#.               # 3 tries to write two times a matching password
+#.               tombpass=`ask_password "Type the new password to secure your key"`
+#.               if [[ $? != 0 ]]; then
+#. >                 _failure "User aborted."
+#.               fi
+#.               if [ -z $tombpass ]; then
+#.                   _failure "You set empty password, which is not possible."
+#.               fi
+#: tomb:1078
+msgid "User aborted."
+msgstr "El usuario ha abortado."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # 3 tries to write two times a matching password
+#.               tombpass=`ask_password "Type the new password to secure your key"`
+#.               if [[ $? != 0 ]]; then
+#.                   _failure "User aborted."
+#.               fi
+#.               if [ -z $tombpass ]; then
+#. >                 _failure "You set empty password, which is not possible."
+#.               fi
+#.               tombpasstmp=$tombpass
+#.               tombpass=`ask_password "Type the new password to secure your key (again)"`
+#.               if [[ $? != 0 ]]; then
+#: tomb:1081
+msgid "You set empty password, which is not possible."
+msgstr "Has elegido una contraseña vacía, lo que no es posible."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # see: https://github.com/dyne/Tomb/issues/82
+#.               itertime="`option_value --kdf`"
+#.               # removing support of floating points because they can't be type checked well
+#.               if [[ "$itertime" != <-> ]]; then
+#.                   unset tombpass
+#.                   unset tombpasstmp
+#. >                 _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#: tomb:1109
+msgid ""
+"Wrong argument for --kdf: must be an integer number (iteration seconds)."
+msgstr ""
+"Argumento incorrecto para --kdf: debe ser un número entero (segundos por "
+"iteración)."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.                   unset tombpasstmp
+#.                   _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#. >             _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#: tomb:1114
+msgid "Using KDF, iterations: ::1 microseconds::"
+msgstr "Usando KDF: ::1 microsegundos:: iteraciones"
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.                   _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#. >             _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#.               _message "encoding the password"
+#: tomb:1115
 msgid "generating salt"
 msgstr "generando salt"
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#. >             _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#.               _message "encoding the password"
+#.               # We use a length of 64bytes = 512bits (more than needed!?)
+#.               tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+#: tomb:1117
 msgid "calculating iterations"
 msgstr "calculando iteraciones"
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#. >             _message "encoding the password"
+#.               # We use a length of 64bytes = 512bits (more than needed!?)
+#.               tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+#.   
+#.               header="_KDF_pbkdf2sha1_${pbkdf2_salt}_${pbkdf2_iter}_64\n"
+#: tomb:1119
 msgid "encoding the password"
 msgstr "codificando la contraseña"
 
-#: warning
+#. Fold: Key operations
+#. Function: list_gnupg_ciphers
+#.
+#. Code sample:
+#.       unset tombpasstmp
+#.   }
+#.   
+#.   # prints an array of ciphers available in gnupg (to encrypt keys)
+#.   list_gnupg_ciphers() {
+#.       # prints an error if GnuPG is not found
+#. >     which gpg 2>/dev/null || _failure "gpg (GnuPG) is not found, Tomb cannot function without it."
+#.   
+#.       ciphers=(`gpg --version | awk '
+#.   BEGIN { ciphers=0 }
+#.   /^Cipher:/ { gsub(/,/,""); sub(/^Cipher:/,""); print; ciphers=1; next }
+#: tomb:1150
+msgid "gpg (GnuPG) is not found, Tomb cannot function without it."
+msgstr "No se encuentra gpg (GnuPG), Tomb no puede funcionar sin ello."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEY
+#.   
+#.       imagefile=$PARAM
+#.   
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#. >         _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#.       _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#: tomb:1171
 msgid "Encode failed: ::1 image file:: is not a jpeg image."
 msgstr "La codificación falló: ::1 fichero:: no es una imagen jpeg."
 
-#: failure
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#.           _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#. >     _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#.       _message "Please confirm the key password for the encoding"
+#.       # We ask the password and test if it is the same encoding the
+#.       # base key, to insure that the same password is used for the
+#.       # encryption and the steganography. This is a standard enforced
+#: tomb:1175
+msgid "Encoding key ::1 tomb key:: inside image ::2 image file::"
+msgstr "Codificando la llave ::1 llave:: en la imagen ::2 imagen::."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#.           _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#.       _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#. >     _message "Please confirm the key password for the encoding"
+#.       # We ask the password and test if it is the same encoding the
+#.       # base key, to insure that the same password is used for the
+#.       # encryption and the steganography. This is a standard enforced
+#.       # by Tomb, but its not strictly necessary (and having different
+#: tomb:1176
+msgid "Please confirm the key password for the encoding"
+msgstr "Por favor, confirma la contraseña de la clave para la codificación"
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tombpwd
+#.           ask_key_password "$tombpwd"
+#.       } || {
+#.           ask_key_password
+#.       }
+#.       [[ $? != 0 ]] && {
+#. >         _warning "Wrong password supplied."
+#.           _failure "You shall not bury a key whose password is unknown to you." }
+#.   
+#.       # We omit armor strings since having them as constants can give
+#.       # ground to effective attacks on steganography
+#: tomb:1192
+msgid "Wrong password supplied."
+msgstr "Contraseña incorrecta."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.           ask_key_password "$tombpwd"
+#.       } || {
+#.           ask_key_password
+#.       }
+#.       [[ $? != 0 ]] && {
+#.           _warning "Wrong password supplied."
+#. >         _failure "You shall not bury a key whose password is unknown to you." }
+#.   
+#.       # We omit armor strings since having them as constants can give
+#.       # ground to effective attacks on steganography
+#.       print - "$TOMBKEY" | awk '
+#: tomb:1193
+msgid "You shall not bury a key whose password is unknown to you."
+msgstr "No deberías enterrar una clave cuya contraseña desconoces."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   /^-----/ {next}
+#.   /^Version/ {next}
+#.   {print $0}' #.       | steghide embed --embedfile - --coverfile ${imagefile} #.       -p $TOMBPASSWORD -z 9 -e serpent cbc
+#.       if [ $? != 0 ]; then
+#. >         _warning "Encoding error: steghide reports problems."
+#.           res=1
+#.       else
+#.           _success "Tomb key encoded succesfully into image ::1 image file::" $imagefile
+#.           res=0
+#: tomb:1204
+msgid "Encoding error: steghide reports problems."
+msgstr "Error en la codficación: steghide reporta problemas."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.       | steghide embed --embedfile - --coverfile ${imagefile} #.       -p $TOMBPASSWORD -z 9 -e serpent cbc
+#.       if [ $? != 0 ]; then
+#.           _warning "Encoding error: steghide reports problems."
+#.           res=1
+#.       else
+#. >         _success "Tomb key encoded succesfully into image ::1 image file::" $imagefile
+#.           res=0
+#.       fi
+#.   
+#.       return $res
+#: tomb:1207
+msgid "Tomb key encoded succesfully into image ::1 image file::"
+msgstr "Llave codificada con éxito en la imagen ::1 fichero::."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.   # mandatory 1st arg: the image file where key is supposed to be
+#.   # optional 2nd arg: the password to use (same as key, internal use)
+#.   # optional 3rd arg: the key where to save the result (- for stdout)
+#.   exhume_key() {
+#.       [[ "$1" = "" ]] && {
+#. >         _failure "Exhume failed, no image specified" }
+#.   
+#.       local imagefile="$1"  # The image file where to look for the key
+#.       local tombpass="$2"   # (Optional) the password to use (internal use)
+#.       local destkey="$3"    # (Optional) the key file where to save the
+#: tomb:1219
+msgid "Exhume failed, no image specified"
+msgstr "La exhumación ha fallado, no se ha especificado una imagen"
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       local destkey="$3"    # (Optional) the key file where to save the
+#.       # result (- for stdout)
+#.       local r=1             # Return code (default: fail)
+#.   
+#.       # Ensure the image file is a readable JPEG
+#.       [[ ! -r $imagefile ]] && {
+#. >         _failure "Exhume failed, image file not found: ::1 image file::" "${imagefile:-none}" }
+#.       [[ ! $(file "$imagefile") =~ "JP.G" ]] && {
+#.           _failure "Exhume failed: ::1 image file:: is not a jpeg image." $imagefile }
+#.   
+#.       # When a password is passed as argument then always print out
+#: tomb:1229
 msgid "Exhume failed, image file not found: ::1 image file::"
 msgstr "La exhumación ha fallado, no se ha encontrado la imagen: ::1 imagen::"
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       local r=1             # Return code (default: fail)
+#.   
+#.       # Ensure the image file is a readable JPEG
+#.       [[ ! -r $imagefile ]] && {
+#.           _failure "Exhume failed, image file not found: ::1 image file::" "${imagefile:-none}" }
+#.       [[ ! $(file "$imagefile") =~ "JP.G" ]] && {
+#. >         _failure "Exhume failed: ::1 image file:: is not a jpeg image." $imagefile }
+#.   
+#.       # When a password is passed as argument then always print out
+#.       # the exhumed key on stdout without further checks (internal use)
+#.       [[ -n "$tombpass" ]] && {
+#: tomb:1231
 msgid "Exhume failed: ::1 image file:: is not a jpeg image."
 msgstr "La exhumación falló: ::1 imagen:: no es una imagen jpeg."
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.       # When a password is passed as argument then always print out
+#.       # the exhumed key on stdout without further checks (internal use)
+#.       [[ -n "$tombpass" ]] && {
+#.           TOMBKEY=$(steghide extract -sf $imagefile -p $tombpass -xf -)
+#.           [[ $? != 0 ]] && {
+#. >             _failure "Wrong password or no steganographic key found" }
+#.   
+#.           recover_key $TOMBKEY
+#.   
+#.           return 0
+#: tomb:1238
 msgid "Wrong password or no steganographic key found"
 msgstr "Contraseña incorrecta o no se ha econtrando una clave esteganográfica"
 
-#: message
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       }
+#.   
+#.       # Ensure we have a valid destination for the key
+#.       [[ -z $destkey ]] && { option_is_set -k } && destkey=$(option_value -k)
+#.       [[ -z $destkey ]] && {
+#.           destkey="-" # No key was specified: fallback to stdout
+#. >         _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#: tomb:1249
 msgid "printing exhumed key on stdout"
 msgstr "mostrando llave exhumada en stdout"
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       [[ -z $destkey ]] && {
+#.           destkey="-" # No key was specified: fallback to stdout
+#.           _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#. >         _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#: tomb:1253
 msgid "File exists: ::1 tomb key::"
 msgstr "El fichero existe: ::1 clave::"
 
-#: failure
-msgid "Refusing to overwrite file. Operation aborted."
-msgstr "Crear esta tumba sobreescribiría un fichero existente. Operación abortada."
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.           _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#. >             _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#: tomb:1255
+msgid "Use of --force selected: overwriting."
+msgstr "Usando --force: sobreescribiendo."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#. >             _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#.       _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#: tomb:1258
+msgid "Make explicit use of --force to overwrite."
+msgstr "Usa --force para sobreescribir."
 
-#: message
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#. >             _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#.       _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#.       { option_is_set --tomb-pwd } && {
+#: tomb:1259
+msgid "Refusing to overwrite file. Operation aborted."
+msgstr ""
+"Crear esta tumba sobreescribiría un fichero existente. Operación abortada."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#. >     _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#.       { option_is_set --tomb-pwd } && {
+#.           tombpass=$(option_value --tomb-pwd)
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tombpass
+#.       } || {
+#: tomb:1262
 msgid "Trying to exhume a key out of image ::1 image file::"
 msgstr "Intentando exhumar una llave de la imagen ::1 fichero::"
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       steghide extract -sf $imagefile -p ${tombpass} -xf $destkey
+#.       r=$?
+#.   
+#.       # Report to the user
+#.       [[ "$destkey" = "-" ]] && destkey="stdout"
+#.       [[ $r == 0 ]] && {
+#. >         _success "Key succesfully exhumed to ::1 key::." $destkey
+#.       } || {
+#.           _warning "Nothing found in ::1 image file::" $imagefile
+#.       }
+#.   
+#: tomb:1283
+msgid "Key succesfully exhumed to ::1 key::."
+msgstr "Llave exhumada con éxito en ::1 llave::."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.       # Report to the user
+#.       [[ "$destkey" = "-" ]] && destkey="stdout"
+#.       [[ $r == 0 ]] && {
+#.           _success "Key succesfully exhumed to ::1 key::." $destkey
+#.       } || {
+#. >         _warning "Nothing found in ::1 image file::" $imagefile
+#.       }
+#.   
+#.       return $r
+#.   }
+#: tomb:1285
 msgid "Nothing found in ::1 image file::"
 msgstr "No se ha encontrado nada en ::1 fichero::"
 
-#: failure
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#.       local keyname=$(basename $TOMBKEYFILE)
+#.       local pngname="$keyname.qr.png"
+#.   
+#. >     _success "Rendering a printable QRCode for key: ::1 tomb key file::" $TOMBKEYFILE
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#: tomb:1300
+msgid "Rendering a printable QRCode for key: ::1 tomb key file::"
+msgstr "Creando un código QR imprimible para la llave ::1 fichero::."
+
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.   
+#.       _success "Rendering a printable QRCode for key: ::1 tomb key file::" $TOMBKEYFILE
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#. >         _failure "QREncode reported an error." }
+#.   
+#.       _success "Operation successful:"
+#.       # TODO: only if verbose and/or not silent
+#.       ls -lh $pngname
+#: tomb:1305
 msgid "QREncode reported an error."
 msgstr "QREncode ha reportado un error."
 
-#: message
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#.           _failure "QREncode reported an error." }
+#.   
+#. >     _success "Operation successful:"
+#.       # TODO: only if verbose and/or not silent
+#.       ls -lh $pngname
+#.       file $pngname
+#.   }
+#: tomb:1307
+msgid "Operation successful:"
+msgstr "Operación con éxito:"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.   dig_tomb() {
+#.       local    tombpath="$1"    # Path to tomb
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#. >     _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#: tomb:1340
 msgid "Commanded to dig tomb ::1 tomb path::"
 msgstr "Se ha ordenado cavar la tubma ::1 ruta::"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       local    tombpath="$1"    # Path to tomb
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#. >     [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#: tomb:1342
 msgid "Missing path to tomb"
 msgstr "Falta la ruta de la tumba"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#. >     [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#: tomb:1343
+msgid "Size argument missing, use -s"
+msgstr "Falta el argumento de tamaño, usa -s"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#. >     [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#: tomb:1344
 msgid "Size must be an integer (megabytes)"
 msgstr "El tamaño debe ser un número entero (megabytes)"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#. >     [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       [[ -e $TOMBPATH ]] && {
+#: tomb:1345
 msgid "Tombs can't be smaller than 10 megabytes"
 msgstr "Las tumbas no pueden ser menores de 10 megabytes"
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       [[ -e $TOMBPATH ]] && {
+#. >         _warning "A tomb exists already. I'm not digging here:"
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#: tomb:1350
+msgid "A tomb exists already. I'm not digging here:"
+msgstr "Ya existe una tumba. No voy a cavar aquí:"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       [[ -e $TOMBPATH ]] && {
+#.           _warning "A tomb exists already. I'm not digging here:"
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#. >     _success "Creating a new tomb in ::1 tomb path::" $TOMBPATH
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#: tomb:1355
+msgid "Creating a new tomb in ::1 tomb path::"
+msgstr "Creando una nueva tumba en ::1 tumba::"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#.       _success "Creating a new tomb in ::1 tomb path::" $TOMBPATH
+#.   
+#. >     _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#.       touch $TOMBPATH
+#.       [[ $? = 0 ]] || {
+#: tomb:1357
 msgid "Generating ::1 tomb file:: of ::2 size::MiB"
 msgstr "Generando ::1 tumba:: de ::2 size::MiB"
 
-#: warning
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#.       touch $TOMBPATH
+#.       [[ $? = 0 ]] || {
+#. >         _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.       chmod 0600 $TOMBPATH
+#.   
+#: tomb:1362
 msgid "Error creating the tomb ::1 tomb path::"
 msgstr "Error al crear la tumba ::1 ruta de la tumba::"
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           ls -lh $TOMBPATH
+#.       } || {
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#. >     _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#: tomb:1377
+msgid "Done digging ::1 tomb name::"
+msgstr "Se ha terminado de cavar ::1 tumba::."
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       } || {
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#. >     _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#: tomb:1378
+msgid "Your tomb is not yet ready, you need to forge a key and lock it:"
+msgstr ""
+"Tu tumba no está lista todavía, tienes que forjar una llave y asegurarla:"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#. >     _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#: tomb:1379
 msgid "tomb forge ::1 tomb path::.key"
 msgstr "tomb forge ::1 ruta::.key"
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#. >     _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1380
 msgid "tomb lock ::1 tomb path:: -k ::1 tomb path::.key"
 msgstr "tomb lock ::1 ruta:: -k ::1 ruta::.key"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       local destkey="$1"
+#.       { option_is_set -k } && { destkey=$(option_value -k) }
+#.   
+#.       local algo="AES256"  # Default encryption algorithm
+#.   
+#.       [[ -z "$destkey" ]] && {
+#. >         _failure "A filename needs to be specified using -k to forge a new key." }
+#.   
+#.       _message "Commanded to forge key ::1 key::" $destkey
+#.   
+#.       _check_swap # Ensure the available memory is safe to use
+#: tomb:1401
+msgid "A filename needs to be specified using -k to forge a new key."
+msgstr ""
+"Es necesario especificar un nombre de fichero usando -k para forgar una "
+"llave nueva."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       local algo="AES256"  # Default encryption algorithm
+#.   
+#.       [[ -z "$destkey" ]] && {
+#.           _failure "A filename needs to be specified using -k to forge a new key." }
+#.   
+#. >     _message "Commanded to forge key ::1 key::" $destkey
+#.   
+#.       _check_swap # Ensure the available memory is safe to use
+#.   
+#.       # Ensure GnuPG won't exit with an error before first run
+#: tomb:1403
 msgid "Commanded to forge key ::1 key::"
 msgstr "Se ha ordenado forjar la llave ::1 llave::"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           mkdir -m 0700 $HOME/.gnupg
+#.           touch $HOME/.gnupg/pubring.gpg }
+#.   
+#.       # Do not overwrite any files accidentally
+#.       [[ -r "$destkey" ]] && {
+#.           ls -lh $destkey
+#. >         _failure "Forging this key would overwrite an existing file. Operation aborted." }
+#.   
+#.       touch $destkey
+#.       [[ $? == 0 ]] || {
+#.           _warning "Cannot generate encryption key."
+#: tomb:1415
+msgid "Forging this key would overwrite an existing file. Operation aborted."
+msgstr ""
+"Forjar esta llave sobreescribiría un fichero existente. Operación abortada."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       [[ -r "$destkey" ]] && {
+#.           ls -lh $destkey
+#.           _failure "Forging this key would overwrite an existing file. Operation aborted." }
+#.   
+#.       touch $destkey
+#.       [[ $? == 0 ]] || {
+#. >         _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.       chmod 0600 $destkey
+#.   
+#.       # Update algorithm if it was passed on the command line with -o
+#: tomb:1419
+msgid "Cannot generate encryption key."
+msgstr "No se puede generar la llave de encriptación."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       chmod 0600 $destkey
+#.   
+#.       # Update algorithm if it was passed on the command line with -o
+#.       { option_is_set -o } && algopt="$(option_value -o)"
+#.       [[ -n "$algopt" ]] && algo=$algopt
+#.   
+#. >     _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#: tomb:1427
 msgid "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::"
-msgstr "Se ha ordenado forjar la llave ::1 llave:: con el algoritmo de cifrado ::2 algoritmo::"
+msgstr ""
+"Se ha ordenado forjar la llave ::1 llave:: con el algoritmo de cifrado ::2 "
+"algoritmo::"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#. >     _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#: tomb:1432
+msgid "This operation takes time, keep using this computer on other tasks,"
+msgstr ""
+"Esta operación necesita tiempo, sigue usando el ordenador en otras tareas,"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#. >     _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#: tomb:1433
+msgid "once done you will be asked to choose a password for your tomb."
+msgstr "cuando termine se te pedirá que elijas una contraseña para tu tumba."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#. >     _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#.       local random_source=/dev/random
+#: tomb:1434
+msgid "To make it faster you can move the mouse around."
+msgstr "Para acelerarlo puedes mover el ratón por la pantalla."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#. >     _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#.       local random_source=/dev/random
+#.       { option_is_set --use-urandom } && random_source=/dev/urandom
+#: tomb:1435
+msgid "If you are on a server, you can use an Entropy Generation Daemon."
+msgstr "Si estás en un servidor, puede usar un Entropy Generation Daemon."
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       [[ $? == 0 ]] || {
+#.           _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.   
+#.       # Here the global variable TOMBSECRET contains the naked secret
+#.   
+#. >     _success "Choose the  password of your key: ::1 tomb key::" $TOMBKEYFILE
+#.       _message "(You can also change it later using 'tomb passwd'.)"
+#.       # _user_file $TOMBKEYFILE
+#.   
+#.       tombname="$TOMBKEYFILE" # XXX ???
+#: tomb:1449
+msgid "Choose the  password of your key: ::1 tomb key::"
+msgstr "Elige una contraseña para tu llave: ::1 llave::"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.   
+#.       # Here the global variable TOMBSECRET contains the naked secret
+#.   
+#.       _success "Choose the  password of your key: ::1 tomb key::" $TOMBKEYFILE
+#. >     _message "(You can also change it later using 'tomb passwd'.)"
+#.       # _user_file $TOMBKEYFILE
+#.   
+#.       tombname="$TOMBKEYFILE" # XXX ???
+#.       # the gen_key() function takes care of the new key's encryption
+#: tomb:1450
+msgid "(You can also change it later using 'tomb passwd'.)"
+msgstr "(También puedes cambiarla más tarde usando 'tomb passwd'.)"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       # load the key contents (set global variable)
+#.       TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.   
+#.       # this does a check on the file header
+#.       is_valid_key $TOMBKEY || {
+#. >         _warning "The key does not seem to be valid."
+#.           _warning "Dumping contents to screen:"
+#.           print "${mapfile[$TOMBKEY]}"
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#: tomb:1468
+msgid "The key does not seem to be valid."
+msgstr "Parece que la llave no es válida."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       # load the key contents (set global variable)
+#.       TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.   
+#.       # this does a check on the file header
+#.       is_valid_key $TOMBKEY || {
+#.           _warning "The key does not seem to be valid."
+#. >         _warning "Dumping contents to screen:"
+#.           print "${mapfile[$TOMBKEY]}"
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#: tomb:1469
+msgid "Dumping contents to screen:"
+msgstr "Volcando contenido en la pantalla:"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#. >     _message "Done forging ::1 key file::" $TOMBKEYFILE
+#.       _success "Your key is ready:"
+#.       ls -lh $TOMBKEYFILE
+#.   }
+#.   
+#: tomb:1477
 msgid "Done forging ::1 key file::"
 msgstr "Se ha terminado de forjar ::1 llave::"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _message "Done forging ::1 key file::" $TOMBKEYFILE
+#. >     _success "Your key is ready:"
+#.       ls -lh $TOMBKEYFILE
+#.   }
+#.   
+#.   # Step three -- Lock tomb
+#: tomb:1478
+msgid "Your key is ready:"
+msgstr "Tu llave está lista:"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       # for more alternatives refer to cryptsetup(8)
+#.       local cipher="aes-xts-plain64:sha256"
+#.   
+#.       local tombpath="$1"      # First argument is the path to the tomb
+#.   
+#.       [[ -n $tombpath ]] || {
+#. >         _warning "No tomb specified for locking."
+#.           _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#: tomb:1498
+msgid "No tomb specified for locking."
+msgstr "No se ha especificado una tumba que asegurar."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       local cipher="aes-xts-plain64:sha256"
+#.   
+#.       local tombpath="$1"      # First argument is the path to the tomb
+#.   
+#.       [[ -n $tombpath ]] || {
+#.           _warning "No tomb specified for locking."
+#. >         _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#.       _plot $tombpath
+#: tomb:1499
+msgid "Usage: tomb lock file.tomb file.tomb.key"
+msgstr "Uso: tomb lock file.tomb file.tomb.key"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#.       _plot $tombpath
+#.   
+#. >     _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
+#.   
+#.       [[ -f $TOMBPATH ]] || {
+#.           _failure "There is no tomb here. You have to dig it first." }
+#.   
+#: tomb:1505
 msgid "Commanded to lock tomb ::1 tomb file::"
 msgstr "Se ha ordenado asegurar la tumba ::1 tumba::"
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _plot $tombpath
+#.   
+#.       _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
+#.   
+#.       [[ -f $TOMBPATH ]] || {
+#. >         _failure "There is no tomb here. You have to dig it first." }
+#.   
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       lo_mount $TOMBPATH
+#: tomb:1508
+msgid "There is no tomb here. You have to dig it first."
+msgstr "No hay una tumba aquí. Tienes que cavarla primero."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#.       _verbose "Loop mounted on ::1 mount point::" $nstloop
+#.   
+#. >     _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#: tomb:1517
+msgid "Checking if the tomb is empty (we never step on somebody else's bones)."
+msgstr ""
+"Comprobando que la tumba esté vacía (no queremos pisar los huesos de alguien "
+"más)."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       _verbose "Loop mounted on ::1 mount point::" $nstloop
+#.   
+#.       _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#. >         _warning "The tomb was already locked with another key."
+#.           _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#.           _message "Fine, this tomb seems empty."
+#.       fi
+#: tomb:1521
+msgid "The tomb was already locked with another key."
+msgstr "La tumba ya estaba asegurada con otra llave."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#. >         _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#.           _message "Fine, this tomb seems empty."
+#.       fi
+#.   
+#: tomb:1522
+msgid ""
+"Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+msgstr ""
+"Operación abortada. No puedo asegurar una tumba que ya tiene un candado. "
+"Cava una nueva."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#.           _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#. >         _message "Fine, this tomb seems empty."
+#.       fi
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#: tomb:1524
+msgid "Fine, this tomb seems empty."
+msgstr "Bien, esta tumba parece vacía."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#.       # the encryption cipher for a tomb can be set when locking using -c
+#.       { option_is_set -o } && algopt="$(option_value -o)"
+#.       [[ -n "$algopt" ]] && cipher=$algopt
+#. >     _message "Locking using cipher: ::1 cipher::" $cipher
+#.   
+#.       # get the pass from the user and check it
+#.       if option_is_set --tomb-pwd; then
+#.           tomb_pwd="`option_value --tomb-pwd`"
+#: tomb:1532
 msgid "Locking using cipher: ::1 cipher::"
 msgstr "Asegurando usando el cifrado: ::1::"
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           ask_key_password "$tomb_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#. >     _success "Locking ::1 tomb file:: with ::2 tomb key file::" $TOMBFILE $TOMBKEYFILE
+#.   
+#.       _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #: tomb:1544
+msgid "Locking ::1 tomb file:: with ::2 tomb key file::"
+msgstr "Asegurando ::1 tumba:: con ::2 llave::"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _success "Locking ::1 tomb file:: with ::2 tomb key file::" $TOMBFILE $TOMBKEYFILE
+#.   
+#. >     _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #.           luksFormat ${nstloop}
+#.       [[ $? == 0 ]] || {
+#: tomb:1546
+msgid "Formatting Luks mapped device."
+msgstr "Formateando dispositivo mapeado con Luks."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #.           luksFormat ${nstloop}
+#.       [[ $? == 0 ]] || {
+#. >         _warning "cryptsetup luksFormat returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#: tomb:1551
+msgid "cryptsetup luksFormat returned an error."
+msgstr "cryptsetup luksFormat ha devuelto un error."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       [[ $? == 0 ]] || {
+#.           _warning "cryptsetup luksFormat returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#. >         _warning "cryptsetup luksOpen returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#: tomb:1556
 msgid "cryptsetup luksOpen returned an error."
 msgstr "cryptsetup luksOpen ha devuelto un error."
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#.           _warning "cryptsetup luksOpen returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#. >     _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _warning "Tomb format returned an error."
+#: tomb:1559
+msgid "Formatting your Tomb with Ext3/Ext4 filesystem."
+msgstr "Formateando tu tumba con el sistema de ficheros Ext3/Ext4."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _failure "Operation aborted." }
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _warning "Tomb format returned an error."
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#: tomb:1563
+msgid "Tomb format returned an error."
+msgstr "El formateo de la tumba ha devuelto un error."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _warning "Tomb format returned an error."
+#. >         _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#: tomb:1564
 msgid "Your tomb ::1 tomb file:: may be corrupted."
 msgstr "Puede que tu tumba ::1 tumba:: esté corrupta."
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Tomb format returned an error."
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#. >     _message "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::" $TOMBNAME $cipher
+#.       _success "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::" #.           $TOMBPATH $TOMBKEYFILE
+#.   
+#.   }
+#: tomb:1569
 msgid "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::"
 msgstr "Se ha terminado de asegurar ::1 tumba:: usando Luks dm-crypt ::2::"
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#.       _message "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::" $TOMBNAME $cipher
+#. >     _success "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::" #.           $TOMBPATH $TOMBKEYFILE
+#.   
+#.   }
+#.   
+#: tomb:1570
+msgid ""
+"Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::"
+msgstr ""
+"Tu tumba está lista en ::1 tumba:: y asegurada con la llave ::2 llave::"
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.   # This function changes the key that locks a tomb
+#.   change_tomb_key() {
+#.       local tombkey="$1"      # Path to the tomb's key file
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#. >     _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#: tomb:1580
 msgid "Commanded to reset key for tomb ::1 tomb path::"
 msgstr "Se ha ordenado resetear la llave para la tumba ::1 ruta::"
 
-#: warning
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       local tombkey="$1"      # Path to the tomb's key file
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#. >         _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#.           _failure "Execution aborted."
+#.       }
+#.   
+#: tomb:1583
 msgid "Command 'setkey' needs two arguments: the old key file and the tomb."
-msgstr "El comando 'setkey' necesita dos argumentos: la vieja llave y la tumba."
-
-#: warning
+msgstr ""
+"El comando 'setkey' necesita dos argumentos: la vieja llave y la tumba."
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#. >         _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#.           _failure "Execution aborted."
+#.       }
+#.   
+#.       _check_swap
+#: tomb:1584
 msgid "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
 msgstr "Por ejemplo: tomb -k new.tomb.key old.tomb.key secret.tomb"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#. >         _failure "Execution aborted."
+#.       }
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#: tomb:1585
 msgid "Execution aborted."
 msgstr "Ejecución abortada."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       # is it a LUKS encrypted nest? we check one more time
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Not a valid LUKS encrypted volume: ::1 volume::" $TOMBPATH }
+#.   
+#.       _load_key $tombkey    # Try loading given key and set TOMBKEY and
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#: tomb:1596
 msgid "Not a valid LUKS encrypted volume: ::1 volume::"
 msgstr "No es un volumen LUKS encriptado válido: ::1 volumen::"
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       _load_key $tombkey    # Try loading given key and set TOMBKEY and
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#.       local oldkeyfile=$TOMBKEYFILE
+#.   
+#.       # we have everything, prepare to mount
+#. >     _success "Changing lock on tomb ::1 tomb name::" $TOMBNAME
+#.       _message "Old key: ::1 old key::" $oldkeyfile
+#.   
+#.       # render the mapper
+#.       mapdate=`date +%s`
+#: tomb:1604
+msgid "Changing lock on tomb ::1 tomb name::"
+msgstr "Cambiando el candado en la tumba ::1 tumba::."
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#.       local oldkeyfile=$TOMBKEYFILE
+#.   
+#.       # we have everything, prepare to mount
+#.       _success "Changing lock on tomb ::1 tomb name::" $TOMBNAME
+#. >     _message "Old key: ::1 old key::" $oldkeyfile
+#.   
+#.       # render the mapper
+#.       mapdate=`date +%s`
+#.       # save date of mount in minutes since 1970
+#: tomb:1605
 msgid "Old key: ::1 old key::"
 msgstr "Llave vieja: ::1 Llave::"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _verbose "tomb-old-pwd = ::1 old pass::" $tomb_old_pwd
+#.           ask_key_password "$tomb_old_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || {
+#. >         _failure "No valid password supplied for the old key." }
+#.       old_secret=$TOMBSECRET
+#.   
+#.       # luksOpen the tomb (not really mounting, just on the loopback)
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #: tomb:1621
 msgid "No valid password supplied for the old key."
 msgstr "No se ha proporcionado una contraseña válida para la vieja llave."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _failure "No valid password supplied for the old key." }
+#.       old_secret=$TOMBSECRET
+#.   
+#.       # luksOpen the tomb (not really mounting, just on the loopback)
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksOpen ${nstloop} ${mapper}
+#. >     [[ $? == 0 ]] || _failure "Unexpected error in luksOpen."
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#.       _message "New key: ::1 key file::" $TOMBKEYFILE
+#: tomb:1627
 msgid "Unexpected error in luksOpen."
 msgstr "Error inesperado en luksOpen."
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksOpen ${nstloop} ${mapper}
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksOpen."
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#. >     _message "New key: ::1 key file::" $TOMBKEYFILE
+#.   
+#.       if option_is_set --tomb-pwd; then
+#.           tomb_new_pwd="`option_value --tomb-pwd`"
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_new_pwd
+#: tomb:1631
 msgid "New key: ::1 key file::"
 msgstr "Nueva llave: ::1 fichero::"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_new_pwd
+#.           ask_key_password "$tomb_new_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || {
+#. >         _failure "No valid password supplied for the new key." }
+#.   
+#.       _tmp_create
+#.       tmpnewkey=$TOMBTMP
+#.       print -R -n - "$TOMBSECRET" >> $tmpnewkey
+#: tomb:1641
 msgid "No valid password supplied for the new key."
 msgstr "No se ha proporcionado una contraseña válida para la nueva llave."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       tmpnewkey=$TOMBTMP
+#.       print -R -n - "$TOMBSECRET" >> $tmpnewkey
+#.   
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#. >     [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#: tomb:1650
 msgid "Unexpected error in luksChangeKey."
 msgstr "Error inesperado en luksChangeKey."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#. >     sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#.       _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#: tomb:1652
 msgid "Unexpected error in luksClose."
 msgstr "Error inesperado en luksClose."
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#. >     _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#.       _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#.       return 0
+#.   }
+#: tomb:1654
+msgid "Succesfully changed key for tomb: ::1 tomb file::"
+msgstr "Se ha cambiado la clave con éxito para la tumba ::1 tumba::"
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#. >     _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1655
 msgid "The new key is: ::1 new key::"
 msgstr "La nueva llave es: ::1 llave::"
 
-#: failure
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.   # {{{ Open
+#.   
+#.   # $1 = tombfile $2(optional) = mountpoint
+#.   mount_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#. >     [[ -n "$tombpath" ]] || _failure "No tomb name specified for opening."
+#.   
+#.       _message "Commanded to open tomb ::1 tomb name::" $1
+#.   
+#.       _check_swap
+#: tomb:1667
 msgid "No tomb name specified for opening."
 msgstr "No se ha especificado el nombre de la tumba a abrir."
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.   # $1 = tombfile $2(optional) = mountpoint
+#.   mount_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.       [[ -n "$tombpath" ]] || _failure "No tomb name specified for opening."
+#.   
+#. >     _message "Commanded to open tomb ::1 tomb name::" $1
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#.   
+#: tomb:1669
 msgid "Commanded to open tomb ::1 tomb name::"
 msgstr "Se ha ordenado abrir la tumba ::1 tumba::"
 
-#: warning
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#.   
+#.       # check file type (if its a Luks fs)
+#.       [[ "`file $TOMBPATH`" =~ "luks encrypted file" ]] || {
+#. >         _warning "::1 tomb file:: is not a valid tomb file" $TOMBFILE
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#: tomb:1676
 msgid "::1 tomb file:: is not a valid tomb file"
 msgstr "::1 fichero:: no es un fichero de tumba válido"
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#.       tombmount=${2:-/media/$TOMBFILE}
+#.       [[ -z "$2" ]] && {
+#. >         _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#: tomb:1686
 msgid "Mountpoint not specified, using default: ::1 mount point::"
-msgstr "Punto de montaje no especificado, utilizando estándar: ::1 punto de montaje::"
-
-#: warning
+msgstr ""
+"Punto de montaje no especificado, utilizando estándar: ::1 punto de montaje::"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       tombmount=${2:-/media/$TOMBFILE}
+#.       [[ -z "$2" ]] && {
+#.           _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#. >         _warning "::1 tomb name:: is already open." $TOMBNAME
+#.           _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#: tomb:1690
 msgid "::1 tomb name:: is already open."
 msgstr "::1 tumba:: ya está abierta."
 
-#: failure
-msgid "::1 tomb file:: is not a valid Luks encrypted storage file."
-msgstr "::1 tumba:: no es un fichero encriptado con LUKS válido."
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       [[ -z "$2" ]] && {
+#.           _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#. >         _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#.       _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#: tomb:1691
+msgid "Here below its status is reported:"
+msgstr "Su estado se muestra a continuación:"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#.           _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#. >     _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#: tomb:1695
+msgid "Opening ::1 tomb file:: on ::2 mount point::"
+msgstr "Abriendo ::1 tumba:: en ::2 punto de montaje::."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#.       sudo cryptsetup isLuks ${nstloop} || {
+#.           # is it a LUKS encrypted nest? see cryptsetup(1)
+#. >         _failure "::1 tomb file:: is not a valid Luks encrypted storage file." $TOMBFILE }
+#.   
+#.       _message "This tomb is a valid LUKS encrypted device."
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#: tomb:1702
+msgid "::1 tomb file:: is not a valid Luks encrypted storage file."
+msgstr "::1 tumba:: no es un fichero encriptado con LUKS válido."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       nstloop=`lo_new`
+#.   
+#.       sudo cryptsetup isLuks ${nstloop} || {
+#.           # is it a LUKS encrypted nest? see cryptsetup(1)
+#.           _failure "::1 tomb file:: is not a valid Luks encrypted storage file." $TOMBFILE }
+#.   
+#. >     _message "This tomb is a valid LUKS encrypted device."
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#.       tombdump=(`print $luksdump | awk '
+#.           /^Cipher name/ {print $3}
+#: tomb:1704
+msgid "This tomb is a valid LUKS encrypted device."
+msgstr "Esta tumba es un dispositivo encriptado con LUKS válido."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#.       tombdump=(`print $luksdump | awk '
+#.           /^Cipher name/ {print $3}
+#.           /^Cipher mode/ {print $3}
+#.           /^Hash spec/   {print $3}'`)
+#. >     _message "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\"" $tombdump[1] $tombdump[2] $tombdump[3]
+#.   
+#.       slotwarn=`print $luksdump | awk '
+#.           BEGIN { zero=0 }
+#.           /^Key slot 0/ { zero=1 }
+#: tomb:1711
+msgid "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\""
+msgstr ""
+"El cifrado es \"::1 cifrado::\" en modo \"::2 modo::\" y hash \"::3 hash::\""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       slotwarn=`print $luksdump | awk '
+#.           BEGIN { zero=0 }
+#.           /^Key slot 0/ { zero=1 }
+#.           /^Key slot.*ENABLED/ { if(zero==1) print "WARN" }'`
+#.       [[ "$slotwarn" == "WARN" ]] && {
+#. >         _warning "Multiple key slots are enabled on this tomb. Beware: there can be a backdoor." }
+#.   
+#.       # save date of mount in minutes since 1970
+#.       mapdate=`date +%s`
+#.   
+#: tomb:1718
+msgid ""
+"Multiple key slots are enabled on this tomb. Beware: there can be a backdoor."
+msgstr ""
+"Hay múltiples rarunas para la llave en esta tumba. Cuidado: puede haber una "
+"puerta trasera."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           ask_key_password
+#.       }
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _cryptsetup luksOpen ${nstloop} ${mapper}
+#.       [[ $? = 0 ]] || {
+#. >         _failure "Failure mounting the encrypted file." }
+#.   
+#.       # preserve the loopdev after exit
+#.       lo_preserve "$nstloop"
+#.   
+#: tomb:1742
+msgid "Failure mounting the encrypted file."
+msgstr "Fallo al montar el fichero encriptado."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       # array: [ cipher, keysize, loopdevice ]
+#.       tombstat=(`sudo cryptsetup status ${mapper} | awk '
+#.       /cipher:/  {print $2}
+#.       /keysize:/ {print $2}
+#.       /device:/  {print $2}'`)
+#. >     _success "Success unlocking tomb ::1 tomb name::" $TOMBNAME
+#.       _verbose "Key size is ::1 size:: for cipher ::2 cipher::" $tombstat[2] $tombstat[1]
+#.   
+#.       _message "Checking filesystem via ::1::" $tombstat[3]
+#.       sudo fsck -p -C0 /dev/mapper/${mapper}
+#: tomb:1752
+msgid "Success unlocking tomb ::1 tomb name::"
+msgstr "Se ha abierto el cerrojo de ::1 tumba:: con éxito."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       /cipher:/  {print $2}
+#.       /keysize:/ {print $2}
+#.       /device:/  {print $2}'`)
+#.       _success "Success unlocking tomb ::1 tomb name::" $TOMBNAME
+#.       _verbose "Key size is ::1 size:: for cipher ::2 cipher::" $tombstat[2] $tombstat[1]
+#.   
+#. >     _message "Checking filesystem via ::1::" $tombstat[3]
+#.       sudo fsck -p -C0 /dev/mapper/${mapper}
+#.       _verbose "Tomb engraved as ::1 tomb name::" $TOMBNAME
+#.       sudo tune2fs -L $TOMBNAME /dev/mapper/${mapper} > /dev/null
+#.   
+#: tomb:1755
+msgid "Checking filesystem via ::1::"
+msgstr "Comprobando el sistema de ficheros a través de ::1::"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       # TODO: safety check MOUNTOPTS
+#.       # safe_mount_options && #.       sudo mount -o $MOUNTOPTS /dev/mapper/${mapper} ${tombmount}
+#.       # Clean up if the mount failed
+#.       [[ $? == 0 ]] || {
+#. > 	_warning "Error mounting ::1 mapper:: on ::2 tombmount::" $mapper $tombmount
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #.   	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#: tomb:1773
+msgid "Error mounting ::1 mapper:: on ::2 tombmount::"
+msgstr ""
 
-#: message
-msgid "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\""
-msgstr "El cifrado es \"::1 cifrado::\" en modo \"::2 modo::\" y hash \"::3 hash::\""
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       # safe_mount_options && #.       sudo mount -o $MOUNTOPTS /dev/mapper/${mapper} ${tombmount}
+#.       # Clean up if the mount failed
+#.       [[ $? == 0 ]] || {
+#.   	_warning "Error mounting ::1 mapper:: on ::2 tombmount::" $mapper $tombmount
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #. > 	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#.   	[[ -e /dev/mapper/$mapper ]] && sudo cryptsetup luksClose $mapper
+#.   	# The loop is taken care of in _endgame()
+#: tomb:1775
+msgid "Are mount options '::1 mount options::' valid?"
+msgstr ""
 
-#: warning
-msgid "Multiple key slots are enabled on this tomb. Beware: there can be a backdoor."
-msgstr "Hay múltiples rarunas para la llave en esta tumba. Cuidado: puede haber una puerta trasera."
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #.   	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#.   	[[ -e /dev/mapper/$mapper ]] && sudo cryptsetup luksClose $mapper
+#.   	# The loop is taken care of in _endgame()
+#. > 	_failure "Cannot mount ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       sudo chown $UID:$GID ${tombmount}
+#.       sudo chmod 0711 ${tombmount}
+#: tomb:1780
+msgid "Cannot mount ::1 tomb name::"
+msgstr ""
 
-#: message
-msgid "Checking filesystem via ::1::"
-msgstr "Comprobando el sistema de ficheros a través de ::1::"
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   	_failure "Cannot mount ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       sudo chown $UID:$GID ${tombmount}
+#.       sudo chmod 0711 ${tombmount}
+#.   
+#. >     _success "Success opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#.   
+#.       local tombtty tombhost tombuid tombuser
+#.   
+#.       # print out when was opened the last time, by whom and where
+#: tomb:1786
+msgid "Success opening ::1 tomb file:: on ::2 mount point::"
+msgstr "Se ha abierto ::1 tumba:: en ::2 punto de montaje:: con éxito."
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           tombuid=$(_cat ${tombmount}/.uid | tr -d ' ')
+#.           tomblast=$(_cat ${tombmount}/.last | tr -d ' ')
+#.           for e in ${(f@)mapfile[/etc/passwd]}; do
+#.               [[ "$e" =~ ":$tombuid:" ]] && {
+#.                   tombuser="${e[(ws@:@)1]}" }
+#.           done
+#. >         _message "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::" $tombuser $tombuid $tombtty $tombhost
+#.           _message "on date ::1 date::" "`date --date=@${tomblast} +%c`"
+#.       }
+#.       # write down the UID and TTY that opened the tomb
+#.       rm -f ${tombmount}/.uid
+#: tomb:1800
 msgid "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::"
-msgstr "Última visita de ::1 usuario::(::2 versión de tomb::) desde ::3 tty:: en ::4 host::"
-
-#: message
+msgstr ""
+"Última visita de ::1 usuario::(::2 versión de tomb::) desde ::3 tty:: en ::4 "
+"host::"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           tomblast=$(_cat ${tombmount}/.last | tr -d ' ')
+#.           for e in ${(f@)mapfile[/etc/passwd]}; do
+#.               [[ "$e" =~ ":$tombuid:" ]] && {
+#.                   tombuser="${e[(ws@:@)1]}" }
+#.           done
+#.           _message "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::" $tombuser $tombuid $tombtty $tombhost
+#. >         _message "on date ::1 date::" "`date --date=@${tomblast} +%c`"
+#.       }
+#.       # write down the UID and TTY that opened the tomb
+#.       rm -f ${tombmount}/.uid
+#.       print $_UID > ${tombmount}/.uid
+#: tomb:1801
 msgid "on date ::1 date::"
 msgstr "el ::1 fecha::"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.   
+#.       # Default mount options are overridden with the -o switch
+#.       [[ -n ${(k)OPTS[-o]} ]] && MOUNTOPTS=${OPTS[-o]}
+#.   
+#.       # No HOME set? Note: this should never happen again.
+#.       [[ -z $HOME ]] && {
+#. >         _warning "How pitiful!  A tomb, and no HOME."
+#.           return 1 }
+#.   
+#.       [[ -z $mnt || ! -d $mnt ]] && {
+#.           _warning "Cannot exec bind hooks without a mounted tomb."
+#: tomb:1849
+msgid "How pitiful!  A tomb, and no HOME."
+msgstr "¡Que lamentable! Una tumba, y ningún HOGAR."
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       # No HOME set? Note: this should never happen again.
+#.       [[ -z $HOME ]] && {
+#.           _warning "How pitiful!  A tomb, and no HOME."
+#.           return 1 }
+#.   
+#.       [[ -z $mnt || ! -d $mnt ]] && {
+#. >         _warning "Cannot exec bind hooks without a mounted tomb."
+#.           return 1 }
+#.   
+#.       [[ -r "$mnt/bind-hooks" ]] || {
+#.           _verbose "bind-hooks not found in ::1 mount point::" $mnt
+#: tomb:1853
+msgid "Cannot exec bind hooks without a mounted tomb."
+msgstr "No se pueden ejecutar los bind-hooks sin una tumba montada."
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       # better parsing for bind hooks checks for two separated words on
+#.       # each line, using zsh word separator array subscript
+#.       _bindhooks="${mapfile[${mnt}/bind-hooks]}"
+#.       for h in ${(f)_bindhooks}; do
+#.           s="${h[(w)1]}"
+#.           d="${h[(w)2]}"
+#. >         [[ "$s" = "" ]] && { _warning "bind-hooks file is broken"; return 1 }
+#.           [[ "$d" = "" ]] && { _warning "bind-hooks file is broken"; return 1 }
+#.           maps+=($s $d)
+#.           _verbose "bind-hook found: $s -> $d"
+#.       done
+#: tomb:1869
 msgid "bind-hooks file is broken"
 msgstr "El fichero de bind-hooks está roto."
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.           _verbose "bind-hook found: $s -> $d"
+#.       done
+#.       unset _bindhooks
+#.   
+#.       for dir in ${(k)maps}; do
+#.           [[ "${dir[1]}" == "/" || "${dir[1,2]}" == ".." ]] && {
+#. >             _warning "bind-hooks map format: local/to/tomb local/to/\$HOME"
+#.               continue }
+#.   
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#: tomb:1878
 msgid "bind-hooks map format: local/to/tomb local/to/$HOME"
 msgstr "Formato de mapeo de los bind-hooks: local/to/tomb local/to/$HOME"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       for dir in ${(k)maps}; do
+#.           [[ "${dir[1]}" == "/" || "${dir[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME"
+#.               continue }
+#.   
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#. >             _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#: tomb:1882
 msgid "bind-hooks map format: local/to/tomb local/to/$HOME.  Rolling back"
-msgstr "Formato de mapeo de los bind-hooks: local/to/tomb local/to/HOME. Restaurando"
-
-#: warning
+msgstr ""
+"Formato de mapeo de los bind-hooks: local/to/tomb local/to/HOME. Restaurando"
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#. >             _warning "bind-hook target not existent, skipping ::1 home::/::2 subdir::" $HOME ${maps[$dir]}
+#.           elif [[ ! -r "$mnt/$dir" ]]; then
+#.               _warning "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::" $mnt $dir
+#.           else
+#.               sudo mount -o bind,$MOUNTOPTS $mnt/$dir $HOME/${maps[$dir]} #: tomb:1887
 msgid "bind-hook target not existent, skipping ::1 home::/::2 subdir::"
-msgstr "No existe un objetivo para el bind-hook, omitiendo ::1 hogar::/::2 directorio::"
-
-#: warning
-msgid "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::"
-msgstr "No se ha encontrado la fuente para el bind-hook en la tumba, omitiendo ::1 punto de montaje::/::2 directorio::"
-
-#: failure
+msgstr ""
+"No existe un objetivo para el bind-hook, omitiendo ::1 hogar::/::2 "
+"directorio::"
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#.               _warning "bind-hook target not existent, skipping ::1 home::/::2 subdir::" $HOME ${maps[$dir]}
+#.           elif [[ ! -r "$mnt/$dir" ]]; then
+#. >             _warning "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::" $mnt $dir
+#.           else
+#.               sudo mount -o bind,$MOUNTOPTS $mnt/$dir $HOME/${maps[$dir]} #.                   && mounted+=("$HOME/${maps[$dir]}")
+#.           fi
+#: tomb:1889
+msgid ""
+"bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::"
+msgstr ""
+"No se ha encontrado la fuente para el bind-hook en la tumba, omitiendo ::1 "
+"punto de montaje::/::2 directorio::"
+
+#. Fold: Open
+#. Function: exec_safe_post_hooks
+#.
+#. Code sample:
+#.       # Only run if post-hooks has the executable bit set
+#.       [[ -x $mnt/post-hooks ]] || return
+#.   
+#.       # If the file starts with a shebang, run it.
+#.       cat $mnt/post-hooks | head -n1 | grep '^#!\s*/' &> /dev/null
+#.       [[ $? == 0 ]] && {
+#. >         _success "Post hooks found, executing as user ::1 user name::." $USERNAME
+#.           $mnt/post-hooks $act $mnt
+#.       }
+#.   }
+#.   
+#: tomb:1917
+msgid "Post hooks found, executing as user ::1 user name::."
+msgstr ""
+"Se han encontrado post-hooks, se ejecutarán con el usuario ::1 usuario::."
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.       local tombname tombmount tombfs tombfsopts tombloop
+#.       local ts tombtot tombused tombavail tombpercent tombp tombsince
+#.       local tombtty tombhost tombuid tombuser
+#.       # list all open tombs
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#. >         _failure "I can't see any ::1 status:: tomb, may they all rest in peace." ${1:-open} }
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#: tomb:1936
 msgid "I can't see any ::1 status:: tomb, may they all rest in peace."
 msgstr "No puedo ver ninguna tumba ::1 estado::. Que todos descansen en paz."
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.                       tombuser="${ee[(ws@:@)1]}" }
+#.               done
+#.           }
+#.   
+#.           { option_is_set --get-mountpoint } && { print $tombmount; continue }
+#.   
+#. >         _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#.           _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#: tomb:1969
 msgid "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::"
-msgstr "Se ha abierto ::1 nombre:: en ::2 punto de montaje:: usando ::3 opciones::"
-
-#: message
+msgstr ""
+"Se ha abierto ::1 nombre:: en ::2 punto de montaje:: usando ::3 opciones::"
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.   
+#.           { option_is_set --get-mountpoint } && { print $tombmount; continue }
+#.   
+#.           _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#. >         _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#.               _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#: tomb:1972
 msgid "::1 tombname:: open since ::2 tombsince::"
 msgstr "::1 nombre:: abierto desde ::2 cuando::"
 
-#: message
-msgid "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::"
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.           _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#.           _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#. >             _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#.           }
+#.   
+#.           _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #: tomb:1975
+msgid ""
+"::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::"
 msgstr "::1 nombre:: abierto por ::2 usuario:: desde ::3 tty:: en ::4 host::"
 
-#: message
-msgid "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free "
-msgstr "::1 nombre:: de tamaño ::2 total:: del que ::3 usado:: (::5 porcentaje::%) se usa y ::4 disponible:: está libre "
-
-#: warning
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#.               _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#.           }
+#.   
+#. >         _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #.               $tombname $tombtot $tombused $tombavail $tombpercent
+#.   
+#.           [[ ${tombp} -ge 90 ]] && {
+#.               _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#: tomb:1979
+msgid ""
+"::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::"
+"%) is used: ::4 tombavail:: free "
+msgstr ""
+"::1 nombre:: de tamaño ::2 total:: del que ::3 usado:: (::5 porcentaje::%) "
+"se usa y ::4 disponible:: está libre "
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.           }
+#.   
+#.           _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #.               $tombname $tombtot $tombused $tombavail $tombpercent
+#.   
+#.           [[ ${tombp} -ge 90 ]] && {
+#. >             _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#.           }
+#.   
+#.           # Now check hooks
+#.           mounted_hooks=(`list_tomb_binds $tombname`)
+#: tomb:1983
 msgid "::1 tombname:: warning: your tomb is almost full!"
 msgstr "Advertencia: ¡tu tumba (::1 nombre::) está casi llena!"
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.               _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#.           }
+#.   
+#.           # Now check hooks
+#.           mounted_hooks=(`list_tomb_binds $tombname`)
+#.           for h in ${mounted_hooks}; do
+#. >             _message "::1 tombname:: hooks ::2 hookname:: on ::3 hookdest::" #.                   $tombname "`basename ${h[(ws:;:)1]}`" ${h[(ws:;:)2]}
+#.           done
+#.       done
+#.   }
+#: tomb:1989
 msgid "::1 tombname:: hooks ::2 hookname:: on ::3 hookdest::"
 msgstr "::1 tumba:: englaza ::2 hook:: en ::3 destino::"
 
-#: failure
+#. Fold: List
+#. Function: list_tomb_binds
+#.
+#. Code sample:
+#.   # list_tomb_binds
+#.   # print out an array of mounted bind hooks (internal use)
+#.   # format is semi-colon separated list of attributes
+#.   # needs an argument: name of tomb whose hooks belong
+#.   list_tomb_binds() {
+#.       [[ -z "$1" ]] && {
+#. >         _failure "Internal error: list_tomb_binds called without argument." }
+#.   
+#.       # list bind hooks on util-linux 2.20 (Debian 7)
+#.       mount -l #.           | awk -vtomb="$1" '
+#: tomb:2044
 msgid "Internal error: list_tomb_binds called without argument."
 msgstr "Error interno: se ha llamado a list_tomb_binds sin argumento."
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   # {{{ Index and search
+#.   
+#.   # index files in all tombs for search
+#.   # $1 is optional, to specify a tomb
+#.   index_tombs() {
+#.       { command -v updatedb 1>/dev/null 2>/dev/null } || {
+#. >         _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#.           _warning "Cannot use GNU findutils for index/search commands." }
+#: tomb:2076
 msgid "Cannot index tombs on this system: updatedb (mlocate) not installed."
-msgstr "No se pueden indexar la tumbas en este sistema: updatedb (mlocate) no está instalado."
-
-#: warning
+msgstr ""
+"No se pueden indexar la tumbas en este sistema: updatedb (mlocate) no está "
+"instalado."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   index_tombs() {
+#.       { command -v updatedb 1>/dev/null 2>/dev/null } || {
+#.           _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#. >         _warning "Cannot use GNU findutils for index/search commands." }
+#.       [[ "$updatedbver" =~ "mlocate" ]] || {
+#.           _failure "Index command needs 'mlocate' to be installed." }
+#.   
+#.       _verbose "$updatedbver"
+#: tomb:2080
 msgid "Cannot use GNU findutils for index/search commands."
 msgstr "No se puede usar GNU findutils para los comandos index/search."
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#.           _warning "Cannot use GNU findutils for index/search commands." }
+#.       [[ "$updatedbver" =~ "mlocate" ]] || {
+#. >         _failure "Index command needs 'mlocate' to be installed." }
+#.   
+#.       _verbose "$updatedbver"
+#.   
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#: tomb:2082
 msgid "Index command needs 'mlocate' to be installed."
 msgstr "El comando index necesita que 'mlocate' esté instalado."
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.       _verbose "$updatedbver"
+#.   
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#. >             _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#.       _success "Creating and updating search indexes."
+#: tomb:2090
 msgid "There seems to be no open tomb engraved as [::1::]"
 msgstr "Parece que existe una tumba con el grabado [::1::]"
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#.               _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#. >         _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#.       _success "Creating and updating search indexes."
+#.   
+#.       # start the LibreOffice document converter if installed
+#: tomb:2092
+msgid "I can't see any open tomb, may they all rest in peace."
+msgstr "No puedo ver ninguna tumba abierta. Que todos descansen en paz."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#.               _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#. >     _success "Creating and updating search indexes."
+#.   
+#.       # start the LibreOffice document converter if installed
+#.       { command -v unoconv 1>/dev/null 2>/dev/null } && {
+#.           unoconv -l 2>/dev/null &
+#: tomb:2094
+msgid "Creating and updating search indexes."
+msgstr "Creando y  actualizando índices de búsqueda."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.noindex ]] && {
+#. >             _message "Skipping ::1 tomb name:: (.noindex found)." $tombname
+#.               continue }
+#.           _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#: tomb:2107
 msgid "Skipping ::1 tomb name:: (.noindex found)."
 msgstr "Omitiendo ::1 tumba:: (se ha econtrado .noindex)."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.noindex ]] && {
+#.               _message "Skipping ::1 tomb name:: (.noindex found)." $tombname
+#.               continue }
+#. >         _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#: tomb:2109
 msgid "Indexing ::1 tomb name:: filenames..."
 msgstr "Indexando los nombre de fichero de ::1 tumba::..."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.               continue }
+#.           _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#. >             _message "Indexing ::1 tomb name:: contents..." $tombname
+#.               [[ -r ${tombmount}/.swishrc ]] || {
+#.                   _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc
+#.                   cat <<EOF > ${tombmount}/.swishrc
+#.   # index directives
+#: tomb:2114
 msgid "Indexing ::1 tomb name:: contents..."
 msgstr "Indexando el contenido de ::1 tumba::..."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#.               _message "Indexing ::1 tomb name:: contents..." $tombname
+#.               [[ -r ${tombmount}/.swishrc ]] || {
+#. >                 _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc
+#.                   cat <<EOF > ${tombmount}/.swishrc
+#.   # index directives
+#.   DefaultContents TXT*
+#.   IndexDir $tombmount
+#: tomb:2116
+msgid "Generating a new swish-e configuration file: ::1 swish conf::"
+msgstr "Generando un nuevo fichero de configuración de swish-e: ::1 conf::"
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.               }
+#.   
+#.               swish-e -c ${tombmount}/.swishrc -S fs -v3
+#.   
+#.           }
+#.   
+#. >         _message "Search index updated."
+#.       done
+#.   }
+#.   search_tombs() {
+#.       { command -v locate 1>/dev/null 2>/dev/null } || {
+#: tomb:2190
+msgid "Search index updated."
+msgstr "Índice de búsqueda actualizado."
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.   
+#.       # list all open tombs
+#.       mounted_tombs=(`list_tomb_mounts`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#. >     _success "Searching for: ::1::" ${(f)@}
+#.       for t in ${mounted_tombs}; do
+#.           _verbose "Checking for index: ::1::" ${t}
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#: tomb:2210
+msgid "Searching for: ::1::"
+msgstr "Buscando ::1::"
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.           _verbose "Checking for index: ::1::" ${t}
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.updatedb ]] && {
+#.               # Use mlocate to search hits on filenames
+#. >             _message "Searching filenames in tomb ::1 tomb name::" $tombname
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#.               _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#: tomb:2218
 msgid "Searching filenames in tomb ::1 tomb name::"
 msgstr "Buscando nombres de fichero en la tumba ::1 tumba::"
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.updatedb ]] && {
+#.               # Use mlocate to search hits on filenames
+#.               _message "Searching filenames in tomb ::1 tomb name::" $tombname
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#. >             _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#: tomb:2220
 msgid "Matches found: ::1 matches::"
 msgstr "Se han encontrado coindicencias: ::1::"
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#.               _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#. >                 _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#: tomb:2225
 msgid "Searching contents in tomb ::1 tomb name::"
 msgstr "Buscando contenido en la tumba ::1 tumba::"
 
-#: warning
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#. >             _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#.       done
+#.       _message "Search completed."
+#.   }
+#: tomb:2228
 msgid "Skipping tomb ::1 tomb name::: not indexed."
 msgstr "Omitiendo tumba ::1 tomb name::: no se ha indexado."
 
-#: message
-msgid "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes."
-msgstr "Se ha ordenado cambiar el tamaño de la tumba ::1 tumba:: a ::2 tamaño:: megabytes."
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#. >             _warning "Run 'tomb index' to create indexes." }
+#.       done
+#.       _message "Search completed."
+#.   }
+#.   
+#: tomb:2229
+msgid "Run 'tomb index' to create indexes."
+msgstr "Corre 'tomb index' para crear los índices."
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#.       done
+#. >     _message "Search completed."
+#.   }
+#.   
+#.   # }}} - Index and search
+#.   
+#: tomb:2231
+msgid "Search completed."
+msgstr "Búsqueda completada."
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   # {{{ Resize
+#.   
+#.   # resize tomb file size
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#. >     _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#: tomb:2242
+msgid "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes."
+msgstr ""
+"Se ha ordenado cambiar el tamaño de la tumba ::1 tumba:: a ::2 tamaño:: "
+"megabytes."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   # resize tomb file size
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#.       _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#. >     [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#: tomb:2244
+msgid "No tomb name specified for resizing."
+msgstr ""
+"No se ha especificado el nombre de la tumba a la que cambiar el tamaño."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#.       _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#. >     [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#.           _failure "Aborting operations: new size was not specified, use -s" }
+#: tomb:2245
 msgid "Cannot find ::1::"
 msgstr "No se puede encontrar ::1::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#. >         _failure "Aborting operations: new size was not specified, use -s" }
+#.   
+#.       is_valid_tomb $tombpath        # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#: tomb:2249
 msgid "Aborting operations: new size was not specified, use -s"
 msgstr "Abortando operaciones: no se ha especificado un nuevo tamaño, usa -s"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       local oldtombsize=$(( `stat -c %s "$TOMBPATH" 2>/dev/null` / 1048576 ))
+#.       local mounted_tomb=`mount -l |
+#.           awk -vtomb="[$TOMBNAME]" '/^\/dev\/mapper\/tomb/ { if($7==tomb) print $1 }'`
+#.   
+#.       # Tomb must not be open
+#.       [[ -z "$mounted_tomb" ]] || {
+#. >         _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#: tomb:2261
 msgid "Please close the tomb ::1 tomb name:: before trying to resize it."
 msgstr "Por favor, cierra la tumba ::1 nombre:: antes de cambiar su tamaño."
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   
+#.       # Tomb must not be open
+#.       [[ -z "$mounted_tomb" ]] || {
+#.           _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#. >         _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#.       [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#: tomb:2264
 msgid "You must specify the new size of ::1 tomb name::"
 msgstr "Debes especificar el nuevo tamaño de ::1 tumba::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       [[ -z "$mounted_tomb" ]] || {
+#.           _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#. >     [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#.           _failure "The new size must be greater then old tomb size." }
+#.   
+#: tomb:2266
+msgid "Size is not an integer."
+msgstr "El tamaño no es un número entero."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#.       [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#. >         _failure "The new size must be greater then old tomb size." }
+#.   
+#.       delta="$(( $newtombsize - $oldtombsize ))"
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $newtombsize
+#: tomb:2269
+msgid "The new size must be greater then old tomb size."
+msgstr "El nuevo tamaño debe ser mayor que el viejo tamaño de la tumba."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $newtombsize
+#.   
+#.       _verbose "Data dump using ::1:: from /dev/urandom" ${DD[1]}
+#.       ${=DD} if=/dev/urandom bs=1048576 count=${delta} >> $TOMBPATH
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Error creating the extra resize ::1 size::, operation aborted." $tmp_resize }
+#.   
+#.       { option_is_set --tomb-pwd } && {
+#.           tomb_pwd="`option_value --tomb-pwd`"
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_pwd
+#: tomb:2279
 msgid "Error creating the extra resize ::1 size::, operation aborted."
 msgstr "Error al crear el espacio extra ::1 tamaño::, operación abortada."
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       mapper="tomb.$TOMBNAME.$mapdate.$(basename $nstloop)"
+#.   
+#.       _cryptsetup luksOpen ${nstloop} ${mapper} || {
+#.           _failure "Failure mounting the encrypted file." }
+#.   
+#.       sudo cryptsetup resize "${mapper}" || {
+#. >         _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#.           _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#: tomb:2300
 msgid "cryptsetup failed to resize ::1 mapper::"
 msgstr "cryptsetup ha fallado al cambiar el tamaño de ::1 mapper::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.           _failure "Failure mounting the encrypted file." }
+#.   
+#.       sudo cryptsetup resize "${mapper}" || {
+#.           _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#. >         _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#.       sudo resize2fs /dev/mapper/${mapper} || {
+#.           _failure "resize2fs failed to resize ::1 mapper::" $mapper }
+#.   
+#: tomb:2303
 msgid "e2fsck failed to check ::1 mapper::"
 msgstr "e2fsck ha fallado al comprobar ::1::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.           _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#.           _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#.       sudo resize2fs /dev/mapper/${mapper} || {
+#. >         _failure "resize2fs failed to resize ::1 mapper::" $mapper }
+#.   
+#.       # close and free the loop device
+#.       sudo cryptsetup luksClose "${mapper}"
+#.   
+#: tomb:2306
 msgid "resize2fs failed to resize ::1 mapper::"
 msgstr "resize2fs ha fallado al cambiar el tamaño de ::1::"
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           mounted_tombs=(`list_tomb_mounts`)
+#.       else
+#.           mounted_tombs=(`list_tomb_mounts $1`)
+#.       fi
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#. >         _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#.           _warning "Too many tombs mounted, please specify one (see tomb list)"
+#.           _warning "or issue the command 'tomb close all' to close them all."
+#: tomb:2330
+msgid "There is no open tomb to be closed."
+msgstr "No hay ninguna tumba abierta que cerrar."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.       fi
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#. >         _warning "Too many tombs mounted, please specify one (see tomb list)"
+#.           _warning "or issue the command 'tomb close all' to close them all."
+#.           _failure "Operation aborted." }
+#.   
+#.       for t in ${mounted_tombs}; do
+#: tomb:2333
+msgid "Too many tombs mounted, please specify one (see tomb list)"
+msgstr "Demasiadas tumbas abietas, por favor, especifica una (véase tomb list)"
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#.           _warning "Too many tombs mounted, please specify one (see tomb list)"
+#. >         _warning "or issue the command 'tomb close all' to close them all."
+#.           _failure "Operation aborted." }
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#: tomb:2334
+msgid "or issue the command 'tomb close all' to close them all."
+msgstr "o utiliza el comando 'tomb close all' para cerrarlas todas."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           _verbose "Name: ::1 tomb name::" $tombname
+#.           _verbose "Mount: ::1 mount point::" $tombmount
+#.           _verbose "Mapper: ::1 mapper::" $mapper
+#.   
+#.           [[ -e "$mapper" ]] && {
+#. >             _warning "Tomb not found: ::1 tomb file::" $1
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#: tomb:2350
 msgid "Tomb not found: ::1 tomb file::"
 msgstr "No se ha encontrado la tumba: ::1 tumba::"
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           _verbose "Name: ::1 tomb name::" $tombname
+#.           _verbose "Mount: ::1 mount point::" $tombmount
+#.           _verbose "Mapper: ::1 mapper::" $mapper
+#.   
+#.           [[ -e "$mapper" ]] && {
+#.               _warning "Tomb not found: ::1 tomb file::" $1
+#. >             _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #: tomb:2351
+msgid "Please specify an existing tomb."
+msgstr "Por favor, especifica una tumba existente."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           [[ -e "$mapper" ]] && {
+#.               _warning "Tomb not found: ::1 tomb file::" $1
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#. >             _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#: tomb:2355
+msgid "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::"
+msgstr ""
+"Cerrando de un portazo la tumba ::1 nombre:: montada en ::2 punto de "
+"montaje::."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#. >             _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#.               _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #: tomb:2357
+msgid "Kill all processes busy inside the tomb."
+msgstr "Mata todos los procesos ocupados dentro de la tumba."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#. >                 _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#.               _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount }
+#.   
+#: tomb:2359
 msgid "Cannot slam the tomb ::1 tomb name::"
 msgstr "No se puede cerrar de un portazo la tumba ::1 tumba::"
 
-#: message
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#. >             _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount }
+#.   
+#.           # check if there are binded dirs and close them
+#.           bind_tombs=(`list_tomb_binds $tombname`)
+#: tomb:2361
 msgid "Closing tomb ::1 tomb name:: mounted on ::2 mount point::"
 msgstr "Cerrando la tumba ::1 tumba:: montada en ::2 punto de montaje::"
 
-#: message
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # check if there are binded dirs and close them
+#.           bind_tombs=(`list_tomb_binds $tombname`)
+#.           for b in ${bind_tombs}; do
+#.               bind_mapper="${b[(ws:;:)1]}"
+#.               bind_mount="${b[(ws:;:)2]}"
+#. >             _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#: tomb:2369
 msgid "Closing tomb bind hook: ::1 hook::"
 msgstr "Cerrando el bind-hook: ::1::"
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           for b in ${bind_tombs}; do
+#.               bind_mapper="${b[(ws:;:)1]}"
+#.               bind_mount="${b[(ws:;:)2]}"
+#.               _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#. >                     _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#.                           _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#: tomb:2372
+msgid "Slamming tomb: killing all processes using this hook."
+msgstr ""
+"Cerrando tumba de un portazo: matando todos los procesos que usan este hook."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#. >                         _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#.                   } || {
+#.                       _warning "Tomb bind hook ::1 hook:: is busy, cannot close tomb." $bind_mount }
+#.               }
+#: tomb:2375
 msgid "Cannot slam the bind hook ::1 hook::"
 msgstr "No se puede cerrar de un portazo el bind-hook ::1::"
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#.                           _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#.                   } || {
+#. >                     _warning "Tomb bind hook ::1 hook:: is busy, cannot close tomb." $bind_mount }
+#.               }
+#.           done
+#.   
+#.           # Execute post-hooks for eventual cleanup
+#: tomb:2378
 msgid "Tomb bind hook ::1 hook:: is busy, cannot close tomb."
 msgstr "El bind-hook ::1:: está ocupado, no se puede cerrar la tumba."
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           # Execute post-hooks for eventual cleanup
+#.           { option_is_set -n } || {
+#.               exec_safe_post_hooks ${tombmount%%/} close }
+#.   
+#.           _verbose "Performing umount of ::1 mount point::" $tombmount
+#.           sudo umount ${tombmount}
+#. >         [[ $? = 0 ]] || { _warning "Tomb is busy, cannot umount!"; return 1 }
+#.   
+#.           # If we used a default mountpoint and is now empty, delete it
+#.           [[ "$tombmount" == "/media/$tombname.tomb" ]] && { rmdir $tombmount }
+#.   
+#: tomb:2388
+msgid "Tomb is busy, cannot umount!"
+msgstr "La tumba está ocupada, ¡no se puede desmontar!"
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # If we used a default mountpoint and is now empty, delete it
+#.           [[ "$tombmount" == "/media/$tombname.tomb" ]] && { rmdir $tombmount }
+#.   
+#.           sudo cryptsetup luksClose $mapper
+#.           [[ $? == 0 ]] || {
+#. >             _failure "Error occurred in cryptsetup luksClose ::1 mapper::" $mapper }
+#.   
+#.           # Normally the loopback device is detached when unused
+#.           [[ -e "/dev/$tombloop" ]] && sudo losetup -d "/dev/$tombloop"
+#.           [[ $? = 0 ]] || {
+#: tomb:2395
 msgid "Error occurred in cryptsetup luksClose ::1 mapper::"
 msgstr "Ha ocurrido un error en cryptsetup luksClose ::1::"
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # Normally the loopback device is detached when unused
+#.           [[ -e "/dev/$tombloop" ]] && sudo losetup -d "/dev/$tombloop"
+#.           [[ $? = 0 ]] || {
+#.               _verbose "/dev/$tombloop was already closed." }
+#.   
+#. >         _success "Tomb ::1 tomb name:: closed: your bones will rest in peace." $tombname
+#.   
+#.       done # loop across mounted tombs
+#.   
+#.       return 0
+#: tomb:2402
+msgid "Tomb ::1 tomb name:: closed: your bones will rest in peace."
+msgstr "Tumba ::1 tumba:: cerrada: tu huesos descansarán en paz."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               return 1
+#.           fi
+#.           return 0
+#.       fi
+#.       unset discardme
+#.       if ! zparseopts -M -E -D -Adiscardme ${every_opts}; then
+#. >         _failure "Error parsing."
+#.           return 127
+#.       fi
+#.       unset discardme
+#.       subcommand=$1
+#: tomb:2522
+msgid "Error parsing."
+msgstr "Error al parsear."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       subcommand=$1
+#.       if [[ -z $subcommand ]]; then
+#.           subcommand="__default"
+#.       fi
+#.   
+#.       if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
+#. >         _warning "There's no such command \"::1 subcommand::\"." $subcommand
+#.           exitv=127 _failure "Please try -h for help."
+#.       fi
+#.       argv=("${(@)oldstar}")
+#.       unset oldstar
+#: tomb:2532
 msgid "There's no such command \"::1 subcommand::\"."
 msgstr "No existe el comando \"::1 comando::\"."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       if [[ -z $subcommand ]]; then
+#.           subcommand="__default"
+#.       fi
+#.   
+#.       if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
+#.           _warning "There's no such command \"::1 subcommand::\"." $subcommand
+#. >         exitv=127 _failure "Please try -h for help."
+#.       fi
+#.       argv=("${(@)oldstar}")
+#.       unset oldstar
+#.   
+#: tomb:2533
 msgid "Please try -h for help."
 msgstr "Prueba -h para obtener ayuda."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       # zsh magic: ${=string} will split to multiple arguments when spaces occur
+#.       set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
+#.       # if there is no option, we don't need parsing
+#.       if [[ -n $cmd_opts ]]; then
+#.           zparseopts -M -E -D -AOPTS ${cmd_opts}
+#.           if [[ $? != 0 ]]; then
+#. >             _warning "Some error occurred during option processing."
+#.               exitv=127 _failure "See \"tomb help\" for more info."
+#.           fi
+#.       fi
+#.       #build PARAM (array of arguments) and check if there are unrecognized options
+#: tomb:2545
+msgid "Some error occurred during option processing."
+msgstr "Ha ocurrido algún error al procesar las opciones."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
+#.       # if there is no option, we don't need parsing
+#.       if [[ -n $cmd_opts ]]; then
+#.           zparseopts -M -E -D -AOPTS ${cmd_opts}
+#.           if [[ $? != 0 ]]; then
+#.               _warning "Some error occurred during option processing."
+#. >             exitv=127 _failure "See \"tomb help\" for more info."
+#.           fi
+#.       fi
+#.       #build PARAM (array of arguments) and check if there are unrecognized options
+#.       ok=0
+#: tomb:2546
 msgid "See \"tomb help\" for more info."
 msgstr "Véase \"tomb help\" par más información."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       for arg in $*; do
+#.           if [[ $arg == '--' || $arg == '-' ]]; then
+#.               ok=1
+#.               continue #it shouldnt be appended to PARAM
+#.           elif [[ $arg[1] == '-'  ]]; then
+#.               if [[ $ok == 0 ]]; then
+#. >                 exitv=127 _failure "Unrecognized option ::1 arg:: for subcommand ::2 subcommand::" $arg $subcommand
+#.               fi
+#.           fi
+#.           PARAM+=$arg
+#.       done
+#: tomb:2558
 msgid "Unrecognized option ::1 arg:: for subcommand ::2 subcommand::"
-msgstr "No se reconoce la opción ::1 argumento:: para el subcomando ::2 subcomando::"
+msgstr ""
+"No se reconoce la opción ::1 argumento:: para el subcomando ::2 subcomando::"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       # Use colors unless told not to
+#.       { ! option_is_set --no-color } && { autoload -Uz colors && colors }
+#.       # Some options are only available during insecure mode
+#.       { ! option_is_set --unsafe } && {
+#.           for opt in --tomb-pwd --use-urandom --tomb-old-pwd; do
+#.               { option_is_set $opt } && {
+#. >                 exitv=127 _failure "You specified option ::1 option::, which is DANGEROUS and should only be used for testing\nIf you really want so, add --unsafe" $opt }
+#.           done
+#.       }
+#.       # read -t or --tmp flags to set a custom temporary directory
+#.       option_is_set --tmp && TMPPREFIX=$(option_value --tmp)
+#: tomb:2574
+msgid ""
+"You specified option ::1 option::, which is DANGEROUS and should only be "
+"used for testing\n"
+"If you really want so, add --unsafe"
+msgstr ""
+"Has especificado la opción ::1 opción::, que es PELIGROSA y debería usarse "
+"sólo en testeo\n"
+"Si estás seguro, añade --unsafe"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           help)
+#.               usage
+#.               ;;
+#.   
+#.           # DEPRECATION notice (leave here as 'create' is still present in old docs)
+#.           create)
+#. >             _warning "The create command is deprecated, please use dig, forge and lock instead."
+#.               _warning "For more informations see Tomb's manual page (man tomb)."
+#.               _failure "Operation aborted."
+#.               ;;
+#.   
+#: tomb:2608
+msgid ""
+"The create command is deprecated, please use dig, forge and lock instead."
+msgstr ""
+"El comando create está obsoleto, por favor, usa dig, forge y lock en su "
+"lugar."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               usage
+#.               ;;
+#.   
+#.           # DEPRECATION notice (leave here as 'create' is still present in old docs)
+#.           create)
+#.               _warning "The create command is deprecated, please use dig, forge and lock instead."
+#. >             _warning "For more informations see Tomb's manual page (man tomb)."
+#.               _failure "Operation aborted."
+#.               ;;
+#.   
+#.           # CREATE Step 1: dig -s NN file.tomb
+#: tomb:2609
+msgid "For more informations see Tomb's manual page (man tomb)."
+msgstr "Para más información mira el manual de Tomb (man tomb)."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               umount_tomb $PARAM[1]
+#.               ;;
+#.   
+#.           # Grow tomb's size
+#.           resize)
+#.               [[ $RESIZER == 0 ]] && {
+#. >                 _failure "Resize2fs not installed: cannot resize tombs." }
+#.               resize_tomb $PARAM[1]
+#.               ;;
+#.   
+#.           ## Contents manipulation
+#: tomb:2643
 msgid "Resize2fs not installed: cannot resize tombs."
-msgstr "Resize2fs no está instalado: no se puede cambiar el tamaño de las tumbas."
-
-#: failure
+msgstr ""
+"Resize2fs no está instalado: no se puede cambiar el tamaño de las tumbas."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           ## Locking operations
+#.   
+#.           # Export key to QR Code
+#.           engrave)
+#.               [[ $QRENCODE == 0 ]] && {
+#. >                 _failure "QREncode not installed: cannot engrave keys on paper." }
+#.               engrave_key ${=PARAM}
+#.               ;;
+#.   
+#.           # Change password on existing key
+#: tomb:2669
 msgid "QREncode not installed: cannot engrave keys on paper."
 msgstr "QREncode no está instalado: no se pueden grabar las llave en papel."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               change_tomb_key ${=PARAM}
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: hide key inside an image
+#.           bury)
+#.               [[ $STEGHIDE == 0 ]] && {
+#. >                 _failure "Steghide not installed: cannot bury keys into images." }
+#.               bury_key $PARAM[1]
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: read key hidden in an image
+#: tomb:2686
 msgid "Steghide not installed: cannot bury keys into images."
-msgstr "Steghide no está instalado: no se pueden enterrar llaves en las imágenes."
-
-#: failure
+msgstr ""
+"Steghide no está instalado: no se pueden enterrar llaves en las imágenes."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               bury_key $PARAM[1]
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: read key hidden in an image
+#.           exhume)
+#.               [[ $STEGHIDE == 0 ]] && {
+#. >                 _failure "Steghide not installed: cannot exhume keys from images." }
+#.               exhume_key $PARAM[1]
+#.               ;;
+#.   
+#.           ## Internal commands useful to developers
+#: tomb:2693
 msgid "Steghide not installed: cannot exhume keys from images."
-msgstr "Setghide no está instalado: no se pueden exhumar llaves de las imágenes."
-
-#: print
+msgstr ""
+"Setghide no está instalado: no se pueden exhumar llaves de las imágenes."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           # Ask user for a password interactively
+#.           askpass)    ask_password $PARAM[1] $PARAM[2] ;;
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#. >             _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#: tomb:2707
 msgid "Tomb ::1 version:: - a strong and gentle undertaker for your secrets"
 msgstr "Tomb ::1 versión:: - un enterrador fuerte y amable para tus secretos"
 
-#: print
-msgid " Copyright (C) 2007-2014 Dyne.org Foundation, License GNU GPL v3+"
-msgstr " Copyright (C) 2007-2014 Fundación Dyne.org, Licencia GNU GPL v3+"
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           askpass)    ask_password $PARAM[1] $PARAM[2] ;;
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#. >             _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#: tomb:2709
+msgid " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#. >             _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#: tomb:2710
 msgid " This is free software: you are free to change and redistribute it"
 msgstr " Esto es software libre: eres libre de modificarlo y redistribuirlo"
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#. >             _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#: tomb:2711
+msgid " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+msgstr ""
+" Para encontrar el código fuente más reciente visita <http://dyne.org/"
+"software/tomb>"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#. >                 _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#: tomb:2716
 msgid " This source code is distributed in the hope that it will be useful,"
 msgstr " Este código fuente se distribuye con la esperanza de que sea util,"
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#. >                 _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#: tomb:2717
 msgid " but WITHOUT ANY WARRANTY; without even the implied warranty of"
 msgstr " pero SIN NINGUNA GARANTÍA; ni siquiera la garantía tácita de"
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#. >                 _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#.                   _print "System utils:"
+#: tomb:2718
 msgid " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 msgstr " MERCANTIBILIDAD or APTITUD PARA UN PROPÓSITO PARTICULAR."
 
-#: print
-msgid "System utils:"
-msgstr "Utilidades del sistema:"
-
-#: warning
-msgid "Command \"::1 subcommand::\" not recognized."
-msgstr "No se ha reconocido el commando \"::1 comando::\"."
-
-#: print
-msgid " passwd  change the password of a KEY (needs old pass)"
-msgstr " passwd  cambia la contraseña de la LLAVE (necesita la contraseña vieja)"
-
-#: print
-msgid " setkey  change the KEY locking a TOMB (needs old key and pass)"
-msgstr " setkey  cambia la LLAVE que cierra la TUMBA (necesita la contraseña y llave viejas)"
-
-#: print
-msgid " // Backup on paper:"
-msgstr " // Copia de seguridad en papel:"
-
-#: print
-msgid " // Steganography:"
-msgstr " // Esteganografía:"
-
-#: print
-msgid " bury    hide a KEY inside a JPEG image (for use with -k)"
-msgstr " bury   esconde la LLAVE dentro de una imagen JPEG (para usarla con -k)"
-
-#: print
-msgid " exhume  extract a KEY from a JPEG image (prints to stdout)"
-msgstr " exhume extraer una LLAVE de una imagen JPEG (escribe en stdout)"
-
-#: failure
-msgid "Exhume failed, no image specified"
-msgstr "La exhumación ha fallado, no se ha especificado una imagen"
-
-#: print
-msgid " For the latest sourcecode go to <http://dyne.org/software/tomb>"
-msgstr " Para encontrar el código fuente más reciente visita <http://dyne.org/software/tomb>"
-
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#. >                 _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#.                   _print "System utils:"
+#.                   _print "\000"
+#.                   cat <<EOF
+#: tomb:2720
 msgid " When in need please refer to <http://dyne.org/support>."
 msgstr " Cuando sea necesario por favor dirígete a <http://dyne.org/support>."
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#. >                 _print "System utils:"
+#.                   _print "\000"
+#.                   cat <<EOF
+#.     `sudo -V | head -n1`
+#.     `cryptsetup --version`
+#: tomb:2722
+msgid "System utils:"
+msgstr "Utilidades del sistema:"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.     `cryptsetup --version`
+#.     `pinentry --version`
+#.     `gpg --version | head -n1` - key forging algorithms (GnuPG symmetric ciphers):
+#.     `list_gnupg_ciphers`
+#.   EOF
+#.                   _print "\000"
+#. >                 _print "Optional utils:"
+#.                   _print "\000"
+#.                   _list_optional_tools version
+#.                   return 0
+#.               }
+#: tomb:2732
 msgid "Optional utils:"
 msgstr "Utilidades opcionales:"
 
-#: failure
-msgid "Fatal error setting the permission umask for temporary files"
-msgstr "Error fatal al establecer el permiso umask para los ficheros temporales"
-
-#: failure
-msgid "Fatal error setting ownership on temporary file: ::1 temp file::"
-msgstr "Error fatal al establecer la posesión del fichero temporal ::1 fichero::"
-
-#: warning
-msgid "cleartext key from stdin selected: this is unsafe."
-msgstr "se ha seleccionado una clave en texto plano por la entrada estándar: esto es inseguro."
-
-#: failure
-msgid "please use --unsafe if you really want to do this."
-msgstr "por favor, usa --unsafe si estás seguro."
-
-#: warning
-msgid "received key in cleartext from stdin (unsafe mode)"
-msgstr "se ha recibido una clave en texto plano por la entrada estándar (modo inseguro)"
-
-#: failure
-msgid "You specified option ::1 option::, which is DANGEROUS and should only be used for testing\n"
-"If you really want so, add --unsafe"
-msgstr "Has especificado la opción ::1 opción::, que es PELIGROSA y debería usarse sólo en testeo\nSi estás seguro, añade --unsafe"
-
-#: failure
-msgid "Failing to identify the user who is calling us"
-msgstr "Falló la identificación del usuario que nos llama."
-
-#: failure
-msgid "Fatal error creating the temporary directory: ::1 temp dir::"
-msgstr "Error fatal al crear el directorio temporal ::1 directorio::"
-
-#: failure
-msgid "Someone is messing up with us trying to hijack temporary files."
-msgstr "Alguien está intentando secuestrar nuestros ficheros temporales."
-
-#: success
-msgid "All your swaps are belong to crypt.  Good."
-msgstr "Todas tus particiones de intercambio pertenecen a crypt. Bien."
-
-#: success
-msgid "Changing password for ::1 key file::"
-msgstr "Cambiando la contraseña para ::1 fichero::"
-
-#: success
-msgid "Your passphrase was successfully updated."
-msgstr "Tu contraseña ha sido actualizada con éxito."
-
-#: success
-msgid "Using KDF, iterations: ::1 microseconds::"
-msgstr "Usando KDF: ::1 microsegundos:: iteraciones"
-
-#: success
-msgid "Encoding key ::1 tomb key:: inside image ::2 image file::"
-msgstr "Codificando la llave ::1 llave:: en la imagen ::2 imagen::."
-
-#: success
-msgid "Tomb key encoded succesfully into image ::1 image file::"
-msgstr "Llave codificada con éxito en la imagen ::1 fichero::."
-
-#: success
-msgid "Key succesfully exhumed to ::1 key::."
-msgstr "Llave exhumada con éxito en ::1 llave::."
-
-#: success
-msgid "Rendering a printable QRCode for key: ::1 tomb key file::"
-msgstr "Creando un código QR imprimible para la llave ::1 fichero::."
-
-#: success
-msgid "Operation successful:"
-msgstr "Operación con éxito:"
-
-#: success
-msgid "Creating a new tomb in ::1 tomb path::"
-msgstr "Creando una nueva tumba en ::1 tumba::"
-
-#: success
-msgid "Done digging ::1 tomb name::"
-msgstr "Se ha terminado de cavar ::1 tumba::."
-
-#: success
-msgid "Choose the  password of your key: ::1 tomb key::"
-msgstr "Elige una contraseña para tu llave: ::1 llave::"
-
-#: success
-msgid "Your key is ready:"
-msgstr "Tu llave está lista:"
-
-#: success
-msgid "Locking ::1 tomb file:: with ::2 tomb key file::"
-msgstr "Asegurando ::1 tumba:: con ::2 llave::"
-
-#: success
-msgid "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::"
-msgstr "Tu tumba está lista en ::1 tumba:: y asegurada con la llave ::2 llave::"
-
-#: success
-msgid "Changing lock on tomb ::1 tomb name::"
-msgstr "Cambiando el candado en la tumba ::1 tumba::."
-
-#: success
-msgid "Succesfully changed key for tomb: ::1 tomb file::"
-msgstr "Se ha cambiado la clave con éxito para la tumba ::1 tumba::"
-
-#: success
-msgid "Opening ::1 tomb file:: on ::2 mount point::"
-msgstr "Abriendo ::1 tumba:: en ::2 punto de montaje::."
-
-#: success
-msgid "Success unlocking tomb ::1 tomb name::"
-msgstr "Se ha abierto el cerrojo de ::1 tumba:: con éxito."
-
-#: success
-msgid "Success opening ::1 tomb file:: on ::2 mount point::"
-msgstr "Se ha abierto ::1 tumba:: en ::2 punto de montaje:: con éxito."
-
-#: success
-msgid "Post hooks found, executing as user ::1 user name::."
-msgstr "Se han encontrado post-hooks, se ejecutarán con el usuario ::1 usuario::."
-
-#: success
-msgid "Creating and updating search indexes."
-msgstr "Creando y  actualizando índices de búsqueda."
-
-#: message
-msgid "Generating a new swish-e configuration file: ::1 swish conf::"
-msgstr "Generando un nuevo fichero de configuración de swish-e: ::1 conf::"
-
-#: success
-msgid "Searching for: ::1::"
-msgstr "Buscando ::1::"
-
-#: success
-msgid "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::"
-msgstr "Cerrando de un portazo la tumba ::1 nombre:: montada en ::2 punto de montaje::."
-
-#: success
-msgid "Slamming tomb: killing all processes using this hook."
-msgstr "Cerrando tumba de un portazo: matando todos los procesos que usan este hook."
-
-#: success
-msgid "Tomb ::1 tomb name:: closed: your bones will rest in peace."
-msgstr "Tumba ::1 tumba:: cerrada: tu huesos descansarán en paz."
-
-#: warning
-msgid "Pinentry error: ::1 error::"
-msgstr "Error de pinentry: ::1 error::"
-
-#: warning
-msgid "Empty password"
-msgstr "Contraseña vacia"
-
-#: failure
-msgid "Cannot find pinentry-curses and no DISPLAY detected."
-msgstr "No se puede encontrar pinentry-curses, y no se ha detectado DISPLAY."
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               }
+#.               usage
+#.               ;;
+#.   
+#.           # Reject unknown command and suggest help
+#.           *)
+#. >             _warning "Command \"::1 subcommand::\" not recognized." $subcommand
+#.               _message "Try -h for help."
+#.               return 1
+#.               ;;
+#.       esac
+#: tomb:2742
+msgid "Command \"::1 subcommand::\" not recognized."
+msgstr "No se ha reconocido el commando \"::1 comando::\"."
 
-#: warning
-msgid "Detected DISPLAY, but only pinentry-curses is found."
-msgstr "DISPLAY detectado, pero sólo se ha encontrado pinentry-curses."
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               usage
+#.               ;;
+#.   
+#.           # Reject unknown command and suggest help
+#.           *)
+#.               _warning "Command \"::1 subcommand::\" not recognized." $subcommand
+#. >             _message "Try -h for help."
+#.               return 1
+#.               ;;
+#.       esac
+#.       return $?
+#: tomb:2743
+msgid "Try -h for help."
+msgstr "Prueba -h para obtener ayuda."
 
-#: failure
-msgid "Cannot find any pinentry: impossible to ask for password."
-msgstr "No se ha encontrado ningún pinentry: es imposible pedir una contraseña."
+#~ msgid " -o     mount options used to open (default: rw,noatime,nodev)"
+#~ msgstr ""
+#~ " -o     opciones de montaje usadas al abrir (por defecto: rw,noatime,"
+#~ "nodev)"
 
+#~ msgid " Copyright (C) 2007-2014 Dyne.org Foundation, License GNU GPL v3+"
+#~ msgstr " Copyright (C) 2007-2014 Fundación Dyne.org, Licencia GNU GPL v3+"
diff --git a/extras/po/fr.po b/extras/po/fr.po
@@ -1,1164 +1,5561 @@
 msgid ""
 msgstr ""
+"Project-Id-Version: Tomb the Crypto Undertaker\n"
+"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: POEditor.com\n"
-"Project-Id-Version: Tomb the Crypto Undertaker\n"
-"Language: fr\n"
-
-#: failure
-msgid "Operation aborted."
-msgstr "L'opération est interrompue."
-
-#: warning
-msgid "often occurs on VPS and kernels that don't provide the loop module."
-msgstr "se produit souvent sur les machines virtuelles et avec les noyaux qui ne fournissent pas le module loop."
-
-#: warning
-msgid "It is impossible to use Tomb on this machine at this conditions."
-msgstr "Il est impossible d'utiliser Tomb dans les conditions offertes par cette machine."
-
-#: message
-msgid "Waiting for the key to be piped from stdin... "
-msgstr "En attente d'une clé à lire sur l'entrée standard... "
-
-#: failure
-msgid "This operation requires a key file to be specified using the -k option."
-msgstr "Cette opération requiert la spécification du chemin de la clé par l'option -k."
-
-#: failure
-msgid "Key not found, specify one using -k."
-msgstr "Aucune clé n'a été trouvée, merci d'en spécifier une avec -k."
-
-#: warning
-msgid "User aborted password dialog."
-msgstr "L'utilisateur a interrompu le dialogue du mot de passe."
-
-#: message
-msgid "Password OK."
-msgstr "Le mot de passe est valide."
-
-#: failure
-msgid "Error: the newly generated keyfile does not seem valid."
-msgstr "Erreur : le fichier de clé nouvellement créé semble invalide."
-
-#: failure
-msgid "User aborted."
-msgstr "L'utilisateur a interrompu l'opération."
-
-#: failure
-msgid "You set empty password, which is not possible."
-msgstr "Vous ne pouvez pas saisir un mot de passe vide."
-
-#: failure
-msgid "Wrong argument for --kdf: must be an integer number (iteration seconds)."
-msgstr "Argument invalide pour --kdf : ce doit être un nombre entier (de secondes d'itérations)."
-
-#: failure
-msgid "gpg (GnuPG) is not found, Tomb cannot function without it."
-msgstr "gpg (GnuPG) n'est pas disponible, mais il est requis pour le fonctionnement de Tomb."
-
-#: message
-msgid "Please confirm the key password for the encoding"
-msgstr "Merci de confirmer le mot de passe de la clé en vue de l'encodage"
-
-#: warning
-msgid "Wrong password supplied."
-msgstr "Le mot de passe fourni est invalide."
-
-#: failure
-msgid "You shall not bury a key whose password is unknown to you."
-msgstr "Vous ne pouvez pas enterrer une clé dont vous ignorez le mot de passe."
-
-#: warning
-msgid "Encoding error: steghide reports problems."
-msgstr "Erreur à l'encodage : steghide rapporte des problèmes."
-
-#: warning
-msgid "Make explicit use of --force to overwrite."
-msgstr "Pour l'ignorer et l'écrire de nouveau, utiliser --force."
-
-#: warning
-msgid "Use of --force selected: overwriting."
-msgstr "L'option --force est sélectionnée : ré-écriture en cours."
-
-#: failure
-msgid "A filename needs to be specified using -k to forge a new key."
-msgstr "Pour forger une nouvelle clé, vous devez préciser un nom de fichier avec -k."
-
-#: failure
-msgid "Forging this key would overwrite an existing file. Operation aborted."
-msgstr "Forger cette clé détruirait un fichier existant.  Opération annulée."
-
-#: message
-msgid "This operation takes time, keep using this computer on other tasks,"
-msgstr "Cette opération prend du temps, continuez à utiliser l'ordinateur pour d'autres tâches,"
-
-#: message
-msgid "once done you will be asked to choose a password for your tomb."
-msgstr "une fois l'opération terminée, vous devrez choisir un mot de passe pour votre tombe."
-
-#: message
-msgid "To make it faster you can move the mouse around."
-msgstr "Vous pouvez accélérer l'opération en bougeant la souris."
-
-#: message
-msgid "If you are on a server, you can use an Entropy Generation Daemon."
-msgstr "Si vous effectuez l'opération sur un serveur, vous pouvez utiliser un démon générateur d'entropie."
-
-#: warning
-msgid "Cannot generate encryption key."
-msgstr "La clé de chiffrement ne peut être générée."
-
-#: message
-msgid "(You can also change it later using 'tomb passwd'.)"
-msgstr "(Vous pouvez le modifier ultérieurement avec la commande 'tomb passwd'.)"
-
-#: warning
-msgid "The key does not seem to be valid."
-msgstr "La clé semble être invalide."
 
-#: warning
-msgid "Dumping contents to screen:"
-msgstr "Capture des contenus à l'écran :"
-
-#: failure
-msgid "Size argument missing, use -s"
-msgstr "Utiliser -s pour préciser la taille de la tombe en Mo."
-
-#: warning
-msgid "A tomb exists already. I'm not digging here:"
-msgstr "Une tombe existe déjà à cet endroit. Je n'y creuse pas !"
-
-#: message
-msgid "Your tomb is not yet ready, you need to forge a key and lock it:"
-msgstr "Votre tombe n'est pas encore prête, vous devez en forger la clé et la vérouiller :"
-
-#: warning
-msgid "No tomb specified for locking."
-msgstr "Quelle tombe dois-je vérouiller ?"
-
-#: warning
-msgid "Usage: tomb lock file.tomb file.tomb.key"
-msgstr "Usage : tomb lock file.tomb file.tomb.key"
-
-#: failure
-msgid "There is no tomb here. You have to it dig first."
-msgstr "Il n'y a pas de tombe à cet endroit. Vous devez d'abord la creuser ('dig')."
-
-#: message
-msgid "Checking if the tomb is empty (we never step on somebody else's bones)."
-msgstr "Sondage de la tombe (nous ne piétinons jamais les os d'autrui)."
-
-#: warning
-msgid "The tomb was already locked with another key."
-msgstr "La tombe est déjà vérouillée avec une autre clé."
-
-#: failure
-msgid "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
-msgstr "Opération abandonnée. Je ne peux pas vérouiller une tombe déjà vérouillée. Vous pouvez en creuser une autre (avec 'dig')."
-
-#: message
-msgid "Fine, this tomb seems empty."
-msgstr "Bien, la tombe semble être vide."
-
-#: message
-msgid "Formatting Luks mapped device."
-msgstr "Formatage du dispositif LUKS désigné."
-
-#: warning
-msgid "cryptsetup luksFormat returned an error."
-msgstr "Une erreur s'est produite à l'exécution de cryptsetup luksFormat"
-
-#: message
-msgid "Formatting your Tomb with Ext3/Ext4 filesystem."
-msgstr "Formatage de votre tombe avec un système de fichier Ext3/Ext4."
-
-#: warning
-msgid "Tomb format returned an error."
-msgstr "Une erreur s'est produite à l'exécution du formatage."
-
-#: message
-msgid "Here below its status is reported:"
-msgstr "L'état de la tombe suit :"
-
-#: message
-msgid "This tomb is a valid LUKS encrypted device."
-msgstr "Cette tombe est un dispositif chiffré LUKS valide."
-
-#: failure
-msgid "Failure mounting the encrypted file."
-msgstr "Le montage du fichier chiffré a échoué."
-
-#: warning
-msgid "How pitiful!  A tomb, and no HOME."
-msgstr "C'est pitoyable ! Une tombe, mais sans abri (HOME n'est pas défini)."
-
-#: warning
-msgid "Cannot exec bind hooks without a mounted tomb."
-msgstr "L'exécution des ordres de montage ne peut se faire que si la tombe est montée."
-
-#: failure
-msgid "I can't see any open tomb, may they all rest in peace."
-msgstr "Je ne vois aucune tombe ouverte, qu'ils reposent tous en paix."
-
-#: message
-msgid "Search index updated."
-msgstr "L'index de recherche a été mis à jour."
-
-#: warning
-msgid "Run 'tomb index' to create indexes."
-msgstr "Exécuter 'tomb index' pour générer les index."
-
-#: message
-msgid "Search completed."
-msgstr "La recherche est terminée."
-
-#: failure
-msgid "No tomb name specified for resizing."
-msgstr "Merci de spécifier le nom de la tombe à agrandir."
-
-#: failure
-msgid "Size is not an integer."
-msgstr "La taille doit être un nombre entier."
-
-#: failure
-msgid "The new size must be greater then old tomb size."
-msgstr "La nouvelle taille doit être supérieure à l'ancienne."
-
-#: failure
-msgid "There is no open tomb to be closed."
-msgstr "Il n'y a pas de tombe à fermer."
+#. Fold: Safety functions
+#. Function: _whoami
+#.
+#. Code sample:
+#.   
+#.       # Set username from UID or environment
+#.       _USER=$SUDO_USER
+#.       [[ "$_USER" = "" ]] && { _USER=$USERNAME }
+#.       [[ "$_USER" = "" ]] && { _USER=$(id -u)  }
+#.       [[ "$_USER" = "" ]] && {
+#. >         _failure "Failing to identify the user who is calling us" }
+#.   
+#.       # Get GID from option -G or the environment
+#.       option_is_set -G #.           && _GID=$(option_value -G) || _GID=$(id -g $_USER)
+#: tomb:189
+msgid "Failing to identify the user who is calling us"
+msgstr ""
 
-#: warning
-msgid "Too many tombs mounted, please specify one (see tomb list)"
-msgstr "Trop de tombes sont montées, merci d'en choisir une (voir 'tomb list')"
+#. Fold: Safety functions
+#. Function: _plot
+#.
+#. Code sample:
+#.       TOMBFILE=$(basename $TOMBPATH)
+#.   
+#.       # The tomb name is TOMBFILE without an extension.
+#.       # It can start with dots: ..foo.tomb -> ..foo
+#.       TOMBNAME="${TOMBFILE%\.[^\.]*}"
+#.       [[ -z $TOMBNAME ]] && {
+#. >         _failure "Tomb won't work without a TOMBNAME." }
+#.   
+#.       # Normalize tomb name
+#.       TOMBFILE="$TOMBNAME.tomb"
+#.   
+#: tomb:237
+msgid "Tomb won't work without a TOMBNAME."
+msgstr "Tomb ne va pas fonctionner sans le nom d'une tombe."
 
-#: warning
-msgid "or issue the command 'tomb close all' to close them all."
-msgstr "ou bien exécuter 'tomb close all' pour les fermer toutes."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.   # Provide a random filename in shared memory
+#.   _tmp_create() {
+#.       [[ -d "$TMPPREFIX" ]] || {
+#.           # we create the tempdir with the sticky bit on
+#.           sudo mkdir -m 1777 "$TMPPREFIX"
+#. >         [[ $? == 0 ]] || _failure "Fatal error creating the temporary directory: ::1 temp dir::" "$TMPPREFIX"
+#.       }
+#.   
+#.       # We're going to add one more $RANDOM for each time someone complain
+#.       # about this being too weak of a random.
+#: tomb:252
+msgid "Fatal error creating the temporary directory: ::1 temp dir::"
+msgstr ""
 
-#: warning
-msgid "Please specify an existing tomb."
-msgstr "Merci d'indiquer une tombe existante."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       # We're going to add one more $RANDOM for each time someone complain
+#.       # about this being too weak of a random.
+#.       tfile="${TMPPREFIX}/$RANDOM$RANDOM$RANDOM$RANDOM"   # Temporary file
+#.       umask 066
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error setting the permission umask for temporary files" }
+#.   
+#.       [[ -r "$tfile" ]] && {
+#.           _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#: tomb:260
+msgid "Fatal error setting the permission umask for temporary files"
+msgstr ""
 
-#: message
-msgid "Kill all processes busy inside the tomb."
-msgstr "Exécution (sommaire) de tous les processus en cours dans la tombe."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.       tfile="${TMPPREFIX}/$RANDOM$RANDOM$RANDOM$RANDOM"   # Temporary file
+#.       umask 066
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error setting the permission umask for temporary files" }
+#.   
+#.       [[ -r "$tfile" ]] && {
+#. >         _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#: tomb:263
+msgid "Someone is messing up with us trying to hijack temporary files."
+msgstr ""
 
-#: warning
-msgid "Tomb is busy, cannot umount!"
-msgstr "La tombe est occupée et ne peut pas être démontée !"
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       [[ -r "$tfile" ]] && {
+#.           _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error setting ownership on temporary file: ::1 temp file::" "$tfile" }
+#.   
+#: tomb:267
+msgid "Fatal error creating a temporary file: ::1 temp file::"
+msgstr ""
+"Erreur fatale lors de la création d'un fichier temporaire : ::1 temp file::"
+
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error setting ownership on temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       _verbose "Created tempfile: ::1 temp file::" "$tfile"
+#.       TOMBTMP="$tfile"
+#.       TOMBTMPFILES+=("$tfile")
+#: tomb:270
+msgid "Fatal error setting ownership on temporary file: ::1 temp file::"
+msgstr ""
 
-#: failure
-msgid "Error parsing."
-msgstr "Erreur de syntaxe."
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.               r=1
+#.               is_crypt=`sudo dmsetup status "$s" | awk '/crypt/ {print $3}'`
+#.               [[ $is_crypt == "crypt" ]] && { r=2 } || { break }
+#.   
+#.           fi
+#.       done
+#. >     _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#: tomb:316
+msgid "An active swap partition is detected..."
+msgstr ""
 
-#: warning
-msgid "Some error occurred during option processing."
-msgstr "L'interprétation des options a échoué."
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.               [[ $is_crypt == "crypt" ]] && { r=2 } || { break }
+#.   
+#.           fi
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#. >         _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#: tomb:318
+msgid "All your swaps are belong to crypt.  Good."
+msgstr ""
 
-#: warning
-msgid "The create command is deprecated, please use dig, forge and lock instead."
-msgstr "La commande \"create\" est obsolète : il convient à présent d'utiliser \"dig\", \"forge\", et \"lock\"."
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.           fi
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#. >         _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#: tomb:320
+msgid "This poses a security risk."
+msgstr ""
 
-#: warning
-msgid "For more informations see Tomb's manual page (man tomb)."
-msgstr "Pour de plus amples informations, se référer au manuel de Tomb (man tomb)."
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#. >         _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#: tomb:321
+msgid "You can deactivate all swap partitions using the command:"
+msgstr ""
+"Vous pouvez désactiver l'ensemble des partitions de mémoire d'échange avec "
+"la commande :"
+
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#. >         _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#.   
+#: tomb:322
+msgid " swapoff -a"
+msgstr " swapoff -a"
 
-#: message
-msgid "Try -h for help."
-msgstr "Essayer -h pour obtenir l'aide."
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#. >         _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#.   
+#.   }
+#: tomb:323
+msgid "But if you want to proceed like this, use the -f (force) flag."
+msgstr ""
+"Mais si vous préférez continuer sans le faire, utilisez l'option -f (forcer)."
+
+#. Fold: Safety functions
+#. Function: _check_swap
+#.
+#. Code sample:
+#.           _ensure_safe_swap
+#.           case $? in
+#.               0|2)     # No, or encrypted swap
+#.                   return 0
+#.                   ;;
+#.               *)       # Unencrypted swap
+#. >                 _failure "Operation aborted."
+#.                   ;;
+#.           esac
+#.       fi
+#.   }
+#: tomb:342
+msgid "Operation aborted."
+msgstr "L'opération est interrompue."
 
-#: failure
-msgid "Tomb won't work without a TOMBNAME."
-msgstr "Tomb ne va pas fonctionner sans le nom d'une tombe."
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   SETTITLE $title
+#.   SETDESC $description
+#.   SETPROMPT Password:
+#.   GETPIN
+#.   EOF`
+#.           else
+#. >             _failure "Cannot find pinentry-curses and no DISPLAY detected."
+#.           fi
+#.   
+#.       else # a DISPLAY is found to be active
+#.   
+#: tomb:379
+msgid "Cannot find pinentry-curses and no DISPLAY detected."
+msgstr ""
 
-#: failure
-msgid "Fatal error creating a temporary file: ::1 temp file::"
-msgstr "Erreur fatale lors de la création d'un fichier temporaire : ::1 temp file::"
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   EOF`
+#.   
+#.           else
+#.   
+#.               if _is_found "pinentry-curses"; then
+#.   
+#. >                 _warning "Detected DISPLAY, but only pinentry-curses is found."
+#.                   output=`cat <<EOF | pinentry-curses
+#.   OPTION ttyname=$TTY
+#.   OPTION lc-ctype=$LANG
+#.   SETTITLE $title
+#: tomb:432
+msgid "Detected DISPLAY, but only pinentry-curses is found."
+msgstr ""
 
-#: warning
-msgid "You can deactivate all swap partitions using the command:"
-msgstr "Vous pouvez désactiver l'ensemble des partitions de mémoire d'échange avec la commande :"
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   SETTITLE $title
+#.   SETDESC $description
+#.   SETPROMPT Password:
+#.   GETPIN
+#.   EOF`
+#.               else
+#. >                 _failure "Cannot find any pinentry: impossible to ask for password."
+#.               fi
+#.   
+#.           fi
+#.   
+#: tomb:442
+msgid "Cannot find any pinentry: impossible to ask for password."
+msgstr ""
 
-#: warning
-msgid " swapoff -a"
-msgstr " swapoff -a"
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   
+#.       fi # end of DISPLAY block
+#.   
+#.       # parse the pinentry output
+#.       for i in ${(f)output}; do
+#.           [[ "$i" =~ "^ERR.*" ]] && {
+#. >             _warning "Pinentry error: ::1 error::" ${i[(w)3]}
+#.               print "canceled"
+#.               return 1 }
+#.   
+#.           # here the password is found
+#: tomb:452
+msgid "Pinentry error: ::1 error::"
+msgstr ""
 
-#: warning
-msgid "But if you want to proceed like this, use the -f (force) flag."
-msgstr "Mais si vous préférez continuer sans le faire, utilisez l'option -f (forcer)."
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   
+#.           # here the password is found
+#.           [[ "$i" =~ "^D .*" ]] && password="${i##D }"
+#.       done
+#.   
+#.       [[ "$password" = "" ]] && {
+#. >         _warning "Empty password"
+#.           print "empty"
+#.           return 1 }
+#.   
+#.       print "$password"
+#: tomb:461
+msgid "Empty password"
+msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.   # Check if a filename is a valid tomb
+#.   is_valid_tomb() {
+#.       _verbose "is_valid_tomb ::1 tomb file::" $1
+#.   
+#.       # First argument must be the path to a tomb
+#.       [[ -z "$1" ]] && {
+#. >         _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#: tomb:477
 msgid "Tomb file is missing from arguments."
 msgstr "Les arguments ne comportent pas le nom du fichier de la tombe."
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # First argument must be the path to a tomb
+#.       [[ -z "$1" ]] && {
+#.           _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#. >         _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#: tomb:481
 #, fuzzy
 msgid "Tomb file not found: ::1 tomb file::"
 msgstr "Le fichier valide d'une tombe a été trouvé : ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#. >         _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#.           _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#: tomb:483
 #, fuzzy
 msgid "Tomb file is not a regular file: ::1 tomb file::"
 msgstr "Le fichier valide d'une tombe a été trouvé : ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#. >         _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#.           _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#.   
+#.       # TODO: split the rest of that function out.
+#: tomb:485
 #, fuzzy
 msgid "Tomb file is empty (zero length): ::1 tomb file::"
 msgstr "Le fichier valide d'une tombe a été trouvé : ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#. >         _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#.   
+#.       # TODO: split the rest of that function out.
+#.       # We already have a valid tomb, now we're checking
+#.       # whether we can alter it.
+#: tomb:487
 #, fuzzy
 msgid "Tomb file is not writable: ::1 tomb file::"
 msgstr "Le fichier valide d'une tombe a été trouvé : ::1 tomb file::"
 
-#: warning
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # TODO: split the rest of that function out.
+#.       # We already have a valid tomb, now we're checking
+#.       # whether we can alter it.
+#.   
+#.       # Tomb file may be a LUKS FS (or we are creating it)
+#.       [[ "`file $1`" =~ "luks encrypted file" ]] || {
+#. >         _warning "File is not yet a tomb: ::1 tomb file::" $1 }
+#.   
+#.       _plot $1     # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#: tomb:495
 #, fuzzy
 msgid "File is not yet a tomb: ::1 tomb file::"
 msgstr "Ouverture de la tombe ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _warning "File is not yet a tomb: ::1 tomb file::" $1 }
+#.   
+#.       _plot $1     # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]$" ]] && {
+#. >         _failure "Tomb is currently in use: ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       _message "Valid tomb file found: ::1 tomb path::" $TOMBPATH
+#.   
+#: tomb:501
 #, fuzzy
 msgid "Tomb is currently in use: ::1 tomb name::"
 msgstr "Fermons la tombe ::1 tomb name::"
 
-#: message
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]$" ]] && {
+#.           _failure "Tomb is currently in use: ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#. >     _message "Valid tomb file found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:504
 msgid "Valid tomb file found: ::1 tomb path::"
 msgstr "Un fichier de tombe valide a été trouvé à : ::1 tomb path::"
 
-#: warning
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.   lo_mount() {
+#.       tpath="$1"
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#. >         _warning "Loop mount of volumes is not possible on this machine, this error"
+#.           _warning "often occurs on VPS and kernels that don't provide the loop module."
+#.           _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#: tomb:516
 #, fuzzy
 msgid "Loop mount of volumes is not possible on this machine, this error"
-msgstr "Le montage en boucle des volumes n'est pas supporté sur cette machine, cette erreur"
-
-#: print
+msgstr ""
+"Le montage en boucle des volumes n'est pas supporté sur cette machine, cette "
+"erreur"
+
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.       tpath="$1"
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#.           _warning "Loop mount of volumes is not possible on this machine, this error"
+#. >         _warning "often occurs on VPS and kernels that don't provide the loop module."
+#.           _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#: tomb:517
+msgid "often occurs on VPS and kernels that don't provide the loop module."
+msgstr ""
+"se produit souvent sur les machines virtuelles et avec les noyaux qui ne "
+"fournissent pas le module loop."
+
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#.           _warning "Loop mount of volumes is not possible on this machine, this error"
+#.           _warning "often occurs on VPS and kernels that don't provide the loop module."
+#. >         _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       sudo losetup -f "$tpath" # allocates the next loopback for our file
+#: tomb:518
+msgid "It is impossible to use Tomb on this machine at this conditions."
+msgstr ""
+"Il est impossible d'utiliser Tomb dans les conditions offertes par cette "
+"machine."
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   # }}}
+#.   
+#.   # {{{ Commandline interaction
+#.   
+#.   usage() {
+#. >     _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#: tomb:558
 msgid "Syntax: tomb [options] command [arguments]"
 msgstr "Syntaxe : tomb [options] commande [arguments]"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   # {{{ Commandline interaction
+#.   
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#. >     _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#: tomb:560
 msgid "Commands:"
 msgstr "Commandes :"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#. >     _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#: tomb:562
 msgid " // Creation:"
 msgstr " // Création :"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#. >     _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#: tomb:563
 msgid " dig     create a new empty TOMB file of size -s in MB"
 msgstr " dig        (creuser)   Créer une nouvelle TOMBE de taille -s Mo"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#. >     _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#: tomb:564
 msgid " forge   create a new KEY file and set its password"
-msgstr " forge    (forger)      Créer une nouvelle CLÉ et lui assigner un mot de passe"
-
-#: print
+msgstr ""
+" forge    (forger)      Créer une nouvelle CLÉ et lui assigner un mot de "
+"passe"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#. >     _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#: tomb:565
 msgid " lock    installs a lock on a TOMB to use it with KEY"
 msgstr " lock      (vérouiller) Vérouiller une TOMBE avec une CLÉ"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#. >     _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#: tomb:567
 msgid " // Operations on tombs:"
 msgstr " // Opérations sur les tombes :"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#. >     _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#: tomb:568
 msgid " open    open an existing TOMB"
 msgstr " open    (ouvrir)         Ouvrir une TOMBE existante"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#. >     _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#: tomb:569
 msgid " index   update the search indexes of tombs"
-msgstr " index   (indéxer)       Mettre à jour les indices de recherche des tombes"
-
-#: print
+msgstr ""
+" index   (indéxer)       Mettre à jour les indices de recherche des tombes"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#. >     _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#: tomb:570
 msgid " search  looks for filenames matching text patterns"
-msgstr " search (rechercher) Rechercher des noms de fichiers selon des motifs textuels"
-
-#: print
+msgstr ""
+" search (rechercher) Rechercher des noms de fichiers selon des motifs "
+"textuels"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#. >     _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#: tomb:571
 msgid " list    list of open TOMBs and information on them"
-msgstr " list       (énumérer)   Établir une liste informative des TOMBES ouvertes"
-
-#: print
+msgstr ""
+" list       (énumérer)   Établir une liste informative des TOMBES ouvertes"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#. >     _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#: tomb:572
 msgid " close   close a specific TOMB (or 'all')"
-msgstr " close   (fermer)        Sceller une TOMBE en fermant tous les programmes associés"
-
-#: print
+msgstr ""
+" close   (fermer)        Sceller une TOMBE en fermant tous les programmes "
+"associés"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#. >     _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#: tomb:573
 msgid " slam    slam a TOMB killing all programs using it"
-msgstr " slam   referme une tombe brutalement, tuant tous les programmes qui l'utilisent"
-
-#: print
+msgstr ""
+" slam   referme une tombe brutalement, tuant tous les programmes qui "
+"l'utilisent"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#. >         _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#: tomb:575
 msgid " resize  resize a TOMB to a new size -s (can only grow)"
 msgstr " resize  (élargir)        Augmenter la taille d'une TOMBE à -s Mo"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#. >     _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#: tomb:578
 msgid " // Operations on keys:"
 msgstr " // Opération sur les clés :"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#. >     _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#: tomb:579
+msgid " passwd  change the password of a KEY (needs old pass)"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#. >     _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#: tomb:580
+msgid " setkey  change the KEY locking a TOMB (needs old key and pass)"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#. >         _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#: tomb:583
+msgid " // Backup on paper:"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#. >         _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#: tomb:584
 msgid " engrave makes a QR code of a KEY to be saved on paper"
-msgstr " engrave (graver)     Grave une empreinte de la CLÉ pour impression papier au format QR code"
+msgstr ""
+" engrave (graver)     Grave une empreinte de la CLÉ pour impression papier "
+"au format QR code"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#. >         _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#: tomb:588
+msgid " // Steganography:"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#. >         _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#: tomb:589
+msgid " bury    hide a KEY inside a JPEG image (for use with -k)"
+msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#. >         _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#: tomb:590
+msgid " exhume  extract a KEY from a JPEG image (prints to stdout)"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#. >     _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#: tomb:593
 msgid "Options:"
 msgstr "Options :"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#. >     _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#: tomb:595
 msgid " -s     size of the tomb file when creating/resizing one (in MB)"
-msgstr " -s        taille de la tombe lors de sa création ou son agrandissement (en Mo)"
-
-#: print
+msgstr ""
+" -s        taille de la tombe lors de sa création ou son agrandissement (en "
+"Mo)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#. >     _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#: tomb:596
 msgid " -k     path to the key to be used ('-k -' to read from stdin)"
-msgstr " -k        chemin de la clé à utiliser ('-k -' pour la lire depuis l'entrée standard)"
-
-#: print
+msgstr ""
+" -k        chemin de la clé à utiliser ('-k -' pour la lire depuis l'entrée "
+"standard)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#. >     _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#: tomb:597
 msgid " -n     don't process the hooks found in tomb"
 msgstr " -n        ne pas utiliser les 'crochets' trouvés dans la tombe"
 
-#: print
-msgid " -o     mount options used to open (default: rw,noatime,nodev)"
-msgstr " -o        options de montage à l'ouverture (par défaut : rw,noatime,nodev)"
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#. >     _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#: tomb:598
+msgid " -o     options passed to local command, e.g.:"
+msgstr ""
 
-#: print
-msgid " -f     force operation (i.e. even if swap is active)"
-msgstr " -f         forcer l'opération (c-à-d même si la partition d'échange est activée)"
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#. >     _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#: tomb:599
+msgid "          - mount options used to open (default: rw,noatime,nodev)"
+msgstr ""
 
-#: print
-msgid " --kdf  generate passwords armored against dictionary attacks"
-msgstr " --kdf    générer des mots de passe protégés contre les attaques par dictionnaire"
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#. >     _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#: tomb:600
+msgid "          - an alternate cipher to forge and lock"
+msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#. >     _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#: tomb:601
+msgid " -f     force operation (i.e. even if swap is active)"
+msgstr ""
+" -f         forcer l'opération (c-à-d même si la partition d'échange est "
+"activée)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#. >         _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#: tomb:603
+msgid " --kdf  generate passwords armored against dictionary attacks"
+msgstr ""
+" --kdf    générer des mots de passe protégés contre les attaques par "
+"dictionnaire"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#. >     _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#: tomb:607
 msgid " -h     print this help"
 msgstr " -h        imprimer cette aide"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#. >     _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#: tomb:608
 msgid " -v     print version, license and list of available ciphers"
-msgstr " -v        imprimer la version, la licence, et la liste des codes disponibles"
-
-#: print
+msgstr ""
+" -v        imprimer la version, la licence, et la liste des codes disponibles"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#. >     _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#: tomb:609
 msgid " -q     run quietly without printing informations"
 msgstr " -q       exécuter silencieusement sans imprimer les informations"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#. >     _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#: tomb:610
 msgid " -D     print debugging information at runtime"
 msgstr " -D       imprimer les information de débogage durant l'exécution"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#. >     _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#.   
+#.   
+#: tomb:612
 msgid "For more informations on Tomb read the manual: man tomb"
-msgstr "Pour de plus amples information sur Tomb, se reporter au manuel : man tomb"
-
-#: print
+msgstr ""
+"Pour de plus amples information sur Tomb, se reporter au manuel : man tomb"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#. >     _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#.   
+#.   
+#.   # Check whether a commandline option is set.
+#: tomb:613
 msgid "Please report bugs on <http://github.com/dyne/tomb/issues>."
-msgstr "Merci de rapporter les erreurs sur <https://github.com/dyne/tomb/issues>."
-
-#: failure
+msgstr ""
+"Merci de rapporter les erreurs sur <https://github.com/dyne/tomb/issues>."
+
+#. Fold: Commandline interaction
+#. Function: _ensure_dependencies
+#.
+#. Code sample:
+#.   # missing, bail out.
+#.   _ensure_dependencies() {
+#.   
+#.       # Check for required programs
+#.       for req in cryptsetup pinentry sudo gpg mkfs.ext4 e2fsck; do
+#.           command -v $req 1>/dev/null 2>/dev/null || {
+#. >             _failure "Missing required dependency ::1 command::.  Please install it." $req }
+#.       done
+#.   
+#.       # Ensure system binaries are available in the PATH
+#.       path+=(/sbin /usr/sbin) # zsh magic
+#: tomb:748
 msgid "Missing required dependency ::1 command::.  Please install it."
 msgstr "Il manque la dépendance requise ::1 command::. Merci de l'installer."
 
-#: warning
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.   
+#.       _verbose "is_valid_key"
+#.   
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#. >             _warning "cleartext key from stdin selected: this is unsafe."
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#: tomb:785
+msgid "cleartext key from stdin selected: this is unsafe."
+msgstr ""
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       _verbose "is_valid_key"
+#.   
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#.               _warning "cleartext key from stdin selected: this is unsafe."
+#. >             exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#: tomb:786
+msgid "please use --unsafe if you really want to do this."
+msgstr ""
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#.               _warning "cleartext key from stdin selected: this is unsafe."
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#. >         _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#.       [[ -z $key ]] && {
+#.           _warning "is_valid_key() called without an argument."
+#: tomb:788
+msgid "received key in cleartext from stdin (unsafe mode)"
+msgstr ""
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#.       [[ -z $key ]] && {
+#. >         _warning "is_valid_key() called without an argument."
+#.           return 1
+#.       }
+#.   
+#.       # If the key file is an image don't check file header
+#: tomb:792
 msgid "is_valid_key() called without an argument."
 msgstr "La fonction is_valid_key() a été appelée sans argument."
 
-#: message
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       }
+#.   
+#.       # If the key file is an image don't check file header
+#.       [[ -r $TOMBKEYFILE ]] #.           && [[ $(file $TOMBKEYFILE) =~ "JP.G" ]] #.           && {
+#. >         _message "Key is an image, it might be valid."
+#.           return 0 }
+#.   
+#.       [[ $key =~ "BEGIN PGP" ]] && {
+#.           _message "Key is valid."
+#: tomb:800
 msgid "Key is an image, it might be valid."
 msgstr "La clé est une image et pourrait être valide."
 
-#: message
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.           && [[ $(file $TOMBKEYFILE) =~ "JP.G" ]] #.           && {
+#.           _message "Key is an image, it might be valid."
+#.           return 0 }
+#.   
+#.       [[ $key =~ "BEGIN PGP" ]] && {
+#. >         _message "Key is valid."
+#.           return 0 }
+#.   
+#.       return 1
+#.   }
+#: tomb:804
 msgid "Key is valid."
 msgstr "La clé est valide."
 
-#: warning
+#. Fold: Key operations
+#. Function: _tomb_key_recover recover_key
+#.
+#. Code sample:
+#.   }
+#.   
+#.   # $1 is a string containing an encrypted key
+#.   _tomb_key_recover recover_key() {
+#.       local key="${1}"    # Unique argument is an encrypted key
+#.   
+#. >     _warning "Attempting key recovery."
+#.   
+#.       _head="${key[(f)1]}" # take the first line
+#.   
+#.       TOMBKEY=""        # Reset global variable
+#: tomb:814
 msgid "Attempting key recovery."
 msgstr "Tentative de récupération de la clé."
 
-#: warning
-msgid "The key seems invalid or its format is not known by this version of Tomb."
-msgstr "La clé semble invalide ou son format n'est pas reconnu par cette version de Tomb."
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.   # Set global variables TOMBKEY and TOMBKEYFILE.
+#.   _load_key() {
+#.       local keyfile="$1"    # Unique argument is an optional keyfile
+#.   
+#.       [[ -z $keyfile ]] && keyfile=$(option_value -k)
+#.       [[ -z $keyfile ]] && {
+#. >         _failure "This operation requires a key file to be specified using the -k option." }
+#.   
+#.       if [[ $keyfile == "-" ]]; then
+#.           _verbose "load_key reading from stdin."
+#.           _message "Waiting for the key to be piped from stdin... "
+#: tomb:838
+msgid "This operation requires a key file to be specified using the -k option."
+msgstr ""
+"Cette opération requiert la spécification du chemin de la clé par l'option -"
+"k."
+
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.       [[ -z $keyfile ]] && keyfile=$(option_value -k)
+#.       [[ -z $keyfile ]] && {
+#.           _failure "This operation requires a key file to be specified using the -k option." }
+#.   
+#.       if [[ $keyfile == "-" ]]; then
+#.           _verbose "load_key reading from stdin."
+#. >         _message "Waiting for the key to be piped from stdin... "
+#.           TOMBKEYFILE=stdin
+#.           TOMBKEY=$(cat)
+#.       elif [[ $keyfile == "cleartext" ]]; then
+#.           _verbose "load_key reading SECRET from stdin"
+#: tomb:842
+msgid "Waiting for the key to be piped from stdin... "
+msgstr "En attente d'une clé à lire sur l'entrée standard... "
 
-#: failure
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.           _message "Waiting for the key to be piped from stdin... "
+#.           TOMBKEYFILE=cleartext
+#.           TOMBKEY=cleartext
+#.           TOMBSECRET=$(cat)
+#.       else
+#.           _verbose "load_key argument: ::1 key file::" $keyfile
+#. >         [[ -r $keyfile ]] || _failure "Key not found, specify one using -k."
+#.           TOMBKEYFILE=$keyfile
+#.           TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.       fi
+#.   
+#: tomb:853
+msgid "Key not found, specify one using -k."
+msgstr "Aucune clé n'a été trouvée, merci d'en spécifier une avec -k."
+
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.           TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.       fi
+#.   
+#.       _verbose "load_key: ::1 key::" $TOMBKEYFILE
+#.   
+#.       is_valid_key $TOMBKEY || {
+#. >         _warning "The key seems invalid or its format is not known by this version of Tomb."
+#.           _tomb_key_recover $TOMBKEY
+#.       }
+#.   
+#.       # Declared TOMBKEYFILE (path)
+#: tomb:861
+msgid ""
+"The key seems invalid or its format is not known by this version of Tomb."
+msgstr ""
+"La clé semble invalide ou son format n'est pas reconnu par cette version de "
+"Tomb."
+
+#. Fold: Key operations
+#. Function: get_lukskey
+#.
+#. Code sample:
+#.                   _verbose "KDF salt: $kdf_salt"
+#.                   _verbose "KDF ic: $kdf_ic"
+#.                   _verbose "KDF len: $kdf_len"
+#.                   _password=$(tomb-kdb-pbkdf2 $kdf_salt $kdf_ic $kdf_len 2>/dev/null <<<$_password)
+#.                   ;;
+#.               *)
+#. >                 _failure "No suitable program for KDF ::1 program::." $pbkdf_hash
+#.                   unset _password
+#.                   return 1
+#.                   ;;
+#.           esac
+#: tomb:936
 #, fuzzy
 msgid "No suitable program for KDF ::1 program::."
 msgstr "Pas de programme approprié pour la dérivation de clé ::1 kdf::."
 
-#: failure
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.   
+#.   # This function asks the user for the password to use the key it tests
+#.   # it against the return code of gpg on success returns 0 and saves
+#.   # the password in the global variable $TOMBPASSWORD
+#.   ask_key_password() {
+#.       [[ -z "$TOMBKEYFILE" ]] && {
+#. >         _failure "Internal error: ask_key_password() called before _load_key()." }
+#.   
+#.       [[ "$TOMBKEYFILE" = "cleartext" ]] && {
+#.           _verbose "no password needed, using secret bytes from stdin"
+#.           return 0 }
+#: tomb:962
 msgid "Internal error: ask_key_password() called before _load_key()."
-msgstr "Erreur interne : la fonction ask_key_password() a été appelée avant _load_key()."
-
-#: message
+msgstr ""
+"Erreur interne : la fonction ask_key_password() a été appelée avant "
+"_load_key()."
+
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.           _failure "Internal error: ask_key_password() called before _load_key()." }
+#.   
+#.       [[ "$TOMBKEYFILE" = "cleartext" ]] && {
+#.           _verbose "no password needed, using secret bytes from stdin"
+#.           return 0 }
+#.   
+#. >     _message "A password is required to use key ::1 key::" $TOMBKEYFILE
+#.       passok=0
+#.       tombpass=""
+#.       if [[ "$1" = "" ]]; then
+#.   
+#: tomb:968
 msgid "A password is required to use key ::1 key::"
 msgstr "Un mot de passe est nécessaire pour utiliser la clé ::1 key::"
 
-#: message
-msgid "Commanded to change password for tomb key ::1 key::"
-msgstr "L'utilisateur a requis un changement du mot de passe de la clé ::1 key::."
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.               if [[ $c == 1 ]]; then
+#.                   tombpass=$(ask_password "Insert password to: $TOMBKEYFILE")
+#.               else
+#.                   tombpass=$(ask_password "Insert password to: $TOMBKEYFILE (attempt $c)")
+#.               fi
+#.               [[ $? = 0 ]] || {
+#. >                 _warning "User aborted password dialog."
+#.                   return 1
+#.               }
+#.   
+#.               get_lukskey "$tombpass"
+#: tomb:980
+msgid "User aborted password dialog."
+msgstr "L'utilisateur a interrompu le dialogue du mot de passe."
+
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.                   return 1
+#.               }
+#.   
+#.               get_lukskey "$tombpass"
+#.   
+#.               [[ $? = 0 ]] && {
+#. >                 passok=1; _message "Password OK."
+#.                   break;
+#.               }
+#.           done
+#.   
+#: tomb:987
+msgid "Password OK."
+msgstr "Le mot de passe est valide."
 
-#: failure
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.   change_passwd() {
+#.       local tmpnewkey lukskey c tombpass tombpasstmp
+#.   
+#.       _check_swap  # Ensure swap is secure, if any
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#. >     _message "Commanded to change password for tomb key ::1 key::" $TOMBKEYFILE
+#.   
+#.       _tmp_create
+#.       tmpnewkey=$TOMBTMP
+#.   
+#: tomb:1025
+msgid "Commanded to change password for tomb key ::1 key::"
+msgstr ""
+"L'utilisateur a requis un changement du mot de passe de la clé ::1 key::."
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           local tomboldpwd="`option_value --tomb-old-pwd`"
+#.           _verbose "tomb-old-pwd = ::1 old pass::" $tomboldpwd
+#.           ask_key_password "$tomboldpwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#. >     [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _success "Changing password for ::1 key file::" $TOMBKEYFILE
+#.   
+#.       # Here $TOMBSECRET contains the key material in clear
+#: tomb:1037
 #, fuzzy
 msgid "No valid password supplied."
 msgstr "Le mot de passe fourni est invalide."
 
-#: message
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           ask_key_password "$tomboldpwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#. >     _success "Changing password for ::1 key file::" $TOMBKEYFILE
+#.   
+#.       # Here $TOMBSECRET contains the key material in clear
+#.   
+#.       { option_is_set --tomb-pwd } && {
+#: tomb:1039
+msgid "Changing password for ::1 key file::"
+msgstr ""
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           gen_key "$tombpwd" >> "$tmpnewkey"
+#.       } || {
+#.           gen_key >> "$tmpnewkey"
+#.       }
+#.   
+#.       { is_valid_key "${mapfile[$tmpnewkey]}" } || {
+#. >         _failure "Error: the newly generated keyfile does not seem valid." }
+#.   
+#.       # Copy the new key as the original keyfile name
+#.       cp -f "${tmpnewkey}" $TOMBKEYFILE
+#.       _success "Your passphrase was successfully updated."
+#: tomb:1052
+msgid "Error: the newly generated keyfile does not seem valid."
+msgstr "Erreur : le fichier de clé nouvellement créé semble invalide."
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.   
+#.       { is_valid_key "${mapfile[$tmpnewkey]}" } || {
+#.           _failure "Error: the newly generated keyfile does not seem valid." }
+#.   
+#.       # Copy the new key as the original keyfile name
+#.       cp -f "${tmpnewkey}" $TOMBKEYFILE
+#. >     _success "Your passphrase was successfully updated."
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1056
+msgid "Your passphrase was successfully updated."
+msgstr ""
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.   
+#.       if [ "$1" = "" ]; then
+#.           while true; do
+#.               # 3 tries to write two times a matching password
+#.               tombpass=`ask_password "Type the new password to secure your key"`
+#.               if [[ $? != 0 ]]; then
+#. >                 _failure "User aborted."
+#.               fi
+#.               if [ -z $tombpass ]; then
+#.                   _failure "You set empty password, which is not possible."
+#.               fi
+#: tomb:1078
+msgid "User aborted."
+msgstr "L'utilisateur a interrompu l'opération."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # 3 tries to write two times a matching password
+#.               tombpass=`ask_password "Type the new password to secure your key"`
+#.               if [[ $? != 0 ]]; then
+#.                   _failure "User aborted."
+#.               fi
+#.               if [ -z $tombpass ]; then
+#. >                 _failure "You set empty password, which is not possible."
+#.               fi
+#.               tombpasstmp=$tombpass
+#.               tombpass=`ask_password "Type the new password to secure your key (again)"`
+#.               if [[ $? != 0 ]]; then
+#: tomb:1081
+msgid "You set empty password, which is not possible."
+msgstr "Vous ne pouvez pas saisir un mot de passe vide."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # see: https://github.com/dyne/Tomb/issues/82
+#.               itertime="`option_value --kdf`"
+#.               # removing support of floating points because they can't be type checked well
+#.               if [[ "$itertime" != <-> ]]; then
+#.                   unset tombpass
+#.                   unset tombpasstmp
+#. >                 _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#: tomb:1109
+msgid ""
+"Wrong argument for --kdf: must be an integer number (iteration seconds)."
+msgstr ""
+"Argument invalide pour --kdf : ce doit être un nombre entier (de secondes "
+"d'itérations)."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.                   unset tombpasstmp
+#.                   _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#. >             _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#: tomb:1114
+msgid "Using KDF, iterations: ::1 microseconds::"
+msgstr ""
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.                   _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#. >             _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#.               _message "encoding the password"
+#: tomb:1115
 msgid "generating salt"
 msgstr "Génération du sel en cours"
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#. >             _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#.               _message "encoding the password"
+#.               # We use a length of 64bytes = 512bits (more than needed!?)
+#.               tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+#: tomb:1117
 msgid "calculating iterations"
 msgstr "Calcul des itérations en cours"
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#. >             _message "encoding the password"
+#.               # We use a length of 64bytes = 512bits (more than needed!?)
+#.               tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+#.   
+#.               header="_KDF_pbkdf2sha1_${pbkdf2_salt}_${pbkdf2_iter}_64\n"
+#: tomb:1119
 msgid "encoding the password"
 msgstr "Codage du mot de passe en cours"
 
-#: warning
+#. Fold: Key operations
+#. Function: list_gnupg_ciphers
+#.
+#. Code sample:
+#.       unset tombpasstmp
+#.   }
+#.   
+#.   # prints an array of ciphers available in gnupg (to encrypt keys)
+#.   list_gnupg_ciphers() {
+#.       # prints an error if GnuPG is not found
+#. >     which gpg 2>/dev/null || _failure "gpg (GnuPG) is not found, Tomb cannot function without it."
+#.   
+#.       ciphers=(`gpg --version | awk '
+#.   BEGIN { ciphers=0 }
+#.   /^Cipher:/ { gsub(/,/,""); sub(/^Cipher:/,""); print; ciphers=1; next }
+#: tomb:1150
+msgid "gpg (GnuPG) is not found, Tomb cannot function without it."
+msgstr ""
+"gpg (GnuPG) n'est pas disponible, mais il est requis pour le fonctionnement "
+"de Tomb."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEY
+#.   
+#.       imagefile=$PARAM
+#.   
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#. >         _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#.       _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#: tomb:1171
 msgid "Encode failed: ::1 image file:: is not a jpeg image."
 msgstr "L'encodage a échoué : ::1 image file:: n'est pas une image JPEG."
 
-#: failure
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#.           _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#. >     _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#.       _message "Please confirm the key password for the encoding"
+#.       # We ask the password and test if it is the same encoding the
+#.       # base key, to insure that the same password is used for the
+#.       # encryption and the steganography. This is a standard enforced
+#: tomb:1175
+msgid "Encoding key ::1 tomb key:: inside image ::2 image file::"
+msgstr ""
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#.           _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#.       _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#. >     _message "Please confirm the key password for the encoding"
+#.       # We ask the password and test if it is the same encoding the
+#.       # base key, to insure that the same password is used for the
+#.       # encryption and the steganography. This is a standard enforced
+#.       # by Tomb, but its not strictly necessary (and having different
+#: tomb:1176
+msgid "Please confirm the key password for the encoding"
+msgstr "Merci de confirmer le mot de passe de la clé en vue de l'encodage"
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tombpwd
+#.           ask_key_password "$tombpwd"
+#.       } || {
+#.           ask_key_password
+#.       }
+#.       [[ $? != 0 ]] && {
+#. >         _warning "Wrong password supplied."
+#.           _failure "You shall not bury a key whose password is unknown to you." }
+#.   
+#.       # We omit armor strings since having them as constants can give
+#.       # ground to effective attacks on steganography
+#: tomb:1192
+msgid "Wrong password supplied."
+msgstr "Le mot de passe fourni est invalide."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.           ask_key_password "$tombpwd"
+#.       } || {
+#.           ask_key_password
+#.       }
+#.       [[ $? != 0 ]] && {
+#.           _warning "Wrong password supplied."
+#. >         _failure "You shall not bury a key whose password is unknown to you." }
+#.   
+#.       # We omit armor strings since having them as constants can give
+#.       # ground to effective attacks on steganography
+#.       print - "$TOMBKEY" | awk '
+#: tomb:1193
+msgid "You shall not bury a key whose password is unknown to you."
+msgstr "Vous ne pouvez pas enterrer une clé dont vous ignorez le mot de passe."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   /^-----/ {next}
+#.   /^Version/ {next}
+#.   {print $0}' #.       | steghide embed --embedfile - --coverfile ${imagefile} #.       -p $TOMBPASSWORD -z 9 -e serpent cbc
+#.       if [ $? != 0 ]; then
+#. >         _warning "Encoding error: steghide reports problems."
+#.           res=1
+#.       else
+#.           _success "Tomb key encoded succesfully into image ::1 image file::" $imagefile
+#.           res=0
+#: tomb:1204
+msgid "Encoding error: steghide reports problems."
+msgstr "Erreur à l'encodage : steghide rapporte des problèmes."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.       | steghide embed --embedfile - --coverfile ${imagefile} #.       -p $TOMBPASSWORD -z 9 -e serpent cbc
+#.       if [ $? != 0 ]; then
+#.           _warning "Encoding error: steghide reports problems."
+#.           res=1
+#.       else
+#. >         _success "Tomb key encoded succesfully into image ::1 image file::" $imagefile
+#.           res=0
+#.       fi
+#.   
+#.       return $res
+#: tomb:1207
+msgid "Tomb key encoded succesfully into image ::1 image file::"
+msgstr ""
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.   # mandatory 1st arg: the image file where key is supposed to be
+#.   # optional 2nd arg: the password to use (same as key, internal use)
+#.   # optional 3rd arg: the key where to save the result (- for stdout)
+#.   exhume_key() {
+#.       [[ "$1" = "" ]] && {
+#. >         _failure "Exhume failed, no image specified" }
+#.   
+#.       local imagefile="$1"  # The image file where to look for the key
+#.       local tombpass="$2"   # (Optional) the password to use (internal use)
+#.       local destkey="$3"    # (Optional) the key file where to save the
+#: tomb:1219
+msgid "Exhume failed, no image specified"
+msgstr ""
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       local destkey="$3"    # (Optional) the key file where to save the
+#.       # result (- for stdout)
+#.       local r=1             # Return code (default: fail)
+#.   
+#.       # Ensure the image file is a readable JPEG
+#.       [[ ! -r $imagefile ]] && {
+#. >         _failure "Exhume failed, image file not found: ::1 image file::" "${imagefile:-none}" }
+#.       [[ ! $(file "$imagefile") =~ "JP.G" ]] && {
+#.           _failure "Exhume failed: ::1 image file:: is not a jpeg image." $imagefile }
+#.   
+#.       # When a password is passed as argument then always print out
+#: tomb:1229
 #, fuzzy
 msgid "Exhume failed, image file not found: ::1 image file::"
 msgstr "Le fichier valide d'une tombe a été trouvé : ::1 tomb file::"
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       local r=1             # Return code (default: fail)
+#.   
+#.       # Ensure the image file is a readable JPEG
+#.       [[ ! -r $imagefile ]] && {
+#.           _failure "Exhume failed, image file not found: ::1 image file::" "${imagefile:-none}" }
+#.       [[ ! $(file "$imagefile") =~ "JP.G" ]] && {
+#. >         _failure "Exhume failed: ::1 image file:: is not a jpeg image." $imagefile }
+#.   
+#.       # When a password is passed as argument then always print out
+#.       # the exhumed key on stdout without further checks (internal use)
+#.       [[ -n "$tombpass" ]] && {
+#: tomb:1231
 #, fuzzy
 msgid "Exhume failed: ::1 image file:: is not a jpeg image."
 msgstr "L'encodage a échoué : ::1 image file:: n'est pas une image JPEG."
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.       # When a password is passed as argument then always print out
+#.       # the exhumed key on stdout without further checks (internal use)
+#.       [[ -n "$tombpass" ]] && {
+#.           TOMBKEY=$(steghide extract -sf $imagefile -p $tombpass -xf -)
+#.           [[ $? != 0 ]] && {
+#. >             _failure "Wrong password or no steganographic key found" }
+#.   
+#.           recover_key $TOMBKEY
+#.   
+#.           return 0
+#: tomb:1238
 msgid "Wrong password or no steganographic key found"
 msgstr "Mot de passe invalide ou clé stéganographique introuvable"
 
-#: message
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       }
+#.   
+#.       # Ensure we have a valid destination for the key
+#.       [[ -z $destkey ]] && { option_is_set -k } && destkey=$(option_value -k)
+#.       [[ -z $destkey ]] && {
+#.           destkey="-" # No key was specified: fallback to stdout
+#. >         _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#: tomb:1249
 msgid "printing exhumed key on stdout"
 msgstr "Impression de la clé exhumée sur la sortie standard"
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       [[ -z $destkey ]] && {
+#.           destkey="-" # No key was specified: fallback to stdout
+#.           _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#. >         _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#: tomb:1253
 #, fuzzy
 msgid "File exists: ::1 tomb key::"
 msgstr "Le fichier existe : ::1 key::"
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.           _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#. >             _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#: tomb:1255
+msgid "Use of --force selected: overwriting."
+msgstr "L'option --force est sélectionnée : ré-écriture en cours."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#. >             _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#.       _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#: tomb:1258
+msgid "Make explicit use of --force to overwrite."
+msgstr "Pour l'ignorer et l'écrire de nouveau, utiliser --force."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#. >             _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#.       _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#.       { option_is_set --tomb-pwd } && {
+#: tomb:1259
 #, fuzzy
 msgid "Refusing to overwrite file. Operation aborted."
-msgstr "La création de cette tombe écraserait un fichier existant. Opération annulée."
-
-#: message
+msgstr ""
+"La création de cette tombe écraserait un fichier existant. Opération annulée."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#. >     _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#.       { option_is_set --tomb-pwd } && {
+#.           tombpass=$(option_value --tomb-pwd)
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tombpass
+#.       } || {
+#: tomb:1262
 msgid "Trying to exhume a key out of image ::1 image file::"
 msgstr "Tentative d'exhumer une clé de l'image ::1 image file::"
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       steghide extract -sf $imagefile -p ${tombpass} -xf $destkey
+#.       r=$?
+#.   
+#.       # Report to the user
+#.       [[ "$destkey" = "-" ]] && destkey="stdout"
+#.       [[ $r == 0 ]] && {
+#. >         _success "Key succesfully exhumed to ::1 key::." $destkey
+#.       } || {
+#.           _warning "Nothing found in ::1 image file::" $imagefile
+#.       }
+#.   
+#: tomb:1283
+msgid "Key succesfully exhumed to ::1 key::."
+msgstr ""
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.       # Report to the user
+#.       [[ "$destkey" = "-" ]] && destkey="stdout"
+#.       [[ $r == 0 ]] && {
+#.           _success "Key succesfully exhumed to ::1 key::." $destkey
+#.       } || {
+#. >         _warning "Nothing found in ::1 image file::" $imagefile
+#.       }
+#.   
+#.       return $r
+#.   }
+#: tomb:1285
 msgid "Nothing found in ::1 image file::"
 msgstr "Aucune clé n'a été trouvée dans ::1 image file::"
 
-#: failure
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#.       local keyname=$(basename $TOMBKEYFILE)
+#.       local pngname="$keyname.qr.png"
+#.   
+#. >     _success "Rendering a printable QRCode for key: ::1 tomb key file::" $TOMBKEYFILE
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#: tomb:1300
+msgid "Rendering a printable QRCode for key: ::1 tomb key file::"
+msgstr ""
+
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.   
+#.       _success "Rendering a printable QRCode for key: ::1 tomb key file::" $TOMBKEYFILE
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#. >         _failure "QREncode reported an error." }
+#.   
+#.       _success "Operation successful:"
+#.       # TODO: only if verbose and/or not silent
+#.       ls -lh $pngname
+#: tomb:1305
 msgid "QREncode reported an error."
 msgstr "QREncode a retourné une erreur."
 
-#: message
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#.           _failure "QREncode reported an error." }
+#.   
+#. >     _success "Operation successful:"
+#.       # TODO: only if verbose and/or not silent
+#.       ls -lh $pngname
+#.       file $pngname
+#.   }
+#: tomb:1307
+msgid "Operation successful:"
+msgstr ""
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.   dig_tomb() {
+#.       local    tombpath="$1"    # Path to tomb
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#. >     _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#: tomb:1340
 msgid "Commanded to dig tomb ::1 tomb path::"
 msgstr "L'ordre est de creuser une tombe à ::1 tomb path::"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       local    tombpath="$1"    # Path to tomb
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#. >     [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#: tomb:1342
 msgid "Missing path to tomb"
 msgstr "Il manque le chemin vers la tombe."
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#. >     [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#: tomb:1343
+msgid "Size argument missing, use -s"
+msgstr "Utiliser -s pour préciser la taille de la tombe en Mo."
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#. >     [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#: tomb:1344
 msgid "Size must be an integer (megabytes)"
 msgstr "La taille doit être un entier (en megaoctets)"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#. >     [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       [[ -e $TOMBPATH ]] && {
+#: tomb:1345
 msgid "Tombs can't be smaller than 10 megabytes"
 msgstr "Les tombes ne peuvent être plus petites que 10 Mo"
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       [[ -e $TOMBPATH ]] && {
+#. >         _warning "A tomb exists already. I'm not digging here:"
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#: tomb:1350
+msgid "A tomb exists already. I'm not digging here:"
+msgstr "Une tombe existe déjà à cet endroit. Je n'y creuse pas !"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       [[ -e $TOMBPATH ]] && {
+#.           _warning "A tomb exists already. I'm not digging here:"
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#. >     _success "Creating a new tomb in ::1 tomb path::" $TOMBPATH
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#: tomb:1355
+msgid "Creating a new tomb in ::1 tomb path::"
+msgstr ""
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#.       _success "Creating a new tomb in ::1 tomb path::" $TOMBPATH
+#.   
+#. >     _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#.       touch $TOMBPATH
+#.       [[ $? = 0 ]] || {
+#: tomb:1357
 msgid "Generating ::1 tomb file:: of ::2 size::MiB"
 msgstr "Tombe en cours de création ::1 tomb file::, de taille ::2 size::Mo"
 
-#: warning
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#.       touch $TOMBPATH
+#.       [[ $? = 0 ]] || {
+#. >         _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.       chmod 0600 $TOMBPATH
+#.   
+#: tomb:1362
 msgid "Error creating the tomb ::1 tomb path::"
-msgstr "Une erreur s'est produite lors de la création de la tombe à ::1 tomb path::"
+msgstr ""
+"Une erreur s'est produite lors de la création de la tombe à ::1 tomb path::"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           ls -lh $TOMBPATH
+#.       } || {
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#. >     _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#: tomb:1377
+msgid "Done digging ::1 tomb name::"
+msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       } || {
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#. >     _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#: tomb:1378
+msgid "Your tomb is not yet ready, you need to forge a key and lock it:"
+msgstr ""
+"Votre tombe n'est pas encore prête, vous devez en forger la clé et la "
+"vérouiller :"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#. >     _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#: tomb:1379
 msgid "tomb forge ::1 tomb path::.key"
 msgstr "Forge de la clé ::1 tomb path::.key en cours"
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#. >     _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1380
 msgid "tomb lock ::1 tomb path:: -k ::1 tomb path::.key"
 msgstr "tomb lock ::1 tomb path:: -k ::1 tomb path::.key"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       local destkey="$1"
+#.       { option_is_set -k } && { destkey=$(option_value -k) }
+#.   
+#.       local algo="AES256"  # Default encryption algorithm
+#.   
+#.       [[ -z "$destkey" ]] && {
+#. >         _failure "A filename needs to be specified using -k to forge a new key." }
+#.   
+#.       _message "Commanded to forge key ::1 key::" $destkey
+#.   
+#.       _check_swap # Ensure the available memory is safe to use
+#: tomb:1401
+msgid "A filename needs to be specified using -k to forge a new key."
+msgstr ""
+"Pour forger une nouvelle clé, vous devez préciser un nom de fichier avec -k."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       local algo="AES256"  # Default encryption algorithm
+#.   
+#.       [[ -z "$destkey" ]] && {
+#.           _failure "A filename needs to be specified using -k to forge a new key." }
+#.   
+#. >     _message "Commanded to forge key ::1 key::" $destkey
+#.   
+#.       _check_swap # Ensure the available memory is safe to use
+#.   
+#.       # Ensure GnuPG won't exit with an error before first run
+#: tomb:1403
 msgid "Commanded to forge key ::1 key::"
 msgstr "Forge de la clé ::1 key::"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           mkdir -m 0700 $HOME/.gnupg
+#.           touch $HOME/.gnupg/pubring.gpg }
+#.   
+#.       # Do not overwrite any files accidentally
+#.       [[ -r "$destkey" ]] && {
+#.           ls -lh $destkey
+#. >         _failure "Forging this key would overwrite an existing file. Operation aborted." }
+#.   
+#.       touch $destkey
+#.       [[ $? == 0 ]] || {
+#.           _warning "Cannot generate encryption key."
+#: tomb:1415
+msgid "Forging this key would overwrite an existing file. Operation aborted."
+msgstr "Forger cette clé détruirait un fichier existant.  Opération annulée."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       [[ -r "$destkey" ]] && {
+#.           ls -lh $destkey
+#.           _failure "Forging this key would overwrite an existing file. Operation aborted." }
+#.   
+#.       touch $destkey
+#.       [[ $? == 0 ]] || {
+#. >         _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.       chmod 0600 $destkey
+#.   
+#.       # Update algorithm if it was passed on the command line with -o
+#: tomb:1419
+msgid "Cannot generate encryption key."
+msgstr "La clé de chiffrement ne peut être générée."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       chmod 0600 $destkey
+#.   
+#.       # Update algorithm if it was passed on the command line with -o
+#.       { option_is_set -o } && algopt="$(option_value -o)"
+#.       [[ -n "$algopt" ]] && algo=$algopt
+#.   
+#. >     _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#: tomb:1427
 msgid "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::"
-msgstr "Forge de la clé ::1 key:: avec l'algorithme de chiffrement ::2 algorithm::"
+msgstr ""
+"Forge de la clé ::1 key:: avec l'algorithme de chiffrement ::2 algorithm::"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#. >     _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#: tomb:1432
+msgid "This operation takes time, keep using this computer on other tasks,"
+msgstr ""
+"Cette opération prend du temps, continuez à utiliser l'ordinateur pour "
+"d'autres tâches,"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#. >     _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#: tomb:1433
+msgid "once done you will be asked to choose a password for your tomb."
+msgstr ""
+"une fois l'opération terminée, vous devrez choisir un mot de passe pour "
+"votre tombe."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#. >     _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#.       local random_source=/dev/random
+#: tomb:1434
+msgid "To make it faster you can move the mouse around."
+msgstr "Vous pouvez accélérer l'opération en bougeant la souris."
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#. >     _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#.       local random_source=/dev/random
+#.       { option_is_set --use-urandom } && random_source=/dev/urandom
+#: tomb:1435
+msgid "If you are on a server, you can use an Entropy Generation Daemon."
+msgstr ""
+"Si vous effectuez l'opération sur un serveur, vous pouvez utiliser un démon "
+"générateur d'entropie."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       [[ $? == 0 ]] || {
+#.           _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.   
+#.       # Here the global variable TOMBSECRET contains the naked secret
+#.   
+#. >     _success "Choose the  password of your key: ::1 tomb key::" $TOMBKEYFILE
+#.       _message "(You can also change it later using 'tomb passwd'.)"
+#.       # _user_file $TOMBKEYFILE
+#.   
+#.       tombname="$TOMBKEYFILE" # XXX ???
+#: tomb:1449
+msgid "Choose the  password of your key: ::1 tomb key::"
+msgstr ""
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.   
+#.       # Here the global variable TOMBSECRET contains the naked secret
+#.   
+#.       _success "Choose the  password of your key: ::1 tomb key::" $TOMBKEYFILE
+#. >     _message "(You can also change it later using 'tomb passwd'.)"
+#.       # _user_file $TOMBKEYFILE
+#.   
+#.       tombname="$TOMBKEYFILE" # XXX ???
+#.       # the gen_key() function takes care of the new key's encryption
+#: tomb:1450
+msgid "(You can also change it later using 'tomb passwd'.)"
+msgstr ""
+"(Vous pouvez le modifier ultérieurement avec la commande 'tomb passwd'.)"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       # load the key contents (set global variable)
+#.       TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.   
+#.       # this does a check on the file header
+#.       is_valid_key $TOMBKEY || {
+#. >         _warning "The key does not seem to be valid."
+#.           _warning "Dumping contents to screen:"
+#.           print "${mapfile[$TOMBKEY]}"
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#: tomb:1468
+msgid "The key does not seem to be valid."
+msgstr "La clé semble être invalide."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       # load the key contents (set global variable)
+#.       TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.   
+#.       # this does a check on the file header
+#.       is_valid_key $TOMBKEY || {
+#.           _warning "The key does not seem to be valid."
+#. >         _warning "Dumping contents to screen:"
+#.           print "${mapfile[$TOMBKEY]}"
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#: tomb:1469
+msgid "Dumping contents to screen:"
+msgstr "Capture des contenus à l'écran :"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#. >     _message "Done forging ::1 key file::" $TOMBKEYFILE
+#.       _success "Your key is ready:"
+#.       ls -lh $TOMBKEYFILE
+#.   }
+#.   
+#: tomb:1477
 msgid "Done forging ::1 key file::"
 msgstr "La clé est forgée : ::1 key file::"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _message "Done forging ::1 key file::" $TOMBKEYFILE
+#. >     _success "Your key is ready:"
+#.       ls -lh $TOMBKEYFILE
+#.   }
+#.   
+#.   # Step three -- Lock tomb
+#: tomb:1478
+msgid "Your key is ready:"
+msgstr ""
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       # for more alternatives refer to cryptsetup(8)
+#.       local cipher="aes-xts-plain64:sha256"
+#.   
+#.       local tombpath="$1"      # First argument is the path to the tomb
+#.   
+#.       [[ -n $tombpath ]] || {
+#. >         _warning "No tomb specified for locking."
+#.           _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#: tomb:1498
+msgid "No tomb specified for locking."
+msgstr "Quelle tombe dois-je vérouiller ?"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       local cipher="aes-xts-plain64:sha256"
+#.   
+#.       local tombpath="$1"      # First argument is the path to the tomb
+#.   
+#.       [[ -n $tombpath ]] || {
+#.           _warning "No tomb specified for locking."
+#. >         _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#.       _plot $tombpath
+#: tomb:1499
+msgid "Usage: tomb lock file.tomb file.tomb.key"
+msgstr "Usage : tomb lock file.tomb file.tomb.key"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#.       _plot $tombpath
+#.   
+#. >     _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
+#.   
+#.       [[ -f $TOMBPATH ]] || {
+#.           _failure "There is no tomb here. You have to dig it first." }
+#.   
+#: tomb:1505
 msgid "Commanded to lock tomb ::1 tomb file::"
 msgstr "Vérouillage de la tombe ::1 tomb file:: en cours"
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _plot $tombpath
+#.   
+#.       _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
+#.   
+#.       [[ -f $TOMBPATH ]] || {
+#. >         _failure "There is no tomb here. You have to dig it first." }
+#.   
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       lo_mount $TOMBPATH
+#: tomb:1508
+msgid "There is no tomb here. You have to dig it first."
+msgstr ""
+"Il n'y a pas de tombe à cet endroit. Vous devez d'abord la creuser ('dig')."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#.       _verbose "Loop mounted on ::1 mount point::" $nstloop
+#.   
+#. >     _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#: tomb:1517
+msgid "Checking if the tomb is empty (we never step on somebody else's bones)."
+msgstr "Sondage de la tombe (nous ne piétinons jamais les os d'autrui)."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       _verbose "Loop mounted on ::1 mount point::" $nstloop
+#.   
+#.       _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#. >         _warning "The tomb was already locked with another key."
+#.           _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#.           _message "Fine, this tomb seems empty."
+#.       fi
+#: tomb:1521
+msgid "The tomb was already locked with another key."
+msgstr "La tombe est déjà vérouillée avec une autre clé."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#. >         _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#.           _message "Fine, this tomb seems empty."
+#.       fi
+#.   
+#: tomb:1522
+msgid ""
+"Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+msgstr ""
+"Opération abandonnée. Je ne peux pas vérouiller une tombe déjà vérouillée. "
+"Vous pouvez en creuser une autre (avec 'dig')."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#.           _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#. >         _message "Fine, this tomb seems empty."
+#.       fi
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#: tomb:1524
+msgid "Fine, this tomb seems empty."
+msgstr "Bien, la tombe semble être vide."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#.       # the encryption cipher for a tomb can be set when locking using -c
+#.       { option_is_set -o } && algopt="$(option_value -o)"
+#.       [[ -n "$algopt" ]] && cipher=$algopt
+#. >     _message "Locking using cipher: ::1 cipher::" $cipher
+#.   
+#.       # get the pass from the user and check it
+#.       if option_is_set --tomb-pwd; then
+#.           tomb_pwd="`option_value --tomb-pwd`"
+#: tomb:1532
 msgid "Locking using cipher: ::1 cipher::"
 msgstr "Vérouillage avec l'algorithme de chiffrement : ::1 cipher::"
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           ask_key_password "$tomb_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#. >     _success "Locking ::1 tomb file:: with ::2 tomb key file::" $TOMBFILE $TOMBKEYFILE
+#.   
+#.       _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #: tomb:1544
+msgid "Locking ::1 tomb file:: with ::2 tomb key file::"
+msgstr ""
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _success "Locking ::1 tomb file:: with ::2 tomb key file::" $TOMBFILE $TOMBKEYFILE
+#.   
+#. >     _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #.           luksFormat ${nstloop}
+#.       [[ $? == 0 ]] || {
+#: tomb:1546
+msgid "Formatting Luks mapped device."
+msgstr "Formatage du dispositif LUKS désigné."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #.           luksFormat ${nstloop}
+#.       [[ $? == 0 ]] || {
+#. >         _warning "cryptsetup luksFormat returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#: tomb:1551
+msgid "cryptsetup luksFormat returned an error."
+msgstr "Une erreur s'est produite à l'exécution de cryptsetup luksFormat"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       [[ $? == 0 ]] || {
+#.           _warning "cryptsetup luksFormat returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#. >         _warning "cryptsetup luksOpen returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#: tomb:1556
 #, fuzzy
 msgid "cryptsetup luksOpen returned an error."
 msgstr "Une erreur s'est produite à l'exécution de cryptsetup luksFormat"
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#.           _warning "cryptsetup luksOpen returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#. >     _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _warning "Tomb format returned an error."
+#: tomb:1559
+msgid "Formatting your Tomb with Ext3/Ext4 filesystem."
+msgstr "Formatage de votre tombe avec un système de fichier Ext3/Ext4."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _failure "Operation aborted." }
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _warning "Tomb format returned an error."
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#: tomb:1563
+msgid "Tomb format returned an error."
+msgstr "Une erreur s'est produite à l'exécution du formatage."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _warning "Tomb format returned an error."
+#. >         _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#: tomb:1564
 msgid "Your tomb ::1 tomb file:: may be corrupted."
 msgstr "Votre tombe ::1 tomb file:: pourrait être corrompu."
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Tomb format returned an error."
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#. >     _message "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::" $TOMBNAME $cipher
+#.       _success "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::" #.           $TOMBPATH $TOMBKEYFILE
+#.   
+#.   }
+#: tomb:1569
 #, fuzzy
 msgid "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::"
-msgstr "Vérouillage accompli de ::1 tomb name:: avec LUKS dm-crypt ::1 cipher::"
+msgstr ""
+"Vérouillage accompli de ::1 tomb name:: avec LUKS dm-crypt ::1 cipher::"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#.       _message "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::" $TOMBNAME $cipher
+#. >     _success "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::" #.           $TOMBPATH $TOMBKEYFILE
+#.   
+#.   }
+#.   
+#: tomb:1570
+msgid ""
+"Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::"
+msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.   # This function changes the key that locks a tomb
+#.   change_tomb_key() {
+#.       local tombkey="$1"      # Path to the tomb's key file
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#. >     _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#: tomb:1580
 msgid "Commanded to reset key for tomb ::1 tomb path::"
 msgstr "L'ordre est de réinitialiser la clé pour la tomb ::1 tomb path::"
 
-#: warning
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       local tombkey="$1"      # Path to the tomb's key file
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#. >         _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#.           _failure "Execution aborted."
+#.       }
+#.   
+#: tomb:1583
 msgid "Command 'setkey' needs two arguments: the old key file and the tomb."
-msgstr "La commande 'setkey' requiert deux arguments : le chemin de l'ancienne clé, et celui de la tombe."
-
-#: warning
+msgstr ""
+"La commande 'setkey' requiert deux arguments : le chemin de l'ancienne clé, "
+"et celui de la tombe."
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#. >         _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#.           _failure "Execution aborted."
+#.       }
+#.   
+#.       _check_swap
+#: tomb:1584
 msgid "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
 msgstr "c-à-d. : tomb -k nouvelle.clé.key ancienne.clé.key mes.secrets.tomb"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#. >         _failure "Execution aborted."
+#.       }
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#: tomb:1585
 #, fuzzy
 msgid "Execution aborted."
 msgstr "L'opération est interrompue."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       # is it a LUKS encrypted nest? we check one more time
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Not a valid LUKS encrypted volume: ::1 volume::" $TOMBPATH }
+#.   
+#.       _load_key $tombkey    # Try loading given key and set TOMBKEY and
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#: tomb:1596
 #, fuzzy
 msgid "Not a valid LUKS encrypted volume: ::1 volume::"
 msgstr "Cette tombe est un dispositif chiffré LUKS valide."
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       _load_key $tombkey    # Try loading given key and set TOMBKEY and
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#.       local oldkeyfile=$TOMBKEYFILE
+#.   
+#.       # we have everything, prepare to mount
+#. >     _success "Changing lock on tomb ::1 tomb name::" $TOMBNAME
+#.       _message "Old key: ::1 old key::" $oldkeyfile
+#.   
+#.       # render the mapper
+#.       mapdate=`date +%s`
+#: tomb:1604
+msgid "Changing lock on tomb ::1 tomb name::"
+msgstr ""
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#.       local oldkeyfile=$TOMBKEYFILE
+#.   
+#.       # we have everything, prepare to mount
+#.       _success "Changing lock on tomb ::1 tomb name::" $TOMBNAME
+#. >     _message "Old key: ::1 old key::" $oldkeyfile
+#.   
+#.       # render the mapper
+#.       mapdate=`date +%s`
+#.       # save date of mount in minutes since 1970
+#: tomb:1605
 #, fuzzy
 msgid "Old key: ::1 old key::"
 msgstr "Clé précédente : ::1 key::"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _verbose "tomb-old-pwd = ::1 old pass::" $tomb_old_pwd
+#.           ask_key_password "$tomb_old_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || {
+#. >         _failure "No valid password supplied for the old key." }
+#.       old_secret=$TOMBSECRET
+#.   
+#.       # luksOpen the tomb (not really mounting, just on the loopback)
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #: tomb:1621
 msgid "No valid password supplied for the old key."
 msgstr "Aucun mot de passe valide n'a été fourni pour l'ancienne clé."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _failure "No valid password supplied for the old key." }
+#.       old_secret=$TOMBSECRET
+#.   
+#.       # luksOpen the tomb (not really mounting, just on the loopback)
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksOpen ${nstloop} ${mapper}
+#. >     [[ $? == 0 ]] || _failure "Unexpected error in luksOpen."
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#.       _message "New key: ::1 key file::" $TOMBKEYFILE
+#: tomb:1627
 msgid "Unexpected error in luksOpen."
 msgstr "Une erreur inattendue s'est produite lors de luksOpen."
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksOpen ${nstloop} ${mapper}
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksOpen."
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#. >     _message "New key: ::1 key file::" $TOMBKEYFILE
+#.   
+#.       if option_is_set --tomb-pwd; then
+#.           tomb_new_pwd="`option_value --tomb-pwd`"
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_new_pwd
+#: tomb:1631
 msgid "New key: ::1 key file::"
 msgstr "Nouvelle clé : ::1 key file::"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_new_pwd
+#.           ask_key_password "$tomb_new_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || {
+#. >         _failure "No valid password supplied for the new key." }
+#.   
+#.       _tmp_create
+#.       tmpnewkey=$TOMBTMP
+#.       print -R -n - "$TOMBSECRET" >> $tmpnewkey
+#: tomb:1641
 msgid "No valid password supplied for the new key."
 msgstr "Aucun mot de passe n'a été fourni pour la nouvelle clé."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       tmpnewkey=$TOMBTMP
+#.       print -R -n - "$TOMBSECRET" >> $tmpnewkey
+#.   
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#. >     [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#: tomb:1650
 msgid "Unexpected error in luksChangeKey."
 msgstr "Une erreur inattendue s'est produite lors de luksChangeKey."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#. >     sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#.       _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#: tomb:1652
 msgid "Unexpected error in luksClose."
 msgstr "Une erreur inattendue s'est produite lors de luksClose."
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#. >     _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#.       _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#.       return 0
+#.   }
+#: tomb:1654
+msgid "Succesfully changed key for tomb: ::1 tomb file::"
+msgstr ""
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#. >     _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1655
 #, fuzzy
 msgid "The new key is: ::1 new key::"
 msgstr "La nouvelle clé est : ::1 key::"
 
-#: failure
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.   # {{{ Open
+#.   
+#.   # $1 = tombfile $2(optional) = mountpoint
+#.   mount_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#. >     [[ -n "$tombpath" ]] || _failure "No tomb name specified for opening."
+#.   
+#.       _message "Commanded to open tomb ::1 tomb name::" $1
+#.   
+#.       _check_swap
+#: tomb:1667
 #, fuzzy
 msgid "No tomb name specified for opening."
 msgstr "Merci de spécifier le nom de la tombe à agrandir."
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.   # $1 = tombfile $2(optional) = mountpoint
+#.   mount_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.       [[ -n "$tombpath" ]] || _failure "No tomb name specified for opening."
+#.   
+#. >     _message "Commanded to open tomb ::1 tomb name::" $1
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#.   
+#: tomb:1669
 #, fuzzy
 msgid "Commanded to open tomb ::1 tomb name::"
 msgstr "Ouverture de la tombe ::1 tomb file::"
 
-#: warning
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#.   
+#.       # check file type (if its a Luks fs)
+#.       [[ "`file $TOMBPATH`" =~ "luks encrypted file" ]] || {
+#. >         _warning "::1 tomb file:: is not a valid tomb file" $TOMBFILE
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#: tomb:1676
 msgid "::1 tomb file:: is not a valid tomb file"
 msgstr "::1 tomb file:: n'est pas un fichier de tombe valide."
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#.       tombmount=${2:-/media/$TOMBFILE}
+#.       [[ -z "$2" ]] && {
+#. >         _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#: tomb:1686
 msgid "Mountpoint not specified, using default: ::1 mount point::"
-msgstr "Le point de montage n'a pas été précisé, nous utilisons donc ::1 mount point::"
-
-#: warning
+msgstr ""
+"Le point de montage n'a pas été précisé, nous utilisons donc ::1 mount "
+"point::"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       tombmount=${2:-/media/$TOMBFILE}
+#.       [[ -z "$2" ]] && {
+#.           _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#. >         _warning "::1 tomb name:: is already open." $TOMBNAME
+#.           _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#: tomb:1690
 msgid "::1 tomb name:: is already open."
 msgstr "::1 tomb name:: est déjà ouverte."
 
-#: failure
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       [[ -z "$2" ]] && {
+#.           _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#. >         _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#.       _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#: tomb:1691
+msgid "Here below its status is reported:"
+msgstr "L'état de la tombe suit :"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#.           _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#. >     _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#: tomb:1695
+msgid "Opening ::1 tomb file:: on ::2 mount point::"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#.       sudo cryptsetup isLuks ${nstloop} || {
+#.           # is it a LUKS encrypted nest? see cryptsetup(1)
+#. >         _failure "::1 tomb file:: is not a valid Luks encrypted storage file." $TOMBFILE }
+#.   
+#.       _message "This tomb is a valid LUKS encrypted device."
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#: tomb:1702
 msgid "::1 tomb file:: is not a valid Luks encrypted storage file."
 msgstr "::1 tomb file:: n'est pas un fichier chiffré de stockage LUKS valide."
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       nstloop=`lo_new`
+#.   
+#.       sudo cryptsetup isLuks ${nstloop} || {
+#.           # is it a LUKS encrypted nest? see cryptsetup(1)
+#.           _failure "::1 tomb file:: is not a valid Luks encrypted storage file." $TOMBFILE }
+#.   
+#. >     _message "This tomb is a valid LUKS encrypted device."
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#.       tombdump=(`print $luksdump | awk '
+#.           /^Cipher name/ {print $3}
+#: tomb:1704
+msgid "This tomb is a valid LUKS encrypted device."
+msgstr "Cette tombe est un dispositif chiffré LUKS valide."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#.       tombdump=(`print $luksdump | awk '
+#.           /^Cipher name/ {print $3}
+#.           /^Cipher mode/ {print $3}
+#.           /^Hash spec/   {print $3}'`)
+#. >     _message "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\"" $tombdump[1] $tombdump[2] $tombdump[3]
+#.   
+#.       slotwarn=`print $luksdump | awk '
+#.           BEGIN { zero=0 }
+#.           /^Key slot 0/ { zero=1 }
+#: tomb:1711
 msgid "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\""
-msgstr "Algorithme de chiffrement \"::1 cipher::\" en mode \"::2 mode::\" et la fonction de hachage \"::3 hash::\"."
+msgstr ""
+"Algorithme de chiffrement \"::1 cipher::\" en mode \"::2 mode::\" et la "
+"fonction de hachage \"::3 hash::\"."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       slotwarn=`print $luksdump | awk '
+#.           BEGIN { zero=0 }
+#.           /^Key slot 0/ { zero=1 }
+#.           /^Key slot.*ENABLED/ { if(zero==1) print "WARN" }'`
+#.       [[ "$slotwarn" == "WARN" ]] && {
+#. >         _warning "Multiple key slots are enabled on this tomb. Beware: there can be a backdoor." }
+#.   
+#.       # save date of mount in minutes since 1970
+#.       mapdate=`date +%s`
+#.   
+#: tomb:1718
+msgid ""
+"Multiple key slots are enabled on this tomb. Beware: there can be a backdoor."
+msgstr ""
+"Plusieurs serrures sont disponibles pour cette tombe. Attention : il "
+"pourrait s'agit de portes dérobées."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           ask_key_password
+#.       }
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _cryptsetup luksOpen ${nstloop} ${mapper}
+#.       [[ $? = 0 ]] || {
+#. >         _failure "Failure mounting the encrypted file." }
+#.   
+#.       # preserve the loopdev after exit
+#.       lo_preserve "$nstloop"
+#.   
+#: tomb:1742
+msgid "Failure mounting the encrypted file."
+msgstr "Le montage du fichier chiffré a échoué."
 
-#: warning
-msgid "Multiple key slots are enabled on this tomb. Beware: there can be a backdoor."
-msgstr "Plusieurs serrures sont disponibles pour cette tombe. Attention : il pourrait s'agit de portes dérobées."
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       # array: [ cipher, keysize, loopdevice ]
+#.       tombstat=(`sudo cryptsetup status ${mapper} | awk '
+#.       /cipher:/  {print $2}
+#.       /keysize:/ {print $2}
+#.       /device:/  {print $2}'`)
+#. >     _success "Success unlocking tomb ::1 tomb name::" $TOMBNAME
+#.       _verbose "Key size is ::1 size:: for cipher ::2 cipher::" $tombstat[2] $tombstat[1]
+#.   
+#.       _message "Checking filesystem via ::1::" $tombstat[3]
+#.       sudo fsck -p -C0 /dev/mapper/${mapper}
+#: tomb:1752
+msgid "Success unlocking tomb ::1 tomb name::"
+msgstr ""
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       /cipher:/  {print $2}
+#.       /keysize:/ {print $2}
+#.       /device:/  {print $2}'`)
+#.       _success "Success unlocking tomb ::1 tomb name::" $TOMBNAME
+#.       _verbose "Key size is ::1 size:: for cipher ::2 cipher::" $tombstat[2] $tombstat[1]
+#.   
+#. >     _message "Checking filesystem via ::1::" $tombstat[3]
+#.       sudo fsck -p -C0 /dev/mapper/${mapper}
+#.       _verbose "Tomb engraved as ::1 tomb name::" $TOMBNAME
+#.       sudo tune2fs -L $TOMBNAME /dev/mapper/${mapper} > /dev/null
+#.   
+#: tomb:1755
 msgid "Checking filesystem via ::1::"
 msgstr "Vérification du système de fichiers avec ::1::"
 
-#: message
-msgid "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::"
-msgstr "Dernière visite par ::1 user::(::2 tomb build) depuis ::3 tty:: sur ::4 host::"
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       # TODO: safety check MOUNTOPTS
+#.       # safe_mount_options && #.       sudo mount -o $MOUNTOPTS /dev/mapper/${mapper} ${tombmount}
+#.       # Clean up if the mount failed
+#.       [[ $? == 0 ]] || {
+#. > 	_warning "Error mounting ::1 mapper:: on ::2 tombmount::" $mapper $tombmount
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #.   	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#: tomb:1773
+msgid "Error mounting ::1 mapper:: on ::2 tombmount::"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       # safe_mount_options && #.       sudo mount -o $MOUNTOPTS /dev/mapper/${mapper} ${tombmount}
+#.       # Clean up if the mount failed
+#.       [[ $? == 0 ]] || {
+#.   	_warning "Error mounting ::1 mapper:: on ::2 tombmount::" $mapper $tombmount
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #. > 	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#.   	[[ -e /dev/mapper/$mapper ]] && sudo cryptsetup luksClose $mapper
+#.   	# The loop is taken care of in _endgame()
+#: tomb:1775
+msgid "Are mount options '::1 mount options::' valid?"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #.   	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#.   	[[ -e /dev/mapper/$mapper ]] && sudo cryptsetup luksClose $mapper
+#.   	# The loop is taken care of in _endgame()
+#. > 	_failure "Cannot mount ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       sudo chown $UID:$GID ${tombmount}
+#.       sudo chmod 0711 ${tombmount}
+#: tomb:1780
+msgid "Cannot mount ::1 tomb name::"
+msgstr ""
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   	_failure "Cannot mount ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       sudo chown $UID:$GID ${tombmount}
+#.       sudo chmod 0711 ${tombmount}
+#.   
+#. >     _success "Success opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#.   
+#.       local tombtty tombhost tombuid tombuser
+#.   
+#.       # print out when was opened the last time, by whom and where
+#: tomb:1786
+msgid "Success opening ::1 tomb file:: on ::2 mount point::"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           tombuid=$(_cat ${tombmount}/.uid | tr -d ' ')
+#.           tomblast=$(_cat ${tombmount}/.last | tr -d ' ')
+#.           for e in ${(f@)mapfile[/etc/passwd]}; do
+#.               [[ "$e" =~ ":$tombuid:" ]] && {
+#.                   tombuser="${e[(ws@:@)1]}" }
+#.           done
+#. >         _message "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::" $tombuser $tombuid $tombtty $tombhost
+#.           _message "on date ::1 date::" "`date --date=@${tomblast} +%c`"
+#.       }
+#.       # write down the UID and TTY that opened the tomb
+#.       rm -f ${tombmount}/.uid
+#: tomb:1800
+msgid "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::"
+msgstr ""
+"Dernière visite par ::1 user::(::2 tomb build) depuis ::3 tty:: sur ::4 "
+"host::"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           tomblast=$(_cat ${tombmount}/.last | tr -d ' ')
+#.           for e in ${(f@)mapfile[/etc/passwd]}; do
+#.               [[ "$e" =~ ":$tombuid:" ]] && {
+#.                   tombuser="${e[(ws@:@)1]}" }
+#.           done
+#.           _message "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::" $tombuser $tombuid $tombtty $tombhost
+#. >         _message "on date ::1 date::" "`date --date=@${tomblast} +%c`"
+#.       }
+#.       # write down the UID and TTY that opened the tomb
+#.       rm -f ${tombmount}/.uid
+#.       print $_UID > ${tombmount}/.uid
+#: tomb:1801
 msgid "on date ::1 date::"
 msgstr "le ::1 date::"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.   
+#.       # Default mount options are overridden with the -o switch
+#.       [[ -n ${(k)OPTS[-o]} ]] && MOUNTOPTS=${OPTS[-o]}
+#.   
+#.       # No HOME set? Note: this should never happen again.
+#.       [[ -z $HOME ]] && {
+#. >         _warning "How pitiful!  A tomb, and no HOME."
+#.           return 1 }
+#.   
+#.       [[ -z $mnt || ! -d $mnt ]] && {
+#.           _warning "Cannot exec bind hooks without a mounted tomb."
+#: tomb:1849
+msgid "How pitiful!  A tomb, and no HOME."
+msgstr "C'est pitoyable ! Une tombe, mais sans abri (HOME n'est pas défini)."
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       # No HOME set? Note: this should never happen again.
+#.       [[ -z $HOME ]] && {
+#.           _warning "How pitiful!  A tomb, and no HOME."
+#.           return 1 }
+#.   
+#.       [[ -z $mnt || ! -d $mnt ]] && {
+#. >         _warning "Cannot exec bind hooks without a mounted tomb."
+#.           return 1 }
+#.   
+#.       [[ -r "$mnt/bind-hooks" ]] || {
+#.           _verbose "bind-hooks not found in ::1 mount point::" $mnt
+#: tomb:1853
+msgid "Cannot exec bind hooks without a mounted tomb."
+msgstr ""
+"L'exécution des ordres de montage ne peut se faire que si la tombe est "
+"montée."
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       # better parsing for bind hooks checks for two separated words on
+#.       # each line, using zsh word separator array subscript
+#.       _bindhooks="${mapfile[${mnt}/bind-hooks]}"
+#.       for h in ${(f)_bindhooks}; do
+#.           s="${h[(w)1]}"
+#.           d="${h[(w)2]}"
+#. >         [[ "$s" = "" ]] && { _warning "bind-hooks file is broken"; return 1 }
+#.           [[ "$d" = "" ]] && { _warning "bind-hooks file is broken"; return 1 }
+#.           maps+=($s $d)
+#.           _verbose "bind-hook found: $s -> $d"
+#.       done
+#: tomb:1869
 msgid "bind-hooks file is broken"
 msgstr "Le fichier bind-hooks comporte des erreurs."
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.           _verbose "bind-hook found: $s -> $d"
+#.       done
+#.       unset _bindhooks
+#.   
+#.       for dir in ${(k)maps}; do
+#.           [[ "${dir[1]}" == "/" || "${dir[1,2]}" == ".." ]] && {
+#. >             _warning "bind-hooks map format: local/to/tomb local/to/\$HOME"
+#.               continue }
+#.   
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#: tomb:1878
 #, fuzzy
 msgid "bind-hooks map format: local/to/tomb local/to/$HOME"
-msgstr "La correspondance de montage suit le format : local/à/la/tombe local/à/HOME"
-
-#: warning
+msgstr ""
+"La correspondance de montage suit le format : local/à/la/tombe local/à/HOME"
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       for dir in ${(k)maps}; do
+#.           [[ "${dir[1]}" == "/" || "${dir[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME"
+#.               continue }
+#.   
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#. >             _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#: tomb:1882
 #, fuzzy
 msgid "bind-hooks map format: local/to/tomb local/to/$HOME.  Rolling back"
-msgstr "Les montages doivent s'annoncer localement : local/à/la/tombe local/à/HOME. Annulation."
-
-#: warning
+msgstr ""
+"Les montages doivent s'annoncer localement : local/à/la/tombe local/à/HOME. "
+"Annulation."
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#. >             _warning "bind-hook target not existent, skipping ::1 home::/::2 subdir::" $HOME ${maps[$dir]}
+#.           elif [[ ! -r "$mnt/$dir" ]]; then
+#.               _warning "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::" $mnt $dir
+#.           else
+#.               sudo mount -o bind,$MOUNTOPTS $mnt/$dir $HOME/${maps[$dir]} #: tomb:1887
 #, fuzzy
 msgid "bind-hook target not existent, skipping ::1 home::/::2 subdir::"
-msgstr "La cible du point de montage n'existe pas. Le chemin ::1 home::/::2 dir:: est ignoré."
-
-#: warning
+msgstr ""
+"La cible du point de montage n'existe pas. Le chemin ::1 home::/::2 dir:: "
+"est ignoré."
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#.               _warning "bind-hook target not existent, skipping ::1 home::/::2 subdir::" $HOME ${maps[$dir]}
+#.           elif [[ ! -r "$mnt/$dir" ]]; then
+#. >             _warning "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::" $mnt $dir
+#.           else
+#.               sudo mount -o bind,$MOUNTOPTS $mnt/$dir $HOME/${maps[$dir]} #.                   && mounted+=("$HOME/${maps[$dir]}")
+#.           fi
+#: tomb:1889
 #, fuzzy
-msgid "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::"
-msgstr "L'origine du point de montage n'est pas relatif à la tombe : le chemin ::1 mount point::/::2 dir:: est ignoré."
+msgid ""
+"bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::"
+msgstr ""
+"L'origine du point de montage n'est pas relatif à la tombe : le chemin ::1 "
+"mount point::/::2 dir:: est ignoré."
+
+#. Fold: Open
+#. Function: exec_safe_post_hooks
+#.
+#. Code sample:
+#.       # Only run if post-hooks has the executable bit set
+#.       [[ -x $mnt/post-hooks ]] || return
+#.   
+#.       # If the file starts with a shebang, run it.
+#.       cat $mnt/post-hooks | head -n1 | grep '^#!\s*/' &> /dev/null
+#.       [[ $? == 0 ]] && {
+#. >         _success "Post hooks found, executing as user ::1 user name::." $USERNAME
+#.           $mnt/post-hooks $act $mnt
+#.       }
+#.   }
+#.   
+#: tomb:1917
+msgid "Post hooks found, executing as user ::1 user name::."
+msgstr ""
 
-#: failure
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.       local tombname tombmount tombfs tombfsopts tombloop
+#.       local ts tombtot tombused tombavail tombpercent tombp tombsince
+#.       local tombtty tombhost tombuid tombuser
+#.       # list all open tombs
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#. >         _failure "I can't see any ::1 status:: tomb, may they all rest in peace." ${1:-open} }
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#: tomb:1936
 #, fuzzy
 msgid "I can't see any ::1 status:: tomb, may they all rest in peace."
 msgstr "Je ne vois aucune tombe ouverte, qu'ils reposent tous en paix."
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.                       tombuser="${ee[(ws@:@)1]}" }
+#.               done
+#.           }
+#.   
+#.           { option_is_set --get-mountpoint } && { print $tombmount; continue }
+#.   
+#. >         _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#.           _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#: tomb:1969
 msgid "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::"
-msgstr "La tombe ::1 tombname:: est ouverte sur ::2 tombmount:: avec les options ::3 tombfsopts::"
-
-#: message
+msgstr ""
+"La tombe ::1 tombname:: est ouverte sur ::2 tombmount:: avec les options ::3 "
+"tombfsopts::"
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.   
+#.           { option_is_set --get-mountpoint } && { print $tombmount; continue }
+#.   
+#.           _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#. >         _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#.               _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#: tomb:1972
 msgid "::1 tombname:: open since ::2 tombsince::"
 msgstr "La tombe ::1 tombname:: est ouverte depuis ::2 tombsince::"
 
-#: message
-msgid "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::"
-msgstr "La tombe ::1 tombname:: a été ouverte par ::2 tombuser:: depuis ::3 tombtty:: sur ::4 tombhost::"
-
-#: message
-msgid "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free "
-msgstr "La tombe ::1 tombname:: est de taille ::2 tombtot:: dont ::3 tombused:: (::5 tombpercent::%) sont utilisés. Il reste ::4 tombavail:: libres "
-
-#: warning
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.           _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#.           _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#. >             _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#.           }
+#.   
+#.           _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #: tomb:1975
+msgid ""
+"::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::"
+msgstr ""
+"La tombe ::1 tombname:: a été ouverte par ::2 tombuser:: depuis ::3 "
+"tombtty:: sur ::4 tombhost::"
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#.               _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#.           }
+#.   
+#. >         _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #.               $tombname $tombtot $tombused $tombavail $tombpercent
+#.   
+#.           [[ ${tombp} -ge 90 ]] && {
+#.               _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#: tomb:1979
+msgid ""
+"::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::"
+"%) is used: ::4 tombavail:: free "
+msgstr ""
+"La tombe ::1 tombname:: est de taille ::2 tombtot:: dont ::3 tombused:: (::5 "
+"tombpercent::%) sont utilisés. Il reste ::4 tombavail:: libres "
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.           }
+#.   
+#.           _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #.               $tombname $tombtot $tombused $tombavail $tombpercent
+#.   
+#.           [[ ${tombp} -ge 90 ]] && {
+#. >             _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#.           }
+#.   
+#.           # Now check hooks
+#.           mounted_hooks=(`list_tomb_binds $tombname`)
+#: tomb:1983
 msgid "::1 tombname:: warning: your tomb is almost full!"
 msgstr "::1 tombname:: attention : votre tombe est presque pleine !"
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.               _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#.           }
+#.   
+#.           # Now check hooks
+#.           mounted_hooks=(`list_tomb_binds $tombname`)
+#.           for h in ${mounted_hooks}; do
+#. >             _message "::1 tombname:: hooks ::2 hookname:: on ::3 hookdest::" #.                   $tombname "`basename ${h[(ws:;:)1]}`" ${h[(ws:;:)2]}
+#.           done
+#.       done
+#.   }
+#: tomb:1989
 msgid "::1 tombname:: hooks ::2 hookname:: on ::3 hookdest::"
 msgstr "::1 tombname:: montage de ::2 hookname:: sur ::3 hookdest::"
 
-#: failure
+#. Fold: List
+#. Function: list_tomb_binds
+#.
+#. Code sample:
+#.   # list_tomb_binds
+#.   # print out an array of mounted bind hooks (internal use)
+#.   # format is semi-colon separated list of attributes
+#.   # needs an argument: name of tomb whose hooks belong
+#.   list_tomb_binds() {
+#.       [[ -z "$1" ]] && {
+#. >         _failure "Internal error: list_tomb_binds called without argument." }
+#.   
+#.       # list bind hooks on util-linux 2.20 (Debian 7)
+#.       mount -l #.           | awk -vtomb="$1" '
+#: tomb:2044
 msgid "Internal error: list_tomb_binds called without argument."
-msgstr "Erreur interne : la fonction list_tomb_binds a été appelée sans argument."
-
-#: failure
+msgstr ""
+"Erreur interne : la fonction list_tomb_binds a été appelée sans argument."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   # {{{ Index and search
+#.   
+#.   # index files in all tombs for search
+#.   # $1 is optional, to specify a tomb
+#.   index_tombs() {
+#.       { command -v updatedb 1>/dev/null 2>/dev/null } || {
+#. >         _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#.           _warning "Cannot use GNU findutils for index/search commands." }
+#: tomb:2076
 msgid "Cannot index tombs on this system: updatedb (mlocate) not installed."
-msgstr "L'indexation des fichiers de la tombe ne peut se faire sur ce système : updatedb (mlocate) n'est pas installé."
-
-#: warning
+msgstr ""
+"L'indexation des fichiers de la tombe ne peut se faire sur ce système : "
+"updatedb (mlocate) n'est pas installé."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   index_tombs() {
+#.       { command -v updatedb 1>/dev/null 2>/dev/null } || {
+#.           _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#. >         _warning "Cannot use GNU findutils for index/search commands." }
+#.       [[ "$updatedbver" =~ "mlocate" ]] || {
+#.           _failure "Index command needs 'mlocate' to be installed." }
+#.   
+#.       _verbose "$updatedbver"
+#: tomb:2080
 msgid "Cannot use GNU findutils for index/search commands."
-msgstr "Impossible d'utiliser GNU findutils pour les commandes d'indexation et de recherche."
-
-#: failure
+msgstr ""
+"Impossible d'utiliser GNU findutils pour les commandes d'indexation et de "
+"recherche."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#.           _warning "Cannot use GNU findutils for index/search commands." }
+#.       [[ "$updatedbver" =~ "mlocate" ]] || {
+#. >         _failure "Index command needs 'mlocate' to be installed." }
+#.   
+#.       _verbose "$updatedbver"
+#.   
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#: tomb:2082
 msgid "Index command needs 'mlocate' to be installed."
-msgstr "La commande d'indexation nécessite que le programme 'mlocate' soit installé."
-
-#: failure
+msgstr ""
+"La commande d'indexation nécessite que le programme 'mlocate' soit installé."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.       _verbose "$updatedbver"
+#.   
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#. >             _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#.       _success "Creating and updating search indexes."
+#: tomb:2090
 #, fuzzy
 msgid "There seems to be no open tomb engraved as [::1::]"
 msgstr "Il ne semble pas y avoir de tombe ouverte comme [::1 tomb name::]"
 
-#: message
-msgid "Skipping ::1 tomb name:: (.noindex found)."
-msgstr "::1 tomb name:: comporte in fichier .noindex : ses fichiers n'apparaîtront pas dans les résultats de recherche."
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#.               _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#. >         _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#.       _success "Creating and updating search indexes."
+#.   
+#.       # start the LibreOffice document converter if installed
+#: tomb:2092
+msgid "I can't see any open tomb, may they all rest in peace."
+msgstr "Je ne vois aucune tombe ouverte, qu'ils reposent tous en paix."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#.               _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#. >     _success "Creating and updating search indexes."
+#.   
+#.       # start the LibreOffice document converter if installed
+#.       { command -v unoconv 1>/dev/null 2>/dev/null } && {
+#.           unoconv -l 2>/dev/null &
+#: tomb:2094
+msgid "Creating and updating search indexes."
+msgstr ""
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.noindex ]] && {
+#. >             _message "Skipping ::1 tomb name:: (.noindex found)." $tombname
+#.               continue }
+#.           _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#: tomb:2107
+msgid "Skipping ::1 tomb name:: (.noindex found)."
+msgstr ""
+"::1 tomb name:: comporte in fichier .noindex : ses fichiers n'apparaîtront "
+"pas dans les résultats de recherche."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.noindex ]] && {
+#.               _message "Skipping ::1 tomb name:: (.noindex found)." $tombname
+#.               continue }
+#. >         _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#: tomb:2109
 msgid "Indexing ::1 tomb name:: filenames..."
 msgstr "Index des fichiers dans ::1 tomb name:: en cours..."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.               continue }
+#.           _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#. >             _message "Indexing ::1 tomb name:: contents..." $tombname
+#.               [[ -r ${tombmount}/.swishrc ]] || {
+#.                   _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc
+#.                   cat <<EOF > ${tombmount}/.swishrc
+#.   # index directives
+#: tomb:2114
 msgid "Indexing ::1 tomb name:: contents..."
 msgstr "Index des contenus de ::1 tomb name:: en cours..."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#.               _message "Indexing ::1 tomb name:: contents..." $tombname
+#.               [[ -r ${tombmount}/.swishrc ]] || {
+#. >                 _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc
+#.                   cat <<EOF > ${tombmount}/.swishrc
+#.   # index directives
+#.   DefaultContents TXT*
+#.   IndexDir $tombmount
+#: tomb:2116
+msgid "Generating a new swish-e configuration file: ::1 swish conf::"
+msgstr ""
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.               }
+#.   
+#.               swish-e -c ${tombmount}/.swishrc -S fs -v3
+#.   
+#.           }
+#.   
+#. >         _message "Search index updated."
+#.       done
+#.   }
+#.   search_tombs() {
+#.       { command -v locate 1>/dev/null 2>/dev/null } || {
+#: tomb:2190
+msgid "Search index updated."
+msgstr "L'index de recherche a été mis à jour."
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.   
+#.       # list all open tombs
+#.       mounted_tombs=(`list_tomb_mounts`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#. >     _success "Searching for: ::1::" ${(f)@}
+#.       for t in ${mounted_tombs}; do
+#.           _verbose "Checking for index: ::1::" ${t}
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#: tomb:2210
+msgid "Searching for: ::1::"
+msgstr ""
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.           _verbose "Checking for index: ::1::" ${t}
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.updatedb ]] && {
+#.               # Use mlocate to search hits on filenames
+#. >             _message "Searching filenames in tomb ::1 tomb name::" $tombname
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#.               _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#: tomb:2218
 msgid "Searching filenames in tomb ::1 tomb name::"
 msgstr "Recherche parmi les fichiers dans la tombe ::1 tomb name::"
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.updatedb ]] && {
+#.               # Use mlocate to search hits on filenames
+#.               _message "Searching filenames in tomb ::1 tomb name::" $tombname
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#. >             _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#: tomb:2220
 msgid "Matches found: ::1 matches::"
 msgstr "Résultats trouvés : ::1 matches::"
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#.               _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#. >                 _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#: tomb:2225
 msgid "Searching contents in tomb ::1 tomb name::"
 msgstr "Recherche parmi les contenus de la tombe ::1 tomb name::"
 
-#: warning
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#. >             _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#.       done
+#.       _message "Search completed."
+#.   }
+#: tomb:2228
 msgid "Skipping tomb ::1 tomb name::: not indexed."
 msgstr "La tombe ::1 tomb name:: n'est pas indexée, et donc ignorée."
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#. >             _warning "Run 'tomb index' to create indexes." }
+#.       done
+#.       _message "Search completed."
+#.   }
+#.   
+#: tomb:2229
+msgid "Run 'tomb index' to create indexes."
+msgstr "Exécuter 'tomb index' pour générer les index."
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#.       done
+#. >     _message "Search completed."
+#.   }
+#.   
+#.   # }}} - Index and search
+#.   
+#: tomb:2231
+msgid "Search completed."
+msgstr "La recherche est terminée."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   # {{{ Resize
+#.   
+#.   # resize tomb file size
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#. >     _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#: tomb:2242
 #, fuzzy
 msgid "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes."
 msgstr "Agrandissement de la tombe ::1 tomb file:: ::2 size::s] Mo."
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   # resize tomb file size
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#.       _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#. >     [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#: tomb:2244
+msgid "No tomb name specified for resizing."
+msgstr "Merci de spécifier le nom de la tombe à agrandir."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#.       _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#. >     [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#.           _failure "Aborting operations: new size was not specified, use -s" }
+#: tomb:2245
 msgid "Cannot find ::1::"
 msgstr "::1:: reste introuvable."
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#. >         _failure "Aborting operations: new size was not specified, use -s" }
+#.   
+#.       is_valid_tomb $tombpath        # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#: tomb:2249
 msgid "Aborting operations: new size was not specified, use -s"
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       local oldtombsize=$(( `stat -c %s "$TOMBPATH" 2>/dev/null` / 1048576 ))
+#.       local mounted_tomb=`mount -l |
+#.           awk -vtomb="[$TOMBNAME]" '/^\/dev\/mapper\/tomb/ { if($7==tomb) print $1 }'`
+#.   
+#.       # Tomb must not be open
+#.       [[ -z "$mounted_tomb" ]] || {
+#. >         _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#: tomb:2261
 msgid "Please close the tomb ::1 tomb name:: before trying to resize it."
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   
+#.       # Tomb must not be open
+#.       [[ -z "$mounted_tomb" ]] || {
+#.           _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#. >         _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#.       [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#: tomb:2264
 msgid "You must specify the new size of ::1 tomb name::"
 msgstr "Vous devez spécifier la nouvelle taille de ::1 tomb name::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       [[ -z "$mounted_tomb" ]] || {
+#.           _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#. >     [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#.           _failure "The new size must be greater then old tomb size." }
+#.   
+#: tomb:2266
+msgid "Size is not an integer."
+msgstr "La taille doit être un nombre entier."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#.       [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#. >         _failure "The new size must be greater then old tomb size." }
+#.   
+#.       delta="$(( $newtombsize - $oldtombsize ))"
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $newtombsize
+#: tomb:2269
+msgid "The new size must be greater then old tomb size."
+msgstr "La nouvelle taille doit être supérieure à l'ancienne."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $newtombsize
+#.   
+#.       _verbose "Data dump using ::1:: from /dev/urandom" ${DD[1]}
+#.       ${=DD} if=/dev/urandom bs=1048576 count=${delta} >> $TOMBPATH
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Error creating the extra resize ::1 size::, operation aborted." $tmp_resize }
+#.   
+#.       { option_is_set --tomb-pwd } && {
+#.           tomb_pwd="`option_value --tomb-pwd`"
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_pwd
+#: tomb:2279
 #, fuzzy
 msgid "Error creating the extra resize ::1 size::, operation aborted."
-msgstr "Erreur lors de la création de la tombe ::1 dir::/::2 tomb file::. Opération annulée."
-
-#: failure
+msgstr ""
+"Erreur lors de la création de la tombe ::1 dir::/::2 tomb file::. Opération "
+"annulée."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       mapper="tomb.$TOMBNAME.$mapdate.$(basename $nstloop)"
+#.   
+#.       _cryptsetup luksOpen ${nstloop} ${mapper} || {
+#.           _failure "Failure mounting the encrypted file." }
+#.   
+#.       sudo cryptsetup resize "${mapper}" || {
+#. >         _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#.           _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#: tomb:2300
 #, fuzzy
 msgid "cryptsetup failed to resize ::1 mapper::"
 msgstr "resize2fs n'a pas pu redimensionner ::1 mapper::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.           _failure "Failure mounting the encrypted file." }
+#.   
+#.       sudo cryptsetup resize "${mapper}" || {
+#.           _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#. >         _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#.       sudo resize2fs /dev/mapper/${mapper} || {
+#.           _failure "resize2fs failed to resize ::1 mapper::" $mapper }
+#.   
+#: tomb:2303
 msgid "e2fsck failed to check ::1 mapper::"
 msgstr "e2fsck n'a pas pu vérifier ::1 mapper::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.           _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#.           _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#.       sudo resize2fs /dev/mapper/${mapper} || {
+#. >         _failure "resize2fs failed to resize ::1 mapper::" $mapper }
+#.   
+#.       # close and free the loop device
+#.       sudo cryptsetup luksClose "${mapper}"
+#.   
+#: tomb:2306
 msgid "resize2fs failed to resize ::1 mapper::"
 msgstr "resize2fs n'a pas pu redimensionner ::1 mapper::"
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           mounted_tombs=(`list_tomb_mounts`)
+#.       else
+#.           mounted_tombs=(`list_tomb_mounts $1`)
+#.       fi
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#. >         _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#.           _warning "Too many tombs mounted, please specify one (see tomb list)"
+#.           _warning "or issue the command 'tomb close all' to close them all."
+#: tomb:2330
+msgid "There is no open tomb to be closed."
+msgstr "Il n'y a pas de tombe à fermer."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.       fi
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#. >         _warning "Too many tombs mounted, please specify one (see tomb list)"
+#.           _warning "or issue the command 'tomb close all' to close them all."
+#.           _failure "Operation aborted." }
+#.   
+#.       for t in ${mounted_tombs}; do
+#: tomb:2333
+msgid "Too many tombs mounted, please specify one (see tomb list)"
+msgstr "Trop de tombes sont montées, merci d'en choisir une (voir 'tomb list')"
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#.           _warning "Too many tombs mounted, please specify one (see tomb list)"
+#. >         _warning "or issue the command 'tomb close all' to close them all."
+#.           _failure "Operation aborted." }
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#: tomb:2334
+msgid "or issue the command 'tomb close all' to close them all."
+msgstr "ou bien exécuter 'tomb close all' pour les fermer toutes."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           _verbose "Name: ::1 tomb name::" $tombname
+#.           _verbose "Mount: ::1 mount point::" $tombmount
+#.           _verbose "Mapper: ::1 mapper::" $mapper
+#.   
+#.           [[ -e "$mapper" ]] && {
+#. >             _warning "Tomb not found: ::1 tomb file::" $1
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#: tomb:2350
 #, fuzzy
 msgid "Tomb not found: ::1 tomb file::"
 msgstr "Tombe introuvable : ::1 tomb name::"
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           _verbose "Name: ::1 tomb name::" $tombname
+#.           _verbose "Mount: ::1 mount point::" $tombmount
+#.           _verbose "Mapper: ::1 mapper::" $mapper
+#.   
+#.           [[ -e "$mapper" ]] && {
+#.               _warning "Tomb not found: ::1 tomb file::" $1
+#. >             _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #: tomb:2351
+msgid "Please specify an existing tomb."
+msgstr "Merci d'indiquer une tombe existante."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           [[ -e "$mapper" ]] && {
+#.               _warning "Tomb not found: ::1 tomb file::" $1
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#. >             _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#: tomb:2355
+msgid "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::"
+msgstr ""
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#. >             _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#.               _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #: tomb:2357
+msgid "Kill all processes busy inside the tomb."
+msgstr "Exécution (sommaire) de tous les processus en cours dans la tombe."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#. >                 _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#.               _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount }
+#.   
+#: tomb:2359
 msgid "Cannot slam the tomb ::1 tomb name::"
 msgstr "La tombe ::1 tomb name:: ne peut pas être fermée !"
 
-#: message
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#. >             _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount }
+#.   
+#.           # check if there are binded dirs and close them
+#.           bind_tombs=(`list_tomb_binds $tombname`)
+#: tomb:2361
 msgid "Closing tomb ::1 tomb name:: mounted on ::2 mount point::"
 msgstr "Fermeture de la tombe ::1 tomb name:: montée sur ::2 mount point::."
 
-#: message
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # check if there are binded dirs and close them
+#.           bind_tombs=(`list_tomb_binds $tombname`)
+#.           for b in ${bind_tombs}; do
+#.               bind_mapper="${b[(ws:;:)1]}"
+#.               bind_mount="${b[(ws:;:)2]}"
+#. >             _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#: tomb:2369
 msgid "Closing tomb bind hook: ::1 hook::"
 msgstr "Retrait du point de montage : ::1 hook::"
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           for b in ${bind_tombs}; do
+#.               bind_mapper="${b[(ws:;:)1]}"
+#.               bind_mount="${b[(ws:;:)2]}"
+#.               _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#. >                     _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#.                           _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#: tomb:2372
+msgid "Slamming tomb: killing all processes using this hook."
+msgstr ""
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#. >                         _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#.                   } || {
+#.                       _warning "Tomb bind hook ::1 hook:: is busy, cannot close tomb." $bind_mount }
+#.               }
+#: tomb:2375
 #, fuzzy
 msgid "Cannot slam the bind hook ::1 hook::"
 msgstr "Quelque chose coince à ::1 mount point::."
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#.                           _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#.                   } || {
+#. >                     _warning "Tomb bind hook ::1 hook:: is busy, cannot close tomb." $bind_mount }
+#.               }
+#.           done
+#.   
+#.           # Execute post-hooks for eventual cleanup
+#: tomb:2378
 #, fuzzy
 msgid "Tomb bind hook ::1 hook:: is busy, cannot close tomb."
-msgstr "Le point de montage ::1 mount point:: est occupé et ne peut pas être fermé."
+msgstr ""
+"Le point de montage ::1 mount point:: est occupé et ne peut pas être fermé."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           # Execute post-hooks for eventual cleanup
+#.           { option_is_set -n } || {
+#.               exec_safe_post_hooks ${tombmount%%/} close }
+#.   
+#.           _verbose "Performing umount of ::1 mount point::" $tombmount
+#.           sudo umount ${tombmount}
+#. >         [[ $? = 0 ]] || { _warning "Tomb is busy, cannot umount!"; return 1 }
+#.   
+#.           # If we used a default mountpoint and is now empty, delete it
+#.           [[ "$tombmount" == "/media/$tombname.tomb" ]] && { rmdir $tombmount }
+#.   
+#: tomb:2388
+msgid "Tomb is busy, cannot umount!"
+msgstr "La tombe est occupée et ne peut pas être démontée !"
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # If we used a default mountpoint and is now empty, delete it
+#.           [[ "$tombmount" == "/media/$tombname.tomb" ]] && { rmdir $tombmount }
+#.   
+#.           sudo cryptsetup luksClose $mapper
+#.           [[ $? == 0 ]] || {
+#. >             _failure "Error occurred in cryptsetup luksClose ::1 mapper::" $mapper }
+#.   
+#.           # Normally the loopback device is detached when unused
+#.           [[ -e "/dev/$tombloop" ]] && sudo losetup -d "/dev/$tombloop"
+#.           [[ $? = 0 ]] || {
+#: tomb:2395
 msgid "Error occurred in cryptsetup luksClose ::1 mapper::"
-msgstr "Une erreur s'est produite lors de l'exécution de cryptsetup luksClose ::1 mapper::."
+msgstr ""
+"Une erreur s'est produite lors de l'exécution de cryptsetup luksClose ::1 "
+"mapper::."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # Normally the loopback device is detached when unused
+#.           [[ -e "/dev/$tombloop" ]] && sudo losetup -d "/dev/$tombloop"
+#.           [[ $? = 0 ]] || {
+#.               _verbose "/dev/$tombloop was already closed." }
+#.   
+#. >         _success "Tomb ::1 tomb name:: closed: your bones will rest in peace." $tombname
+#.   
+#.       done # loop across mounted tombs
+#.   
+#.       return 0
+#: tomb:2402
+msgid "Tomb ::1 tomb name:: closed: your bones will rest in peace."
+msgstr ""
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               return 1
+#.           fi
+#.           return 0
+#.       fi
+#.       unset discardme
+#.       if ! zparseopts -M -E -D -Adiscardme ${every_opts}; then
+#. >         _failure "Error parsing."
+#.           return 127
+#.       fi
+#.       unset discardme
+#.       subcommand=$1
+#: tomb:2522
+msgid "Error parsing."
+msgstr "Erreur de syntaxe."
 
-#: warning
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       subcommand=$1
+#.       if [[ -z $subcommand ]]; then
+#.           subcommand="__default"
+#.       fi
+#.   
+#.       if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
+#. >         _warning "There's no such command \"::1 subcommand::\"." $subcommand
+#.           exitv=127 _failure "Please try -h for help."
+#.       fi
+#.       argv=("${(@)oldstar}")
+#.       unset oldstar
+#: tomb:2532
 msgid "There's no such command \"::1 subcommand::\"."
 msgstr "La commande \"::1 subcommand::\" n'est pas implémentée."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       if [[ -z $subcommand ]]; then
+#.           subcommand="__default"
+#.       fi
+#.   
+#.       if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
+#.           _warning "There's no such command \"::1 subcommand::\"." $subcommand
+#. >         exitv=127 _failure "Please try -h for help."
+#.       fi
+#.       argv=("${(@)oldstar}")
+#.       unset oldstar
+#.   
+#: tomb:2533
 #, fuzzy
 msgid "Please try -h for help."
 msgstr "Essayer -h pour obtenir l'aide."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       # zsh magic: ${=string} will split to multiple arguments when spaces occur
+#.       set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
+#.       # if there is no option, we don't need parsing
+#.       if [[ -n $cmd_opts ]]; then
+#.           zparseopts -M -E -D -AOPTS ${cmd_opts}
+#.           if [[ $? != 0 ]]; then
+#. >             _warning "Some error occurred during option processing."
+#.               exitv=127 _failure "See \"tomb help\" for more info."
+#.           fi
+#.       fi
+#.       #build PARAM (array of arguments) and check if there are unrecognized options
+#: tomb:2545
+msgid "Some error occurred during option processing."
+msgstr "L'interprétation des options a échoué."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
+#.       # if there is no option, we don't need parsing
+#.       if [[ -n $cmd_opts ]]; then
+#.           zparseopts -M -E -D -AOPTS ${cmd_opts}
+#.           if [[ $? != 0 ]]; then
+#.               _warning "Some error occurred during option processing."
+#. >             exitv=127 _failure "See \"tomb help\" for more info."
+#.           fi
+#.       fi
+#.       #build PARAM (array of arguments) and check if there are unrecognized options
+#.       ok=0
+#: tomb:2546
 msgid "See \"tomb help\" for more info."
 msgstr "Voir \"tomb help\" pour plus d'info"
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       for arg in $*; do
+#.           if [[ $arg == '--' || $arg == '-' ]]; then
+#.               ok=1
+#.               continue #it shouldnt be appended to PARAM
+#.           elif [[ $arg[1] == '-'  ]]; then
+#.               if [[ $ok == 0 ]]; then
+#. >                 exitv=127 _failure "Unrecognized option ::1 arg:: for subcommand ::2 subcommand::" $arg $subcommand
+#.               fi
+#.           fi
+#.           PARAM+=$arg
+#.       done
+#: tomb:2558
 msgid "Unrecognized option ::1 arg:: for subcommand ::2 subcommand::"
 msgstr ""
 
-#: failure
-msgid "Resize2fs not installed: cannot resize tombs."
-msgstr "Resize2fs n'est pas installé: impossible de changer la taille d'une tombe"
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       # Use colors unless told not to
+#.       { ! option_is_set --no-color } && { autoload -Uz colors && colors }
+#.       # Some options are only available during insecure mode
+#.       { ! option_is_set --unsafe } && {
+#.           for opt in --tomb-pwd --use-urandom --tomb-old-pwd; do
+#.               { option_is_set $opt } && {
+#. >                 exitv=127 _failure "You specified option ::1 option::, which is DANGEROUS and should only be used for testing\nIf you really want so, add --unsafe" $opt }
+#.           done
+#.       }
+#.       # read -t or --tmp flags to set a custom temporary directory
+#.       option_is_set --tmp && TMPPREFIX=$(option_value --tmp)
+#: tomb:2574
+msgid ""
+"You specified option ::1 option::, which is DANGEROUS and should only be "
+"used for testing\n"
+"If you really want so, add --unsafe"
+msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           help)
+#.               usage
+#.               ;;
+#.   
+#.           # DEPRECATION notice (leave here as 'create' is still present in old docs)
+#.           create)
+#. >             _warning "The create command is deprecated, please use dig, forge and lock instead."
+#.               _warning "For more informations see Tomb's manual page (man tomb)."
+#.               _failure "Operation aborted."
+#.               ;;
+#.   
+#: tomb:2608
+msgid ""
+"The create command is deprecated, please use dig, forge and lock instead."
+msgstr ""
+"La commande \"create\" est obsolète : il convient à présent d'utiliser \"dig"
+"\", \"forge\", et \"lock\"."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               usage
+#.               ;;
+#.   
+#.           # DEPRECATION notice (leave here as 'create' is still present in old docs)
+#.           create)
+#.               _warning "The create command is deprecated, please use dig, forge and lock instead."
+#. >             _warning "For more informations see Tomb's manual page (man tomb)."
+#.               _failure "Operation aborted."
+#.               ;;
+#.   
+#.           # CREATE Step 1: dig -s NN file.tomb
+#: tomb:2609
+msgid "For more informations see Tomb's manual page (man tomb)."
+msgstr ""
+"Pour de plus amples informations, se référer au manuel de Tomb (man tomb)."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               umount_tomb $PARAM[1]
+#.               ;;
+#.   
+#.           # Grow tomb's size
+#.           resize)
+#.               [[ $RESIZER == 0 ]] && {
+#. >                 _failure "Resize2fs not installed: cannot resize tombs." }
+#.               resize_tomb $PARAM[1]
+#.               ;;
+#.   
+#.           ## Contents manipulation
+#: tomb:2643
+msgid "Resize2fs not installed: cannot resize tombs."
+msgstr ""
+"Resize2fs n'est pas installé: impossible de changer la taille d'une tombe"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           ## Locking operations
+#.   
+#.           # Export key to QR Code
+#.           engrave)
+#.               [[ $QRENCODE == 0 ]] && {
+#. >                 _failure "QREncode not installed: cannot engrave keys on paper." }
+#.               engrave_key ${=PARAM}
+#.               ;;
+#.   
+#.           # Change password on existing key
+#: tomb:2669
 msgid "QREncode not installed: cannot engrave keys on paper."
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               change_tomb_key ${=PARAM}
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: hide key inside an image
+#.           bury)
+#.               [[ $STEGHIDE == 0 ]] && {
+#. >                 _failure "Steghide not installed: cannot bury keys into images." }
+#.               bury_key $PARAM[1]
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: read key hidden in an image
+#: tomb:2686
 msgid "Steghide not installed: cannot bury keys into images."
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               bury_key $PARAM[1]
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: read key hidden in an image
+#.           exhume)
+#.               [[ $STEGHIDE == 0 ]] && {
+#. >                 _failure "Steghide not installed: cannot exhume keys from images." }
+#.               exhume_key $PARAM[1]
+#.               ;;
+#.   
+#.           ## Internal commands useful to developers
+#: tomb:2693
 msgid "Steghide not installed: cannot exhume keys from images."
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           # Ask user for a password interactively
+#.           askpass)    ask_password $PARAM[1] $PARAM[2] ;;
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#. >             _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#: tomb:2707
 msgid "Tomb ::1 version:: - a strong and gentle undertaker for your secrets"
 msgstr ""
 
-#: print
-msgid " Copyright (C) 2007-2014 Dyne.org Foundation, License GNU GPL v3+"
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           askpass)    ask_password $PARAM[1] $PARAM[2] ;;
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#. >             _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#: tomb:2709
+msgid " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#. >             _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#: tomb:2710
 msgid " This is free software: you are free to change and redistribute it"
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#. >             _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#: tomb:2711
+msgid " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+msgstr ""
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#. >                 _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#: tomb:2716
 msgid " This source code is distributed in the hope that it will be useful,"
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#. >                 _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#: tomb:2717
 msgid " but WITHOUT ANY WARRANTY; without even the implied warranty of"
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#. >                 _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#.                   _print "System utils:"
+#: tomb:2718
 msgid " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 msgstr ""
 
-#: print
-msgid "System utils:"
-msgstr ""
-
-#: warning
-msgid "Command \"::1 subcommand::\" not recognized."
-msgstr "La command \"::1 subcommand::\" n'est pas reconnue."
-
-#: print
-msgid " passwd  change the password of a KEY (needs old pass)"
-msgstr ""
-
-#: print
-msgid " setkey  change the KEY locking a TOMB (needs old key and pass)"
-msgstr ""
-
-#: print
-msgid " // Backup on paper:"
-msgstr ""
-
-#: print
-msgid " // Steganography:"
-msgstr ""
-
-#: print
-msgid " bury    hide a KEY inside a JPEG image (for use with -k)"
-msgstr ""
-
-#: print
-msgid " exhume  extract a KEY from a JPEG image (prints to stdout)"
-msgstr ""
-
-#: failure
-msgid "Exhume failed, no image specified"
-msgstr ""
-
-#: print
-msgid " For the latest sourcecode go to <http://dyne.org/software/tomb>"
-msgstr ""
-
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#. >                 _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#.                   _print "System utils:"
+#.                   _print "\000"
+#.                   cat <<EOF
+#: tomb:2720
 msgid " When in need please refer to <http://dyne.org/support>."
 msgstr ""
 
-#: print
-msgid "Optional utils:"
-msgstr ""
-
-#: failure
-msgid "Fatal error setting the permission umask for temporary files"
-msgstr ""
-
-#: failure
-msgid "Fatal error setting ownership on temporary file: ::1 temp file::"
-msgstr ""
-
-#: warning
-msgid "cleartext key from stdin selected: this is unsafe."
-msgstr ""
-
-#: failure
-msgid "please use --unsafe if you really want to do this."
-msgstr ""
-
-#: warning
-msgid "received key in cleartext from stdin (unsafe mode)"
-msgstr ""
-
-#: failure
-msgid "You specified option ::1 option::, which is DANGEROUS and should only be used for testing\n"
-"If you really want so, add --unsafe"
-msgstr ""
-
-#: failure
-msgid "Failing to identify the user who is calling us"
-msgstr ""
-
-#: failure
-msgid "Fatal error creating the temporary directory: ::1 temp dir::"
-msgstr ""
-
-#: failure
-msgid "Someone is messing up with us trying to hijack temporary files."
-msgstr ""
-
-#: success
-msgid "All your swaps are belong to crypt.  Good."
-msgstr ""
-
-#: success
-msgid "Changing password for ::1 key file::"
-msgstr ""
-
-#: success
-msgid "Your passphrase was successfully updated."
-msgstr ""
-
-#: success
-msgid "Using KDF, iterations: ::1 microseconds::"
-msgstr ""
-
-#: success
-msgid "Encoding key ::1 tomb key:: inside image ::2 image file::"
-msgstr ""
-
-#: success
-msgid "Tomb key encoded succesfully into image ::1 image file::"
-msgstr ""
-
-#: success
-msgid "Key succesfully exhumed to ::1 key::."
-msgstr ""
-
-#: success
-msgid "Rendering a printable QRCode for key: ::1 tomb key file::"
-msgstr ""
-
-#: success
-msgid "Operation successful:"
-msgstr ""
-
-#: success
-msgid "Creating a new tomb in ::1 tomb path::"
-msgstr ""
-
-#: success
-msgid "Done digging ::1 tomb name::"
-msgstr ""
-
-#: success
-msgid "Choose the  password of your key: ::1 tomb key::"
-msgstr ""
-
-#: success
-msgid "Your key is ready:"
-msgstr ""
-
-#: success
-msgid "Locking ::1 tomb file:: with ::2 tomb key file::"
-msgstr ""
-
-#: success
-msgid "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::"
-msgstr ""
-
-#: success
-msgid "Changing lock on tomb ::1 tomb name::"
-msgstr ""
-
-#: success
-msgid "Succesfully changed key for tomb: ::1 tomb file::"
-msgstr ""
-
-#: success
-msgid "Opening ::1 tomb file:: on ::2 mount point::"
-msgstr ""
-
-#: success
-msgid "Success unlocking tomb ::1 tomb name::"
-msgstr ""
-
-#: success
-msgid "Success opening ::1 tomb file:: on ::2 mount point::"
-msgstr ""
-
-#: success
-msgid "Post hooks found, executing as user ::1 user name::."
-msgstr ""
-
-#: success
-msgid "Creating and updating search indexes."
-msgstr ""
-
-#: message
-msgid "Generating a new swish-e configuration file: ::1 swish conf::"
-msgstr ""
-
-#: success
-msgid "Searching for: ::1::"
-msgstr ""
-
-#: success
-msgid "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::"
-msgstr ""
-
-#: success
-msgid "Slamming tomb: killing all processes using this hook."
-msgstr ""
-
-#: success
-msgid "Tomb ::1 tomb name:: closed: your bones will rest in peace."
-msgstr ""
-
-#: warning
-msgid "Pinentry error: ::1 error::"
-msgstr ""
-
-#: warning
-msgid "Empty password"
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#. >                 _print "System utils:"
+#.                   _print "\000"
+#.                   cat <<EOF
+#.     `sudo -V | head -n1`
+#.     `cryptsetup --version`
+#: tomb:2722
+msgid "System utils:"
 msgstr ""
 
-#: failure
-msgid "Cannot find pinentry-curses and no DISPLAY detected."
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.     `cryptsetup --version`
+#.     `pinentry --version`
+#.     `gpg --version | head -n1` - key forging algorithms (GnuPG symmetric ciphers):
+#.     `list_gnupg_ciphers`
+#.   EOF
+#.                   _print "\000"
+#. >                 _print "Optional utils:"
+#.                   _print "\000"
+#.                   _list_optional_tools version
+#.                   return 0
+#.               }
+#: tomb:2732
+msgid "Optional utils:"
 msgstr ""
 
-#: warning
-msgid "Detected DISPLAY, but only pinentry-curses is found."
-msgstr ""
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               }
+#.               usage
+#.               ;;
+#.   
+#.           # Reject unknown command and suggest help
+#.           *)
+#. >             _warning "Command \"::1 subcommand::\" not recognized." $subcommand
+#.               _message "Try -h for help."
+#.               return 1
+#.               ;;
+#.       esac
+#: tomb:2742
+msgid "Command \"::1 subcommand::\" not recognized."
+msgstr "La command \"::1 subcommand::\" n'est pas reconnue."
 
-#: failure
-msgid "Cannot find any pinentry: impossible to ask for password."
-msgstr ""
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               usage
+#.               ;;
+#.   
+#.           # Reject unknown command and suggest help
+#.           *)
+#.               _warning "Command \"::1 subcommand::\" not recognized." $subcommand
+#. >             _message "Try -h for help."
+#.               return 1
+#.               ;;
+#.       esac
+#.       return $?
+#: tomb:2743
+msgid "Try -h for help."
+msgstr "Essayer -h pour obtenir l'aide."
 
+#~ msgid " -o     mount options used to open (default: rw,noatime,nodev)"
+#~ msgstr ""
+#~ " -o        options de montage à l'ouverture (par défaut : rw,noatime,"
+#~ "nodev)"
diff --git a/extras/po/ru.po b/extras/po/ru.po
@@ -1,1128 +1,5477 @@
 msgid ""
 msgstr ""
+"Project-Id-Version: Tomb the Crypto Undertaker\n"
+"Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: POEditor.com\n"
-"Project-Id-Version: Tomb the Crypto Undertaker\n"
-"Language: ru\n"
-
-#: failure
-msgid "Operation aborted."
-msgstr "Операция отменена."
-
-#: warning
-msgid "often occurs on VPS and kernels that don't provide the loop module."
-msgstr "часто возникает на VPS и ядрах, которые не имеют модуля loop."
-
-#: warning
-msgid "It is impossible to use Tomb on this machine at this conditions."
-msgstr "Невозможно использовать Tomb на этой машине при таких условиях."
-
-#: message
-msgid "Waiting for the key to be piped from stdin... "
-msgstr "Ожидание передачи ключа через стандартный ввод..."
-
-#: failure
-msgid "This operation requires a key file to be specified using the -k option."
-msgstr "Эта операция требует указания файла ключа с помощью опции -k."
-
-#: failure
-msgid "Key not found, specify one using -k."
-msgstr "Ключ не найден, укажите его с помощью опции -k."
-
-#: warning
-msgid "User aborted password dialog."
-msgstr "Пользователь отменил диалог пароля."
-
-#: message
-msgid "Password OK."
-msgstr "Верный пароль."
-
-#: failure
-msgid "Error: the newly generated keyfile does not seem valid."
-msgstr "Ошибка: сгенерированный файл ключа неверен."
-
-#: failure
-msgid "User aborted."
-msgstr "Отменено пользователем."
-
-#: failure
-msgid "You set empty password, which is not possible."
-msgstr "Вы указали пустой пароль, так нельзя."
-
-#: failure
-msgid "Wrong argument for --kdf: must be an integer number (iteration seconds)."
-msgstr "Неверный аргумент для --kdf: должно быть указано целое число (секунд итерации)."
-
-#: failure
-msgid "gpg (GnuPG) is not found, Tomb cannot function without it."
-msgstr "gpg (GnuPG) не найден, Tomb не может работать без него."
-
-#: message
-msgid "Please confirm the key password for the encoding"
-msgstr "Пожалуйста, подтвердите пароль ключа для шифрования"
-
-#: warning
-msgid "Wrong password supplied."
-msgstr "Указан неверный пароль."
-
-#: failure
-msgid "You shall not bury a key whose password is unknown to you."
-msgstr "Вам не захоронить ключ, чей пароль не известен Вам."
-
-#: warning
-msgid "Encoding error: steghide reports problems."
-msgstr "Ошибка шифрования: steghide сообщает о проблемах."
-
-#: warning
-msgid "Make explicit use of --force to overwrite."
-msgstr "Явно укажите опцию --force для перезаписи."
-
-#: warning
-msgid "Use of --force selected: overwriting."
-msgstr "Указана опция --force: перезаписываю."
-
-#: failure
-msgid "A filename needs to be specified using -k to forge a new key."
-msgstr "Необходимо указать имя файла через опцию -k, чтобы выковать новый ключ."
-
-#: failure
-msgid "Forging this key would overwrite an existing file. Operation aborted."
-msgstr "Выковка этого ключа перезапишет существующий файл. Операция отменена."
-
-#: message
-msgid "This operation takes time, keep using this computer on other tasks,"
-msgstr "Эта операция займет некоторое время, выполняйте пока другие задачи,"
-
-#: message
-msgid "once done you will be asked to choose a password for your tomb."
-msgstr "по завершении Вас вопросят ввести пароль для гробницы."
-
-#: message
-msgid "To make it faster you can move the mouse around."
-msgstr "Чтобы ускорить операцию, подвигайте мышку."
-
-#: message
-msgid "If you are on a server, you can use an Entropy Generation Daemon."
-msgstr "Если Вы на сервере, можно использовать демон генерации энтропии."
-
-#: warning
-msgid "Cannot generate encryption key."
-msgstr "Не могу сгенерировать ключ шифрования."
-
-#: message
-msgid "(You can also change it later using 'tomb passwd'.)"
-msgstr "(Его можно потом изменить с помощью 'tomb passwd'.)"
-
-#: warning
-msgid "The key does not seem to be valid."
-msgstr "Ключ неверен."
-
-#: warning
-msgid "Dumping contents to screen:"
-msgstr "Выгрузка содержимого на экран:"
-
-#: failure
-msgid "Size argument missing, use -s"
-msgstr "Отсутствует размер, укажите его с помощью -s"
-
-#: warning
-msgid "A tomb exists already. I'm not digging here:"
-msgstr "Гробница существует. Я не буду копать здесь:"
-
-#: message
-msgid "Your tomb is not yet ready, you need to forge a key and lock it:"
-msgstr "Ваша гробница пока не готова, необходимо выковать ключ и запереть ее:"
-
-#: warning
-msgid "No tomb specified for locking."
-msgstr "Не указана гробница для запирания."
-
-#: warning
-msgid "Usage: tomb lock file.tomb file.tomb.key"
-msgstr "Использование: tomb lock file.tomb file.tomb.key"
-
-#: failure
-msgid "There is no tomb here. You have to it dig first."
-msgstr "Здесь нет гробницы. Сначала выкопайте ее."
-
-#: message
-msgid "Checking if the tomb is empty (we never step on somebody else's bones)."
-msgstr "Проверяю, пуста ли гробница (мы никогда не ходим по чужим костям)."
-
-#: warning
-msgid "The tomb was already locked with another key."
-msgstr "Гробница уже заперта другим ключом."
-
-#: failure
-msgid "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
-msgstr "Операция отменена. Я не могу запереть уже запертую гробницу. Выкопайте новую."
 
-#: message
-msgid "Fine, this tomb seems empty."
-msgstr "Так, эта гробница, вроде как, пуста."
-
-#: message
-msgid "Formatting Luks mapped device."
-msgstr "Форматирую устройство LUKS."
-
-#: warning
-msgid "cryptsetup luksFormat returned an error."
-msgstr "cryptsetup luksFormat вернул ошибку."
-
-#: message
-msgid "Formatting your Tomb with Ext3/Ext4 filesystem."
-msgstr "Форматирую Вашу гробницу в файловую систему Ext3/Ext4."
-
-#: warning
-msgid "Tomb format returned an error."
-msgstr "Tomb format вернул ошибку."
-
-#: message
-msgid "Here below its status is reported:"
-msgstr "Ниже назодится отчет о его статусе:"
-
-#: message
-msgid "This tomb is a valid LUKS encrypted device."
-msgstr "Эта гробница - верное зашифрованное устройство LUKS."
-
-#: failure
-msgid "Failure mounting the encrypted file."
-msgstr "Не удалось примонтировать зашифрованный файл."
-
-#: warning
-msgid "How pitiful!  A tomb, and no HOME."
-msgstr "Как жаль! Гробница есть, но нет HOME."
-
-#. Don't know how to correctly translate "bind hook".
-#: warning
-#, fuzzy
-msgid "Cannot exec bind hooks without a mounted tomb."
-msgstr "Невозможно совершить привязки без примонтированной гробницы."
-
-#: failure
-msgid "I can't see any open tomb, may they all rest in peace."
-msgstr "Я не вижу открытых гробниц, да упокоятся они все с миром."
-
-#: message
-msgid "Search index updated."
-msgstr "Поисковый индекс обновлен."
-
-#: warning
-msgid "Run 'tomb index' to create indexes."
-msgstr "Запустите 'tomb index' для создания индексов."
-
-#: message
-msgid "Search completed."
-msgstr "Поиск завершен."
-
-#: failure
-msgid "No tomb name specified for resizing."
-msgstr "Не указано имя гробницы для изменения размера."
-
-#: failure
-msgid "Size is not an integer."
-msgstr "Размер не целое число."
-
-#: failure
-msgid "The new size must be greater then old tomb size."
-msgstr "Новый размер гробницы должен быть больше старого."
-
-#: failure
-msgid "There is no open tomb to be closed."
-msgstr "Нет открытой гробницы для закрытия."
-
-#: warning
-msgid "Too many tombs mounted, please specify one (see tomb list)"
-msgstr "Примонтировано слишком много гробниц, пожалуйста, укажите точнее (см. tomb list)"
-
-#: warning
-msgid "or issue the command 'tomb close all' to close them all."
-msgstr "или выполните команду 'tomb close all', чтобы закрыть их все."
-
-#: warning
-msgid "Please specify an existing tomb."
-msgstr "Пожалуйста, укажите существующую гробницу."
-
-#: message
-msgid "Kill all processes busy inside the tomb."
-msgstr "Убиваю все процессы, занятые в гробнице"
+#. Fold: Safety functions
+#. Function: _whoami
+#.
+#. Code sample:
+#.   
+#.       # Set username from UID or environment
+#.       _USER=$SUDO_USER
+#.       [[ "$_USER" = "" ]] && { _USER=$USERNAME }
+#.       [[ "$_USER" = "" ]] && { _USER=$(id -u)  }
+#.       [[ "$_USER" = "" ]] && {
+#. >         _failure "Failing to identify the user who is calling us" }
+#.   
+#.       # Get GID from option -G or the environment
+#.       option_is_set -G #.           && _GID=$(option_value -G) || _GID=$(id -g $_USER)
+#: tomb:189
+msgid "Failing to identify the user who is calling us"
+msgstr "Не удалось определить пользователя, вызвавшего меня"
 
-#: warning
-msgid "Tomb is busy, cannot umount!"
-msgstr "Гробница занята, не могу отмонтировать!"
+#. Fold: Safety functions
+#. Function: _plot
+#.
+#. Code sample:
+#.       TOMBFILE=$(basename $TOMBPATH)
+#.   
+#.       # The tomb name is TOMBFILE without an extension.
+#.       # It can start with dots: ..foo.tomb -> ..foo
+#.       TOMBNAME="${TOMBFILE%\.[^\.]*}"
+#.       [[ -z $TOMBNAME ]] && {
+#. >         _failure "Tomb won't work without a TOMBNAME." }
+#.   
+#.       # Normalize tomb name
+#.       TOMBFILE="$TOMBNAME.tomb"
+#.   
+#: tomb:237
+msgid "Tomb won't work without a TOMBNAME."
+msgstr "Tomb не будет работать без ИМЕНИ_ГРОБНИЦЫ."
 
-#: failure
-msgid "Error parsing."
-msgstr "Ошибка парсинга."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.   # Provide a random filename in shared memory
+#.   _tmp_create() {
+#.       [[ -d "$TMPPREFIX" ]] || {
+#.           # we create the tempdir with the sticky bit on
+#.           sudo mkdir -m 1777 "$TMPPREFIX"
+#. >         [[ $? == 0 ]] || _failure "Fatal error creating the temporary directory: ::1 temp dir::" "$TMPPREFIX"
+#.       }
+#.   
+#.       # We're going to add one more $RANDOM for each time someone complain
+#.       # about this being too weak of a random.
+#: tomb:252
+msgid "Fatal error creating the temporary directory: ::1 temp dir::"
+msgstr "Критическая ошибка при создании временной директории: ::1 temp dir::"
 
-#: warning
-msgid "Some error occurred during option processing."
-msgstr "Произошла какая-то ошибка при обработке опций."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       # We're going to add one more $RANDOM for each time someone complain
+#.       # about this being too weak of a random.
+#.       tfile="${TMPPREFIX}/$RANDOM$RANDOM$RANDOM$RANDOM"   # Temporary file
+#.       umask 066
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error setting the permission umask for temporary files" }
+#.   
+#.       [[ -r "$tfile" ]] && {
+#.           _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#: tomb:260
+msgid "Fatal error setting the permission umask for temporary files"
+msgstr "Критическая ошибка при задании маски прав для временных файлов"
 
-#: warning
-msgid "The create command is deprecated, please use dig, forge and lock instead."
-msgstr "Команда create устарела, пожалуйста, используйте dig, forge и lock."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.       tfile="${TMPPREFIX}/$RANDOM$RANDOM$RANDOM$RANDOM"   # Temporary file
+#.       umask 066
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error setting the permission umask for temporary files" }
+#.   
+#.       [[ -r "$tfile" ]] && {
+#. >         _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#: tomb:263
+msgid "Someone is messing up with us trying to hijack temporary files."
+msgstr "Кто-то наглый пытается похитить наши временные файлы."
 
-#: warning
-msgid "For more informations see Tomb's manual page (man tomb)."
-msgstr "Для большей информации обратитесь к руководству Tomb (man tomb)."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       [[ -r "$tfile" ]] && {
+#.           _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error setting ownership on temporary file: ::1 temp file::" "$tfile" }
+#.   
+#: tomb:267
+msgid "Fatal error creating a temporary file: ::1 temp file::"
+msgstr "Критическая ошибка при создании временного файла ::1 temp file::"
 
-#: message
-msgid "Try -h for help."
-msgstr "Используйте -h для вызова справки."
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error setting ownership on temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       _verbose "Created tempfile: ::1 temp file::" "$tfile"
+#.       TOMBTMP="$tfile"
+#.       TOMBTMPFILES+=("$tfile")
+#: tomb:270
+msgid "Fatal error setting ownership on temporary file: ::1 temp file::"
+msgstr ""
+"Критическая ошибка при задании владельца временного файла ::1 temp file::"
+
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.               r=1
+#.               is_crypt=`sudo dmsetup status "$s" | awk '/crypt/ {print $3}'`
+#.               [[ $is_crypt == "crypt" ]] && { r=2 } || { break }
+#.   
+#.           fi
+#.       done
+#. >     _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#: tomb:316
+msgid "An active swap partition is detected..."
+msgstr ""
 
-#: failure
-msgid "Tomb won't work without a TOMBNAME."
-msgstr "Tomb не будет работать без ИМЕНИ_ГРОБНИЦЫ."
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.               [[ $is_crypt == "crypt" ]] && { r=2 } || { break }
+#.   
+#.           fi
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#. >         _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#: tomb:318
+msgid "All your swaps are belong to crypt.  Good."
+msgstr "All your swaps are belong to crypt.  Хорошо."
 
-#: failure
-msgid "Fatal error creating a temporary file: ::1 temp file::"
-msgstr "Критическая ошибка при создании временного файла ::1 temp file::"
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.           fi
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#. >         _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#: tomb:320
+msgid "This poses a security risk."
+msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#. >         _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#: tomb:321
 msgid "You can deactivate all swap partitions using the command:"
 msgstr "Вы можете отключить все разделы подкачки с помощью этой команды:"
 
-#: warning
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#. >         _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#.   
+#: tomb:322
 msgid " swapoff -a"
 msgstr " swapoff -a"
 
-#: warning
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#. >         _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#.   
+#.   }
+#: tomb:323
 msgid "But if you want to proceed like this, use the -f (force) flag."
-msgstr "Но если Вы все равно хотите продолжить работу, используйте флаг -f (force)."
+msgstr ""
+"Но если Вы все равно хотите продолжить работу, используйте флаг -f (force)."
+
+#. Fold: Safety functions
+#. Function: _check_swap
+#.
+#. Code sample:
+#.           _ensure_safe_swap
+#.           case $? in
+#.               0|2)     # No, or encrypted swap
+#.                   return 0
+#.                   ;;
+#.               *)       # Unencrypted swap
+#. >                 _failure "Operation aborted."
+#.                   ;;
+#.           esac
+#.       fi
+#.   }
+#: tomb:342
+msgid "Operation aborted."
+msgstr "Операция отменена."
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   SETTITLE $title
+#.   SETDESC $description
+#.   SETPROMPT Password:
+#.   GETPIN
+#.   EOF`
+#.           else
+#. >             _failure "Cannot find pinentry-curses and no DISPLAY detected."
+#.           fi
+#.   
+#.       else # a DISPLAY is found to be active
+#.   
+#: tomb:379
+msgid "Cannot find pinentry-curses and no DISPLAY detected."
+msgstr ""
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   EOF`
+#.   
+#.           else
+#.   
+#.               if _is_found "pinentry-curses"; then
+#.   
+#. >                 _warning "Detected DISPLAY, but only pinentry-curses is found."
+#.                   output=`cat <<EOF | pinentry-curses
+#.   OPTION ttyname=$TTY
+#.   OPTION lc-ctype=$LANG
+#.   SETTITLE $title
+#: tomb:432
+msgid "Detected DISPLAY, but only pinentry-curses is found."
+msgstr ""
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   SETTITLE $title
+#.   SETDESC $description
+#.   SETPROMPT Password:
+#.   GETPIN
+#.   EOF`
+#.               else
+#. >                 _failure "Cannot find any pinentry: impossible to ask for password."
+#.               fi
+#.   
+#.           fi
+#.   
+#: tomb:442
+msgid "Cannot find any pinentry: impossible to ask for password."
+msgstr ""
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   
+#.       fi # end of DISPLAY block
+#.   
+#.       # parse the pinentry output
+#.       for i in ${(f)output}; do
+#.           [[ "$i" =~ "^ERR.*" ]] && {
+#. >             _warning "Pinentry error: ::1 error::" ${i[(w)3]}
+#.               print "canceled"
+#.               return 1 }
+#.   
+#.           # here the password is found
+#: tomb:452
+msgid "Pinentry error: ::1 error::"
+msgstr "Ошибка pinentry: ::1 error::"
+
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   
+#.           # here the password is found
+#.           [[ "$i" =~ "^D .*" ]] && password="${i##D }"
+#.       done
+#.   
+#.       [[ "$password" = "" ]] && {
+#. >         _warning "Empty password"
+#.           print "empty"
+#.           return 1 }
+#.   
+#.       print "$password"
+#: tomb:461
+msgid "Empty password"
+msgstr "Пустой пароль"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.   # Check if a filename is a valid tomb
+#.   is_valid_tomb() {
+#.       _verbose "is_valid_tomb ::1 tomb file::" $1
+#.   
+#.       # First argument must be the path to a tomb
+#.       [[ -z "$1" ]] && {
+#. >         _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#: tomb:477
 msgid "Tomb file is missing from arguments."
 msgstr "В аргументах отсутствует файл гробницы."
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # First argument must be the path to a tomb
+#.       [[ -z "$1" ]] && {
+#.           _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#. >         _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#: tomb:481
 msgid "Tomb file not found: ::1 tomb file::"
 msgstr "Не найден файл гробницы: ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#. >         _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#.           _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#: tomb:483
 msgid "Tomb file is not a regular file: ::1 tomb file::"
 msgstr "Файл гробницы не является обычным файлом: ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#. >         _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#.           _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#.   
+#.       # TODO: split the rest of that function out.
+#: tomb:485
 msgid "Tomb file is empty (zero length): ::1 tomb file::"
 msgstr "Файл гробницы пуст (нулевая длина): ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#. >         _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#.   
+#.       # TODO: split the rest of that function out.
+#.       # We already have a valid tomb, now we're checking
+#.       # whether we can alter it.
+#: tomb:487
 msgid "Tomb file is not writable: ::1 tomb file::"
 msgstr "Файл гробницы недоступен для записи: ::1 tomb file::"
 
-#: warning
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # TODO: split the rest of that function out.
+#.       # We already have a valid tomb, now we're checking
+#.       # whether we can alter it.
+#.   
+#.       # Tomb file may be a LUKS FS (or we are creating it)
+#.       [[ "`file $1`" =~ "luks encrypted file" ]] || {
+#. >         _warning "File is not yet a tomb: ::1 tomb file::" $1 }
+#.   
+#.       _plot $1     # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#: tomb:495
 msgid "File is not yet a tomb: ::1 tomb file::"
 msgstr "Файл пока не является гробницей: ::1 tomb file::"
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _warning "File is not yet a tomb: ::1 tomb file::" $1 }
+#.   
+#.       _plot $1     # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]$" ]] && {
+#. >         _failure "Tomb is currently in use: ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       _message "Valid tomb file found: ::1 tomb path::" $TOMBPATH
+#.   
+#: tomb:501
 msgid "Tomb is currently in use: ::1 tomb name::"
 msgstr "Гробница на данный момент используется: ::1 tomb name::"
 
-#: message
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]$" ]] && {
+#.           _failure "Tomb is currently in use: ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#. >     _message "Valid tomb file found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:504
 msgid "Valid tomb file found: ::1 tomb path::"
 msgstr "Найден верный файл гробницы: ::1 tomb path::"
 
-#: warning
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.   lo_mount() {
+#.       tpath="$1"
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#. >         _warning "Loop mount of volumes is not possible on this machine, this error"
+#.           _warning "often occurs on VPS and kernels that don't provide the loop module."
+#.           _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#: tomb:516
 msgid "Loop mount of volumes is not possible on this machine, this error"
 msgstr "Loop-монтирование томов не поддерживается на этой машине, эта ошибка"
 
-#: print
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.       tpath="$1"
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#.           _warning "Loop mount of volumes is not possible on this machine, this error"
+#. >         _warning "often occurs on VPS and kernels that don't provide the loop module."
+#.           _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#: tomb:517
+msgid "often occurs on VPS and kernels that don't provide the loop module."
+msgstr "часто возникает на VPS и ядрах, которые не имеют модуля loop."
+
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#.           _warning "Loop mount of volumes is not possible on this machine, this error"
+#.           _warning "often occurs on VPS and kernels that don't provide the loop module."
+#. >         _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       sudo losetup -f "$tpath" # allocates the next loopback for our file
+#: tomb:518
+msgid "It is impossible to use Tomb on this machine at this conditions."
+msgstr "Невозможно использовать Tomb на этой машине при таких условиях."
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   # }}}
+#.   
+#.   # {{{ Commandline interaction
+#.   
+#.   usage() {
+#. >     _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#: tomb:558
 msgid "Syntax: tomb [options] command [arguments]"
 msgstr "Синтаксис: tomb [опции] команда [аргументы]"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   # {{{ Commandline interaction
+#.   
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#. >     _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#: tomb:560
 msgid "Commands:"
 msgstr "Команды:"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#. >     _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#: tomb:562
 msgid " // Creation:"
 msgstr " // Создание: "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#. >     _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#: tomb:563
 msgid " dig     create a new empty TOMB file of size -s in MB"
 msgstr " dig     создать новый пустой файл ГРОБНИЦЫ размером -s Мб "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#. >     _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#: tomb:564
 msgid " forge   create a new KEY file and set its password"
 msgstr " forge   создать новый файл КЛЮЧА и задать его пароль "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#. >     _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#: tomb:565
 msgid " lock    installs a lock on a TOMB to use it with KEY"
 msgstr " lock    установить замок на ГРОБНИЦУ, используя КЛЮЧ "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#. >     _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#: tomb:567
 msgid " // Operations on tombs:"
 msgstr " // Операции над гробницами: "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#. >     _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#: tomb:568
 msgid " open    open an existing TOMB"
 msgstr " open    открыть существующую ГРОБНИЦУ "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#. >     _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#: tomb:569
 msgid " index   update the search indexes of tombs"
 msgstr " index   обновить поисковый индекс гробниц "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#. >     _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#: tomb:570
 msgid " search  looks for filenames matching text patterns"
 msgstr " search  ищет имена файлов, соответствующие шаблону "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#. >     _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#: tomb:571
 msgid " list    list of open TOMBs and information on them"
 msgstr " list    список открытых ГРОБНИЦ и информация о них "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#. >     _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#: tomb:572
 msgid " close   close a specific TOMB (or 'all')"
 msgstr " close   закрыть определенную ГРОБНИЦУ (или 'all' для всех) "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#. >     _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#: tomb:573
 msgid " slam    slam a TOMB killing all programs using it"
 msgstr " slam    захлопнуть ГРОБНИЦУ, убив все программы, использующие ее "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#. >         _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#: tomb:575
 msgid " resize  resize a TOMB to a new size -s (can only grow)"
 msgstr " resize  привести размер гробницы к -s Мб (можно только увеличить) "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#. >     _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#: tomb:578
 msgid " // Operations on keys:"
 msgstr " // Операции с ключами: "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#. >     _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#: tomb:579
+msgid " passwd  change the password of a KEY (needs old pass)"
+msgstr " passwd  изменить пароль КЛЮЧА (требуется старый пароль)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#. >     _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#: tomb:580
+msgid " setkey  change the KEY locking a TOMB (needs old key and pass)"
+msgstr ""
+" setkey  изменить КЛЮЧ, запирающий ГРОБНИЦУ (требуется старый ключ и пароль)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#. >         _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#: tomb:583
+msgid " // Backup on paper:"
+msgstr " // Резервная копия на бумаге:"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#. >         _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#: tomb:584
 msgid " engrave makes a QR code of a KEY to be saved on paper"
 msgstr " engrave создает штрих-код для хранения КЛЮЧА на бумаге "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#. >         _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#: tomb:588
+msgid " // Steganography:"
+msgstr " // Стеганография:"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#. >         _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#: tomb:589
+msgid " bury    hide a KEY inside a JPEG image (for use with -k)"
+msgstr " bury   спрятать КЛЮЧ внутри изображения JPEG (для использования с -k)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#. >         _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#: tomb:590
+msgid " exhume  extract a KEY from a JPEG image (prints to stdout)"
+msgstr ""
+" exhume  извлечь КЛЮЧ из изображения JPEG (выводится в стандартный вывод)"
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#. >     _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#: tomb:593
 msgid "Options:"
 msgstr "Опции: "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#. >     _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#: tomb:595
 msgid " -s     size of the tomb file when creating/resizing one (in MB)"
 msgstr " -s     размер файла гробницы при создании/изменении размера (в Мб) "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#. >     _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#: tomb:596
 msgid " -k     path to the key to be used ('-k -' to read from stdin)"
 msgstr " -k     путь к ключу ('-k -' для чтения из стандартного ввода) "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#. >     _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#: tomb:597
 msgid " -n     don't process the hooks found in tomb"
 msgstr " -n     не обрабатывать привязки, найденные в гробнице "
 
-#: print
-msgid " -o     mount options used to open (default: rw,noatime,nodev)"
-msgstr " -o     параметры монтирования при открытии (по умолчанию rw,noatime,nodev) "
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#. >     _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#: tomb:598
+msgid " -o     options passed to local command, e.g.:"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#. >     _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#: tomb:599
+msgid "          - mount options used to open (default: rw,noatime,nodev)"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#. >     _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#: tomb:600
+msgid "          - an alternate cipher to forge and lock"
+msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#. >     _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#: tomb:601
 msgid " -f     force operation (i.e. even if swap is active)"
 msgstr " -f     форсировать операцию (например, даже при активном swap) "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#. >         _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#: tomb:603
 msgid " --kdf  generate passwords armored against dictionary attacks"
 msgstr " --kdf  сгенерировать пароли, устойчивые к атакам по словарю "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#. >     _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#: tomb:607
 msgid " -h     print this help"
 msgstr " -h     показать эту справку "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#. >     _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#: tomb:608
 msgid " -v     print version, license and list of available ciphers"
 msgstr " -v     показать версию, лицензию и доступные шифры "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#. >     _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#: tomb:609
 msgid " -q     run quietly without printing informations"
 msgstr " -q     выполнение без вывода информации на экран "
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#. >     _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#: tomb:610
 msgid " -D     print debugging information at runtime"
 msgstr " -D     вывести отладочную информацию при запуске"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#. >     _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#.   
+#.   
+#: tomb:612
 msgid "For more informations on Tomb read the manual: man tomb"
 msgstr "Больше информации по Tomb Вы можете найти в руководстве: man tomb"
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#. >     _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#.   
+#.   
+#.   # Check whether a commandline option is set.
+#: tomb:613
 msgid "Please report bugs on <http://github.com/dyne/tomb/issues>."
-msgstr "Пожалуйста, сообщайте о найденных ошибках на <http://github.com/dyne/tomb/issues>."
-
-#: failure
+msgstr ""
+"Пожалуйста, сообщайте о найденных ошибках на <http://github.com/dyne/tomb/"
+"issues>."
+
+#. Fold: Commandline interaction
+#. Function: _ensure_dependencies
+#.
+#. Code sample:
+#.   # missing, bail out.
+#.   _ensure_dependencies() {
+#.   
+#.       # Check for required programs
+#.       for req in cryptsetup pinentry sudo gpg mkfs.ext4 e2fsck; do
+#.           command -v $req 1>/dev/null 2>/dev/null || {
+#. >             _failure "Missing required dependency ::1 command::.  Please install it." $req }
+#.       done
+#.   
+#.       # Ensure system binaries are available in the PATH
+#.       path+=(/sbin /usr/sbin) # zsh magic
+#: tomb:748
 msgid "Missing required dependency ::1 command::.  Please install it."
-msgstr "Отсутствует необходимая зависимость: ::1 command::. Пожалуйста, установите ее."
+msgstr ""
+"Отсутствует необходимая зависимость: ::1 command::. Пожалуйста, установите "
+"ее."
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.   
+#.       _verbose "is_valid_key"
+#.   
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#. >             _warning "cleartext key from stdin selected: this is unsafe."
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#: tomb:785
+msgid "cleartext key from stdin selected: this is unsafe."
+msgstr "выбран ключ, явно указанный через стандартный ввод: это небезопасно."
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       _verbose "is_valid_key"
+#.   
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#.               _warning "cleartext key from stdin selected: this is unsafe."
+#. >             exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#: tomb:786
+msgid "please use --unsafe if you really want to do this."
+msgstr "пожалуйчтв, используйте --unsafe, если Вы действительно этого хотите."
+
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#.               _warning "cleartext key from stdin selected: this is unsafe."
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#. >         _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#.       [[ -z $key ]] && {
+#.           _warning "is_valid_key() called without an argument."
+#: tomb:788
+msgid "received key in cleartext from stdin (unsafe mode)"
+msgstr "получен ключ в явном виде через стандартный ввод (небезопасный режим)"
 
-#: warning
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#.       [[ -z $key ]] && {
+#. >         _warning "is_valid_key() called without an argument."
+#.           return 1
+#.       }
+#.   
+#.       # If the key file is an image don't check file header
+#: tomb:792
 msgid "is_valid_key() called without an argument."
 msgstr "is_valid_key() вызвана без аргумента."
 
-#: message
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       }
+#.   
+#.       # If the key file is an image don't check file header
+#.       [[ -r $TOMBKEYFILE ]] #.           && [[ $(file $TOMBKEYFILE) =~ "JP.G" ]] #.           && {
+#. >         _message "Key is an image, it might be valid."
+#.           return 0 }
+#.   
+#.       [[ $key =~ "BEGIN PGP" ]] && {
+#.           _message "Key is valid."
+#: tomb:800
 msgid "Key is an image, it might be valid."
 msgstr "Ключ - изображение, может подойти."
 
-#: message
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.           && [[ $(file $TOMBKEYFILE) =~ "JP.G" ]] #.           && {
+#.           _message "Key is an image, it might be valid."
+#.           return 0 }
+#.   
+#.       [[ $key =~ "BEGIN PGP" ]] && {
+#. >         _message "Key is valid."
+#.           return 0 }
+#.   
+#.       return 1
+#.   }
+#: tomb:804
 msgid "Key is valid."
 msgstr "Верный ключ."
 
-#: warning
+#. Fold: Key operations
+#. Function: _tomb_key_recover recover_key
+#.
+#. Code sample:
+#.   }
+#.   
+#.   # $1 is a string containing an encrypted key
+#.   _tomb_key_recover recover_key() {
+#.       local key="${1}"    # Unique argument is an encrypted key
+#.   
+#. >     _warning "Attempting key recovery."
+#.   
+#.       _head="${key[(f)1]}" # take the first line
+#.   
+#.       TOMBKEY=""        # Reset global variable
+#: tomb:814
 msgid "Attempting key recovery."
 msgstr "Попытка восстановления ключа."
 
-#: warning
-msgid "The key seems invalid or its format is not known by this version of Tomb."
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.   # Set global variables TOMBKEY and TOMBKEYFILE.
+#.   _load_key() {
+#.       local keyfile="$1"    # Unique argument is an optional keyfile
+#.   
+#.       [[ -z $keyfile ]] && keyfile=$(option_value -k)
+#.       [[ -z $keyfile ]] && {
+#. >         _failure "This operation requires a key file to be specified using the -k option." }
+#.   
+#.       if [[ $keyfile == "-" ]]; then
+#.           _verbose "load_key reading from stdin."
+#.           _message "Waiting for the key to be piped from stdin... "
+#: tomb:838
+msgid "This operation requires a key file to be specified using the -k option."
+msgstr "Эта операция требует указания файла ключа с помощью опции -k."
+
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.       [[ -z $keyfile ]] && keyfile=$(option_value -k)
+#.       [[ -z $keyfile ]] && {
+#.           _failure "This operation requires a key file to be specified using the -k option." }
+#.   
+#.       if [[ $keyfile == "-" ]]; then
+#.           _verbose "load_key reading from stdin."
+#. >         _message "Waiting for the key to be piped from stdin... "
+#.           TOMBKEYFILE=stdin
+#.           TOMBKEY=$(cat)
+#.       elif [[ $keyfile == "cleartext" ]]; then
+#.           _verbose "load_key reading SECRET from stdin"
+#: tomb:842
+msgid "Waiting for the key to be piped from stdin... "
+msgstr "Ожидание передачи ключа через стандартный ввод..."
+
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.           _message "Waiting for the key to be piped from stdin... "
+#.           TOMBKEYFILE=cleartext
+#.           TOMBKEY=cleartext
+#.           TOMBSECRET=$(cat)
+#.       else
+#.           _verbose "load_key argument: ::1 key file::" $keyfile
+#. >         [[ -r $keyfile ]] || _failure "Key not found, specify one using -k."
+#.           TOMBKEYFILE=$keyfile
+#.           TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.       fi
+#.   
+#: tomb:853
+msgid "Key not found, specify one using -k."
+msgstr "Ключ не найден, укажите его с помощью опции -k."
+
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.           TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.       fi
+#.   
+#.       _verbose "load_key: ::1 key::" $TOMBKEYFILE
+#.   
+#.       is_valid_key $TOMBKEY || {
+#. >         _warning "The key seems invalid or its format is not known by this version of Tomb."
+#.           _tomb_key_recover $TOMBKEY
+#.       }
+#.   
+#.       # Declared TOMBKEYFILE (path)
+#: tomb:861
+msgid ""
+"The key seems invalid or its format is not known by this version of Tomb."
 msgstr "Похоже, ключ неверен, либо его формат неизвестен этой версии Tomb."
 
-#: failure
+#. Fold: Key operations
+#. Function: get_lukskey
+#.
+#. Code sample:
+#.                   _verbose "KDF salt: $kdf_salt"
+#.                   _verbose "KDF ic: $kdf_ic"
+#.                   _verbose "KDF len: $kdf_len"
+#.                   _password=$(tomb-kdb-pbkdf2 $kdf_salt $kdf_ic $kdf_len 2>/dev/null <<<$_password)
+#.                   ;;
+#.               *)
+#. >                 _failure "No suitable program for KDF ::1 program::." $pbkdf_hash
+#.                   unset _password
+#.                   return 1
+#.                   ;;
+#.           esac
+#: tomb:936
 msgid "No suitable program for KDF ::1 program::."
 msgstr "Нет подходящей программы для KDF ::1 program::."
 
-#: failure
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.   
+#.   # This function asks the user for the password to use the key it tests
+#.   # it against the return code of gpg on success returns 0 and saves
+#.   # the password in the global variable $TOMBPASSWORD
+#.   ask_key_password() {
+#.       [[ -z "$TOMBKEYFILE" ]] && {
+#. >         _failure "Internal error: ask_key_password() called before _load_key()." }
+#.   
+#.       [[ "$TOMBKEYFILE" = "cleartext" ]] && {
+#.           _verbose "no password needed, using secret bytes from stdin"
+#.           return 0 }
+#: tomb:962
 msgid "Internal error: ask_key_password() called before _load_key()."
 msgstr "Внутренняя ошибка: ask_key_password() вызвана перед _load_key()."
 
-#: message
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.           _failure "Internal error: ask_key_password() called before _load_key()." }
+#.   
+#.       [[ "$TOMBKEYFILE" = "cleartext" ]] && {
+#.           _verbose "no password needed, using secret bytes from stdin"
+#.           return 0 }
+#.   
+#. >     _message "A password is required to use key ::1 key::" $TOMBKEYFILE
+#.       passok=0
+#.       tombpass=""
+#.       if [[ "$1" = "" ]]; then
+#.   
+#: tomb:968
 msgid "A password is required to use key ::1 key::"
 msgstr "Для использования ключа ::1 key:: требуется пароль"
 
-#: message
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.               if [[ $c == 1 ]]; then
+#.                   tombpass=$(ask_password "Insert password to: $TOMBKEYFILE")
+#.               else
+#.                   tombpass=$(ask_password "Insert password to: $TOMBKEYFILE (attempt $c)")
+#.               fi
+#.               [[ $? = 0 ]] || {
+#. >                 _warning "User aborted password dialog."
+#.                   return 1
+#.               }
+#.   
+#.               get_lukskey "$tombpass"
+#: tomb:980
+msgid "User aborted password dialog."
+msgstr "Пользователь отменил диалог пароля."
+
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.                   return 1
+#.               }
+#.   
+#.               get_lukskey "$tombpass"
+#.   
+#.               [[ $? = 0 ]] && {
+#. >                 passok=1; _message "Password OK."
+#.                   break;
+#.               }
+#.           done
+#.   
+#: tomb:987
+msgid "Password OK."
+msgstr "Верный пароль."
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.   change_passwd() {
+#.       local tmpnewkey lukskey c tombpass tombpasstmp
+#.   
+#.       _check_swap  # Ensure swap is secure, if any
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#. >     _message "Commanded to change password for tomb key ::1 key::" $TOMBKEYFILE
+#.   
+#.       _tmp_create
+#.       tmpnewkey=$TOMBTMP
+#.   
+#: tomb:1025
 msgid "Commanded to change password for tomb key ::1 key::"
 msgstr "Приказано изменить пароль для ключа ::1 key::"
 
-#: failure
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           local tomboldpwd="`option_value --tomb-old-pwd`"
+#.           _verbose "tomb-old-pwd = ::1 old pass::" $tomboldpwd
+#.           ask_key_password "$tomboldpwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#. >     [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _success "Changing password for ::1 key file::" $TOMBKEYFILE
+#.   
+#.       # Here $TOMBSECRET contains the key material in clear
+#: tomb:1037
 msgid "No valid password supplied."
 msgstr "Не предоставлен верный пароль."
 
-#: message
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           ask_key_password "$tomboldpwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#. >     _success "Changing password for ::1 key file::" $TOMBKEYFILE
+#.   
+#.       # Here $TOMBSECRET contains the key material in clear
+#.   
+#.       { option_is_set --tomb-pwd } && {
+#: tomb:1039
+msgid "Changing password for ::1 key file::"
+msgstr "Меняю пароль для ::1 key file::"
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           gen_key "$tombpwd" >> "$tmpnewkey"
+#.       } || {
+#.           gen_key >> "$tmpnewkey"
+#.       }
+#.   
+#.       { is_valid_key "${mapfile[$tmpnewkey]}" } || {
+#. >         _failure "Error: the newly generated keyfile does not seem valid." }
+#.   
+#.       # Copy the new key as the original keyfile name
+#.       cp -f "${tmpnewkey}" $TOMBKEYFILE
+#.       _success "Your passphrase was successfully updated."
+#: tomb:1052
+msgid "Error: the newly generated keyfile does not seem valid."
+msgstr "Ошибка: сгенерированный файл ключа неверен."
+
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.   
+#.       { is_valid_key "${mapfile[$tmpnewkey]}" } || {
+#.           _failure "Error: the newly generated keyfile does not seem valid." }
+#.   
+#.       # Copy the new key as the original keyfile name
+#.       cp -f "${tmpnewkey}" $TOMBKEYFILE
+#. >     _success "Your passphrase was successfully updated."
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1056
+msgid "Your passphrase was successfully updated."
+msgstr "Ваш пароль успешно обновлен."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.   
+#.       if [ "$1" = "" ]; then
+#.           while true; do
+#.               # 3 tries to write two times a matching password
+#.               tombpass=`ask_password "Type the new password to secure your key"`
+#.               if [[ $? != 0 ]]; then
+#. >                 _failure "User aborted."
+#.               fi
+#.               if [ -z $tombpass ]; then
+#.                   _failure "You set empty password, which is not possible."
+#.               fi
+#: tomb:1078
+msgid "User aborted."
+msgstr "Отменено пользователем."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # 3 tries to write two times a matching password
+#.               tombpass=`ask_password "Type the new password to secure your key"`
+#.               if [[ $? != 0 ]]; then
+#.                   _failure "User aborted."
+#.               fi
+#.               if [ -z $tombpass ]; then
+#. >                 _failure "You set empty password, which is not possible."
+#.               fi
+#.               tombpasstmp=$tombpass
+#.               tombpass=`ask_password "Type the new password to secure your key (again)"`
+#.               if [[ $? != 0 ]]; then
+#: tomb:1081
+msgid "You set empty password, which is not possible."
+msgstr "Вы указали пустой пароль, так нельзя."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # see: https://github.com/dyne/Tomb/issues/82
+#.               itertime="`option_value --kdf`"
+#.               # removing support of floating points because they can't be type checked well
+#.               if [[ "$itertime" != <-> ]]; then
+#.                   unset tombpass
+#.                   unset tombpasstmp
+#. >                 _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#: tomb:1109
+msgid ""
+"Wrong argument for --kdf: must be an integer number (iteration seconds)."
+msgstr ""
+"Неверный аргумент для --kdf: должно быть указано целое число (секунд "
+"итерации)."
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.                   unset tombpasstmp
+#.                   _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#. >             _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#: tomb:1114
+msgid "Using KDF, iterations: ::1 microseconds::"
+msgstr "Использую KDF, итераций: ::1 microseconds::"
+
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.                   _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#. >             _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#.               _message "encoding the password"
+#: tomb:1115
 msgid "generating salt"
 msgstr "генерирую соль"
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#. >             _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#.               _message "encoding the password"
+#.               # We use a length of 64bytes = 512bits (more than needed!?)
+#.               tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+#: tomb:1117
 msgid "calculating iterations"
 msgstr "вычисляю итерации"
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#. >             _message "encoding the password"
+#.               # We use a length of 64bytes = 512bits (more than needed!?)
+#.               tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+#.   
+#.               header="_KDF_pbkdf2sha1_${pbkdf2_salt}_${pbkdf2_iter}_64\n"
+#: tomb:1119
 msgid "encoding the password"
 msgstr "кодирую пароль"
 
-#: warning
+#. Fold: Key operations
+#. Function: list_gnupg_ciphers
+#.
+#. Code sample:
+#.       unset tombpasstmp
+#.   }
+#.   
+#.   # prints an array of ciphers available in gnupg (to encrypt keys)
+#.   list_gnupg_ciphers() {
+#.       # prints an error if GnuPG is not found
+#. >     which gpg 2>/dev/null || _failure "gpg (GnuPG) is not found, Tomb cannot function without it."
+#.   
+#.       ciphers=(`gpg --version | awk '
+#.   BEGIN { ciphers=0 }
+#.   /^Cipher:/ { gsub(/,/,""); sub(/^Cipher:/,""); print; ciphers=1; next }
+#: tomb:1150
+msgid "gpg (GnuPG) is not found, Tomb cannot function without it."
+msgstr "gpg (GnuPG) не найден, Tomb не может работать без него."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEY
+#.   
+#.       imagefile=$PARAM
+#.   
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#. >         _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#.       _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#: tomb:1171
 msgid "Encode failed: ::1 image file:: is not a jpeg image."
 msgstr "Шифрование не удалось: ::1 image file:: не jpeg-изображение."
 
-#: failure
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#.           _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#. >     _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#.       _message "Please confirm the key password for the encoding"
+#.       # We ask the password and test if it is the same encoding the
+#.       # base key, to insure that the same password is used for the
+#.       # encryption and the steganography. This is a standard enforced
+#: tomb:1175
+msgid "Encoding key ::1 tomb key:: inside image ::2 image file::"
+msgstr "Кодирую ключ ::1 tomb key:: в изображение ::2 image file::"
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#.           _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#.       _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#. >     _message "Please confirm the key password for the encoding"
+#.       # We ask the password and test if it is the same encoding the
+#.       # base key, to insure that the same password is used for the
+#.       # encryption and the steganography. This is a standard enforced
+#.       # by Tomb, but its not strictly necessary (and having different
+#: tomb:1176
+msgid "Please confirm the key password for the encoding"
+msgstr "Пожалуйста, подтвердите пароль ключа для шифрования"
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tombpwd
+#.           ask_key_password "$tombpwd"
+#.       } || {
+#.           ask_key_password
+#.       }
+#.       [[ $? != 0 ]] && {
+#. >         _warning "Wrong password supplied."
+#.           _failure "You shall not bury a key whose password is unknown to you." }
+#.   
+#.       # We omit armor strings since having them as constants can give
+#.       # ground to effective attacks on steganography
+#: tomb:1192
+msgid "Wrong password supplied."
+msgstr "Указан неверный пароль."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.           ask_key_password "$tombpwd"
+#.       } || {
+#.           ask_key_password
+#.       }
+#.       [[ $? != 0 ]] && {
+#.           _warning "Wrong password supplied."
+#. >         _failure "You shall not bury a key whose password is unknown to you." }
+#.   
+#.       # We omit armor strings since having them as constants can give
+#.       # ground to effective attacks on steganography
+#.       print - "$TOMBKEY" | awk '
+#: tomb:1193
+msgid "You shall not bury a key whose password is unknown to you."
+msgstr "Вам не захоронить ключ, чей пароль не известен Вам."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   /^-----/ {next}
+#.   /^Version/ {next}
+#.   {print $0}' #.       | steghide embed --embedfile - --coverfile ${imagefile} #.       -p $TOMBPASSWORD -z 9 -e serpent cbc
+#.       if [ $? != 0 ]; then
+#. >         _warning "Encoding error: steghide reports problems."
+#.           res=1
+#.       else
+#.           _success "Tomb key encoded succesfully into image ::1 image file::" $imagefile
+#.           res=0
+#: tomb:1204
+msgid "Encoding error: steghide reports problems."
+msgstr "Ошибка шифрования: steghide сообщает о проблемах."
+
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.       | steghide embed --embedfile - --coverfile ${imagefile} #.       -p $TOMBPASSWORD -z 9 -e serpent cbc
+#.       if [ $? != 0 ]; then
+#.           _warning "Encoding error: steghide reports problems."
+#.           res=1
+#.       else
+#. >         _success "Tomb key encoded succesfully into image ::1 image file::" $imagefile
+#.           res=0
+#.       fi
+#.   
+#.       return $res
+#: tomb:1207
+msgid "Tomb key encoded succesfully into image ::1 image file::"
+msgstr "Ключ от гробницы успешно закодирован в изображение ::1 image file::"
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.   # mandatory 1st arg: the image file where key is supposed to be
+#.   # optional 2nd arg: the password to use (same as key, internal use)
+#.   # optional 3rd arg: the key where to save the result (- for stdout)
+#.   exhume_key() {
+#.       [[ "$1" = "" ]] && {
+#. >         _failure "Exhume failed, no image specified" }
+#.   
+#.       local imagefile="$1"  # The image file where to look for the key
+#.       local tombpass="$2"   # (Optional) the password to use (internal use)
+#.       local destkey="$3"    # (Optional) the key file where to save the
+#: tomb:1219
+msgid "Exhume failed, no image specified"
+msgstr "Эксгумация не удалась, не указано изображения"
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       local destkey="$3"    # (Optional) the key file where to save the
+#.       # result (- for stdout)
+#.       local r=1             # Return code (default: fail)
+#.   
+#.       # Ensure the image file is a readable JPEG
+#.       [[ ! -r $imagefile ]] && {
+#. >         _failure "Exhume failed, image file not found: ::1 image file::" "${imagefile:-none}" }
+#.       [[ ! $(file "$imagefile") =~ "JP.G" ]] && {
+#.           _failure "Exhume failed: ::1 image file:: is not a jpeg image." $imagefile }
+#.   
+#.       # When a password is passed as argument then always print out
+#: tomb:1229
 msgid "Exhume failed, image file not found: ::1 image file::"
 msgstr "Эксгумация неудачна, файл изображения не найден: ::1 image file::"
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       local r=1             # Return code (default: fail)
+#.   
+#.       # Ensure the image file is a readable JPEG
+#.       [[ ! -r $imagefile ]] && {
+#.           _failure "Exhume failed, image file not found: ::1 image file::" "${imagefile:-none}" }
+#.       [[ ! $(file "$imagefile") =~ "JP.G" ]] && {
+#. >         _failure "Exhume failed: ::1 image file:: is not a jpeg image." $imagefile }
+#.   
+#.       # When a password is passed as argument then always print out
+#.       # the exhumed key on stdout without further checks (internal use)
+#.       [[ -n "$tombpass" ]] && {
+#: tomb:1231
 msgid "Exhume failed: ::1 image file:: is not a jpeg image."
 msgstr "Эксгумация не удалась: ::1 image file:: не jpeg изображение."
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.       # When a password is passed as argument then always print out
+#.       # the exhumed key on stdout without further checks (internal use)
+#.       [[ -n "$tombpass" ]] && {
+#.           TOMBKEY=$(steghide extract -sf $imagefile -p $tombpass -xf -)
+#.           [[ $? != 0 ]] && {
+#. >             _failure "Wrong password or no steganographic key found" }
+#.   
+#.           recover_key $TOMBKEY
+#.   
+#.           return 0
+#: tomb:1238
 msgid "Wrong password or no steganographic key found"
 msgstr "Неверный пароль или не найден стеганографический ключ"
 
-#: message
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       }
+#.   
+#.       # Ensure we have a valid destination for the key
+#.       [[ -z $destkey ]] && { option_is_set -k } && destkey=$(option_value -k)
+#.       [[ -z $destkey ]] && {
+#.           destkey="-" # No key was specified: fallback to stdout
+#. >         _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#: tomb:1249
 msgid "printing exhumed key on stdout"
 msgstr "вывод эксгумированного ключа в стандарный вывод"
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       [[ -z $destkey ]] && {
+#.           destkey="-" # No key was specified: fallback to stdout
+#.           _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#. >         _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#: tomb:1253
 msgid "File exists: ::1 tomb key::"
 msgstr "Файл существует: ::1 tomb key::"
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.           _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#. >             _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#: tomb:1255
+msgid "Use of --force selected: overwriting."
+msgstr "Указана опция --force: перезаписываю."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#. >             _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#.       _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#: tomb:1258
+msgid "Make explicit use of --force to overwrite."
+msgstr "Явно укажите опцию --force для перезаписи."
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#. >             _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#.       _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#.       { option_is_set --tomb-pwd } && {
+#: tomb:1259
 msgid "Refusing to overwrite file. Operation aborted."
 msgstr "Отказываюсь перезаписывать файл. Операция отменена."
 
-#: message
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#. >     _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#.       { option_is_set --tomb-pwd } && {
+#.           tombpass=$(option_value --tomb-pwd)
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tombpass
+#.       } || {
+#: tomb:1262
 msgid "Trying to exhume a key out of image ::1 image file::"
 msgstr "Пытаюсь эксгумировать ключ из изображения ::1 image file::"
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       steghide extract -sf $imagefile -p ${tombpass} -xf $destkey
+#.       r=$?
+#.   
+#.       # Report to the user
+#.       [[ "$destkey" = "-" ]] && destkey="stdout"
+#.       [[ $r == 0 ]] && {
+#. >         _success "Key succesfully exhumed to ::1 key::." $destkey
+#.       } || {
+#.           _warning "Nothing found in ::1 image file::" $imagefile
+#.       }
+#.   
+#: tomb:1283
+msgid "Key succesfully exhumed to ::1 key::."
+msgstr "Ключ успешно эксгумирован в ::1 key::"
+
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.       # Report to the user
+#.       [[ "$destkey" = "-" ]] && destkey="stdout"
+#.       [[ $r == 0 ]] && {
+#.           _success "Key succesfully exhumed to ::1 key::." $destkey
+#.       } || {
+#. >         _warning "Nothing found in ::1 image file::" $imagefile
+#.       }
+#.   
+#.       return $r
+#.   }
+#: tomb:1285
 msgid "Nothing found in ::1 image file::"
 msgstr "В ::1 image file:: ничего не найдено"
 
-#: failure
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#.       local keyname=$(basename $TOMBKEYFILE)
+#.       local pngname="$keyname.qr.png"
+#.   
+#. >     _success "Rendering a printable QRCode for key: ::1 tomb key file::" $TOMBKEYFILE
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#: tomb:1300
+msgid "Rendering a printable QRCode for key: ::1 tomb key file::"
+msgstr "Рендерю готовый для печати штрих-код для ключа: ::1 tomb key file::"
+
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.   
+#.       _success "Rendering a printable QRCode for key: ::1 tomb key file::" $TOMBKEYFILE
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#. >         _failure "QREncode reported an error." }
+#.   
+#.       _success "Operation successful:"
+#.       # TODO: only if verbose and/or not silent
+#.       ls -lh $pngname
+#: tomb:1305
 msgid "QREncode reported an error."
 msgstr "QREncode сообщил об ошибке."
 
-#: message
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE #.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#.           _failure "QREncode reported an error." }
+#.   
+#. >     _success "Operation successful:"
+#.       # TODO: only if verbose and/or not silent
+#.       ls -lh $pngname
+#.       file $pngname
+#.   }
+#: tomb:1307
+msgid "Operation successful:"
+msgstr "Операция успешна."
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.   dig_tomb() {
+#.       local    tombpath="$1"    # Path to tomb
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#. >     _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#: tomb:1340
 msgid "Commanded to dig tomb ::1 tomb path::"
 msgstr "Приказано выкопать гробницу ::1 tomb path::"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       local    tombpath="$1"    # Path to tomb
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#. >     [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#: tomb:1342
 msgid "Missing path to tomb"
 msgstr "Отсутствует путь к гробнице"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#. >     [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#: tomb:1343
+msgid "Size argument missing, use -s"
+msgstr "Отсутствует размер, укажите его с помощью -s"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#. >     [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#: tomb:1344
 msgid "Size must be an integer (megabytes)"
 msgstr "Размер должен быть целым числом (в мегабатах)"
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#. >     [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       [[ -e $TOMBPATH ]] && {
+#: tomb:1345
 msgid "Tombs can't be smaller than 10 megabytes"
 msgstr "Гробницы не могут быть меньше 10 мегабайт"
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       [[ -e $TOMBPATH ]] && {
+#. >         _warning "A tomb exists already. I'm not digging here:"
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#: tomb:1350
+msgid "A tomb exists already. I'm not digging here:"
+msgstr "Гробница существует. Я не буду копать здесь:"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       [[ -e $TOMBPATH ]] && {
+#.           _warning "A tomb exists already. I'm not digging here:"
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#. >     _success "Creating a new tomb in ::1 tomb path::" $TOMBPATH
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#: tomb:1355
+msgid "Creating a new tomb in ::1 tomb path::"
+msgstr "Создаю новую гробницу в ::1 tomb path::"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#.       _success "Creating a new tomb in ::1 tomb path::" $TOMBPATH
+#.   
+#. >     _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#.       touch $TOMBPATH
+#.       [[ $? = 0 ]] || {
+#: tomb:1357
 msgid "Generating ::1 tomb file:: of ::2 size::MiB"
 msgstr "Генерирую ::1 tomb file:: размером ::2 size::Мб"
 
-#: warning
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#.       touch $TOMBPATH
+#.       [[ $? = 0 ]] || {
+#. >         _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.       chmod 0600 $TOMBPATH
+#.   
+#: tomb:1362
 msgid "Error creating the tomb ::1 tomb path::"
 msgstr "Ошибка при создании гробницы ::1 tomb path::"
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           ls -lh $TOMBPATH
+#.       } || {
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#. >     _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#: tomb:1377
+msgid "Done digging ::1 tomb name::"
+msgstr "::1 tomb name:: выкопана"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       } || {
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#. >     _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#: tomb:1378
+msgid "Your tomb is not yet ready, you need to forge a key and lock it:"
+msgstr "Ваша гробница пока не готова, необходимо выковать ключ и запереть ее:"
+
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#. >     _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#: tomb:1379
 msgid "tomb forge ::1 tomb path::.key"
 msgstr "tomb forge ::1 tomb path::.key"
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#. >     _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1380
 msgid "tomb lock ::1 tomb path:: -k ::1 tomb path::.key"
 msgstr "tomb lock ::1 tomb path:: -k ::1 tomb path::.key"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       local destkey="$1"
+#.       { option_is_set -k } && { destkey=$(option_value -k) }
+#.   
+#.       local algo="AES256"  # Default encryption algorithm
+#.   
+#.       [[ -z "$destkey" ]] && {
+#. >         _failure "A filename needs to be specified using -k to forge a new key." }
+#.   
+#.       _message "Commanded to forge key ::1 key::" $destkey
+#.   
+#.       _check_swap # Ensure the available memory is safe to use
+#: tomb:1401
+msgid "A filename needs to be specified using -k to forge a new key."
+msgstr ""
+"Необходимо указать имя файла через опцию -k, чтобы выковать новый ключ."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       local algo="AES256"  # Default encryption algorithm
+#.   
+#.       [[ -z "$destkey" ]] && {
+#.           _failure "A filename needs to be specified using -k to forge a new key." }
+#.   
+#. >     _message "Commanded to forge key ::1 key::" $destkey
+#.   
+#.       _check_swap # Ensure the available memory is safe to use
+#.   
+#.       # Ensure GnuPG won't exit with an error before first run
+#: tomb:1403
 msgid "Commanded to forge key ::1 key::"
 msgstr "Приказано выковать ключ ::1 key::"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           mkdir -m 0700 $HOME/.gnupg
+#.           touch $HOME/.gnupg/pubring.gpg }
+#.   
+#.       # Do not overwrite any files accidentally
+#.       [[ -r "$destkey" ]] && {
+#.           ls -lh $destkey
+#. >         _failure "Forging this key would overwrite an existing file. Operation aborted." }
+#.   
+#.       touch $destkey
+#.       [[ $? == 0 ]] || {
+#.           _warning "Cannot generate encryption key."
+#: tomb:1415
+msgid "Forging this key would overwrite an existing file. Operation aborted."
+msgstr "Выковка этого ключа перезапишет существующий файл. Операция отменена."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       [[ -r "$destkey" ]] && {
+#.           ls -lh $destkey
+#.           _failure "Forging this key would overwrite an existing file. Operation aborted." }
+#.   
+#.       touch $destkey
+#.       [[ $? == 0 ]] || {
+#. >         _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.       chmod 0600 $destkey
+#.   
+#.       # Update algorithm if it was passed on the command line with -o
+#: tomb:1419
+msgid "Cannot generate encryption key."
+msgstr "Не могу сгенерировать ключ шифрования."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       chmod 0600 $destkey
+#.   
+#.       # Update algorithm if it was passed on the command line with -o
+#.       { option_is_set -o } && algopt="$(option_value -o)"
+#.       [[ -n "$algopt" ]] && algo=$algopt
+#.   
+#. >     _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#: tomb:1427
 msgid "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::"
-msgstr "Приказано выковать ключ ::1 key:: с алгоритмом шифрования ::2 algorithm::"
+msgstr ""
+"Приказано выковать ключ ::1 key:: с алгоритмом шифрования ::2 algorithm::"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#. >     _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#: tomb:1432
+msgid "This operation takes time, keep using this computer on other tasks,"
+msgstr "Эта операция займет некоторое время, выполняйте пока другие задачи,"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" #.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#. >     _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#: tomb:1433
+msgid "once done you will be asked to choose a password for your tomb."
+msgstr "по завершении Вас вопросят ввести пароль для гробницы."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#. >     _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#.       local random_source=/dev/random
+#: tomb:1434
+msgid "To make it faster you can move the mouse around."
+msgstr "Чтобы ускорить операцию, подвигайте мышку."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#. >     _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#.       local random_source=/dev/random
+#.       { option_is_set --use-urandom } && random_source=/dev/urandom
+#: tomb:1435
+msgid "If you are on a server, you can use an Entropy Generation Daemon."
+msgstr "Если Вы на сервере, можно использовать демон генерации энтропии."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       [[ $? == 0 ]] || {
+#.           _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.   
+#.       # Here the global variable TOMBSECRET contains the naked secret
+#.   
+#. >     _success "Choose the  password of your key: ::1 tomb key::" $TOMBKEYFILE
+#.       _message "(You can also change it later using 'tomb passwd'.)"
+#.       # _user_file $TOMBKEYFILE
+#.   
+#.       tombname="$TOMBKEYFILE" # XXX ???
+#: tomb:1449
+msgid "Choose the  password of your key: ::1 tomb key::"
+msgstr "Выберите пароль для вашего ключа: ::1 tomb key::"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.   
+#.       # Here the global variable TOMBSECRET contains the naked secret
+#.   
+#.       _success "Choose the  password of your key: ::1 tomb key::" $TOMBKEYFILE
+#. >     _message "(You can also change it later using 'tomb passwd'.)"
+#.       # _user_file $TOMBKEYFILE
+#.   
+#.       tombname="$TOMBKEYFILE" # XXX ???
+#.       # the gen_key() function takes care of the new key's encryption
+#: tomb:1450
+msgid "(You can also change it later using 'tomb passwd'.)"
+msgstr "(Его можно потом изменить с помощью 'tomb passwd'.)"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       # load the key contents (set global variable)
+#.       TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.   
+#.       # this does a check on the file header
+#.       is_valid_key $TOMBKEY || {
+#. >         _warning "The key does not seem to be valid."
+#.           _warning "Dumping contents to screen:"
+#.           print "${mapfile[$TOMBKEY]}"
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#: tomb:1468
+msgid "The key does not seem to be valid."
+msgstr "Ключ неверен."
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       # load the key contents (set global variable)
+#.       TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.   
+#.       # this does a check on the file header
+#.       is_valid_key $TOMBKEY || {
+#.           _warning "The key does not seem to be valid."
+#. >         _warning "Dumping contents to screen:"
+#.           print "${mapfile[$TOMBKEY]}"
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#: tomb:1469
+msgid "Dumping contents to screen:"
+msgstr "Выгрузка содержимого на экран:"
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#. >     _message "Done forging ::1 key file::" $TOMBKEYFILE
+#.       _success "Your key is ready:"
+#.       ls -lh $TOMBKEYFILE
+#.   }
+#.   
+#: tomb:1477
 msgid "Done forging ::1 key file::"
 msgstr "Выкован ключ ::1 key file::"
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _message "Done forging ::1 key file::" $TOMBKEYFILE
+#. >     _success "Your key is ready:"
+#.       ls -lh $TOMBKEYFILE
+#.   }
+#.   
+#.   # Step three -- Lock tomb
+#: tomb:1478
+msgid "Your key is ready:"
+msgstr "Ваш ключ готов:"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       # for more alternatives refer to cryptsetup(8)
+#.       local cipher="aes-xts-plain64:sha256"
+#.   
+#.       local tombpath="$1"      # First argument is the path to the tomb
+#.   
+#.       [[ -n $tombpath ]] || {
+#. >         _warning "No tomb specified for locking."
+#.           _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#: tomb:1498
+msgid "No tomb specified for locking."
+msgstr "Не указана гробница для запирания."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       local cipher="aes-xts-plain64:sha256"
+#.   
+#.       local tombpath="$1"      # First argument is the path to the tomb
+#.   
+#.       [[ -n $tombpath ]] || {
+#.           _warning "No tomb specified for locking."
+#. >         _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#.       _plot $tombpath
+#: tomb:1499
+msgid "Usage: tomb lock file.tomb file.tomb.key"
+msgstr "Использование: tomb lock file.tomb file.tomb.key"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#.       _plot $tombpath
+#.   
+#. >     _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
+#.   
+#.       [[ -f $TOMBPATH ]] || {
+#.           _failure "There is no tomb here. You have to dig it first." }
+#.   
+#: tomb:1505
 msgid "Commanded to lock tomb ::1 tomb file::"
 msgstr "Приказано запереть гробницу ::1 tomb file::"
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _plot $tombpath
+#.   
+#.       _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
+#.   
+#.       [[ -f $TOMBPATH ]] || {
+#. >         _failure "There is no tomb here. You have to dig it first." }
+#.   
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       lo_mount $TOMBPATH
+#: tomb:1508
+msgid "There is no tomb here. You have to dig it first."
+msgstr "Здесь нет гробницы. Сначала выкопайте ее."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#.       _verbose "Loop mounted on ::1 mount point::" $nstloop
+#.   
+#. >     _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#: tomb:1517
+msgid "Checking if the tomb is empty (we never step on somebody else's bones)."
+msgstr "Проверяю, пуста ли гробница (мы никогда не ходим по чужим костям)."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       _verbose "Loop mounted on ::1 mount point::" $nstloop
+#.   
+#.       _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#. >         _warning "The tomb was already locked with another key."
+#.           _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#.           _message "Fine, this tomb seems empty."
+#.       fi
+#: tomb:1521
+msgid "The tomb was already locked with another key."
+msgstr "Гробница уже заперта другим ключом."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#. >         _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#.           _message "Fine, this tomb seems empty."
+#.       fi
+#.   
+#: tomb:1522
+msgid ""
+"Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+msgstr ""
+"Операция отменена. Я не могу запереть уже запертую гробницу. Выкопайте новую."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#.           _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#. >         _message "Fine, this tomb seems empty."
+#.       fi
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#: tomb:1524
+msgid "Fine, this tomb seems empty."
+msgstr "Так, эта гробница, вроде как, пуста."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#.       # the encryption cipher for a tomb can be set when locking using -c
+#.       { option_is_set -o } && algopt="$(option_value -o)"
+#.       [[ -n "$algopt" ]] && cipher=$algopt
+#. >     _message "Locking using cipher: ::1 cipher::" $cipher
+#.   
+#.       # get the pass from the user and check it
+#.       if option_is_set --tomb-pwd; then
+#.           tomb_pwd="`option_value --tomb-pwd`"
+#: tomb:1532
 msgid "Locking using cipher: ::1 cipher::"
 msgstr "Запираю, используя шифр ::1 cipher::"
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           ask_key_password "$tomb_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#. >     _success "Locking ::1 tomb file:: with ::2 tomb key file::" $TOMBFILE $TOMBKEYFILE
+#.   
+#.       _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #: tomb:1544
+msgid "Locking ::1 tomb file:: with ::2 tomb key file::"
+msgstr "Запираю ::1 tomb file:: с помощью ::2 tomb key file::"
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _success "Locking ::1 tomb file:: with ::2 tomb key file::" $TOMBFILE $TOMBKEYFILE
+#.   
+#. >     _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #.           luksFormat ${nstloop}
+#.       [[ $? == 0 ]] || {
+#: tomb:1546
+msgid "Formatting Luks mapped device."
+msgstr "Форматирую устройство LUKS."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode #.           --cipher ${cipher} --key-size 256 --key-slot 0 #.           luksFormat ${nstloop}
+#.       [[ $? == 0 ]] || {
+#. >         _warning "cryptsetup luksFormat returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#: tomb:1551
+msgid "cryptsetup luksFormat returned an error."
+msgstr "cryptsetup luksFormat вернул ошибку."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       [[ $? == 0 ]] || {
+#.           _warning "cryptsetup luksFormat returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#. >         _warning "cryptsetup luksOpen returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#: tomb:1556
 msgid "cryptsetup luksOpen returned an error."
 msgstr "cryptsetup luksOpen возвратил ошибку."
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#.           _warning "cryptsetup luksOpen returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#. >     _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _warning "Tomb format returned an error."
+#: tomb:1559
+msgid "Formatting your Tomb with Ext3/Ext4 filesystem."
+msgstr "Форматирую Вашу гробницу в файловую систему Ext3/Ext4."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _failure "Operation aborted." }
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _warning "Tomb format returned an error."
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#: tomb:1563
+msgid "Tomb format returned an error."
+msgstr "Tomb format вернул ошибку."
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _warning "Tomb format returned an error."
+#. >         _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#: tomb:1564
 msgid "Your tomb ::1 tomb file:: may be corrupted."
 msgstr "Ваша гробница ::1 tomb file:: может быть повреждена."
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Tomb format returned an error."
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#. >     _message "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::" $TOMBNAME $cipher
+#.       _success "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::" #.           $TOMBPATH $TOMBKEYFILE
+#.   
+#.   }
+#: tomb:1569
 msgid "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::"
 msgstr "Запер ::1 tomb name:: с помощью LUKS dm-crypt ::2 cipher::"
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#.       _message "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::" $TOMBNAME $cipher
+#. >     _success "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::" #.           $TOMBPATH $TOMBKEYFILE
+#.   
+#.   }
+#.   
+#: tomb:1570
+msgid ""
+"Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::"
+msgstr ""
+"Ваша гробница готова в ::1 tomb path:: и защищена ключом ::2 tomb key::"
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.   # This function changes the key that locks a tomb
+#.   change_tomb_key() {
+#.       local tombkey="$1"      # Path to the tomb's key file
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#. >     _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#: tomb:1580
 msgid "Commanded to reset key for tomb ::1 tomb path::"
 msgstr "Приказано сбросить ключ для гробницы ::1 tomb path::"
 
-#: warning
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       local tombkey="$1"      # Path to the tomb's key file
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#. >         _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#.           _failure "Execution aborted."
+#.       }
+#.   
+#: tomb:1583
 msgid "Command 'setkey' needs two arguments: the old key file and the tomb."
 msgstr "Команда 'setkey' требует два аргумента: старый файл ключа и гробницу."
 
-#: warning
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#. >         _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#.           _failure "Execution aborted."
+#.       }
+#.   
+#.       _check_swap
+#: tomb:1584
 msgid "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
 msgstr "Например:  tomb -k new.tomb.key old.tomb.key secret.tomb"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#. >         _failure "Execution aborted."
+#.       }
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#: tomb:1585
 msgid "Execution aborted."
 msgstr "Операция отменена."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       # is it a LUKS encrypted nest? we check one more time
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Not a valid LUKS encrypted volume: ::1 volume::" $TOMBPATH }
+#.   
+#.       _load_key $tombkey    # Try loading given key and set TOMBKEY and
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#: tomb:1596
 msgid "Not a valid LUKS encrypted volume: ::1 volume::"
 msgstr "Неверный зашифрованный том LUKS: ::1 volume::"
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       _load_key $tombkey    # Try loading given key and set TOMBKEY and
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#.       local oldkeyfile=$TOMBKEYFILE
+#.   
+#.       # we have everything, prepare to mount
+#. >     _success "Changing lock on tomb ::1 tomb name::" $TOMBNAME
+#.       _message "Old key: ::1 old key::" $oldkeyfile
+#.   
+#.       # render the mapper
+#.       mapdate=`date +%s`
+#: tomb:1604
+msgid "Changing lock on tomb ::1 tomb name::"
+msgstr "Меняю замок на гробнице ::1 tomb name::"
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#.       local oldkeyfile=$TOMBKEYFILE
+#.   
+#.       # we have everything, prepare to mount
+#.       _success "Changing lock on tomb ::1 tomb name::" $TOMBNAME
+#. >     _message "Old key: ::1 old key::" $oldkeyfile
+#.   
+#.       # render the mapper
+#.       mapdate=`date +%s`
+#.       # save date of mount in minutes since 1970
+#: tomb:1605
 msgid "Old key: ::1 old key::"
 msgstr "Старый ключ: ::1 old key::"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _verbose "tomb-old-pwd = ::1 old pass::" $tomb_old_pwd
+#.           ask_key_password "$tomb_old_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || {
+#. >         _failure "No valid password supplied for the old key." }
+#.       old_secret=$TOMBSECRET
+#.   
+#.       # luksOpen the tomb (not really mounting, just on the loopback)
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #: tomb:1621
 msgid "No valid password supplied for the old key."
 msgstr "Не указан верный пароль для старого ключа."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _failure "No valid password supplied for the old key." }
+#.       old_secret=$TOMBSECRET
+#.   
+#.       # luksOpen the tomb (not really mounting, just on the loopback)
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksOpen ${nstloop} ${mapper}
+#. >     [[ $? == 0 ]] || _failure "Unexpected error in luksOpen."
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#.       _message "New key: ::1 key file::" $TOMBKEYFILE
+#: tomb:1627
 msgid "Unexpected error in luksOpen."
 msgstr "Неожиданная ошибка в luksOpen."
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksOpen ${nstloop} ${mapper}
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksOpen."
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#. >     _message "New key: ::1 key file::" $TOMBKEYFILE
+#.   
+#.       if option_is_set --tomb-pwd; then
+#.           tomb_new_pwd="`option_value --tomb-pwd`"
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_new_pwd
+#: tomb:1631
 msgid "New key: ::1 key file::"
 msgstr "Новый ключ: ::1 key file::"
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_new_pwd
+#.           ask_key_password "$tomb_new_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || {
+#. >         _failure "No valid password supplied for the new key." }
+#.   
+#.       _tmp_create
+#.       tmpnewkey=$TOMBTMP
+#.       print -R -n - "$TOMBSECRET" >> $tmpnewkey
+#: tomb:1641
 msgid "No valid password supplied for the new key."
 msgstr "Не узкана верный пароль для нового ключа."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       tmpnewkey=$TOMBTMP
+#.       print -R -n - "$TOMBSECRET" >> $tmpnewkey
+#.   
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#. >     [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#: tomb:1650
 msgid "Unexpected error in luksChangeKey."
 msgstr "Неожиданная ошибка в luksChangeKey."
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - #.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#. >     sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#.       _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#: tomb:1652
 msgid "Unexpected error in luksClose."
 msgstr "Неожиданная ошибка в luksClose."
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#. >     _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#.       _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#.       return 0
+#.   }
+#: tomb:1654
+msgid "Succesfully changed key for tomb: ::1 tomb file::"
+msgstr "Ключ для гробницы ::1 tomb file:: успешно изменен"
+
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#. >     _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1655
 msgid "The new key is: ::1 new key::"
 msgstr "Новый ключ: ::1 new key::"
 
-#: failure
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.   # {{{ Open
+#.   
+#.   # $1 = tombfile $2(optional) = mountpoint
+#.   mount_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#. >     [[ -n "$tombpath" ]] || _failure "No tomb name specified for opening."
+#.   
+#.       _message "Commanded to open tomb ::1 tomb name::" $1
+#.   
+#.       _check_swap
+#: tomb:1667
 msgid "No tomb name specified for opening."
 msgstr "Не указано имя гробницы для открытия."
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.   # $1 = tombfile $2(optional) = mountpoint
+#.   mount_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.       [[ -n "$tombpath" ]] || _failure "No tomb name specified for opening."
+#.   
+#. >     _message "Commanded to open tomb ::1 tomb name::" $1
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#.   
+#: tomb:1669
 msgid "Commanded to open tomb ::1 tomb name::"
 msgstr "Приказано открыть гробницу ::1 tomb name::"
 
-#: warning
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#.   
+#.       # check file type (if its a Luks fs)
+#.       [[ "`file $TOMBPATH`" =~ "luks encrypted file" ]] || {
+#. >         _warning "::1 tomb file:: is not a valid tomb file" $TOMBFILE
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#: tomb:1676
 msgid "::1 tomb file:: is not a valid tomb file"
 msgstr "::1 tomb file:: неверный файл гробницы"
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#.       tombmount=${2:-/media/$TOMBFILE}
+#.       [[ -z "$2" ]] && {
+#. >         _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#: tomb:1686
 msgid "Mountpoint not specified, using default: ::1 mount point::"
-msgstr "Не указана точка монтирования, использую точку по умолчанию: ::1 mount point::"
-
-#: warning
+msgstr ""
+"Не указана точка монтирования, использую точку по умолчанию: ::1 mount "
+"point::"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       tombmount=${2:-/media/$TOMBFILE}
+#.       [[ -z "$2" ]] && {
+#.           _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#. >         _warning "::1 tomb name:: is already open." $TOMBNAME
+#.           _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#: tomb:1690
 msgid "::1 tomb name:: is already open."
 msgstr "::1 tomb name:: уже открыт."
 
-#: failure
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       [[ -z "$2" ]] && {
+#.           _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#. >         _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#.       _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#: tomb:1691
+msgid "Here below its status is reported:"
+msgstr "Ниже назодится отчет о его статусе:"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#.           _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#. >     _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#: tomb:1695
+msgid "Opening ::1 tomb file:: on ::2 mount point::"
+msgstr "Открываю ::1 tomb file:: в ::2 mount point::"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#.       sudo cryptsetup isLuks ${nstloop} || {
+#.           # is it a LUKS encrypted nest? see cryptsetup(1)
+#. >         _failure "::1 tomb file:: is not a valid Luks encrypted storage file." $TOMBFILE }
+#.   
+#.       _message "This tomb is a valid LUKS encrypted device."
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#: tomb:1702
 msgid "::1 tomb file:: is not a valid Luks encrypted storage file."
 msgstr "::1 tomb file:: - неверное зашифрованное устройство LUSK."
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       nstloop=`lo_new`
+#.   
+#.       sudo cryptsetup isLuks ${nstloop} || {
+#.           # is it a LUKS encrypted nest? see cryptsetup(1)
+#.           _failure "::1 tomb file:: is not a valid Luks encrypted storage file." $TOMBFILE }
+#.   
+#. >     _message "This tomb is a valid LUKS encrypted device."
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#.       tombdump=(`print $luksdump | awk '
+#.           /^Cipher name/ {print $3}
+#: tomb:1704
+msgid "This tomb is a valid LUKS encrypted device."
+msgstr "Эта гробница - верное зашифрованное устройство LUKS."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#.       tombdump=(`print $luksdump | awk '
+#.           /^Cipher name/ {print $3}
+#.           /^Cipher mode/ {print $3}
+#.           /^Hash spec/   {print $3}'`)
+#. >     _message "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\"" $tombdump[1] $tombdump[2] $tombdump[3]
+#.   
+#.       slotwarn=`print $luksdump | awk '
+#.           BEGIN { zero=0 }
+#.           /^Key slot 0/ { zero=1 }
+#: tomb:1711
 msgid "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\""
 msgstr "Шифр \"::1 cipher::\", режим \"::2 mode::\", хеш \"::3 hash::\""
 
-#: warning
-msgid "Multiple key slots are enabled on this tomb. Beware: there can be a backdoor."
-msgstr "Для этой гробницы разрешено использование нескольких ключей. Будьте осторожны: там может быть бэкдор."
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       slotwarn=`print $luksdump | awk '
+#.           BEGIN { zero=0 }
+#.           /^Key slot 0/ { zero=1 }
+#.           /^Key slot.*ENABLED/ { if(zero==1) print "WARN" }'`
+#.       [[ "$slotwarn" == "WARN" ]] && {
+#. >         _warning "Multiple key slots are enabled on this tomb. Beware: there can be a backdoor." }
+#.   
+#.       # save date of mount in minutes since 1970
+#.       mapdate=`date +%s`
+#.   
+#: tomb:1718
+msgid ""
+"Multiple key slots are enabled on this tomb. Beware: there can be a backdoor."
+msgstr ""
+"Для этой гробницы разрешено использование нескольких ключей. Будьте "
+"осторожны: там может быть бэкдор."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           ask_key_password
+#.       }
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _cryptsetup luksOpen ${nstloop} ${mapper}
+#.       [[ $? = 0 ]] || {
+#. >         _failure "Failure mounting the encrypted file." }
+#.   
+#.       # preserve the loopdev after exit
+#.       lo_preserve "$nstloop"
+#.   
+#: tomb:1742
+msgid "Failure mounting the encrypted file."
+msgstr "Не удалось примонтировать зашифрованный файл."
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       # array: [ cipher, keysize, loopdevice ]
+#.       tombstat=(`sudo cryptsetup status ${mapper} | awk '
+#.       /cipher:/  {print $2}
+#.       /keysize:/ {print $2}
+#.       /device:/  {print $2}'`)
+#. >     _success "Success unlocking tomb ::1 tomb name::" $TOMBNAME
+#.       _verbose "Key size is ::1 size:: for cipher ::2 cipher::" $tombstat[2] $tombstat[1]
+#.   
+#.       _message "Checking filesystem via ::1::" $tombstat[3]
+#.       sudo fsck -p -C0 /dev/mapper/${mapper}
+#: tomb:1752
+msgid "Success unlocking tomb ::1 tomb name::"
+msgstr "Успешно отпер гробницу ::1 tomb name::"
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       /cipher:/  {print $2}
+#.       /keysize:/ {print $2}
+#.       /device:/  {print $2}'`)
+#.       _success "Success unlocking tomb ::1 tomb name::" $TOMBNAME
+#.       _verbose "Key size is ::1 size:: for cipher ::2 cipher::" $tombstat[2] $tombstat[1]
+#.   
+#. >     _message "Checking filesystem via ::1::" $tombstat[3]
+#.       sudo fsck -p -C0 /dev/mapper/${mapper}
+#.       _verbose "Tomb engraved as ::1 tomb name::" $TOMBNAME
+#.       sudo tune2fs -L $TOMBNAME /dev/mapper/${mapper} > /dev/null
+#.   
+#: tomb:1755
 msgid "Checking filesystem via ::1::"
 msgstr "Проверка файловой системы через ::1::"
 
-#: message
-msgid "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::"
-msgstr "Последний визит нанес ::1 user::(::2 tomb build::) из ::3 tty:: на ::4 host::"
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       # TODO: safety check MOUNTOPTS
+#.       # safe_mount_options && #.       sudo mount -o $MOUNTOPTS /dev/mapper/${mapper} ${tombmount}
+#.       # Clean up if the mount failed
+#.       [[ $? == 0 ]] || {
+#. > 	_warning "Error mounting ::1 mapper:: on ::2 tombmount::" $mapper $tombmount
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #.   	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#: tomb:1773
+msgid "Error mounting ::1 mapper:: on ::2 tombmount::"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       # safe_mount_options && #.       sudo mount -o $MOUNTOPTS /dev/mapper/${mapper} ${tombmount}
+#.       # Clean up if the mount failed
+#.       [[ $? == 0 ]] || {
+#.   	_warning "Error mounting ::1 mapper:: on ::2 tombmount::" $mapper $tombmount
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #. > 	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#.   	[[ -e /dev/mapper/$mapper ]] && sudo cryptsetup luksClose $mapper
+#.   	# The loop is taken care of in _endgame()
+#: tomb:1775
+msgid "Are mount options '::1 mount options::' valid?"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && #.   	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#.   	[[ -e /dev/mapper/$mapper ]] && sudo cryptsetup luksClose $mapper
+#.   	# The loop is taken care of in _endgame()
+#. > 	_failure "Cannot mount ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       sudo chown $UID:$GID ${tombmount}
+#.       sudo chmod 0711 ${tombmount}
+#: tomb:1780
+msgid "Cannot mount ::1 tomb name::"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   	_failure "Cannot mount ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       sudo chown $UID:$GID ${tombmount}
+#.       sudo chmod 0711 ${tombmount}
+#.   
+#. >     _success "Success opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#.   
+#.       local tombtty tombhost tombuid tombuser
+#.   
+#.       # print out when was opened the last time, by whom and where
+#: tomb:1786
+msgid "Success opening ::1 tomb file:: on ::2 mount point::"
+msgstr "Успешно открыл ::1 tomb file:: в ::2 mount point::"
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           tombuid=$(_cat ${tombmount}/.uid | tr -d ' ')
+#.           tomblast=$(_cat ${tombmount}/.last | tr -d ' ')
+#.           for e in ${(f@)mapfile[/etc/passwd]}; do
+#.               [[ "$e" =~ ":$tombuid:" ]] && {
+#.                   tombuser="${e[(ws@:@)1]}" }
+#.           done
+#. >         _message "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::" $tombuser $tombuid $tombtty $tombhost
+#.           _message "on date ::1 date::" "`date --date=@${tomblast} +%c`"
+#.       }
+#.       # write down the UID and TTY that opened the tomb
+#.       rm -f ${tombmount}/.uid
+#: tomb:1800
+msgid "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::"
+msgstr ""
+"Последний визит нанес ::1 user::(::2 tomb build::) из ::3 tty:: на ::4 host::"
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           tomblast=$(_cat ${tombmount}/.last | tr -d ' ')
+#.           for e in ${(f@)mapfile[/etc/passwd]}; do
+#.               [[ "$e" =~ ":$tombuid:" ]] && {
+#.                   tombuser="${e[(ws@:@)1]}" }
+#.           done
+#.           _message "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::" $tombuser $tombuid $tombtty $tombhost
+#. >         _message "on date ::1 date::" "`date --date=@${tomblast} +%c`"
+#.       }
+#.       # write down the UID and TTY that opened the tomb
+#.       rm -f ${tombmount}/.uid
+#.       print $_UID > ${tombmount}/.uid
+#: tomb:1801
 msgid "on date ::1 date::"
 msgstr "дата: ::1 date::"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.   
+#.       # Default mount options are overridden with the -o switch
+#.       [[ -n ${(k)OPTS[-o]} ]] && MOUNTOPTS=${OPTS[-o]}
+#.   
+#.       # No HOME set? Note: this should never happen again.
+#.       [[ -z $HOME ]] && {
+#. >         _warning "How pitiful!  A tomb, and no HOME."
+#.           return 1 }
+#.   
+#.       [[ -z $mnt || ! -d $mnt ]] && {
+#.           _warning "Cannot exec bind hooks without a mounted tomb."
+#: tomb:1849
+msgid "How pitiful!  A tomb, and no HOME."
+msgstr "Как жаль! Гробница есть, но нет HOME."
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       # No HOME set? Note: this should never happen again.
+#.       [[ -z $HOME ]] && {
+#.           _warning "How pitiful!  A tomb, and no HOME."
+#.           return 1 }
+#.   
+#.       [[ -z $mnt || ! -d $mnt ]] && {
+#. >         _warning "Cannot exec bind hooks without a mounted tomb."
+#.           return 1 }
+#.   
+#.       [[ -r "$mnt/bind-hooks" ]] || {
+#.           _verbose "bind-hooks not found in ::1 mount point::" $mnt
+#: tomb:1853
+#, fuzzy
+msgid "Cannot exec bind hooks without a mounted tomb."
+msgstr "Невозможно совершить привязки без примонтированной гробницы."
+
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       # better parsing for bind hooks checks for two separated words on
+#.       # each line, using zsh word separator array subscript
+#.       _bindhooks="${mapfile[${mnt}/bind-hooks]}"
+#.       for h in ${(f)_bindhooks}; do
+#.           s="${h[(w)1]}"
+#.           d="${h[(w)2]}"
+#. >         [[ "$s" = "" ]] && { _warning "bind-hooks file is broken"; return 1 }
+#.           [[ "$d" = "" ]] && { _warning "bind-hooks file is broken"; return 1 }
+#.           maps+=($s $d)
+#.           _verbose "bind-hook found: $s -> $d"
+#.       done
+#: tomb:1869
 #, fuzzy
 msgid "bind-hooks file is broken"
 msgstr "файл bind-hooks битый"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.           _verbose "bind-hook found: $s -> $d"
+#.       done
+#.       unset _bindhooks
+#.   
+#.       for dir in ${(k)maps}; do
+#.           [[ "${dir[1]}" == "/" || "${dir[1,2]}" == ".." ]] && {
+#. >             _warning "bind-hooks map format: local/to/tomb local/to/\$HOME"
+#.               continue }
+#.   
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#: tomb:1878
 #, fuzzy
 msgid "bind-hooks map format: local/to/tomb local/to/$HOME"
 msgstr "Формат bind-hooks: local/to/tomb local/to/HOME"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       for dir in ${(k)maps}; do
+#.           [[ "${dir[1]}" == "/" || "${dir[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME"
+#.               continue }
+#.   
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#. >             _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#: tomb:1882
 #, fuzzy
 msgid "bind-hooks map format: local/to/tomb local/to/$HOME.  Rolling back"
 msgstr "Формат bind-hooks: local/to/tomb local/to/HOME.  Откат"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#. >             _warning "bind-hook target not existent, skipping ::1 home::/::2 subdir::" $HOME ${maps[$dir]}
+#.           elif [[ ! -r "$mnt/$dir" ]]; then
+#.               _warning "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::" $mnt $dir
+#.           else
+#.               sudo mount -o bind,$MOUNTOPTS $mnt/$dir $HOME/${maps[$dir]} #: tomb:1887
 #, fuzzy
 msgid "bind-hook target not existent, skipping ::1 home::/::2 subdir::"
 msgstr "Цель bind-hook не существует, пропускаю ::1 home::/::2 dir::"
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#.               _warning "bind-hook target not existent, skipping ::1 home::/::2 subdir::" $HOME ${maps[$dir]}
+#.           elif [[ ! -r "$mnt/$dir" ]]; then
+#. >             _warning "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::" $mnt $dir
+#.           else
+#.               sudo mount -o bind,$MOUNTOPTS $mnt/$dir $HOME/${maps[$dir]} #.                   && mounted+=("$HOME/${maps[$dir]}")
+#.           fi
+#: tomb:1889
 #, fuzzy
-msgid "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::"
-msgstr "Источник bind-hook не найден в гробнице, пропускаю ::1 mount point::/::2 subdir::"
+msgid ""
+"bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::"
+msgstr ""
+"Источник bind-hook не найден в гробнице, пропускаю ::1 mount point::/::2 "
+"subdir::"
+
+#. Fold: Open
+#. Function: exec_safe_post_hooks
+#.
+#. Code sample:
+#.       # Only run if post-hooks has the executable bit set
+#.       [[ -x $mnt/post-hooks ]] || return
+#.   
+#.       # If the file starts with a shebang, run it.
+#.       cat $mnt/post-hooks | head -n1 | grep '^#!\s*/' &> /dev/null
+#.       [[ $? == 0 ]] && {
+#. >         _success "Post hooks found, executing as user ::1 user name::." $USERNAME
+#.           $mnt/post-hooks $act $mnt
+#.       }
+#.   }
+#.   
+#: tomb:1917
+msgid "Post hooks found, executing as user ::1 user name::."
+msgstr "Найдены пост-обработчики, выполняю как пользователь ::1 user name::."
 
-#: failure
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.       local tombname tombmount tombfs tombfsopts tombloop
+#.       local ts tombtot tombused tombavail tombpercent tombp tombsince
+#.       local tombtty tombhost tombuid tombuser
+#.       # list all open tombs
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#. >         _failure "I can't see any ::1 status:: tomb, may they all rest in peace." ${1:-open} }
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#: tomb:1936
 msgid "I can't see any ::1 status:: tomb, may they all rest in peace."
 msgstr "Я не вижу ::1 status:: гробниц, да упокоятся они все с миром."
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.                       tombuser="${ee[(ws@:@)1]}" }
+#.               done
+#.           }
+#.   
+#.           { option_is_set --get-mountpoint } && { print $tombmount; continue }
+#.   
+#. >         _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#.           _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#: tomb:1969
 msgid "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::"
-msgstr "::1 tombname:: открыта на ::2 tombmount:: с параметрами ::3 tombfsopts::"
-
-#: message
+msgstr ""
+"::1 tombname:: открыта на ::2 tombmount:: с параметрами ::3 tombfsopts::"
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.   
+#.           { option_is_set --get-mountpoint } && { print $tombmount; continue }
+#.   
+#.           _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#. >         _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#.               _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#: tomb:1972
 msgid "::1 tombname:: open since ::2 tombsince::"
 msgstr "::1 tombname:: открыта с ::2 tombsince::"
 
-#: message
-msgid "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::"
-msgstr "::1 tombname:: открыл ::2 tombuser:: из ::3 tombtty:: на ::4 tombhost::"
-
-#: message
-msgid "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free "
-msgstr "::1 tombname:: размер ::2 tombtot:: из которых ::3 tombused:: (::5 tombpercent::%) использовано: ::4 tombavail:: свободно "
-
-#: warning
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.           _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" #.               $tombname $tombmount $tombfsopts
+#.   
+#.           _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#. >             _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#.           }
+#.   
+#.           _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #: tomb:1975
+msgid ""
+"::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::"
+msgstr ""
+"::1 tombname:: открыл ::2 tombuser:: из ::3 tombtty:: на ::4 tombhost::"
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#.               _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" #.                   $tombname $tombuser $tombtty $tombhost
+#.           }
+#.   
+#. >         _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #.               $tombname $tombtot $tombused $tombavail $tombpercent
+#.   
+#.           [[ ${tombp} -ge 90 ]] && {
+#.               _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#: tomb:1979
+msgid ""
+"::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::"
+"%) is used: ::4 tombavail:: free "
+msgstr ""
+"::1 tombname:: размер ::2 tombtot:: из которых ::3 tombused:: (::5 "
+"tombpercent::%) использовано: ::4 tombavail:: свободно "
+
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.           }
+#.   
+#.           _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " #.               $tombname $tombtot $tombused $tombavail $tombpercent
+#.   
+#.           [[ ${tombp} -ge 90 ]] && {
+#. >             _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#.           }
+#.   
+#.           # Now check hooks
+#.           mounted_hooks=(`list_tomb_binds $tombname`)
+#: tomb:1983
 msgid "::1 tombname:: warning: your tomb is almost full!"
 msgstr "::1 tombname:: предупреждает: Ваша гробница почти заполнена!"
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.               _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#.           }
+#.   
+#.           # Now check hooks
+#.           mounted_hooks=(`list_tomb_binds $tombname`)
+#.           for h in ${mounted_hooks}; do
+#. >             _message "::1 tombname:: hooks ::2 hookname:: on ::3 hookdest::" #.                   $tombname "`basename ${h[(ws:;:)1]}`" ${h[(ws:;:)2]}
+#.           done
+#.       done
+#.   }
+#: tomb:1989
 msgid "::1 tombname:: hooks ::2 hookname:: on ::3 hookdest::"
 msgstr "::1 tombname:: прицепила ::2 hookname:: к ::3 hookdest::"
 
-#: failure
+#. Fold: List
+#. Function: list_tomb_binds
+#.
+#. Code sample:
+#.   # list_tomb_binds
+#.   # print out an array of mounted bind hooks (internal use)
+#.   # format is semi-colon separated list of attributes
+#.   # needs an argument: name of tomb whose hooks belong
+#.   list_tomb_binds() {
+#.       [[ -z "$1" ]] && {
+#. >         _failure "Internal error: list_tomb_binds called without argument." }
+#.   
+#.       # list bind hooks on util-linux 2.20 (Debian 7)
+#.       mount -l #.           | awk -vtomb="$1" '
+#: tomb:2044
 msgid "Internal error: list_tomb_binds called without argument."
 msgstr "Внутренняя ошибка: list_tomb_binds вызвана без аргумента."
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   # {{{ Index and search
+#.   
+#.   # index files in all tombs for search
+#.   # $1 is optional, to specify a tomb
+#.   index_tombs() {
+#.       { command -v updatedb 1>/dev/null 2>/dev/null } || {
+#. >         _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#.           _warning "Cannot use GNU findutils for index/search commands." }
+#: tomb:2076
 msgid "Cannot index tombs on this system: updatedb (mlocate) not installed."
-msgstr "Не могу проиндексировать гробницы на этой системе: updatedb (mlocate) не установлен."
-
-#: warning
+msgstr ""
+"Не могу проиндексировать гробницы на этой системе: updatedb (mlocate) не "
+"установлен."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   index_tombs() {
+#.       { command -v updatedb 1>/dev/null 2>/dev/null } || {
+#.           _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#. >         _warning "Cannot use GNU findutils for index/search commands." }
+#.       [[ "$updatedbver" =~ "mlocate" ]] || {
+#.           _failure "Index command needs 'mlocate' to be installed." }
+#.   
+#.       _verbose "$updatedbver"
+#: tomb:2080
 msgid "Cannot use GNU findutils for index/search commands."
 msgstr "Не могу использовать GNU findutils для команд index/search."
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#.           _warning "Cannot use GNU findutils for index/search commands." }
+#.       [[ "$updatedbver" =~ "mlocate" ]] || {
+#. >         _failure "Index command needs 'mlocate' to be installed." }
+#.   
+#.       _verbose "$updatedbver"
+#.   
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#: tomb:2082
 msgid "Index command needs 'mlocate' to be installed."
 msgstr "Для использования команды index необходимо установить 'mlocate'."
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.       _verbose "$updatedbver"
+#.   
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#. >             _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#.       _success "Creating and updating search indexes."
+#: tomb:2090
 msgid "There seems to be no open tomb engraved as [::1::]"
 msgstr "Не похоже, что открыта гробница, гравированная как [::1::]"
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#.               _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#. >         _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#.       _success "Creating and updating search indexes."
+#.   
+#.       # start the LibreOffice document converter if installed
+#: tomb:2092
+msgid "I can't see any open tomb, may they all rest in peace."
+msgstr "Я не вижу открытых гробниц, да упокоятся они все с миром."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#.               _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#. >     _success "Creating and updating search indexes."
+#.   
+#.       # start the LibreOffice document converter if installed
+#.       { command -v unoconv 1>/dev/null 2>/dev/null } && {
+#.           unoconv -l 2>/dev/null &
+#: tomb:2094
+msgid "Creating and updating search indexes."
+msgstr "Создаю и обновляю индексы поиска."
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.noindex ]] && {
+#. >             _message "Skipping ::1 tomb name:: (.noindex found)." $tombname
+#.               continue }
+#.           _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#: tomb:2107
 msgid "Skipping ::1 tomb name:: (.noindex found)."
 msgstr "Пропускаю ::1 tomb name:: (найден файл .noindex)."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.noindex ]] && {
+#.               _message "Skipping ::1 tomb name:: (.noindex found)." $tombname
+#.               continue }
+#. >         _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#: tomb:2109
 msgid "Indexing ::1 tomb name:: filenames..."
 msgstr "Индексирую имена в ::1 tomb name::..."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.               continue }
+#.           _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#. >             _message "Indexing ::1 tomb name:: contents..." $tombname
+#.               [[ -r ${tombmount}/.swishrc ]] || {
+#.                   _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc
+#.                   cat <<EOF > ${tombmount}/.swishrc
+#.   # index directives
+#: tomb:2114
 msgid "Indexing ::1 tomb name:: contents..."
 msgstr "Индексирую содержимое ::1 tomb name::..."
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#.               _message "Indexing ::1 tomb name:: contents..." $tombname
+#.               [[ -r ${tombmount}/.swishrc ]] || {
+#. >                 _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc
+#.                   cat <<EOF > ${tombmount}/.swishrc
+#.   # index directives
+#.   DefaultContents TXT*
+#.   IndexDir $tombmount
+#: tomb:2116
+msgid "Generating a new swish-e configuration file: ::1 swish conf::"
+msgstr "Генерирую новый файл конфигурации swish-e: ::1 swish conf::"
+
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.               }
+#.   
+#.               swish-e -c ${tombmount}/.swishrc -S fs -v3
+#.   
+#.           }
+#.   
+#. >         _message "Search index updated."
+#.       done
+#.   }
+#.   search_tombs() {
+#.       { command -v locate 1>/dev/null 2>/dev/null } || {
+#: tomb:2190
+msgid "Search index updated."
+msgstr "Поисковый индекс обновлен."
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.   
+#.       # list all open tombs
+#.       mounted_tombs=(`list_tomb_mounts`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#. >     _success "Searching for: ::1::" ${(f)@}
+#.       for t in ${mounted_tombs}; do
+#.           _verbose "Checking for index: ::1::" ${t}
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#: tomb:2210
+msgid "Searching for: ::1::"
+msgstr "Ищу: ::1::"
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.           _verbose "Checking for index: ::1::" ${t}
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.updatedb ]] && {
+#.               # Use mlocate to search hits on filenames
+#. >             _message "Searching filenames in tomb ::1 tomb name::" $tombname
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#.               _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#: tomb:2218
 msgid "Searching filenames in tomb ::1 tomb name::"
 msgstr "Ищу в именах файлов гробницы ::1 tomb name::"
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.updatedb ]] && {
+#.               # Use mlocate to search hits on filenames
+#.               _message "Searching filenames in tomb ::1 tomb name::" $tombname
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#. >             _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#: tomb:2220
 msgid "Matches found: ::1 matches::"
 msgstr "Найдены совпадения: ::1 matches::"
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#.               _message "Matches found: ::1 matches::" #.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#. >                 _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#: tomb:2225
 msgid "Searching contents in tomb ::1 tomb name::"
 msgstr "Ищу в содержимом гробницы ::1 tomb name::"
 
-#: warning
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#. >             _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#.       done
+#.       _message "Search completed."
+#.   }
+#: tomb:2228
 msgid "Skipping tomb ::1 tomb name::: not indexed."
 msgstr "Пропускаю гробницу ::1 tomb name::: она не индексирована."
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#. >             _warning "Run 'tomb index' to create indexes." }
+#.       done
+#.       _message "Search completed."
+#.   }
+#.   
+#: tomb:2229
+msgid "Run 'tomb index' to create indexes."
+msgstr "Запустите 'tomb index' для создания индексов."
+
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#.       done
+#. >     _message "Search completed."
+#.   }
+#.   
+#.   # }}} - Index and search
+#.   
+#: tomb:2231
+msgid "Search completed."
+msgstr "Поиск завершен."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   # {{{ Resize
+#.   
+#.   # resize tomb file size
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#. >     _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#: tomb:2242
 msgid "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes."
-msgstr "Приказано изменить размер гробницы ::1 tomb name::. Новый размер: ::2 size:: мегабайт."
+msgstr ""
+"Приказано изменить размер гробницы ::1 tomb name::. Новый размер: ::2 size:: "
+"мегабайт."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   # resize tomb file size
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#.       _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#. >     [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#: tomb:2244
+msgid "No tomb name specified for resizing."
+msgstr "Не указано имя гробницы для изменения размера."
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#.       _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#. >     [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#.           _failure "Aborting operations: new size was not specified, use -s" }
+#: tomb:2245
 msgid "Cannot find ::1::"
 msgstr "Не могу найти ::1::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#. >         _failure "Aborting operations: new size was not specified, use -s" }
+#.   
+#.       is_valid_tomb $tombpath        # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#: tomb:2249
 msgid "Aborting operations: new size was not specified, use -s"
 msgstr "Отмена операций: не указан новый размер, используйте -s"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       local oldtombsize=$(( `stat -c %s "$TOMBPATH" 2>/dev/null` / 1048576 ))
+#.       local mounted_tomb=`mount -l |
+#.           awk -vtomb="[$TOMBNAME]" '/^\/dev\/mapper\/tomb/ { if($7==tomb) print $1 }'`
+#.   
+#.       # Tomb must not be open
+#.       [[ -z "$mounted_tomb" ]] || {
+#. >         _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#: tomb:2261
 msgid "Please close the tomb ::1 tomb name:: before trying to resize it."
-msgstr "Пожалуйста, закройте гробницу ::1 tomb name::, прежде чем менять ее размер."
-
-#: failure
+msgstr ""
+"Пожалуйста, закройте гробницу ::1 tomb name::, прежде чем менять ее размер."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   
+#.       # Tomb must not be open
+#.       [[ -z "$mounted_tomb" ]] || {
+#.           _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#. >         _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#.       [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#: tomb:2264
 msgid "You must specify the new size of ::1 tomb name::"
 msgstr "Вы должны указать новый размер для ::1 tomb name::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       [[ -z "$mounted_tomb" ]] || {
+#.           _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#. >     [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#.           _failure "The new size must be greater then old tomb size." }
+#.   
+#: tomb:2266
+msgid "Size is not an integer."
+msgstr "Размер не целое число."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#.       [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#. >         _failure "The new size must be greater then old tomb size." }
+#.   
+#.       delta="$(( $newtombsize - $oldtombsize ))"
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $newtombsize
+#: tomb:2269
+msgid "The new size must be greater then old tomb size."
+msgstr "Новый размер гробницы должен быть больше старого."
+
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $newtombsize
+#.   
+#.       _verbose "Data dump using ::1:: from /dev/urandom" ${DD[1]}
+#.       ${=DD} if=/dev/urandom bs=1048576 count=${delta} >> $TOMBPATH
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Error creating the extra resize ::1 size::, operation aborted." $tmp_resize }
+#.   
+#.       { option_is_set --tomb-pwd } && {
+#.           tomb_pwd="`option_value --tomb-pwd`"
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_pwd
+#: tomb:2279
 msgid "Error creating the extra resize ::1 size::, operation aborted."
 msgstr "Ошибка создания дополнительного размера ::1 size::, операция отменена."
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       mapper="tomb.$TOMBNAME.$mapdate.$(basename $nstloop)"
+#.   
+#.       _cryptsetup luksOpen ${nstloop} ${mapper} || {
+#.           _failure "Failure mounting the encrypted file." }
+#.   
+#.       sudo cryptsetup resize "${mapper}" || {
+#. >         _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#.           _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#: tomb:2300
 msgid "cryptsetup failed to resize ::1 mapper::"
 msgstr "cryptsetup не смог изменить размер ::1 mapper::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.           _failure "Failure mounting the encrypted file." }
+#.   
+#.       sudo cryptsetup resize "${mapper}" || {
+#.           _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#. >         _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#.       sudo resize2fs /dev/mapper/${mapper} || {
+#.           _failure "resize2fs failed to resize ::1 mapper::" $mapper }
+#.   
+#: tomb:2303
 msgid "e2fsck failed to check ::1 mapper::"
 msgstr "e2fsck не смог проверить ::1 mapper::"
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.           _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#.           _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#.       sudo resize2fs /dev/mapper/${mapper} || {
+#. >         _failure "resize2fs failed to resize ::1 mapper::" $mapper }
+#.   
+#.       # close and free the loop device
+#.       sudo cryptsetup luksClose "${mapper}"
+#.   
+#: tomb:2306
 msgid "resize2fs failed to resize ::1 mapper::"
 msgstr "resize2fs не смог изменить размер ::1 mapper::"
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           mounted_tombs=(`list_tomb_mounts`)
+#.       else
+#.           mounted_tombs=(`list_tomb_mounts $1`)
+#.       fi
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#. >         _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#.           _warning "Too many tombs mounted, please specify one (see tomb list)"
+#.           _warning "or issue the command 'tomb close all' to close them all."
+#: tomb:2330
+msgid "There is no open tomb to be closed."
+msgstr "Нет открытой гробницы для закрытия."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.       fi
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#. >         _warning "Too many tombs mounted, please specify one (see tomb list)"
+#.           _warning "or issue the command 'tomb close all' to close them all."
+#.           _failure "Operation aborted." }
+#.   
+#.       for t in ${mounted_tombs}; do
+#: tomb:2333
+msgid "Too many tombs mounted, please specify one (see tomb list)"
+msgstr ""
+"Примонтировано слишком много гробниц, пожалуйста, укажите точнее (см. tomb "
+"list)"
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#.           _warning "Too many tombs mounted, please specify one (see tomb list)"
+#. >         _warning "or issue the command 'tomb close all' to close them all."
+#.           _failure "Operation aborted." }
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#: tomb:2334
+msgid "or issue the command 'tomb close all' to close them all."
+msgstr "или выполните команду 'tomb close all', чтобы закрыть их все."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           _verbose "Name: ::1 tomb name::" $tombname
+#.           _verbose "Mount: ::1 mount point::" $tombmount
+#.           _verbose "Mapper: ::1 mapper::" $mapper
+#.   
+#.           [[ -e "$mapper" ]] && {
+#. >             _warning "Tomb not found: ::1 tomb file::" $1
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#: tomb:2350
 msgid "Tomb not found: ::1 tomb file::"
 msgstr "Гробница не найдена: ::1 tomb file::"
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           _verbose "Name: ::1 tomb name::" $tombname
+#.           _verbose "Mount: ::1 mount point::" $tombmount
+#.           _verbose "Mapper: ::1 mapper::" $mapper
+#.   
+#.           [[ -e "$mapper" ]] && {
+#.               _warning "Tomb not found: ::1 tomb file::" $1
+#. >             _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #: tomb:2351
+msgid "Please specify an existing tomb."
+msgstr "Пожалуйста, укажите существующую гробницу."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           [[ -e "$mapper" ]] && {
+#.               _warning "Tomb not found: ::1 tomb file::" $1
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#. >             _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#: tomb:2355
+msgid "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::"
+msgstr ""
+"Захлопываю гробницу ::1 tomb name::, примонтированную на ::2 mount point::"
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#. >             _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#.               _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #: tomb:2357
+msgid "Kill all processes busy inside the tomb."
+msgstr "Убиваю все процессы, занятые в гробнице"
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#. >                 _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#.               _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount }
+#.   
+#: tomb:2359
 msgid "Cannot slam the tomb ::1 tomb name::"
 msgstr "Не могу захлопнуть гробницу ::1 tomb name::"
 
-#: message
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#. >             _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" #.                   $tombname $tombmount }
+#.   
+#.           # check if there are binded dirs and close them
+#.           bind_tombs=(`list_tomb_binds $tombname`)
+#: tomb:2361
 msgid "Closing tomb ::1 tomb name:: mounted on ::2 mount point::"
-msgstr "Закрываю гробницу ::1 tomb name::, примонтированную на ::2 mount point::"
-
-#: message
+msgstr ""
+"Закрываю гробницу ::1 tomb name::, примонтированную на ::2 mount point::"
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # check if there are binded dirs and close them
+#.           bind_tombs=(`list_tomb_binds $tombname`)
+#.           for b in ${bind_tombs}; do
+#.               bind_mapper="${b[(ws:;:)1]}"
+#.               bind_mount="${b[(ws:;:)2]}"
+#. >             _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#: tomb:2369
 #, fuzzy
 msgid "Closing tomb bind hook: ::1 hook::"
 msgstr "Закрываю привязку гробницы: ::1 hook::"
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           for b in ${bind_tombs}; do
+#.               bind_mapper="${b[(ws:;:)1]}"
+#.               bind_mount="${b[(ws:;:)2]}"
+#.               _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#. >                     _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#.                           _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#: tomb:2372
+#, fuzzy
+msgid "Slamming tomb: killing all processes using this hook."
+msgstr "Захлопываю гробницу: убиваю все процессы, использующие эту привязку."
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#. >                         _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#.                   } || {
+#.                       _warning "Tomb bind hook ::1 hook:: is busy, cannot close tomb." $bind_mount }
+#.               }
+#: tomb:2375
 msgid "Cannot slam the bind hook ::1 hook::"
 msgstr "Не могу захлопнуть обработчик ::1 hook::"
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#.                           _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#.                   } || {
+#. >                     _warning "Tomb bind hook ::1 hook:: is busy, cannot close tomb." $bind_mount }
+#.               }
+#.           done
+#.   
+#.           # Execute post-hooks for eventual cleanup
+#: tomb:2378
 msgid "Tomb bind hook ::1 hook:: is busy, cannot close tomb."
 msgstr "Обработчик гробницы ::1 hook:: занят, не могу закрыть гробницу."
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           # Execute post-hooks for eventual cleanup
+#.           { option_is_set -n } || {
+#.               exec_safe_post_hooks ${tombmount%%/} close }
+#.   
+#.           _verbose "Performing umount of ::1 mount point::" $tombmount
+#.           sudo umount ${tombmount}
+#. >         [[ $? = 0 ]] || { _warning "Tomb is busy, cannot umount!"; return 1 }
+#.   
+#.           # If we used a default mountpoint and is now empty, delete it
+#.           [[ "$tombmount" == "/media/$tombname.tomb" ]] && { rmdir $tombmount }
+#.   
+#: tomb:2388
+msgid "Tomb is busy, cannot umount!"
+msgstr "Гробница занята, не могу отмонтировать!"
+
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # If we used a default mountpoint and is now empty, delete it
+#.           [[ "$tombmount" == "/media/$tombname.tomb" ]] && { rmdir $tombmount }
+#.   
+#.           sudo cryptsetup luksClose $mapper
+#.           [[ $? == 0 ]] || {
+#. >             _failure "Error occurred in cryptsetup luksClose ::1 mapper::" $mapper }
+#.   
+#.           # Normally the loopback device is detached when unused
+#.           [[ -e "/dev/$tombloop" ]] && sudo losetup -d "/dev/$tombloop"
+#.           [[ $? = 0 ]] || {
+#: tomb:2395
 msgid "Error occurred in cryptsetup luksClose ::1 mapper::"
 msgstr "Произошла ошибка cryptsetup luksClose ::1 mapper::"
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # Normally the loopback device is detached when unused
+#.           [[ -e "/dev/$tombloop" ]] && sudo losetup -d "/dev/$tombloop"
+#.           [[ $? = 0 ]] || {
+#.               _verbose "/dev/$tombloop was already closed." }
+#.   
+#. >         _success "Tomb ::1 tomb name:: closed: your bones will rest in peace." $tombname
+#.   
+#.       done # loop across mounted tombs
+#.   
+#.       return 0
+#: tomb:2402
+msgid "Tomb ::1 tomb name:: closed: your bones will rest in peace."
+msgstr "Гробница ::1 tomb name:: закрыта: да упокоятся с миром Ваши кости."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               return 1
+#.           fi
+#.           return 0
+#.       fi
+#.       unset discardme
+#.       if ! zparseopts -M -E -D -Adiscardme ${every_opts}; then
+#. >         _failure "Error parsing."
+#.           return 127
+#.       fi
+#.       unset discardme
+#.       subcommand=$1
+#: tomb:2522
+msgid "Error parsing."
+msgstr "Ошибка парсинга."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       subcommand=$1
+#.       if [[ -z $subcommand ]]; then
+#.           subcommand="__default"
+#.       fi
+#.   
+#.       if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
+#. >         _warning "There's no such command \"::1 subcommand::\"." $subcommand
+#.           exitv=127 _failure "Please try -h for help."
+#.       fi
+#.       argv=("${(@)oldstar}")
+#.       unset oldstar
+#: tomb:2532
 msgid "There's no such command \"::1 subcommand::\"."
 msgstr "Нет такой команды \"::1 subcommand::\"."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       if [[ -z $subcommand ]]; then
+#.           subcommand="__default"
+#.       fi
+#.   
+#.       if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
+#.           _warning "There's no such command \"::1 subcommand::\"." $subcommand
+#. >         exitv=127 _failure "Please try -h for help."
+#.       fi
+#.       argv=("${(@)oldstar}")
+#.       unset oldstar
+#.   
+#: tomb:2533
 msgid "Please try -h for help."
 msgstr "Используйте -h для вызова справки."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       # zsh magic: ${=string} will split to multiple arguments when spaces occur
+#.       set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
+#.       # if there is no option, we don't need parsing
+#.       if [[ -n $cmd_opts ]]; then
+#.           zparseopts -M -E -D -AOPTS ${cmd_opts}
+#.           if [[ $? != 0 ]]; then
+#. >             _warning "Some error occurred during option processing."
+#.               exitv=127 _failure "See \"tomb help\" for more info."
+#.           fi
+#.       fi
+#.       #build PARAM (array of arguments) and check if there are unrecognized options
+#: tomb:2545
+msgid "Some error occurred during option processing."
+msgstr "Произошла какая-то ошибка при обработке опций."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
+#.       # if there is no option, we don't need parsing
+#.       if [[ -n $cmd_opts ]]; then
+#.           zparseopts -M -E -D -AOPTS ${cmd_opts}
+#.           if [[ $? != 0 ]]; then
+#.               _warning "Some error occurred during option processing."
+#. >             exitv=127 _failure "See \"tomb help\" for more info."
+#.           fi
+#.       fi
+#.       #build PARAM (array of arguments) and check if there are unrecognized options
+#.       ok=0
+#: tomb:2546
 msgid "See \"tomb help\" for more info."
 msgstr "Для дополнительной информации выполните \"tomb help\"."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       for arg in $*; do
+#.           if [[ $arg == '--' || $arg == '-' ]]; then
+#.               ok=1
+#.               continue #it shouldnt be appended to PARAM
+#.           elif [[ $arg[1] == '-'  ]]; then
+#.               if [[ $ok == 0 ]]; then
+#. >                 exitv=127 _failure "Unrecognized option ::1 arg:: for subcommand ::2 subcommand::" $arg $subcommand
+#.               fi
+#.           fi
+#.           PARAM+=$arg
+#.       done
+#: tomb:2558
 msgid "Unrecognized option ::1 arg:: for subcommand ::2 subcommand::"
 msgstr "Не распознана опция ::1 arg:: для подкоманды ::2 subcommand::"
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       # Use colors unless told not to
+#.       { ! option_is_set --no-color } && { autoload -Uz colors && colors }
+#.       # Some options are only available during insecure mode
+#.       { ! option_is_set --unsafe } && {
+#.           for opt in --tomb-pwd --use-urandom --tomb-old-pwd; do
+#.               { option_is_set $opt } && {
+#. >                 exitv=127 _failure "You specified option ::1 option::, which is DANGEROUS and should only be used for testing\nIf you really want so, add --unsafe" $opt }
+#.           done
+#.       }
+#.       # read -t or --tmp flags to set a custom temporary directory
+#.       option_is_set --tmp && TMPPREFIX=$(option_value --tmp)
+#: tomb:2574
+msgid ""
+"You specified option ::1 option::, which is DANGEROUS and should only be "
+"used for testing\n"
+"If you really want so, add --unsafe"
+msgstr ""
+"Вы указали опцию ::1 option::, которая ОПАСНА и должна быть использована "
+"только для тестирования\n"
+"Если Вы и правда этого хотите, добавьте параметр --unsafe"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           help)
+#.               usage
+#.               ;;
+#.   
+#.           # DEPRECATION notice (leave here as 'create' is still present in old docs)
+#.           create)
+#. >             _warning "The create command is deprecated, please use dig, forge and lock instead."
+#.               _warning "For more informations see Tomb's manual page (man tomb)."
+#.               _failure "Operation aborted."
+#.               ;;
+#.   
+#: tomb:2608
+msgid ""
+"The create command is deprecated, please use dig, forge and lock instead."
+msgstr "Команда create устарела, пожалуйста, используйте dig, forge и lock."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               usage
+#.               ;;
+#.   
+#.           # DEPRECATION notice (leave here as 'create' is still present in old docs)
+#.           create)
+#.               _warning "The create command is deprecated, please use dig, forge and lock instead."
+#. >             _warning "For more informations see Tomb's manual page (man tomb)."
+#.               _failure "Operation aborted."
+#.               ;;
+#.   
+#.           # CREATE Step 1: dig -s NN file.tomb
+#: tomb:2609
+msgid "For more informations see Tomb's manual page (man tomb)."
+msgstr "Для большей информации обратитесь к руководству Tomb (man tomb)."
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               umount_tomb $PARAM[1]
+#.               ;;
+#.   
+#.           # Grow tomb's size
+#.           resize)
+#.               [[ $RESIZER == 0 ]] && {
+#. >                 _failure "Resize2fs not installed: cannot resize tombs." }
+#.               resize_tomb $PARAM[1]
+#.               ;;
+#.   
+#.           ## Contents manipulation
+#: tomb:2643
 msgid "Resize2fs not installed: cannot resize tombs."
 msgstr "Resize2fs не установлен: не могу менять размер гробниц."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           ## Locking operations
+#.   
+#.           # Export key to QR Code
+#.           engrave)
+#.               [[ $QRENCODE == 0 ]] && {
+#. >                 _failure "QREncode not installed: cannot engrave keys on paper." }
+#.               engrave_key ${=PARAM}
+#.               ;;
+#.   
+#.           # Change password on existing key
+#: tomb:2669
 msgid "QREncode not installed: cannot engrave keys on paper."
 msgstr "QREncode не установлен: не могу выгравировывать ключи на бумаге."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               change_tomb_key ${=PARAM}
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: hide key inside an image
+#.           bury)
+#.               [[ $STEGHIDE == 0 ]] && {
+#. >                 _failure "Steghide not installed: cannot bury keys into images." }
+#.               bury_key $PARAM[1]
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: read key hidden in an image
+#: tomb:2686
 msgid "Steghide not installed: cannot bury keys into images."
 msgstr "Steghide не установлен: не могу прятать ключи в изображениях."
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               bury_key $PARAM[1]
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: read key hidden in an image
+#.           exhume)
+#.               [[ $STEGHIDE == 0 ]] && {
+#. >                 _failure "Steghide not installed: cannot exhume keys from images." }
+#.               exhume_key $PARAM[1]
+#.               ;;
+#.   
+#.           ## Internal commands useful to developers
+#: tomb:2693
 msgid "Steghide not installed: cannot exhume keys from images."
 msgstr "Steghide не установлен: не могу эксгумировать ключи из изображений."
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           # Ask user for a password interactively
+#.           askpass)    ask_password $PARAM[1] $PARAM[2] ;;
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#. >             _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#: tomb:2707
 msgid "Tomb ::1 version:: - a strong and gentle undertaker for your secrets"
 msgstr "Tomb ::1 version:: - стойкий и аккуратный хранитель Ваших секретов"
 
-#: print
-msgid " Copyright (C) 2007-2014 Dyne.org Foundation, License GNU GPL v3+"
-msgstr " Все права защищены (C) 2007-2014 Dyne.org Foundation, Лицензия GNU GPL v3+"
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           askpass)    ask_password $PARAM[1] $PARAM[2] ;;
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#. >             _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#: tomb:2709
+msgid " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#. >             _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#: tomb:2710
 msgid " This is free software: you are free to change and redistribute it"
-msgstr " Это свободное программное обеспечение: Вы в праве изменять и распространять его"
-
-#: print
+msgstr ""
+" Это свободное программное обеспечение: Вы в праве изменять и распространять "
+"его"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#. >             _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#: tomb:2711
+msgid " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+msgstr ""
+" За последним исходным кодом зайдите на <http://dyne.org/software/tomb>"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#. >                 _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#: tomb:2716
 msgid " This source code is distributed in the hope that it will be useful,"
 msgstr " Этот исходный код распространяется с надежной, что он будет полезен,"
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#. >                 _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#: tomb:2717
 msgid " but WITHOUT ANY WARRANTY; without even the implied warranty of"
 msgstr " но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без предполагаемой"
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#. >                 _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#.                   _print "System utils:"
+#: tomb:2718
 msgid " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 msgstr " ТОВАРОПРИГОДНОСТИ или ПОЛЕЗНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ."
 
-#: print
-msgid "System utils:"
-msgstr "Системные утилиты:"
-
-#: warning
-msgid "Command \"::1 subcommand::\" not recognized."
-msgstr "Команда \"::1 subcommand::\" не распознана."
-
-#: print
-msgid " passwd  change the password of a KEY (needs old pass)"
-msgstr " passwd  изменить пароль КЛЮЧА (требуется старый пароль)"
-
-#: print
-msgid " setkey  change the KEY locking a TOMB (needs old key and pass)"
-msgstr " setkey  изменить КЛЮЧ, запирающий ГРОБНИЦУ (требуется старый ключ и пароль)"
-
-#: print
-msgid " // Backup on paper:"
-msgstr " // Резервная копия на бумаге:"
-
-#: print
-msgid " // Steganography:"
-msgstr " // Стеганография:"
-
-#: print
-msgid " bury    hide a KEY inside a JPEG image (for use with -k)"
-msgstr " bury   спрятать КЛЮЧ внутри изображения JPEG (для использования с -k)"
-
-#: print
-msgid " exhume  extract a KEY from a JPEG image (prints to stdout)"
-msgstr " exhume  извлечь КЛЮЧ из изображения JPEG (выводится в стандартный вывод)"
-
-#: failure
-msgid "Exhume failed, no image specified"
-msgstr "Эксгумация не удалась, не указано изображения"
-
-#: print
-msgid " For the latest sourcecode go to <http://dyne.org/software/tomb>"
-msgstr " За последним исходным кодом зайдите на <http://dyne.org/software/tomb>"
-
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#. >                 _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#.                   _print "System utils:"
+#.                   _print "\000"
+#.                   cat <<EOF
+#: tomb:2720
 msgid " When in need please refer to <http://dyne.org/support>."
 msgstr " Если Вам нужна помощь, обращайтесь к <http://dyne.org/support>."
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#. >                 _print "System utils:"
+#.                   _print "\000"
+#.                   cat <<EOF
+#.     `sudo -V | head -n1`
+#.     `cryptsetup --version`
+#: tomb:2722
+msgid "System utils:"
+msgstr "Системные утилиты:"
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.     `cryptsetup --version`
+#.     `pinentry --version`
+#.     `gpg --version | head -n1` - key forging algorithms (GnuPG symmetric ciphers):
+#.     `list_gnupg_ciphers`
+#.   EOF
+#.                   _print "\000"
+#. >                 _print "Optional utils:"
+#.                   _print "\000"
+#.                   _list_optional_tools version
+#.                   return 0
+#.               }
+#: tomb:2732
 msgid "Optional utils:"
 msgstr "Дополнительные утилиты:"
 
-#: failure
-msgid "Fatal error setting the permission umask for temporary files"
-msgstr "Критическая ошибка при задании маски прав для временных файлов"
-
-#: failure
-msgid "Fatal error setting ownership on temporary file: ::1 temp file::"
-msgstr "Критическая ошибка при задании владельца временного файла ::1 temp file::"
-
-#: warning
-msgid "cleartext key from stdin selected: this is unsafe."
-msgstr "выбран ключ, явно указанный через стандартный ввод: это небезопасно."
-
-#: failure
-msgid "please use --unsafe if you really want to do this."
-msgstr "пожалуйчтв, используйте --unsafe, если Вы действительно этого хотите."
-
-#: warning
-msgid "received key in cleartext from stdin (unsafe mode)"
-msgstr "получен ключ в явном виде через стандартный ввод (небезопасный режим)"
-
-#: failure
-msgid "You specified option ::1 option::, which is DANGEROUS and should only be used for testing\n"
-"If you really want so, add --unsafe"
-msgstr "Вы указали опцию ::1 option::, которая ОПАСНА и должна быть использована только для тестирования\n"
-"Если Вы и правда этого хотите, добавьте параметр --unsafe"
-
-#: failure
-msgid "Failing to identify the user who is calling us"
-msgstr "Не удалось определить пользователя, вызвавшего меня"
-
-#: failure
-msgid "Fatal error creating the temporary directory: ::1 temp dir::"
-msgstr "Критическая ошибка при создании временной директории: ::1 temp dir::"
-
-#: failure
-msgid "Someone is messing up with us trying to hijack temporary files."
-msgstr "Кто-то наглый пытается похитить наши временные файлы."
-
-#: success
-msgid "All your swaps are belong to crypt.  Good."
-msgstr "All your swaps are belong to crypt.  Хорошо."
-
-#: success
-msgid "Changing password for ::1 key file::"
-msgstr "Меняю пароль для ::1 key file::"
-
-#: success
-msgid "Your passphrase was successfully updated."
-msgstr "Ваш пароль успешно обновлен."
-
-#: success
-msgid "Using KDF, iterations: ::1 microseconds::"
-msgstr "Использую KDF, итераций: ::1 microseconds::"
-
-#: success
-msgid "Encoding key ::1 tomb key:: inside image ::2 image file::"
-msgstr "Кодирую ключ ::1 tomb key:: в изображение ::2 image file::"
-
-#: success
-msgid "Tomb key encoded succesfully into image ::1 image file::"
-msgstr "Ключ от гробницы успешно закодирован в изображение ::1 image file::"
-
-#: success
-msgid "Key succesfully exhumed to ::1 key::."
-msgstr "Ключ успешно эксгумирован в ::1 key::"
-
-#: success
-msgid "Rendering a printable QRCode for key: ::1 tomb key file::"
-msgstr "Рендерю готовый для печати штрих-код для ключа: ::1 tomb key file::"
-
-#: success
-msgid "Operation successful:"
-msgstr "Операция успешна."
-
-#: success
-msgid "Creating a new tomb in ::1 tomb path::"
-msgstr "Создаю новую гробницу в ::1 tomb path::"
-
-#: success
-msgid "Done digging ::1 tomb name::"
-msgstr "::1 tomb name:: выкопана"
-
-#: success
-msgid "Choose the  password of your key: ::1 tomb key::"
-msgstr "Выберите пароль для вашего ключа: ::1 tomb key::"
-
-#: success
-msgid "Your key is ready:"
-msgstr "Ваш ключ готов:"
-
-#: success
-msgid "Locking ::1 tomb file:: with ::2 tomb key file::"
-msgstr "Запираю ::1 tomb file:: с помощью ::2 tomb key file::"
-
-#: success
-msgid "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::"
-msgstr "Ваша гробница готова в ::1 tomb path:: и защищена ключом ::2 tomb key::"
-
-#: success
-msgid "Changing lock on tomb ::1 tomb name::"
-msgstr "Меняю замок на гробнице ::1 tomb name::"
-
-#: success
-msgid "Succesfully changed key for tomb: ::1 tomb file::"
-msgstr "Ключ для гробницы ::1 tomb file:: успешно изменен"
-
-#: success
-msgid "Opening ::1 tomb file:: on ::2 mount point::"
-msgstr "Открываю ::1 tomb file:: в ::2 mount point::"
-
-#: success
-msgid "Success unlocking tomb ::1 tomb name::"
-msgstr "Успешно отпер гробницу ::1 tomb name::"
-
-#: success
-msgid "Success opening ::1 tomb file:: on ::2 mount point::"
-msgstr "Успешно открыл ::1 tomb file:: в ::2 mount point::"
-
-#: success
-msgid "Post hooks found, executing as user ::1 user name::."
-msgstr "Найдены пост-обработчики, выполняю как пользователь ::1 user name::."
-
-#: success
-msgid "Creating and updating search indexes."
-msgstr "Создаю и обновляю индексы поиска."
-
-#: message
-msgid "Generating a new swish-e configuration file: ::1 swish conf::"
-msgstr "Генерирую новый файл конфигурации swish-e: ::1 swish conf::"
-
-#: success
-msgid "Searching for: ::1::"
-msgstr "Ищу: ::1::"
-
-#: success
-msgid "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::"
-msgstr "Захлопываю гробницу ::1 tomb name::, примонтированную на ::2 mount point::"
-
-#: success
-#, fuzzy
-msgid "Slamming tomb: killing all processes using this hook."
-msgstr "Захлопываю гробницу: убиваю все процессы, использующие эту привязку."
-
-#: success
-msgid "Tomb ::1 tomb name:: closed: your bones will rest in peace."
-msgstr "Гробница ::1 tomb name:: закрыта: да упокоятся с миром Ваши кости."
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               }
+#.               usage
+#.               ;;
+#.   
+#.           # Reject unknown command and suggest help
+#.           *)
+#. >             _warning "Command \"::1 subcommand::\" not recognized." $subcommand
+#.               _message "Try -h for help."
+#.               return 1
+#.               ;;
+#.       esac
+#: tomb:2742
+msgid "Command \"::1 subcommand::\" not recognized."
+msgstr "Команда \"::1 subcommand::\" не распознана."
 
-#: warning
-msgid "Pinentry error: ::1 error::"
-msgstr "Ошибка pinentry: ::1 error::"
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               usage
+#.               ;;
+#.   
+#.           # Reject unknown command and suggest help
+#.           *)
+#.               _warning "Command \"::1 subcommand::\" not recognized." $subcommand
+#. >             _message "Try -h for help."
+#.               return 1
+#.               ;;
+#.       esac
+#.       return $?
+#: tomb:2743
+msgid "Try -h for help."
+msgstr "Используйте -h для вызова справки."
 
-#: warning
-msgid "Empty password"
-msgstr "Пустой пароль"
+#~ msgid " -o     mount options used to open (default: rw,noatime,nodev)"
+#~ msgstr ""
+#~ " -o     параметры монтирования при открытии (по умолчанию rw,noatime,"
+#~ "nodev) "
 
+#~ msgid " Copyright (C) 2007-2014 Dyne.org Foundation, License GNU GPL v3+"
+#~ msgstr ""
+#~ " Все права защищены (C) 2007-2014 Dyne.org Foundation, Лицензия GNU GPL "
+#~ "v3+"
diff --git a/extras/po/tomb.pot b/extras/po/tomb.pot
@@ -1,12 +1,12 @@
+
 # Tomb - The Crypto Undertaker.
-# Copyright (C) 2007-2013 Dyne.org Foundation
+# Copyright (C) 2007-2014 Dyne.org Foundation
 # Denis Roio <jaromil@dyne.org>, 2013.
 #
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: Tomb \n"
-"PO-Revision-Date: Wed Nov 26 17:50:10 CET 2014\n"
+"PO-Revision-Date: Fri Jan  9 17:08:25 2015\n"
 "Last-Translator: Denis Roio <jaromil@dyne.org>\n"
 "Language: English\n"
 "Language-Team: Tomb developers <crypto@lists.dyne.org>\n"
@@ -14,1123 +14,5456 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: failure
+#. Fold: Safety functions
+#. Function: _whoami
+#.
+#. Code sample:
+#.   
+#.       # Set username from UID or environment
+#.       _USER=$SUDO_USER
+#.       [[ "$_USER" = "" ]] && { _USER=$USERNAME }
+#.       [[ "$_USER" = "" ]] && { _USER=$(id -u)  }
+#.       [[ "$_USER" = "" ]] && {
+#. >         _failure "Failing to identify the user who is calling us" }
+#.   
+#.       # Get GID from option -G or the environment
+#.       option_is_set -G \
+#.           && _GID=$(option_value -G) || _GID=$(id -g $_USER)
+#: tomb:189
 msgid "Failing to identify the user who is calling us"
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: _plot
+#.
+#. Code sample:
+#.       TOMBFILE=$(basename $TOMBPATH)
+#.   
+#.       # The tomb name is TOMBFILE without an extension.
+#.       # It can start with dots: ..foo.tomb -> ..foo
+#.       TOMBNAME="${TOMBFILE%\.[^\.]*}"
+#.       [[ -z $TOMBNAME ]] && {
+#. >         _failure "Tomb won't work without a TOMBNAME." }
+#.   
+#.       # Normalize tomb name
+#.       TOMBFILE="$TOMBNAME.tomb"
+#.   
+#: tomb:237
 msgid "Tomb won't work without a TOMBNAME."
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.   # Provide a random filename in shared memory
+#.   _tmp_create() {
+#.       [[ -d "$TMPPREFIX" ]] || {
+#.           # we create the tempdir with the sticky bit on
+#.           sudo mkdir -m 1777 "$TMPPREFIX"
+#. >         [[ $? == 0 ]] || _failure "Fatal error creating the temporary directory: ::1 temp dir::" "$TMPPREFIX"
+#.       }
+#.   
+#.       # We're going to add one more $RANDOM for each time someone complain
+#.       # about this being too weak of a random.
+#: tomb:252
 msgid "Fatal error creating the temporary directory: ::1 temp dir::"
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       # We're going to add one more $RANDOM for each time someone complain
+#.       # about this being too weak of a random.
+#.       tfile="${TMPPREFIX}/$RANDOM$RANDOM$RANDOM$RANDOM"   # Temporary file
+#.       umask 066
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error setting the permission umask for temporary files" }
+#.   
+#.       [[ -r "$tfile" ]] && {
+#.           _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#: tomb:260
 msgid "Fatal error setting the permission umask for temporary files"
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.       tfile="${TMPPREFIX}/$RANDOM$RANDOM$RANDOM$RANDOM"   # Temporary file
+#.       umask 066
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error setting the permission umask for temporary files" }
+#.   
+#.       [[ -r "$tfile" ]] && {
+#. >         _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#: tomb:263
 msgid "Someone is messing up with us trying to hijack temporary files."
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       [[ -r "$tfile" ]] && {
+#.           _failure "Someone is messing up with us trying to hijack temporary files." }
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error setting ownership on temporary file: ::1 temp file::" "$tfile" }
+#.   
+#: tomb:267
 msgid "Fatal error creating a temporary file: ::1 temp file::"
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: _tmp_create
+#.
+#. Code sample:
+#.   
+#.       touch "$tfile"
+#.       [[ $? == 0 ]] || {
+#.           _failure "Fatal error creating a temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Fatal error setting ownership on temporary file: ::1 temp file::" "$tfile" }
+#.   
+#.       _verbose "Created tempfile: ::1 temp file::" "$tfile"
+#.       TOMBTMP="$tfile"
+#.       TOMBTMPFILES+=("$tfile")
+#: tomb:270
 msgid "Fatal error setting ownership on temporary file: ::1 temp file::"
 msgstr ""
 
-#: success
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.               r=1
+#.               is_crypt=`sudo dmsetup status "$s" | awk '/crypt/ {print $3}'`
+#.               [[ $is_crypt == "crypt" ]] && { r=2 } || { break }
+#.   
+#.           fi
+#.       done
+#. >     _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#: tomb:316
+msgid "An active swap partition is detected..."
+msgstr ""
+
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.               [[ $is_crypt == "crypt" ]] && { r=2 } || { break }
+#.   
+#.           fi
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#. >         _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#: tomb:318
 msgid "All your swaps are belong to crypt.  Good."
 msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.           fi
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#. >         _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#: tomb:320
+msgid "This poses a security risk."
+msgstr ""
+
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       done
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#. >         _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#: tomb:321
 msgid "You can deactivate all swap partitions using the command:"
 msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       _message "An active swap partition is detected..."
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#. >         _warning " swapoff -a"
+#.           _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#.   
+#: tomb:322
 msgid " swapoff -a"
 msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: _ensure_safe_swap
+#.
+#. Code sample:
+#.       if [[ $r -eq 2 ]]; then
+#.           _success "All your swaps are belong to crypt.  Good."
+#.       else
+#.           _warning "This poses a security risk."
+#.           _warning "You can deactivate all swap partitions using the command:"
+#.           _warning " swapoff -a"
+#. >         _warning "But if you want to proceed like this, use the -f (force) flag."
+#.       fi
+#.       return $r
+#.   
+#.   }
+#: tomb:323
 msgid "But if you want to proceed like this, use the -f (force) flag."
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: _check_swap
+#.
+#. Code sample:
+#.           _ensure_safe_swap
+#.           case $? in
+#.               0|2)     # No, or encrypted swap
+#.                   return 0
+#.                   ;;
+#.               *)       # Unencrypted swap
+#. >                 _failure "Operation aborted."
+#.                   ;;
+#.           esac
+#.       fi
+#.   }
+#: tomb:342
 msgid "Operation aborted."
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   SETTITLE $title
+#.   SETDESC $description
+#.   SETPROMPT Password:
+#.   GETPIN
+#.   EOF`
+#.           else
+#. >             _failure "Cannot find pinentry-curses and no DISPLAY detected."
+#.           fi
+#.   
+#.       else # a DISPLAY is found to be active
+#.   
+#: tomb:379
 msgid "Cannot find pinentry-curses and no DISPLAY detected."
 msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   EOF`
+#.   
+#.           else
+#.   
+#.               if _is_found "pinentry-curses"; then
+#.   
+#. >                 _warning "Detected DISPLAY, but only pinentry-curses is found."
+#.                   output=`cat <<EOF | pinentry-curses
+#.   OPTION ttyname=$TTY
+#.   OPTION lc-ctype=$LANG
+#.   SETTITLE $title
+#: tomb:432
 msgid "Detected DISPLAY, but only pinentry-curses is found."
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   SETTITLE $title
+#.   SETDESC $description
+#.   SETPROMPT Password:
+#.   GETPIN
+#.   EOF`
+#.               else
+#. >                 _failure "Cannot find any pinentry: impossible to ask for password."
+#.               fi
+#.   
+#.           fi
+#.   
+#: tomb:442
 msgid "Cannot find any pinentry: impossible to ask for password."
 msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   
+#.       fi # end of DISPLAY block
+#.   
+#.       # parse the pinentry output
+#.       for i in ${(f)output}; do
+#.           [[ "$i" =~ "^ERR.*" ]] && {
+#. >             _warning "Pinentry error: ::1 error::" ${i[(w)3]}
+#.               print "canceled"
+#.               return 1 }
+#.   
+#.           # here the password is found
+#: tomb:452
 msgid "Pinentry error: ::1 error::"
 msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: ask_password
+#.
+#. Code sample:
+#.   
+#.           # here the password is found
+#.           [[ "$i" =~ "^D .*" ]] && password="${i##D }"
+#.       done
+#.   
+#.       [[ "$password" = "" ]] && {
+#. >         _warning "Empty password"
+#.           print "empty"
+#.           return 1 }
+#.   
+#.       print "$password"
+#: tomb:461
 msgid "Empty password"
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.   # Check if a filename is a valid tomb
+#.   is_valid_tomb() {
+#.       _verbose "is_valid_tomb ::1 tomb file::" $1
+#.   
+#.       # First argument must be the path to a tomb
+#.       [[ -z "$1" ]] && {
+#. >         _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#: tomb:477
 msgid "Tomb file is missing from arguments."
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # First argument must be the path to a tomb
+#.       [[ -z "$1" ]] && {
+#.           _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#. >         _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#: tomb:481
 msgid "Tomb file not found: ::1 tomb file::"
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _failure "Tomb file is missing from arguments." }
+#.   
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#. >         _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#.           _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#: tomb:483
 msgid "Tomb file is not a regular file: ::1 tomb file::"
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # Tomb file must be a readable, writable, not-empty regular file.
+#.       [[ ! -r "$1" ]] && {
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#. >         _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#.           _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#.   
+#.       # TODO: split the rest of that function out.
+#: tomb:485
 msgid "Tomb file is empty (zero length): ::1 tomb file::"
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _failure "Tomb file not found: ::1 tomb file::" $1 }
+#.       [[ ! -f "$1" ]] && {
+#.           _failure "Tomb file is not a regular file: ::1 tomb file::" $1 }
+#.       [[ ! -s "$1" ]] && {
+#.           _failure "Tomb file is empty (zero length): ::1 tomb file::" $1 }
+#.       [[ ! -w "$1" ]] && {
+#. >         _failure "Tomb file is not writable: ::1 tomb file::" $1 }
+#.   
+#.       # TODO: split the rest of that function out.
+#.       # We already have a valid tomb, now we're checking
+#.       # whether we can alter it.
+#: tomb:487
 msgid "Tomb file is not writable: ::1 tomb file::"
 msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.       # TODO: split the rest of that function out.
+#.       # We already have a valid tomb, now we're checking
+#.       # whether we can alter it.
+#.   
+#.       # Tomb file may be a LUKS FS (or we are creating it)
+#.       [[ "`file $1`" =~ "luks encrypted file" ]] || {
+#. >         _warning "File is not yet a tomb: ::1 tomb file::" $1 }
+#.   
+#.       _plot $1     # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#: tomb:495
 msgid "File is not yet a tomb: ::1 tomb file::"
 msgstr ""
 
-#: failure
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.           _warning "File is not yet a tomb: ::1 tomb file::" $1 }
+#.   
+#.       _plot $1     # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]$" ]] && {
+#. >         _failure "Tomb is currently in use: ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       _message "Valid tomb file found: ::1 tomb path::" $TOMBPATH
+#.   
+#: tomb:501
 msgid "Tomb is currently in use: ::1 tomb name::"
 msgstr ""
 
-#: message
+#. Fold: Safety functions
+#. Function: is_valid_tomb
+#.
+#. Code sample:
+#.   
+#.       # Tomb cannot be already mounted (or we cannot alter it)
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]$" ]] && {
+#.           _failure "Tomb is currently in use: ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#. >     _message "Valid tomb file found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:504
 msgid "Valid tomb file found: ::1 tomb path::"
 msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.   lo_mount() {
+#.       tpath="$1"
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#. >         _warning "Loop mount of volumes is not possible on this machine, this error"
+#.           _warning "often occurs on VPS and kernels that don't provide the loop module."
+#.           _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#: tomb:516
 msgid "Loop mount of volumes is not possible on this machine, this error"
 msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.       tpath="$1"
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#.           _warning "Loop mount of volumes is not possible on this machine, this error"
+#. >         _warning "often occurs on VPS and kernels that don't provide the loop module."
+#.           _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#: tomb:517
 msgid "often occurs on VPS and kernels that don't provide the loop module."
 msgstr ""
 
-#: warning
+#. Fold: Safety functions
+#. Function: lo_mount
+#.
+#. Code sample:
+#.   
+#.       # check if we have support for loop mounting
+#.       _nstloop=`sudo losetup -f`
+#.       [[ $? = 0 ]] || {
+#.           _warning "Loop mount of volumes is not possible on this machine, this error"
+#.           _warning "often occurs on VPS and kernels that don't provide the loop module."
+#. >         _warning "It is impossible to use Tomb on this machine at this conditions."
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       sudo losetup -f "$tpath" # allocates the next loopback for our file
+#: tomb:518
 msgid "It is impossible to use Tomb on this machine at this conditions."
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   # }}}
+#.   
+#.   # {{{ Commandline interaction
+#.   
+#.   usage() {
+#. >     _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#: tomb:558
 msgid "Syntax: tomb [options] command [arguments]"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   # {{{ Commandline interaction
+#.   
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#. >     _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#: tomb:560
 msgid "Commands:"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#. >     _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#: tomb:562
 msgid " // Creation:"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.   usage() {
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#. >     _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#: tomb:563
 msgid " dig     create a new empty TOMB file of size -s in MB"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "Syntax: tomb [options] command [arguments]"
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#. >     _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#: tomb:564
 msgid " forge   create a new KEY file and set its password"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print "Commands:"
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#. >     _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#: tomb:565
 msgid " lock    installs a lock on a TOMB to use it with KEY"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#. >     _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#: tomb:567
 msgid " // Operations on tombs:"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Creation:"
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#. >     _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#: tomb:568
 msgid " open    open an existing TOMB"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " dig     create a new empty TOMB file of size -s in MB"
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#. >     _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#: tomb:569
 msgid " index   update the search indexes of tombs"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " forge   create a new KEY file and set its password"
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#. >     _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#: tomb:570
 msgid " search  looks for filenames matching text patterns"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " lock    installs a lock on a TOMB to use it with KEY"
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#. >     _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#: tomb:571
 msgid " list    list of open TOMBs and information on them"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#. >     _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#: tomb:572
 msgid " close   close a specific TOMB (or 'all')"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Operations on tombs:"
+#.       _print " open    open an existing TOMB"
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#. >     _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#: tomb:573
 msgid " slam    slam a TOMB killing all programs using it"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " index   update the search indexes of tombs"
+#.       _print " search  looks for filenames matching text patterns"
+#.       _print " list    list of open TOMBs and information on them"
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#. >         _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#: tomb:575
 msgid " resize  resize a TOMB to a new size -s (can only grow)"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " close   close a specific TOMB (or 'all')"
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#. >     _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#: tomb:578
 msgid " // Operations on keys:"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " slam    slam a TOMB killing all programs using it"
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#. >     _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#: tomb:579
 msgid " passwd  change the password of a KEY (needs old pass)"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $RESIZER == 1 ]] && {
+#.           _print " resize  resize a TOMB to a new size -s (can only grow)"
+#.       }
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#. >     _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#: tomb:580
 msgid " setkey  change the KEY locking a TOMB (needs old key and pass)"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#. >         _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#: tomb:583
 msgid " // Backup on paper:"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " // Operations on keys:"
+#.       _print " passwd  change the password of a KEY (needs old pass)"
+#.       _print " setkey  change the KEY locking a TOMB (needs old key and pass)"
+#.       _print "\000"
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#. >         _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#: tomb:584
 msgid " engrave makes a QR code of a KEY to be saved on paper"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $QRENCODE == 1 ]] && {
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#. >         _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#: tomb:588
 msgid " // Steganography:"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " // Backup on paper:"
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#. >         _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#: tomb:589
 msgid " bury    hide a KEY inside a JPEG image (for use with -k)"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " engrave makes a QR code of a KEY to be saved on paper"
+#.       }
+#.       _print "\000"
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#. >         _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#: tomb:590
 msgid " exhume  extract a KEY from a JPEG image (prints to stdout)"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $STEGHIDE == 1 ]] && {
+#.           _print " // Steganography:"
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#. >     _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#: tomb:593
 msgid "Options:"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " bury    hide a KEY inside a JPEG image (for use with -k)"
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#. >     _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#: tomb:595
 msgid " -s     size of the tomb file when creating/resizing one (in MB)"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " exhume  extract a KEY from a JPEG image (prints to stdout)"
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#. >     _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#: tomb:596
 msgid " -k     path to the key to be used ('-k -' to read from stdin)"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       }
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#. >     _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#: tomb:597
 msgid " -n     don't process the hooks found in tomb"
 msgstr ""
 
-#: print
-msgid " -o     mount options used to open (default: rw,noatime,nodev)"
-msgstr ""
-
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#. >     _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#: tomb:598
+msgid " -o     options passed to local command, e.g.:"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "Options:"
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#. >     _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#: tomb:599
+msgid "          - mount options used to open (default: rw,noatime,nodev)"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#. >     _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#: tomb:600
+msgid "          - an alternate cipher to forge and lock"
+msgstr ""
+
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -s     size of the tomb file when creating/resizing one (in MB)"
+#.       _print " -k     path to the key to be used ('-k -' to read from stdin)"
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#. >     _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#: tomb:601
 msgid " -f     force operation (i.e. even if swap is active)"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -n     don't process the hooks found in tomb"
+#.       _print " -o     options passed to local command, e.g.:"
+#.       _print "          - mount options used to open (default: rw,noatime,nodev)"
+#.       _print "          - an alternate cipher to forge and lock"
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#. >         _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#: tomb:603
 msgid " --kdf  generate passwords armored against dictionary attacks"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -f     force operation (i.e. even if swap is active)"
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#. >     _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#: tomb:607
 msgid " -h     print this help"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       [[ $KDF == 1 ]] && {
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#. >     _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#: tomb:608
 msgid " -v     print version, license and list of available ciphers"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.           _print " --kdf  generate passwords armored against dictionary attacks"
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#. >     _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#: tomb:609
 msgid " -q     run quietly without printing informations"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       }
+#.   
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#. >     _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#: tomb:610
 msgid " -D     print debugging information at runtime"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print "\000"
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#. >     _print "For more informations on Tomb read the manual: man tomb"
+#.       _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#.   
+#.   
+#: tomb:612
 msgid "For more informations on Tomb read the manual: man tomb"
 msgstr ""
 
-#: print
+#. Fold: Commandline interaction
+#. Function: usage
+#.
+#. Code sample:
+#.       _print " -h     print this help"
+#.       _print " -v     print version, license and list of available ciphers"
+#.       _print " -q     run quietly without printing informations"
+#.       _print " -D     print debugging information at runtime"
+#.       _print "\000"
+#.       _print "For more informations on Tomb read the manual: man tomb"
+#. >     _print "Please report bugs on <http://github.com/dyne/tomb/issues>."
+#.   }
+#.   
+#.   
+#.   # Check whether a commandline option is set.
+#: tomb:613
 msgid "Please report bugs on <http://github.com/dyne/tomb/issues>."
 msgstr ""
 
-#: failure
+#. Fold: Commandline interaction
+#. Function: _ensure_dependencies
+#.
+#. Code sample:
+#.   # missing, bail out.
+#.   _ensure_dependencies() {
+#.   
+#.       # Check for required programs
+#.       for req in cryptsetup pinentry sudo gpg mkfs.ext4 e2fsck; do
+#.           command -v $req 1>/dev/null 2>/dev/null || {
+#. >             _failure "Missing required dependency ::1 command::.  Please install it." $req }
+#.       done
+#.   
+#.       # Ensure system binaries are available in the PATH
+#.       path+=(/sbin /usr/sbin) # zsh magic
+#: tomb:748
 msgid "Missing required dependency ::1 command::.  Please install it."
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.   
+#.       _verbose "is_valid_key"
+#.   
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#. >             _warning "cleartext key from stdin selected: this is unsafe."
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#: tomb:785
 msgid "cleartext key from stdin selected: this is unsafe."
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       _verbose "is_valid_key"
+#.   
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#.               _warning "cleartext key from stdin selected: this is unsafe."
+#. >             exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#: tomb:786
 msgid "please use --unsafe if you really want to do this."
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       [[ -z $key ]] && key=$TOMBKEY
+#.       [[ "$key" = "cleartext" ]] && {
+#.           { option_is_set --unsafe } || {
+#.               _warning "cleartext key from stdin selected: this is unsafe."
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#. >         _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#.       [[ -z $key ]] && {
+#.           _warning "is_valid_key() called without an argument."
+#: tomb:788
 msgid "received key in cleartext from stdin (unsafe mode)"
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.               exitv=127 _failure "please use --unsafe if you really want to do this."
+#.           }
+#.           _warning "received key in cleartext from stdin (unsafe mode)"
+#.           return 0 }
+#.   
+#.       [[ -z $key ]] && {
+#. >         _warning "is_valid_key() called without an argument."
+#.           return 1
+#.       }
+#.   
+#.       # If the key file is an image don't check file header
+#: tomb:792
 msgid "is_valid_key() called without an argument."
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.       }
+#.   
+#.       # If the key file is an image don't check file header
+#.       [[ -r $TOMBKEYFILE ]] \
+#.           && [[ $(file $TOMBKEYFILE) =~ "JP.G" ]] \
+#.           && {
+#. >         _message "Key is an image, it might be valid."
+#.           return 0 }
+#.   
+#.       [[ $key =~ "BEGIN PGP" ]] && {
+#.           _message "Key is valid."
+#: tomb:800
 msgid "Key is an image, it might be valid."
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: is_valid_key
+#.
+#. Code sample:
+#.           && [[ $(file $TOMBKEYFILE) =~ "JP.G" ]] \
+#.           && {
+#.           _message "Key is an image, it might be valid."
+#.           return 0 }
+#.   
+#.       [[ $key =~ "BEGIN PGP" ]] && {
+#. >         _message "Key is valid."
+#.           return 0 }
+#.   
+#.       return 1
+#.   }
+#: tomb:804
 msgid "Key is valid."
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: _tomb_key_recover recover_key
+#.
+#. Code sample:
+#.   }
+#.   
+#.   # $1 is a string containing an encrypted key
+#.   _tomb_key_recover recover_key() {
+#.       local key="${1}"    # Unique argument is an encrypted key
+#.   
+#. >     _warning "Attempting key recovery."
+#.   
+#.       _head="${key[(f)1]}" # take the first line
+#.   
+#.       TOMBKEY=""        # Reset global variable
+#: tomb:814
 msgid "Attempting key recovery."
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.   # Set global variables TOMBKEY and TOMBKEYFILE.
+#.   _load_key() {
+#.       local keyfile="$1"    # Unique argument is an optional keyfile
+#.   
+#.       [[ -z $keyfile ]] && keyfile=$(option_value -k)
+#.       [[ -z $keyfile ]] && {
+#. >         _failure "This operation requires a key file to be specified using the -k option." }
+#.   
+#.       if [[ $keyfile == "-" ]]; then
+#.           _verbose "load_key reading from stdin."
+#.           _message "Waiting for the key to be piped from stdin... "
+#: tomb:838
 msgid "This operation requires a key file to be specified using the -k option."
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.       [[ -z $keyfile ]] && keyfile=$(option_value -k)
+#.       [[ -z $keyfile ]] && {
+#.           _failure "This operation requires a key file to be specified using the -k option." }
+#.   
+#.       if [[ $keyfile == "-" ]]; then
+#.           _verbose "load_key reading from stdin."
+#. >         _message "Waiting for the key to be piped from stdin... "
+#.           TOMBKEYFILE=stdin
+#.           TOMBKEY=$(cat)
+#.       elif [[ $keyfile == "cleartext" ]]; then
+#.           _verbose "load_key reading SECRET from stdin"
+#: tomb:842
 msgid "Waiting for the key to be piped from stdin... "
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.           _message "Waiting for the key to be piped from stdin... "
+#.           TOMBKEYFILE=cleartext
+#.           TOMBKEY=cleartext
+#.           TOMBSECRET=$(cat)
+#.       else
+#.           _verbose "load_key argument: ::1 key file::" $keyfile
+#. >         [[ -r $keyfile ]] || _failure "Key not found, specify one using -k."
+#.           TOMBKEYFILE=$keyfile
+#.           TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.       fi
+#.   
+#: tomb:853
 msgid "Key not found, specify one using -k."
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: _load_key
+#.
+#. Code sample:
+#.           TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.       fi
+#.   
+#.       _verbose "load_key: ::1 key::" $TOMBKEYFILE
+#.   
+#.       is_valid_key $TOMBKEY || {
+#. >         _warning "The key seems invalid or its format is not known by this version of Tomb."
+#.           _tomb_key_recover $TOMBKEY
+#.       }
+#.   
+#.       # Declared TOMBKEYFILE (path)
+#: tomb:861
 msgid "The key seems invalid or its format is not known by this version of Tomb."
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: get_lukskey
+#.
+#. Code sample:
+#.                   _verbose "KDF salt: $kdf_salt"
+#.                   _verbose "KDF ic: $kdf_ic"
+#.                   _verbose "KDF len: $kdf_len"
+#.                   _password=$(tomb-kdb-pbkdf2 $kdf_salt $kdf_ic $kdf_len 2>/dev/null <<<$_password)
+#.                   ;;
+#.               *)
+#. >                 _failure "No suitable program for KDF ::1 program::." $pbkdf_hash
+#.                   unset _password
+#.                   return 1
+#.                   ;;
+#.           esac
+#: tomb:936
 msgid "No suitable program for KDF ::1 program::."
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.   
+#.   # This function asks the user for the password to use the key it tests
+#.   # it against the return code of gpg on success returns 0 and saves
+#.   # the password in the global variable $TOMBPASSWORD
+#.   ask_key_password() {
+#.       [[ -z "$TOMBKEYFILE" ]] && {
+#. >         _failure "Internal error: ask_key_password() called before _load_key()." }
+#.   
+#.       [[ "$TOMBKEYFILE" = "cleartext" ]] && {
+#.           _verbose "no password needed, using secret bytes from stdin"
+#.           return 0 }
+#: tomb:962
 msgid "Internal error: ask_key_password() called before _load_key()."
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.           _failure "Internal error: ask_key_password() called before _load_key()." }
+#.   
+#.       [[ "$TOMBKEYFILE" = "cleartext" ]] && {
+#.           _verbose "no password needed, using secret bytes from stdin"
+#.           return 0 }
+#.   
+#. >     _message "A password is required to use key ::1 key::" $TOMBKEYFILE
+#.       passok=0
+#.       tombpass=""
+#.       if [[ "$1" = "" ]]; then
+#.   
+#: tomb:968
 msgid "A password is required to use key ::1 key::"
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.               if [[ $c == 1 ]]; then
+#.                   tombpass=$(ask_password "Insert password to: $TOMBKEYFILE")
+#.               else
+#.                   tombpass=$(ask_password "Insert password to: $TOMBKEYFILE (attempt $c)")
+#.               fi
+#.               [[ $? = 0 ]] || {
+#. >                 _warning "User aborted password dialog."
+#.                   return 1
+#.               }
+#.   
+#.               get_lukskey "$tombpass"
+#: tomb:980
 msgid "User aborted password dialog."
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: ask_key_password
+#.
+#. Code sample:
+#.                   return 1
+#.               }
+#.   
+#.               get_lukskey "$tombpass"
+#.   
+#.               [[ $? = 0 ]] && {
+#. >                 passok=1; _message "Password OK."
+#.                   break;
+#.               }
+#.           done
+#.   
+#: tomb:987
 msgid "Password OK."
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.   change_passwd() {
+#.       local tmpnewkey lukskey c tombpass tombpasstmp
+#.   
+#.       _check_swap  # Ensure swap is secure, if any
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#. >     _message "Commanded to change password for tomb key ::1 key::" $TOMBKEYFILE
+#.   
+#.       _tmp_create
+#.       tmpnewkey=$TOMBTMP
+#.   
+#: tomb:1025
 msgid "Commanded to change password for tomb key ::1 key::"
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           local tomboldpwd="`option_value --tomb-old-pwd`"
+#.           _verbose "tomb-old-pwd = ::1 old pass::" $tomboldpwd
+#.           ask_key_password "$tomboldpwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#. >     [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _success "Changing password for ::1 key file::" $TOMBKEYFILE
+#.   
+#.       # Here $TOMBSECRET contains the key material in clear
+#: tomb:1037
 msgid "No valid password supplied."
 msgstr ""
 
-#: success
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           ask_key_password "$tomboldpwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#. >     _success "Changing password for ::1 key file::" $TOMBKEYFILE
+#.   
+#.       # Here $TOMBSECRET contains the key material in clear
+#.   
+#.       { option_is_set --tomb-pwd } && {
+#: tomb:1039
 msgid "Changing password for ::1 key file::"
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.           gen_key "$tombpwd" >> "$tmpnewkey"
+#.       } || {
+#.           gen_key >> "$tmpnewkey"
+#.       }
+#.   
+#.       { is_valid_key "${mapfile[$tmpnewkey]}" } || {
+#. >         _failure "Error: the newly generated keyfile does not seem valid." }
+#.   
+#.       # Copy the new key as the original keyfile name
+#.       cp -f "${tmpnewkey}" $TOMBKEYFILE
+#.       _success "Your passphrase was successfully updated."
+#: tomb:1052
 msgid "Error: the newly generated keyfile does not seem valid."
 msgstr ""
 
-#: success
+#. Fold: Key operations
+#. Function: change_passwd
+#.
+#. Code sample:
+#.   
+#.       { is_valid_key "${mapfile[$tmpnewkey]}" } || {
+#.           _failure "Error: the newly generated keyfile does not seem valid." }
+#.   
+#.       # Copy the new key as the original keyfile name
+#.       cp -f "${tmpnewkey}" $TOMBKEYFILE
+#. >     _success "Your passphrase was successfully updated."
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1056
 msgid "Your passphrase was successfully updated."
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.   
+#.       if [ "$1" = "" ]; then
+#.           while true; do
+#.               # 3 tries to write two times a matching password
+#.               tombpass=`ask_password "Type the new password to secure your key"`
+#.               if [[ $? != 0 ]]; then
+#. >                 _failure "User aborted."
+#.               fi
+#.               if [ -z $tombpass ]; then
+#.                   _failure "You set empty password, which is not possible."
+#.               fi
+#: tomb:1078
 msgid "User aborted."
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # 3 tries to write two times a matching password
+#.               tombpass=`ask_password "Type the new password to secure your key"`
+#.               if [[ $? != 0 ]]; then
+#.                   _failure "User aborted."
+#.               fi
+#.               if [ -z $tombpass ]; then
+#. >                 _failure "You set empty password, which is not possible."
+#.               fi
+#.               tombpasstmp=$tombpass
+#.               tombpass=`ask_password "Type the new password to secure your key (again)"`
+#.               if [[ $? != 0 ]]; then
+#: tomb:1081
 msgid "You set empty password, which is not possible."
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # see: https://github.com/dyne/Tomb/issues/82
+#.               itertime="`option_value --kdf`"
+#.               # removing support of floating points because they can't be type checked well
+#.               if [[ "$itertime" != <-> ]]; then
+#.                   unset tombpass
+#.                   unset tombpasstmp
+#. >                 _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#: tomb:1109
 msgid "Wrong argument for --kdf: must be an integer number (iteration seconds)."
 msgstr ""
 
-#: success
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.                   unset tombpasstmp
+#.                   _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#. >             _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#: tomb:1114
 msgid "Using KDF, iterations: ::1 microseconds::"
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.                   _failure "Wrong argument for --kdf: must be an integer number (iteration seconds)."
+#.               fi
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#. >             _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#.               _message "encoding the password"
+#: tomb:1115
 msgid "generating salt"
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               # --kdf takes one parameter: iter time (on present machine) in seconds
+#.               local -i microseconds
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#. >             _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#.               _message "encoding the password"
+#.               # We use a length of 64bytes = 512bits (more than needed!?)
+#.               tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+#: tomb:1117
 msgid "calculating iterations"
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: gen_key
+#.
+#. Code sample:
+#.               microseconds=$(( itertime * 10000 ))
+#.               _success "Using KDF, iterations: ::1 microseconds::" $microseconds
+#.               _message "generating salt"
+#.               pbkdf2_salt=`tomb-kdb-pbkdf2-gensalt`
+#.               _message "calculating iterations"
+#.               pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
+#. >             _message "encoding the password"
+#.               # We use a length of 64bytes = 512bits (more than needed!?)
+#.               tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
+#.   
+#.               header="_KDF_pbkdf2sha1_${pbkdf2_salt}_${pbkdf2_iter}_64\n"
+#: tomb:1119
 msgid "encoding the password"
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: list_gnupg_ciphers
+#.
+#. Code sample:
+#.       unset tombpasstmp
+#.   }
+#.   
+#.   # prints an array of ciphers available in gnupg (to encrypt keys)
+#.   list_gnupg_ciphers() {
+#.       # prints an error if GnuPG is not found
+#. >     which gpg 2>/dev/null || _failure "gpg (GnuPG) is not found, Tomb cannot function without it."
+#.   
+#.       ciphers=(`gpg --version | awk '
+#.   BEGIN { ciphers=0 }
+#.   /^Cipher:/ { gsub(/,/,""); sub(/^Cipher:/,""); print; ciphers=1; next }
+#: tomb:1150
 msgid "gpg (GnuPG) is not found, Tomb cannot function without it."
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEY
+#.   
+#.       imagefile=$PARAM
+#.   
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#. >         _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#.       _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#: tomb:1171
 msgid "Encode failed: ::1 image file:: is not a jpeg image."
 msgstr ""
 
-#: success
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#.           _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#. >     _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#.       _message "Please confirm the key password for the encoding"
+#.       # We ask the password and test if it is the same encoding the
+#.       # base key, to insure that the same password is used for the
+#.       # encryption and the steganography. This is a standard enforced
+#: tomb:1175
 msgid "Encoding key ::1 tomb key:: inside image ::2 image file::"
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.       [[ "`file $imagefile`" =~ "JPEG" ]] || {
+#.           _warning "Encode failed: ::1 image file:: is not a jpeg image." $imagefile
+#.           return 1
+#.       }
+#.   
+#.       _success "Encoding key ::1 tomb key:: inside image ::2 image file::" $TOMBKEY $imagefile
+#. >     _message "Please confirm the key password for the encoding"
+#.       # We ask the password and test if it is the same encoding the
+#.       # base key, to insure that the same password is used for the
+#.       # encryption and the steganography. This is a standard enforced
+#.       # by Tomb, but its not strictly necessary (and having different
+#: tomb:1176
 msgid "Please confirm the key password for the encoding"
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tombpwd
+#.           ask_key_password "$tombpwd"
+#.       } || {
+#.           ask_key_password
+#.       }
+#.       [[ $? != 0 ]] && {
+#. >         _warning "Wrong password supplied."
+#.           _failure "You shall not bury a key whose password is unknown to you." }
+#.   
+#.       # We omit armor strings since having them as constants can give
+#.       # ground to effective attacks on steganography
+#: tomb:1192
 msgid "Wrong password supplied."
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.           ask_key_password "$tombpwd"
+#.       } || {
+#.           ask_key_password
+#.       }
+#.       [[ $? != 0 ]] && {
+#.           _warning "Wrong password supplied."
+#. >         _failure "You shall not bury a key whose password is unknown to you." }
+#.   
+#.       # We omit armor strings since having them as constants can give
+#.       # ground to effective attacks on steganography
+#.       print - "$TOMBKEY" | awk '
+#: tomb:1193
 msgid "You shall not bury a key whose password is unknown to you."
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.   /^-----/ {next}
+#.   /^Version/ {next}
+#.   {print $0}' \
+#.       | steghide embed --embedfile - --coverfile ${imagefile} \
+#.       -p $TOMBPASSWORD -z 9 -e serpent cbc
+#.       if [ $? != 0 ]; then
+#. >         _warning "Encoding error: steghide reports problems."
+#.           res=1
+#.       else
+#.           _success "Tomb key encoded succesfully into image ::1 image file::" $imagefile
+#.           res=0
+#: tomb:1204
 msgid "Encoding error: steghide reports problems."
 msgstr ""
 
-#: success
+#. Fold: Key operations
+#. Function: bury_key
+#.
+#. Code sample:
+#.       | steghide embed --embedfile - --coverfile ${imagefile} \
+#.       -p $TOMBPASSWORD -z 9 -e serpent cbc
+#.       if [ $? != 0 ]; then
+#.           _warning "Encoding error: steghide reports problems."
+#.           res=1
+#.       else
+#. >         _success "Tomb key encoded succesfully into image ::1 image file::" $imagefile
+#.           res=0
+#.       fi
+#.   
+#.       return $res
+#: tomb:1207
 msgid "Tomb key encoded succesfully into image ::1 image file::"
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.   # mandatory 1st arg: the image file where key is supposed to be
+#.   # optional 2nd arg: the password to use (same as key, internal use)
+#.   # optional 3rd arg: the key where to save the result (- for stdout)
+#.   exhume_key() {
+#.       [[ "$1" = "" ]] && {
+#. >         _failure "Exhume failed, no image specified" }
+#.   
+#.       local imagefile="$1"  # The image file where to look for the key
+#.       local tombpass="$2"   # (Optional) the password to use (internal use)
+#.       local destkey="$3"    # (Optional) the key file where to save the
+#: tomb:1219
 msgid "Exhume failed, no image specified"
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       local destkey="$3"    # (Optional) the key file where to save the
+#.       # result (- for stdout)
+#.       local r=1             # Return code (default: fail)
+#.   
+#.       # Ensure the image file is a readable JPEG
+#.       [[ ! -r $imagefile ]] && {
+#. >         _failure "Exhume failed, image file not found: ::1 image file::" "${imagefile:-none}" }
+#.       [[ ! $(file "$imagefile") =~ "JP.G" ]] && {
+#.           _failure "Exhume failed: ::1 image file:: is not a jpeg image." $imagefile }
+#.   
+#.       # When a password is passed as argument then always print out
+#: tomb:1229
 msgid "Exhume failed, image file not found: ::1 image file::"
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       local r=1             # Return code (default: fail)
+#.   
+#.       # Ensure the image file is a readable JPEG
+#.       [[ ! -r $imagefile ]] && {
+#.           _failure "Exhume failed, image file not found: ::1 image file::" "${imagefile:-none}" }
+#.       [[ ! $(file "$imagefile") =~ "JP.G" ]] && {
+#. >         _failure "Exhume failed: ::1 image file:: is not a jpeg image." $imagefile }
+#.   
+#.       # When a password is passed as argument then always print out
+#.       # the exhumed key on stdout without further checks (internal use)
+#.       [[ -n "$tombpass" ]] && {
+#: tomb:1231
 msgid "Exhume failed: ::1 image file:: is not a jpeg image."
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.       # When a password is passed as argument then always print out
+#.       # the exhumed key on stdout without further checks (internal use)
+#.       [[ -n "$tombpass" ]] && {
+#.           TOMBKEY=$(steghide extract -sf $imagefile -p $tombpass -xf -)
+#.           [[ $? != 0 ]] && {
+#. >             _failure "Wrong password or no steganographic key found" }
+#.   
+#.           recover_key $TOMBKEY
+#.   
+#.           return 0
+#: tomb:1238
 msgid "Wrong password or no steganographic key found"
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       }
+#.   
+#.       # Ensure we have a valid destination for the key
+#.       [[ -z $destkey ]] && { option_is_set -k } && destkey=$(option_value -k)
+#.       [[ -z $destkey ]] && {
+#.           destkey="-" # No key was specified: fallback to stdout
+#. >         _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#: tomb:1249
 msgid "printing exhumed key on stdout"
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       [[ -z $destkey ]] && {
+#.           destkey="-" # No key was specified: fallback to stdout
+#.           _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#. >         _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#: tomb:1253
 msgid "File exists: ::1 tomb key::"
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.           _message "printing exhumed key on stdout" }
+#.   
+#.       # Bail out if destination exists, unless -f (force) was passed
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#. >             _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#: tomb:1255
 msgid "Use of --force selected: overwriting."
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       [[ $destkey != "-" && -s $destkey ]] && {
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#. >             _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#.       _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#: tomb:1258
 msgid "Make explicit use of --force to overwrite."
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.           _warning "File exists: ::1 tomb key::" $destkey
+#.           { option_is_set -f } && {
+#.               _warning "Use of --force selected: overwriting."
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#. >             _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#.       _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#.       { option_is_set --tomb-pwd } && {
+#: tomb:1259
 msgid "Refusing to overwrite file. Operation aborted."
 msgstr ""
 
-#: message
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.               rm -f $destkey
+#.           } || {
+#.               _warning "Make explicit use of --force to overwrite."
+#.               _failure "Refusing to overwrite file. Operation aborted." }
+#.       }
+#.   
+#. >     _message "Trying to exhume a key out of image ::1 image file::" $imagefile
+#.       { option_is_set --tomb-pwd } && {
+#.           tombpass=$(option_value --tomb-pwd)
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tombpass
+#.       } || {
+#: tomb:1262
 msgid "Trying to exhume a key out of image ::1 image file::"
 msgstr ""
 
-#: success
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.       steghide extract -sf $imagefile -p ${tombpass} -xf $destkey
+#.       r=$?
+#.   
+#.       # Report to the user
+#.       [[ "$destkey" = "-" ]] && destkey="stdout"
+#.       [[ $r == 0 ]] && {
+#. >         _success "Key succesfully exhumed to ::1 key::." $destkey
+#.       } || {
+#.           _warning "Nothing found in ::1 image file::" $imagefile
+#.       }
+#.   
+#: tomb:1283
 msgid "Key succesfully exhumed to ::1 key::."
 msgstr ""
 
-#: warning
+#. Fold: Key operations
+#. Function: exhume_key
+#.
+#. Code sample:
+#.   
+#.       # Report to the user
+#.       [[ "$destkey" = "-" ]] && destkey="stdout"
+#.       [[ $r == 0 ]] && {
+#.           _success "Key succesfully exhumed to ::1 key::." $destkey
+#.       } || {
+#. >         _warning "Nothing found in ::1 image file::" $imagefile
+#.       }
+#.   
+#.       return $r
+#.   }
+#: tomb:1285
 msgid "Nothing found in ::1 image file::"
 msgstr ""
 
-#: success
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#.       local keyname=$(basename $TOMBKEYFILE)
+#.       local pngname="$keyname.qr.png"
+#.   
+#. >     _success "Rendering a printable QRCode for key: ::1 tomb key file::" $TOMBKEYFILE
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE \
+#.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#: tomb:1300
 msgid "Rendering a printable QRCode for key: ::1 tomb key file::"
 msgstr ""
 
-#: failure
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.   
+#.       _success "Rendering a printable QRCode for key: ::1 tomb key file::" $TOMBKEYFILE
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE \
+#.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#. >         _failure "QREncode reported an error." }
+#.   
+#.       _success "Operation successful:"
+#.       # TODO: only if verbose and/or not silent
+#.       ls -lh $pngname
+#: tomb:1305
 msgid "QREncode reported an error."
 msgstr ""
 
-#: success
+#. Fold: Key operations
+#. Function: engrave_key
+#.
+#. Code sample:
+#.       # we omit armor strings to save space
+#.       awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $TOMBKEYFILE \
+#.           | qrencode --size 4 --level H --casesensitive -o $pngname
+#.       [[ $? != 0 ]] && {
+#.           _failure "QREncode reported an error." }
+#.   
+#. >     _success "Operation successful:"
+#.       # TODO: only if verbose and/or not silent
+#.       ls -lh $pngname
+#.       file $pngname
+#.   }
+#: tomb:1307
 msgid "Operation successful:"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.   dig_tomb() {
+#.       local    tombpath="$1"    # Path to tomb
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#. >     _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#: tomb:1340
 msgid "Commanded to dig tomb ::1 tomb path::"
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       local    tombpath="$1"    # Path to tomb
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#. >     [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#: tomb:1342
 msgid "Missing path to tomb"
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       # Require the specification of the size of the tomb (-s) in MB
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#. >     [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#: tomb:1343
 msgid "Size argument missing, use -s"
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       local -i tombsize=$(option_value -s)
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#. >     [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#: tomb:1344
 msgid "Size must be an integer (megabytes)"
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to dig tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -n "$tombpath"   ]] || _failure "Missing path to tomb"
+#.       [[ -n "$tombsize"   ]] || _failure "Size argument missing, use -s"
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#. >     [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       [[ -e $TOMBPATH ]] && {
+#: tomb:1345
 msgid "Tombs can't be smaller than 10 megabytes"
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       [[ $tombsize == <-> ]] || _failure "Size must be an integer (megabytes)"
+#.       [[ $tombsize -ge 10 ]] || _failure "Tombs can't be smaller than 10 megabytes"
+#.   
+#.       _plot $tombpath          # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       [[ -e $TOMBPATH ]] && {
+#. >         _warning "A tomb exists already. I'm not digging here:"
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#: tomb:1350
 msgid "A tomb exists already. I'm not digging here:"
 msgstr ""
 
-#: success
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       [[ -e $TOMBPATH ]] && {
+#.           _warning "A tomb exists already. I'm not digging here:"
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#. >     _success "Creating a new tomb in ::1 tomb path::" $TOMBPATH
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#: tomb:1355
 msgid "Creating a new tomb in ::1 tomb path::"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           ls -lh $TOMBPATH
+#.           return 1
+#.       }
+#.   
+#.       _success "Creating a new tomb in ::1 tomb path::" $TOMBPATH
+#.   
+#. >     _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#.       touch $TOMBPATH
+#.       [[ $? = 0 ]] || {
+#: tomb:1357
 msgid "Generating ::1 tomb file:: of ::2 size::MiB"
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $tombsize
+#.   
+#.       # Ensure that file permissions are safe even if interrupted
+#.       touch $TOMBPATH
+#.       [[ $? = 0 ]] || {
+#. >         _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.       chmod 0600 $TOMBPATH
+#.   
+#: tomb:1362
 msgid "Error creating the tomb ::1 tomb path::"
 msgstr ""
 
-#: success
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           ls -lh $TOMBPATH
+#.       } || {
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#. >     _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#: tomb:1377
 msgid "Done digging ::1 tomb name::"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.       } || {
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#. >     _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#: tomb:1378
 msgid "Your tomb is not yet ready, you need to forge a key and lock it:"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           _warning "Error creating the tomb ::1 tomb path::" $TOMBPATH
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#. >     _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#.       _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#: tomb:1379
 msgid "tomb forge ::1 tomb path::.key"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: dig_tomb
+#.
+#. Code sample:
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _success "Done digging ::1 tomb name::" $TOMBNAME
+#.       _message "Your tomb is not yet ready, you need to forge a key and lock it:"
+#.       _message "tomb forge ::1 tomb path::.key" $TOMBPATH
+#. >     _message "tomb lock ::1 tomb path:: -k ::1 tomb path::.key" $TOMBPATH
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1380
 msgid "tomb lock ::1 tomb path:: -k ::1 tomb path::.key"
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       local destkey="$1"
+#.       { option_is_set -k } && { destkey=$(option_value -k) }
+#.   
+#.       local algo="AES256"  # Default encryption algorithm
+#.   
+#.       [[ -z "$destkey" ]] && {
+#. >         _failure "A filename needs to be specified using -k to forge a new key." }
+#.   
+#.       _message "Commanded to forge key ::1 key::" $destkey
+#.   
+#.       _check_swap # Ensure the available memory is safe to use
+#: tomb:1401
 msgid "A filename needs to be specified using -k to forge a new key."
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       local algo="AES256"  # Default encryption algorithm
+#.   
+#.       [[ -z "$destkey" ]] && {
+#.           _failure "A filename needs to be specified using -k to forge a new key." }
+#.   
+#. >     _message "Commanded to forge key ::1 key::" $destkey
+#.   
+#.       _check_swap # Ensure the available memory is safe to use
+#.   
+#.       # Ensure GnuPG won't exit with an error before first run
+#: tomb:1403
 msgid "Commanded to forge key ::1 key::"
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           mkdir -m 0700 $HOME/.gnupg
+#.           touch $HOME/.gnupg/pubring.gpg }
+#.   
+#.       # Do not overwrite any files accidentally
+#.       [[ -r "$destkey" ]] && {
+#.           ls -lh $destkey
+#. >         _failure "Forging this key would overwrite an existing file. Operation aborted." }
+#.   
+#.       touch $destkey
+#.       [[ $? == 0 ]] || {
+#.           _warning "Cannot generate encryption key."
+#: tomb:1415
 msgid "Forging this key would overwrite an existing file. Operation aborted."
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       [[ -r "$destkey" ]] && {
+#.           ls -lh $destkey
+#.           _failure "Forging this key would overwrite an existing file. Operation aborted." }
+#.   
+#.       touch $destkey
+#.       [[ $? == 0 ]] || {
+#. >         _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.       chmod 0600 $destkey
+#.   
+#.       # Update algorithm if it was passed on the command line with -o
+#: tomb:1419
+msgid "Cannot generate encryption key."
+msgstr ""
+
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       chmod 0600 $destkey
+#.   
+#.       # Update algorithm if it was passed on the command line with -o
+#.       { option_is_set -o } && algopt="$(option_value -o)"
+#.       [[ -n "$algopt" ]] && algo=$algopt
+#.   
+#. >     _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" \
+#.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#: tomb:1427
 msgid "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" \
+#.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#. >     _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#: tomb:1432
 msgid "This operation takes time, keep using this computer on other tasks,"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       _message "Commanded to forge key ::1 key:: with cipher algorithm ::2 algorithm::" \
+#.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#. >     _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#: tomb:1433
 msgid "once done you will be asked to choose a password for your tomb."
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           $destkey $algo
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#. >     _message "To make it faster you can move the mouse around."
+#.       _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#.       local random_source=/dev/random
+#: tomb:1434
 msgid "To make it faster you can move the mouse around."
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       TOMBKEYFILE="$destkey"    # Set global variable
+#.   
+#.       _message "This operation takes time, keep using this computer on other tasks,"
+#.       _message "once done you will be asked to choose a password for your tomb."
+#.       _message "To make it faster you can move the mouse around."
+#. >     _message "If you are on a server, you can use an Entropy Generation Daemon."
+#.   
+#.       # Use /dev/random as the entropy source, unless --use-random is specified
+#.       local random_source=/dev/random
+#.       { option_is_set --use-urandom } && random_source=/dev/urandom
+#: tomb:1435
 msgid "If you are on a server, you can use an Entropy Generation Daemon."
 msgstr ""
 
-#: warning
-msgid "Cannot generate encryption key."
-msgstr ""
-
-#: success
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       [[ $? == 0 ]] || {
+#.           _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.   
+#.       # Here the global variable TOMBSECRET contains the naked secret
+#.   
+#. >     _success "Choose the  password of your key: ::1 tomb key::" $TOMBKEYFILE
+#.       _message "(You can also change it later using 'tomb passwd'.)"
+#.       # _user_file $TOMBKEYFILE
+#.   
+#.       tombname="$TOMBKEYFILE" # XXX ???
+#: tomb:1449
 msgid "Choose the  password of your key: ::1 tomb key::"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           _warning "Cannot generate encryption key."
+#.           _failure "Operation aborted." }
+#.   
+#.       # Here the global variable TOMBSECRET contains the naked secret
+#.   
+#.       _success "Choose the  password of your key: ::1 tomb key::" $TOMBKEYFILE
+#. >     _message "(You can also change it later using 'tomb passwd'.)"
+#.       # _user_file $TOMBKEYFILE
+#.   
+#.       tombname="$TOMBKEYFILE" # XXX ???
+#.       # the gen_key() function takes care of the new key's encryption
+#: tomb:1450
 msgid "(You can also change it later using 'tomb passwd'.)"
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.   
+#.       # load the key contents (set global variable)
+#.       TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.   
+#.       # this does a check on the file header
+#.       is_valid_key $TOMBKEY || {
+#. >         _warning "The key does not seem to be valid."
+#.           _warning "Dumping contents to screen:"
+#.           print "${mapfile[$TOMBKEY]}"
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#: tomb:1468
 msgid "The key does not seem to be valid."
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.       # load the key contents (set global variable)
+#.       TOMBKEY="${mapfile[$TOMBKEYFILE]}"
+#.   
+#.       # this does a check on the file header
+#.       is_valid_key $TOMBKEY || {
+#.           _warning "The key does not seem to be valid."
+#. >         _warning "Dumping contents to screen:"
+#.           print "${mapfile[$TOMBKEY]}"
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#: tomb:1469
 msgid "Dumping contents to screen:"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           _warning "--"
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#. >     _message "Done forging ::1 key file::" $TOMBKEYFILE
+#.       _success "Your key is ready:"
+#.       ls -lh $TOMBKEYFILE
+#.   }
+#.   
+#: tomb:1477
 msgid "Done forging ::1 key file::"
 msgstr ""
 
-#: success
+#. Fold: Create
+#. Function: forge_key
+#.
+#. Code sample:
+#.           sudo umount ${keytmp}
+#.           rm -r $keytmp
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _message "Done forging ::1 key file::" $TOMBKEYFILE
+#. >     _success "Your key is ready:"
+#.       ls -lh $TOMBKEYFILE
+#.   }
+#.   
+#.   # Step three -- Lock tomb
+#: tomb:1478
 msgid "Your key is ready:"
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       # for more alternatives refer to cryptsetup(8)
+#.       local cipher="aes-xts-plain64:sha256"
+#.   
+#.       local tombpath="$1"      # First argument is the path to the tomb
+#.   
+#.       [[ -n $tombpath ]] || {
+#. >         _warning "No tomb specified for locking."
+#.           _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#: tomb:1498
 msgid "No tomb specified for locking."
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       local cipher="aes-xts-plain64:sha256"
+#.   
+#.       local tombpath="$1"      # First argument is the path to the tomb
+#.   
+#.       [[ -n $tombpath ]] || {
+#.           _warning "No tomb specified for locking."
+#. >         _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#.       _plot $tombpath
+#: tomb:1499
 msgid "Usage: tomb lock file.tomb file.tomb.key"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Usage: tomb lock file.tomb file.tomb.key"
+#.           return 1
+#.       }
+#.   
+#.       _plot $tombpath
+#.   
+#. >     _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
+#.   
+#.       [[ -f $TOMBPATH ]] || {
+#.           _failure "There is no tomb here. You have to dig it first." }
+#.   
+#: tomb:1505
 msgid "Commanded to lock tomb ::1 tomb file::"
 msgstr ""
 
-#: failure
-msgid "There is no tomb here. You have to it dig first."
-msgstr ""
-
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _plot $tombpath
+#.   
+#.       _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
+#.   
+#.       [[ -f $TOMBPATH ]] || {
+#. >         _failure "There is no tomb here. You have to dig it first." }
+#.   
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       lo_mount $TOMBPATH
+#: tomb:1508
+msgid "There is no tomb here. You have to dig it first."
+msgstr ""
+
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#.       _verbose "Loop mounted on ::1 mount point::" $nstloop
+#.   
+#. >     _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#: tomb:1517
 msgid "Checking if the tomb is empty (we never step on somebody else's bones)."
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       _verbose "Loop mounted on ::1 mount point::" $nstloop
+#.   
+#.       _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#. >         _warning "The tomb was already locked with another key."
+#.           _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#.           _message "Fine, this tomb seems empty."
+#.       fi
+#: tomb:1521
 msgid "The tomb was already locked with another key."
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Checking if the tomb is empty (we never step on somebody else's bones)."
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#. >         _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#.           _message "Fine, this tomb seems empty."
+#.       fi
+#.   
+#: tomb:1522
 msgid "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       if [ $? = 0 ]; then
+#.           # is it a LUKS encrypted nest? then bail out and avoid reformatting it
+#.           _warning "The tomb was already locked with another key."
+#.           _failure "Operation aborted. I cannot lock an already locked tomb. Go dig a new one."
+#.       else
+#. >         _message "Fine, this tomb seems empty."
+#.       fi
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#: tomb:1524
 msgid "Fine, this tomb seems empty."
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _load_key    # Try loading key from option -k and set TOMBKEYFILE
+#.   
+#.       # the encryption cipher for a tomb can be set when locking using -c
+#.       { option_is_set -o } && algopt="$(option_value -o)"
+#.       [[ -n "$algopt" ]] && cipher=$algopt
+#. >     _message "Locking using cipher: ::1 cipher::" $cipher
+#.   
+#.       # get the pass from the user and check it
+#.       if option_is_set --tomb-pwd; then
+#.           tomb_pwd="`option_value --tomb-pwd`"
+#: tomb:1532
 msgid "Locking using cipher: ::1 cipher::"
 msgstr ""
 
-#: success
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           ask_key_password "$tomb_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#. >     _success "Locking ::1 tomb file:: with ::2 tomb key file::" $TOMBFILE $TOMBKEYFILE
+#.   
+#.       _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode \
+#.           --cipher ${cipher} --key-size 256 --key-slot 0 \
+#: tomb:1544
 msgid "Locking ::1 tomb file:: with ::2 tomb key file::"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _success "Locking ::1 tomb file:: with ::2 tomb key file::" $TOMBFILE $TOMBKEYFILE
+#.   
+#. >     _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode \
+#.           --cipher ${cipher} --key-size 256 --key-slot 0 \
+#.           luksFormat ${nstloop}
+#.       [[ $? == 0 ]] || {
+#: tomb:1546
 msgid "Formatting Luks mapped device."
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Formatting Luks mapped device."
+#.       _cryptsetup --batch-mode \
+#.           --cipher ${cipher} --key-size 256 --key-slot 0 \
+#.           luksFormat ${nstloop}
+#.       [[ $? == 0 ]] || {
+#. >         _warning "cryptsetup luksFormat returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#: tomb:1551
 msgid "cryptsetup luksFormat returned an error."
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.       [[ $? == 0 ]] || {
+#.           _warning "cryptsetup luksFormat returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#. >         _warning "cryptsetup luksOpen returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#: tomb:1556
 msgid "cryptsetup luksOpen returned an error."
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _cryptsetup --cipher ${cipher} luksOpen ${nstloop} tomb.tmp
+#.       [[ $? == 0 ]] || {
+#.           _warning "cryptsetup luksOpen returned an error."
+#.           _failure "Operation aborted." }
+#.   
+#. >     _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _warning "Tomb format returned an error."
+#: tomb:1559
 msgid "Formatting your Tomb with Ext3/Ext4 filesystem."
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _failure "Operation aborted." }
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _warning "Tomb format returned an error."
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#: tomb:1563
 msgid "Tomb format returned an error."
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.   
+#.       _message "Formatting your Tomb with Ext3/Ext4 filesystem."
+#.       ${=MKFS} $TOMBNAME /dev/mapper/tomb.tmp
+#.   
+#.       [[ $? == 0 ]] || {
+#.           _warning "Tomb format returned an error."
+#. >         _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#: tomb:1564
 msgid "Your tomb ::1 tomb file:: may be corrupted."
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Tomb format returned an error."
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#. >     _message "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::" $TOMBNAME $cipher
+#.       _success "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::" \
+#.           $TOMBPATH $TOMBKEYFILE
+#.   
+#.   }
+#: tomb:1569
 msgid "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::"
 msgstr ""
 
-#: success
+#. Fold: Create
+#. Function: lock_tomb_with_key
+#.
+#. Code sample:
+#.           _warning "Your tomb ::1 tomb file:: may be corrupted." $TOMBFILE }
+#.   
+#.       # Sync
+#.       sudo cryptsetup luksClose tomb.tmp
+#.   
+#.       _message "Done locking ::1 tomb name:: using Luks dm-crypt ::2 cipher::" $TOMBNAME $cipher
+#. >     _success "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::" \
+#.           $TOMBPATH $TOMBKEYFILE
+#.   
+#.   }
+#.   
+#: tomb:1570
 msgid "Your tomb is ready in ::1 tomb path:: and secured with key ::2 tomb key::"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.   # This function changes the key that locks a tomb
+#.   change_tomb_key() {
+#.       local tombkey="$1"      # Path to the tomb's key file
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#. >     _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#: tomb:1580
 msgid "Commanded to reset key for tomb ::1 tomb path::"
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       local tombkey="$1"      # Path to the tomb's key file
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#. >         _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#.           _failure "Execution aborted."
+#.       }
+#.   
+#: tomb:1583
 msgid "Command 'setkey' needs two arguments: the old key file and the tomb."
 msgstr ""
 
-#: warning
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       local tombpath="$2"     # Path to the tomb
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#. >         _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#.           _failure "Execution aborted."
+#.       }
+#.   
+#.       _check_swap
+#: tomb:1584
 msgid "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       _message "Commanded to reset key for tomb ::1 tomb path::" $tombpath
+#.   
+#.       [[ -z "$tombpath" ]] && {
+#.           _warning "Command 'setkey' needs two arguments: the old key file and the tomb."
+#.           _warning "I.e:  tomb -k new.tomb.key old.tomb.key secret.tomb"
+#. >         _failure "Execution aborted."
+#.       }
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#: tomb:1585
 msgid "Execution aborted."
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.       sudo cryptsetup isLuks ${nstloop}
+#.       # is it a LUKS encrypted nest? we check one more time
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Not a valid LUKS encrypted volume: ::1 volume::" $TOMBPATH }
+#.   
+#.       _load_key $tombkey    # Try loading given key and set TOMBKEY and
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#: tomb:1596
 msgid "Not a valid LUKS encrypted volume: ::1 volume::"
 msgstr ""
 
-#: success
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       _load_key $tombkey    # Try loading given key and set TOMBKEY and
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#.       local oldkeyfile=$TOMBKEYFILE
+#.   
+#.       # we have everything, prepare to mount
+#. >     _success "Changing lock on tomb ::1 tomb name::" $TOMBNAME
+#.       _message "Old key: ::1 old key::" $oldkeyfile
+#.   
+#.       # render the mapper
+#.       mapdate=`date +%s`
+#: tomb:1604
 msgid "Changing lock on tomb ::1 tomb name::"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       # TOMBKEYFILE
+#.       local oldkey=$TOMBKEY
+#.       local oldkeyfile=$TOMBKEYFILE
+#.   
+#.       # we have everything, prepare to mount
+#.       _success "Changing lock on tomb ::1 tomb name::" $TOMBNAME
+#. >     _message "Old key: ::1 old key::" $oldkeyfile
+#.   
+#.       # render the mapper
+#.       mapdate=`date +%s`
+#.       # save date of mount in minutes since 1970
+#: tomb:1605
 msgid "Old key: ::1 old key::"
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _verbose "tomb-old-pwd = ::1 old pass::" $tomb_old_pwd
+#.           ask_key_password "$tomb_old_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || {
+#. >         _failure "No valid password supplied for the old key." }
+#.       old_secret=$TOMBSECRET
+#.   
+#.       # luksOpen the tomb (not really mounting, just on the loopback)
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - \
+#: tomb:1621
 msgid "No valid password supplied for the old key."
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _failure "No valid password supplied for the old key." }
+#.       old_secret=$TOMBSECRET
+#.   
+#.       # luksOpen the tomb (not really mounting, just on the loopback)
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - \
+#.           luksOpen ${nstloop} ${mapper}
+#. >     [[ $? == 0 ]] || _failure "Unexpected error in luksOpen."
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#.       _message "New key: ::1 key file::" $TOMBKEYFILE
+#: tomb:1627
 msgid "Unexpected error in luksOpen."
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - \
+#.           luksOpen ${nstloop} ${mapper}
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksOpen."
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#. >     _message "New key: ::1 key file::" $TOMBKEYFILE
+#.   
+#.       if option_is_set --tomb-pwd; then
+#.           tomb_new_pwd="`option_value --tomb-pwd`"
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_new_pwd
+#: tomb:1631
 msgid "New key: ::1 key file::"
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_new_pwd
+#.           ask_key_password "$tomb_new_pwd"
+#.       else
+#.           ask_key_password
+#.       fi
+#.       [[ $? == 0 ]] || {
+#. >         _failure "No valid password supplied for the new key." }
+#.   
+#.       _tmp_create
+#.       tmpnewkey=$TOMBTMP
+#.       print -R -n - "$TOMBSECRET" >> $tmpnewkey
+#: tomb:1641
 msgid "No valid password supplied for the new key."
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.       tmpnewkey=$TOMBTMP
+#.       print -R -n - "$TOMBSECRET" >> $tmpnewkey
+#.   
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - \
+#.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#. >     [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#: tomb:1650
 msgid "Unexpected error in luksChangeKey."
 msgstr ""
 
-#: failure
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       print -R -n - "$old_secret" | sudo cryptsetup --key-file - \
+#.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#. >     sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#.       _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#: tomb:1652
 msgid "Unexpected error in luksClose."
 msgstr ""
 
-#: success
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.           luksChangeKey "$nstloop" "$tmpnewkey"
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#. >     _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#.       _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#.       return 0
+#.   }
+#: tomb:1654
 msgid "Succesfully changed key for tomb: ::1 tomb file::"
 msgstr ""
 
-#: message
+#. Fold: Create
+#. Function: change_tomb_key
+#.
+#. Code sample:
+#.   
+#.       [[ $? == 0 ]] || _failure "Unexpected error in luksChangeKey."
+#.   
+#.       sudo cryptsetup luksClose "${mapper}" || _failure "Unexpected error in luksClose."
+#.   
+#.       _success "Succesfully changed key for tomb: ::1 tomb file::" $TOMBFILE
+#. >     _message "The new key is: ::1 new key::" $TOMBKEYFILE
+#.   
+#.       return 0
+#.   }
+#.   
+#: tomb:1655
 msgid "The new key is: ::1 new key::"
 msgstr ""
 
-#: failure
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.   # {{{ Open
+#.   
+#.   # $1 = tombfile $2(optional) = mountpoint
+#.   mount_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#. >     [[ -n "$tombpath" ]] || _failure "No tomb name specified for opening."
+#.   
+#.       _message "Commanded to open tomb ::1 tomb name::" $1
+#.   
+#.       _check_swap
+#: tomb:1667
 msgid "No tomb name specified for opening."
 msgstr ""
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.   # $1 = tombfile $2(optional) = mountpoint
+#.   mount_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.       [[ -n "$tombpath" ]] || _failure "No tomb name specified for opening."
+#.   
+#. >     _message "Commanded to open tomb ::1 tomb name::" $1
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#.   
+#: tomb:1669
 msgid "Commanded to open tomb ::1 tomb name::"
 msgstr ""
 
-#: warning
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       _check_swap
+#.       is_valid_tomb $tombpath
+#.   
+#.       # check file type (if its a Luks fs)
+#.       [[ "`file $TOMBPATH`" =~ "luks encrypted file" ]] || {
+#. >         _warning "::1 tomb file:: is not a valid tomb file" $TOMBFILE
+#.           _failure "Operation aborted."
+#.       }
+#.   
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#: tomb:1676
 msgid "::1 tomb file:: is not a valid tomb file"
 msgstr ""
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       _verbose "Tomb found: ::1 tomb path::" $TOMBPATH
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#.   
+#.       tombmount=${2:-/media/$TOMBFILE}
+#.       [[ -z "$2" ]] && {
+#. >         _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#: tomb:1686
 msgid "Mountpoint not specified, using default: ::1 mount point::"
 msgstr ""
 
-#: warning
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       tombmount=${2:-/media/$TOMBFILE}
+#.       [[ -z "$2" ]] && {
+#.           _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#. >         _warning "::1 tomb name:: is already open." $TOMBNAME
+#.           _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#: tomb:1690
 msgid "::1 tomb name:: is already open."
 msgstr ""
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       [[ -z "$2" ]] && {
+#.           _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount }
+#.   
+#.       # Check if its already open
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#. >         _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#.       _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#: tomb:1691
 msgid "Here below its status is reported:"
 msgstr ""
 
-#: success
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       [[ "`mount -l`" -regex-match "${TOMBFILE}.*\[$TOMBNAME\]" ]] && {
+#.           _warning "::1 tomb name:: is already open." $TOMBNAME
+#.           _message "Here below its status is reported:"
+#.           list_tombs $TOMBNAME
+#.           return 0 }
+#.   
+#. >     _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#: tomb:1695
 msgid "Opening ::1 tomb file:: on ::2 mount point::"
 msgstr ""
 
-#: failure
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       lo_mount $TOMBPATH
+#.       nstloop=`lo_new`
+#.   
+#.       sudo cryptsetup isLuks ${nstloop} || {
+#.           # is it a LUKS encrypted nest? see cryptsetup(1)
+#. >         _failure "::1 tomb file:: is not a valid Luks encrypted storage file." $TOMBFILE }
+#.   
+#.       _message "This tomb is a valid LUKS encrypted device."
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#: tomb:1702
 msgid "::1 tomb file:: is not a valid Luks encrypted storage file."
 msgstr ""
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       nstloop=`lo_new`
+#.   
+#.       sudo cryptsetup isLuks ${nstloop} || {
+#.           # is it a LUKS encrypted nest? see cryptsetup(1)
+#.           _failure "::1 tomb file:: is not a valid Luks encrypted storage file." $TOMBFILE }
+#.   
+#. >     _message "This tomb is a valid LUKS encrypted device."
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#.       tombdump=(`print $luksdump | awk '
+#.           /^Cipher name/ {print $3}
+#: tomb:1704
 msgid "This tomb is a valid LUKS encrypted device."
 msgstr ""
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       luksdump="`sudo cryptsetup luksDump ${nstloop}`"
+#.       tombdump=(`print $luksdump | awk '
+#.           /^Cipher name/ {print $3}
+#.           /^Cipher mode/ {print $3}
+#.           /^Hash spec/   {print $3}'`)
+#. >     _message "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\"" $tombdump[1] $tombdump[2] $tombdump[3]
+#.   
+#.       slotwarn=`print $luksdump | awk '
+#.           BEGIN { zero=0 }
+#.           /^Key slot 0/ { zero=1 }
+#: tomb:1711
 msgid "Cipher is \"::1 cipher::\" mode \"::2 mode::\" hash \"::3 hash::\""
 msgstr ""
 
-#: warning
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       slotwarn=`print $luksdump | awk '
+#.           BEGIN { zero=0 }
+#.           /^Key slot 0/ { zero=1 }
+#.           /^Key slot.*ENABLED/ { if(zero==1) print "WARN" }'`
+#.       [[ "$slotwarn" == "WARN" ]] && {
+#. >         _warning "Multiple key slots are enabled on this tomb. Beware: there can be a backdoor." }
+#.   
+#.       # save date of mount in minutes since 1970
+#.       mapdate=`date +%s`
+#.   
+#: tomb:1718
 msgid "Multiple key slots are enabled on this tomb. Beware: there can be a backdoor."
 msgstr ""
 
-#: failure
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           ask_key_password
+#.       }
+#.       [[ $? == 0 ]] || _failure "No valid password supplied."
+#.   
+#.       _cryptsetup luksOpen ${nstloop} ${mapper}
+#.       [[ $? = 0 ]] || {
+#. >         _failure "Failure mounting the encrypted file." }
+#.   
+#.       # preserve the loopdev after exit
+#.       lo_preserve "$nstloop"
+#.   
+#: tomb:1742
 msgid "Failure mounting the encrypted file."
 msgstr ""
 
-#: success
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       # array: [ cipher, keysize, loopdevice ]
+#.       tombstat=(`sudo cryptsetup status ${mapper} | awk '
+#.       /cipher:/  {print $2}
+#.       /keysize:/ {print $2}
+#.       /device:/  {print $2}'`)
+#. >     _success "Success unlocking tomb ::1 tomb name::" $TOMBNAME
+#.       _verbose "Key size is ::1 size:: for cipher ::2 cipher::" $tombstat[2] $tombstat[1]
+#.   
+#.       _message "Checking filesystem via ::1::" $tombstat[3]
+#.       sudo fsck -p -C0 /dev/mapper/${mapper}
+#: tomb:1752
 msgid "Success unlocking tomb ::1 tomb name::"
 msgstr ""
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       /cipher:/  {print $2}
+#.       /keysize:/ {print $2}
+#.       /device:/  {print $2}'`)
+#.       _success "Success unlocking tomb ::1 tomb name::" $TOMBNAME
+#.       _verbose "Key size is ::1 size:: for cipher ::2 cipher::" $tombstat[2] $tombstat[1]
+#.   
+#. >     _message "Checking filesystem via ::1::" $tombstat[3]
+#.       sudo fsck -p -C0 /dev/mapper/${mapper}
+#.       _verbose "Tomb engraved as ::1 tomb name::" $TOMBNAME
+#.       sudo tune2fs -L $TOMBNAME /dev/mapper/${mapper} > /dev/null
+#.   
+#: tomb:1755
 msgid "Checking filesystem via ::1::"
 msgstr ""
 
-#: success
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   
+#.       # TODO: safety check MOUNTOPTS
+#.       # safe_mount_options && \
+#.       sudo mount -o $MOUNTOPTS /dev/mapper/${mapper} ${tombmount}
+#.       # Clean up if the mount failed
+#.       [[ $? == 0 ]] || {
+#. > 	_warning "Error mounting ::1 mapper:: on ::2 tombmount::" $mapper $tombmount
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && \
+#.   	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#: tomb:1773
+msgid "Error mounting ::1 mapper:: on ::2 tombmount::"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.       # safe_mount_options && \
+#.       sudo mount -o $MOUNTOPTS /dev/mapper/${mapper} ${tombmount}
+#.       # Clean up if the mount failed
+#.       [[ $? == 0 ]] || {
+#.   	_warning "Error mounting ::1 mapper:: on ::2 tombmount::" $mapper $tombmount
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && \
+#. > 	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#.   	[[ -e /dev/mapper/$mapper ]] && sudo cryptsetup luksClose $mapper
+#.   	# The loop is taken care of in _endgame()
+#: tomb:1775
+msgid "Are mount options '::1 mount options::' valid?"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   	[[ $oldmountopts != $MOUNTOPTS ]] && \
+#.   	    _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS
+#.   	# TODO: move cleanup to _endgame()
+#.   	[[ -d $tombmount ]] && rmdir $tombmount
+#.   	[[ -e /dev/mapper/$mapper ]] && sudo cryptsetup luksClose $mapper
+#.   	# The loop is taken care of in _endgame()
+#. > 	_failure "Cannot mount ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       sudo chown $UID:$GID ${tombmount}
+#.       sudo chmod 0711 ${tombmount}
+#: tomb:1780
+msgid "Cannot mount ::1 tomb name::"
+msgstr ""
+
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.   	_failure "Cannot mount ::1 tomb name::" $TOMBNAME
+#.       }
+#.   
+#.       sudo chown $UID:$GID ${tombmount}
+#.       sudo chmod 0711 ${tombmount}
+#.   
+#. >     _success "Success opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount
+#.   
+#.       local tombtty tombhost tombuid tombuser
+#.   
+#.       # print out when was opened the last time, by whom and where
+#: tomb:1786
 msgid "Success opening ::1 tomb file:: on ::2 mount point::"
 msgstr ""
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           tombuid=$(_cat ${tombmount}/.uid | tr -d ' ')
+#.           tomblast=$(_cat ${tombmount}/.last | tr -d ' ')
+#.           for e in ${(f@)mapfile[/etc/passwd]}; do
+#.               [[ "$e" =~ ":$tombuid:" ]] && {
+#.                   tombuser="${e[(ws@:@)1]}" }
+#.           done
+#. >         _message "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::" $tombuser $tombuid $tombtty $tombhost
+#.           _message "on date ::1 date::" "`date --date=@${tomblast} +%c`"
+#.       }
+#.       # write down the UID and TTY that opened the tomb
+#.       rm -f ${tombmount}/.uid
+#: tomb:1800
 msgid "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::"
 msgstr ""
 
-#: message
+#. Fold: Open
+#. Function: mount_tomb
+#.
+#. Code sample:
+#.           tomblast=$(_cat ${tombmount}/.last | tr -d ' ')
+#.           for e in ${(f@)mapfile[/etc/passwd]}; do
+#.               [[ "$e" =~ ":$tombuid:" ]] && {
+#.                   tombuser="${e[(ws@:@)1]}" }
+#.           done
+#.           _message "Last visit by ::1 user::(::2 tomb build::) from ::3 tty:: on ::4 host::" $tombuser $tombuid $tombtty $tombhost
+#. >         _message "on date ::1 date::" "`date --date=@${tomblast} +%c`"
+#.       }
+#.       # write down the UID and TTY that opened the tomb
+#.       rm -f ${tombmount}/.uid
+#.       print $_UID > ${tombmount}/.uid
+#: tomb:1801
 msgid "on date ::1 date::"
 msgstr ""
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.   
+#.       # Default mount options are overridden with the -o switch
+#.       [[ -n ${(k)OPTS[-o]} ]] && MOUNTOPTS=${OPTS[-o]}
+#.   
+#.       # No HOME set? Note: this should never happen again.
+#.       [[ -z $HOME ]] && {
+#. >         _warning "How pitiful!  A tomb, and no HOME."
+#.           return 1 }
+#.   
+#.       [[ -z $mnt || ! -d $mnt ]] && {
+#.           _warning "Cannot exec bind hooks without a mounted tomb."
+#: tomb:1849
 msgid "How pitiful!  A tomb, and no HOME."
 msgstr ""
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       # No HOME set? Note: this should never happen again.
+#.       [[ -z $HOME ]] && {
+#.           _warning "How pitiful!  A tomb, and no HOME."
+#.           return 1 }
+#.   
+#.       [[ -z $mnt || ! -d $mnt ]] && {
+#. >         _warning "Cannot exec bind hooks without a mounted tomb."
+#.           return 1 }
+#.   
+#.       [[ -r "$mnt/bind-hooks" ]] || {
+#.           _verbose "bind-hooks not found in ::1 mount point::" $mnt
+#: tomb:1853
 msgid "Cannot exec bind hooks without a mounted tomb."
 msgstr ""
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       # better parsing for bind hooks checks for two separated words on
+#.       # each line, using zsh word separator array subscript
+#.       _bindhooks="${mapfile[${mnt}/bind-hooks]}"
+#.       for h in ${(f)_bindhooks}; do
+#.           s="${h[(w)1]}"
+#.           d="${h[(w)2]}"
+#. >         [[ "$s" = "" ]] && { _warning "bind-hooks file is broken"; return 1 }
+#.           [[ "$d" = "" ]] && { _warning "bind-hooks file is broken"; return 1 }
+#.           maps+=($s $d)
+#.           _verbose "bind-hook found: $s -> $d"
+#.       done
+#: tomb:1869
 msgid "bind-hooks file is broken"
 msgstr ""
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.           _verbose "bind-hook found: $s -> $d"
+#.       done
+#.       unset _bindhooks
+#.   
+#.       for dir in ${(k)maps}; do
+#.           [[ "${dir[1]}" == "/" || "${dir[1,2]}" == ".." ]] && {
+#. >             _warning "bind-hooks map format: local/to/tomb local/to/\$HOME"
+#.               continue }
+#.   
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#: tomb:1878
 msgid "bind-hooks map format: local/to/tomb local/to/$HOME"
 msgstr ""
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.       for dir in ${(k)maps}; do
+#.           [[ "${dir[1]}" == "/" || "${dir[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME"
+#.               continue }
+#.   
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#. >             _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#: tomb:1882
 msgid "bind-hooks map format: local/to/tomb local/to/$HOME.  Rolling back"
 msgstr ""
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.           [[ "${${maps[$dir]}[1]}" == "/" || "${${maps[$dir]}[1,2]}" == ".." ]] && {
+#.               _warning "bind-hooks map format: local/to/tomb local/to/\$HOME.  Rolling back"
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#. >             _warning "bind-hook target not existent, skipping ::1 home::/::2 subdir::" $HOME ${maps[$dir]}
+#.           elif [[ ! -r "$mnt/$dir" ]]; then
+#.               _warning "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::" $mnt $dir
+#.           else
+#.               sudo mount -o bind,$MOUNTOPTS $mnt/$dir $HOME/${maps[$dir]} \
+#: tomb:1887
 msgid "bind-hook target not existent, skipping ::1 home::/::2 subdir::"
 msgstr ""
 
-#: warning
+#. Fold: Open
+#. Function: exec_safe_bind_hooks
+#.
+#. Code sample:
+#.               for dir in ${mounted}; do sudo umount $dir; done
+#.               return 1 }
+#.   
+#.           if [[ ! -r "$HOME/${maps[$dir]}" ]]; then
+#.               _warning "bind-hook target not existent, skipping ::1 home::/::2 subdir::" $HOME ${maps[$dir]}
+#.           elif [[ ! -r "$mnt/$dir" ]]; then
+#. >             _warning "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::" $mnt $dir
+#.           else
+#.               sudo mount -o bind,$MOUNTOPTS $mnt/$dir $HOME/${maps[$dir]} \
+#.                   && mounted+=("$HOME/${maps[$dir]}")
+#.           fi
+#: tomb:1889
 msgid "bind-hook source not found in tomb, skipping ::1 mount point::/::2 subdir::"
 msgstr ""
 
-#: success
+#. Fold: Open
+#. Function: exec_safe_post_hooks
+#.
+#. Code sample:
+#.       # Only run if post-hooks has the executable bit set
+#.       [[ -x $mnt/post-hooks ]] || return
+#.   
+#.       # If the file starts with a shebang, run it.
+#.       cat $mnt/post-hooks | head -n1 | grep '^#!\s*/' &> /dev/null
+#.       [[ $? == 0 ]] && {
+#. >         _success "Post hooks found, executing as user ::1 user name::." $USERNAME
+#.           $mnt/post-hooks $act $mnt
+#.       }
+#.   }
+#.   
+#: tomb:1917
 msgid "Post hooks found, executing as user ::1 user name::."
 msgstr ""
 
-#: failure
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.       local tombname tombmount tombfs tombfsopts tombloop
+#.       local ts tombtot tombused tombavail tombpercent tombp tombsince
+#.       local tombtty tombhost tombuid tombuser
+#.       # list all open tombs
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#. >         _failure "I can't see any ::1 status:: tomb, may they all rest in peace." ${1:-open} }
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#: tomb:1936
 msgid "I can't see any ::1 status:: tomb, may they all rest in peace."
 msgstr ""
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.                       tombuser="${ee[(ws@:@)1]}" }
+#.               done
+#.           }
+#.   
+#.           { option_is_set --get-mountpoint } && { print $tombmount; continue }
+#.   
+#. >         _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" \
+#.               $tombname $tombmount $tombfsopts
+#.   
+#.           _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#: tomb:1969
 msgid "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::"
 msgstr ""
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.   
+#.           { option_is_set --get-mountpoint } && { print $tombmount; continue }
+#.   
+#.           _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" \
+#.               $tombname $tombmount $tombfsopts
+#.   
+#. >         _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#.               _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" \
+#.                   $tombname $tombuser $tombtty $tombhost
+#: tomb:1972
 msgid "::1 tombname:: open since ::2 tombsince::"
 msgstr ""
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.           _message "::1 tombname:: open on ::2 tombmount:: using ::3 tombfsopts::" \
+#.               $tombname $tombmount $tombfsopts
+#.   
+#.           _message "::1 tombname:: open since ::2 tombsince::" $tombname $tombsince
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#. >             _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" \
+#.                   $tombname $tombuser $tombtty $tombhost
+#.           }
+#.   
+#.           _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " \
+#: tomb:1975
 msgid "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::"
 msgstr ""
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.   
+#.           [[ -z "$tombtty" ]] || {
+#.               _message "::1 tombname:: open by ::2 tombuser:: from ::3 tombtty:: on ::4 tombhost::" \
+#.                   $tombname $tombuser $tombtty $tombhost
+#.           }
+#.   
+#. >         _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " \
+#.               $tombname $tombtot $tombused $tombavail $tombpercent
+#.   
+#.           [[ ${tombp} -ge 90 ]] && {
+#.               _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#: tomb:1979
 msgid "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free "
 msgstr ""
 
-#: warning
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.           }
+#.   
+#.           _message "::1 tombname:: size ::2 tombtot:: of which ::3 tombused:: (::5 tombpercent::%) is used: ::4 tombavail:: free " \
+#.               $tombname $tombtot $tombused $tombavail $tombpercent
+#.   
+#.           [[ ${tombp} -ge 90 ]] && {
+#. >             _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#.           }
+#.   
+#.           # Now check hooks
+#.           mounted_hooks=(`list_tomb_binds $tombname`)
+#: tomb:1983
 msgid "::1 tombname:: warning: your tomb is almost full!"
 msgstr ""
 
-#: message
+#. Fold: List
+#. Function: list_tombs
+#.
+#. Code sample:
+#.               _warning "::1 tombname:: warning: your tomb is almost full!" $tombname
+#.           }
+#.   
+#.           # Now check hooks
+#.           mounted_hooks=(`list_tomb_binds $tombname`)
+#.           for h in ${mounted_hooks}; do
+#. >             _message "::1 tombname:: hooks ::2 hookname:: on ::3 hookdest::" \
+#.                   $tombname "`basename ${h[(ws:;:)1]}`" ${h[(ws:;:)2]}
+#.           done
+#.       done
+#.   }
+#: tomb:1989
 msgid "::1 tombname:: hooks ::2 hookname:: on ::3 hookdest::"
 msgstr ""
 
-#: failure
+#. Fold: List
+#. Function: list_tomb_binds
+#.
+#. Code sample:
+#.   # list_tomb_binds
+#.   # print out an array of mounted bind hooks (internal use)
+#.   # format is semi-colon separated list of attributes
+#.   # needs an argument: name of tomb whose hooks belong
+#.   list_tomb_binds() {
+#.       [[ -z "$1" ]] && {
+#. >         _failure "Internal error: list_tomb_binds called without argument." }
+#.   
+#.       # list bind hooks on util-linux 2.20 (Debian 7)
+#.       mount -l \
+#.           | awk -vtomb="$1" '
+#: tomb:2044
 msgid "Internal error: list_tomb_binds called without argument."
 msgstr ""
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   # {{{ Index and search
+#.   
+#.   # index files in all tombs for search
+#.   # $1 is optional, to specify a tomb
+#.   index_tombs() {
+#.       { command -v updatedb 1>/dev/null 2>/dev/null } || {
+#. >         _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#.           _warning "Cannot use GNU findutils for index/search commands." }
+#: tomb:2076
 msgid "Cannot index tombs on this system: updatedb (mlocate) not installed."
 msgstr ""
 
-#: warning
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   index_tombs() {
+#.       { command -v updatedb 1>/dev/null 2>/dev/null } || {
+#.           _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#. >         _warning "Cannot use GNU findutils for index/search commands." }
+#.       [[ "$updatedbver" =~ "mlocate" ]] || {
+#.           _failure "Index command needs 'mlocate' to be installed." }
+#.   
+#.       _verbose "$updatedbver"
+#: tomb:2080
 msgid "Cannot use GNU findutils for index/search commands."
 msgstr ""
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           _failure "Cannot index tombs on this system: updatedb (mlocate) not installed." }
+#.   
+#.       updatedbver=`updatedb --version | grep '^updatedb'`
+#.       [[ "$updatedbver" =~ "GNU findutils" ]] && {
+#.           _warning "Cannot use GNU findutils for index/search commands." }
+#.       [[ "$updatedbver" =~ "mlocate" ]] || {
+#. >         _failure "Index command needs 'mlocate' to be installed." }
+#.   
+#.       _verbose "$updatedbver"
+#.   
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#: tomb:2082
 msgid "Index command needs 'mlocate' to be installed."
 msgstr ""
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.       _verbose "$updatedbver"
+#.   
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#. >             _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#.       _success "Creating and updating search indexes."
+#: tomb:2090
 msgid "There seems to be no open tomb engraved as [::1::]"
 msgstr ""
 
-#: failure
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.       mounted_tombs=(`list_tomb_mounts $1`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#.               _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#. >         _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#.       _success "Creating and updating search indexes."
+#.   
+#.       # start the LibreOffice document converter if installed
+#: tomb:2092
 msgid "I can't see any open tomb, may they all rest in peace."
 msgstr ""
 
-#: success
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           # Considering one tomb
+#.           [[ -n "$1" ]] && {
+#.               _failure "There seems to be no open tomb engraved as [::1::]" $1 }
+#.           # Or more
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#. >     _success "Creating and updating search indexes."
+#.   
+#.       # start the LibreOffice document converter if installed
+#.       { command -v unoconv 1>/dev/null 2>/dev/null } && {
+#.           unoconv -l 2>/dev/null &
+#: tomb:2094
 msgid "Creating and updating search indexes."
 msgstr ""
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.noindex ]] && {
+#. >             _message "Skipping ::1 tomb name:: (.noindex found)." $tombname
+#.               continue }
+#.           _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#: tomb:2107
 msgid "Skipping ::1 tomb name:: (.noindex found)."
 msgstr ""
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.noindex ]] && {
+#.               _message "Skipping ::1 tomb name:: (.noindex found)." $tombname
+#.               continue }
+#. >         _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#: tomb:2109
 msgid "Indexing ::1 tomb name:: filenames..."
 msgstr ""
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.               continue }
+#.           _message "Indexing ::1 tomb name:: filenames..." $tombname
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#. >             _message "Indexing ::1 tomb name:: contents..." $tombname
+#.               [[ -r ${tombmount}/.swishrc ]] || {
+#.                   _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc
+#.                   cat <<EOF > ${tombmount}/.swishrc
+#.   # index directives
+#: tomb:2114
 msgid "Indexing ::1 tomb name:: contents..."
 msgstr ""
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.           updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
+#.   
+#.           # here we use swish to index file contents
+#.           [[ $SWISH == 1 ]] && {
+#.               _message "Indexing ::1 tomb name:: contents..." $tombname
+#.               [[ -r ${tombmount}/.swishrc ]] || {
+#. >                 _message "Generating a new swish-e configuration file: ::1 swish conf::" ${tombmount}/.swishrc
+#.                   cat <<EOF > ${tombmount}/.swishrc
+#.   # index directives
+#.   DefaultContents TXT*
+#.   IndexDir $tombmount
+#: tomb:2116
 msgid "Generating a new swish-e configuration file: ::1 swish conf::"
 msgstr ""
 
-#: message
+#. Fold: Index and search
+#. Function: index_tombs
+#.
+#. Code sample:
+#.               }
+#.   
+#.               swish-e -c ${tombmount}/.swishrc -S fs -v3
+#.   
+#.           }
+#.   
+#. >         _message "Search index updated."
+#.       done
+#.   }
+#.   search_tombs() {
+#.       { command -v locate 1>/dev/null 2>/dev/null } || {
+#: tomb:2190
 msgid "Search index updated."
 msgstr ""
 
-#: success
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.   
+#.       # list all open tombs
+#.       mounted_tombs=(`list_tomb_mounts`)
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "I can't see any open tomb, may they all rest in peace." }
+#.   
+#. >     _success "Searching for: ::1::" ${(f)@}
+#.       for t in ${mounted_tombs}; do
+#.           _verbose "Checking for index: ::1::" ${t}
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#: tomb:2210
 msgid "Searching for: ::1::"
 msgstr ""
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.           _verbose "Checking for index: ::1::" ${t}
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.updatedb ]] && {
+#.               # Use mlocate to search hits on filenames
+#. >             _message "Searching filenames in tomb ::1 tomb name::" $tombname
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#.               _message "Matches found: ::1 matches::" \
+#.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#: tomb:2218
 msgid "Searching filenames in tomb ::1 tomb name::"
 msgstr ""
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.           tombname=${t[(ws:;:)5]}
+#.           tombmount=${t[(ws:;:)2]}
+#.           [[ -r ${tombmount}/.updatedb ]] && {
+#.               # Use mlocate to search hits on filenames
+#.               _message "Searching filenames in tomb ::1 tomb name::" $tombname
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#. >             _message "Matches found: ::1 matches::" \
+#.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#: tomb:2220
 msgid "Matches found: ::1 matches::"
 msgstr ""
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.               locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+#.               _message "Matches found: ::1 matches::" \
+#.                   $(locate -d ${tombmount}/.updatedb -e -i -c ${(f)@})
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#. >                 _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#: tomb:2225
 msgid "Searching contents in tomb ::1 tomb name::"
 msgstr ""
 
-#: warning
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.   
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#. >             _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#.       done
+#.       _message "Search completed."
+#.   }
+#: tomb:2228
 msgid "Skipping tomb ::1 tomb name::: not indexed."
 msgstr ""
 
-#: warning
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.               # Use swish-e to search over contents
+#.               [[ $SWISH == 1 && -r $tombmount/.swish ]] && {
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#. >             _warning "Run 'tomb index' to create indexes." }
+#.       done
+#.       _message "Search completed."
+#.   }
+#.   
+#: tomb:2229
 msgid "Run 'tomb index' to create indexes."
 msgstr ""
 
-#: message
+#. Fold: Index and search
+#. Function: search_tombs
+#.
+#. Code sample:
+#.                   _message "Searching contents in tomb ::1 tomb name::" $tombname
+#.                   swish-e -w ${=@} -f $tombmount/.swish -H0 }
+#.           } || {
+#.               _warning "Skipping tomb ::1 tomb name::: not indexed." $tombname
+#.               _warning "Run 'tomb index' to create indexes." }
+#.       done
+#. >     _message "Search completed."
+#.   }
+#.   
+#.   # }}} - Index and search
+#.   
+#: tomb:2231
 msgid "Search completed."
 msgstr ""
 
-#: message
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   # {{{ Resize
+#.   
+#.   # resize tomb file size
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#. >     _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#: tomb:2242
 msgid "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes."
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   # resize tomb file size
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#.       _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#. >     [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#: tomb:2244
 msgid "No tomb name specified for resizing."
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   resize_tomb() {
+#.       local tombpath="$1"    # First argument is the path to the tomb
+#.   
+#.       _message "Commanded to resize tomb ::1 tomb name:: to ::2 size:: megabytes." $1 $OPTS[-s]
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#. >     [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#.           _failure "Aborting operations: new size was not specified, use -s" }
+#: tomb:2245
 msgid "Cannot find ::1::"
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   
+#.       [[ -z "$tombpath" ]] && _failure "No tomb name specified for resizing."
+#.       [[ ! -r $tombpath ]] && _failure "Cannot find ::1::" $tombpath
+#.   
+#.       newtombsize="`option_value -s`"
+#.       [[ -z "$newtombsize" ]] && {
+#. >         _failure "Aborting operations: new size was not specified, use -s" }
+#.   
+#.       is_valid_tomb $tombpath        # Set TOMB{PATH,DIR,FILE,NAME}
+#.   
+#.       _load_key # Try loading new key from option -k and set TOMBKEYFILE
+#: tomb:2249
 msgid "Aborting operations: new size was not specified, use -s"
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       local oldtombsize=$(( `stat -c %s "$TOMBPATH" 2>/dev/null` / 1048576 ))
+#.       local mounted_tomb=`mount -l |
+#.           awk -vtomb="[$TOMBNAME]" '/^\/dev\/mapper\/tomb/ { if($7==tomb) print $1 }'`
+#.   
+#.       # Tomb must not be open
+#.       [[ -z "$mounted_tomb" ]] || {
+#. >         _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#: tomb:2261
 msgid "Please close the tomb ::1 tomb name:: before trying to resize it."
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.   
+#.       # Tomb must not be open
+#.       [[ -z "$mounted_tomb" ]] || {
+#.           _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#. >         _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#.       [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#: tomb:2264
 msgid "You must specify the new size of ::1 tomb name::"
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       [[ -z "$mounted_tomb" ]] || {
+#.           _failure "Please close the tomb ::1 tomb name:: before trying to resize it." $TOMBNAME }
+#.       # New tomb size must be specified
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#. >     [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#.           _failure "The new size must be greater then old tomb size." }
+#.   
+#: tomb:2266
 msgid "Size is not an integer."
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       [[ -n "$newtombsize" ]] || {
+#.           _failure "You must specify the new size of ::1 tomb name::" $TOMBNAME }
+#.       # New tomb size must be an integer
+#.       [[ $newtombsize == <-> ]] || _failure "Size is not an integer."
+#.       # Tombs can only grow in size
+#.       [[ "$newtombsize" -gt "$oldtombsize" ]] || {
+#. >         _failure "The new size must be greater then old tomb size." }
+#.   
+#.       delta="$(( $newtombsize - $oldtombsize ))"
+#.   
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $newtombsize
+#: tomb:2269
 msgid "The new size must be greater then old tomb size."
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       _message "Generating ::1 tomb file:: of ::2 size::MiB" $TOMBFILE $newtombsize
+#.   
+#.       _verbose "Data dump using ::1:: from /dev/urandom" ${DD[1]}
+#.       ${=DD} if=/dev/urandom bs=1048576 count=${delta} >> $TOMBPATH
+#.   
+#.       [[ $? == 0 ]] || {
+#. >         _failure "Error creating the extra resize ::1 size::, operation aborted." $tmp_resize }
+#.   
+#.       { option_is_set --tomb-pwd } && {
+#.           tomb_pwd="`option_value --tomb-pwd`"
+#.           _verbose "tomb-pwd = ::1 tomb pass::" $tomb_pwd
+#: tomb:2279
 msgid "Error creating the extra resize ::1 size::, operation aborted."
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.       mapper="tomb.$TOMBNAME.$mapdate.$(basename $nstloop)"
+#.   
+#.       _cryptsetup luksOpen ${nstloop} ${mapper} || {
+#.           _failure "Failure mounting the encrypted file." }
+#.   
+#.       sudo cryptsetup resize "${mapper}" || {
+#. >         _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#.           _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#: tomb:2300
 msgid "cryptsetup failed to resize ::1 mapper::"
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.           _failure "Failure mounting the encrypted file." }
+#.   
+#.       sudo cryptsetup resize "${mapper}" || {
+#.           _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#. >         _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#.       sudo resize2fs /dev/mapper/${mapper} || {
+#.           _failure "resize2fs failed to resize ::1 mapper::" $mapper }
+#.   
+#: tomb:2303
 msgid "e2fsck failed to check ::1 mapper::"
 msgstr ""
 
-#: failure
+#. Fold: Resize
+#. Function: resize_tomb
+#.
+#. Code sample:
+#.           _failure "cryptsetup failed to resize ::1 mapper::" $mapper }
+#.   
+#.       sudo e2fsck -p -f /dev/mapper/${mapper} || {
+#.           _failure "e2fsck failed to check ::1 mapper::" $mapper }
+#.   
+#.       sudo resize2fs /dev/mapper/${mapper} || {
+#. >         _failure "resize2fs failed to resize ::1 mapper::" $mapper }
+#.   
+#.       # close and free the loop device
+#.       sudo cryptsetup luksClose "${mapper}"
+#.   
+#: tomb:2306
 msgid "resize2fs failed to resize ::1 mapper::"
 msgstr ""
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           mounted_tombs=(`list_tomb_mounts`)
+#.       else
+#.           mounted_tombs=(`list_tomb_mounts $1`)
+#.       fi
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#. >         _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#.           _warning "Too many tombs mounted, please specify one (see tomb list)"
+#.           _warning "or issue the command 'tomb close all' to close them all."
+#: tomb:2330
 msgid "There is no open tomb to be closed."
 msgstr ""
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.       fi
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#. >         _warning "Too many tombs mounted, please specify one (see tomb list)"
+#.           _warning "or issue the command 'tomb close all' to close them all."
+#.           _failure "Operation aborted." }
+#.   
+#.       for t in ${mounted_tombs}; do
+#: tomb:2333
 msgid "Too many tombs mounted, please specify one (see tomb list)"
 msgstr ""
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.       [[ ${#mounted_tombs} == 0 ]] && {
+#.           _failure "There is no open tomb to be closed." }
+#.   
+#.       [[ ${#mounted_tombs} -gt 1 && -z "$1" ]] && {
+#.           _warning "Too many tombs mounted, please specify one (see tomb list)"
+#. >         _warning "or issue the command 'tomb close all' to close them all."
+#.           _failure "Operation aborted." }
+#.   
+#.       for t in ${mounted_tombs}; do
+#.           mapper=`basename ${t[(ws:;:)1]}`
+#: tomb:2334
 msgid "or issue the command 'tomb close all' to close them all."
 msgstr ""
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           _verbose "Name: ::1 tomb name::" $tombname
+#.           _verbose "Mount: ::1 mount point::" $tombmount
+#.           _verbose "Mapper: ::1 mapper::" $mapper
+#.   
+#.           [[ -e "$mapper" ]] && {
+#. >             _warning "Tomb not found: ::1 tomb file::" $1
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#: tomb:2350
 msgid "Tomb not found: ::1 tomb file::"
 msgstr ""
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           _verbose "Name: ::1 tomb name::" $tombname
+#.           _verbose "Mount: ::1 mount point::" $tombmount
+#.           _verbose "Mapper: ::1 mapper::" $mapper
+#.   
+#.           [[ -e "$mapper" ]] && {
+#.               _warning "Tomb not found: ::1 tomb file::" $1
+#. >             _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" \
+#: tomb:2351
 msgid "Please specify an existing tomb."
 msgstr ""
 
-#: success
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           [[ -e "$mapper" ]] && {
+#.               _warning "Tomb not found: ::1 tomb file::" $1
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#. >             _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" \
+#.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#: tomb:2355
 msgid "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::"
 msgstr ""
 
-#: message
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _warning "Please specify an existing tomb."
+#.               return 0 }
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" \
+#.                   $tombname $tombmount
+#. >             _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#.               _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" \
+#: tomb:2357
 msgid "Kill all processes busy inside the tomb."
 msgstr ""
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           [[ -n $SLAM ]] && {
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" \
+#.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#. >                 _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#.               _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" \
+#.                   $tombname $tombmount }
+#.   
+#: tomb:2359
 msgid "Cannot slam the tomb ::1 tomb name::"
 msgstr ""
 
-#: message
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _success "Slamming tomb ::1 tomb name:: mounted on ::2 mount point::" \
+#.                   $tombname $tombmount
+#.               _message "Kill all processes busy inside the tomb."
+#.               { slam_tomb "$tombmount" } || {
+#.                   _failure "Cannot slam the tomb ::1 tomb name::" $tombname }
+#.           } || {
+#. >             _message "Closing tomb ::1 tomb name:: mounted on ::2 mount point::" \
+#.                   $tombname $tombmount }
+#.   
+#.           # check if there are binded dirs and close them
+#.           bind_tombs=(`list_tomb_binds $tombname`)
+#: tomb:2361
 msgid "Closing tomb ::1 tomb name:: mounted on ::2 mount point::"
 msgstr ""
 
-#: message
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # check if there are binded dirs and close them
+#.           bind_tombs=(`list_tomb_binds $tombname`)
+#.           for b in ${bind_tombs}; do
+#.               bind_mapper="${b[(ws:;:)1]}"
+#.               bind_mount="${b[(ws:;:)2]}"
+#. >             _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#: tomb:2369
 msgid "Closing tomb bind hook: ::1 hook::"
 msgstr ""
 
-#: success
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           for b in ${bind_tombs}; do
+#.               bind_mapper="${b[(ws:;:)1]}"
+#.               bind_mount="${b[(ws:;:)2]}"
+#.               _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#. >                     _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#.                           _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#: tomb:2372
 msgid "Slamming tomb: killing all processes using this hook."
 msgstr ""
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.               _message "Closing tomb bind hook: ::1 hook::" $bind_mount
+#.               sudo umount $bind_mount || {
+#.                   [[ -n $SLAM ]] && {
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#. >                         _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#.                   } || {
+#.                       _warning "Tomb bind hook ::1 hook:: is busy, cannot close tomb." $bind_mount }
+#.               }
+#: tomb:2375
 msgid "Cannot slam the bind hook ::1 hook::"
 msgstr ""
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.                       _success "Slamming tomb: killing all processes using this hook."
+#.                       slam_tomb "$bind_mount"
+#.                       [[ $? == 1 ]] && {
+#.                           _failure "Cannot slam the bind hook ::1 hook::" $bind_mount }
+#.                       umount $bind_mount
+#.                   } || {
+#. >                     _warning "Tomb bind hook ::1 hook:: is busy, cannot close tomb." $bind_mount }
+#.               }
+#.           done
+#.   
+#.           # Execute post-hooks for eventual cleanup
+#: tomb:2378
 msgid "Tomb bind hook ::1 hook:: is busy, cannot close tomb."
 msgstr ""
 
-#: warning
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.           # Execute post-hooks for eventual cleanup
+#.           { option_is_set -n } || {
+#.               exec_safe_post_hooks ${tombmount%%/} close }
+#.   
+#.           _verbose "Performing umount of ::1 mount point::" $tombmount
+#.           sudo umount ${tombmount}
+#. >         [[ $? = 0 ]] || { _warning "Tomb is busy, cannot umount!"; return 1 }
+#.   
+#.           # If we used a default mountpoint and is now empty, delete it
+#.           [[ "$tombmount" == "/media/$tombname.tomb" ]] && { rmdir $tombmount }
+#.   
+#: tomb:2388
 msgid "Tomb is busy, cannot umount!"
 msgstr ""
 
-#: failure
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # If we used a default mountpoint and is now empty, delete it
+#.           [[ "$tombmount" == "/media/$tombname.tomb" ]] && { rmdir $tombmount }
+#.   
+#.           sudo cryptsetup luksClose $mapper
+#.           [[ $? == 0 ]] || {
+#. >             _failure "Error occurred in cryptsetup luksClose ::1 mapper::" $mapper }
+#.   
+#.           # Normally the loopback device is detached when unused
+#.           [[ -e "/dev/$tombloop" ]] && sudo losetup -d "/dev/$tombloop"
+#.           [[ $? = 0 ]] || {
+#: tomb:2395
 msgid "Error occurred in cryptsetup luksClose ::1 mapper::"
 msgstr ""
 
-#: success
+#. Fold: Close
+#. Function: umount_tomb
+#.
+#. Code sample:
+#.   
+#.           # Normally the loopback device is detached when unused
+#.           [[ -e "/dev/$tombloop" ]] && sudo losetup -d "/dev/$tombloop"
+#.           [[ $? = 0 ]] || {
+#.               _verbose "/dev/$tombloop was already closed." }
+#.   
+#. >         _success "Tomb ::1 tomb name:: closed: your bones will rest in peace." $tombname
+#.   
+#.       done # loop across mounted tombs
+#.   
+#.       return 0
+#: tomb:2402
 msgid "Tomb ::1 tomb name:: closed: your bones will rest in peace."
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               return 1
+#.           fi
+#.           return 0
+#.       fi
+#.       unset discardme
+#.       if ! zparseopts -M -E -D -Adiscardme ${every_opts}; then
+#. >         _failure "Error parsing."
+#.           return 127
+#.       fi
+#.       unset discardme
+#.       subcommand=$1
+#: tomb:2522
 msgid "Error parsing."
 msgstr ""
 
-#: warning
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       subcommand=$1
+#.       if [[ -z $subcommand ]]; then
+#.           subcommand="__default"
+#.       fi
+#.   
+#.       if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
+#. >         _warning "There's no such command \"::1 subcommand::\"." $subcommand
+#.           exitv=127 _failure "Please try -h for help."
+#.       fi
+#.       argv=("${(@)oldstar}")
+#.       unset oldstar
+#: tomb:2532
 msgid "There's no such command \"::1 subcommand::\"."
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       if [[ -z $subcommand ]]; then
+#.           subcommand="__default"
+#.       fi
+#.   
+#.       if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then
+#.           _warning "There's no such command \"::1 subcommand::\"." $subcommand
+#. >         exitv=127 _failure "Please try -h for help."
+#.       fi
+#.       argv=("${(@)oldstar}")
+#.       unset oldstar
+#.   
+#: tomb:2533
 msgid "Please try -h for help."
 msgstr ""
 
-#: warning
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       # zsh magic: ${=string} will split to multiple arguments when spaces occur
+#.       set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
+#.       # if there is no option, we don't need parsing
+#.       if [[ -n $cmd_opts ]]; then
+#.           zparseopts -M -E -D -AOPTS ${cmd_opts}
+#.           if [[ $? != 0 ]]; then
+#. >             _warning "Some error occurred during option processing."
+#.               exitv=127 _failure "See \"tomb help\" for more info."
+#.           fi
+#.       fi
+#.       #build PARAM (array of arguments) and check if there are unrecognized options
+#: tomb:2545
 msgid "Some error occurred during option processing."
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       set -A cmd_opts ${main_opts} ${=subcommands_opts[$subcommand]}
+#.       # if there is no option, we don't need parsing
+#.       if [[ -n $cmd_opts ]]; then
+#.           zparseopts -M -E -D -AOPTS ${cmd_opts}
+#.           if [[ $? != 0 ]]; then
+#.               _warning "Some error occurred during option processing."
+#. >             exitv=127 _failure "See \"tomb help\" for more info."
+#.           fi
+#.       fi
+#.       #build PARAM (array of arguments) and check if there are unrecognized options
+#.       ok=0
+#: tomb:2546
 msgid "See \"tomb help\" for more info."
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       for arg in $*; do
+#.           if [[ $arg == '--' || $arg == '-' ]]; then
+#.               ok=1
+#.               continue #it shouldnt be appended to PARAM
+#.           elif [[ $arg[1] == '-'  ]]; then
+#.               if [[ $ok == 0 ]]; then
+#. >                 exitv=127 _failure "Unrecognized option ::1 arg:: for subcommand ::2 subcommand::" $arg $subcommand
+#.               fi
+#.           fi
+#.           PARAM+=$arg
+#.       done
+#: tomb:2558
 msgid "Unrecognized option ::1 arg:: for subcommand ::2 subcommand::"
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.       # Use colors unless told not to
+#.       { ! option_is_set --no-color } && { autoload -Uz colors && colors }
+#.       # Some options are only available during insecure mode
+#.       { ! option_is_set --unsafe } && {
+#.           for opt in --tomb-pwd --use-urandom --tomb-old-pwd; do
+#.               { option_is_set $opt } && {
+#. >                 exitv=127 _failure "You specified option ::1 option::, which is DANGEROUS and should only be used for testing\nIf you really want so, add --unsafe" $opt }
+#.           done
+#.       }
+#.       # read -t or --tmp flags to set a custom temporary directory
+#.       option_is_set --tmp && TMPPREFIX=$(option_value --tmp)
+#: tomb:2574
 msgid "You specified option ::1 option::, which is DANGEROUS and should only be used for testing\nIf you really want so, add --unsafe"
 msgstr ""
 
-#: warning
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           help)
+#.               usage
+#.               ;;
+#.   
+#.           # DEPRECATION notice (leave here as 'create' is still present in old docs)
+#.           create)
+#. >             _warning "The create command is deprecated, please use dig, forge and lock instead."
+#.               _warning "For more informations see Tomb's manual page (man tomb)."
+#.               _failure "Operation aborted."
+#.               ;;
+#.   
+#: tomb:2608
 msgid "The create command is deprecated, please use dig, forge and lock instead."
 msgstr ""
 
-#: warning
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               usage
+#.               ;;
+#.   
+#.           # DEPRECATION notice (leave here as 'create' is still present in old docs)
+#.           create)
+#.               _warning "The create command is deprecated, please use dig, forge and lock instead."
+#. >             _warning "For more informations see Tomb's manual page (man tomb)."
+#.               _failure "Operation aborted."
+#.               ;;
+#.   
+#.           # CREATE Step 1: dig -s NN file.tomb
+#: tomb:2609
 msgid "For more informations see Tomb's manual page (man tomb)."
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               umount_tomb $PARAM[1]
+#.               ;;
+#.   
+#.           # Grow tomb's size
+#.           resize)
+#.               [[ $RESIZER == 0 ]] && {
+#. >                 _failure "Resize2fs not installed: cannot resize tombs." }
+#.               resize_tomb $PARAM[1]
+#.               ;;
+#.   
+#.           ## Contents manipulation
+#: tomb:2643
 msgid "Resize2fs not installed: cannot resize tombs."
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           ## Locking operations
+#.   
+#.           # Export key to QR Code
+#.           engrave)
+#.               [[ $QRENCODE == 0 ]] && {
+#. >                 _failure "QREncode not installed: cannot engrave keys on paper." }
+#.               engrave_key ${=PARAM}
+#.               ;;
+#.   
+#.           # Change password on existing key
+#: tomb:2669
 msgid "QREncode not installed: cannot engrave keys on paper."
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               change_tomb_key ${=PARAM}
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: hide key inside an image
+#.           bury)
+#.               [[ $STEGHIDE == 0 ]] && {
+#. >                 _failure "Steghide not installed: cannot bury keys into images." }
+#.               bury_key $PARAM[1]
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: read key hidden in an image
+#: tomb:2686
 msgid "Steghide not installed: cannot bury keys into images."
 msgstr ""
 
-#: failure
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               bury_key $PARAM[1]
+#.               ;;
+#.   
+#.           # STEGANOGRAPHY: read key hidden in an image
+#.           exhume)
+#.               [[ $STEGHIDE == 0 ]] && {
+#. >                 _failure "Steghide not installed: cannot exhume keys from images." }
+#.               exhume_key $PARAM[1]
+#.               ;;
+#.   
+#.           ## Internal commands useful to developers
+#: tomb:2693
 msgid "Steghide not installed: cannot exhume keys from images."
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           # Ask user for a password interactively
+#.           askpass)    ask_password $PARAM[1] $PARAM[2] ;;
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#. >             _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#: tomb:2707
 msgid "Tomb ::1 version:: - a strong and gentle undertaker for your secrets"
 msgstr ""
 
-#: print
-msgid " Copyright (C) 2007-2014 Dyne.org Foundation, License GNU GPL v3+"
-msgstr ""
-
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           askpass)    ask_password $PARAM[1] $PARAM[2] ;;
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#. >             _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#: tomb:2709
+msgid " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+msgstr ""
+
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.   
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#. >             _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#: tomb:2710
 msgid " This is free software: you are free to change and redistribute it"
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.           # Default operation: presentation, or version information with -v
+#.           __default)
+#.               _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
+#.               _print "\000"
+#.               _print " Copyright (C) 2007-2015 Dyne.org Foundation, License GNU GPL v3+"
+#.               _print " This is free software: you are free to change and redistribute it"
+#. >             _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#: tomb:2711
 msgid " For the latest sourcecode go to <http://dyne.org/software/tomb>"
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print " This is free software: you are free to change and redistribute it"
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#. >                 _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#: tomb:2716
 msgid " This source code is distributed in the hope that it will be useful,"
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#. >                 _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#: tomb:2717
 msgid " but WITHOUT ANY WARRANTY; without even the implied warranty of"
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               _print "\000"
+#.               option_is_set -v && {
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#. >                 _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#.                   _print "System utils:"
+#: tomb:2718
 msgid " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.                   local langwas=$LANG
+#.                   LANG=en
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#. >                 _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#.                   _print "System utils:"
+#.                   _print "\000"
+#.                   cat <<EOF
+#: tomb:2720
 msgid " When in need please refer to <http://dyne.org/support>."
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.                   _print " This source code is distributed in the hope that it will be useful,"
+#.                   _print " but WITHOUT ANY WARRANTY; without even the implied warranty of"
+#.                   _print " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+#.                   LANG=$langwas
+#.                   _print " When in need please refer to <http://dyne.org/support>."
+#.                   _print "\000"
+#. >                 _print "System utils:"
+#.                   _print "\000"
+#.                   cat <<EOF
+#.     `sudo -V | head -n1`
+#.     `cryptsetup --version`
+#: tomb:2722
 msgid "System utils:"
 msgstr ""
 
-#: print
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.     `cryptsetup --version`
+#.     `pinentry --version`
+#.     `gpg --version | head -n1` - key forging algorithms (GnuPG symmetric ciphers):
+#.     `list_gnupg_ciphers`
+#.   EOF
+#.                   _print "\000"
+#. >                 _print "Optional utils:"
+#.                   _print "\000"
+#.                   _list_optional_tools version
+#.                   return 0
+#.               }
+#: tomb:2732
 msgid "Optional utils:"
 msgstr ""
 
-#: warning
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               }
+#.               usage
+#.               ;;
+#.   
+#.           # Reject unknown command and suggest help
+#.           *)
+#. >             _warning "Command \"::1 subcommand::\" not recognized." $subcommand
+#.               _message "Try -h for help."
+#.               return 1
+#.               ;;
+#.       esac
+#: tomb:2742
 msgid "Command \"::1 subcommand::\" not recognized."
 msgstr ""
 
-#: message
+#. Fold: Main routine
+#. Function: main
+#.
+#. Code sample:
+#.               usage
+#.               ;;
+#.   
+#.           # Reject unknown command and suggest help
+#.           *)
+#.               _warning "Command \"::1 subcommand::\" not recognized." $subcommand
+#. >             _message "Try -h for help."
+#.               return 1
+#.               ;;
+#.       esac
+#.       return $?
+#: tomb:2743
 msgid "Try -h for help."
 msgstr ""
 
diff --git a/tomb b/tomb
@@ -1505,7 +1505,7 @@ lock_tomb_with_key() {
     _message "Commanded to lock tomb ::1 tomb file::" $TOMBFILE
 
     [[ -f $TOMBPATH ]] || {
-        _failure "There is no tomb here. You have to it dig first." }
+        _failure "There is no tomb here. You have to dig it first." }
 
     _verbose "Tomb found: ::1 tomb path::" $TOMBPATH