# Dutch translations for GNU gettext-runtime.
# Copyright (C) 2015 Free Software Foundation, Inc.
# This file is distributed under the same license as the gettext package.
#
# "Een jurkje met spaghettibandjes...
# Alsof het niet al lente genoeg was!"
#
# Benno Schulenberg <benno@vertaalt.nl>, 2007, 2010, 2013, 2014, 2015.
# Elros Cyriatan <cyriatan@fastmail.fm>, 2004.
msgid ""
msgstr ""
"Project-Id-Version: gettext-runtime-0.20-rc1\n"
"Report-Msgid-Bugs-To: bug-gettext@gnu.org\n"
"POT-Creation-Date: 2020-07-26 21:56+0200\n"
"PO-Revision-Date: 2019-06-17 18:32+0800\n"
"Last-Translator: Sebastiaan Vandenbore <sebastiaan.vandenbore@gmail.com>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 1.0\n"

#: gnulib-lib/closeout.c:66
msgid "write error"
msgstr "schrijffout"

#: gnulib-lib/error.c:195
msgid "Unknown system error"
msgstr "Onbekende systeemfout"

#: gnulib-lib/getopt.c:278
#, c-format
msgid "%s: option '%s%s' is ambiguous\n"
msgstr "%s: optie '%s%s' is niet eenduidig\n"

#: gnulib-lib/getopt.c:284
#, c-format
msgid "%s: option '%s%s' is ambiguous; possibilities:"
msgstr "%s: optie '%s%s' is niet eenduidig; mogelijkheden zijn:"

#: gnulib-lib/getopt.c:319
#, c-format
msgid "%s: unrecognized option '%s%s'\n"
msgstr "%s: onbekende optie '%s%s'\n"

#: gnulib-lib/getopt.c:345
#, c-format
msgid "%s: option '%s%s' doesn't allow an argument\n"
msgstr "%s: optie '%s%s' staat geen argument toe\n"

#: gnulib-lib/getopt.c:360
#, c-format
msgid "%s: option '%s%s' requires an argument\n"
msgstr "%s: optie '%s%s' vereist een argument\n"

#: gnulib-lib/getopt.c:621
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: ongeldige optie -- '%c'\n"

#: gnulib-lib/getopt.c:636 gnulib-lib/getopt.c:682
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: optie vereist een argument -- '%c'\n"

#: gnulib-lib/xmalloc.c:38
#, c-format
msgid "memory exhausted"
msgstr "onvoldoende geheugen beschikbaar"

#: src/envsubst.c:110 src/gettext.c:135 src/ngettext.c:124
#, fuzzy, c-format, no-wrap
#| msgid ""
#| "Copyright (C) %s Free Software Foundation, Inc.\n"
#| "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>\n"
#| "This is free software: you are free to change and redistribute it.\n"
#| "There is NO WARRANTY, to the extent permitted by law.\n"
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
"License GPLv3+: GNU GPL version 3 or later <%s>\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
"Copyright (C) %s Free Software Foundation Inc.\n"
"Licentie GPLv3+: GNU GPL-versie 3 of nieuwer <http://gnu.org/licenses/gpl.html>\n"
"Dit is vrije software: u mag het vrijelijk wijzigen en verder verspreiden.\n"
"Er is GEEN GARANTIE, voor zover de wet dit toestaat.\n"

#: src/envsubst.c:116 src/gettext.c:141 src/ngettext.c:130
#, c-format
msgid "Written by %s.\n"
msgstr "Geschreven door %s.\n"

#. This is a proper name. See the gettext manual, section Names.
#: src/envsubst.c:116
msgid "Bruno Haible"
msgstr "Bruno Haible"

#: src/envsubst.c:125 src/gettext.c:159 src/ngettext.c:142
#, c-format
msgid "too many arguments"
msgstr "te veel argumenten"

#: src/envsubst.c:136 src/gettext.c:169 src/ngettext.c:154
#, c-format
msgid "missing arguments"
msgstr "ontbrekende argumenten"

#: src/envsubst.c:174 src/gettext.c:246 src/ngettext.c:211
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Typ '%s --help' voor meer informatie.\n"

#: src/envsubst.c:179
#, c-format, no-wrap
msgid "Usage: %s [OPTION] [SHELL-FORMAT]\n"
msgstr "Gebruik:  %s [OPTIE] [SHELL-OPMAAK]\n"

#: src/envsubst.c:184
#, c-format, no-wrap
msgid "Substitutes the values of environment variables.\n"
msgstr "Vervangt de waarden van omgevingsvariabelen.\n"

