aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu system nss)
  #:use-module (rnrs enums)
  #:use-module (guix records)
  #:use-module (srfi srfi-9)
  #:use-module (ice-9 match)
  #:export (name-service-switch?
            name-service-switch
            name-service?
            name-service

            lookup-specification

            %default-nss
            %mdns-host-lookup-nss

            %files
            %compat
            %dns

            name-service-switch->string))

;;; Commentary:
;;;
;;; Bindings for libc's name service switch (NSS) configuration.
;;;
;;; Code:

(define-record-type* <name-service> name-service
  make-name-service
  name-service?
  (name     name-service-name)
  (reaction name-service-reaction
            (default (lookup-specification))))

;; Lookup specification (info "(libc) Actions in the NSS Configuration").

(define-enumeration lookup-action
  (return continue)
  make-lookup-action)

(define-enumeration lookup-status
  (success
   not-found
   unavailable
   try-again)
  make-lookup-status)

(define-record-type <lookup-status-negation>
  (lookup-status-negation status)
  lookup-status-negation?
  (status lookup-status-negation-status))

(define-record-type <lookup-reaction>
  (make-lookup-reaction status action)
  lookup-reaction?
  (status  lookup-reaction-status)
  (action  lookup-reaction-action))

(define-syntax lookup-reaction
  (syntax-rules (not =>)
    ((_ ((not status) => action))
     (make-lookup-reaction (lookup-status-negation (lookup-status status))
                           (lookup-action action)))
    ((_ (status => action))
     (make-lookup-reaction (lookup-status status)
                           (lookup-action action)))))

(define-syntax-rule (lookup-specification reaction ...)
  "Return an NSS lookup specification."
  (list (lookup-reaction reaction) ...))


;;;
;;; Common name services and default NSS configuration.
;;;

(define %compat
  ;; Note: Starting from version 2.26, libc no longer provides libnss_compat
  ;; so this specification has become useless.
  (name-service
    (name "compat")
    (reaction (lookup-specification (not-found => return)))))

(define %files
  (name-service (name "files")))

(define %dns
  ;; DNS is supposed to be authoritative, so unless it's unavailable, return
  ;; what it finds.
  (name-service
    (name "dns")
    (reaction (lookup-specification ((not unavailable) => return)))))

