# Dutch messages for gprof.
# Copyright (C) 2008 Free Software Foundation, Inc.
# This file is distributed under the same license as the binutils package.
#
# Tim Van Holder <tim.van.holder@telenet.be>, 2008.
#
msgid ""
msgstr ""
"Project-Id-Version: gprof 2.17.90\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-05-15 16:49+0930\n"
"PO-Revision-Date: 2008-06-03 21:38+0200\n"
"Last-Translator: Tim Van Holder <tim.van.holder@telenet.be>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\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);\n"

#: alpha.c:102 mips.c:54
msgid "<indirect child>"
msgstr "<onrechtstreeks kind>"

#: alpha.c:107 mips.c:59
#, c-format
msgid "[find_call] %s: 0x%lx to 0x%lx\n"
msgstr "[find_call] %s: 0x%lx naar 0x%lx\n"

#: alpha.c:129
#, c-format
msgid "[find_call] 0x%lx: jsr%s <indirect_child>\n"
msgstr "[find_call] 0x%lx: jsr%s <onrechtstreeks kind>\n"

#: alpha.c:139
#, c-format
msgid "[find_call] 0x%lx: bsr"
msgstr "[find_call] 0x%lx: bsr"

#: basic_blocks.c:128 call_graph.c:89 hist.c:105
#, c-format
msgid "%s: %s: unexpected end of file\n"
msgstr "%s: %s: onverwacht einde van bestand\n"

# betere vertaling dan "uitvoeringstellingen" voor "exec counts"
#: basic_blocks.c:196
#, c-format
msgid "%s: warning: ignoring basic-block exec counts (use -l or --line)\n"
msgstr "%s: let op: uitvoeringstellingen van basisblokken worden genegeerd (gebruik -l of --line)\n"

#. FIXME: This only works if bfd_vma is unsigned long.
#: basic_blocks.c:289 basic_blocks.c:299
#, c-format
msgid "%s:%d: (%s:0x%lx) %lu executions\n"
msgstr "%s:%d: (%s:0x%lx) %lu uitvoeringen\n"

#: basic_blocks.c:290 basic_blocks.c:300
msgid "<unknown>"
msgstr "<onbekend>"

# Of voor consistentie ook "telling" gebruiken?
#: basic_blocks.c:543
#, c-format
msgid ""
"\n"
"\n"
"Top %d Lines:\n"
"\n"
"     Line      Count\n"
"\n"
msgstr ""
"\n"
"\n"
"Top %d Lijnen:\n"
"\n"
"     Lijn      Aantal keer uitgevoerd\n"
"\n"

#: basic_blocks.c:567
#, c-format
msgid ""
"\n"
"Execution Summary:\n"
"\n"
msgstr ""
"\n"
"Uitvoeringsoverzicht:\n"
"\n"

#: basic_blocks.c:568
#, c-format
msgid "%9ld   Executable lines in this file\n"
msgstr "%9ld   Uitvoerbare lijnen in dit bestand\n"

#: basic_blocks.c:570
#, c-format
msgid "%9ld   Lines executed\n"
msgstr "%9ld   Lijnen uitgevoerd\n"

#: basic_blocks.c:571
#, c-format
msgid "%9.2f   Percent of the file executed\n"
msgstr "%9.2f   Percent van het bestand uitgevoerd\n"

#: basic_blocks.c:575
#, c-format
msgid ""
"\n"
"%9lu   Total number of line executions\n"
msgstr ""
"\n"
"%9lu   Totaal aantal lijnuitvoeringen\n"

#: basic_blocks.c:577
#, c-format
msgid "%9.2f   Average executions per line\n"
msgstr "%9.2f   Gemiddeld aantal uitvoeringen per lijn\n"

#: call_graph.c:68
#, c-format
msgid "[cg_tally] arc from %s to %s traversed %lu times\n"
msgstr "[cg_tally] boog van %s naar %s werd %lu keer doorlopen\n"

#: cg_print.c:73
#, c-format
msgid ""
"\t\t     Call graph (explanation follows)\n"
"\n"
msgstr ""
"\t\t     Oproepgraaf (uitleg volgt)\n"
"\n"