#: src/envsubst.c:188
#, c-format, no-wrap
msgid "Operation mode:\n"
msgstr "Werkingsmodus:\n"

#: src/envsubst.c:191
#, c-format, no-wrap
msgid "  -v, --variables             output the variables occurring in SHELL-FORMAT\n"
msgstr "  -v, --variables     de variabelen die voorkomen in SHELL-OPMAAK tonen\n"

#: src/envsubst.c:195 src/gettext.c:275 src/ngettext.c:241
#, c-format, no-wrap
msgid "Informative output:\n"
msgstr "Informatieve uitvoer:\n"

#: src/envsubst.c:198
#, c-format, no-wrap
msgid "  -h, --help                  display this help and exit\n"
msgstr "  -h, --help          deze hulptekst tonen en stoppen\n"

#: src/envsubst.c:201
#, c-format, no-wrap
msgid "  -V, --version               output version information and exit\n"
msgstr "  -V, --version       programmaversie tonen en stoppen\n"

#: src/envsubst.c:205
#, c-format, no-wrap
msgid ""
"In normal operation mode, standard input is copied to standard output,\n"
"with references to environment variables of the form $VARIABLE or ${VARIABLE}\n"
"being replaced with the corresponding values.  If a SHELL-FORMAT is given,\n"
"only those environment variables that are referenced in SHELL-FORMAT are\n"
"substituted; otherwise all environment variables references occurring in\n"
"standard input are substituted.\n"
msgstr ""
"In gewone werkingsmodus wordt standaardinvoer gekopieerd naar standaarduitvoer,\n"
"waarbij verwijzingen naar omgevingsvariabelen van de vorm $VARIABELE of\n"
"${VARIABELE} worden vervangen door de corresponderende waarden.  Als een\n"
"SHELL-OPMAAK gegeven is, worden alleen de omgevingsvariabelen vervangen\n"
"waarnaar verwezen wordt in SHELL-OPMAAK; anders worden alle verwijzingen\n"
"naar omgevingsvariabelen die in standaardinvoer voorkomen vervangen.\n"

#: src/envsubst.c:214
#, c-format, no-wrap
msgid ""
"When --variables is used, standard input is ignored, and the output consists\n"
"of the environment variables that are referenced in SHELL-FORMAT, one per line.\n"
msgstr ""
"Als '--variables' wordt gebruikt, wordt standaardinvoer genegeerd; de\n"
"uitvoer bestaat dan uit de omgevingsvariabelen waarnaar in SHELL-OPMAAK\n"
"wordt verwezen, één per regel.\n"

#. TRANSLATORS: The first placeholder is the web address of the Savannah
#. project of this package.  The second placeholder is the bug-reporting
#. email address for this package.  Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
#: src/envsubst.c:223 src/gettext.c:299 src/ngettext.c:262
#, c-format
msgid ""
"Report bugs in the bug tracker at <%s>\n"
"or by email to <%s>.\n"
msgstr ""

#: src/envsubst.c:451
#, c-format
msgid "error while reading \"%s\""
msgstr "fout tijdens lezen van '%s'"

#: src/envsubst.c:451
msgid "standard input"
msgstr "standaardinvoer"

#. This is a proper name. See the gettext manual, section Names.
#: src/gettext.c:141 src/ngettext.c:130
msgid "Ulrich Drepper"
msgstr "Ulrich Drepper"

#: src/gettext.c:251
#, c-format, no-wrap
msgid ""
"Usage: %s [OPTION] [[TEXTDOMAIN] MSGID]\n"
"or:    %s [OPTION] -s [MSGID]...\n"
msgstr ""
"Gebruik:  %s [OPTIE] [[TEKSTDOMEIN] MSGID]\n"
"     of:  %s [OPTIE] -s [MSGID]...\n"

#: src/gettext.c:257
#, c-format, no-wrap
msgid "Display native language translation of a textual message.\n"
msgstr "Toont de vertaling van een tekstbericht.\n"

#: src/gettext.c:261
#, c-format, no-wrap
msgid "  -d, --domain=TEXTDOMAIN   retrieve translated messages from TEXTDOMAIN\n"
msgstr "  -d, --domain=TEKSTDOMEIN   haal vertaalde berichten op van TEKSTDOMEIN\n"

#: src/gettext.c:263 src/ngettext.c:228
#, c-format
msgid "  -c, --context=CONTEXT     specify context for MSGID\n"
msgstr "  -c, --context=CONTEXT     specificeer context voor MSGID\n"