;; The NSS.  We list all the databases here because that allows us to
;; statically ensure that the user's configuration refers to existing
;; databases.  See libc/nss/databases.def for the list of databases.  Default
;; values obtained by looking for "DEFAULT_CONFIG" in libc/nss/*.c.
;;
;; Although libc places 'dns' before 'files' in the default configurations of
;; the 'hosts' and 'networks' databases, we choose to put 'files' before 'dns'
;; by default, so that users can override host/address mappings in /etc/hosts
;; and bypass DNS to improve their privacy and escape NSA's MORECOWBELL.
(define-record-type* <name-service-switch> name-service-switch
  make-name-service-switch
  name-service-switch?
  (aliases    name-service-switch-aliases
              (default '()))
  (ethers     name-service-switch-ethers
              (default '()))
  (group      name-service-switch-group
              (default (list %files)))
  (gshadow    name-service-switch-gshadow
              (default '()))
  (hosts      name-service-switch-hosts
              (default (list %files %dns)))
  (initgroups name-service-switch-initgroups
              (default '()))
  (netgroup   name-service-switch-netgroup
              (default '()))
  (networks   name-service-switch-networks
              (default (list %files %dns)))
  (password   name-service-switch-password
              (default (list %files)))
  (public-key name-service-switch-public-key
              (default '()))
  (rpc        name-service-switch-rpc
              (default '()))
  (services   name-service-switch-services
              (default '()))
  (shadow     name-service-switch-shadow
              (default (list %files))))

(define %default-nss
  ;; Default NSS configuration.
  (name-service-switch))

(define %mdns-host-lookup-nss
  (name-service-switch
    (hosts (list %files                           ;first, check /etc/hosts

                 ;; If the above did not succeed, try with 'mdns_minimal'.
                 (name-service
                   (name "mdns_minimal")

                   ;; 'mdns_minimal' is authoritative for '.local'.  When it
                   ;; returns "not found", no need to try the next methods.
                   (reaction (lookup-specification
                              (not-found => return))))

                 ;; Then fall back to DNS.
                 (name-service
                   (name "dns"))

                 ;; Finally, try with the "full" 'mdns'.
                 (name-service
                   (name "mdns"))))))


;;;
;;; Serialization.
;;;

(define (lookup-status->string status)
  (match status
    ('success     "SUCCESS")
    ('not-found   "NOTFOUND")
    ('unavailable "UNAVAIL")
    ('try-again   "TRYAGAIN")
    (($ <lookup-status-negation> status)
     (string-append "!" (lookup-status->string status)))))

(define lookup-reaction->string
  (match-lambda
   (($ <lookup-reaction> status action)
    (string-append (lookup-status->string status) "="
                   (symbol->string action)))))

(define name-service->string
  (match-lambda
   (($ <name-service> name ())
    name)
   (($ <name-service> name reactions)
    (string-append name " ["
                   (string-join (map lookup-reaction->string reactions))
                   "]"))))

(define (name-service-switch->string nss)
  "Return the 'nsswitch.conf' contents for NSS as a string.  See \"NSS
Configuration File\" in the libc manual."
  (let-syntax ((->string
                (syntax-rules ()
                  ((_ name field)
                   (match (field nss)
                     (()                          ;keep the default config
                      "")
                     ((services (... ...))
                      (string-append name ":\t"
                                     (string-join
                                      (map name-service->string services))
                                     "\n")))))))
    (string-append (->string "aliases"    name-service-switch-aliases)
                   (->string "ethers"     name-service-switch-ethers)
                   (->string "group"      name-service-switch-group)
                   (->string "gshadow"    name-service-switch-gshadow)
                   (->string "hosts"      name-service-switch-hosts)
                   (->string "initgroups" name-service-switch-initgroups)
                   (->string "netgroup"   name-service-switch-netgroup)
                   (->string "networks"   name-service-switch-networks)
                   (->string "passwd"     name-service-switch-password)
                   (->string "publickey"  name-service-switch-public-key)
                   (->string "rpc"        name-service-switch-rpc)
                   (->string "services"   name-service-switch-services)
                   (->string "shadow"     name-service-switch-shadow))))

;;; Local Variables:
;;; eval: (put 'name-service 'scheme-indent-function 0)
;;; eval: (put 'name-service-switch 'scheme-indent-function 0)
;;; End:

;;; nss.scm ends here
f='#n261'>261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602
# German translation of guix-packages.
# Copyright (C) 2014 Free Software Foundation, Inc.
# This file is distributed under the same license as the guix package.
# Mario Blättermann <mario.blaettermann@gmail.com>, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: guix-packages 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-07-14 11:59+0200\n"
"PO-Revision-Date: 2014-07-13 20:23+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"

#: gnu/packages/base.scm:65
msgid "Hello, GNU world: An example GNU package"
msgstr "Hallo, GNU-Welt: Ein GNU-Beispielpaket"

#: gnu/packages/base.scm:67
msgid ""
"GNU Hello prints the message \"Hello, world!\" and then exits.  It\n"
"serves as an example of standard GNU coding practices.  As such, it supports\n"
"command-line arguments, multiple languages, and so on."
msgstr ""
"GNU Hello gibt die Meldung »Hello, world!« aus und beendet sich dann.\n"
"Es dient als ein Beispiel für die Standardwege zur Erzeugung von GNU-Code.\n"
"Als solches unterstützt es Befehlszeilenargumente, mehrere Sprachen usw."

#: gnu/packages/base.scm:85
msgid "Print lines matching a pattern"
msgstr "Zeilen zurückgeben, die auf ein Muster passen"

#: gnu/packages/base.scm:87
msgid ""
"grep is a tool for finding text inside files.  Text is found by\n"
"matching a pattern provided by the user in one or many files.  The pattern\n"
"may be provided as a basic or extended regular expression, or as fixed\n"
"strings.  By default, the matching text is simply printed to the screen,\n"
"however the output can be greatly customized to include, for example, line\n"
"numbers.  GNU grep offers many extensions over the standard utility,\n"
"including, for example, recursive directory searching."
msgstr ""
"Grep ist ein Werkzeug zum Finden von Text in Dateien. Textteile werden durch\n"
"Vergleichen anhand eines vom Benutzer angegebenen Musters in einer oder\n"
"mehreren Dateien gesucht. Das Muster kann als einfacher oder erweiterter\n"
"regulärer Ausdruck oder auch als einfache Zeichenkette angegeben werden.\n"
"In der Voreinstellung wird der Suchtreffer auf dem Bildschirm ausgegeben,\n"
"aber die Ausgabe kann auf vielfältige Weise angepasst werden, um beispiels-\n"
"weise Zeilennummern mit anzuzeigen. GNU Grep bietet viele Erweiterungen\n"
"im Vergleich zum Standardwerkzeug, zum Beispiel die rekursive Suche\n"
"in Verzeichnisstrukturen."

#: gnu/packages/base.scm:109
msgid "Stream editor"
msgstr "Datenstromeditor"

#: gnu/packages/base.scm:124
msgid ""
"Sed is a non-interactive, text stream editor.  It receives a text\n"
"input from a file or from standard input and it then applies a series of text\n"
"editing commands to the stream and prints its output to standard output.  It\n"
"is often used for substituting text patterns in a stream.  The GNU\n"
"implementation offers several extensions over the standard utility."
msgstr ""
"Sed ist ein nicht-interaktiver Editor für Text-Datenströme. Er empfängt eine\n"
"Texteingabe aus einer Datei oder der Standardeingabe und wendet eine Reihe von\n"
"Textbearbeitungsbefehlen darauf an. Das Ergebnis wird in der Standardausgabe\n"
"ausgegeben. Er wird häufig zum Ersetzen von Textmustern in einem Datenstrom\n"
"verwendet. Die GNU-Implementation bietet gegenüber dem Standardwerkzeug\n"
"diverse Erweiterungen."

#: gnu/packages/base.scm:144
msgid "Managing tar archives"
msgstr "Tar-Archive verwalten"

#: gnu/packages/base.scm:146
msgid ""
"Tar provides the ability to create tar archives, as well as the\n"
"ability to extract, update or list files in an existing archive.  It is\n"
"useful for combining many files into one larger file, while maintaining\n"
"directory structure and file information such as permissions and\n"
"creation/modification dates.  GNU tar offers many extensions over the\n"
"standard utility."
msgstr ""
"Tar ermöglicht Ihnen das Erstellen oder Entpacken von Tar-Archiven sowie\n"
"die Aktualisierung oder Auflistung von Dateien eines existierenden Archivs.\n"
"Es dient zum Zusammenfassen mehrerer Dateien in einer einzigen Datei, wobei\n"
"die Verzeichnisstruktur und Dsateiinformationen wie Erstellungs- und\n"
"Änderungszeitpunkte sowie Zugriffsrechte erhalten bleiben. GNU Tar bietet\n"
"viele Erweiterungen über die Fähigkeiten des Standardwerkzeugs hinaus."

#: gnu/packages/base.scm:173
msgid "Apply differences to originals, with optional backups"
msgstr "Unterschiede auf Originaldateien anwenden, mit optionaler Datensicherung"

#: gnu/packages/base.scm:175
msgid ""
"Patch is a program that applies changes to files based on differences\n"
"laid out as by the program \"diff\".  The changes may be applied to one or more\n"
"files depending on the contents of the diff file.  It accepts several\n"
"different diff formats.  It may also be used to revert previously applied\n"
"differences."
msgstr ""
"Patch ist ein Programm, das Änderungen auf Dateien anwendet, die durch das\n"
"Programm »diff« erzeugt wurden. Die Änderungen können auf eine oder mehrere\n"
"Dateien angewendet werden, abhängig vom Inhalt der Diff-Datei. Es akzeptiert\n"
"verschiedene Diff-Formate. Es kann auch dazu genutzt werden, frühere\n"
"Anwendungen von Diff-Dateien rückgängig zu machen."

#: gnu/packages/base.scm:195
msgid "Comparing and merging files"
msgstr "Dateien vergleichen und zusammenführen"

#: gnu/packages/base.scm:197
msgid ""
"GNU Diffutils is a package containing tools for finding the\n"
"differences between files.  The \"diff\" command is used to show how two files\n"
"differ, while \"cmp\" shows the offsets and line numbers where they differ. \n"
"\"diff3\" allows you to compare three files.  Finally, \"sdiff\" offers an\n"
"interactive means to merge two files."
msgstr ""
"Das Paket GNU Diffutils enthält Werkzeuge zum Finden von Unterschieden\n"
"zwischen Dateien. Der Befehl »diff« wird dazu verwendet, zwei Dateien\n"
"zu vergleichen, um die Unterschiede kenntlich zu machen, während »cmp« anhand\n"
"von Position und Zeilennummern zeigt, wo genau die Unterschiede liegen.\n"
"Weiterhin bietet »sdiff« eine Möglichkeit, zwei Dateien interaktiv\n"
"zusammenzuführen."

#: gnu/packages/base.scm:224
msgid "Operating on files matching given criteria"
msgstr "Verarbeitung von Dateien anhand gegebener Kriterien"

#: gnu/packages/base.scm:226
msgid ""
"Findutils supplies the basic file directory searching utilities of the\n"
"GNU system.  It consists of two primary searching utilities: \"find\"\n"
"recursively searches for files in a directory according to given criteria and\n"
"\"locate\" lists files in a database that match a query.  Two auxiliary tools\n"
"are included: \"updatedb\" updates the file name database and \"xargs\" may be\n"
"used to apply commands with arbitrarily long arguments."
msgstr ""
"Das Paket Findutils stellt im GNU-System die grundlegenden Werkzeuge zum Suchen\n"
"in Verzeichnissen bereit. Zwei primäre Suchwerkzeuge sind enthalten: »find«\n"
"sucht anhand angegebener Kriterien rekursiv nach Dateien in Verzeichnissen\n"
"und »locate« listet Dateien in einer Datenbank auf, die einer Abfrage\n"
"entsprechen. Zwei Hilfswerkzeuge sind außerdem enthalten: »updatedb« aktualisiert\n"
"die Dateinamendatenbank und »xargs« dient dazu, Befehle mit willkürlich\n"
"langen Argumenten anzuwenden."

#: gnu/packages/base.scm:278
msgid "Core GNU utilities (file, text, shell)"
msgstr "GNU-Kernprogramme (Datei, Text, Shell)"

#: gnu/packages/base.scm:280
msgid ""
"GNU Coreutils includes all of the basic command-line tools that are\n"
"expected in a POSIX system.  These provide the basic file, shell and text\n"
"manipulation functions of the GNU system.  Most of these tools offer extended\n"
"functionality beyond that which is outlined in the POSIX standard."
msgstr ""
"Die GNU Coreutils enthalten alle grundlegenden Befehlszeilenwerkzeuge, die\n"
"Sie in einem POSIX-System erwarten. Diese bieten Ihnen die Bearbeitungsfunktionen\n"
"für Dateien, Text und Shell des GNU-Systems. Die meisten dieser Werkzeuge bieten\n"
"im Vergleich zu den in POSIX festgelegten Standards erweiterte Funktionalität."

#: gnu/packages/base.scm:314
msgid "Remake files automatically"
msgstr "Automatisches Remake von Dateien"

#: gnu/packages/base.scm:316
msgid ""
"Make is a program that is used to control the production of\n"
"executables or other files from their source files.  The process is\n"
"controlled from a Makefile, in which the developer specifies how each file is\n"
"generated from its source.  It has powerful dependency resolution and the\n"
"ability to determine when files have to be regenerated after their sources\n"
"change.  GNU make offers many powerful extensions over the standard utility."
msgstr ""
"Make ist ein Programm, das zur Steuerung der Erstellung von ausführbaren\n"
"oder anderen Dateien aus deren Quelldateien verwendet wird. Der Prozess\n"
"wird über ein »Makefile« gesteuert, in welchem der Entwickler angibt, auf\n"
"welche Weise jede der Dateien aus den Quellen erzeugt werden soll. Das\n"
"Programm verfügt über eine leistungsfähige Abhängigkeitsauflösung und die\n"
"Fähigkeit zu bestimmen, wann eine Datei neu erstellt werden muss, wenn sich\n"
"deren Quellen geändert haben. GNU Make bietet mächtige Erweiterungen über die\n"
"Fähigkeiten des Standardwerkzeugs hinaus. "

#: gnu/packages/base.scm:361
msgid "Binary utilities: bfd gas gprof ld"
msgstr "Binär-Dienstprogramme: bfd gas gprof ld"

#: gnu/packages/base.scm:363
msgid ""
"GNU Binutils is a collection of tools for working with binary files.\n"
"Perhaps the most notable are \"ld\", a linker, and \"as\", an assembler. Other\n"
"tools include programs to display binary profiling information, list the\n"
"strings in a binary file, and utilities for working with archives.  The \"bfd\"\n"
"library for working with executable and object formats is also included."
msgstr ""
"Die GNU Binutils sind eine Werkzeugsammlung zum Arbeiten mit Binärdateien.\n"
"Die erwähnenswertesten sind »ld«, ein Linker, und »as«, ein Assembler. Weitere\n"
"enthaltene Werkzeuge zeigen Profiling-Informationen an, listen die\n"
"Zeichenketten in einer Binärdatei auf oder dienen der Arbeit mit Archiven.\n"
"Die »bfd«-Bibliothek zum Arbeiten mit ausführbaren oder Objektformaten\n"
"ist ebenfalls enthalten."

#: gnu/packages/base.scm:504
msgid "The GNU C Library"
msgstr "Die GNU C-Bibliothek"

#: gnu/packages/base.scm:506
msgid ""
"Any Unix-like operating system needs a C library: the library which\n"
"defines the \"system calls\" and other basic facilities such as open, malloc,\n"
"printf, exit...\n"
"\n"
"The GNU C library is used as the C library in the GNU system and most systems\n"
"with the Linux kernel."
msgstr ""
"Jedes Unix-ähnliche Betriebssystem braucht eine C-Bibliothek: Dies ist die\n"
"Bibliothek, welche die »Systemaufrufe« und andere Grundfunktionen wie »open«,\n"
"»malloc«, »printf«, »exit« usw. definiert.\n"
"\n"
"Die GNU-C-Bibliothek wird als die C-Bibliothek im GNU-System sowie den meisten\n"
"Systemen mit dem Linux-Kernel verwendet."

#: gnu/packages/base.scm:575
msgid "Database of current and historical time zones"
msgstr "Datenbank aktueller und historischer Zeitzonen"

#: gnu/packages/base.scm:576
msgid ""
"The Time Zone Database (often called tz or zoneinfo)\n"
"contains code and data that represent the history of local time for many\n"
"representative locations around the globe. It is updated periodically to\n"
"reflect changes made by political bodies to time zone boundaries, UTC offsets,\n"
"and daylight-saving rules."
msgstr ""
"Die Zeitzonen-Datenbank (oft »tz« oder »zoneinfo« genannt) enthält Code\n"
"und Daten, welche den Verlauf der lokalen Zeit für zahlreiche\n"
"repräsentative Orte rund um den Globus bereitstellen. Diese Daten werden\n"
"regelmäßig aktualisiert, um politisch begründete Änderungen der Zeitzonengrenzen,\n"
"Verschiebung gegenüber der Weltzeit oder den Sommerzeit-Winterzeit-Regelungen\n"
"zu reflektieren."

#: gnu/packages/base.scm:1004
msgid "GNU C++ standard library (intermediate)"
msgstr ""

#: gnu/packages/base.scm:1098
msgid "The linker wrapper"
msgstr "Der Linker-Wrapper"

#: gnu/packages/base.scm:1100
msgid ""
"The linker wrapper (or `ld-wrapper') wraps the linker to add any\n"
"missing `-rpath' flags, and to detect any misuse of libraries outside of the\n"
"store."
msgstr ""

#: gnu/packages/base.scm:1264
msgid "Complete GCC tool chain for C/C++ development"
msgstr "Vollständige GCC-Werkzeugsammlung für die Entwicklung in C/C++"

#: gnu/packages/base.scm:1266
msgid ""
"This package provides a complete GCC tool chain for C/C++ development to\n"
"be installed in user profiles.  This includes GCC, as well as libc (headers\n"
"and binaries, plus debugging symbols in the 'debug' output), and Binutils."
msgstr ""
"Dieses Paket bietet eine vollständige GCC-Werkzeugsammlung, die für die\n"
"C/C++-Entwicklung in Benutzerprofilen installiert werden kann. Enthalten sind\n"
"sowohl GCC als auch die libc (Header und Binaries sowie Debugging-Symbole in\n"
"der Debug-Ausgabe) und die Binutils."

#: gnu/packages/guile.scm:99 gnu/packages/guile.scm:166
msgid "Scheme implementation intended especially for extensions"
msgstr "Scheme-Implementation, die speziell für Erweiterungen gedacht ist"

#: gnu/packages/guile.scm:101 gnu/packages/guile.scm:168
msgid ""
"Guile is the GNU Ubiquitous Intelligent Language for Extensions, the\n"
"official extension language of the GNU system.  It is an implementation of\n"
"the Scheme language which can be easily embedded in other applications to\n"
"provide a convenient means of extending the functionality of the application\n"
"without requiring the source code to be rewritten."
msgstr ""

#: gnu/packages/guile.scm:211
msgid "Framework for building readers for GNU Guile"
msgstr ""

#: gnu/packages/guile.scm:213
msgid ""
"Guile-Reader is a simple framework for building readers for GNU Guile.\n"
"\n"
"The idea is to make it easy to build procedures that extend Guile’s read\n"
"procedure. Readers supporting various syntax variants can easily be written,\n"
"possibly by re-using existing “token readers” of a standard Scheme\n"
"readers. For example, it is used to implement Skribilo’s R5RS-derived\n"
"document syntax.\n"
"\n"
"Guile-Reader’s approach is similar to Common Lisp’s “read table”, but\n"
"hopefully more powerful and flexible (for instance, one may instantiate as\n"
"many readers as needed)."
msgstr ""

#: gnu/packages/guile.scm:267
msgid "Guile bindings to ncurses"
msgstr "Guile-Bindungen zu Ncurses"

#: gnu/packages/guile.scm:269
msgid ""
"guile-ncurses provides Guile language bindings for the ncurses\n"
"library."
msgstr ""
"guile-ncurses stellt Guile-Sprachbindungen für die ncurses-\n"
"Bibliothek bereit."

#: gnu/packages/guile.scm:289
msgid "Run jobs at scheduled times"
msgstr "Aufgaben planmäßig ausführen"

#: gnu/packages/guile.scm:291
msgid ""
"GNU Mcron is a complete replacement for Vixie cron.  It is used to run\n"
"tasks on a schedule, such as every hour or every Monday.  Mcron is written in\n"
"Guile, so its configuration can be written in Scheme; the original cron\n"
"format is also supported."
msgstr ""
"GNU Mcron ist ein vollständiger Ersatz für Vixie cron. Es wird dazu verwendet,\n"
"Aufgaben nach Plan ausführen zu lassen, zum Beispiel jede Stunde oder jeden\n"
"Montag. Mcron ist in Guile geschrieben, so dass dessen Konfiguration in Scheme\n"
"verwaltet werden kann. Das originale Cron-Format wird ebenfalls unterstützt."

#: gnu/packages/guile.scm:319
msgid "Collection of useful Guile Scheme modules"
msgstr "Sammlung nützlicher Guile-Scheme-Modulen"

#: gnu/packages/guile.scm:321
msgid ""
"guile-lib is intended as an accumulation place for pure-scheme Guile\n"
"modules, allowing for people to cooperate integrating their generic Guile\n"
"modules into a coherent library.  Think \"a down-scaled, limited-scope CPAN\n"
"for Guile\"."
msgstr ""

#: gnu/packages/guile.scm:352
msgid "JSON module for Guile"
msgstr "JSON-Modul für Guile"

#: gnu/packages/guile.scm:354
msgid ""
"Guile-json supports parsing and building JSON documents according to the\n"
"http:://json.org specification. These are the main features:\n"
"- Strictly complies to http://json.org specification.\n"
"- Build JSON documents programmatically via macros.\n"
"- Unicode support for strings.\n"
"- Allows JSON pretty printing."
msgstr ""

#: gnu/packages/lout.scm:109
msgid "Lout, a document layout system similar in style to LaTeX"
msgstr "Lout, ein Dokument-Layoutsystem ähnlich LaTeX"

#: gnu/packages/lout.scm:111
msgid ""
"The Lout document formatting system is now reads a high-level description of\n"
"a document similar in style to LaTeX and produces a PostScript or plain text\n"
"output file.\n"
"\n"
"Lout offers an unprecedented range of advanced features, including optimal\n"
"paragraph and page breaking, automatic hyphenation, PostScript EPS file\n"
"inclusion and generation, equation formatting, tables, diagrams, rotation and\n"
"scaling, sorted indexes, bibliographic databases, running headers and\n"
"odd-even pages, automatic cross referencing, multilingual documents including\n"
"hyphenation (most European languages are supported), formatting of computer\n"
"programs, and much more, all ready to use.  Furthermore, Lout is easily\n"
"extended with definitions which are very much easier to write than troff of\n"
"TeX macros because Lout is a high-level, purely functional language, the\n"
"outcome of an eight-year research project that went back to the\n"
"beginning."
msgstr ""

#: gnu/packages/recutils.scm:58
msgid "Manipulate plain text files as databases"
msgstr "Bearbeitung von Datenbanken in Form einfacher Textdateien"

#: gnu/packages/recutils.scm:60
msgid ""
"GNU Recutils is a set of tools and libraries for creating and\n"
"manipulating text-based, human-editable databases.  Despite being text-based,\n"
"databases created with Recutils carry all of the expected features such as\n"
"unique fields, primary keys, time stamps and more. Many different field types\n"
"are supported, as is encryption."
msgstr ""
"Die GNU Recutils sind eine Sammlung von Werkzeugen und Bibliotheken zum\n"
"Erstellen und Bearbeiten textbasierter, menschenlesbarer Datenbanken. Obwohl\n"
"rein textbasiert, bieten die mit Recutils erzeugten Datenbanken alles, was Sie\n"
"von einer Datenbank erwarten, wie eindeutige Felder, Primärschlüssel,\n"
"Zeitstempel und vieles mehr. Viele verschiedene Feldtypen sowie Verschlüsselung\n"
"werden unterstützt."

#~ msgid "cannot access `~a': ~a~%"
#~ msgstr "Zugriff auf »~a« nicht möglich: ~a~%"

#~ msgid "~A: package not found for version ~a~%"
#~ msgstr "~A: Paket nicht gefunden für Version ~a~%"

#~ msgid "~A: unknown package~%"
#~ msgstr "~A: unbekanntes Paket~%"

#~ msgid "~a: not a number~%"
#~ msgstr "~a: keine Zahl~%"

#~ msgid "~A: unrecognized option~%"
#~ msgstr "~A: nicht erkannte Option~%"

#~ msgid "no build log for '~a'~%"
#~ msgstr "Kein Erstellungsprotokoll für »~a«~%"

#~ msgid "unsupported hash format: ~a~%"
#~ msgstr "Nicht unterstütztes Prüfsummenformat: ~a~%"

#~ msgid "~a: download failed~%"
#~ msgstr "~a: Herunterladen fehlgeschlagen~%"

#~ msgid "failed to build the empty profile~%"
#~ msgstr "Leeres Profil konnte nicht erstellt werden~%"

#~ msgid "profile '~a' does not exist~%"
#~ msgstr "Profil »~a« existiert nicht~%"

#~ msgid "~a: package not found~%"
#~ msgstr "~a: Paket nicht gefunden~%"

#~ msgid "looking for the latest release of GNU ~a..."
#~ msgstr "Nach der letzten Veröffentlichung von GNU ~a wird gesucht …"

#~ msgid "invalid syntax: ~a~%"
#~ msgstr "Unzulässige Syntax: ~a~%"

#~ msgid "nothing to be done~%"
#~ msgstr "Nichts zu tun~%"

#~ msgid "~a package in profile~%"
#~ msgstr "~a-Paket im Profil~%"

#~ msgid "~a\t(current)~%"
#~ msgstr "~a\t(aktuell)~%"

#~ msgid "unknown unit: ~a~%"
#~ msgstr "Unbekannte Einheit: ~a~%"

#~ msgid "invalid number: ~a~%"
#~ msgstr "Ungültige Zahl: ~a~%"

#~ msgid ""
#~ "\n"
#~ "  -r, --recursive        compute the hash on FILE recursively"
#~ msgstr ""
#~ "\n"
#~ "  -r, --recursive        errechnet die Prüfsumme der DATEI rekursiv"

#~ msgid "unrecognized option: ~a~%"
#~ msgstr "Nicht erkannte Option: ~a~%"

#~ msgid "~a~%"
#~ msgstr "~a~%"

#~ msgid "wrong number of arguments~%"
#~ msgstr "Falsche Argumentanzahl~%"

#~ msgid "invalid signature for '~a'~%"
#~ msgstr "Ungültige Signatur für »~a«~%"

#~ msgid "error: invalid signature: ~a~%"
#~ msgstr "Fehler: ungültige Signatur: ~a~%"

#~ msgid "error: unauthorized public key: ~a~%"
#~ msgstr "Fehler: nicht autorisierter öffentlicher Schlüssel: ~a~%"

#~ msgid "error: corrupt signature data: ~a~%"
#~ msgstr "Fehler: Signaturdaten beschädigt: ~a~%"

#~ msgid "wrong arguments"
#~ msgstr "Falsche Argumente"

#~ msgid "~a: unknown action~%"
#~ msgstr "~a: unbekannte Aktion~%"

#~ msgid "no configuration file specified~%"
#~ msgstr "Keine Konfigurationsdatei angegeben~%"

#~ msgid "signature verification failed for `~a'~%"
#~ msgstr "Verifizierung der Signatur fehlgeschlagen für »~a«~%"

#~ msgid ""
#~ "\n"
#~ "Report bugs to: ~a."
#~ msgstr ""
#~ "\n"
#~ "Melden Sie Fehler an: ~a."

#~ msgid ""
#~ "\n"
#~ "~a home page: <~a>"
#~ msgstr ""
#~ "\n"
#~ "~a Homepage: <~a>"

#~ msgid ""
#~ "\n"
#~ "General help using GNU software: <http://www.gnu.org/gethelp/>"
#~ msgstr ""
#~ "\n"
#~ "Allgemeine Hilfe zu GNU-Software: <http://www.gnu.org/gethelp/>"

#~ msgid "~a: invalid number~%"
#~ msgstr "~a: ungültige Zahl~%"

#~ msgid "failed to connect to `~a': ~a~%"
#~ msgstr "Verbindung zu »~a« fehlgeschlagen: ~a~%"

#~ msgid "build failed: ~a~%"
#~ msgstr "Erstellung fehlgeschlagen: ~a~%"

#~ msgid "~a: ~a~%"
#~ msgstr "~a: ~a~%"

#~ msgid "failed to read expression ~s: ~s~%"
#~ msgstr "Ausdruck ~s konnte nicht gelesen werden: ~s~%"

#~ msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
#~ msgstr "~:[Die folgende Datei wird heruntergeladen:~%~{   ~a~%~}~;~]"

#~ msgid "<unknown location>"
#~ msgstr "<unbekannter Ort>"

#~ msgid "failed to create configuration directory `~a': ~a~%"
#~ msgstr "Konfigurationsverzeichnis »~a« konnte nicht angelegt werden: ~a~%"

#~ msgid "unknown"
#~ msgstr "unbekannt"

#~ msgid "invalid argument: ~a~%"
#~ msgstr "Ungültiges Argument: ~a~%"

#~ msgid "Try `guix --help' for more information.~%"
#~ msgstr "Rufen Sie »guix --help« auf, um weitere Informationen zu erhalten.~%"

#~ msgid ""
#~ "Usage: guix COMMAND ARGS...\n"
#~ "Run COMMAND with ARGS.\n"
#~ msgstr ""
#~ "Aufruf: guix BEFEHL ARGUMENTE …\n"
#~ "BEFEHL mit ARGUMENTEN ausführen.\n"

#~ msgid "COMMAND must be one of the sub-commands listed below:\n"
#~ msgstr "BEFEHL muss einer der unten aufgelisteten Unterbefehle sein:\n"

#~ msgid "guix: ~a: command not found~%"
#~ msgstr "guix: ~a: Befehl nicht gefunden~%"

#~ msgid "guix: missing command name~%"
#~ msgstr "guix: Befehlsname fehlt~%"

#~ msgid "guix: unrecognized option '~a'~%"
#~ msgstr "guix: nicht erkannte Option »~a«~%"

#~ msgid "download failed; use a newer Guile~%"
#~ msgstr "Herunterladen fehlgeschlagen, verwenden Sie ein neueres Guile~%"

#~ msgid "download failed"
#~ msgstr "Herunterladen fehlgeschlagen"

#~ msgid "unsupported file type"
#~ msgstr "Nicht unterstützter Dateityp"

#~ msgid "invalid signature"
#~ msgstr "Ungültige Signatur"

#~ msgid "invalid hash"
#~ msgstr "Ungültige Prüfsumme"

#~ msgid "unauthorized public key"
#~ msgstr "Nicht autorisierter öffentlicher Schlüssel"

#~ msgid "corrupt signature data"
#~ msgstr "Signaturdaten beschädigt"

#~ msgid "found valid signature for '~a'~%"
#~ msgstr "Gültige Signatur für »~a« gefunden~%"

#~ msgid "imported file lacks a signature"
#~ msgstr "Der importierten Datei fehlt eine Signatur"