#: cg_print.c:75
#, c-format
msgid ""
"\t\t\tCall graph\n"
"\n"
msgstr ""
"\t\t\tOproepgraaf\n"
"\n"

# Goede vertaling voor "sample hit" - proeftreffer?
#: cg_print.c:78 hist.c:466
#, c-format
msgid ""
"\n"
"granularity: each sample hit covers %ld byte(s)"
msgstr ""
"\n"
"granulariteit: elke \"sample hit\" bestrijkt %ld byte(s)"

#: cg_print.c:82
#, c-format
msgid ""
" for %.2f%% of %.2f seconds\n"
"\n"
msgstr ""
" voor %.2f%% van %.2f seconden\n"
"\n"

# doorgegeven is ambigu - betere vertaling hier voor "propagated"?
#: cg_print.c:86
#, c-format
msgid ""
" no time propagated\n"
"\n"
msgstr ""
" no time doorgegeven\n"
"\n"

#: cg_print.c:95 cg_print.c:98 cg_print.c:100
msgid "called"
msgstr "opgeroepen"

#: cg_print.c:95 cg_print.c:100
msgid "total"
msgstr "totaal"

#: cg_print.c:95
msgid "parents"
msgstr "ouders"

#: cg_print.c:97 cg_print.c:98
msgid "index"
msgstr "index"

#: cg_print.c:97
#, c-format
msgid "%time"
msgstr "%tijd"

#: cg_print.c:97 cg_print.c:98
msgid "self"
msgstr "zichzelf"

#: cg_print.c:97
msgid "descendants"
msgstr "afstammelingen"

#: cg_print.c:98 hist.c:492
msgid "name"
msgstr "naam"

#: cg_print.c:100
msgid "children"
msgstr "kinderen"

#: cg_print.c:105
#, c-format
msgid "index %% time    self  children    called     name\n"
msgstr "index %% tijd    zelf  kinderen    opgeroepen naam\n"

#: cg_print.c:128
#, c-format
msgid " <cycle %d as a whole> [%d]\n"
msgstr " <cyclus %d als een geheel> [%d]\n"

#: cg_print.c:354
#, c-format
msgid "%6.6s %5.5s %7.7s %11.11s %7.7s %7.7s     <spontaneous>\n"
msgstr "%6.6s %5.5s %7.7s %11.11s %7.7s %7.7s     <spontaan>\n"

#: cg_print.c:355
#, c-format
msgid "%6.6s %5.5s %7.7s %7.7s %7.7s %7.7s     <spontaneous>\n"
msgstr "%6.6s %5.5s %7.7s %7.7s %7.7s %7.7s     <spontaan>\n"

#: cg_print.c:589
#, c-format
msgid ""
"Index by function name\n"
"\n"
msgstr ""
"Index volgens functienaam\n"
"\n"

#: cg_print.c:646 cg_print.c:655
#, c-format
msgid "<cycle %d>"
msgstr "<cyclus %d>"

# is iets zwakker dan het oorspronkelijke "parsen", maar "begrijpen" lijkt me dan weer te sterk
#: corefile.c:59
#, c-format
msgid "%s: unable to parse mapping file %s.\n"
msgstr "%s: inlezen van mappingsbestand %s lukt niet.\n"

#: corefile.c:72
#, c-format
msgid "%s: could not open %s.\n"
msgstr "%s: kan %s niet openen.\n"

#: corefile.c:166
#, c-format
msgid "%s: %s: not in executable format\n"
msgstr "%s: %s: niet in uitvoerbaar formaat\n"

#: corefile.c:177
#, c-format
msgid "%s: can't find .text section in %s\n"
msgstr "%s: kan geen .text sectie vinden in %s\n"

#: corefile.c:252
#, c-format
msgid "%s: ran out room for %lu bytes of text space\n"
msgstr "%s: had geen plaats meer voor %lu bytes aan text-ruimte\n"

