# Translation of src/library/utils/po/utils.pot to German.
# Copyright (C) 2014 The R Foundation
# This file is distributed under the same license as the R package.
# Detlef Steuer <steuer@hsu-hh.de>, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: R 3.5.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-24 10:54-0700\n"
"PO-Revision-Date: 2018-04-16 10:36+0200\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"

#: io.c:329 io.c:333 io.c:343 io.c:574 io.c:774 io.c:827 io.c:840 io.c:844
#: io.c:850 io.c:851 io.c:1097 io.c:1098 io.c:1100 io.c:1101 io.c:1102
#: io.c:1103 io.c:1104 io.c:1105 stubs.c:47 stubs.c:67 windows/dialogs.c:169
#: windows/dialogs.c:194 windows/dialogs.c:197 windows/dialogs.c:241
#: windows/dialogs.c:278 windows/dialogs.c:289 windows/dialogs.c:313
#: windows/dialogs.c:321 windows/util.c:117 windows/widgets.c:79
#: windows/widgets.c:82 windows/widgets.c:87
#, c-format
msgid "invalid '%s' argument"
msgstr "ungültiges '%s' Argument"

#: io.c:352 io.c:837
msgid "invalid quote symbol set"
msgstr "ungültiges quote Symbol gesetzt"

#: io.c:364 io.c:860 io.c:1085
msgid "cannot open the connection"
msgstr "kann die Verbindung nicht öffnen"

#: io.c:367 io.c:371
msgid "cannot read from this connection"
msgstr "kann aus dieser Verbindung nicht lesen"

#: io.c:418 io.c:436
#, c-format
msgid "quoted string on line %d terminated by EOF"
msgstr "Zeichenkette in Anführungszeichen in Zeile %d mit EOF beendet"

#: io.c:570
msgid "the first argument must be of mode character"
msgstr "das erste Argument muss vom Modus character sein"

#: io.c:600
#, c-format
msgid "invalid 'numerals' string: \"%s\""
msgstr "unzulässige 'numerals' Zeichenkette \"%s\""

#: io.c:776
#, c-format
msgid "Selection: "
msgstr "Auswahl: "

#: io.c:870 io.c:886
msgid "cannot allocate buffer in 'readTableHead'"
msgstr "kann Buffer in 'readTableHead' nicht allokieren"

#: io.c:900
msgid "\\ followed by EOF"
msgstr "\\\\ gefolgt von EOF"

#: io.c:953 io.c:958
#, c-format
msgid "incomplete final line found by readTableHeader on '%s'"
msgstr "unvollständige letzte Zeile von readTableHeader in '%s' gefunden"

#: io.c:1016
msgid "index out of range"
msgstr "Index außerhalb der Grenzen"

#: io.c:1053
#, c-format
msgid "Problem closing connection:  %s"
msgstr "Problem beim Schließen der Verbindung: %s"

#: io.c:1055
msgid "Problem closing connection"
msgstr "Problem beim Schließen der Verbindung"

#: io.c:1078
msgid "'file' is not a connection"
msgstr "'file' ist keine Verbindung"

#: io.c:1081
msgid "cannot write to this connection"
msgstr "kann in diese Verbindung nicht schreiben"

#: io.c:1111
msgid "'dec' must be a single character"
msgstr "'dec' muss ein einzelnes Zeichen sein"

#: io.c:1137
#, fuzzy, c-format
msgid "corrupt data frame -- length of column %d does not match nrows"
msgstr "beschädigter Dataframe -- Länge der Spalte %d entspricht nicht nrows"

#: io.c:1168
#, c-format
msgid "column %s claims to be a factor but does not have numeric codes"
msgstr "Spalte %s behauptet Faktor zu sein, hat aber keine numerischen Kodes"

#: io.c:1186
#, fuzzy
msgid "corrupt matrix -- dims do not match length"
msgstr "beschädigte Matrix -- Dimensionen entsprechen nicht der Länge"

#: stubs.c:56
msgid "'savehistory' can only be used in Rgui and Rterm"
msgstr "'savehistory' kann nur in Rgui und Rterm genutzt werden"

#: stubs.c:73
msgid "'loadhistory' can only be used in Rgui and Rterm"
msgstr "'loadhistory' kann nur in Rgui und Rterm genutzt werden"

#: stubs.c:85
msgid "invalid timestamp"
msgstr "ungültiger Zeitstempel"

#: stubs.c:151 stubs.c:159
msgid "X11 dataentry cannot be loaded"
msgstr "X11 Dateneintrag kann nicht geladen werden"

