# German translation of src/library/tools/po/tools.pot
# Copyright (C) 2008-2014 The R Foundation
# This file is distributed under the same license as the R package.
# Detlef Steuer <steuer@hsu-hh.de>, 2008-2014.
#
msgid ""
msgstr ""
"Project-Id-Version: R-3.1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-03-30 07:34-0700\n"
"PO-Revision-Date: 2013-03-11 11:27+0100\n"
"Last-Translator: Detlef Steuer <steuer@hsu-hh.de>\n"
"Language-Team: R Core <r-core@r-project.org>\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 ? 0 : 1;\n"

#: Rmd5.c:36
msgid "argument 'files' must be character"
msgstr "Argument 'files' muss Zeichenkette sein"

#: Rmd5.c:50
#, c-format
msgid "md5 failed on file '%s'"
msgstr "md5 für Datei '%s' fehlgeschlagen"

#: getfmts.c:61
#, c-format
msgid "only %d arguments are allowed"
msgstr "nur %d Argumente erlaubt"

#: getfmts.c:66
msgid "'fmt' is not a character vector"
msgstr "'fmt' ist kein Zeichenkettenvektor"

#: getfmts.c:69
msgid "'fmt' must be length 1"
msgstr "'fmt' muss Länge 1 haben"

#: getfmts.c:75
#, c-format
msgid "'fmt' length exceeds maximal format length %d"
msgstr "Länge von 'fmt' überschreitet maximale Formatlänge %d"

#: getfmts.c:96
#, c-format
msgid "unrecognised format specification '%s'"
msgstr "nicht erkannte Formatspezifikation '%s'"

#: getfmts.c:136
msgid "at most one asterisk '*' is supported in each conversion specification"
msgstr "höchstens ein Stern '*' in jeder Konversionsspezifikation unterstützt"

#: gramLatex.c:2376 gramRd.c:3898
#, c-format
msgid "unable to allocate buffer for long string at line %d"
msgstr "kann keinen Buffer für lange Zeichenkette in Zeile %d allokieren"

#: gramLatex.c:2613 gramRd.c:4387 gramRd.c:4393
#, c-format
msgid "invalid '%s' value"
msgstr "unzulässiger '%s' Wert"

#: gramRd.c:2531 gramRd.c:2534
#, c-format
msgid "bad markup (extra space?) at %s:%d:%d"
msgstr "schlechte Auszeichnung (Leerstelle zuviel?) bei %s:%d:%d"

#: gramRd.c:3113
#, c-format
msgid "Macro '%s' previously defined."
msgstr "Makro '%s' bereits definiert."

#: gramRd.c:3123
#, c-format
msgid "At most 4 arguments are allowed for user defined macros."
msgstr "Höchstens 4 Argumente für benutzerdefinierte Makros erlaubt."

#: gramRd.c:3157
#, c-format
msgid "No macro definition for '%s'."
msgstr "Keine Makrodefinition für '%s'."

#: gramRd.c:3313 gramRd.c:3317
#, c-format
msgid "newline within quoted string at %s:%d"
msgstr "Zeilenumbruch innerhalb einer Zeichenkette bei %s:%d"

#: gramRd.c:3336
#, c-format
msgid "unable to allocate buffer for long macro at line %d"
msgstr "kann keinen Buffer für langes Makro in Zeile %d allokieren"

#: gramRd.c:3366
msgid "macros nested too deeply: infinite recursion?"
msgstr "Makros zu tief verschachtelt: unendliche Rekursion?"

#: gramRd.c:3760
#, c-format
msgid "Unable to find macro %s"
msgstr "Kann Makro %s nicht finden"

#: gramRd.c:3958
#, c-format
msgid "Unexpected end of input (in %c quoted string opened at %s:%d:%d)"
msgstr "Unerwartetes Ende der Eingabe (in %c Zeichenkette bei %s:%d:%d)"

#: gramRd.c:4400
msgid "cannot open the connection"
msgstr "kann Verbindung nicht öffnen"

#: gramRd.c:4407
msgid "cannot read from this connection"
msgstr "kann aus dieser Verbindung nicht lesen"

#: gramRd.c:4415
msgid "invalid Rd file"
msgstr "ungültige Rd Datei"

#: gramRd.c:4434
msgid "'deparseRd' only supports deparsing character elements"
msgstr "'deparseRd' unterstützt nur das Deparsing von Zeichenkettenelementen"

#: gramRd.c:4437
msgid "bad state"
msgstr "schlechter Zustand"

#: gramRd.c:4450
#, c-format
msgid "bad text mode %d in 'deparseRd'"
msgstr "schlechter Textmode %d in 'deparseRd'"

#: http.c:32
msgid "invalid bind address specification"
msgstr "unzulässige Bindungsadressenspezifikation"

#: install.c:112 install.c:131 install.c:133
#, c-format
msgid "invalid '%s' argument"
msgstr "unzulässiges '%s' Argument"

#: install.c:162
msgid "write error during file append"
msgstr "Schreibfehler während Anhängen an Datei"

#: signals.c:42
msgid "pskill() is not supported on this platform"
msgstr "pskill() auf dieser Plattform nicht unterstützt"

#: signals.c:140
msgid "psnice() is not supported on this platform"
msgstr "psnice() auf dieser Plattform nicht unterstützt"

#: text.c:67
msgid "invalid argument type"
msgstr "unzulässiger Argumenttyp"

#: text.c:225 text.c:247
msgid "out of memory"
msgstr "zu wenig Hauptspeicher"