#: src/gettext.c:265 src/ngettext.c:230
#, c-format
msgid "  -e                        enable expansion of some escape sequences\n"
msgstr ""
"  -e                        maak uitbreiding van enkele escape-sequences "
"mogelijk\n"

#: src/gettext.c:267
#, c-format
msgid "  -n                        suppress trailing newline\n"
msgstr "  -n                        onderdruk volg nieuwe regel\n"

#: src/gettext.c:269 src/ngettext.c:232
#, c-format
msgid "  -E                        (ignored for compatibility)\n"
msgstr "  -E                        (genegeerd voor compatibiliteit)\n"

#: src/gettext.c:271
#, c-format
msgid ""
"  [TEXTDOMAIN] MSGID        retrieve translated message corresponding\n"
"                            to MSGID from TEXTDOMAIN\n"
msgstr ""
"  [TEKSTDOMEIN] MSGID        haal vertaalde bericht op dat overeenstemt\n"
"                            met MSGID van TEKSTDOMEIN\n"

#: src/gettext.c:277 src/ngettext.c:243
#, c-format
msgid "  -h, --help                display this help and exit\n"
msgstr "  -h, --help                deze hulptekst tonen en stoppen\n"

#: src/gettext.c:279 src/ngettext.c:245
#, c-format
msgid "  -V, --version             display version information and exit\n"
msgstr "  -V, --version             programmaversie tonen en stoppen\n"

#: src/gettext.c:283
#, c-format, no-wrap
msgid ""
"If the TEXTDOMAIN parameter is not given, the domain is determined from the\n"
"environment variable TEXTDOMAIN.  If the message catalog is not found in the\n"
"regular directory, another location can be specified with the environment\n"
"variable TEXTDOMAINDIR.\n"
"When used with the -s option the program behaves like the 'echo' command.\n"
"But it does not simply copy its arguments to stdout.  Instead those messages\n"
"found in the selected catalog are translated.\n"
"Standard search directory: %s\n"
msgstr ""
"Als er geen TEKSTDOMEIN gegeven is, dan bepaalt de omgevingsvariabele\n"
"TEXTDOMAIN het domein.  Als de berichtencatalogus zich niet in de\n"
"standaardmap bevindt, dan kan een andere locatie worden opgegeven via\n"
"de omgevingsvariabele TEXTDOMAINDIR.\n"
"Wanneer optie '-s' gebruikt wordt, gedraagt het programma zich als de\n"
"opdracht 'echo'.  Het kopieert echter niet eenvoudigweg de argumenten\n"
"naar standaarduitvoer, maar geeft de vertaling van de berichten die\n"
"in de gekozen catalogus gevonden worden.\n"
"De standaard zoekmap is: %s\n"

#: src/ngettext.c:216
#, c-format, no-wrap
msgid "Usage: %s [OPTION] [TEXTDOMAIN] MSGID MSGID-PLURAL COUNT\n"
msgstr "Gebruik:  %s [OPTIE] [TEKSTDOMEIN] MSGID MSGID-MEERVOUD AANTAL\n"

#: src/ngettext.c:221
#, c-format, no-wrap
msgid ""
"Display native language translation of a textual message whose grammatical\n"
"form depends on a number.\n"
msgstr ""
"Toont de vertaling van een tekstbericht waarvan de grammaticale vorm\n"
"afhangt van een getal.\n"

#: src/ngettext.c:226
#, c-format, no-wrap
msgid "  -d, --domain=TEXTDOMAIN   retrieve translated message from TEXTDOMAIN\n"
msgstr "  -d, --domain=TEKSTDOMEIN   haal vertaalde bericht op van TEKSTDOMEIN\n"

#: src/ngettext.c:234
#, c-format
msgid ""
"  [TEXTDOMAIN]              retrieve translated message from TEXTDOMAIN\n"
msgstr ""
"  [TEKSTDOMEIN]              haal vertaalde bericht op van TEKSTDOMEIN\n"

#: src/ngettext.c:236
#, c-format
msgid ""
"  MSGID MSGID-PLURAL        translate MSGID (singular) / MSGID-PLURAL "
"(plural)\n"
msgstr ""
"  MSGID MSGID-PLURAL        vertaal MSGID (enkelvoudig) / MSGID-PLURAL "
"(meervoudig)\n"

#: src/ngettext.c:238
#, c-format
msgid ""
"  COUNT                     choose singular/plural form based on this value\n"
msgstr ""
"  COUNT                     kies enkelvoud- of meervoudsvorm op basis van "
"deze waarde\n"