# Klinkt nogal zwak
#: corefile.c:266
#, c-format
msgid "%s: can't do -c\n"
msgstr "%s: -c lukt niet\n"

#: corefile.c:305
#, c-format
msgid "%s: -c not supported on architecture %s\n"
msgstr "%s: -c wordt niet ondersteund op de %s architectuur\n"

#: corefile.c:470
#, c-format
msgid "%s: file `%s' has no symbols\n"
msgstr "%s: bestand `%s' heeft geen symbolen\n"

#: corefile.c:772
#, c-format
msgid "%s: somebody miscounted: ltab.len=%d instead of %ld\n"
msgstr "%s: iemand heeft verkeerd geteld: ltab.len=%d in plaats van %ld\n"

#: gmon_io.c:83
#, c-format
msgid "%s: address size has unexpected value of %u\n"
msgstr "%s: adresgrootte heeft een overwachte waarde (%u)\n"

#: gmon_io.c:320 gmon_io.c:416
#, c-format
msgid "%s: file too short to be a gmon file\n"
msgstr "%s: bestand is te kort om een gmon-bestand te kunnen zijn\n"

# betere vertaling voor "magic cookie"?
#: gmon_io.c:330 gmon_io.c:459
#, c-format
msgid "%s: file `%s' has bad magic cookie\n"
msgstr "%s: bestand `%s' heeft verkeerd herkenningsteken\n"

#: gmon_io.c:341
#, c-format
msgid "%s: file `%s' has unsupported version %d\n"
msgstr "%s: bestand `%s' heeft een versie (%d) die niet ondersteund wordt\n"

#: gmon_io.c:371
#, c-format
msgid "%s: %s: found bad tag %d (file corrupted?)\n"
msgstr "%s: %s: slechte tag (%d) gevonden (is het bestand corrupt?)\n"

# is rate hier ratio of eerder snelheid?
#: gmon_io.c:438
#, c-format
msgid "%s: profiling rate incompatible with first gmon file\n"
msgstr "%s: profileringsratio is niet compatibel met het eerste gmon-bestand\n"

#: gmon_io.c:489
#, c-format
msgid "%s: incompatible with first gmon file\n"
msgstr "%s: niet compatibel met het eerste gmon-bestand\n"

#: gmon_io.c:516
#, c-format
msgid "%s: file '%s' does not appear to be in gmon.out format\n"
msgstr "%s: bestand '%s' is blijkbaar niet in \"gmon.out\" formaat\n"

# EOF onvertaald laten? betere vertaling voor "bins"?
#: gmon_io.c:529
#, c-format
msgid "%s: unexpected EOF after reading %d/%d bins\n"
msgstr "%s: onverwacht bestandseinde na het lezen van %d/%d binaire waarden\n"

#: gmon_io.c:563
#, c-format
msgid "time is in ticks, not seconds\n"
msgstr "tijd is uitgedrukt in ticks, niet in seconden\n"

# of beter "ik weet niet hoe ik met bestandsformaat %d moet omgaan"?
#: gmon_io.c:569 gmon_io.c:746
#, c-format
msgid "%s: don't know how to deal with file format %d\n"
msgstr "%s: weet niet hoe bestandsformaat %d behandeld moet worden\n"

#: gmon_io.c:576
#, c-format
msgid "File `%s' (version %d) contains:\n"
msgstr "Bestand `%s' (versie %d) bevat:\n"

#: gmon_io.c:579
#, c-format
msgid "\t%d histogram record\n"
msgstr "\t%d histogram record\n"

#: gmon_io.c:580
#, c-format
msgid "\t%d histogram records\n"
msgstr "\t%d histogram records\n"

#: gmon_io.c:582
#, c-format
msgid "\t%d call-graph record\n"
msgstr "\t%d oproepgraaf record\n"

#: gmon_io.c:583
#, c-format
msgid "\t%d call-graph records\n"
msgstr "\t%d oproepgraaf records\n"

#: gmon_io.c:585
#, c-format
msgid "\t%d basic-block count record\n"
msgstr "\t%d basisbloktelling record\n"