#: stubs.c:155 stubs.c:184 stubs.c:190
msgid "X11 is not available"
msgstr "X11 nicht verfügbar"

#: stubs.c:248 stubs.c:251
#, c-format
msgid "invalid '%s' specification"
msgstr "ungültige '%s' Spezifikation"

#: stubs.c:254
#, c-format
msgid "'%s' contains missing values"
msgstr ""

#: utils.c:85
msgid "'hostname' must be a character vector of length 1"
msgstr "'hostname' muss ein Zeichenkettenvektor der Länge 1 sein"

#: utils.c:91
#, c-format
msgid "nsl() was unable to resolve host '%s'"
msgstr "nsl() konnte Hostnamen '%s' nicht auflösen"

#: utils.c:98
msgid "unknown format returned by 'gethostbyname'"
msgstr "unbekanntes Format von 'gethostbyname' zurückgegeben"

#: utils.c:107
msgid "nsl() is not supported on this platform"
msgstr "nsl() ist auf dieser Plattform nicht unterstützt"

#: windows/dialogs.c:181
msgid "unknown type"
msgstr "unbekannter Typ"

#: windows/dialogs.c:213 windows/dialogs.c:237 windows/dialogs.c:275
#: windows/dialogs.c:310
msgid "menu functions can only be used in the GUI"
msgstr "Menüfunktionen können nur im GUI genutzt werden"

#: windows/dialogs.c:245
#, c-format
msgid "unable to retrieve items for %s (%s)"
msgstr "kann keine Elemente für %s abrufen (%s)"

#: windows/dialogs.c:283
#, c-format
msgid "unable to add menu (%s)"
msgstr "kann Menü nicht hinzufügen (%s)"

#: windows/dialogs.c:295
#, c-format
msgid "unable to add menu item (%s)"
msgstr "kann Menüeintrag nicht hinzufügen (%s)"

#: windows/dialogs.c:318
msgid "menu does not exist"
msgstr "Menü existiert nicht"

#: windows/dialogs.c:325
#, c-format
msgid "unable to delete menu item (%s)"
msgstr "kann Menüeintrag nicht entfernen (%s)"

#: windows/registry.c:73 windows/registry.c:248 windows/registry.c:251
#: windows/registry.c:254
#, c-format
msgid "invalid '%s' value"
msgstr "ungültiger '%s' Wert"

#: windows/registry.c:266
#, c-format
msgid "Registry key '%ls' not found"
msgstr "Registryeintrag '%ls' nicht gefunden"

#: windows/util.c:42
msgid "unsupported version of Windows"
msgstr "nicht unterstützte Version von Windows"

#: windows/util.c:281
msgid "argument must be a character vector or a raw vector"
msgstr "Argument muss Zeichenkettenvektor oder Rawvektor sein"

#: windows/util.c:320
msgid "unable to open the clipboard"
msgstr "kann Zwischenablage nicht öffnen"

#: windows/util.c:325
msgid "unable to write to the clipboard"
msgstr "kann nicht in die Zwischenablage schreiben"

#: windows/util.c:404
msgid "'title' must be a character string"
msgstr "'title' muss eine Zeichenkette sein"

#: windows/util.c:413
msgid "'text' must be a character string"
msgstr "'text' muss eine Zeichenkette sein"

#: windows/util.c:452
#, c-format
msgid "'%s' must be length 1"
msgstr "'%s' muss Länge 1 haben"

#: windows/util.c:565
#, c-format
msgid "'%s' must be a list"
msgstr "'%s' muss eine Liste sein"

# +
#: windows/util.c:569
#, c-format
msgid "'%s' element %d is not a window handle"
msgstr "'%s' Element %d ist keine Fenster-Handle"

#: windows/widgets.c:109
msgid "Select one or more"
msgstr "Wähle ein oder mehrere"

#: windows/widgets.c:109
msgid "Select one"
msgstr "Wähle eins"

#: windows/widgets.c:183 windows/widgets.c:251
msgid "'default' must be a character string"
msgstr "'default' muss eine Zeichenkette sein"

#: windows/widgets.c:185 windows/widgets.c:253
msgid "'default' is overlong"
msgstr "'default' ist überlang"

#: windows/widgets.c:189 windows/widgets.c:257
msgid "'caption' must be a character string"
msgstr "'caption' muss eine Zeichenkette sein"

#: windows/widgets.c:191
msgid "'multi' must be a logical value"
msgstr "'multi' muss ein boolescher Wert sein"

#: windows/widgets.c:193
msgid "'filterindex' must be an integer value"
msgstr "'filterindex' muss ganzzahlig sein"