#: src/ngettext.c:249
#, c-format, no-wrap
msgid ""
"If the TEXTDOMAIN parameter is not given, the domain is determined from the\n"
"environment variable TEXTDOMAIN.  If the message catalog is not found in the\n"
"regular directory, another location can be specified with the environment\n"
"variable TEXTDOMAINDIR.\n"
"Standard search directory: %s\n"
msgstr ""
"Als er geen argument TEKSTDOMEIN gegeven is, wordt het domein bepaald uit\n"
"de omgevingsvariabele TEXTDOMAIN.  Als de berichtencatalogus niet gevonden\n"
"wordt in de gewone map, kan een andere locatie worden opgegeven via de\n"
"omgevingsvariabele TEXTDOMAINDIR.\n"
"De standaard zoekmap is: %s\n"

#~ msgid "Report bugs to <bug-gnu-gettext@gnu.org>.\n"
#~ msgstr ""
#~ "Rapporteer gebreken in het programma aan <bug-gnu-gettext@gnu.org>;\n"
#~ "meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"

#~ msgid "%s: option '--%s' doesn't allow an argument\n"
#~ msgstr "%s: optie '--%s' staat geen argument toe\n"

#~ msgid "%s: unrecognized option '--%s'\n"
#~ msgstr "%s: onbekende optie '--%s'\n"

#~ msgid "%s: option '-W %s' is ambiguous\n"
#~ msgstr "%s: optie '-W %s' is niet eenduidig\n"

#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
#~ msgstr "%s: optie '-W %s' staat geen argument toe\n"

#~ msgid "%s: option '-W %s' requires an argument\n"
#~ msgstr "%s: optie '-W %s' vereist een argument\n"

#~ msgid ""
#~ "  -d, --domain=TEXTDOMAIN   retrieve translated messages from TEXTDOMAIN\n"
#~ "  -e                        enable expansion of some escape sequences\n"
#~ "  -E                        (ignored for compatibility)\n"
#~ "  -h, --help                display this help and exit\n"
#~ "  -n                        suppress trailing newline\n"
#~ "  -V, --version             display version information and exit\n"
#~ "  [TEXTDOMAIN] MSGID        retrieve translated message corresponding\n"
#~ "                            to MSGID from TEXTDOMAIN\n"
#~ msgstr ""
#~ "  -d, --domain=TEKSTDOMEIN  vertalingen opzoeken in TEKSTDOMEIN\n"
#~ "  -e                        sommige stuurcodereeksen interpreteren\n"
#~ "  -E                        (genegeerd, maar herkend wegens "
#~ "compatibiliteit)\n"
#~ "  -h, --help                deze hulptekst tonen en stoppen\n"
#~ "  -n                        afsluitend regeleindeteken onderdrukken\n"
#~ "  -V, --version             programmaversie tonen en stoppen\n"
#~ "  [TEKSTDOMEIN] MSGID       vertaling van MSGID opzoeken (in "
#~ "TEKSTDOMEIN)\n"

#~ msgid ""
#~ "  -d, --domain=TEXTDOMAIN   retrieve translated message from TEXTDOMAIN\n"
#~ "  -e                        enable expansion of some escape sequences\n"
#~ "  -E                        (ignored for compatibility)\n"
#~ "  -h, --help                display this help and exit\n"
#~ "  -V, --version             display version information and exit\n"
#~ "  [TEXTDOMAIN]              retrieve translated message from TEXTDOMAIN\n"
#~ "  MSGID MSGID-PLURAL        translate MSGID (singular) / MSGID-PLURAL "
#~ "(plural)\n"
#~ "  COUNT                     choose singular/plural form based on this "
#~ "value\n"
#~ msgstr ""
#~ "  -d, --domain=TEKSTDOMEIN  vertalingen opzoeken in TEKSTDOMEIN\n"
#~ "  -e                        sommige stuurcodereeksen interpreteren\n"
#~ "  -E                        (genegeerd, maar herkend wegens "
#~ "compatibiliteit)\n"
#~ "  -h, --help                deze hulptekst tonen en stoppen\n"
#~ "  -V, --version             programmaversie tonen en stoppen\n"
#~ "  [TEKSTDOMEIN]             vertaald bericht opzoeken in TEKSTDOMEIN\n"
#~ "  MSGID MSGID-MEERVOUD      MSGID (enkelvoud) en MSGID-MEERVOUD vertalen\n"
#~ "  AANTAL                    enkel- of meervoud kiezen gebaseerd op deze "
#~ "waarde\n"