#: gmon_io.c:586
#, c-format
msgid "\t%d basic-block count records\n"
msgstr "\t%d basisbloktelling records\n"

#: gprof.c:158
#, c-format
msgid ""
"Usage: %s [-[abcDhilLsTvwxyz]] [-[ACeEfFJnNOpPqQZ][name]] [-I dirs]\n"
"\t[-d[num]] [-k from/to] [-m min-count] [-t table-length]\n"
"\t[--[no-]annotated-source[=name]] [--[no-]exec-counts[=name]]\n"
"\t[--[no-]flat-profile[=name]] [--[no-]graph[=name]]\n"
"\t[--[no-]time=name] [--all-lines] [--brief] [--debug[=level]]\n"
"\t[--function-ordering] [--file-ordering]\n"
"\t[--directory-path=dirs] [--display-unused-functions]\n"
"\t[--file-format=name] [--file-info] [--help] [--line] [--min-count=n]\n"
"\t[--no-static] [--print-path] [--separate-files]\n"
"\t[--static-call-graph] [--sum] [--table-length=len] [--traditional]\n"
"\t[--version] [--width=n] [--ignore-non-functions]\n"
"\t[--demangle[=STYLE]] [--no-demangle] [@FILE]\n"
"\t[image-file] [profile-file...]\n"
msgstr ""
"Gebruik: %s [-[abcDhilLsTvwxyz]] [-[ACeEfFJnNOpPqQZ][naam]] [-I dirs]\n"
"\t[-d[aantal]] [-k van/tot] [-m min-aantal] [-t tabelgrootte]\n"
"\t[--[no-]annotated-source[=naam]] [--[no-]exec-counts[=naam]]\n"
"\t[--[no-]flat-profile[=naam]] [--[no-]graph[=naam]]\n"
"\t[--[no-]time=naam] [--all-lines] [--brief] [--debug[=graad]]\n"
"\t[--function-ordering] [--file-ordering]\n"
"\t[--directory-path=dirs] [--display-unused-functions]\n"
"\t[--file-format=naam] [--file-info] [--help] [--line] [--min-count=n]\n"
"\t[--no-static] [--print-path] [--separate-files]\n"
"\t[--static-call-graph] [--sum] [--table-length=len] [--traditional]\n"
"\t[--version] [--width=n] [--ignore-non-functions]\n"
"\t[--demangle[=STIJL]] [--no-demangle] [@BESTAND]\n"
"\t[image-bestand] [profielbestand...]\n"

#: gprof.c:174
#, c-format
msgid "Report bugs to %s\n"
msgstr ""
"Meld bugs aan %s\n"
"Meld fouten in de vertaling aan vertaling@vrijschrift.org\n"

#: gprof.c:250
#, c-format
msgid "%s: debugging not supported; -d ignored\n"
msgstr "%s: debuggen wordt niet ondersteund; -d genegeerd\n"

#: gprof.c:330
#, c-format
msgid "%s: unknown file format %s\n"
msgstr "%s: onbekend bestandsformaat %s\n"

#. This output is intended to follow the GNU standards document.
#: gprof.c:414
#, c-format
msgid "GNU gprof %s\n"
msgstr "GNU gprof %s\n"

# Ben niet zeker of die "Regents of" vertaald moet/mag worden...
#: gprof.c:415
#, c-format
msgid "Based on BSD gprof, copyright 1983 Regents of the University of California.\n"
msgstr "Gebaseerd op BSD gprof, copyright 1983 Regents of the University of California.\n"

#: gprof.c:416
#, c-format
msgid "This program is free software.  This program has absolutely no warranty.\n"
msgstr "Dit programma is vrije software.  Er is helemaal geen garantie.\n"

# betere vertaling voor demangle?
#: gprof.c:457
#, c-format
msgid "%s: unknown demangling style `%s'\n"
msgstr "%s: onbekende ontwarringsstijl `%s'\n"

#: gprof.c:477
#, c-format
msgid "%s: Only one of --function-ordering and --file-ordering may be specified.\n"
msgstr "%s: --function-ordering en --file-ordering mogen niet tegelijk opgegeven worden.\n"

