# 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: 2018-03-30 07:34-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:78
#: windows/widgets.c:81 windows/widgets.c:86
#, 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
#, c-format
msgid "corrupt data frame -- length of column %d does not 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
msgid "corrupt matrix -- dims not 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"

#: 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:318
msgid "unable to open the clipboard"
msgstr "kann Zwischenablage nicht öffnen"

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

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

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

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

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

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

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

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

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

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

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

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

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