# Dutch translations for GNU gettext-examples.
# Copyright (C) 2015 Yoyodyne, Inc. (msgids)
# This file is distributed under the same license as the gettext package.
#
# "There are three basic rules for writing a novel.
# Unfortunately nobody knows what they are."
#
# Benno Schulenberg <benno@vertaalt.nl>, 2007, 2014, 2015, 2019.
# Elros Cyriatan <cyriatan@fastmail.fm>, 2004.
msgid ""
msgstr ""
"Project-Id-Version: gettext-examples-0.20-rc1\n"
"Report-Msgid-Bugs-To: bug-gettext@gnu.org\n"
"POT-Creation-Date: 2020-04-11 22:35+0200\n"
"PO-Revision-Date: 2019-06-29 09:38+0200\n"
"Last-Translator: Benno Schulenberg <vertaling@coevern.nl>\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"

#: hello-c/hello.c:30 hello-c-gnome/hello.c:46
#: hello-c-gnome3/hello.desktop.in.in:5 hello-c++/hello.cc:39
#: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42
#: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68
#: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49
#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12
#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12
#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31
#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23
#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27
#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29
#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world
#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13
#: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12
#: hello-php/hello.php:12
msgid "Hello, world!"
msgstr "Hallo, wereld!"

#: hello-c/hello.c:31 hello-c-gnome/hello.c:51 hello-c++/hello.cc:40
#: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71
#: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58
#: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14
#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12
#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14
#, php-format
msgid "This program is running as process number %d."
msgstr "Dit programma draait als proces nummer %d."

#: hello-c-gnome3/hello.c:79
#, c-format
msgid ""
"<big>Hello world!</big>\n"
"This program is running as process number <b>%d</b>."
msgstr ""
"<big>Hallo wereld!</big>\n"
"Dit programma draait als proces nummer <b>%d</b>."

#: hello-c-gnome3/hello.c:84
msgid "<big><u>This is another text</u></big>"
msgstr "<big><u>Dit is een andere tekst</u></big>"

#: hello-c-gnome3/hello.c:86
msgid "<big><i>This is yet another text</i></big>"
msgstr "<big><i>Dit is nog weer een andere tekst</i></big>"

#: hello-c-gnome3/hello.desktop.in.in:4
msgid "Hello"
msgstr "Hallo"

#: hello-c-gnome3/hello.ui:6
msgid "Example Application"
msgstr "Voorbeeldtoepassing"

#: hello-c-gnome3/hello.ui:34
msgid "Update text"
msgstr "Tekst bijwerken"

#: hello-c-gnome3/hello.gschema.xml:8
msgid "Use XML markup"
msgstr "XML-markup gebruiken"

#: hello-c-gnome3/hello.gschema.xml:9
msgid "Whether to use XML markup in the text."
msgstr "Of er XML-markup gebruikt moet worden in de tekst."

#: hello-c++-qt/hello.cc:52 hello-c++-kde/hellowindow.cc:49
#: hello-smalltalk/hello.st.in:32 hello-ycp/hello.ycp:19
#, ycp-format
msgid "This program is running as process number %1."
msgstr "Dit programma draait als proces nummer %1."

#: hello-c++-kde/hello.cc:46
msgid "Hello example"
msgstr "'Hallo'-voorbeeld"

#: hello-c++-kde/hello.cc:48
msgid "Hello world example"
msgstr "'Hallo wereld'-voorbeeld"

#: hello-sh/hello.sh:17
#, sh-format
msgid "This program is running as process number $pid."
msgstr "Dit programma draait als proces nummer $pid."

#: hello-python/hello.py.in:13
#, python-format
msgid "This program is running as process number %(pid)d."
msgstr "Dit programma draait als proces nummer %(pid)d."

#: hello-clisp/hello.lisp.in:13 hello-guile/hello.scm:17
#, scheme-format
msgid "This program is running as process number ~D."
msgstr "Dit programma draait als proces nummer ~D."

#: hello-java/Hello.java:18 hello-java-awt/Hello.java:28
#: hello-java-swing/Hello.java:25 hello-java-qtjambi/Hello.java:34
#: hello-csharp/hello.cs:17 hello-csharp-forms/hello.cs:36
#, csharp-format
msgid "This program is running as process number {0}."
msgstr "Dit programma draait als proces nummer {0}."

#: hello-perl/hello-2.pl.in:14
#, perl-brace-format
msgid "This program is running as process number {pid}."
msgstr "Dit programma draait als proces nummer {pid}."