#: gprof.c:527
#, c-format
msgid "%s: sorry, file format `prof' is not yet supported\n"
msgstr "%s: sorry, bestandsformaat `prof' wordt nog niet ondersteund\n"

#: gprof.c:581
#, c-format
msgid "%s: gmon.out file is missing histogram\n"
msgstr "%s: bestand gmon.out bevat geen histogram\n"

#: gprof.c:588
#, c-format
msgid "%s: gmon.out file is missing call-graph data\n"
msgstr "%s: bestand gmon.out bevat geen gegevens voor de oproepgraaf\n"

# kan beter denk ik
#: hist.c:133
#, c-format
msgid ""
"%s: dimension unit changed between histogram records\n"
"%s: from '%s'\n"
"%s: to '%s'\n"
msgstr ""
"%s: grootte-eenheid is veranderd tussen histogram records\n"
"%s: van '%s'\n"
"%s: naar '%s'\n"

# moet beter kunnen
#: hist.c:143
#, c-format
msgid ""
"%s: dimension abbreviation changed between histogram records\n"
"%s: from '%c'\n"
"%s: to '%c'\n"
msgstr ""
"%s: grootte-afkorting is veranderd tussen histogram records\n"
"%s: van '%c'\n"
"%s: naar '%c'\n"

#: hist.c:157
#, c-format
msgid "%s: different scales in histogram records"
msgstr "%s: verschillende schalen in histogram records"

#: hist.c:194
#, c-format
msgid "%s: overlapping histogram records\n"
msgstr "%s: histogram records overlappen elkaar\n"

#: hist.c:228
#, c-format
msgid "%s: %s: unexpected EOF after reading %u of %u samples\n"
msgstr "%s: %s: onverwacht bestandseinde na het lezen van %u van de %u stalen\n"

#: hist.c:462
#, c-format
msgid "%c%c/call"
msgstr "%c%c/oproep"

#: hist.c:470
#, c-format
msgid ""
" for %.2f%% of %.2f %s\n"
"\n"
msgstr ""
" voor %.2f%% van %.2f %s\n"
"\n"

# of "staat voor" ipv "telt als"?
#: hist.c:476
#, c-format
msgid ""
"\n"
"Each sample counts as %g %s.\n"
msgstr ""
"\n"
"Elk staal telt als %g %s.\n"

#: hist.c:481
#, c-format
msgid ""
" no time accumulated\n"
"\n"
msgstr ""
" geen tijd verzameld\n"
"\n"

#: hist.c:488
msgid "cumulative"
msgstr "cumulatief"

# weet niet of dit zo goed past
#: hist.c:488
msgid "self  "
msgstr "zichzelf  "

#: hist.c:488
msgid "total "
msgstr "totaal "

#: hist.c:491
msgid "time"
msgstr "tijd"

#: hist.c:491
msgid "calls"
msgstr "oproepen"

#: hist.c:580
#, c-format
msgid ""
"\n"
"\n"
"\n"
"flat profile:\n"
msgstr ""
"\n"
"\n"
"\n"
"vlak profiel:\n"

#: hist.c:586
#, c-format
msgid "Flat profile:\n"
msgstr "Vlak profiel:\n"

#: hist.c:705
#, c-format
msgid "%s: found a symbol that covers several histogram records"
msgstr "%s: symbool gevonden dat meerdere histogram records omvat"

#: mips.c:71
#, c-format
msgid "[find_call] 0x%lx: jal"
msgstr "[find_call] 0x%lx: jal"

#: mips.c:96
#, c-format
msgid "[find_call] 0x%lx: jalr\n"
msgstr "[find_call] 0x%lx: jalr\n"

#: source.c:162
#, c-format
msgid "%s: could not locate `%s'\n"
msgstr "%s: kon `%s' niet vinden\n"

#: source.c:237
#, c-format
msgid "*** File %s:\n"
msgstr "*** Bestand %s:\n"

#: utils.c:99
#, c-format
msgid " <cycle %d>"
msgstr " <cyclus %d>"
