summaryrefslogtreecommitdiff
path: root/support/dktools/dktools
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/dktools/dktools
Initial commit
Diffstat (limited to 'support/dktools/dktools')
-rw-r--r--support/dktools/dktools/charmap/currency-europe.t2l1
-rw-r--r--support/dktools/dktools/charmap/dingbats.t2l162
-rw-r--r--support/dktools/dktools/charmap/iso-latin-1.t2l187
-rw-r--r--support/dktools/dktools/charmap/latin-extended-a.t2l125
-rw-r--r--support/dktools/dktools/charmap/textsym.t2l9
-rw-r--r--support/dktools/dktools/de/bmpp.txt243
-rw-r--r--support/dktools/dktools/de/dk-blks.str37
-rw-r--r--support/dktools/dktools/de/dk-blks.txt44
-rw-r--r--support/dktools/dktools/de/dk-bmm.str56
-rw-r--r--support/dktools/dktools/de/dk-bmm.txt63
-rw-r--r--support/dktools/dktools/de/dk-cat.str68
-rw-r--r--support/dktools/dktools/de/dk-cat.txt91
-rw-r--r--support/dktools/dktools/de/dk-db2t.str28
-rw-r--r--support/dktools/dktools/de/dk-db2t.txt107
-rw-r--r--support/dktools/dktools/de/dk-dbco.str32
-rw-r--r--support/dktools/dktools/de/dk-dbco.txt89
-rw-r--r--support/dktools/dktools/de/dk-fic.str116
-rw-r--r--support/dktools/dktools/de/dk-fic.txt95
-rw-r--r--support/dktools/dktools/de/dk-hex.str24
-rw-r--r--support/dktools/dktools/de/dk-hex.txt50
-rw-r--r--support/dktools/dktools/de/dk-ls.str93
-rw-r--r--support/dktools/dktools/de/dk-ls.txt288
-rw-r--r--support/dktools/dktools/de/dk-pwd.str2
-rw-r--r--support/dktools/dktools/de/dk-pwd.txt40
-rw-r--r--support/dktools/dktools/de/dk-pwgen.str110
-rw-r--r--support/dktools/dktools/de/dk-pwgen.txt127
-rw-r--r--support/dktools/dktools/de/dk-recv.str35
-rw-r--r--support/dktools/dktools/de/dk-recv.txt67
-rw-r--r--support/dktools/dktools/de/dk-send.str71
-rw-r--r--support/dktools/dktools/de/dk-send.txt79
-rw-r--r--support/dktools/dktools/de/dk-sort.str36
-rw-r--r--support/dktools/dktools/de/dk-sort.txt112
-rw-r--r--support/dktools/dktools/de/dk-sqlsplit.txt45
-rw-r--r--support/dktools/dktools/de/dk-t2db.str76
-rw-r--r--support/dktools/dktools/de/dk-t2db.txt124
-rw-r--r--support/dktools/dktools/de/dk-t2h.str66
-rw-r--r--support/dktools/dktools/de/dk-t2h.txt63
-rw-r--r--support/dktools/dktools/de/dk-t2l.str71
-rw-r--r--support/dktools/dktools/de/dk-t2l.txt117
-rw-r--r--support/dktools/dktools/de/dk-uid.str49
-rw-r--r--support/dktools/dktools/de/dk-uid.txt38
-rw-r--r--support/dktools/dktools/de/dk3app.str1362
-rw-r--r--support/dktools/dktools/de/dk3bifa.str42
-rw-r--r--support/dktools/dktools/de/dk3bmeps.str254
-rw-r--r--support/dktools/dktools/de/dk3fig.str45
-rw-r--r--support/dktools/dktools/de/dk3print.str223
-rw-r--r--support/dktools/dktools/de/dk3wreg.str82
-rw-r--r--support/dktools/dktools/de/dk4dbia.str40
-rw-r--r--support/dktools/dktools/de/dk4info.str15
-rw-r--r--support/dktools/dktools/de/dk4info.txt40
-rw-r--r--support/dktools/dktools/de/dk4uc2l.str67
-rw-r--r--support/dktools/dktools/de/dkct.txt94
-rw-r--r--support/dktools/dktools/de/dkct3.str389
-rw-r--r--support/dktools/dktools/de/dkdbtool.str95
-rw-r--r--support/dktools/dktools/de/dkdbtool.txt111
-rw-r--r--support/dktools/dktools/de/dknet4.str217
-rw-r--r--support/dktools/dktools/de/dknet4.txt70
-rw-r--r--support/dktools/dktools/de/dkwt-boot.txt55
-rw-r--r--support/dktools/dktools/de/dkwt-clp.txt44
-rw-r--r--support/dktools/dktools/de/dkwt-env.txt117
-rw-r--r--support/dktools/dktools/de/dkwt-groups.txt41
-rw-r--r--support/dktools/dktools/de/dkwt-help.txt202
-rw-r--r--support/dktools/dktools/de/dkwt-keep.txt42
-rw-r--r--support/dktools/dktools/de/dkwt-login.txt55
-rw-r--r--support/dktools/dktools/de/dkwt-logout.txt55
-rw-r--r--support/dktools/dktools/de/dkwt-print.txt37
-rw-r--r--support/dktools/dktools/de/dkwt-printers.txt37
-rw-r--r--support/dktools/dktools/de/dkwt-shutdown.txt55
-rw-r--r--support/dktools/dktools/de/dkwt-unkeep.txt38
-rw-r--r--support/dktools/dktools/de/dkwt-users.txt41
-rw-r--r--support/dktools/dktools/de/dkwt.str501
-rw-r--r--support/dktools/dktools/de/dkwx.str45
-rw-r--r--support/dktools/dktools/de/dkwxpath.str88
-rw-r--r--support/dktools/dktools/de/dkwxwiz.str66
-rw-r--r--support/dktools/dktools/de/dkwxwiz.txt89
-rw-r--r--support/dktools/dktools/de/fig2lat.str147
-rw-r--r--support/dktools/dktools/de/fig2lat.txt265
-rw-r--r--support/dktools/dktools/de/htmlbook.str313
-rw-r--r--support/dktools/dktools/de/htmlbook.txt327
-rw-r--r--support/dktools/dktools/de/itadmin.str961
-rw-r--r--support/dktools/dktools/de/lprngcl.str53
-rw-r--r--support/dktools/dktools/de/lprngcl.txt70
-rw-r--r--support/dktools/dktools/de/pjsnmp.str355
-rw-r--r--support/dktools/dktools/de/plpdftex.str156
-rw-r--r--support/dktools/dktools/de/printqd.str60
-rw-r--r--support/dktools/dktools/de/printqda.str65
-rw-r--r--support/dktools/dktools/de/printqdc.str132
-rw-r--r--support/dktools/dktools/de/printqdi.str56
-rw-r--r--support/dktools/dktools/de/winprint.str184
-rw-r--r--support/dktools/dktools/de/wprclean.str21
-rw-r--r--support/dktools/dktools/de/wprclean.txt66
-rw-r--r--support/dktools/dktools/de/wxbmpp.str482
-rw-r--r--support/dktools/dktools/de/wxdkclock.str116
-rw-r--r--support/dktools/dktools/de/wxdkct.str333
-rw-r--r--support/dktools/dktools/de/wxdkfcs.str79
-rw-r--r--support/dktools/dktools/de/wxdkhtb.str76
-rw-r--r--support/dktools/dktools/de/wxdkscrsz.str120
-rw-r--r--support/dktools/dktools/de/wximgsz.str225
-rw-r--r--support/dktools/dktools/de/wxpqdc.str189
-rw-r--r--support/dktools/dktools/de/x.txt46
-rw-r--r--support/dktools/dktools/dkwxwiza.txt419
-rw-r--r--support/dktools/dktools/dkwxwizc.txt45
-rw-r--r--support/dktools/dktools/dkwxwizf.txt371
-rw-r--r--support/dktools/dktools/dkwxwizh.txt131
-rw-r--r--support/dktools/dktools/dkwxwizm.txt85
-rw-r--r--support/dktools/dktools/dkwxwizr.txt37
-rw-r--r--support/dktools/dktools/dkwxwizv.txt404
-rw-r--r--support/dktools/dktools/dkwxwizx.txt43
-rw-r--r--support/dktools/dktools/en/ChooseDirectory.pngbin0 -> 259 bytes
-rw-r--r--support/dktools/dktools/en/Exit.pngbin0 -> 303 bytes
-rw-r--r--support/dktools/dktools/en/Options.pngbin0 -> 336 bytes
-rw-r--r--support/dktools/dktools/en/Run.pngbin0 -> 318 bytes
-rw-r--r--support/dktools/dktools/en/dk-blks.txt42
-rw-r--r--support/dktools/dktools/en/dk-bmm.txt63
-rw-r--r--support/dktools/dktools/en/dk-cat.txt85
-rw-r--r--support/dktools/dktools/en/dk-db2t.txt102
-rw-r--r--support/dktools/dktools/en/dk-dbco.txt82
-rw-r--r--support/dktools/dktools/en/dk-fic.txt96
-rw-r--r--support/dktools/dktools/en/dk-hex.txt51
-rw-r--r--support/dktools/dktools/en/dk-ls.txt271
-rw-r--r--support/dktools/dktools/en/dk-pwd.txt39
-rw-r--r--support/dktools/dktools/en/dk-pwgen.txt139
-rw-r--r--support/dktools/dktools/en/dk-recv.txt66
-rw-r--r--support/dktools/dktools/en/dk-send.txt77
-rw-r--r--support/dktools/dktools/en/dk-sort.txt106
-rw-r--r--support/dktools/dktools/en/dk-sqlsplit.txt42
-rw-r--r--support/dktools/dktools/en/dk-t2db.txt116
-rw-r--r--support/dktools/dktools/en/dk-t2h.txt61
-rw-r--r--support/dktools/dktools/en/dk-t2l.txt114
-rw-r--r--support/dktools/dktools/en/dk-uid.txt38
-rw-r--r--support/dktools/dktools/en/dk4info.txt40
-rw-r--r--support/dktools/dktools/en/lprngcl.txt69
-rw-r--r--support/dktools/dktools/en/x.txt47
-rw-r--r--support/dktools/dktools/htmlbook/GNUmakefile145
-rw-r--r--support/dktools/dktools/htmlbook/chm.hbt1
-rw-r--r--support/dktools/dktools/htmlbook/home.fig22
-rw-r--r--support/dktools/dktools/htmlbook/home.pngbin0 -> 1145 bytes
-rw-r--r--support/dktools/dktools/htmlbook/index.fig24
-rw-r--r--support/dktools/dktools/htmlbook/index.pngbin0 -> 1474 bytes
-rw-r--r--support/dktools/dktools/htmlbook/index.prj186
-rw-r--r--support/dktools/dktools/htmlbook/math-img.tex34
-rw-r--r--support/dktools/dktools/htmlbook/next.fig22
-rw-r--r--support/dktools/dktools/htmlbook/next.pngbin0 -> 1155 bytes
-rw-r--r--support/dktools/dktools/htmlbook/prev.fig22
-rw-r--r--support/dktools/dktools/htmlbook/prev.pngbin0 -> 1150 bytes
-rw-r--r--support/dktools/dktools/htmlbook/style.css1295
-rw-r--r--support/dktools/dktools/htmlbook/toc.fig36
-rw-r--r--support/dktools/dktools/htmlbook/toc.pngbin0 -> 1091 bytes
-rw-r--r--support/dktools/dktools/htmlbook/web.hbt24
-rw-r--r--support/dktools/dktools/itadmin/it-de.sql314
-rw-r--r--support/dktools/dktools/itadmin/it-latin1.sql312
-rw-r--r--support/dktools/dktools/itadmin/it-utf8.sql312
-rw-r--r--support/dktools/dktools/print-snmp.conf174
153 files changed, 19191 insertions, 0 deletions
diff --git a/support/dktools/dktools/charmap/currency-europe.t2l b/support/dktools/dktools/charmap/currency-europe.t2l
new file mode 100644
index 0000000000..a1be35dbde
--- /dev/null
+++ b/support/dktools/dktools/charmap/currency-europe.t2l
@@ -0,0 +1 @@
+20AC t=\euro{} p=eurosym
diff --git a/support/dktools/dktools/charmap/dingbats.t2l b/support/dktools/dktools/charmap/dingbats.t2l
new file mode 100644
index 0000000000..4112d73e18
--- /dev/null
+++ b/support/dktools/dktools/charmap/dingbats.t2l
@@ -0,0 +1,162 @@
+2701 t=\ding{33} p=pifont
+2702 t=\ding{34} p=pifont
+2703 t=\ding{35} p=pifont
+2704 t=\ding{36} p=pifont
+2706 t=\ding{38} p=pifont
+2707 t=\ding{39} p=pifont
+2708 t=\ding{40} p=pifont
+2709 t=\ding{41} p=pifont
+270C t=\ding{44} p=pifont
+270D t=\ding{45} p=pifont
+270E t=\ding{46} p=pifont
+270F t=\ding{47} p=pifont
+2710 t=\ding{48} p=pifont
+2711 t=\ding{49} p=pifont
+2712 t=\ding{50} p=pifont
+2713 b=\checkmark{} t=\ding{51} p=pifont
+2714 t=\ding{52} p=pifont
+2715 t=\ding{53} p=pifont
+2716 t=\ding{54} p=pifont
+2717 t=\ding{55} p=pifont
+2718 t=\ding{56} p=pifont
+2719 t=\ding{57} p=pifont
+271A t=\ding{58} p=pifont
+271B t=\ding{59} p=pifont
+271C t=\ding{60} p=pifont
+271D t=\ding{61} p=pifont
+271E t=\ding{62} p=pifont
+271F t=\ding{63} p=pifont
+2720 b=\maltese{}
+2721 t=\ding{65} p=pifont
+2722 t=\ding{66} p=pifont
+2723 t=\ding{67} p=pifont
+2724 t=\ding{68} p=pifont
+2725 t=\ding{69} p=pifont
+2726 t=\ding{70} p=pifont
+2727 t=\ding{71} p=pifont
+2729 t=\ding{73} p=pifont
+272A t=\ding{74} p=pifont
+272B t=\ding{75} p=pifont
+272C t=\ding{76} p=pifont
+272D t=\ding{77} p=pifont
+272E t=\ding{78} p=pifont
+272F t=\ding{79} p=pifont
+2730 t=\ding{80} p=pifont
+2731 t=\ding{81} p=pifont
+2732 t=\ding{82} p=pifont
+2733 t=\ding{83} p=pifont
+2734 t=\ding{84} p=pifont
+2735 t=\ding{85} p=pifont
+2736 t=\ding{86} p=pifont
+2737 t=\ding{87} p=pifont
+2738 t=\ding{88} p=pifont
+2739 t=\ding{89} p=pifont
+273A t=\ding{90} p=pifont
+273B t=\ding{91} p=pifont
+273C t=\ding{92} p=pifont
+273D t=\ding{93} p=pifont
+273E t=\ding{94} p=pifont
+273F t=\ding{95} p=pifont
+2740 t=\ding{96} p=pifont
+2741 t=\ding{97} p=pifont
+2742 t=\ding{98} p=pifont
+2743 t=\ding{99} p=pifont
+2744 t=\ding{100} p=pifont
+2745 t=\ding{101} p=pifont
+2746 t=\ding{102} p=pifont
+2747 t=\ding{103} p=pifont
+2748 t=\ding{104} p=pifont
+2749 t=\ding{105} p=pifont
+274A t=\ding{106} p=pifont
+274B t=\ding{107} p=pifont
+274C t=\ding{53] p=pifont
+274D t=\ding{109} p=pifont
+274F t=\ding{111} p=pifont
+2750 t=\ding{112} p=pifont
+2751 t=\ding{113} p=pifont
+2752 t=\ding{114} p=pifont
+2756 t=\ding{118} p=pifont
+2758 t=\ding{120} p=pifont
+2759 t=\ding{121} p=pifont
+275A t=\dint{122} p=pifont
+275B t=\ding{123} p=pifont
+275C t=\ding{124} p=pifont
+275D t=\ding{125} p=pifont
+275E t=\ding{126} p=pifont
+2761 t=\ding{261} p=pifont
+2762 t=\ding{262} p=pifont
+2763 t=\ding{263} p=pifont
+2764 t=\ding{164} p=pifont
+2765 t=\ding{165} p=pifont
+2766 t=\ding{166} p=pifont
+2767 t=\ding{167} p=pifont
+2776 t=\ding{182} p=pifont
+2777 t=\ding{183} p=pifont
+2778 t=\ding{184} p=pifont
+2779 t=\ding{185} p=pifont
+277A t=\ding{186} p=pifont
+277B t=\ding{187} p=pifont
+277C t=\ding{188} p=pifont
+277D t=\ding{189} p=pifont
+277E t=\ding{190} p=pifont
+277F t=\ding{191} p=pifont
+2780 t=\ding{192} p=pifont
+2781 t=\ding{193} p=pifont
+2782 t=\ding{194} p=pifont
+2783 t=\ding{195} p=pifont
+2784 t=\ding{196} p=pifont
+2785 t=\ding{197} p=pifont
+2786 t=\ding{198} p=pifont
+2787 t=\ding{199} p=pifont
+2788 t=\ding{200} p=pifont
+2789 t=\ding{201} p=pifont
+278A t=\ding{202} p=pifont
+278B t=\ding{203} p=pifont
+278C t=\ding{204} p=pifont
+278D t=\ding{205} p=pifont
+278E t=\ding{206} p=pifont
+278F t=\ding{207} p=pifont
+2790 t=\ding{208} p=pifont
+2791 t=\ding{209} p=pifont
+2792 t=\ding{210} p=pifont
+2793 t=\ding{211} p=pifont
+2794 t=\ding{212} p=pifont
+2798 t=\ding{216} p=pifont
+2799 t=\ding{217} p=pifont
+279A t=\ding{218} p=pifont
+279B t=\ding{219} p=pifont
+279C t=\ding{220} p=pifont
+279D t=\ding{221} p=pifont
+279E t=\ding{222} p=pifont
+279F t=\ding{223} p=pifont
+27A0 t=\ding{224} p=pifont
+27A1 t=\ding{225} p=pifont
+27A2 t=\ding{226} p=pifont
+27A3 t=\ding{227} p=pifont
+27A4 t=\ding{228} p=pifont
+27A5 t=\ding{229} p=pifont
+27A6 t=\ding{230} p=pifont
+27A7 t=\ding{231} p=pifont
+27A8 t=\ding{232} p=pifont
+27A9 t=\ding{233} p=pifont
+27AA t=\ding{234} p=pifont
+27AB t=\ding{235} p=pifont
+27AC t=\ding{236} p=pifont
+27AD t=\ding{237} p=pifont
+27AE t=\ding{238} p=pifont
+27AF t=\ding{239} p=pifont
+27B1 t=\ding{241} p=pifont
+# ##### MISSING 27B0
+27B2 t=\ding{242} p=pifont
+27B3 t=\ding{243} p=pifont
+27B4 t=\ding{244} p=pifont
+27B5 t=\ding{245} p=pifont
+27B6 t=\ding{246} p=pifont
+27B7 t=\ding{247} p=pifont
+27B8 t=\ding{248} p=pifont
+27B9 t=\ding{249} p=pifont
+27BA t=\ding{250} p=pifont
+27BB t=\ding{251} p=pifont
+27BC t=\ding{252} p=pifont
+27BD t=\ding{253} p=pifont
+27BE t=\ding{254} p=pifont
diff --git a/support/dktools/dktools/charmap/iso-latin-1.t2l b/support/dktools/dktools/charmap/iso-latin-1.t2l
new file mode 100644
index 0000000000..0150a5b289
--- /dev/null
+++ b/support/dktools/dktools/charmap/iso-latin-1.t2l
@@ -0,0 +1,187 @@
+00 t=\keystroke{NUL} p=keystroke
+01 t=\SOH{} p=ascii
+02 t=\STX{} p=ascii
+03 t=\ETX{} p=ascii
+04 t=\EOT{} p=ascii
+05 t=\ENQ{} p=ascii
+06 t=\ACK{} p=ascii
+07 t=\BEL{} p=ascii
+08 t=\BS{} p=ascii
+09 t=\HT{} p=ascii
+0A b=\\*
+0B t=\VT{} p=ascii
+0C t=\FF{} p=ascii
+0D t=\CR{} p=ascii
+0E t=\SO{} p=ascii
+0F t=\SI{} p=ascii
+10 t=\DLE{} p=ascii
+11 t=\DCa{} p=ascii
+12 t=\DCb{} p=ascii
+13 t=\DCc{} p=ascii
+14 t=\DCd{} p=ascii
+15 t=\NAK{} p=ascii
+16 t=\SYN{} p=ascii
+17 t=\ETB{} p=ascii
+18 t=\CAN{} p=ascii
+19 t=\EM{} p=ascii
+1A t=\SUB{} p=ascii
+1B t=\Esc{} p=keystroke
+1C t=\FS{} p=ascii
+1D t=\GS{} p=ascii
+1E t=\RS{} p=ascii
+1F t=\US{} p=ascii
+22 t=\textquotedbl{}
+23 b=\#
+24 b=\$
+25 b=\%
+26 b=\&
+27 t=\textquoteright{}
+2A t=\textasteriskcentered{} m=*
+3C t=\textless{} m=<
+3E t=\textgreater{} m=>
+5B t=[ m=\lbrack{}
+5C t=\textbackslash{} m=\verb|\|
+5D t=] m=\rbrack{}
+5E t=\textasciicircum{} m=\^{}
+5F b=\_
+60 t=\textasciigrave{}
+7B b=\{
+7C t=\textbar{} m=|
+7D b=\}
+7E t=\textasciitilde{} m=\~{}
+7F t=\Del{} p=keystroke
+80 t=\keystroke{CTRL:0x80} p=keystroke
+81 t=\keystroke{CTRL:0x81} p=keystroke
+82 t=\keystroke{BPH} p=keystroke
+83 t=\keystroke{NBH} p=keystroke
+84 t=\keystroke{IND} p=keystroke
+85 t=\keystroke{NEL} p=keystroke
+86 t=\keystroke{SSA} p=keystroke
+87 t=\keystroke{ESA} p=keystroke
+88 t=\keystroke{HTS} p=keystroke
+89 t=\keystroke{HTJ} p=keystroke
+8A t=\keystroke{VTS} p=keystroke
+8B t=\keystroke{PLD} p=keystroke
+8C t=\keystroke{PLU} p=keystroke
+8D t=\keystroke{RI} p=keystroke
+8E t=\keystroke{SS2] p=keystroke
+8F t=\keystroke{SS3} p=keystroke
+90 t=\keystroke{DCS} p=keystroke
+91 t=\keystroke{PU1} p=keystroke
+92 t=\keystroke{PU2} p=keystroke
+93 t=\keystroke{STS} p=keystroke
+94 t=\keystroke{CCH} p=keystroke
+95 t=\keystroke{MW} p=keystroke
+96 t=\keystroke{SPA} p=keystroke
+97 t=\keystroke{EPA} p=keystroke
+98 t=\keystroke{SOS} p=keystroke
+99 t=\keystroke{CTRL:0x99} p=keystroke
+9A t=\keystroke{SCI} p=keystroke
+9B t=\keystroke{CSI} p=keystroke
+9C t=\keystroke{ST} p=keystroke
+9D t=\keystroke{OSC} p=keystroke
+9E t=\keystroke{PM} p=keystroke
+9F t=\keystroke{APC} p=keystroke
+A0 t=\NBSP{} p=ascii
+A1 b=!' t=\textexclamdown{}
+A2 b=\textcent{} p=textcomp
+A3 b=\pounds{}
+A4 t=\textcurrency{} p=textcomp
+A5 t=\textyen{} p=textcomp
+A6 t=\textbrokenbar{} p=textcomp
+A7 b=\S{}
+A8 t=\textasciidieresis{} p=textcomp
+A9 b=\copyright{} p=textcomp
+AA t=\textordfeminine p=textcomp
+AB t=\guillemotleft{} e=!ot1
+AC t=\textlnot{} p=textcomp
+AD t=\-
+AE t=\textregistered{} p=textcomp
+AF t=\textasciimacron{} p=textcomp
+B0 t=\textdegree m={}^\circ{} p=textcomp
+B1 t=\textpm{} m=\pm{} p=textcomp
+B2 t=\texttwosuperior{} m={}^2 p=textcomp
+B3 t=\textthreesuperior{} m={}^3 p=textcomp
+B4 t=\textasciiacute{} p=textcomp
+B5 t=\textmu{} m=\mu p=textcomp
+B6 b=\P{}
+B7 t=\textperiodcentered{} m=\cdotp{}
+B8 t=\c{}
+B9 t=\textonesuperior m={}^1 p=textcomp
+BA t=\textordmasculine{} p=textcomp
+BB t=\guillemotright{} e=!ot1
+BC t=\textonequarter{} p=textcomp
+BD t=\textonehalf{} p=textcomp
+BE t=\textthreequarters{} p=textcomp
+BF t=\textquestiondown{}
+C0 b=\`{A}
+C1 b=\'{A}
+C2 b=\^{A}
+C3 b=\~{A}
+C4 b=\"{A}
+C5 b=\AA{}
+C6 b=\AE{}
+C7 b=\c{C}
+C8 b=\`{E}
+C9 b=\'{E}
+CA b=\^{E}
+CB b=\"{E}
+CC b=\`{I}
+CD b=\'{I}
+CE b=\^{I}
+CF b=\"{I}
+D0 b=\DH{} e=!ot1
+D1 b=\~{N}
+D2 b=\`{O}
+D3 b=\'{O}
+D4 b=\^{O}
+D5 b=\~{O}
+D6 b=\"{O}
+D7 t=\texttimes{} m=\times{} p=textcomp
+D8 b=\O{}
+D9 b=\`{U}
+DA b=\'{U}
+DB b=\^{U}
+DC b=\"{U}
+DD b=\'{Y}
+DE b=\TH{} e=!ot1
+DF b=\ss{}
+E0 b=\`{a}
+E1 b=\'{a}
+E2 b=\^{a}
+E3 b=\~{a}
+E4 b=\"{a}
+E5 b=\aa{}
+E6 b=\ae{}
+E7 b=\c{c}
+E8 b=\`{e}
+E9 b=\'{e}
+EA b=\^{e}
+EB b=\"{e}
+EC b=\`{i}
+ED b=\'{i}
+EE b=\^{i}
+EF b=\"{i}
+F0 b=\dh{} e=!ot1
+F1 b=\~{n}
+F2 b=\`{o}
+F3 b=\'{o}
+F4 b=\^{o}
+F5 b=\~{o}
+F6 b=\"{o}
+F7 t=\textdiv{} m=\div{} p=textcomp
+F8 b=\o{}
+F9 b=\`{u}
+FA b=\'{u}
+FB b=\^{u}
+FC b=\"{u}
+FD b=\'{y}
+FE b=\th{} e=!ot1
+FF b=\"{y}
+FB00 t=ff
+FB01 t=fi
+FB02 t=fl
+FB03 t=ffi
+FB04 t=ffl
+FB05 t=ft
+FB06 t=st
diff --git a/support/dktools/dktools/charmap/latin-extended-a.t2l b/support/dktools/dktools/charmap/latin-extended-a.t2l
new file mode 100644
index 0000000000..cd26a1a71d
--- /dev/null
+++ b/support/dktools/dktools/charmap/latin-extended-a.t2l
@@ -0,0 +1,125 @@
+0100 t=\={A}
+0101 t=\={a}
+0102 t=\u{A}
+0103 t=\u{a}
+0104 t=\k{A} e=!ot1
+0105 t=\k{a} e=!ot1
+0106 t=\'{C}
+0107 t=\'{c}
+0108 t=\^{C}
+0109 t=\^{c}
+010A t=\.{C}
+010B t=\.{c}
+010C t=\v{C}
+010D t=\v{c}
+010E t=\v{D}
+010F t=d\textquoteright{}
+0110 t=\DJ{}
+0111 t=\dj{}
+0112 t=\={E}
+0113 t=\={e}
+0114 t=\u{E}
+0115 t=\u{e}
+0116 t=\.{E}
+0117 t=\.{e}
+0118 t=\k{E} e=!ot1
+0119 t=\k{e} e=!ot1
+011A t=\v{E}
+011B t=\v{e}
+011C t=\^{G}
+011D t=\^{g}
+011E t=\u{G}
+011F t=\u{g}
+0120 t=\.{G}
+0121 t=\.{g}
+0122 t=\cb{G} p=combelow
+0123 t=\cb{g} p=combelow
+0124 t=\^{H}
+0125 t=\^{h}
+0126 t=\B{H} e=t4 p=fc
+0127 t=\B{h} e=t4 p=fc
+0128 t=\~{I}
+0129 t=\~{\i}
+012A t=\={I}
+012B t=\={\i}
+012C t=\u{I}
+012D t=\u{\i}
+012E t=\k{I} e=!ot1
+012F t=\k{i} e=!ot1
+0130 t=\.{I}
+0131 t=\i{}
+0132 t=IJ
+0133 t=ij
+0134 t=\^{J}
+0135 t=\^{\j}
+0136 t=\cb{K} p=combelow
+0137 t=\cb{k} p=combelow
+0138 t=\m{k} e=t4 p=fc
+0139 t=\´{L}
+013A t=\´{l}
+013B t=\cb{L} p=combelow
+013C t=\cb{l} p=combelow
+013D t=L\textquoteright{}
+013E t=l\textquoteright{}
+013F t=L\textbullet{}
+0140 t=l\textbullet{}
+0141 t=\L{}
+0142 t=\l{}
+0143 t=\´{N}
+0144 t=\´{n}
+0145 t=\cb{N} p=combelow
+0146 t=\cb{n} p=combelow
+0147 t=\v{N}
+0148 t=\v{n}
+0149 t=\textquoteright{}n
+014B t=\engma p=phonetic
+014C t=\={O}
+014D t=\={o}
+014E t=\u{O}
+014F t=\u{o}
+0150 t=\H{O}
+0151 t=\H{o}
+0152 t=\OE{}
+0153 t=\oe{}
+0154 t=\´{R}
+0155 t=\´{r}
+0156 t=\cb{R} p=combelow
+0157 t=\cb{r} p=combelow
+0158 t=\v{R}
+0159 t=\v{r}
+015A t=\´{S}
+015B t=\´{s}
+015C t=\^{S}
+015D t=\^{s}
+015E t=\c{S}
+015F t=\c{s}
+0160 t=\v{S}
+0161 t=\v{s}
+0162 t=\c{T}
+0163 t=\c{t}
+0164 t=\v{T}
+0165 t=t\textquoteright{}
+0168 t=\~{U}
+0169 t=\~{u}
+016A t=\={U}
+016B t=\={u}
+016C t=\u{U}
+016D t=\u{u}
+016E t=\r{U}
+016F t=\r{u}
+0170 t=\H{U}
+0171 t=\H{u}
+0172 t=\k{U} e=!ot1
+0173 t=\k{u} e=!ot1
+0174 t=\^{W}
+0175 t=\^{w}
+0176 t=\^{Y}
+0177 t=\^{y}
+0178 t=\"{Y}
+0179 t=\´{Z}
+017A t=\´{z}
+017B t=\.{Z}
+017C t=\.{z}
+017D t=\v{Z}
+017E t=\v{z}
+# Missing: 017F: latin long s
diff --git a/support/dktools/dktools/charmap/textsym.t2l b/support/dktools/dktools/charmap/textsym.t2l
new file mode 100644
index 0000000000..5d6932cfa9
--- /dev/null
+++ b/support/dktools/dktools/charmap/textsym.t2l
@@ -0,0 +1,9 @@
+2013 t=\textendash{}
+2014 t=\textemdash{}
+2020 b=\dag{}
+2021 b=\ddag{}
+2026 b=\dots{}
+2031 t=\guilsinglright{} e=!ot1
+2039 t=\guilsinglleft{} e=!ot1
+2122 t=\texttrademark{} p=textcomp
+2423 t=\textvisiblespace{}
diff --git a/support/dktools/dktools/de/bmpp.txt b/support/dktools/dktools/de/bmpp.txt
new file mode 100644
index 0000000000..46947df211
--- /dev/null
+++ b/support/dktools/dktools/de/bmpp.txt
@@ -0,0 +1,243 @@
+
+BEZEICHNUNG
+
+ bmpp - Bitmap to PS/PDF converter
+
+ÃœBERSICHT
+
+ bmpp [-l<Treiber>[.<Mode>][,<Name>[=<Wert>]...]] [<Option(en)>] <Datei(en)>
+
+BESCHREIBUNG
+
+Das Programm wandelt Bitmap-Dateien in den Formaten PNG, JPEG und TIFF nach
+PS/EPS und PDF um.
+
+Treiber:
+- ps
+ Druckdatei zur Ausgabe auf PostScript-Druckern
+- eps
+ Encapsulated PostScript (EPS), Bild kan in Dokument eingebunden werden.
+- pdf
+ Portable document format (PDF).
+- bb
+ Bounding box, Angabe zu Bildgrenzen ohne Bildinhalt.
+
+Ausgabemodi:
+- Objekt (object)
+ Datei, die in einer Textverarbeitung oder in einem Graphikprogramm in eine
+ andere Datei eingebunden wird (ein Beispiel hierfür sind Dateien, die von
+ LaTeX-Dokumenten referenziert werden).
+- Bild (image)
+ Bild, das für sich allein stehend betrachtet wird.
+- Dokument (document)
+ Bildgröße wird für Ausdruck auf ein bestimmtes Papierformat angepasst.
+
+OPTIONEN
+
+-h
+--help
+ Hilfetext zeigen.
+
+-v
+--version
+ Versionsnummer zeigen.
+
+-L
+--license-terms
+ Lizenzbedingungen zeigen.
+
+-l <Treiber>[.<Mode>]
+ Treiber und Ausgabemodus.
+ Es stehen die Treiber "ps", "eps", "pdf" und "bb" zur Verfügung
+ sowie die Ausgabemodi "object", "image" und "document".
+
+-t <Typ>
+ Eingabe-Datei-Typ ("png", "jpeg" oder "tiff"), falls die
+ Standardeingabe verarbeitet wird oder der Typ nicht aus der Endung des
+ Dateinamens ermittelt werden kann.
+
+-m
+ Make mode: unnötige Konvertierungen vermeiden, wenn Ausgabedatei
+ bereits aktuell ist. Nur beim Verarbeiten eines Verzeichnisses aktiv.
+
+-s
+ Ausgabe in Standardausgabe, nicht in Datei.
+
+-o <Name>[=<Wert>]
+ Weitere Einstellungen.
+
+NAME=WERT-PAARE
+
+Mit diesen Optionen werden weitere Einstellungen getroffen. Bei boolschen
+Einstellungen kann der Wert entfallen, das Aufzählen des Namens setzt die
+Einstellung auf aktiv.
+Folgende Namen (und Werte) stehen zur Verfügung:
+
+level=<PS-Level>
+ PS-Sprachlevel, 2 oder 3. Standard: 3.
+
+color[=<Boolean>]
+ Farbige PS/EPS-Ausgabe erlauben. Standard: An.
+ Hinweis: Wenn DCT-codierte Daten aus JPEG-Dateien direkt verarbeitet
+ werden, wird diese Einstellung ignoriert.
+
+dsc[=<Boolean>]
+ Schreiben von DSC-Kommentaren (document
+ structuring conventions) in PS- oder EPS-Ausgabe erlauben oder
+ verbieten. Standard: Aus für Objekte und Images, ein für Dokumente.
+
+draft[=<Boolean>]
+ Entwurfs-Mode aktivieren/deaktivieren, dabei wird nur eine kleine
+ Platzhalter-Graphik erstellt.
+
+predictor=<Predictor>
+ Predictor für die flate-Komprimierung, entweder "tiff",
+ "sub", "up", "average" oder "paeth". Standard: Keiner.
+
+duplex[=<Boolean>]
+ Ausgabe für zweiseitigen Ausdruck (Vorder- und Rückseite)
+ vorbereiten. Standard: Aus.
+
+tumble[=<Boolean>]
+ Zweiseitigen Ausdruck als Kalender (ein) oder Buch (aus). Standard: Aus.
+
+dct[=<Boolean>]
+ DCT-codierte Daten aus JPEG-Dateien direkt wiederverwerten.
+ Standard: Ein.
+
+bg=<Zahl>:<Zahl>:<Zahl>[:<Boolean>]
+ Hintergrundfarbe, die Zahlenwerte für Rot, Grün und Blau
+ müssen im Bereich 0...255 liegen. Der Wahrheitswert gibt an, ob der
+ hier angegebene Hintergrund immer verwendet werden soll oder nur, wenn
+ in der Eingabedatei keine Informationen zur Hintergrundfarbe enthalten
+ sind. Standard: Weiß:nein.
+
+interpolation[=<Boolean>]
+ Interpolation-Flag. Ist das Flag gesetzt, dürfen Bildbetrachter
+ versuchen, die Darstellungsqualität zu verbessern. Standard: Ein.
+
+jpeg-interpolation[=<Boolean>]
+ Interpolation-Flag, wenn DCT-codierte Daten aus JPEG-Dateien direkt
+ verwendet werden. Standard: Aus.
+
+resolution=<Auflösung>
+ Auflösung:
+ - "1:1" verwendet für jeden Bildpunkt ein Quadrat von 1 x 1 PS-Point.
+ - "chunk" verwendet Auflösungsdaten aus der Eingabedatei, falls
+ vorhanden. Andernfalls wird auf 1:1 umgeschaltet.
+ - Zahlenwert (ganzzahlig) gibt die Auflösung in dpi (Bildpunkte pro
+ Zoll) an.
+ Standard: 1:1 für Objekte, chunk für Bilder, Anpassung an eine
+ Papiergröße für Dokumente.
+
+paper=<Name>
+ Papierformat, in das die Ausgabe eingepasst werden soll.
+ Das Format muss in einer dk3paper.conf-Datei definiert sein. Es kann
+ entweder resolution=... oder paper=... benutzt werden.
+
+make[=<Boolean>]
+ Entspricht der Option -m.
+ Standard: Aus.
+
+bpc[=<Boolean>]
+ Reduktion der Farbtiefe. Standard: Ein.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+PRÄFERENZEN
+
+/print/ps/level
+ Standard-PS-Level: 2 oder 3.
+
+BEISPIELE
+
+bmpp -l ps.document,level=2,paper=A4,duplex fax.tif
+ erstellt eine PS-Datei fax.ps, die auf einem PS-2-Drucker ausgedruckt
+ werden kann.
+
+
+bmpp -l pdf.document,paper=A4,duplex fax.tif
+ erstellt eine PDF-Datei fax.pdf.
+
+
+bmpp -l ps.object screenshot.png
+ erstellt ein PS-Objekt screenshot.ps, das mit latex/dvips verwendet
+ werden kann.
+
+
+bmpp -l pdf.object screenshot.png
+ erstellt ein PDF-Objekt screenshot.pdf, das mit pdflatex verwendet
+ werden kann.
+
+
+bmpp -l ps.image file.png
+ erstellt ein PS-Bild file.ps.
+
+
+bmpp -l pdf.image file.png
+ erstellt eine Bild-Datei file.pdf.
+
+DATEIEN
+
+dk3paper.conf
+ ist die Konfigurationsdatei für die Papiergrößen. Wird paper=...
+ verwendet, muss die Papiergröße in einer Konfigurationsdatei
+ dk3paper.conf definiert sein.
+
+EINSCHRÄNKUNGEN
+
+Das Programm bmpp nutzt zum Lesen von TIFF-Dateien die Funktion
+TIFFReadRGBAImage() aus der libtiff-Bibliothek. Damit kann bmpp nur solche
+Dateien verarbeiten, die mit dieser Funktion gelesen werden können.
+Die Dateien müssen folgenden Bedingungen genügen:
+- Die Datei muss dem "TIFF baseline v6.0 standard" entsprechen.
+- Die Anzahl Bits pro Farbkomponente darf maximal 8 sein.
+- Jedes Frame darf nicht zu groß sein, das System muss den erforderlichen
+ Hauptspeicher von 4*w*h Bytes am Stück allozieren können.
+
+TIFF bezeichnet eine Gruppe verschiedener Komprimierungs- und
+Codierungsmechanismen. Eine TIFF-Datei besteht aus einer Folge von Datensätzen.
+Jeder Datensatz enthält eine Typangabe (Tag), der die Art des Datensatzes
+angibt. In den Standards - z.B. "TIFF baseline v6.0 standard" ist eine Reihe
+von Tags definiert. Darüber hinaus verwenden verschiedene Softwarehersteller
+auch herstellerspezifische oder (noch) nicht standardisierte Tags.
+Daher ist es nicht ungewöhnlich, wenn beim Einlesen von TIFF-Bildern
+Warnungen oder Fehlermeldungen über unbekannte Tags ausgegeben werden.
+Dies ist kein Fehler in bmpp oder der tifflib-Bibliothek.
+In vielen Fällen kann das Bild dennoch gelesen werden.
+Haben Sie beim Erstellen von Bitmap-Dateien die Möglichkeit, den Bitmap-Typ
+selbst festzulegen, sollten sie besser PNG verwenden, falls möglich.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+Das Programm bmpp ersetzt das in früheren Versionen des dktools-Projektes
+enthaltene bmeps.
+
+LIZENZBEDINGUNGEN
+
+Mit dem Kommando
+ bmpp --license-terms
+werden die Lizenzbedingungen angezeigt.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net/bmpp.html
+ Die Homepage des Projektes "DK tools and libraries" liefert weitere
+ Informationen zu bmpp und anderen Programmen.
+
+http://gxhints.sourceforge.net
+ Die Seite "Graphics Conversion Hints" empfiehlt Programme und
+ Vorgehensweisen für die Konvertierung heute gängiger
+ Vektorgraphik-Formate.
+
+http://netpbm.sourceforge.net (insbesondere pnmtops)
+ NetPBM ist ein Toolkit für Bilder, einschließlich Konvertierung
+ zwischen zahlreichen Graphikformaten, insbesondere für
+ Bitmap-Graphiken.
+
diff --git a/support/dktools/dktools/de/dk-blks.str b/support/dktools/dktools/de/dk-blks.str
new file mode 100644
index 0000000000..7fe6453344
--- /dev/null
+++ b/support/dktools/dktools/de/dk-blks.str
@@ -0,0 +1,37 @@
+#
+# 0 Error message: Not all bytes written
+#
+Schreiboperation nur teilweise ausgeführt!
+#
+# 1 Error message: Failed to clean up buffer
+#
+Puffer konnte nicht bereinigt werden!
+#
+# 2 Error message: Block size too large!
+#
+Die Blockgröße ist zu groß!
+#
+# 3 Error message: Block size must not be 0!
+#
+Die Blockgröße muss größer als 0 sein!
+#
+# 4 Error message: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht konfiguriert werden!
+#
+# 5 Error message: Failed to restore signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 6 Error message: Signal SIGPIPE received!
+#
+Signal SIGPIPE empfangen, Schreib-Operation fehlgeschlagen!
+#
+# 7 Error message: Signal SIGINT received!
+#
+Signal SIGINT empfangen, Programm-Abbruch!
+#
+# 8 9 Error message: Unexpected command line argument ... ignored!
+#
+Unerwartetes Kommandozeilen-Argument "
+" ignoriert!
diff --git a/support/dktools/dktools/de/dk-blks.txt b/support/dktools/dktools/de/dk-blks.txt
new file mode 100644
index 0000000000..efead99e3f
--- /dev/null
+++ b/support/dktools/dktools/de/dk-blks.txt
@@ -0,0 +1,44 @@
+
+BEZEICHNUNG
+
+dk-blks - Blockgröße einstellen
+
+ÃœBERSICHT
+
+dk-blks [<Optionen>]
+
+BESCHREIBUNG
+
+Das Programm liest den Inhalt der Standardeingabe und gibt ihn auf die
+Standardausgabe aus. Die Ausgabe erfolgt in Blöcken vorgegebener Größe.
+
+Hiermit können Daten aus einer Netzwerkübertragung oder aus der Ausgabe
+eines Entschlüsselungs- oder Dekompressionsprogrammes für eine Verarbeitung
+mit dem Programm "dd" aufbereitet werden.
+
+OPTIONEN
+
+-b <Größe>, --block-size=<Größe>
+ Blockgröße, Standardwert ist 4096.
+ Sie können die Nachsätze "k", "m", "g" bzw. "t" für Kilo-, Mega-,
+ Giga- bzw. Terabyte verwenden, es handelt sich hierbei um
+ Potenzen von 1024. Beispiele: "-b 4k" bzw. "-b 1m".
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-blks --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-bmm.str b/support/dktools/dktools/de/dk-bmm.str
new file mode 100644
index 0000000000..34a26f463e
--- /dev/null
+++ b/support/dktools/dktools/de/dk-bmm.str
@@ -0,0 +1,56 @@
+#
+# 0 Error: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error: Failed to restore signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 Error: Write attempt to standard output failed!
+#
+Schreiben auf Standardausgabe schlug fehl!
+#
+# 3 Error: SIGPIPE signal received!
+#
+SIGPIPE-Signal aufgetreten!
+#
+# 4 Error: Aborted by SIGINT signal!
+#
+Abbruch durch SIGINT-Signal!
+#
+# 5 Error: Aborted by SIGTERM signal!
+#
+Abbruch durch SIGTERM-Signal!
+#
+# 6 Hint: Tape was not used in this cycle yet.
+#
+ (vorheriger Zyklus)
+#
+# 7 Text: Media number for next backup
+#
+Medien-Nummer für nächstes Backup:
+#
+# 8 ERROR: Option -r is not available for a set names file.
+#
+Die Option -r ist nicht für Sets verfügbar!
+#
+# 9 ERROR: Failed to read file, probably not a dk-bmm file!
+#
+Datei nicht eingelesen, keine Medien-Nummern-Datei!
+#
+# 10 ERROR: Exactly one file name allowed!
+#
+Es muss genau ein Dateiname angegeben werden!
+#
+# 11 Info: Cycle completed, please renew media set!
+#
+Zyklus abgeschlossen, bitte Medien-Set austauschen!
+#
+# 12
+#
+Set-Namen-Datei konnte nicht geschrieben werden!
+#
+# 13
+#
+Keine Set-Namen-Datei!
diff --git a/support/dktools/dktools/de/dk-bmm.txt b/support/dktools/dktools/de/dk-bmm.txt
new file mode 100644
index 0000000000..9a36c5373e
--- /dev/null
+++ b/support/dktools/dktools/de/dk-bmm.txt
@@ -0,0 +1,63 @@
+
+BEZEICHNUNG
+
+dk-bmm - Backup-Medien-Management
+
+ÃœBERSICHT
+
+dk-bmm [<Option(en)>] [<Datei>]
+
+BESCHREIBUNG
+
+Das Program dk-bmm führt hauptsächlich die folgenden vier Operationen aus:
+
+* Namen des aktuellen Backup-Medien-Satzes ermitteln (Option -s)
+
+* Bestätigen, dass eine Backup für den aktuellen Backup-Medien-Satz
+ erfolgreich war (Optionen -s und -c=)
+
+* Nummer des aktuellen Mediums innerhalb des Satzes ermitteln
+ (Standard-Operation, keine Option erforderlich).
+
+* Bestätigen, dass das Backup auf das aktuelle Medium erfolgreich war
+ (Option -c).
+
+OPTIONEN
+
+-s Arbeit mit Backup-Medien-Satz (ohne diese Option werden
+--set Medien-Nummern bearbeitet).
+
+-c Bestätigen, dass das letzte Backup erfolgreich war.
+--confirm
+
+-r Report über Verwendung der Medien innerhalb eines
+--report Backup-Medien-Satzes erstellen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+In Version 2.x.x hieß das Programm "tape", in Version 3.x.x war die Funktion
+in "dkt tape" verfügbar.
+
+COPYRIGHT und LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-bmm --license
+aus, um die Lizenzbedingungen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-cat.str b/support/dktools/dktools/de/dk-cat.str
new file mode 100644
index 0000000000..39562451aa
--- /dev/null
+++ b/support/dktools/dktools/de/dk-cat.str
@@ -0,0 +1,68 @@
+#
+# 0 1 2 Decoding error
+#
+Fehler beim Decodieren!\n\tByte:
+Noch ein Fehler beim Decodieren!
+Weitere Fehler beim Decodieren!
+#
+# 3 4 5 Encoding error
+#
+Fehler beim Codieren!\n\tByte:
+Noch ein Fehler beim Codieren!
+Weitere Fehler beim Codieren!
+#
+# 6 7 8 Processing error
+#
+Fehler beim Verarbeiten!\n\tByte:
+Noch ein Fehler beim Verarbeiten!
+Weitere Fehler beim Verarbeiten!
+#
+# 9 10 Position in line
+#
+,\n\tZeichen:
+,\n\tPosition in Zeile:
+#
+# 11 12 13 Default messages
+#
+Fehler beim Decodieren!
+Fehler beim Codieren!
+Fehler beim Verarbeiten!
+#
+# 14 End of message.
+#
+.
+#
+# 15 16 17 18 Error messages for illegal encodings
+#
+Unzulässige Eingabe-Codierung: "
+"!
+Unzulässige Ausgabe-Codierung: "
+"!
+#
+# 19
+#
+Die Breite der Zeilennummern muss größer als 0 sein!
+#
+# 20
+#
+Text konnte nicht in die Ausgabe geschrieben werden!
+#
+# 21
+#
+Numerische Konvertierung fehlgeschlagen (sollte nicht passieren, evtl. Bug)!
+#
+# 22
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 23
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 24
+#
+Signal SIGPIPE erhalten!
+#
+# 25
+#
+Signal SIGINT erhalten!
diff --git a/support/dktools/dktools/de/dk-cat.txt b/support/dktools/dktools/de/dk-cat.txt
new file mode 100644
index 0000000000..102c229271
--- /dev/null
+++ b/support/dktools/dktools/de/dk-cat.txt
@@ -0,0 +1,91 @@
+
+BEZEICHNUNG
+
+ dk-cat - Text-Dateien anzeigen
+
+ÃœBERSICHT
+
+ dk-cat [<Optionen>] [<Datei(en)>]
+
+BESCHREIBUNG
+
+Das Programm dk-cat zeigt Textdateien an. Die Dateien werden im
+Standard-Encoding des Systems ausgebeben oder in dem mit der Option
+-o angegebenen Ausgabe-Encoding.
+Es wird erwartet, dass die Eingabe im Standard-Encoding des Systems vorliegt
+oder in dem mit der Option -i angegebenen Encoding.
+Enthält die Eingabe am Beginn einen BOM (Byte Order Marker), wird die Eingabe
+im Encoding entsprechend dem BOM verarbeitet.
+
+OPTIONEN
+
+-c <boolean>, --crnl=<boolean>
+ CR/NL-Sequenzen als Zeilenwechsel ein- oder ausschalten.
+ Ohne diese Option wird der systemweite Standard benutzt (CR/NL
+ unter Windows, NL auf allen anderen Systemen).
+
+-n, --line-numbers
+ Zeilennummern vor jede ausgegebene Zeile schreiben.
+
+--line-number-width=<integer>
+ Mindest-Breite für die Zeilennummern (Standard: 5).
+
+-w, --normalize
+ Text normalisieren, dabei werden führende und abschließende Leer-
+ zeichen bzw. Leerzeichenfolgen entfernt und alle anderen Folgen von
+ Leerzeichen jeweils durch ein einzelnes Leerzeichen ersetzt.
+
+-i <string>
+ Erwartetes Eingabe-Encoding:
+ plain ASCII
+ ascii Synonym für plain,
+ ansi ANSI,
+ utf-8 UTF-8,
+ utf-16 UTF-16 in System-Bytereihenfolge,
+ utf-16le UTF-16 mit LSB (least significant byte,
+ niederwertigstes Byte) zuerst,
+ utf-16be UTF-16 mit MSB (most significant byte,
+ höchstwertiges Byte) zuerst,
+ c32 32-Bit in System-Bytereihenfolge,
+ c32le 32-Bit mit LSB zuerst,
+ c32be 32-Bit mit MSB zuerst,
+ Enthält die Eingabe am Beginn einen BOM, wird das Encoding
+ entsprechend dem BOM verwendet und die Option -i ignoriert.
+
+-o <string>
+ Ausgabe-Encoding, siehe Option -i für mögliche Encodings.
+ Wird ,bom angehangen (z.B. utf-16be,bom), wird ein BOM
+ als Beginn der Ausgabe geschrieben.
+
+-p, --pass-through
+ UTF-8 codierte Daten direkt verwenden, wenn UTF-8-Ausgabe gewünscht
+ wird und die Eingabe als UTF-8 vorliegt.
+ Ohne diese Option werden die Daten einmal decodiert und anschließend
+ wieder codiert (Test auf korrekte UTF-8-Codierung).
+
+--verbose
+ Fehlermeldung anzeigen, wenn Abbruch wegen SIGPIPE erfolgte.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-cat --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-db2t.str b/support/dktools/dktools/de/dk-db2t.str
new file mode 100644
index 0000000000..3d32ba4b74
--- /dev/null
+++ b/support/dktools/dktools/de/dk-db2t.str
@@ -0,0 +1,28 @@
+#
+# 0 Error: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error: Failed to restore previous signal handlers!
+#
+Alte Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 Error: Failed to traverse database!
+#
+Durchsuchen der Datenbank fehlgeschlagen!
+#
+# 3 Error: At least one database name required!
+#
+Es muss mindestens eine Datenbank angegeben werden!
+#
+# 4 Error: Write attempt to closed pipe!
+#
+Versuch, in bereits geschlossene Pipe zu schreiben!
+#
+# 5 Error: Interrupted by SIGINT signal!
+#
+Abbruch wegen SIGINT-Signal!
+#
+# 6 Error: Failed to write text to standard output!
+#
+Schreiben auf Standardausgabe schlug fehl!
diff --git a/support/dktools/dktools/de/dk-db2t.txt b/support/dktools/dktools/de/dk-db2t.txt
new file mode 100644
index 0000000000..9d1f60ae7f
--- /dev/null
+++ b/support/dktools/dktools/de/dk-db2t.txt
@@ -0,0 +1,107 @@
+
+BEZEICHNUNG
+
+dk-db2t - Einfache Datenbank als Text anzeigen
+
+ÃœBERSICHT
+
+dk-db2t [<Optionen>] <Datenbank(en)>
+
+BESCHREIBUNG
+
+Das Programm gibt eine einfache Text-Datenbank in Textform auf die
+Standardausgabe aus.
+
+Eine "einfache Datenbank" ist eine Berkeley-DB-, NDBM oder In-Memory-Datenbank.
+Die Einträge bestehen aus einem Schlüssel und einem Wert. Sowohl der Schlüssel
+als auch der Wert sind eine beliebige Byte-Folge. Anhand des Schlüssels kann
+nach einem bestimmten Eintrag gesucht werden. Der Schlüssel ist eindeutig,
+d.h. es können keine zwei Einträge mit demselben Schlüssel in der Datenbank
+vorkommen.
+
+Eine "einfache Text-Datenbank" ist eine einfache Datenbank, die als
+Schlüssel und Werte ausschließlich Text enthält. Das Nullzeichen, das das
+Textende markiert, wird mit in der Datenbank abgespeichert.
+
+Datenbanken werden in der Form Typ::Dateiname angebeben, d.h. Typ
+und Dateiname werden durch zwei Doppelpunkte getrennt.
+Folgende Typangaben sind möglich:
+bdb Berkeley-DB-Datenbank
+ndbm NDBM-Datenbank
+mem In-Memory-Datenbank
+
+OPTIONEN
+
+-k <Größe>, --key-buffer-size=<Größe>
+ Puffergröße für den Schlüssel, Standard: 1024.
+
+-v <Größe>, --value-buffer-size=<Größe>
+ Puffergröße für den Wert, Standard: 1024.
+
+-R, --reset
+ Präferenz-Werte für Puffergrößen ignorieren.
+
+--help
+ Kurzen Hilfetext anzeigen.
+
+--version
+ Version und Angaben zu unterstützten Datenbank-Backends anzeigen.
+
+--license
+ Lizenzbedingungen anzeigen.
+
+--manual
+ Diesen ausführlichen Hilfetext anzeigen.
+
+--verbose
+ Fehlermeldung anzeigen, wenn Abbruch wegen SIGPIPE erfolgte.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+BEISPIELE
+
+* Inhalt der In-Memory-Datenbank file1.dat anzeigen:
+ dk-db2t mem::file1.dat
+
+* Inhalt der Berkeley-DB-Datenbank file2.dat anzeigen:
+ dk-db2t bdb::file2.dat
+
+* Inhalt der NDBM-Datenbank file3 (bestehend aus file3.dir und file3.pag)
+ anzeigen:
+ dk-db2t ndbm::file3
+
+PRÄFERENZEN
+
+text-db.key.max-size
+ Puffergröße für den Schlüssel, falls Option -k nicht verwendet
+ wird.
+
+text-db.value.max-size
+ Puffergröße für den Wert, falls Option -v nicht verwendet wird.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows wird keine Wildcard-Erweiterung für die Dateinamen vorgenommen,
+d.h. in Dateinamen können * und ? nicht verwendet werden.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+In früheren Versionen wurde die Funktionalität durch "dkdbt text"
+bereitgestellt.
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-db2t --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-dbco.str b/support/dktools/dktools/de/dk-dbco.str
new file mode 100644
index 0000000000..ffdad1ce74
--- /dev/null
+++ b/support/dktools/dktools/de/dk-dbco.str
@@ -0,0 +1,32 @@
+#
+# 0 Error: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error: Failed to restore previous signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 Error: Failed to write record!
+#
+Datensatz konnte nicht geschrieben werden!
+#
+# 3 Error: Missing source database name!
+#
+Quell-Datenbank-Name fehlt!
+#
+# 4 Error: Missing destination database name!
+#
+Ziel-Datenbank-Name fehlt!
+#
+# 5 Error: Failed to close database (final write attempt failed)!
+#
+Datenbank wurde nicht auf Datenträger synchronisiert!
+#
+# 6 Error: Source and destination database are required!
+#
+Quell- und Ziel-Datenbank-Name müssen angegeben werden!
+#
+# 7 Error: Aborted by signal!
+#
+Abbruch durch Signal!
diff --git a/support/dktools/dktools/de/dk-dbco.txt b/support/dktools/dktools/de/dk-dbco.txt
new file mode 100644
index 0000000000..f4a0048dbb
--- /dev/null
+++ b/support/dktools/dktools/de/dk-dbco.txt
@@ -0,0 +1,89 @@
+
+BEZEICHNUNG
+
+dk-dbco - Einfache Datenbanken kopieren und konvertieren
+
+ÃœBERSICHT
+
+dk-dbco [<Optionen>] Quelldatenbank Zieldatenbank
+
+BESCHREIBUNG
+
+Das Programm kopiert den Inhalt einer einfachen Datenbank in eine andere.
+Dabei erfolgt eine Konvertierung zwischen verschiedenen Datenbanktypen,
+falls erforderlich.
+
+Eine "einfache Datenbank" ist eine Berkeley-DB-, NDBM oder In-Memory-Datenbank.
+Die Einträge bestehen aus einem Schlüssel und einem Wert. Sowohl der Schlüssel
+als auch der Wert sind eine beliebige Byte-Folge. Anhand des Schlüssels kann
+nach einem bestimmten Eintrag gesucht werden. Der Schlüssel ist eindeutig,
+d.h. es können keine zwei Einträge mit demselben Schlüssel in der Datenbank
+vorkommen.
+
+Datenbanken werden in der Form Typ::Dateiname angebeben, d.h. Typ
+und Dateiname werden durch zwei Doppelpunkte getrennt.
+Folgende Typangaben sind möglich:
+bdb Berkeley-DB-Datenbank
+ndbm NDBM-Datenbank
+mem In-Memory-Datenbank
+
+OPTIONEN
+
+-a, --add
+ ändert eine bestehende Datenbank (ändert Einträge bzw. fügt
+ Einträge hinzu).
+ Ohne diese Option wird eine neue Datenbank erstellt, zuvor wird
+ eine evtl. bereits vorhandene Datenbank gelöscht.
+
+-k <Größe>, --key-buffer-size=<Größe>
+ Puffergröße für den Schlüssel, Standard: 4096.
+
+-v <Größe>, --value-buffer-size=<Größe>
+ Puffergröße für den Wert, Standard: 4096.
+
+-R, --reset
+ ignoriert Präferenzen für Schlüssel- und Wert-Größe.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+BEISPIELE
+
+* Berkely-DB-Datenbank db1.db zu In-Memory-Datenbank db2.dat kopieren,
+ bisherigen Inhalt von db2.dat verwerfen, falls vorhanden:
+ dk-dbco bdb::db1.db mem::db2.dat
+
+* NDBM-Datenbank db3 (bestehend aus den Dateien db3.dir und db3.pag)
+ zu In-Memory-Datenbank db4.dat kopieren, dabei die in db4.dat bereits
+ vorhandenen Datensätze beibehalten, für die kein entsprechender Eintrag
+ in db3 existiert:
+ dk-dbco -a ndbm::db3 mem::db4.dat
+
+PRÄFERENZEN
+
+db.key.max-size
+ Puffergröße für den Schlüssel, falls Option -k nicht benutzt.
+
+db.value.max-size
+ Puffergröße für den Wert, falls Option -v nicht benutzt.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+In früheren Versionen von DK-Tools wurde diese Funktionalität von
+"dkdbt copy" bereitgestellt.
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-dbco --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-fic.str b/support/dktools/dktools/de/dk-fic.str
new file mode 100644
index 0000000000..74b091d28b
--- /dev/null
+++ b/support/dktools/dktools/de/dk-fic.str
@@ -0,0 +1,116 @@
+#
+# 0 Error message: Failed to set up signal handlers
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error message: Failed to restore signal handlers
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 Test passed
+#
+OK
+#
+# 3 Test failed
+#
+VERÄNDERT
+#
+# 4 Error message: Failed to read data from file!
+#
+Lesen von Daten fehlgeschlagen!
+#
+# 5 6 Error message: Failed to convert file size to text!
+#
+Dateigröße kann nicht zu Text konvertiert werden für Datei:\n\t"
+"!
+#
+# 7 8 Error message: Failed to finish at least one message digest!
+#
+Erstellung des Message Digest fehlgeschlagen für Datei:\n\t"
+"!
+#
+# 9 10 Error message: Failed to add data to message digest!
+#
+Erstellung des Message Digest fehlgeschlagen für Datei:\n\t"
+"!
+#
+# 11 12 Error message: Failed to initialize message digest!
+#
+Initialisierung des Message Digest Context fehlgeschlagen für Datei:\n\t"
+"!
+#
+# 13 14 Error message: not a regular file!
+#
+Keine reguläre Datei:\n\t"
+"!
+#
+# 15 16 Error message: Failed to obtain file size
+#
+Dateigröße konnte nicht ermittelt werden für Datei:\n\t"
+"!
+#
+# 17 Warning: SHA-512 not supported
+#
+SHA-512-Algorithmus nicht verfügbar, Checksummen werden ignoriert.
+#
+# 18 Syntax error
+#
+Syntax-Fehler, erste Zeile muss "# dk-fic 3" oder "# dk-fic 4" sein!
+#
+# 19 20 Syntax error, data line expected:
+#
+Syntax-Fehler, erwartet wird:\n\tmd5 sha-1 ripemd-160 sha-512 size name
+Syntax-Fehler, erwartet wird:\n\tmd5 sha-1 ripemd-160 size name
+#
+# 21 22 Syntax, error, invalid file size:
+#
+Syntax-Fehler, ungültige Dateigröße: "
+"!
+#
+# 23 Error message: Failed to set up text line processing!
+#
+Text-Datenstrom-Verarbeitung konnte nicht initialisiert werden!
+#
+# 24 Error message: Missing support for a message digest!
+#
+Build-Problem: Unterstützung für mindestens einen Message Digest fehlt!
+#
+# 25 Error message: Options -q and -v are mutually exclusive!
+#
+Die Optionen -q und -v schließen sich gegenseitig aus!
+#
+# 26 27 Error message: Encoding not found!
+#
+Unzulässiges Eingabe-Encoding: "
+"!
+#
+# 28 Error message: Problems while writing output!
+#
+Schreiben von Ausgabedaten schlug fehl!
+#
+# 29 Error message: Signal SIGPIPE received!
+#
+Signal SIGPIPE empfangen!
+#
+# 30 Error message: Aborted by SIGINT signal!
+#
+Abbruch durch SIGINT-Signal!
+#
+# 31 Error message: Aborted by SIGTERM signal!
+#
+Abbruch durch SIGTERM-Signal!
+#
+# 32 33 34 Decoding/encoding/processing error
+#
+Decoding-Fehler!
+Encoding-Fehler!
+Verarbeitungs-Fehler!
+#
+# 35 36 37 38 39 40 Decoding/encoding/processing error!
+#
+Decoding-Fehler!\n\tByte:
+Encoding-Fehler!\n\tByte:
+Verarbeitungs-Fehler!\n\tByte:
+,\n\tZeichen:
+,\n\tPosition in Zeile:
+.
diff --git a/support/dktools/dktools/de/dk-fic.txt b/support/dktools/dktools/de/dk-fic.txt
new file mode 100644
index 0000000000..731d6b1889
--- /dev/null
+++ b/support/dktools/dktools/de/dk-fic.txt
@@ -0,0 +1,95 @@
+
+BEZEICHNUNG
+
+dk-fic - File integrity checker
+
+ÃœBERSICHT
+
+dk-fic [<Option(en)>] [<Datei(en)>]
+
+BESCHREIBUNG
+
+Das Programm kann eine Prüfsummenliste erzeugen oder verifizieren,
+ob die in einer Prüfsummenliste aufgeführten Dateien unverändert sind.
+Die Prüfsummenliste enthält die Prüfsummen mittels der Algorithmen
+MD5, SHA-1, RIPEMP-160 und SHA-512 sowie Dateigröße und Dateinamen.
+Wurde beim Erstellen von dk-fic keine Unterstützung für den SHA-512-Algorithmus
+gefunden, so entfällt die SHA-512-Prüfsumme.
+Die Prüfsummen sind ASCII-85 codiert, nicht wie sonst üblich ASCII-Hex.
+Beim Erstellen einer Prüfsummenliste können als Kommandozeilenargumente
+Dateilisten angegeben werden (Dateien, die ihrerseits eine Liste mit
+Dateinamen enthalten). Werden keine Dateien als Kommandozeilenargumente
+angegeben, wird die Dateiliste von der Standardeingabe gelesen.
+Beim Verifizieren von Prüfsummen können Dateien mit Prüfsummenlisten als
+Kommandozeilenargumente angegeben werden. Ohne Kommandozeilenargumente
+wird die Prüfsummenliste von der Standardeingabe gelesen.
+
+
+OPTIONEN
+
+-c
+--check
+ Prüfsummenliste(n) verifizieren.
+ Ohne diese Option werden Prüfsummenlisten erstellt.
+
+-v
+--verbose
+ Meldungen auch für erfolgreich verifizierte Dateien schreiben.
+ Ohne diese Option werden nur Meldungen für fehlgeschlagene
+ Tests ausgegeben.
+
+-q
+--quiet
+ Keine Meldungen, weder für erfolgreiche noch für
+ fehlgeschlagene Tests.
+ Die Optionen -v und -q schließen sich gegenseitig aus.
+
+-l <size>
+--line-size=<size>
+ Puffergröße für Eingabezeilen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+PRÄFERENZEN
+
+line.size
+ Zeilenpuffer-Größe, falls die Option -l nicht benutzt wurde.
+
+BEISPIELE
+
+Erzeugung einer Prüfsummenliste unter Windows:
+ dk-ls -r -tf -pn <directory> | dk-fic > checklist.txt
+
+Erzeugung einer Prüfsummenliste auf Nicht-Windows-Systemen:
+ find <directory> -type f | dk-fic > checklist.txt
+
+Verifizierung einer Prüfsummenliste:
+ dk-fic -c < checklist.txt
+
+Beim Erzeugen einer Prüfsummenliste müssen Sie darauf achten, dass die
+Datei mit der Prüfsummenliste nicht selbst mit in die Prüfsummenliste
+aufgenommen wird.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-fic --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-hex.str b/support/dktools/dktools/de/dk-hex.str
new file mode 100644
index 0000000000..04f963fcee
--- /dev/null
+++ b/support/dktools/dktools/de/dk-hex.str
@@ -0,0 +1,24 @@
+#
+# 0 Error: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error: Failed to restore signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 Error: Signal SIGPIPE received!
+#
+Signal SIGPIPE empfangen!
+#
+# 3 Error: Aborted by SIGINT signal!
+#
+Abbruch durch SIGINT-Signal!
+#
+# 4 Error: Aborted by SIGTERM signal!
+#
+Abbruch durch SIGTERM-Signal!
+#
+# 5 Error: Write attempts to standard output failed!
+#
+Schreibversuch auf Standardausgabe fehlgeschlagen!
diff --git a/support/dktools/dktools/de/dk-hex.txt b/support/dktools/dktools/de/dk-hex.txt
new file mode 100644
index 0000000000..5394a7eae9
--- /dev/null
+++ b/support/dktools/dktools/de/dk-hex.txt
@@ -0,0 +1,50 @@
+
+BEZEICHNUNG
+
+dk-hex - Datei hexadezimal oder oktal anzeigen
+
+ÃœBERSICHT
+
+dk-hex [<Option(en)>] [<Datei(en)>]
+
+BESCHREIBUNG
+
+Das Program dk-hex zeigt den Inhalt der angegebenen Dateien (bzw. der
+Standareingabe, falls keine Dateien angegeben wurden) hexadezimal oder
+oktal an.
+
+OPTIONEN
+
+-o Oktal-Darstellung.
+--octal
+
+-a Adressen mit anzeigen.
+--addresses
+
+-t Druckbare Zeichen mit anzeigen.
+--text
+
+--verbose Fehlermeldung anzeigen, wenn Abbruch wegen SIGPIPE erfolgte.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+AUTOR
+
+Dirk Krause
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-hex --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-ls.str b/support/dktools/dktools/de/dk-ls.str
new file mode 100644
index 0000000000..07c2ec92c3
--- /dev/null
+++ b/support/dktools/dktools/de/dk-ls.str
@@ -0,0 +1,93 @@
+#
+# 0 Error message: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error message: Failed to restore previous signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 Text "OVERFLOW" to show instead of the size
+#
+ÃœBERLAUF
+#
+# 3 4 5 Failed to retrieve file size information.
+#
+Dateigröße für symbolischen Link nicht ermittelbar:\n\t"
+Dateigröße nicht ermittelbar:\n\t"
+"!\n\tInformation nicht verfügbar!
+#
+# 6 Path grows too long
+#
+Beim Verzeichnis-Durchsuchen entsteht ein zu langer Pfad!
+#
+# 7 8 9 Failed to obtain timestamp!
+#
+Zeitstempel für symbolischen Link nicht ermittelbar:\n\t"
+Zeitstempel nicht ermittelbar:\n\t"
+"!\nInformation nicht verfügbar!
+#
+# 10
+#
+Dateityp und Attribute konnten nicht ermittelt werden (Bug)!
+#
+# 11
+#
+Ungültiger Text in Ausgabe-Spezifikation!
+#
+# 12 13 Failed to find target for symbolic link!
+#
+Ziel für symbolischen Link nicht ermittelbar:\n\t"
+"!
+#
+# 14 15 Failed to find unique file identifier
+#
+Datei-Identifier nicht ermittelbar:\n\t"
+"!
+#
+# 16 17 18 File names too long in summary.
+#
+Dateinamen zu lang für Wildcard-Auflösung:\n\t"
+",\n\t"
+"!
+#
+# 19 Message digest type not supported!
+#
+Message-Digest-Typ wird nicht unterstützt!
+#
+# 20 21 Message digest type not supported!
+#
+Message-Digest-Typ wird nicht unterstützt: "
+"!
+#
+# 22 23 Not a message digest type name!
+#
+Ungültiger Name für Message-Digest-Typ: "
+"!
+#
+# 24 25 Invalid encoding for message digest!
+#
+Ungültige Codierung für Message-Digest: "
+"!
+#
+# 26 Error message: Failed to init digest ctx
+#
+Message-Digest-Context konnte nicht initialisiert werden (lib)!
+#
+# 27 Error message: Failed to init message digest ctx
+#
+Message-Digest-Context konnte nicht initialisiert werden!
+#
+# 28 Error message: Failed to add bytes to ctx
+#
+Daten konnten nicht zu Message-Digest hinzugefügt werden!
+#
+# 29 Error message: Failed to finish message digest
+#
+Message-Digest konnte nicht ermittelt werden!
+#
+# 30, 31, 32
+#
+\# Anzahl Verzeichnisse:
+\# Anzahl Dateien:
+\# Gesamtgröße in Bytes:
diff --git a/support/dktools/dktools/de/dk-ls.txt b/support/dktools/dktools/de/dk-ls.txt
new file mode 100644
index 0000000000..f499eca3c3
--- /dev/null
+++ b/support/dktools/dktools/de/dk-ls.txt
@@ -0,0 +1,288 @@
+
+BEZEICHNUNG
+
+ dk-ls - Dateien auflisten
+
+ÃœBERSICHT
+
+ dk-ls [<Optionen>] [<Datei(en)>]
+
+BESCHREIBUNG
+
+Das Programm dk-ls zeigt Informationen über Dateien an.
+
+OPTIONEN
+
+-r
+--recursive
+ Rekursives Listing, d.h. auch Listing von Unterverzeichnissen.
+
+-f
+--stay-on-filesystem
+ Aktuelles Filesystem nicht verlassen.
+
+-p <String>
+--print-order=<String>
+ Ausgabereihenfolge. Der String besteht aus Kennbuchstaben,
+ welche Informationen in welcher Reihenfolge auszugeben sind:
+ n Name
+ N Name, aber Symlink-Ziel nicht anzeigen
+ s Größe
+ t Typ
+ p Zugriffsrechte (auf Windows-Systemen: Dateiattribute)
+ c Erzeugungszeitpunkt
+ m Zeitpunkt der letzten Änderung
+ a Zeitpunkt des letzten Zugriffs
+ l Link-Anzahl
+ u UID des Eigentümers (nicht auf Windows-Systemen)
+ g GID der Eigentümer-Gruppe (nicht auf Windows-Systemen)
+ d Geräte-Nummer (auf Windows-Systemen: Volume-Nummer)
+ i Inode-Nummer (auf Windows-Systemen: Datei-Index-Nummer)
+ r Relative Geräte-Nummer für Spezial-Dateien
+ w Windows-Reparse-Tag (nur auf Windows-Systemen)
+ x Message-Digest (Prüfsumme)
+ Standardeinstellung ist "mtpn" auf Nicht-Windows-Systemen,
+ "mtn" auf Windows-Systemen.
+ Falls die Präferenz "print.order" gesetzt ist, legt diese die
+ Standardeinstellung fest.
+
+-t <String>
+--types=<String>
+ Dateitypen, für die Informationen ausgegeben werden sollen:
+ d Verzeichnisse
+ f Alle anderen Einträge (die keine Verzeichnisse sind).
+
+-s
+--summary
+ Am Ende eine Zusammenfassung ausgeben (Anzahl angezeigter Verzeichnisse
+ und Dateien, Größe in Bytes).
+
+-m <String>
+--message-digest=<String>
+ Message-Digest-Typ und dessen Text-Codierung, getrennt durch einen
+ Punkt.
+ Der Digest-Typ kann "md5", "sha-1", "sha-224",
+ "sha-256", "sha-384", "sha-512" oder "ripemd-160" sein.
+ Als Text-Codierung kann "hex" (ASCII-Hex-Umwandlung) oder
+ "a85" (ASCII-85-Umwandlung) verwendet werden.
+ Standardeinstellung ist "sha-1.hex", außer wenn die Präferenz
+ "message.digest" gesetzt ist.
+
+-R
+--reset
+ Präferenzen für Ausgabereihenfolge und Message-Digest-Typ ignorieren.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+DIAGNOSE-AUSGABEN
+
+Falls für eine Datei die Geräte-Nummer, Volume-Nummer, Inode-Nummer,
+Datei-Index-Nummer nicht ermittelt werden kann, wird eine Folge von
+Fragezeichen ausgegeben.
+
+Kann die Link-Anzahl, die UID des Eigentümers oder die GID der
+Eigentümer-Gruppe nicht ermittelt werden, wird ein Fragezeichen ausgegeben.
+
+Kann die Datei nicht gelesen werden oder aus anderen Gründen kein
+Message-Digest gebildet werden (z.B. wenn es sich nicht um eine reguläre
+Datei handelt), wird eine Folge von 'x'-Buchstaben ausgegeben.
+
+TYP-AUSGABE AUF NICHT-WINDOWS-SYSTEMEN
+
+Die Ausgabe besteht aus zwei Stellen:
+
+* Link-Indikator, hierbei steht 'l' für einen symbolischen Link mit einem
+ Ziel innerhalb desselben Filesystems, 'L' für einen weiten Link (d.h.
+ das Ziel befindet sich in einem anderen Filesystem) und '!' für einen
+ toten Link (d.h. das Ziel des Links existiert nicht).
+ Falls es sich nicht um einen symbolischen Link handelt, wird dies durch
+ '-' kenntlich gemacht.
+
+* Datei-Typ:
+ d Verzeichnis
+ - Reguläre Datei
+ p Pipe (FIFO),
+ c Spezial-Datei für zeichenorientiertes Gerät
+ b Spezial-Datei für blockorientiertes Gerät
+ s Socket
+ C Spezial-Datei für gemultiplextes zeichenorientiertes Gerät
+ B Spezial-Datei für gemultiplextes blockorientiertes Gerät
+ D Name-Service-Door
+ e Event-Port
+ o Xenix Spezial-Datei
+ n Xenix Semaphor
+ m Xenix gemeinsam genutzte Daten
+ v VXFS-komprimierte Datei
+ n Netzwerk-Spezial-Datei
+ w Whiteout,
+ a ACL-Schatten-Eintrag
+
+BERECHTIGUNGEN AUF NICHT-WINDOWS-SYSTEMEN
+
+Die Ausgabe besteht aus 3 Gruppen: Berechtigungen für Eigentümer,
+Eigentümer-Gruppe und alle anderen Benutzer.
+Jede Gruppe besteht aus 3 Zeichen, die Lese-Recht ('r' oder '-'),
+Schreib-Recht ('w' oder '-') und Ausführungs-Recht ('x' oder '-') angeben.
+
+Ist das SUID-Bit gesetzt (d.h. beim Ausführen einer Datei hat der
+Prozess die effektive Berechtigung des Datei-Eigentümers), wird
+das Ausführungs-Recht des Eigentümers mit 's' anstelle von 'x' bzw.
+mit 'S' anstelle von '-' angezeigt.
+
+Ist das GSID-Bit gesetzt, wird das Ausführungsrecht der Eigentümer-Gruppe
+mit 's' 's' anstelle von 'x' bzw. mit 'S' anstelle von '-' angezeigt.
+
+Ist das Flag für eingeschränktes Löschen bzw. Sticky-Bit gesetzt,
+wird das Ausführungsrecht aller anderen Nutzer mit 't' anstelle von 'x'
+bzw. 'T' anstelle von '-' angezeigt.
+
+TYP-AUSGABE AUF WINDOWS-SYSTEMEN
+
+Die Ausgabe besteht aus 2 Stellen:
+
+* Indikator für Reparse-Point-Tag:
+ - Kein Reparse-Point
+ m Mount-Point
+ l Symbolischer Link
+ w WIM-Image
+ s SIS-Reparse-Point
+ n NFS-Reparse-Point
+ c CSV-Reparse-Point
+ d DFS-Reparse-Point
+ f DFSR-Reparse-Point
+ u Deduplizierungs-Reparse-Point
+ h HSM-Reparse-Point
+ 2 HSM2-Reparse-Point
+ r Anderer Reparse-Point
+
+* Datei-Typ:
+ d Verzeichnis (Directory)
+ - Reguläre Datei
+ b Gerät
+
+ATTRIBUT-AUSGABE AUF WINDOWS-SYSTEMEN
+
+Die Ausgabe besteht aus 10 Zeichen:
+
+* Read-Only-Attribut (Datei ist schreibgeschützt, d.h. nur lesbar):
+ R Schreibschutz aktiv
+ - nicht aktiv
+
+* System-Attribut (Systemdatei)
+ S Systemdatei
+ - keine Systemdatei
+
+* Hidden-Attribut (versteckte Datei)
+ H versteckt
+ - nicht versteckt
+
+* Not-Indexed-Attribut (Datei von Suchindex ausgenommen)
+ I Attribut gesetzt
+ - nicht gesetzt
+
+* Compressed-Attribut (komprimierte Datei)
+ C komprimiert
+ - nicht komprimiert
+
+* Encrypted-Attribut (verschlüsselte Datei)
+ E verschlüsselt
+ - nicht verschlüsselt
+
+* Offline-Attribut (ausgelagert auf externen Datenträger)
+ O offline
+ - nicht offline
+
+* Sparse-Attribut
+ P Attribut gesetzt
+ - nicht gesetzt
+
+* Temporary-Attribut (temporäre Datei)
+ T temporär
+ - nicht temporär
+
+* Virtual-Attribut (virtuelle Datei)
+ V virtuell
+ - nicht virtuell
+
+PRÄFERENZEN
+
+print.order
+ Standard-Ausgabereihenfolge, falls die Option -p nicht benutzt wurde.
+
+message.digest
+ Standard-Message-Digest-Typ und Text-Codierung, falls die
+ Option -m nicht benutzt wurde.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+Die Konzepte für Benutzermanagement und Zugriffsrechte auf Dateien
+unterscheiden sich signifikant zwischen Windows-Systemen einerseits
+und Linux/Unix-Systemen andererseits.
+Auf Windows-Systemen werden daher die Buchstaben 'u' und 'g' in der
+Ausgabereihenfolge ignoriert.
+
+Auf Windows-Systemen stehen verschiedene Funktionen zur Verfügung, um
+Informationen über Dateien zu erhalten. Diese liefern unterschiedlich
+detaillierte Angaben. Falls der aktuelle Prozess nur eingeschränkte
+Zugriffsrechte auf eine Datei hat (z.B. auf die Datei C:\Pagefile.sys),
+kann es vorkommen, dass gar keine bzw. nur ein Teil der gewünschten
+Informationen verfügbar ist.
+In derartigen Fällen werden Fragezeichen bzw. Fragezeichen-Sequenzen
+anstelle der gewünschten Informationen ausgegeben.
+
+Auf Nicht-Windows-Systemen gibt es keine Windows-Reparse-Points und
+somit auch keine Windows-Reparse-Tags, der Buchstabe 'w' in der
+Ausgabereihenfolge wird hier ignoriert.
+
+DATEIBEZEICHNUNGN IN ANFÃœHRUNGSZEICHEN UNTER WINDOWS
+
+Auf Windows-Systemen wird der Backslash für verschiedene Zwecke benutzt, u.a.:
+* als Trennzeichen zwischen Komponenten eines Pfadnamens und
+* für Backslash-Escape-Sequenzen in Strings.
+Anführungszeichen (") werden benutzt, um Text mit Leerzeichen zusammenzufassen.
+Dabei wird allerdings auch die Verarbeitung von Backslash-Escape-Sequenzen
+aktiviert.
+
+Eingabe in cmd.exe-Shell An ein Programm übergebenes Argument
+ C: C:
+ "C:" C:
+ C:\ C:\
+ "C:\" C:"
+ C:\\ C:\\
+ "C:\\" C:\
+
+Im vierten Beispiel wollen wir das Wurzelverzeichnis eines Laufwerkes
+angeben, eingeschlossen in Anführungszeichen. Unglücklicherweise wird
+in Strings die Folge von Backslash und Anführungszeichen als
+Backslash-Escape-Sequenz für die Eingabe eines Anführungszeichens
+als Bestandteil des Strings benutzt (nur ein Anführungszeichen würde den
+String beenden). Nach Verarbeitung der Backslash-Escape-Sequenz wird
+ein Anführungszeichen in den String eingebaut, der als Argument an das
+Programm übergeben wird.
+Wenn Sie also
+ dk-ls "C:\"
+eintippen, erhält dk-ls den Text C:" als Argument.
+Bei der Angabe von Dateinamen in Anführungszeichen sollten Sie für jeden
+gewünschten Backslash zwei Backslashes schreiben, hier wäre also
+ dk-ls "C:\\"
+richtig.
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-ls --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-pwd.str b/support/dktools/dktools/de/dk-pwd.str
new file mode 100644
index 0000000000..4f67be14c6
--- /dev/null
+++ b/support/dktools/dktools/de/dk-pwd.str
@@ -0,0 +1,2 @@
+Aktuelles Verzeichnis konnte nicht ermittelt werden!
+
diff --git a/support/dktools/dktools/de/dk-pwd.txt b/support/dktools/dktools/de/dk-pwd.txt
new file mode 100644
index 0000000000..d288d5eb05
--- /dev/null
+++ b/support/dktools/dktools/de/dk-pwd.txt
@@ -0,0 +1,40 @@
+
+BEZEICHNUNG
+
+dk-pwd - Print working directory
+
+ÃœBERSICHT
+
+dk-pwd [<Option(en)>]
+
+BESCHREIBUNG
+
+Das Programm gibt den Namen des aktuellen Verzeichnisses auf die
+Standardausgabe aus.
+
+OPTIONEN
+
+-l Nur letzten Teil des Verzeichnisnamens ausgeben.
+
+-b Backslashes (unter Windows) durch Slashes ersetzen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-pwd --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-pwgen.str b/support/dktools/dktools/de/dk-pwgen.str
new file mode 100644
index 0000000000..2e6f83542a
--- /dev/null
+++ b/support/dktools/dktools/de/dk-pwgen.str
@@ -0,0 +1,110 @@
+#
+# 0 Error: OpenSSL PRNG not available!
+#
+Der OpenSSL-Zufallsgenerator ist nicht verfügbar!
+#
+# 1 Error: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 2 Error: Failed to restore signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 3 Error: Numeric overflow while reading a size number!
+#
+Zahlenbereichsüberlauf beim Lesen einer Größenangabe!
+#
+# 4 5 Error: Not a size specification: "..."!
+#
+Keine Größenangabe: "
+"!
+#
+# 6 7 Error: Failed to retrieve size from text: "..."!
+#
+Keine Größenangabe in Text gefunden: "
+"!
+#
+# 8 Error: Options -h, -x, -X, and -p are mutually exclusive!
+#
+Die Optionen -h, -x, -X und -p schließen einander aus!
+#
+# 9 10 11 Error: Option -u ignored for this output type!
+#
+Option -u wird für diesen Ausgabe-Typ ignoriert!
+Option -d wird für diesen Ausgabe-Typ ignoriert!
+Option -s wird für diesen Ausgabe-Typ ignoriert!
+#
+# 12 Error: Illegal range combination for -l, -u, -d, -s!
+#
+Bereichsangaben für -l, -u, -d, -s passen nicht zueinander!
+#
+# 13 Error: Numeric overflow in password length calculation!
+#
+Zahlenbereichsüberlauf in Passwortlängen-Berechnung!
+#
+# 14 Error: Failed to obtain random data from cryptographic context!
+#
+Keine Zufallsdaten aus kryptographischen Kontext erhalten!
+#
+# 15 Error: Failed to acquire cryptographic context!
+#
+Kryptographischer Kontext konnte nicht angelegt werden!
+#
+# 16 Error: Failed to open /dev/random and /dev/urandom devices!
+#
+Weder /dev/random noch /dev/urandom nutzbar!
+#
+# 17 Error: Failed to obtain random data!
+#
+Gewinnung von Zufallsdaten fehlgeschlagen!
+#
+# 18 Error: Failed to seed OpenSSL PRNG!
+#
+Zufallsgenerator konnte nicht initialisiert werden!
+#
+# 19 20 21 Error: Aborted by SIGTERM signal!
+#
+Abbruch durch SIGTERM-Signal!
+Abbruch durch SIGINT-Signal!
+Abbruch durch SIGPIPE-Signal!
+#
+# 22 Error: Write attempt to standard output failed!
+#
+Schreiben auf Standardausgabe schlug fehl!
+#
+# 23 Debug: Seeding PRNG using OpenSSL builtin functions.
+#
+Initialisiere PRNG mittels OpenSSL-Funktionen.
+#
+# 24 Debug: Seeding PRNG from EGD socket.
+#
+Initialisiere PRNG von EGD-Socket.
+#
+# 25 Debug: Seeding PRNG from Windows cryptographic context.
+#
+Initialisiere PRNG von Windows-Kryptographie-Kontext.
+#
+# 26 Debug: Seeding PRNG from screen contents.
+#
+Initialisiere PRNG von Bildschirm-Inhalt.
+#
+# 27 Debug: Seeding PRNG from /dev/random or /dev/urandom device.
+#
+Initialisiere PRNG von /dev/random oder /dev/urandom.
+#
+# 28 Debug: Seeding PRNG from EGD socket specified by preference.
+#
+Initialisiere PRNG von EGD-Socket entsprechend Preferences.
+#
+# 29 ERROR: Options -b, -h, -x, -X, and -p are mutually exclusive!
+#
+Die Optionen -b, -h, -x, -X und -p schließen einander aus!
+#
+# 30 ERROR: Failed to reset used memory!
+#
+Der benutzte Hauptspeicher wurde nicht zurückgesetzt!
+#
+# 31 ERROR: The -b option is not supported on Windows!
+#
+Die Option -b ist unter Windows nicht verfügbar!
diff --git a/support/dktools/dktools/de/dk-pwgen.txt b/support/dktools/dktools/de/dk-pwgen.txt
new file mode 100644
index 0000000000..8ee348d2c7
--- /dev/null
+++ b/support/dktools/dktools/de/dk-pwgen.txt
@@ -0,0 +1,127 @@
+
+BEZEICHNUNG
+
+dk-pwgen - Passwörter, PINs und hexadecimale Keys generieren
+
+ÃœBERSICHT
+
+dk-pwgen [<Option(en)>]
+
+BESCHREIBUNG
+
+Das Programm dk-pwgen erzeugt Passwörter, PIN-Nummern oder hexadezimale
+Keys (z.B. für WLAN).
+Folgende Ausgabetypen sind möglich:
+
+* Normales Benutzer-Passwort
+ Dies ist der Standardausgabetyp. Geben Sie einen Bereich (oder einen
+ einzelnen Wert) für die Passwort-Länge an, sowie für die Anzahlen
+ an Großbuchstaben, Zahlen und Sonderzeichen.
+ Die minimale Passwort-Länge muss größer oder gleich der Summe der
+ Maximalwerte für Großbuchstaben, Zahlen und Sonderzeichen sein.
+
+* Hartes Passwort
+ Mit der Option -h wird auf die Bildung eines harten Passwortes umgeschalten.
+ Sie können hier nur die Länge angeben. Alle Zeichen werden aus dem gesamten
+ Bereich 0x00 ('!') bis 0x7A ('z') gewählt.
+
+* Zufällige Binärdaten
+ Mit der Option -b wird ein Block zufälliger Binärdaten erzeugt, die Größe
+ des Blocks kann angegeben werden.
+ Nicht verfügbar auf Windows-Systemen, dort kann das Programm dk-rand
+ verwendet werden.
+
+* PIN-Nummer
+ Mit der Option -p wird eine PIN-Nummer erzeugt, die Länge kann angegeben
+ werden.
+
+* Hexadezimaler Key
+ Mit den Optionen -x bzw. -X wird ein hexadezimaler Key mit einer vorgegebenen
+ Stellenzahl erzeugt. Mit -x werden Kleinbuchstaben für 'a' bis 'f' benutzt,
+ mit -X Großbuchstaben 'A' bis 'F'.
+
+OPTIONEN
+
+-h Hartes Passworte anstelle eines normalen
+--hard Benutzer-Passwortes erzeugen.
+
+-b Binäre Zufallsdaten anstelle von Passwörtern, Pins oder
+--binary Keys erzeugen. Nicht verfügbar unter Windows, dort gibt
+ es das Programm dk-rand.
+
+-x Hexadezimalen Key mit Kleinbuchstaben 'a' ... 'f'
+--hex erzeugen.
+
+-X Hexadezimalen Key mit Großbuchstaben 'A' ... 'F'
+--Hex erzeugen.
+
+-p PIN-Nummer erzeugen.
+--pin
+
+-l <Bereich> Passwort-Länge.
+--length=<Bereich> Ein Bereich wird durch zwei Zahlen angegeben, die
+ durch ein Minuszeichen getrennt sind, z.B. "6-8".
+
+-u <Bereich> Anzahl der Großbuchstaben in normalen
+--upper-case=<Bereich> Benutzer-Passwörtern.
+
+-d <Bereich> Anzahl der Ziffern in normalen Benutzer-Passwörtern.
+--digits=<Bereich>
+
+-s <Bereich> Anzahl der Sonderzeichen in normalen
+--special=<Bereich> Benutzer-Passwörtern.
+
+-n Newline-Ausgabe unterdrücken.
+--no-newline
+
+--verbose Fehlermeldung anzeigen, wenn Abbruch wegen SIGPIPE
+ erfolgte.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+BEISPIELE
+
+Um ein normales Benutzer-Passwort mit einer Länge von 8 bis 10 Zeichen
+zu erzeugen mit 1 bis 3 Großbuchstaben, 1 bis 2 Ziffern und 1 bis 2
+Sonderzeichen:
+
+dk-pwgen -l 8-10 -u 1-3 -d 1-2 -s 1-2
+
+
+Um ein hartes Passwort mit einer Länge von 8 bis 10 Zeichen zu erzeugen:
+
+dk-pwgen -h -l 8-10
+
+
+Um eine PIN-Nummer mit 6 Stellen zu erzeugen:
+
+dk-pwgen -p -l 6
+
+
+Um einen hexadezimalen Key für WLAN-Verschlüsselung mit 64 Stellen zu erzeugen:
+
+dk-pwgen -x -l 64
+
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-pwgen --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+This product includes software developed by the OpenSSL Project for use in
+the OpenSSL Toolkit (http://www.openssl.org/).
+This product includes cryptographic software written by
+Eric Young (eay@cryptsoft.com).
+This product includes software written by Tim Hudson (tjh@cryptsoft.com).
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-recv.str b/support/dktools/dktools/de/dk-recv.str
new file mode 100644
index 0000000000..1a5ab2f63a
--- /dev/null
+++ b/support/dktools/dktools/de/dk-recv.str
@@ -0,0 +1,35 @@
+#
+# 0 1 Error: Failed to set up / restore signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 File name "stdin" for error message
+#
+Standardeingabe
+#
+# 3 Error: Failed to close file!
+#
+Schließen der Datei fehlgeschlagen!
+#
+# 4 Error: Timeout too large!
+#
+Timeout-Wert zu hoch!
+#
+# 5 Error: Timeout must not be negative!
+#
+Timeout darf nicht negativ sein!
+#
+# 6 Error: Timeout value not found!
+#
+Timeout-Wert nicht gefunden!
+#
+# 7 Error: Wrong number of arguments!
+#
+Fehlerhafte Argumente-Anzahl!\n\tHost Port [Dateiname]
+#
+# 8 9 10 Error: Interrupted by ... signal!
+#
+Abbruch durch INT-Signal!
+Abbruch durch TERM-Signal!
+Abbruch durch PIPE-Signal!
diff --git a/support/dktools/dktools/de/dk-recv.txt b/support/dktools/dktools/de/dk-recv.txt
new file mode 100644
index 0000000000..491f0e5087
--- /dev/null
+++ b/support/dktools/dktools/de/dk-recv.txt
@@ -0,0 +1,67 @@
+
+BEZEICHNUNG
+
+dk-recv - Daten von dk-send empfangen
+
+ÃœBERSICHT
+
+dk-recv [<Option(en)>] <Host> <Port> [<Zieldatei>]
+
+BESCHREIBUNG
+
+Das Programm stellt eine TCP-Verbindung zum angegebenen Host und Port
+her und empfängt über diese Verbindung Daten. Die Daten in die angegebene
+lokale Zieldatei geschrieben bzw. auf die Standardausgabe.
+
+OPTIONEN
+
+-t Aufforderung an den dk-send-Prozess, mit
+--transmission dem Senden der Daten zu beginnen.
+
+-l <Port> Lokale Portnummer, die verwendet werden soll.
+--local-port=<Port>
+
+-c <Timeout> Timeout für die Verbindungsherstellung,
+--connect-timeout=<Timeout> Angabe als ganze Zahl oder Gleitkommazahl.
+
+--help Kurzen Hilfebildschirm anzeigen.
+
+--manual Manual-Text anzeigen.
+
+--version Versionsnummer anzeigen.
+
+--license Lizenzbestimmungen anzeigen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+BEISPIELE
+
+* Daten empfangen und auf Festplatte (Partition) speichern:
+ dk-recv 192.0.2.103 9876 | dk-blks -b 4k | dd of=/dev/sda bs=4096
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+In Version 3.x.x war die Funktionalität von dk-recv in "dknet -r"
+verfügbar.
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-recv --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-send.str b/support/dktools/dktools/de/dk-send.str
new file mode 100644
index 0000000000..c52b405cf3
--- /dev/null
+++ b/support/dktools/dktools/de/dk-send.str
@@ -0,0 +1,71 @@
+#
+# 0 Error: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error: Failed to restore signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 Name of input file just processed (default).
+#
+Standardeingabe
+#
+# 3 Progress: Accepting incoming connection requests.
+#
+Warte auf eingehende Verbindungsanfragen.
+#
+# 4 Error: Problem with peer address length!
+#
+Unzulässige Adresslänge!
+#
+# 5 Progress: Connected ...
+#
+Verbunden:
+#
+# 6 Debug: Rejected ...
+#
+Abgelehnt:
+#
+# 7 Progress: Starting data transfer.
+#
+Datentransfer beginnt.
+#
+# 8 Progress: Finished data transfer.
+#
+Datentransfer beendet.
+#
+# 9 ERROR: Disconnected ...
+#
+Verbindung vorzeitig abgebrochen:
+#
+# 10 11 ERROR: Invalid number of clients ...!
+#
+Unzulässige Client-Anzahl "
+"!
+#
+# 12 ERROR: Wrong number of command line arguments!
+#
+Falsche Anzahl Kommandozeilen-Argumente!
+#
+# 13 ERROR: Aborted by INT signal!
+#
+Abbruch durch INT-Signal!
+#
+# 14 ERROR: Aborted by TERM signal!
+#
+Abbruch durch TERM-Signal!
+#
+# 15 Debug: Not a dk-send client ...
+#
+Kein dk-send-Client:
+#
+# 16 17 18
+#
+Timeout-Wert zu groß!
+Timeout darf nicht negativ sein!
+Timeout-Wert nicht gefunden!
+#
+# 19
+#
+Abbruch, alle Verbindungen zu Empfängern wurden getrennt!
diff --git a/support/dktools/dktools/de/dk-send.txt b/support/dktools/dktools/de/dk-send.txt
new file mode 100644
index 0000000000..ca30c55704
--- /dev/null
+++ b/support/dktools/dktools/de/dk-send.txt
@@ -0,0 +1,79 @@
+
+BEZEICHNUNG
+
+dk-send - Daten an einen oder mehrere Empfänger (dk-recv-Prozesse) senden
+
+ÃœBERSICHT
+
+dk-send [<Option(en)>] <Port> [<Quelldatei>]
+
+BESCHREIBUNG
+
+Das Programm wartet auf eingehende Verbindungsanfragen und nimmt die
+Verbindungen an.
+Der Inhalt der Quelldatei (bzw. der Standardeingabe) wird über alle
+Verbindungen gesendet.
+
+OPTIONEN
+
+-n <Anzahl> Anzahl der Clients bzw. "unlimited"
+--number-of-clients=<Anzahl> für unbegrenzte Anzahl (letzter Client
+ muss Option -t verwenden).
+
+-a <Client(s)> Erlaubte Client-Adressen, durch Kommata
+--allow=<Client(s)> getrennt.
+ Jede erlaubte Client-Adresse besteht aus
+ einer IP-Adresse und optional einer durch
+ Schrägstrich abgetrennten Netzmaske.
+ Die Netzmaske kann als IP-Adresse oder
+ Bitanzahl angegeben werden.
+
+-l Nur auf lokalen Interfaces auf eingehende
+--local-only Verbindungen warten.
+
+-b <Anzahl> Anzahl der bei Bedarf in der Wartschlange
+--backlog=<Anzahl> zwischenzuspeichernden Verbindungsanfragen.
+
+-c <Timeout> Timeout für den Leseversuch nach Herstellen
+--connect-timeout=<Timeout> einer Verbindung, Angabe in Sekunden.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+BEISPIELE
+
+* Daten einer kompletten Festplatte (Partition) senden
+ dd if=/dev/sda bs=4096 | dk-send 9876
+
+* ... an 3 Clients
+ dd if=/dev/sda bs=4096 | dk-send -n 3 9876
+
+* ... die nur aus Netz 192.0.2.0/255.255.255.0 kommen dürfen
+ dd if=/dev/sda bs=4096 | dk-send -n 3 -a 192.0.2.0/255.255.255.0 9876
+ oder
+ dd if=/dev/sda bs=4096 | dk-send -n 3 -a 192.0.2.0/24 9876
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+In Version 3.x.x war die Funktionalität in "dknet -s" verfügbar.
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-send --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-sort.str b/support/dktools/dktools/de/dk-sort.str
new file mode 100644
index 0000000000..a6a46d1282
--- /dev/null
+++ b/support/dktools/dktools/de/dk-sort.str
@@ -0,0 +1,36 @@
+#
+# 0 Error message: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error message: Failed to restore previous signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 3 4 Error messages for encoding/decoding/processing errors
+#
+Fehler beim Codieren!
+Fehler beim Decodieren!
+Fehler beim Verarbeiten!
+#
+# 5 6 7 8 9 10 Error messages with detailed position
+#
+Fehler beim Codieren!\n\tByte:
+Fehler beim Decodieren!\n\tByte:
+Fehler beim Verarbeiten!\n\tByte:
+,\n\tZeichen:
+,\n\tPosition in Zeile:
+.
+#
+# 11 Options -u, -x, -f mutually exclusive!
+#
+Die Optionen -u, -x and -f schließen sich gegenseitig aus!
+#
+# 12 13 Error: Illegal input encoding!
+#
+Unzulässige Eingabe-Codierung: "
+"!
+#
+# 14 Error: Failed to initialize text stream processing!
+#
+Text-Datenstrom-Verarbeitung konnte nicht initialisiert werden!
diff --git a/support/dktools/dktools/de/dk-sort.txt b/support/dktools/dktools/de/dk-sort.txt
new file mode 100644
index 0000000000..2f2e5b4f44
--- /dev/null
+++ b/support/dktools/dktools/de/dk-sort.txt
@@ -0,0 +1,112 @@
+
+BEZEICHNUNG
+
+dk-sort - Text zeilenweise sortieren
+
+ÃœBERSICHT
+
+dk-sort [<Option(en)>] [<Datei(en)>]
+
+BESCHREIBUNG
+
+Das Programm dk-sort liest die Standardeingabe bzw. die angegebenen
+Dateien ein und gibt die Textzeilen in sortierter Reihenfolge auf die
+Standardausgabe aus.
+
+OPTIONEN
+
+-i <String>
+--input-encoding=<String>
+ Erwartetes Text-Encoding für die Eingabedaten an.
+ Ein Byte-Order-Marker (BOM) am Beginn der Eingabe überschreibt
+ das Encoding.
+
+-c
+--case-insensitive
+ Textvergleiche ohne Unterscheidung von Groß- und Kleinschreibung.
+
+-b
+--ignore-leading-blanks
+ Führende Leerzeichen entfernen.
+
+-w
+--normalize
+ Textzeilen normalisieren. Dabei werden führende und abschließende
+ Leerzeichenfolgen entfernt, alle anderen Leerzeichenfolgen
+ werden durch ein einzelnes Leerzeichen ersetzt.
+
+-e
+--suppress-empty-lines
+ Ausgabe von leeren Zeilen (Zeilen ohne Text) unterdrücken.
+
+-n
+--number
+ Textzeilen anhand eines Ganzzahl-Wertes am Zeilenanfang vergleichen.
+
+-u
+--unsigned
+ Textzeilen anhand eines vorzeichenlosen Ganzzahlwertes am Zeilenanfang
+ vergleichen.
+
+-x
+--hex
+ Textzeilen anhand eines Hexadezimal-Ganzzahlwertes am Zeilenanfang
+ vergleichen.
+
+-f
+--float
+ Textzeilen anhand eines Gleitkommawertes (C-Datentyp double) am
+ Zeilenanfang vergleichen.
+
+-v
+--value-lines-first
+ Zeilen mit Wert (für -n, -u, -x und -f) vor Zeilen ohne den
+ geforderten Wert schreiben.
+ Standardmäßig werden die Zeilen ohne den geforderten Wert zuerst
+ ausgegeben.
+
+-m
+--merge-equal-lines
+ Folge gleicher Zeilen auf eine Zeile reduzieren.
+
+-r
+--reverse
+ Umgekehrte Sortier-Reihenfolge.
+
+-l <Größe>
+--line-size=<Größe>
+ Größe des Zeilenpuffers für die Eingabezeilen.
+ Standard und Minimum ist 1024.
+
+-R
+--reset
+ Präferenz für die Größe des Zeilenpuffers ignorieren.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+PRÄFERENZEN
+
+line.size
+ Größe des Zeilenpuffers, falls die Option -l nicht benutzt wurde.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-sort --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-sqlsplit.txt b/support/dktools/dktools/de/dk-sqlsplit.txt
new file mode 100644
index 0000000000..a6f72941f8
--- /dev/null
+++ b/support/dktools/dktools/de/dk-sqlsplit.txt
@@ -0,0 +1,45 @@
+
+BEZEICHNUNG
+
+ dk-sqlsplit - Ãœberlange Zeilen in SQL-Dateien splitten
+
+ÃœBERSICHT
+
+ dk-sqlsplit [<Datei(en)>]
+
+BESCHREIBUNG
+
+Das Programm splittet überlange Zeilen in SQL-Daten (wie sie z.B. von
+mysqldump erzeugt werden) an Datensatz-Grenzen.
+
+Die Grenze zwischen zwei Datensätzen wird erkannt, wenn außerhalb von
+Strings und Kommentaren auf ")," eine öffnende Klammer folgt.
+Strings können in einfache, doppelte oder rückwärts zeigende
+Anführungszeichen eingschlossen sein.
+
+Es werden entweder die angegebenen Dateien oder die Standardeingabe
+verarbeitet. Die Ausgabe erfolgt auf die Standardausgabe.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-sqlsplit --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-t2db.str b/support/dktools/dktools/de/dk-t2db.str
new file mode 100644
index 0000000000..16d42fa8de
--- /dev/null
+++ b/support/dktools/dktools/de/dk-t2db.str
@@ -0,0 +1,76 @@
+#
+# 0 Error: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error: Failed to restore previous signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 Default file name to be used for standard input.
+#
+<Standardeingabe>
+#
+# 3 4 5 Error: Failed to set database entry "key"="value"!
+#
+Datensatz konnte nicht erstellt werden:\n"
+"="
+"!
+#
+# 6 7 Error: Failed to delete database entry "key"!
+#
+Datensatz konnte nicht gelöscht werden:\n"
+"!
+#
+# 8 9 10 11 12 13
+#
+Decodierung fehlgeschlagen!
+Codierung fehlgeschlagen!
+Verarbeitung fehlgeschlagen!
+Weitere Decodierungs-Fehler!
+Weitere Codierungs-Fehler!
+Weitere Verarbeitungs-Fehler!
+#
+# 14 15 16 17 18 19
+#
+Decodierung fehlgeschlagen!\n\tByte:
+Codierung fehlgeschlagen!\n\tByte:
+Verarbeitung fehlgeschlagen!\n\tByte:
+,\n\tZeichen:
+,\n\tPosition in Zeile:
+.
+#
+# 20 ERROR: Failed to read from file!
+#
+Datei konnte nicht gelesen werden!
+#
+# 21 ERROR: Failed to set up text stream processor!
+#
+Text-Stream-Processing konnte nicht eingerichtet werden!
+#
+# 22 23 ERROR: Path too long for pattern "..."!
+#
+Pfad zu lang für Muster\n"
+"!
+#
+# 24 25 ERROR: No such file "..."!
+#
+Keine solche Datei:\n"
+"!
+#
+# 26 ERROR: Failed to close database!
+#
+Fehler beim Schließen (Schreiben) der Datenbank!
+#
+# 27 ERROR: Database name is required!
+#
+Datenbank muss angegeben werden!
+#
+# 28 29 ERROR: Illegal text encoding "..."!
+#
+Unzulässige Text-Codierung: "
+"!
+#
+# 30 ERROR: Aborted by signal
+#
+Abbruch durch Signal!
diff --git a/support/dktools/dktools/de/dk-t2db.txt b/support/dktools/dktools/de/dk-t2db.txt
new file mode 100644
index 0000000000..af22883fc5
--- /dev/null
+++ b/support/dktools/dktools/de/dk-t2db.txt
@@ -0,0 +1,124 @@
+
+BEZEICHNUNG
+
+dk-t2db - Konverter Text zu Datenbank
+
+ÃœBERSICHT
+
+dk-t2db [<Optionen>] [<Dateien>] <Datenbank>
+
+BESCHREIBUNG
+
+Das Programm konvertiert Text-Dateien (bzw. Text aus der Standardeingabe)
+in eine einfache Text-Datenbank.
+
+Eine "einfache Datenbank" ist eine Berkeley-DB-, NDBM oder In-Memory-Datenbank.
+Die Einträge bestehen aus einem Schlüssel und einem Wert. Sowohl der Schlüssel
+als auch der Wert sind eine beliebige Byte-Folge. Anhand des Schlüssels kann
+nach einem bestimmten Eintrag gesucht werden. Der Schlüssel ist eindeutig,
+d.h. es können keine zwei Einträge mit demselben Schlüssel in der Datenbank
+vorkommen.
+
+Eine "einfache Text-Datenbank" ist eine einfache Datenbank, die als
+Schlüssel und Werte ausschließlich Text enthält. Das Nullzeichen, das das
+Textende markiert, wird mit in der Datenbank abgespeichert.
+
+Datenbanken werden in der Form Typ::Dateiname angebeben, d.h. Typ
+und Dateiname werden durch zwei Doppelpunkte getrennt.
+Folgende Typangaben sind möglich:
+bdb Berkeley-DB-Datenbank
+ndbm NDBM-Datenbank
+mem In-Memory-Datenbank
+
+OPTIONEN
+
+-a, --add
+ ändert eine bestehende Datenbank (ändert Einträge bzw. fügt
+ hinzu).
+ Ohne diese Option wird eine neue Datenbank erstellt, zuvor wird
+ eine evtl. bereits vorhandene Datenbank gelöscht.
+
+-R, --reset
+ ignoriert Präferenzen für Zeilen-, Schlüssel- und Wert-Größe.
+
+-l <Größe>, --line-size=<Größe>
+ Größe des Zeilenpuffers (Anzahl Zeichen), Standard: 1024.
+
+-k <Größe>, --key-buffer-size=<Größe>
+ Größe des Schlüsselpuffers (Anzahl Zeichen), Standard: 512.
+
+-v <Größe>, --value-buffer-size=<Größe>
+ Größe des Wertpuffers (Anzahl Zeichen), Standard: 512.
+
+-i <String>, --input-encoding=<String>
+ Erwartetes Text-Encoding. Das hier angegebene Encoding wird
+ überschrieben, wenn am Text-Beginn ein Byte-Order-Marker (BOM)
+ gefunden wird.
+
+-c <String>, --comment=<String>
+ Optionale Angabe eines Kommentarzeichens. Alle Zeilen, die mit
+ dem Kommentarzeichen als erstes Nicht-Leerzeichen beginnen,
+ werden ignoriert.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+BEISPIELE
+
+* Standardeingabe verarbeiten, in-memory-Datenbankdatei db.dat anlegen:
+ dk-t2db -c "#" mem::db.dat
+
+* Textdatei db.in verarbeiten, Berkeley-DB-Datenbankdatei bdb.dat anlegen:
+ dk-t2db -c "#" db.in bdb::bdb.dat
+
+* Textdatei db.in verarbeiten, NDBM-Datenbank ndbm.dat ändern:
+ dk-t2db -a -c "#" db.in ndbm::ndbm.dat
+
+PRÄFERENZEN
+
+line.size Puffergröße für Eingabezeilen
+
+text-db.key.max-size Puffergröße für den Schlüssel
+
+text-db.value.max-size Puffergröße für den Wert
+
+
+DATEIEN
+
+Der Eingabetext wird zeilenweise verarbeitet, jede Textzeile ergibt einen
+Datensatz.
+Das erste Wort am Zeilenanfang (die erste Folge von Nicht-Leerzeichen)
+ist der Schlüssel. Durch Leerzeichen bzw. eine Leerzeichenfolge wird
+der Wert abgetrennt.
+Der Schlüssel kann keine Leerzeichen enthalten, der Wert darf Leerzeichen
+enthalten.
+Enthält eine Zeile nur einen Schlüssel, aber keinen Wert, wird der entsprechende
+Datensatz aus der Datenbank gelöscht, falls vorhanden.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+Für die Datenbank ist die Verwendung von Wildcards nicht möglich.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+In früheren Versionen wurde die Funktionalität durch "dkdbt make"
+bereitgestellt.
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-t2db --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-t2h.str b/support/dktools/dktools/de/dk-t2h.str
new file mode 100644
index 0000000000..a95c2eb9d9
--- /dev/null
+++ b/support/dktools/dktools/de/dk-t2h.str
@@ -0,0 +1,66 @@
+#
+# 0 Error: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error: Failed to restore signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 3 Error: Illegal encoding!
+#
+Unzulässiges Encoding: "
+"!
+#
+# 4 Error: Conversion from number to text failed, probably bug!
+#
+Konvertierung einer Zahl nach Text schlug fehl, evtl. Bug!
+#
+# 5 Error: Failed to decode string from UTF-16!
+#
+UTF-16-Text konnte nicht decodiert werden!
+#
+# 6 Error: Failed to decode string from ANSI!
+#
+ANSI-Text konnte nicht decodiert werden!
+#
+# 7 Error: Failed to decode string from UTF-8!
+#
+UTF-8-Text konnte nicht decodiert werden!
+#
+# 8 Error: Too many input lines, line number overflow!
+#
+Zeilennummern-Ãœberlauf (zu viele Eingabezeilen)!
+#
+# 9 Error: No command line arguments specified!
+#
+Keine Kommandozeilenargumente angegeben!
+#
+# 10 11 12 13 Errors.
+#
+Abbruch durch SIGINT-Signal!
+Abbruch durch SIGTERM-Signal!
+Abbruch durch SIGPIPE-Signal!
+Schreiben auf Standardausgabe schlug fehl!
+#
+# 14
+#
+Option -t wird ignoriert, nur wirksam gemeinsam mit -f!
+#
+# 15 ... 20 Error messages
+#
+Decodierung fehlgeschlagen!\n\tByte:
+Codierungng fehlgeschlagen!\n\tByte:
+Verarbeitung fehlgeschlagen!\n\tByte:
+,\n\tZeichen:
+,\n\tPosition in Zeile:
+.
+#
+# 21 ... 26 Error messages
+#
+Decodierung fehlgeschlagen!
+Codierung fehlgeschlagen!
+Verarbeitung fehlgeschlagen!
+Weitere Decodierungs-Fehler!
+Weitere Codierungs-Fehler!
+Weitere Verarbeitungs-Fehler!
diff --git a/support/dktools/dktools/de/dk-t2h.txt b/support/dktools/dktools/de/dk-t2h.txt
new file mode 100644
index 0000000000..071d43052c
--- /dev/null
+++ b/support/dktools/dktools/de/dk-t2h.txt
@@ -0,0 +1,63 @@
+
+BEZEICHNUNG
+
+dk-t2h - Konverter von Text nach HTML
+
+ÃœBERSICHT
+
+dk-t2h [<Option(en)>] [<Datei(en)>]
+
+BESCHREIBUNG
+
+Das Programm wandelt Text nach HTML, entweder die angegebenen Dateien
+oder die Standardeingabe. Alternativ kann mit der Option -e auch Text
+konvertiert werden, der als Kommandozeilen-Argument angegeben wurde.
+
+OPTIONEN
+
+-i <String> Eingabe-Encoding, eines von:
+--input-encoding=<String> "ascii" (auch für ISO-LATIN-1),
+ "ansi", "utf-8",
+ "utf-16", "utf-16-le", "utf-16-be",
+ "c32", "c32-le" oder "c32-be".
+
+-l Alle Zeilen einschließen in
+--code-lines "<code title="001">...</code>".
+
+-e Text von Kommandozeile umwandeln.
+--echo
+
+-f Vollständige HTML-Datei erzeugen, nicht nur
+--full ein Fragment.
+ Die Optionen -e und -f schließen sich
+ gegenseitig aus.
+
+-t <String> Titel für HTML-Datei, wenn vollständige
+--title=<String> HTML-Datei erzeugt wird.
+
+--verbose Fehlermeldung anzeigen, wenn Abbruch wegen
+ SIGPIPE erfolgte.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-t2h --license
+aus, um Lizenz-Inforomationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-t2l.str b/support/dktools/dktools/de/dk-t2l.str
new file mode 100644
index 0000000000..d7634fe0fa
--- /dev/null
+++ b/support/dktools/dktools/de/dk-t2l.str
@@ -0,0 +1,71 @@
+#
+# 0 Error: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 Error: Failed to restore signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 3 Error: Illegal input encoding name: "..."!
+#
+Unzulässiger Name für Eingabe-Encoding: "
+"!
+#
+# 4 5 Temporarily unused.
+#
+Keine Hexadezimal-Zahl: "
+"!
+#
+# 6 7 8 Error: No data found for character 0x...!
+#
+Keine LaTeX-Sequenz für Zeichen 0x
+ gefunden!
+Keine LaTeX-Sequenz für zeichen gefunden!
+#
+# 9 Error: Overflow in line number count!
+#
+Numerischer Ãœberlauf in Zeilenzahl!
+#
+# 10 Error: Failed to setup character by character processing!
+#
+Byteweise Verarbeitung konnte nicht eingerichtet werden!
+#
+# 11 Error: Probably incorrect output due to problems ...
+#
+Ausgabe möglicherweise fehlerhaft (Probleme mit Daten-Dateien)!
+#
+# 12 .. 15 Error: Aborted by SIGINT signal!
+#
+Abbruch durch SIGINT-Signal!
+Abbruch durch SIGTERM-Signal!
+SIGPIPE-Signal aufgetreten!
+Schreiben auf Standardausgabe schlug fehl!
+#
+# 16 ... 21 Error messages.
+#
+Decodierung fehlgeschlagen!\n\tByte:
+Codierungng fehlgeschlagen!\n\tByte:
+Verarbeitung fehlgeschlagen!\n\tByte:
+,\n\tZeichen:
+,\n\tPosition in Zeile:
+.
+#
+# 22 ... 27 Error messages.
+#
+Decodierung fehlgeschlagen!
+Codierung fehlgeschlagen!
+Verarbeitung fehlgeschlagen!
+Weitere Decodierungs-Fehler!
+Weitere Codierungs-Fehler!
+Weitere Verarbeitungs-Fehler!
+#
+# 28 29 Error: Out of range!
+#
+Nicht im zulässigen Bereich: "
+"!
+#
+# 30 31 Error: Not a decimal number!
+#
+Keine Dezimal-Zahl: "
+"!
diff --git a/support/dktools/dktools/de/dk-t2l.txt b/support/dktools/dktools/de/dk-t2l.txt
new file mode 100644
index 0000000000..176b3b51c3
--- /dev/null
+++ b/support/dktools/dktools/de/dk-t2l.txt
@@ -0,0 +1,117 @@
+
+BEZEICHNUNG
+
+dk-t2l - Konverter von Text nach LaTeX
+
+ÃœBERSICHT
+
+dk-t2l [<Option(en)>] [<Datei(en)>]
+
+BESCHREIBUNG
+
+Das Programm wandelt Text aus den angegebenen Dateien bwz. der Standardeingabe
+in LaTeX-Sequenzen um und gibt diese auf die Standardausgabe aus.
+Alternativ können mit den Optionen -e, -n oder -h die umzuwandelnden Text
+bzw. Zeichen auch als Kommandozeilenargumente angegeben werden.
+
+OPTIONEN
+
+-i <string> Erwartetes Eingabe-Encoding, eines von:
+--input-encoding=<string> "ascii" (auch für ISO-LATIN-1),
+ "ansi", "utf-8", "utf-16", "utf-16-le",
+ "utf-16-be", "c32", "c32-le"
+ oder "c32-be".
+
+-e Kommandozeilen-Argumente sind der zu
+--echo konvertierende Text, keine Dateinamen.
+
+-n Kommandozeilen-Argumente sind dezimale
+--numeric Werte für umzuwandelnde UNICODE-Zeichen.
+
+-h Die Kommandozeilen-Argumente sind hexadezimale
+--hex Werte für umzuwandelnde UNICODE-Zeichen.
+
+-r Liste der nutzbaren Font-Encodings
+--recommendations und der zu benutzenden LaTeX-Pakete erstellen.
+
+-l \\ am Zeilenende schreiben
+--line-feed (Standard ist einfaches Newline).
+
+-t \HT{} für Tabulatoren schreiben
+--tabulator (Standard ist einfaches Leerzeichen).
+
+--verbose Fehlermeldung anzeigen, wenn Abbruch wegen
+ SIGPIPE erfolgte.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+DATEIEN
+
+Das Programm benutzt Ãœbersetzungstabellen in *.t2l-Dateien, um LaTeX-Sequenzen
+für UNICODE-Zeichen zu finden. Die Übersetzungstabellen befinden sich
+normalerweise im Verzeichnis ${datadir}/dktools/charmap.
+
+Die Dateien bestehen aus Leerzeilen, Kommentarzeilen und Datenzeilen.
+Kommentarzeilen beginnen mit einer Raute ('#') als erstes Textzeichen.
+
+Datenzeilen bestehen aus mehreren Textstücken, die durch Leerzeichen
+bzw. Leerzeichenfolgen getrennt sind:
+- Hexadezimalwert des UNICODE-Zeichens (erforderlich).
+ Im neueren UNICODE-Standard haben Zeichen bis zu 24 Bit, im älteren
+ Standard bis zu 32.
+ Der Hexadezimalwert muss somit im Bereich 0...FFFFFFFF liegen.
+- Optionale Attribute der Form Name=Wert:
+ - b=<String>
+ LaTeX-Sequenz, die sowohl im Text- als auch im Mathematikmodus
+ benutzt werden kann.
+ - t=<String>
+ LaTeX-Sequenz, die im Textmodus benutzt werden kann.
+ - m=<String>
+ LaTeX-Sequenz, die im Mathematikmodus benutzt werden kann.
+ - e=<String>
+ Liste der Font-Encodings, getrennt durch Kommata.
+ Ist das erste Zeichen ein Ausrufezeichen ('!'), enthält die Liste die
+ auszuschließenden Font-Encodings, andernfalls die benutzbaren
+ Font-Encodings. Folgende Encodings sind möglich: "t1", "ot1",
+ "t4" oder "t5".
+ - p=<String>
+ Liste der benötigten Packages, getrennt durch Kommata.
+ Es können 1 bis 15 Packages angegeben werden.
+ Hinweis: Mindestens eines der Attribute b, t oder m muss angegeben sein.
+
+EINSCHRÄNKUNGEN
+
+Unter Windows kann eine Erweiterung von Dateinamen mit Wildcards (* oder ?)
+nur für Dateinamen bis zu einer Länge von _MAX_PATH (260) erfolgen.
+
+Das Programm benutzt Ãœbesetzungstabellen, um die LaTeX-Sequenzen zu finden.
+Da UNICODE laut Wikipedia-Artikel 1114112 Zeichen enthält
+(Stand: 12.05.2015), ist es mir nicht möglich, vollständige
+Ãœbersetzungstabellen zu erstellen. Da meine Muttersprache Deutsch ist,
+enthalten die Übersetzungstabellen derzeit hauptsächlich die in
+Mitteleuropa gebräuchlichen Zeichen.
+
+BEITRÄGE
+
+Wie bereits dargelegt, sind die Übersetzungstabellen nicht vollständig.
+Sie können weitere Übersetzungstabellen beisteuern, wenn Sie diese mit
+einer 3-Klausel-BSD-Lizenz versehen und über die SourceForge-Projektseite
+http://sourceforge.net/projects/dktools zur Verfügung stellen
+(im Foren- oder Patches-Bereich hochladen).
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-t2l --license
+aus, um Lizenz-Inforomationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk-uid.str b/support/dktools/dktools/de/dk-uid.str
new file mode 100644
index 0000000000..0e607448e2
--- /dev/null
+++ b/support/dktools/dktools/de/dk-uid.str
@@ -0,0 +1,49 @@
+#
+# 0 Error: Failed to install signal handlers!
+#
+Signal-Handler konnten nicht installiert werden!
+#
+# 1 Error: Failed to restore signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 Error: Illegal number of command line arguments!
+#
+Unzulässige Anzahl an Kommandozeilenargumenten!\n\tMinimum und Maximum UID müssen angegeben werden!
+#
+# 3 Error: getpwent() function is not available on this platform!
+#
+Die Funktion getpwent() ist auf dieser Plattform nicht verfügbar!
+#
+# 4 Error: Failed to write text to standard output!
+#
+Schreiben von Text auf die Standardausgabe fehlgeschlagen!
+#
+# 5 Error: Failed to convert numeric value to string!
+#
+Numerischer Wert konnte nicht zu Text konvertiert werden, evtl. Bug!
+#
+# 6 Error: No unused UID in specified range!
+#
+Keine unbenutzte UID im angegebenen Bereich verfügbar!
+#
+# 7 Error: Failed to retrieve bit from bit field, probably bug!
+#
+Bit konnte nicht aus Bit-Feld gelesen werden, evtl. Bug!
+#
+# 8 Error: Aborted by signal!
+#
+Abbruch durch Signal!
+#
+# 9 Error: Failed to obtain command line arguments, probably bug!
+#
+Kommandozeilenargumente konnten nicht ermittelt werden, evtl. Bug!
+#
+# 10 11 Error: Command line argument "" is not a number!
+#
+Das Kommandozeilenargument "
+" ist keine Zahl!
+#
+# 12 Error: UID range too large!
+#
+UID-Bereich zu groß!
diff --git a/support/dktools/dktools/de/dk-uid.txt b/support/dktools/dktools/de/dk-uid.txt
new file mode 100644
index 0000000000..58b4665188
--- /dev/null
+++ b/support/dktools/dktools/de/dk-uid.txt
@@ -0,0 +1,38 @@
+
+BEZEICHNUNG
+
+dk-uid - Suche nach freier UID
+
+ÃœBERSICHT
+
+dk-uid <min> <max>
+
+BESCHREIBUNG
+
+Das Programm durchsucht den angegebenen UID-Bereich nach einer noch freien
+UID. Bei Erfolg wird die erste noch freie UID ausgegeben.
+
+ARGUMENTE
+
+<min> Minimale UID-Nummer.
+
+<max> Maximale UID-Nummer.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk-uid --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk3app.str b/support/dktools/dktools/de/dk3app.str
new file mode 100644
index 0000000000..3031f247a5
--- /dev/null
+++ b/support/dktools/dktools/de/dk3app.str
@@ -0,0 +1,1362 @@
+# Test with german umlauts and ligatures: äöüÄÖÜß
+# PLEASE DO NOT REMOVE THE LINE ABOVE!
+# Good editors (like i.e. vim) recognize UTF-8 sequences
+# automatically when opening a file and set the encoding
+# for file save operations properly.
+# This requires the presence of some UTF-8 sequences in the
+# file to work, otherwise your systems default encoding
+# is used.
+#
+# 0: Newline
+#
+\n
+#
+# 1: Message type: Panic
+#
+PANIK
+#
+# 2: Message type: Fatal error
+#
+FATALER FEHLER
+#
+# 3: Message type: Error
+#
+FEHLER
+#
+# 4: Message type: Warning
+#
+Warnung
+#
+# 5: Message type: Information
+#
+Information
+#
+# 6: Message type: Progress
+#
+Fortschritt
+#
+# 7: Message type: Debug
+#
+Debug
+#
+# 8: Space, used to print messages
+#
+
+#
+# 9: Error: Not enough memory
+#
+Zu wenig Speicher (Hauptspeicher/Auslagerungsdatei)!
+#
+# 10: Start of message comment line for date and time
+#
+\#
+#
+# 11: Colon to separate mesage parts
+#
+:
+#
+# 12/13: Message: Memory allocation failed for xxx bytes!
+#
+Speicheranforderung (
+ Bytes) schlug fehl!
+#
+# 14: Message: Memory allocation failed!
+#
+Speicheranforderung schlug fehl!
+#
+# 15: Message: Overflow in size calculation!
+#
+Zahlenbereichsüberlauf bei Größenberechnung!
+#
+# 16/17/18: Message: Overflow in size calc xxx x xxx bytes!
+#
+Zahlenbereichsüberlauf in Größenberechnung(
+ x
+ Bytes)!
+#
+# 19/20: Message: Application xxx started
+#
+Start der Anwendung "
+".
+#
+# 21/22: Message: Application xxx finished.
+#
+Ende der Anwendung "
+".
+#
+# 23: Debug message at program start: Application name
+#
+Anwendungs-Name:
+#
+# 24: Debug message at program start: Application group name
+#
+Anwendungs-Gruppe:
+#
+# 25: Debug message at program start: Executable file
+#
+Ausführbare Datei:
+#
+# 26: Debug message at program start: "bin" directory
+#
+"bin"-Verzeichnis:
+#
+# 27: Debug message at program start: "etc" directory
+#
+"etc"-Verzeichnis:
+#
+# 28: Debug message at program start: "share" directory
+#
+"share"-Verzeichnis:
+#
+# 29: Debug message at program start: "var" directory
+#
+"var"-Verzeichnis:
+#
+# 30: Debug message at program start: Home directory
+#
+HOME-Verzeichnis:
+#
+# 31: Debug message at program start: Temporary directory
+#
+Temporäres Verzeichnis:
+#
+# 32: Debug message at program start: User name
+#
+Nutzer-Name:
+#
+# 33: Debug message at program start: Log file name
+#
+Log-Datei:
+#
+# 34: Debug message at program start: Language
+#
+Sprache:
+#
+# 35: Debug message at program start: Region/Country
+#
+Region/Land:
+#
+# 36: Debug message at program start: Text "<unknown>"
+#
+<unbekannt>
+#
+# 37: Error message: Name of temp directory too long!
+#
+Der Name für das Temporär-Verzeichnis wird zu lang!
+#
+# 38: Error message: Destination buffer too small!
+#
+Der Ziel-Puffer ist zu klein, um die Daten aufzunehmen!
+#
+# 39: Error message: LANG environment variable too long!
+#
+Der Wert der Umgebungsvariable "LANG" ist zu lang!
+#
+# 40: Error message: Failed to find name of executable file!
+#
+Der Dateiname für das ausgeführte Programm wurde nicht gefunden!
+#
+# 41: Error message: Too few directories in hierarchy!
+#
+Verzeichnis-Hierarchie zu flach!\nAusführbare Dateien sollten nicht im Wurzelverzeichnis stehen!
+#
+# 42: Error message: Name of executable file too long!
+#
+Der Dateiname für das ausgeführte Programm ist zu lang!
+#
+# 43: Error message: Failed to obtain users login name!
+#
+Der Login-Name konnte nicht ermittelt werden!
+#
+# 44: Error message: Failed to find HOME directory!
+#
+Das Home-Verzeichnis konnte nicht ermittelt werden!
+#
+# 45: Error message: File name for log file gets too long!
+#
+Dateiname für die Log-Datei zu lang!
+#
+# 46: Error message: Failed to create directory for log file!
+#
+Das Verzeichnis für die Log-Datei kann nicht angelegt werden!
+#
+# 47: Error message: Failed to convert PID to text!
+#
+Die Prozess-ID kann nicht zu Text konvertiert werden!
+#
+# 48: Failed to find application name!
+#
+Der Anwendungs-Name konnte nicht ermittelt werden!
+#
+# 49: Error message: Name of temporary directory too long!
+#
+Der Name für das Temporär-Verzeichnis ist zu lang!
+#
+# 50: Error message: Failed to find var directory!
+#
+Es konnte kein var-Verzeichnis ermittelt werden!
+#
+# 51: Error message: Preference name too long!
+#
+Ein Preference-Name ist zu lang!
+#
+# 52: Error message: Malformed preference entry on command!
+#
+Unzulässige Preference-Angabe in Kommandozeile!
+#
+# 53: Error message: Failed to find current working directory!
+#
+Das aktuelle Verzeichnis konnte nicht ermittelt werden!
+#
+# 54: Error message: Too many requests for temporary file names!
+#
+Es wurden zu viele Dateinamen für temporäre Dateien benötigt!
+#
+# 55: Error message: Internal error (bug): Missing names!
+#
+Interner Fehler (Bug): Datei/Verzeichnis-Namen unvollständig!
+#
+# 56/57/58: Error message: Failed to save preference entry!
+#
+Der Preference-Eintrag "
+"="
+" konnte nicht angelegt werden!
+#
+# 59/60: Error message: Directory name ... too long!
+#
+Der Verzeichnis-Name "
+" ist zu lang!
+#
+# 61/62: Error message: Failed to information about ... stat
+#
+Keine Informationen über Datei "
+"!
+#
+# 63/64: Error message: Failed to read directory ...!
+#
+Das Verzeichnis "
+" konnte nicht geöffnet werden!
+#
+# 65/66: Error message: File name ... too long!
+#
+Der Dateiname "
+" ist zu lang!
+#
+# 67: Error message: Illegal character(s) in source string!
+#
+Unzulässige Zeichen gefunden!
+#
+# 68: Error message: Failed to remove a directory!
+#
+Verzeichnis ließ sich nicht löschen!
+#
+# 69/70: Error message: Failed to remove directory ... !
+#
+Das Verzeichnis "
+" konnte nicht gelöscht werden!
+#
+# 71: Error message: Missing HOMEDRIVE environment variable.
+#
+Die Umgebungs-Variable HOMEDIR ist nicht definiert!
+#
+# 72: Error message: Missing HOMEPATH environment variable.
+#
+Die Umgebungs-Variable HOMEPATH ist nicht definiert!
+#
+# 73: Error message: Failed to obtain information about a file
+#
+Für eine Datei konnten keine Informationen abgerufen werden!
+#
+# 74/75: Error message: ... is a directory!
+#
+"
+" ist ein Verzeichnis!
+#
+# 76: Error message: Can not open file, is a directory!
+#
+Die Datei kann nicht geöffnet werden, keine Datei sondern Verzeichnis!
+#
+# 77/78: Error message: Failed to open ... for write access
+#
+Die Datei "
+" kann nicht zum Schreiben geöffnet werden!
+#
+# 79: Error message: Failed to open a file for writing!
+#
+Eine Datei konnte nicht zum Schreiben geöffnet werden!
+#
+# 80: Error message: Failed to find current time!
+#
+Die aktuelle Uhrzeit konnte nicht ermittelt werden!
+#
+# 81/82: Error message: File exists but isn't a directory!
+#
+Die Datei "
+" existiert, ist aber kein Verzeichnis!
+#
+# 83: Error message: File exists but isn't a directory!
+#
+Die Datei existiert, ist aber kein Verzeichnis!
+#
+# 84/85: Error message: Failed to create directory ...!
+#
+Das Verzeichnis "
+" konnte nicht angelegt werden!
+#
+# 86: Error message: Failed to create directory!
+#
+Das Verzeichnis konnte nicht angelegt werden!
+#
+# 87: Error message: Directory name too long!
+#
+Der Verzeichnis-Name ist zu lang!
+#
+# 88/89: Error message: Failed to remove file ...!
+#
+Die Datei "
+" konnte nicht gelöscht werden!
+#
+# 90: Error message: Failed to remove file
+#
+Die Datei konnte nicht gelöscht werden!
+#
+# 91: Error message: User record does not have a user name
+#
+Der Nutzer-Datensatz enthält keinen Nutzernamen!
+#
+# 92/93: Error message: No user record for ...!
+#
+Kein Nutzer-Datensatz für "
+" vorhanden!
+#
+# 94: Error message: No matching user record!
+#
+Kein passender Nutzer-Datensatz vorhanden!
+#
+# 95: Error message: No home directory in user record!
+#
+Der Nutzer-Datensatz enthält kein Homeverzeichnis!
+#
+# 96/97: Error message: No information about file ..., lstat
+#
+Keine Informationen über Datei "
+"!
+#
+# 98/99: Error message: No information about a file!
+#
+Für eine Datei konnten keine Informationen abgerufen werden!
+Für eine Datei konnten keine Informationen abgerufen werden!
+#
+# 100/101: Error message: Symlink owner is not file owner!
+#
+Eigentümer von Symlink "
+" und Zieldatei sind unterschiedlich!
+#
+# 102: Error message: Symlink owner is not file owner!
+#
+Symlink und Zieldatei haben unterschiedliche Eigentümer!
+#
+# 103/104: Error message: Command ... is too long!
+#
+Der Befehl "
+" ist zu lang!
+#
+# 105: Error message: Command too long!
+#
+Der Befehl ist zu lang!
+#
+# 106: Error message: PATH not defined!
+#
+Die Umgebungsvariable PATH ist nicht definiert!
+#
+# 107: Error message: No mkdir function!
+#
+Keine Funktion zum Verzeichnis-Erzeugen vorhanden!
+#
+# 108: Error message: String too long!
+#
+Der Text ist zu lang!
+#
+# 109: Error message: Command name too long!
+#
+Der Befehl ist zu lang!
+#
+# 110/111: Error message: Too many .. in command!
+#
+Der Befehl "
+" enthält zu viele ".."!
+#
+# 112: Error message: Illegal character(s) in source string!
+#
+Der Text enthält unzulässige Zeichen!
+#
+# 113: Error message: Illegal character(s) in source buffer!
+#
+Der Quell-Puffer enthält unzulässige Zeichen!
+#
+# 114: Error message: Illegal destination encoding!
+#
+Das Ziel-Encoding ist nicht zulässig!
+#
+# 115: Error message: Conversion to UTF-8 failed!
+#
+Umwandlung nach UTF-8 nicht möglich!
+#
+# 116: Error message: Conversion to UTF-16 failed!
+#
+Umwandlung nach UTF-16 nicht möglich!
+#
+# 117: Error message: Result character not available!
+#
+Im Ziel-Encoding sind nicht alle Zeichen abbildbar!
+#
+# 118: Error message: UTF-8 decoding failed!
+#
+Decodieren von UTF-8-Text fehlgeschlagen!
+#
+# 119: Error message: UTF-16 decoding failed!
+#
+Decodieren von UTF-16-Text fehlgeschlagen!
+#
+# 120: Error message: Failed to write output!
+#
+Schreiben von Daten fehlgeschlagen!
+#
+# 121: Error message: Failed to flush output!
+#
+Ende des Schreibvorganges fehlgeschlagen!
+#
+# 122: Error message: Failed to close data stream object!
+#
+Resourcenfreigabe für Datenstrom fehlgeschlagen!
+#
+# 123: Error message: Stream not opened for write ops!
+#
+Der Datenstrom wurde nicht zum Schreiben geöffnet!
+#
+# 124: Error message: Failed to read data!
+#
+Lesen von Daten fehlgeschlagen!
+#
+# 125: Error message: Mismatch encoding/character size!
+#
+Zeichengröße und Encoding sind unvereinbar!
+#
+# 126: Error message: Too many ".." in file name!
+#
+Zu viele ".." in Dateinamen!
+#
+# 127/128: Error message: Unknown message digest type!
+#
+Unbekannter Message-Digest-Typ "
+"!
+#
+# 129/130: Error message: Unknown encoding "..."!
+#
+Unbekanntes Encoding: "
+"!
+#
+# 131: Error message: Failed to find current host name!
+#
+Der Hostname konnte nicht ermittelt werden!
+#
+# 132: Debug message: Host:
+#
+Host-Name:
+#
+# 133/134: Error message: Option ... requires an argument!
+#
+Die Option "
+" erfordert ein Argument!
+#
+# 135/136: Error message: Option ... too long for processing!
+#
+Option zu lang zum verarbeiten:\n"
+"!
+#
+# 137/138: Error message: Ignoring irrelevant option argument ... !
+#
+Das überflüssige Argument in "
+" wird ignoriert!
+#
+# 139/140: Error message: Unknown option ...!
+#
+Unzulässige Option "
+"!
+#
+# 141/142: Error message: Not a numeric value ...!
+#
+Kein Zahlenwert: "
+"!
+#
+# 143/144: Error message: Failed to open file ...!
+#
+Die Datei "
+" kann nicht geöffnet werden!
+#
+# 145: Error message: Failed to open file!
+#
+Datei kann nicht geöffnet werden!
+#
+# 146/147: Error message: Not a boolean value ...!
+#
+Kein boolscher Wert: "
+"!
+#
+# 148/149: Debug message: Resource file ... found.
+#
+Resourcen-Datei "
+" gefunden.
+#
+# 150/151: Debug message: Resource file ... not found.
+#
+Resourcen-Datei "
+" nicht gefunden.
+#
+# 152/153: Debug message: Configuration file ... found.
+#
+Konfigurations-Datei "
+" gefunden
+#
+# 154/155: Debug message: Configuration file ... not found.
+#
+Konfigurations-Datei "
+" nicht gefunden.
+#
+# 156/157: Error message: No support for message digest type ...!
+#
+Der Message-Digest-Typ "
+" wird nicht unterstützt!
+#
+# 158: Error message: Illegal message digest or encoding number!
+#
+Unzulässiger Code für Message-Digest-Typ oder Encoding!
+#
+# 159: Error message: Checksumming is available for regular files only!
+#
+Checksummenbildung ist nur für reguläre Dateien möglich!
+#
+# 160/161: Error message: Key or option name missing: ...!
+#
+In langen Optionen muss ein Optionsname für "
+" angegeben werden!
+#
+# 162: Error message: Failed to convert a numeric value to text!
+#
+Ein numerischer Wert konnte nicht zu Text konvertiert werden!
+#
+# 163: Closing for 61
+#
+"!
+#
+# 164/165: Warning: Too many command line arguments...!
+#
+Überzählige Argumente ab "
+" werden ignoriert!
+#
+# 166/167: Error message: Internal error (bug) ...!
+#
+Interner Fehler (wahrscheinlich ein Bug)
+.
+#
+# 168/169: Error message: Too many file names match ...!
+#
+"
+" passt nicht eindeutig auf einen Dateinamen!
+#
+# 170-172: Error message: Write operation failed, ... of ... bytes written!
+#
+Schreiben schlug fehl,
+ von
+ Bytes wurden geschrieben!
+#
+# 173: Error message: Write operation failed!
+#
+Schreiben schlug fehl!
+#
+# 174-176: Error message: Write operation failed, ... of ... elements written!
+#
+Schreiben schlug fehl,
+ von
+ Elementen wurden geschrieben!
+#
+# 177: Error message: Failed to create random data!
+#
+Fehler beim Erzeugen von Zufalls-Daten!
+#
+# 178: Error message: Not usable PRNG found!
+#
+Kein benutzbarer PRNG wurde gefunden!
+#
+# 179: Error message: Failed to seed simple PRNG!
+#
+Initialisierung für srand()/rand() fehlgeschlagen!
+#
+# 180: Error message: Failed to seed lrand48() PRNG!
+#
+Initialisierung für lrand48() fehlgeschlagen!
+#
+# 181: Error message: Failed to seed random() PRNG!
+#
+Initialisierung für random() fehlgeschlagen!
+#
+# 182: Error message: Failed to seed OpenSSL PRNG!
+#
+Initialisierung für OpenSSL PRNG fehlgeschlagen!
+#
+# 183/184: Error message: Seed file ... not used (permissions)!
+#
+Seed-Datei "
+" nicht benutzbar (Berechtigungen zu locker)!
+#
+# 185/186: Error message: Seed file ... not used (symlink owner)!
+#
+Seed-Datei "
+" nicht benutzbar (Symlink-Besitzer ist nicht Datei-Besitzer)!
+#
+# 187/188: Error message: Unknown PRNG type ... !
+#
+Unbekannter PRNG-Typ: "
+"!
+#
+# 189-192: Error message: The ... PRNG type is not available!
+#
+Der rand()-PRNG ist nicht verfügbar!
+Der lrand48()-PRNG ist nicht verfügbar!
+Der random()-PRNG ist nicht verfügbar!
+Der OpenSSL-PRNG ist nicht verfügbar!
+#
+# 193: Error message: Failed to save random seed data!
+#
+Die Seed-Daten für den Zufallsgenerator konnten nicht gespeichert werden!
+#
+# 194: Error message: HOME directory name too long!
+#
+Der Name für das Home-Verzeichnis ist zu lang!
+#
+# 195: Info: System configuration files skipped by user.
+#
+System-Konfigurationsdateien werden nicht benutzt.
+#
+# 196-197: Debug message: Attempt to obtain seed data from ...
+#
+Versuche, Zufallsgenerator von "
+" zu initialisieren.
+#
+# 198-199: Debug message: Seed data: ... bytes found.
+#
+Zufallsgenerator-Initialisierung:
+ Bytes gefunden.
+#
+# 200: Error message: Index out of range!
+#
+Unzulässiger Index!
+#
+# 201: Error message: Matrix expansion requires a square matrix!
+#
+Matrix-Expansion ist nur für quadratische Matrizen möglich!
+#
+# 202-203: Error message: Not a directory: ...!
+#
+"
+" ist kein Verzeichnis!
+#
+# 204: Error message: Encoding not supported by C runtime library!
+#
+Encoding wird von C-Runtime-Library nicht unterstützt!
+#
+# 205: Error message: No directory containing LaTeX encoding tables found!
+#
+Kein Verzeichnis mit LaTeX-Encoding-Tabellen gefunden!
+#
+# 206-208: Warning: Redefinition, overwriting ... by ...!
+#
+Neudefinition:\n"
+" wird überschrieben mit "
+"!
+#
+# 209-210: Error message: Index ... is out of range 0...255!
+#
+Syntax-Fehler\nIndex
+ liegt außerhalb von 0...255!
+#
+# 211-212: Error message: Syntax error near ...!
+#
+Syntax-Fehler\nnahe "
+"!
+#
+# 213: Error message: Syntax error, missing LaTeX encoding!
+#
+Syntax-Fehler,\nLaTeX-Encoding fehlt!
+#
+# 214: Error message: Syntax error, missing index!
+#
+Syntax-Fehler,\nZeichen-Index fehlt!
+#
+# 215-216: Error message: No file name matching ...!
+#
+Kein Dateiname passt auf "
+"!
+#
+# 217: Error message: Missing name of long option!
+#
+Der Name für eine lange Option fehlt!
+#
+# 218: Error message: Incomplete input sequence!
+#
+Unvollständige Eingabedaten!
+#
+# 219: Error message: String contains non-ISO-LATIN-1 characters!
+#
+Text enthält nicht darstellbare Zeichen!
+#
+# 220: Error message: Misconfigured start/end for range!
+#
+Start/Ende-Angabe für Bereich ist fehlerhaft!
+#
+# 221: Error message: New range conflicts with existing one!
+#
+Neuer Bereich in Konflikt mit bereits existierendem Bereich!
+#
+# 222: Error message: Not a hex number!
+#
+Hexadezimal-Zahl nicht gefunden!
+#
+# 223: Error message: Syntax error!
+#
+Syntax-Fehler!
+#
+# 224: Error message: Character redefinition!
+#
+Zeichen-Neudefinition!
+#
+# 225: Error message: Range not declared in character directory!
+#
+Bereich in Zeichen-Directory nicht deklariert!
+#
+# 226: Error message: Package name conflicts with previous definition!
+#
+Paket-Name steht in Konflikt zu bereits angegebenem Paket!
+#
+# 227: Debug message: Attempt to obtain seed data from CryptoAPI
+#
+Seed-Daten von CryptoAPI
+#
+# 228: Debug message: Attempt to obtain seed data from screen.
+#
+Seed-Daten vom Bildschirm
+#
+# 229: Debug message: OpenSSL PRNG seeded successfully.
+#
+OpenSSL-PRNG wurde erfolgreich initialisiert.
+#
+# 230/231: Debug message: Attempt to read preferences file "...".
+#
+Versuch, Preferences-Datei "
+" zu lesen.
+#
+# 232/233: Debug message: LaTeX table directory "...".
+#
+LaTeX-Tabellen-Verzeichnis: "
+".
+#
+# 234/235: Debug message: Versuche LaTeX-Tabellen-Verzeichnis "...".
+#
+Teste LaTeX-Tabellen-Verzeichnis "
+".
+#
+# 236/237: Debug message: Reading LaTeX table dir: "...".
+#
+Lese LaTeX-Konvertierungs-Verzeichnis: "
+".
+#
+# 238/239: Debug message: Registering LaTeX conversion range ...
+#
+Bereich
+ wurde registriert.
+#
+# 240/241: Debug message: Loading LaTeX conversion data file "...".
+#
+Lade LaTeX-Konvertierungs-Tabelle "
+".
+#
+# 242/243: Error message: Failed to change into directory "..."!
+#
+Kann nicht in Verzeichnis "
+" wechseln!
+#
+# 244: Error message: Printer listing failed!
+#
+Die Drucker-Auflistung schlug fehl!
+#
+# 245: Error message: Record too large!
+#
+Datensatz zu groß!
+#
+# 246: Error message: File damaged or not a database file!
+#
+Datei beschädigt oder keine Datenbank-Datei!
+#
+# 247/248: Error message: No support for database type "..." available!
+#
+Datenbank-Typ "
+" wird nicht unterstützt!
+#
+# 249: Error message: Key not found in database!
+#
+Kein passender Eintrag in der Datenbank!
+#
+# 250: Error message: DB entry probably damaged - not a multibyte char string!
+#
+Datenbankeintrag ist kein Multibyte-String!
+#
+# 251: Error message: Database opened for read access only!
+#
+Datenbank wurde nur zum Lesen geöffnet!
+#
+# 252: Error message: Error(s) while processing command line arguments!
+#
+Fehler bei Verarbeitung der Kommandozeilenargumente!
+#
+# 253: Error message: Failed to retrieve current locale!
+#
+Aktuelle locale-Einstellung konnte nicht ermittelt werden!
+#
+# 254: Error message: Current locale too long!
+#
+Aktuelle locale-Einstellung zu lang!
+#
+# 255/256: Error message: Not a regular file "..."!
+#
+Keine reguläre Datei: "
+"!
+#
+# 257: Error message: Image file type unknown or not supported!
+#
+Image-Typ unbekannt bzw. nicht unterstützt!
+#
+# 258: Error message: Bits per component restricted to 16!
+#
+Maximal 16 bits per component erlaubt!
+#
+# 259: Error message: Incorrect page setup, no usable space between borders!
+#
+Seiten fehlerhaft eingerichtet, kein Platz zwischen den Rändern!
+#
+# 260: Error message: Mathematical error in size calculations!
+#
+Numerischer Fehler in Berechnung!
+#
+# 261: Error message: Failed to set bitmap image frame!
+#
+Bitmap-Frame konnte nicht angewählt werden!
+#
+# 262: Error message: Flate compression is not supported!
+#
+Flate-Kompression wird nicht unterstützt!
+#
+# 263: Error message: Illegal compression cell type used!
+#
+Illegaler Kompressions-Type benutzt!
+#
+# 264: Error message: Error during previous compression operations!
+#
+Fehler bei vorherigen Kompressions-Operationen!
+#
+# 265: Error message: Failed to retrieve console settings!
+#
+Die Terminal-Einstellungen konnten nicht gespeichert werden!
+#
+# 266: Error message: Failed to estore console settings!
+#
+Die Terminal-Einstellungen konnten nicht wiederhergestellt werden!
+#
+# 267: Error message: Failed to modify console settings!
+#
+Die Terminal-Einstellungen konnten nicht geändert werden!
+#
+# 268: Error message: Failed to convert timestamp to local time!
+#
+Ein Zeitpunkt konnte nicht in eine lokale Zeitangabe konvertiert werden!
+#
+# 269: Error message: No file name available for database!
+#
+Kein Dateiname für Datenbank vorhanden!
+#
+# 270/271: Error message: Failed to change file ownership!
+#
+Datei-Eigentümer konnte nicht geändert werden:\n"
+"!
+#
+# 272/273: Error message: Failed to change file permissions!
+#
+Datei-Zugriffsrechte konnten nicht geändert werden:\n"
+"!
+#
+# 274: Error message: Insufficient permissions!
+#
+Entsprechende Berechtigungen sind für Netzwerkverbindung erforderlich!
+#
+# 275: Error message: Unknown or illegal address family!
+#
+Unbekannte/unzulässige Adressfamilie!
+#
+# 276: Error message: Process table overflow!
+#
+Zu viele Prozesse, Prozesstabelle reicht nicht aus!
+#
+# 277: Error message: Too many open files
+#
+Zu viele Dateien geöffnet!
+#
+# 278: Error message: Protocol not supported!
+#
+Protokoll wird nicht unterstützt!
+#
+# 279: Error: Failed to open network socket!
+#
+Socket konnte nicht angelegt werden!
+#
+# 280: Error: Failed to close socket!
+#
+Socket konnte nicht geschlossen werden!
+#
+# 281: Error: Operation interrupted by signal!
+#
+Unterbrechung durch ein Signal!
+#
+# 282: Error: Failed to connect!
+#
+Verbindungsaufbau fehlgeschlagen!
+#
+# 283: Error: Listen failed!
+#
+Warten auf eingehende Verbindungen fehlgeschlagen!
+#
+# 284/285: Error: Failed to find IP address for "..."!
+#
+Für "
+" wurde keine IP-Adresse gefunden!
+#
+# 286: Error: Host not found!
+#
+Keine Daten für Host gefunden!
+#
+# 287: Error: Host exists, but no IP address assigned!
+#
+Host existiert, hat aber keine IP-Adresse!
+#
+# 288: Error: Problem on DNS server!
+#
+Problem beim DNS-Server!
+#
+# 289: Error: Temporary problem on DNS server, try again later!
+#
+Zeitweiliges Problem beim DNS-Server, evtl. später erneut probieren!
+#
+# 290: Error: Not gethostbyname() function available!
+#
+Funktion gethostbyname() auf diesem System nicht verfügbar!
+#
+# 291: Error: Can not connect to remote port 0!
+#
+Port 0 ist als Verbindungsziel nicht zulässig!
+#
+# 292: Error: Access denied by firewall or due to insufficient permissions!
+#
+Zugriff verboten (Firewall oder fehlende Berechtigungen)!
+#
+# 293: Error: Local address already in use!
+#
+Die lokale Adresse wird bereits verwendet!
+#
+# 294: Error: Resources shortage!
+#
+Resourcen-Problem!
+#
+# 295: Error: Previous connection attempt not yet completed!
+#
+Ein laufender Verbindungsversuch muss erst abgeschlossen werden!
+#
+# 296: Error: Connection refused.
+#
+Verbindungsversuch wurde abgewiesen,\nPort an Gegenstelle nicht geöffnet!
+#
+# 297: Error: Socket already connected!
+#
+Socket ist bereits verbunden!
+#
+# 298: Error: Network unreachable!
+#
+Netzwerk ist nicht erreichbar!
+#
+# 299: Error: Timeout!
+#
+Zeitüberschreitung (Timeout)!
+#
+# 300: Error: No select() function, timeout settings ignored!
+#
+Timeout-Einstellungen werden ignoriert,\nauf diesem System ist keine Funktion select() vorhanden!
+#
+# 301: Error: Failed to retrieve socket state!
+#
+Abfrage des Socket-Status fehlgeschlagen!
+#
+# 302/303: Error: Failed to bind local address "..."!
+#
+Lokale Adresse "
+" konnte nicht gebunden werden!
+#
+# 304: Error: Socket already bound to local address!
+#
+Socket ist bereits an eine lokale Adresse gebunden!
+#
+# 305
+#
+Fehler beim Senden von Daten!
+#
+# 306
+#
+Operation würde blockieren!
+#
+# 307
+#
+Verbindung von Gegenstelle beendet/abgewiesen!
+#
+# 308
+#
+Empfängeradresse fehlt!
+#
+# 309
+#
+Empfängeradresse nicht gestattet!
+#
+# 310
+#
+Zu viele Daten für Sendung in einer Nachricht!
+#
+# 311
+#
+Sende-Queue ist voll!
+#
+# 312
+#
+Kein Empfänger liest aus der Pipe.
+#
+# 313
+#
+Weniger Bytes geschrieben als gefordert!
+#
+# 314
+#
+Fehler beim Lesen aus Socket!
+#
+# 315
+#
+Fehler beim Herunterfahren der Socket!
+#
+# 316
+#
+Socket ist nicht verbunden!
+#
+# 317
+#
+Fehler beim Annehmen einer Verbindung!
+#
+# 318
+#
+Verbindung wurde abgebrochen!
+#
+# 319
+#
+Netzwerk-Protokoll-Fehler!
+#
+# 320
+#
+Netzwerk-Subsystem nicht verfügbar!
+#
+# 321
+#
+Windows-Sockets noch nicht initialisiert!
+#
+# 322
+#
+Eine blockierende Winsock-1.1-Operation läuft!
+#
+# 323
+#
+Socket-Typ passt nicht zur Adressfamilie!
+#
+# 324
+#
+Socket wurde nicht für Broadcasts konfiguriert!
+#
+# 325
+#
+Die angeforderte Adresse ist nicht verfügbar!
+#
+# 326
+#
+Host nicht erreichbar!
+#
+# 327
+#
+Windows-Sockets-Version ist nicht verfügbar!
+#
+# 328
+#
+Zu viele Prozesse benutzen Windows-Sockets!
+#
+# 329
+#
+Ein-/Ausgabefehler!
+#
+# 330
+#
+Zu viele symbolische Links im Pfad!
+#
+# 331
+#
+Unzulässiger Pfad (eines der übergeordneten Directories fehlt)!
+#
+# 332
+#
+Dateisystem ist nur zum Lesen gemountet!
+#
+# 333
+#
+NFS-Dateihandle fehlt!
+#
+# 334
+#
+Server für Datei nicht mehr verfügbar!
+#
+# 335
+#
+Kein freier Platz mehr auf dem Datenträger!
+#
+# 336
+#
+Fehler beim Warten auf Netzwerk-Sockets!
+#
+# 337
+#
+Adresse in Textform kann nicht verarbeitet werden!
+#
+# 338
+#
+Keine Adresse für Host gefunden!
+#
+# 339
+#
+Socket-Option konnte nicht gesetzt werden!
+#
+# 340
+#
+Fehler beim Schließen einer Datei!
+#
+# 341/342
+#
+Fehler beim Schließen der Datei\n"
+"!
+#
+# 343/344
+#
+Fehler beim Schreiben in Datei:\n"
+"!
+#
+# 345
+#
+Fehler beim Daten-Lesen aus Datei!
+#
+# 346/347
+#
+Fehler beim Lesen von Daten aus Datei: "
+"!
+#
+# 348/349
+#
+Keine IP-Adresse: "
+"!
+#
+# 350
+#
+Keine IP-Adresse!
+#
+# 351/352
+#
+Verbindung mit "
+" fehlgeschlagen!
+#
+# 353
+#
+Keine Funktion zum Prüfen auf Blockieren/Nicht-Blockieren verfügbar!
+#
+# 354
+#
+Die Netzmaske ist keine IP-Adresse!
+#
+# 355
+#
+Die Netzmaske ist keine Bit-Anzahl!
+#
+# 356
+#
+Die Netzmaske ist keine IPv6-Adresse!
+#
+# 357
+#
+Keine Namensauflösung verfügbar, bitte IP-Adresse angeben!
+#
+# 358
+#
+Keine select()-Funktion verfügbar!
+#
+# 359
+#
+Keine verwendbare Socket im Set!
+#
+# 360 361
+#
+Socket
+ verbunden mit Client:
+#
+# 362 363
+#
+Verbindungsaufbau von "
+" zurückgewiesen!
+#
+# 364
+#
+Es konnte keine Server-Socket für Socket-Satz erzeugt werden!
+#
+# 365
+#
+Der Wert von /threads/max ist größer als die ermittelte CPU-Core-Anzahl!
+#
+# 366 + 367
+#
+Eindeutige Datei-Kennung konnte nicht ermittelt werden für:\n"
+"!
+#
+# 368
+#
+Für eine Datei konnte keine eindeutige Kennung ermittelt werden!
+#
+# 369 + 370 Preference ... does not point to a directory.
+#
+Preference "
+" verweist nicht auf ein Verzeichnis!
+#
+# 371
+#
+
+#
+# 372 373 374
+#
+Socket
+ lauscht an Adresse:
+
+#
+# 375 376 377
+#
+Socket
+ ist verbunden mit Gegenstelle:
+
+#
+# 378 379 380
+#
+Verschieden Font-Encodings werden gefordert!
+Font-Encoding sowohl gefordert als auch verboten: "
+"!
+#
+# 381 382
+#
+Mögliches Font-Encoding: "
+"!
+#
+# 383 384
+#
+Font-Encoding "
+" kann nicht benutzt werden.
+#
+# 385
+#
+Kein Font-Encoding benutzbar!
+#
+# 386 387 388
+#
+Zu viele Einträge bei Position
+in Text-Zeile:\n"
+"
+#
+# 389 390
+#
+Unerwartetes String-Ende in Text:\n"
+"
+#
+# 391 392
+#
+UTF-8-Decodierung fehlgeschlagen für\n"
+UTF-16-Decodierung fehlgeschlagen für\n"
+#
+# 393 394
+#
+Nicht-ANSI-Zeichen in\n"
+Nicht-URL-Zeichen in\n"
+#
+# 395 396
+#
+Zeichen 0x
+bereits definiert!
+#
+# 397
+#
+Erneute Definition eines Zeichens!
+#
+# 398 399
+#
+Das erste Wort ist keine Hexadezimal-Zahl!
+_UNUSED_
+#
+# 400
+#
+Keine Daten für Zeichen gefunden!
+#
+# 401
+#
+Komprimierung mit zlib wird nicht unterstützt!
+#
+# 402
+#
+Komprimierung mit bzip2-Bibliothek wird nicht unterstützt!
+#
+# 403
+#
+Keine Konvertierungs-Daten gefunden!
+#
+# 404
+#
+Syntax-Fehler, unbekanntes Encoding!
+#
+# 405
+#
+Syntax-Fehler, keine Package-Namen gefunden!
+#
+# 406
+#
+Syntax-Fehler, Wert für Attribut fehlt!
+#
+# 407
+#
+Verzeichnis "share" nicht gefunden!
+#
+# 408 409 410
+#
+Keine Daten für Zeichen gefunden!
+Keine Daten für Zeichen 0x
+ gefunden!
+#
+# 411
+#
+Encoding-Anforderungen stehen in Konflikt miteinander!
diff --git a/support/dktools/dktools/de/dk3bifa.str b/support/dktools/dktools/de/dk3bifa.str
new file mode 100644
index 0000000000..6f9ba33233
--- /dev/null
+++ b/support/dktools/dktools/de/dk3bifa.str
@@ -0,0 +1,42 @@
+#
+# 0
+#
+Bildanalyse: Originalbild ist farbig.
+#
+# 1
+#
+Bildanalyse: Originalbild is nicht farbig.
+#
+# 2
+#
+Bildanalyse: Ausgabe kann in grau erfolgen.
+#
+# 3
+#
+Bildanalyse: Ausgabe sollte farbig erfolgen.
+#
+# 4
+#
+Bildanalyse: Originalbild enthält Alphakanal.
+#
+# 5
+#
+Bildanalyse: Originalbild enthält keinen Alphakanal.
+#
+# 6
+#
+Bildanalyse: Alphakanal enthält Daten.
+#
+# 7
+#
+Bildanalyse: Alphakanal nicht erforderlich.
+#
+# 8 9
+#
+Bildanalyse: Originalbild hat Bitbreite
+.
+#
+# 10 11
+#
+Bildanalyse: Ausgabe sollte mit Bitbreite
+ erfolgen.
diff --git a/support/dktools/dktools/de/dk3bmeps.str b/support/dktools/dktools/de/dk3bmeps.str
new file mode 100644
index 0000000000..40c86e8e9c
--- /dev/null
+++ b/support/dktools/dktools/de/dk3bmeps.str
@@ -0,0 +1,254 @@
+#
+# 0: Simple newline.
+#
+\n
+#
+# 1: Space.
+#
+
+#
+# 2: Error: Output mode object requires ps or pdf output!
+#
+Inkonsistente Einstellungen!\nAusgabe-Modus "object" kann nur für "ps" oder "pdf" benutzt werden!
+#
+# 3: Error: Illegal driver number!
+#
+Unzulässige Treiber-Nummer!
+#
+# 4: Error: Illegal mode, must be a placed object!
+#
+Unzulässiger Ausgabe-Modus, nur "object" zulässig!
+#
+# 5: Error: Illegal mode, must not be a placed object!
+#
+Unzulässiger Ausgabe-Modus, platziertes Object nicht verwendbar!
+#
+# 6: Error: Illegal mode, must be image, object or document!
+#
+Inkonsistente Einstellungen!\nAusgabe-Modus muss "image", "object" oder "document sein!
+#
+# 7: Error: Illegal mode, must be image or object!
+#
+Inkonsistente Einstellungen!\nAusgabe-Modus muss "image" oder "object" sein!
+#
+# 8: Error: Driver bb can produce objects only!
+#
+Inkonsistente Einstellungen!\nDer Treiber "bb" kann nur den Ausgabe-Modus "object" verwenden!
+#
+# 9: Error: Illegal size mode specified!
+#
+Unzulässige Größeneinstellung!
+#
+# 10: Error: Size mode must be 1px=1pt for objects!
+#
+Inkonsistente Einstellungen!\nFür den Ausgabe-Modus "object" kann nur die Einstellung "1:1" benutzt werden!
+#
+# 11: Warning: Draft can not be used when producing document!
+#
+Im Ausgabe-Modus "document" kann "draft" nicht verwendet werden!
+#
+# 12/13: Error: Option string "..." too long!
+#
+Options-String zu lang:\n"
+"!
+#
+# 14: Error: Empty language and options string!
+#
+Konfigurations-Text ist leer!
+#
+# 15/16: Error: Illegal driver!
+#
+Unzulässiger Ausgabe-Treiber: "
+"!
+#
+# 17/18: Error: Illegal mode!
+#
+Unzulässiger Ausgabe-Modus: "
+"!
+#
+# 19: Error: Empty configuration string!
+#
+Konfigurations-Text ist leer!
+#
+# 20/21: Error: Configuration string "..." too long!
+#
+Konfigurations-Text zu lang:\n"
+"!
+#
+# 22/23: Error: Unknown configuration option name!
+#
+Unzulässiger Options-Name: "
+"!
+#
+# 24/25: Error: Not a number!
+#
+Keine Zahl: "
+"!
+#
+# 26: Error: PS level must be 2 or 3!
+#
+PS-Level muss 2 oder 3 sein!
+#
+# 27/28: Error: Not a boolean value!
+#
+Kein boolscher Wert: "
+"!
+#
+# 29/30: Error: Unknown predictor!
+#
+Unzulässiger Predictor: "
+"!
+#
+# 31: Error: Empty background specification string!
+#
+Hintergrund-Konfigurations-Text ist leer!
+#
+# 32/33: Error: Syntax error in background specification!
+#
+Syntax-Fehler in Hintergrundangabe: "
+"!
+#
+# 34: Error: Option needs an argument!
+#
+Argument für Option "size" fehlt!
+#
+# 35/36: Error: Illegal size argument!
+#
+Unzulässige Größenangabe: "
+"!
+#
+# 37: Error: Option needs an argument!
+#
+Argument für Option "paper" fehlt!
+#
+# 38: Error: Setting a paper size is only allowed for document!
+#
+Inkonsistente Einstellungen!\nEine Papiergröße kann nur im Ausgabe-Modus "document" benutzt werden.
+#
+# 39/40: Error: Paper size not found!
+#
+Kein Angaben zur Papiergröße "
+" gefunden!
+#
+# 41/42: Progress: Processing file "...".
+#
+Datei "
+" wird verarbeitet.
+#
+# 43/44: Progress: Finished file "...".
+#
+Datei "
+" wurde verarbeitet.
+#
+# 45/46: Progress: Destination file is up to date.
+#
+Datei "
+" muss nicht verarbeitet werden.
+#
+# 47: Progress: Reading image data.
+#
+Bild-Daten werden gelesen.
+#
+# 48: Progress: Analysing image.
+#
+Bild wird analysiert.
+#
+# 49: Answer: yes
+#
+ja
+#
+# 50: Answer: no
+#
+nein
+#
+# 51: Color indicated
+#
+Farbe angegeben:
+#
+# 52: Color found
+#
+Farbe gefunden:
+#
+# 53: Alpha indicated
+#
+Transparenz angegeben:
+#
+# 54: Alpha found
+#
+Transparenz gefunden:
+#
+# 55: Bits per component indicated
+#
+Bits pro Komponente angegeben:
+#
+# 56: Bits per component found
+#
+Bits pro Komponente gefunden:
+#
+# 57: Bits per component used
+#
+Bits pro Komponente benutzt:
+#
+# 58: ERROR: Error while writing data!
+#
+Fehler beim Schreiben!
+#
+# 59: ERROR: Failed to start encoded chunk
+#
+Fehler beim Komprimieren!
+#
+# 60: ERROR: Invalid paper setup
+#
+Fehlerhafte Einstellungen für Papierformat!
+#
+# 61: ERROR: Failed to read image data!
+#
+Bild-Daten konnten nicht gelesen werden!
+#
+# 62: ERROR: Incorrect page setup, borders larger than page!
+#
+Fehlerhafte Einstellungen für Papierformat, Ränder zu groß!
+#
+# 63/64: ERROR: File type "..." unknown!
+#
+Unbekannter Dateityp: "
+"!
+#
+# 65/66: ERROR: Illegal file type "..."!
+#
+Unzulässiger Dateityp: "
+"!
+#
+# 67: ERROR: No file type specified for standard input!
+#
+Dateityp muss angegeben werden, wenn Standardeingabe benutzt wird!
+#
+# 68: ERROR: Inconsistent options found in option check!
+#
+Bei der Überprüfung wurden inkonsistente Einstellungen gefunden!
+#
+# 69/70: ERROR: Failed to read image file "..."!
+#
+Bild-Datei konnte nicht eingelesen werden:\n"
+"!
+#
+# 71: ERROR: PDF writer failed to open a new page!
+#
+Bei der PDF-Erzeugung konnte keine neue Seite geöffnet werden!
+#
+# 72: ERROR: Failed to write PDF output to file!
+#
+PDF-Datei konnte nicht erzeugt werden!
+#
+# 73: ERROR: Failed to add image to PDF page!
+#
+Bild konnte nicht zu PDF-Seite hinzugefügt werden!
+#
+# 74/75: ERROR: Unknown output language "..."!
+#
+Unzulässiger Ausgabe-Treiber "
+"!
+#
+# 76: PROGRESS: Writing output.
+#
+Ausgabe wird erzeugt.
diff --git a/support/dktools/dktools/de/dk3fig.str b/support/dktools/dktools/de/dk3fig.str
new file mode 100644
index 0000000000..0c7592906d
--- /dev/null
+++ b/support/dktools/dktools/de/dk3fig.str
@@ -0,0 +1,45 @@
+#
+# 0: File name.
+#
+dk3fig.str
+#
+# 1: Syntax error in Fig input!
+#
+Syntax-Fehler in Fig-Datei!
+#
+# 2: Color redefinition!
+#
+Mehrfache Definition einer Farbe!
+#
+# 3: Math problem in arc calculation!
+#
+Mathematische Probleme bei Kreisbogen-Berechnung!
+#
+# 4: Object processing failed!
+#
+Objekt konnte nicht verarbeitet werden!
+#
+# 5: Arrowhead calculation failed!
+#
+Pfeilspitzen-Berechnung fehlgeschlagen!
+#
+# 6: Error while reading input file!
+#
+Fehler beim Lesen der Eingabedatei!
+#
+# 7: Color not found, using black as default color!
+#
+Farbe nicht gefunden, Schwarz als Standardfarbe wird benutzt!
+#
+# 8: Unknown object type!
+#
+Unbekannter Objekt-Typ!
+#
+# 9: Can not fill open graphics path!
+#
+Offener Graphikpfad kann nicht gefüllt werden.
+#
+# 10: Converted to closed graphics path for filling.
+#
+Umwandlung zu geschlossenem Graphikpfad für Füllung.
+
diff --git a/support/dktools/dktools/de/dk3print.str b/support/dktools/dktools/de/dk3print.str
new file mode 100644
index 0000000000..0ff1f4c530
--- /dev/null
+++ b/support/dktools/dktools/de/dk3print.str
@@ -0,0 +1,223 @@
+#
+# 0
+#
+DRUCKER:
+#
+# 1
+#
+PRIMÄRE KONFIGURATION:
+#
+# 2
+#
+SEKUNDÄRE KONFIGURATION:
+#
+# 3
+#
+Drucker-Typ:
+#
+# 4
+#
+Host:
+#
+# 5
+#
+Queue:
+#
+# 6
+#
+Port:
+#
+# 7
+#
+Verbindungs-Timeout:
+#
+# 8
+#
+Sende-Timeout:
+#
+# 9
+#
+Empfangs-Timeout:
+#
+# 10
+#
+PS-Level:
+#
+# 11
+#
+Standard:
+#
+# 12
+#
+SNMP-Host:
+#
+# 13
+#
+SNMP-Community:
+#
+# 14
+#
+SNMP-Version:
+#
+# 15
+#
+Verbindungsabbau:
+#
+# 16
+#
+unbekannt
+#
+# 17
+#
+Windows
+#
+# 18
+#
+Socket
+#
+# 19
+#
+LPD
+#
+# 20
+#
+LPRng
+#
+# 21
+#
+ja
+#
+# 22
+#
+nein
+#
+# 23 24 25 26
+#
+1
+2c
+2p
+3
+#
+# 27
+#
+Schließende eckige Klammer fehlt!
+#
+# 28 29
+#
+"
+" ist hier nicht erlaubt, nur "host" oder "printer"!
+#
+# 30
+#
+Name für Host oder Drucker fehlt!
+#
+# 31 32
+#
+Drucker "
+" existiert bereits!
+#
+# 33 34
+#
+Drucker-Alias "
+" existiert bereits!
+#
+# 35 36
+#
+Wertangabe erforderlich für "
+"!
+#
+# 37
+#
+Der Queue-Typ ist bereits konfiguriert!
+#
+# 38 39
+#
+Unbekannter Queue-Typ "
+"!
+#
+# 40 41
+#
+Hostname "
+" wird überschrieben!
+#
+# 42 43
+#
+Option "
+" mit diesem Drucker-Typ nicht nutzbar!
+#
+# 44 45
+#
+Queue-Name "
+" wird überschrieben!
+#
+# 46 47
+#
+Port-Nummer
+ wird überschrieben!
+#
+# 48
+#
+Zahlenbereichsüberlauf!
+#
+# 49 50
+#
+Fehlerhaftes PS-Level "
+", muss 2 oder 3 sein!
+#
+# 51 52
+#
+SNMP-Host "
+" wird überschrieben!
+#
+# 53 54
+#
+SNMP-Community "
+" wird überschrieben!
+#
+# 55
+#
+SNMP-Version wird überschrieben!
+#
+# 56 57
+#
+Unbekannte SNMP-Version "
+"!
+#
+# 58 59
+#
+Empfangs-Timeout "
+" wird überschrieben!
+#
+# 60 61
+#
+Sende-Timeout "
+" wird überschrieben!
+#
+# 62 63
+#
+Verbindungs-Timeout "
+" wird überschrieben!
+#
+# 64 65
+#
+Unbekannte Konfigurations-Option "
+"!
+#
+# 66 67
+#
+Druck-Host "
+" ist bereits definiert!
+#
+# 68 69
+#
+Druck-Host-Alias "
+" ist bereits definiert!
+#
+# 70 71
+#
+Encoding "
+" entspricht nicht dem LPD-Protokoll!
+#
+# 72
+#
+Konfigurationszeile außerhalb aller Scopes!
diff --git a/support/dktools/dktools/de/dk3wreg.str b/support/dktools/dktools/de/dk3wreg.str
new file mode 100644
index 0000000000..a8d2f37fa7
--- /dev/null
+++ b/support/dktools/dktools/de/dk3wreg.str
@@ -0,0 +1,82 @@
+#
+# 0
+#
+dk3wreg.str
+#
+# 1
+#
+Registry-Key konnte nicht geöffnet werden!
+#
+# 2, 3
+#
+Registry-Key konnte nicht geöffnet werden:\n"
+"!
+#
+# 4, 5, 6
+#
+Registry-Key konnte nicht geöffnet bzw. angelegt werden!
+Registry-Key konnte nicht geöffnet bzw. angelegt werden:\n"
+"!
+#
+# 7, 8, 9
+#
+Registry-Key konnte nicht geschlossen werden!
+Registry-Key konnte nicht geschlossen werden:\n"
+"!
+#
+# 10, 11, 12
+#
+Registry-Wert konnte nicht geschrieben werden!
+Registry-Wert konnte nicht geschrieben werden:\n"
+"!
+#
+# 13, 14, 15
+#
+Registry-Wert konnte nicht gelesen werden!
+Registry-Wert konnte nicht gelesen werden:\n"
+"!
+#
+# 16, 17, 18
+#
+Registry-Wert ist kein String!
+Registry-Wert ist kein String:\n"
+"!
+#
+# 19, 20, 21
+#
+Registry-Wert ist kein DWORD!
+Registry-Wert ist kein DWORD:\n"
+"!
+#
+# 22, 23, 24
+#
+Registry-Wert ist unvollständiges DWORD!
+Registry-Wert ist unvollständiges DWORD:\n"
+"!
+#
+# 25, 26, 27
+#
+Registry-Teilbaum konnte nicht gelöscht werden!
+Registry-Teilbaum konnte nicht gelöscht werden:\n"
+"!
+#
+# 28, 29, 30
+#
+Registry-Wert konnte nicht gelöscht werden!
+Registry-Wert konnte nicht gelöscht werden:\n"
+"!
+#
+# 31
+#
+String zu lang für Ziel-Puffer!
+#
+# 32
+#
+Expansion der Umgebungsvariablen gescheitert!
+#
+# 33
+#
+Das Programm wurde für ältere Windows-Versionen compiliert.\nDas Löschen von Registry-Keys ist daher nicht möglich!
+#
+#
+#
diff --git a/support/dktools/dktools/de/dk4dbia.str b/support/dktools/dktools/de/dk4dbia.str
new file mode 100644
index 0000000000..1b56c298b9
--- /dev/null
+++ b/support/dktools/dktools/de/dk4dbia.str
@@ -0,0 +1,40 @@
+#
+# 0 Error: Failed to open database
+#
+Datenbank konnte nicht geöffnet werden!
+#
+# 1
+#
+\nFehlerhafte Argumente an Funktion zum Öffnen übergeben.
+#
+# 2
+#
+\nDer Datenbank-Typ wird nicht unterstützt.
+#
+# 3
+#
+\nMathematischer Überlauf in Größenberechnung.
+#
+# 4
+#
+\nNicht ausreichend Hauptspeicher verfügbar.
+#
+# 5
+#
+\nSyntax-Fehler (Datenbank-Name, Dateityp oder Dateiinhalt).
+#
+# 6
+#
+\nBerechtigungen für Zugriff fehlt.
+#
+# 7
+#
+\nDatei konnte nicht zum Lesen geöffnet werden.
+#
+# 8
+#
+\nDatei konnte nicht zum Schreiben geöffnet werden.
+#
+# 9
+#
+\nSchließen der Datei schlug fehl.
diff --git a/support/dktools/dktools/de/dk4info.str b/support/dktools/dktools/de/dk4info.str
new file mode 100644
index 0000000000..5201c9959e
--- /dev/null
+++ b/support/dktools/dktools/de/dk4info.str
@@ -0,0 +1,15 @@
+#
+# 0 1 Used directories:
+#
+Benutzte Verzeichnisse:
+-----------------------
+#
+# 2 3 Configured at built time:
+#
+Beim Compilieren angegebene Verzeichnisse:
+------------------------------------------
+#
+# 4 5 Definitions
+#
+Compiler-Definitionen:
+----------------------
diff --git a/support/dktools/dktools/de/dk4info.txt b/support/dktools/dktools/de/dk4info.txt
new file mode 100644
index 0000000000..c8df17c4cc
--- /dev/null
+++ b/support/dktools/dktools/de/dk4info.txt
@@ -0,0 +1,40 @@
+
+BEZEICHNUNG
+
+dk4info - Informationen zur Konfiguration
+
+ÃœBERSICHT
+
+dk4info [-l]
+
+BESCHREIBUNG
+
+Das Programm gibt Informationen darüber aus, welche Verzeichnisse aktuell
+benutzt werden und welche Verzeichnisse beim Compilieren angegeben wurden.
+Mit der Option -l werden die beim Compilieren benutzten Konstanten mit
+ausgegeben.
+
+OPTIONEN
+
+-l Konstanten des Build-Vorgangs (Ergebnisse von configure) mit anzeigen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ dk4info --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dk4uc2l.str b/support/dktools/dktools/de/dk4uc2l.str
new file mode 100644
index 0000000000..76047dfd4d
--- /dev/null
+++ b/support/dktools/dktools/de/dk4uc2l.str
@@ -0,0 +1,67 @@
+#
+# 0 Error: Syntax
+#
+Syntax-Fehler!\n\tHexadezimal-Zahl am Zeilenanfang erwartet!
+#
+# 1 Error: Syntax
+#
+Syntax-Fehler!\n\tHexadezimal-Zahl außerhalb des 32-Bit-Bereiches!
+#
+# 2 3 4 Error: Syntax-Fehler! Redefintion of character!
+#
+Syntax-Fehler!\n\tErneute Definition von
+!
+Syntax-Fehler! Erneute Definition für Zeichen!
+#
+# 5 Error: Failed to set up text processing!
+#
+Text-Datenstrom-Verarbeitung konnte nicht eingerichtet werden!
+#
+# 6 7 Error: Failed to open file for reading: ...
+#
+Datei konnte nicht zum Lesen geöffnet werden:\n\t"
+"!
+#
+# 8 Error: Syntax-Fehler!\n\tIllegal font encoding name!
+#
+Syntax-Fehler!\n\tUnzulässiger Name für Font-Encoding!
+#
+# 9 Error: Syntax-Fehler!\n\t1 to 15 packages names are allowed!
+#
+Syntax-Fehler!\n\t1 bis 15 Paket-Namen erlaubt!
+#
+# 10 Error: Syntax-Fehler!\n\tIllegal attribute name!
+#
+Syntax-Fehler!\n\tUnzulässiger Attribut-Name!
+#
+# 11 Error: Syntax-Fehler!\n\tAttribute specified without value!
+#
+Syntax-Fehler!\n\tAttributname ohne Wert!
+#
+# 12 13 14 Error: Conversion to UTF-8 failed for a character!
+#
+Zeichen 0x
+ konnte nicht nach UTF-8 codiert werden!
+Zeichen konnte nicht nach UTF-8 codiert werden!
+#
+# 15 Error: No directory for character mapping information found!
+#
+Verzeichnis mit Konvertierungs-Daten nicht gefunden!
+#
+# 16 ... 21 Error messages.
+#
+Decodierung fehlgeschlagen!\n\tByte:
+Codierung fehlgeschlagen!\n\tByte:
+Verarbeitung fehlgeschlagen!\n\tByte:
+,\n\tZeichen:
+,\n\tPosition in Zeile:
+.
+#
+# 22 ... 27 Error messages.
+#
+Decodierung fehlgeschlagen!
+Codierung fehlgeschlagen!
+Verarbeitung fehlgeschlagen!
+Weitere Decodierungs-Fehler!
+Weitere Codierungs-Fehler!
+Weitere Verarbeitungs-Fehler!
diff --git a/support/dktools/dktools/de/dkct.txt b/support/dktools/dktools/de/dkct.txt
new file mode 100644
index 0000000000..db3e177658
--- /dev/null
+++ b/support/dktools/dktools/de/dkct.txt
@@ -0,0 +1,94 @@
+
+BEZEICHNUNG
+
+ dkct - Dirk Krauses C-Tool
+
+ÃœBERSICHT
+
+ dkct [<Option>] [<Dateien>]
+
+BESCHREIBUNG
+
+Das Programm beinhaltet folgende Funktionalität:
+- Präprozessor für Debug-Anweisungen,
+- Code-Generator für Automaten.
+- Code-Generator für GUIs mit Nutzung der wxWidgets-Bibliothek.
+
+Das Programm verarbeitet *.ctr, *.cpt, *.mtr und *.jtr-Dateien und erzeugt
+daraus *.c, *.cpp, *.m und *.java-Dateien. Die Quelldateien können
+Debug-Anweisungen in einer speziellen Notation enthalten, diese werden
+beim Erstellen von Release-Versionen ignoriert, beim Erstellen von
+Debug-Versionen zu Ausgabeoperationen umgewandelt.
+
+OPTIONEN
+
+-R
+--reset
+ Alle Einstellungen aus Konfigurationsdateien ignorieren.
+
+-d
+--debug
+ Debug-Ausgabe erzeugen (Standard: Keine Debug-Ausgabe).
+
+-s
+--debug-stdout
+ Debug-Ausgabe nach stdout.
+
+-t
+--timestamp
+ Debug-Ausgabe enthält Zeitstempel.
+
+-k
+--trace-keyword
+ Debug-Ausgabe enthält "trace"-Zeichenkette.
+
+-w
+--windows-wide-char
+ Debug-Ausgabe vorbereiten für wchar_t.
+
+-p
+--portable-output
+ Debug-Code portabel gestalten (schließt -w mit ein).
+
+-l
+--line-numbers
+ Präprozessor-Direktiven "#line ..." in die Ausgabe schreiben.
+
+-m
+--make
+ Make mode: Zieldateien nur dann neu erzeugen, wenn erforderlich.
+
+-b <Weite>
+--box-width=<Weite>
+ Box-Weite für Kommentarboxen festlegen.
+
+-h
+--help
+ Hilfe-Text anzeigen.
+
+-v
+--version
+ Versionsnummer anzeigen.
+
+-L
+--license-terms
+ Lizenzbedingungen anzeigen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Mit
+ dkct --license-terms
+können die Lizenzbedingungen angezeigt werden.
+
diff --git a/support/dktools/dktools/de/dkct3.str b/support/dktools/dktools/de/dkct3.str
new file mode 100644
index 0000000000..850d0134bf
--- /dev/null
+++ b/support/dktools/dktools/de/dkct3.str
@@ -0,0 +1,389 @@
+#
+# 0 / 1: Error: Not an input file (wrong suffix): "..."!
+#
+Keine Eingabedatei (falsche Endung): "
+"!
+#
+# 2 / 3: Error: Illegal type: "..."!
+#
+Unzulässiger Typ: "
+"!
+#
+# 4: Error: Copyright owner redefined!
+#
+Redefinition von "copyright owner"!
+#
+# 5: Error: Copyright year redefined!
+#
+Redefinition von "copyright year"!
+#
+# 6: Error: License redefined!
+#
+Redefinition der Lizenz!
+#
+# 7 / 8: Error: Unknown license type: "..."!
+#
+Unbekannter Lizenz-Typ: "
+"!
+#
+# 9: Error: Syntax error, value expected!
+#
+Syntax-Fehler - Wert fehlt!
+#
+# 10 / 11: Error: Syntax error, unknown option "..."!
+#
+Syntax-Fehler\nUnzulässige Option: "
+"!
+#
+# 12 / 13: Error: Output file name contains non-ASCII: "..."!
+#
+Dateiname mit Nicht-ASCII-Zeichen: "
+"!
+#
+# 14: Error: Missing file name!
+#
+Dateiname fehlt!
+#
+# 15: Error: Failed to open pipe: "..."!
+#
+Pipe kann nicht geöffnet werden für Kommando:\n"
+"!
+#
+# 17: Error: No popen() function available here!
+#
+Dieses System unterstützt keine Pipes!
+#
+# 18: Error: Problem while writing output!
+#
+Problem beim Schreiben der Ausgabe.
+#
+# 19: Error: Either macro= or prefix= allowed, not both!
+#
+Die Einstellungen macro= und prefix= sind exklusiv!
+#
+# 20 / 21: Error: Failed to open file "..."!
+#
+Datei "
+" konnte nicht geöffnet werden!
+#
+# 22: Error: Source line too long!
+#
+Eingabezeile zu lang!
+#
+# 23 / 24: Error: No such built-in function: "..."!
+#
+Eingebaute Funktion nicht vorhanden: "
+"!
+#
+# 25: Error: Missing function name!
+#
+Funktionsname fehlt!
+#
+# 26 / 27: Error: File name too long: "..."!
+#
+Dateiname zu lang: "
+"!
+#
+# 28: Error: Redefinition of state machine name!
+#
+Name der state machine mehrfach gesetzt!
+#
+# 29: Error: Not enough memory!
+#
+Zu wenig Speicher!
+#
+# 30: Error: Syntax error (boolean expected)!
+#
+Syntax-Fehler - Boolean erwartet!
+#
+# 31: Error: Syntax error (not a number)!
+#
+Syntax-Fehler - Zahlenwert erwartet!
+#
+# 32: Error: Redefinition of state, input, or output!
+#
+Zustand, Eingabe oder Ausgabe mehrfach definiert!
+#
+# 33: Error: Syntax error!
+#
+Syntax-Fehler!
+#
+# 34 / 35: Error: Undeclared state, input, or output: "..."!
+#
+Zustand, Eingabe oder Ausgabe nicht deklariert: "
+"!
+#
+# 36 / 39: Error: Conflict with previous rule (line ...)!
+#
+Konflikt mit vorheriger Regel (Zeile
+#
+# 37: Error: Syntax error (incomplete section name)!
+#
+Syntax-Fehler - Abschnittsname unvollständig!
+#
+# 38: Error: Numeric overflow!
+#
+Zahlenbereichsüberlauf!
+#
+# 39: End of message 36
+#
+)!
+#
+# 40: Error: No states declared!
+#
+Keine Zustände definiert!
+#
+# 41: Error: No inputs declared!
+#
+Keine Eingaben definiert!
+#
+# 42: Error: Not outputs declared!
+#
+Keine Ausgaben definiert!
+#
+# 43 / 44: Error: Syntax error (unknown header ...)!
+#
+Syntax-Fehler!\nUnbekannte Kopfzeile "
+"!
+#
+# 45: Error: Class name already set!
+#
+Syntax-Fehler - Klassenname bereits definiert!
+#
+# 46: Error: Missing window ID for object!
+#
+Window-ID für Objekt fehlt!
+#
+# 47: Error: Splitter window requires exactly 2 children!
+#
+wxSplitterWindow muss genau 2 Kinder haben!
+#
+# 48: Error: Container element has no contents!
+#
+Inhalt für Container fehlt!
+#
+# 49: Error: Missing text attribute for object!
+#
+Attribut "text" fehlt!
+#
+# 50: Error: Grid setup invalid or missing for object!
+#
+Gitter ist nicht oder fehlerhaft konfiguriert!
+#
+# 51: Error: Missing bitmap attribute for object!
+#
+Attribut "bitmap" fehlt!
+#
+# 52: Error: Missing or invalid choices attribute for object!
+#
+Attribut "choices" fehlt bzw. ist fehlerhaft gesetzt!
+#
+# 53: Error: Missing or invalid size attribute for object!
+#
+Attribut "size" fehlt bzw. ist fehlerhaft gesetzt!
+#
+# 54: Error: Missing rows or columns attribute for radio box!
+#
+Attribut "rows" bzw. "columns" fehlt!
+#
+# 55: Warning: Attribute ignored (usable for root object only)!
+#
+Attribut wird ignoriert (nur für Top-Level-Element vorgesehen)!
+#
+# 56: Warning: Attribute ignored (not applicable to this class)!
+#
+Attribut wird ignoriert (für diese Klasse nicht vorgesehen)!
+#
+# 57: Error: Not enough memory!
+#
+Zu wenig Speicher!
+#
+# 58: Error: Syntax error - Missing object name!
+#
+Syntax-Fehler - Objekt-Name fehlt!
+#
+# 59: Error: Syntax error - Missing closing bracket!
+#
+Syntax-Fehler - "]" fehlt!
+#
+# 60: Error: Syntax error - Redefinition of id!
+#
+Attribut "id" wird überschrieben!
+#
+# 61: Error: Syntax error - ID undefined!
+#
+Attribut "id" fehlt!
+#
+# 62: Error: Syntax error - Redefinition of text!
+#
+Attribut "text" wird überschrieben!
+#
+# 63: Error: Syntax error - Unknown top level window type!
+#
+Syntax-Fehler - Unbekannter Typ für Top-Level-Element!
+#
+# 64/65: Error: Syntax error - Not a numeric value: "...."!
+#
+Syntax-Fehler!\nKein Zahlenwert: "
+"!
+#
+# 66: Error: Syntax error - Empty line!
+#
+Syntax-Fehler - Leerzeile!
+#
+# 67: Error: Syntax error!
+#
+Syntax-Fehler!
+#
+# 68: Error: Syntax error - No current element yet!
+#
+Syntax-Fehler - Kein aktuelles Element!
+#
+# 69: Error: Syntax error - Missing value!
+#
+Syntax-Fehler - Wert fehlt!
+#
+# 70: Error: Syntax error - Not a boolean value!
+#
+Syntax-Fehler - Kein Boolean-Wert!
+#
+# 71: Error: Syntax error - Empty ID!
+#
+Syntax-Fehler - Attribut "id" fehlt!
+#
+# 72: Error: Syntax error - Only one direction allowed here!
+#
+Syntax-Fehler - Nur eine Richtung erlaubt!
+#
+# 73: Error: Syntax error - Not a direction!
+#
+Syntax-Fehler - Richtungsangabe fehlt!
+#
+# 74/75: Warning: Attribute redefinition discards previous value!
+#
+Attribut-Neudefinition, der alte Wert "
+" wird verworfen!
+#
+# 76/77: Error: Unknown keyword "..."!
+#
+Syntax-Fehler!\n"
+" ist hier nicht zulässig!
+#
+# 78: Error: Missing class name for object!
+#
+Syntax-Fehler - Klassenname für Objekt fehlt!
+#
+# 79: Error: Dependency loop detected!
+#
+Syntax-Fehler - Abhängigkeits-Schleife!
+#
+# 80: Warning: Constructor specified, not recommended for this class!
+#
+Konstruktor-Angabe für diese Klasse nicht empfohlen!
+#
+# 81: ERROR: Don't know how to add object to parent!
+#
+Syntax-Fehler - Objekt kann nicht in Elternobjekt eingefügt werden!
+#
+# 82/83: Error: Number out of range: "..."!
+#
+Syntax-Fehler!\nNicht im erlaubten Bereich: "
+"!
+#
+# 84/85/86: Error: Can't add object "..." to parent object "..."!
+#
+Syntax-Fehler!\nObjekt "
+" kann nicht zu Elternobjekt "
+" hinzugefügt werden!
+#
+# 87: UNUSED Object/class name: Not specified.
+#
+
+#
+# 88/89/90: Illegal parent/child class combination: ".../..."!
+#
+Syntax-Fehler!\nUnzulässige Eltern/Kind-Kombination: "
+/
+"!
+#
+# 91: Error: Missing name for parent object!
+#
+Syntax-Fehler - Name für Elternobjekt fehlt!
+#
+# 92: Error: Missing parent object!
+#
+Syntax-Fehler - Elternobjekt fehlt!
+#
+# 93/94: Error: Syntax error - Missing class name for object "..."!
+#
+Syntax-Fehler!\nKlassenname für Objekt "
+" fehlt!
+#
+# 95/96: Warning: Redeclaration of object "..."!
+#
+Neudeklaration für Objekt "
+"!
+#
+# 97: Error: Root element must have exactly one sizer as contents!
+#
+Das Top-Level-Window muss genau einen Sizer haben!
+#
+# 98: Error: Command too long
+#
+Kommando zu lang!
+#
+# 99/100: Error: Illegal section name for state machine "..."!
+#
+Unzulässiger Abschnitt "
+"!
+#
+# 101: Error: File name too long in trace function!
+#
+Zu langer Dateiname in trace-Funktion!
+#
+# 102/103: Error: File name "..." contains non-ASCII-characters!
+#
+Dateiname "
+" enthält Nicht-ASCII-Zeichen!
+#
+# 104: Error: Pipe startet but not processing current directory!
+#
+Pipe-Befehl, aber nicht im aktuellen Verzeichnis!
+#
+# 105: Progress message: All output files up to date.
+#
+Alle Ausgabedateien sind aktuell.
+#
+# 106: Progress message: Start processing.
+#
+Verarbeitung beginnt.
+#
+# 107: Progress message: Processing finished.
+#
+Verarbeitung abgeschlossen.
+#
+# 108/109: Progress message: Writing file "...".
+#
+Datei "
+" wird geschrieben.
+#
+# 110/111: Progress message: File "..." is up to date.
+#
+Datei "
+" ist aktuell.
+#
+# 112: Error: Sizes must not be negative!
+#
+Größenangaben können nicht negativ sein!
+#
+# 113: Warning: Coypright time does not end in current year!
+#
+Copyright-Zeitraum endet nicht in aktuellem Jahr!
+#
+# 114: Warning: Preprocessor directives in $!text section with file=...
+#
+Präprozessor-Direktive in $!text mit file=...!
+#
+# 115: Warning: Redefinition of tooltip flag!
+#
+Neudefinition von "tooltip flag"!
diff --git a/support/dktools/dktools/de/dkdbtool.str b/support/dktools/dktools/de/dkdbtool.str
new file mode 100644
index 0000000000..8719a0a33f
--- /dev/null
+++ b/support/dktools/dktools/de/dkdbtool.str
@@ -0,0 +1,95 @@
+#
+# 0
+#
+Die folgenden Datenbank-Typen werden unterstützt:
+#
+# 1
+#
+mem Hauptspeicher-Datenbank des dktools-Projektes.
+#
+# 2
+#
+bdb Berkeley DB: Toolkit zur Programmierung eingebetteter Datenbanken
+#
+# 3
+#
+NDBM NDBM-Datenbank.
+#
+# 4: Error message: Missing dkdbt command!
+#
+Kommando für dkdbt fehlt!\n"dkdbt help" zeigt die verfügbaren Kommandos an.
+#
+# 5/6: Error message: Unknown command "..."!
+#
+Unzulässiges Kommando: "
+"!"dkdbt help" zeigt die verfügbaren Kommandos an.
+#
+# 7/8: Error message: Failed to expand file name pattern "..."!
+#
+Das Dateinamen-Muster "
+" kann nicht aufgelöst werden!
+#
+# 9: Error message: No input files found!
+#
+Keine Eingabedateien gefunden!
+#
+# 10: Error message: Wrong file type!
+#
+Unzulässiger Dateityp!
+#
+# 11: Error message: Error in SQL input!
+#
+Fehler in der SQL-Eingabe!
+#
+# 12: Error message: Error while traversing data!
+#
+Beim Durchsuchen der Datensätze traten Fehler auf!
+#
+# 13: Error message: Key data is no text!
+#
+Nicht-Text-Daten in Datensatz-Schlüssel!
+#
+# 14: Error message: Value data is no text!
+#
+Nicht-Text-Daten in Datensatz-Wert!
+#
+# 15: Error message: Failed to print key!
+#
+Schlüssel konnte nicht ausgegeben werden!
+#
+# 16: Error message: Failed to print space!
+#
+Leerzeichen konnte nicht ausgegeben werden!
+#
+# 17: Error message: Failed to print value!
+#
+Wert konnte nicht ausgegeben werden!
+#
+# 18: Error message: Failed to print newline!
+#
+Newline konnte nicht ausgegeben werden!
+#
+# 19: Error message: Missing destination database name!
+#
+Datenbank-Dateiname für die Zieldatenbank fehlt!
+#
+# 20: Error message: Errors occured while processing input!
+#
+Fehler bei der Eingabe-Verarbeitung!
+#
+# 21: Error message: Input and output database file name required!
+#
+Dateinamen für Quell- und Zieldatenbank werden benötigt!
+#
+# 22: Error message: Missing input file name!
+#
+Dateiname für Quelldatenbank fehlt!
+#
+# 23: Error message: Missing output file name!
+#
+Dateiname für Zieldatenbank fehlt!
+#
+# 24: Error message: Error(s) occured while copying data!
+#
+Fehler beim Kopieren der Daten!
+
diff --git a/support/dktools/dktools/de/dkdbtool.txt b/support/dktools/dktools/de/dkdbtool.txt
new file mode 100644
index 0000000000..5772d4b94c
--- /dev/null
+++ b/support/dktools/dktools/de/dkdbtool.txt
@@ -0,0 +1,111 @@
+
+BEZEICHNUNG
+
+ dkdbt - Dirk Krauses Datenbank-Tool
+
+
+ÃœBERSICHT
+
+ dkdbt copy [-a] <Quelldatenbank> <Zieldatenbank>
+ dkdbt make [-c <Zeichen>] [-a] [-i <Encoding>] <Zieldatenbank> [<Datei(en)>]
+ dkdbt text [-o <Encoding>] <Quelldatenbank> [<Datei>]
+ dkdbt split-sql-lines [<Eingabedatei> [<Ausgabedatei>]]
+
+ dkdbt help
+ dkdbt version
+ dkdbt license
+ dkdbt features
+
+BESCHREIBUNG
+
+Die copy-Operation erzeugt eine neue Kopie einer Datenbank, auf Wunsch
+mit einem anderen Datenbank-Typ. Standardmäßig wird die Zieldatenbank
+als leere Datenbank geöffnet, d.h. bestehender Inhalt der Zieldatenbank
+wird gelöscht. Damit erhält die Zieldatenbank exakt die gleichen Datensätze
+wie die Quelldatenbank.
+Mit der Option -a (add - hinzufügen) werden die evtl. bereits vorhandenen
+Datensätze zunächst beibehalten. Die in der Quelldatenbank vorhandenen
+Datensätze werden genutzt, um Datensätze der Zieldatenbank zu ändern bzw. neue
+Datensätze einzufügen.
+
+Die make-Operation erzeugt eine Datenbank aus einer Texteingabe.
+Jede Zeile der Texteingabe enthält einen Datensatz. Das erste Text-Wort in der
+Zeile ist der Datenbankschlüssel, der restliche Text beginnend mit dem
+zweiten Text-Wort ist der Wert.
+Mit der Option -c (comment - Kommentar) kann ein Zeichen angegeben werden, das
+Zeilenkommentare einleitet. Alle Zeilen, die mit diesem Zeichen beginnen,
+werden als Kommentare behandelt.
+Mit der Option -i (input encoding - Eingabe-Codierung) kann das
+Eingabe-Encoding angegeben werden.
+Nach dem Namen der Zieldatenbank können optional Dateinamen für Eingabedateien
+angegeben werden. Werden keine Dateinamen angegeben, wird die Standardeingabe
+verarbeitet.
+Mit der Option -a (add - hinzufügen) werden die evtl. bereits vorhandenen
+Datensätze zunächst beibehalten. Die in der Quelldatenbank vorhandenen
+Datensätze werden genutzt, um Datensätze der Zieldatenbank zu ändern bzw. neue
+Datensätze einzufügen.
+
+Die text-Operation kehrt die make-Operation um, d.h. der Inhalt einer
+Datenbank wird als Text ausgegeben.
+Mit der Option -o (output encoding - Ausgabe-Codierung) kann ein
+Zeichenencoding für die Ausgabe festgelegt werden.
+
+Die split-sql-lines-Operation splittet überlange Zeilen in der Ausgabe von
+mysqldump in mehrere Zeilen.
+
+Die help-Operation zeigt diesen Hilfetext.
+
+Die version-Operation zeigt die Versionsnummer.
+
+Die license-Operation zeigt die Lizenzbedingungen.
+
+Die features-Operation zeigt an, welche Datenbank-Typen vom Programm
+unterstützt werden.
+
+OPTIONEN
+
+-a
+ Datensätze zur Zieldatenbank hinzufügen, falls die Zieldatenbank
+ bereits existiert. Ohne die Option -a wird die Zieldatenbank neu angelegt,
+ dabei gehen evtl. bereits vorhandene Datensätze verloren.
+
+
+-c <Zeichen>
+ Kommentarzeichen. Zeilen, die mit diesem Zeichen beginnen,
+ werden als Kommentar behandelt.
+
+
+-i <Encoding>
+ Erwartete Standard-Zeichencodierung für die Eingabe.
+
+
+-o <Encoding>
+ Zeichencodierung für die Ausgabe.
+
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+DATEIEN
+
+Die Eingabedatei für "dkdbt make" enthält pro Zeile einen Datensatz.
+Das erste Textwort in der Zeile ist der Datensatz-Schlüssel (bzw. Name).
+Durch eine Folge von Leerzeichen und/oder Tabulatoren ist der Wert abgetrennt.
+Der Wert beginnt mit dem ersten Textzeichen und erstreckt sich bis zum
+Ende der Zeile (Newline oder Zeilenvorschub).
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Mit
+ dkdbt -L
+werden die Lizenzbedingungen angezeigt.
+
diff --git a/support/dktools/dktools/de/dknet4.str b/support/dktools/dktools/de/dknet4.str
new file mode 100644
index 0000000000..45321b5935
--- /dev/null
+++ b/support/dktools/dktools/de/dknet4.str
@@ -0,0 +1,217 @@
+#
+# 0: File name <<standard input>> used if no file name specified
+#
+<<Standardeingabe>>
+#
+# 1/2: Progress message: Retrieving IP address for host "...".
+#
+Suche IP-Adresse für "
+".
+#
+# 3/4: Error: Host not found: "..."!
+#
+Keine IP-Adresse gefunden für: "
+"!
+#
+# 5: Progress message: Socket created.
+#
+Socket wurde erstellt.
+#
+# 6: Progress message: Local address bound.
+#
+Lokale Adresse erhalten.
+#
+# 7: Progress message: Listening for connection requests.
+#
+Warte auf Verbindungsanfragen.
+#
+# 8: Progress message: Waiting for next client to connect.
+#
+Warte auf Verbindungsanfrage vom nächsten Client.
+#
+# 9: Progress message: Initial data contains start command.
+#
+Start-Kommando erhalten.
+#
+# 10: Progress message: Initial data was read.
+#
+Verbindungsaufbau mit Client erfolgreich.
+#
+# 11: Error: Failed to read initial data!
+#
+Verbindungsaufbau mit Client fehlgeschlagen!
+#
+# 12: Progress message: Maximum number of clients reached.
+#
+Es sind alle Clients verbunden.
+#
+# 13: Error: Error while accepting next client!
+#
+Fehler in Systemfunktion beim Akzeptieren von Clients!
+#
+# 14: Error: Failed to listen for client connection requests!
+#
+Socket konnte nicht als Serversocket konfiguriert werden!
+#
+# 15: Progress message: Starting data transfer.
+#
+Beginn des Datentransfers.
+#
+# 16: Progress message: Data transfer finished.
+#
+Ende des Datentransfers.
+#
+# 17: Progress message: Releasing all connections.
+#
+Verbindungen werden geschlossen.
+#
+# 18: Progress message: Finished.
+#
+Fertig.
+#
+# 19: Error: Failed to bind local port!
+#
+Lokale Adresse nicht verfügbar!
+#
+# 20: Error: Failed to create socket!
+#
+Socket konnte nicht erstellt werden!
+#
+# 21: Progress message: Input file opened.
+#
+Eingabedatei geöffnet.
+#
+# 22: Progress message: Transferring data from standard input.
+#
+Standardeingabe wird verwendet.
+#
+# 23: Error: No port number specified!
+#
+Angabe zur Port-Nummer fehlt!
+#
+# 24: Error: Failed to receive data from sender!
+#
+Datenempfang fehlgeschlagen!
+#
+# 25: Progress message: End of data transfer.
+#
+Ende des Datentransfers.
+#
+# 26/27: Progress message: Output file "..." opened.
+#
+Ausgabedatei "
+" geöffnet.
+#
+# 28: Progress message: Writing output to standard output.
+#
+Standardausgabe wird verwendet.
+#
+# 29: Progress message: Connection established.
+#
+Verbindung hergestellt.
+#
+# 30: Progress message: Initial data was sent.
+#
+Verbindungsaufbau erfolgreich-
+#
+# 31: Error: Sender port not configured!
+#
+Sender-Portnummer fehlt!
+#
+# 32: Error: Sender host unknown!
+#
+Sender-Host fehlt!
+#
+# 33: Error: Range overflow in port number!
+#
+Bereichsüberlauf bei Port-Nummer!
+#
+# 34: Error: Illegal number of clients, must be non-negative!
+#
+Unzulässige Client-Anzahl, darf nicht negativ sein!
+#
+# 35: Error: Option -s requires an argument!
+#
+Die Option -s erfordert ein Argument!
+#
+# 36: Error: Option -r requires an argument!
+#
+Die Option -r erfordert ein Argument!
+#
+# 37: Error: Option -a requires an argument!
+#
+Die Option -a erfordert ein Argument!
+#
+# 38: Error: Option -c requires an argument!
+#
+Die Option -c erfordert ein Argument!
+#
+# 39/40: Error: Illegal option "-..."!
+#
+Unzulässige Option "-
+"!
+#
+# 41: Error: Only one file name allowed!
+#
+Es darf nur ein Dateiname angegeben werden!
+#
+# 42: Progress message: Command line processing finished.
+#
+Kommandozeilen-Argumente wurden verarbeitet.
+#
+# 43: Error: Options -r and -s are exclusive!
+#
+Die Optionen -r und -s schließen einander aus!
+#
+# 44: Error: At least one option from -r, -s, -h, or -v is required!
+#
+Mindestens eine der Optionen -r, -s, -h oder -v muss angegeben werden!
+#
+# 45: Progress message: Windows sockets initialized.
+#
+Windows-Sockets initialisiert.
+#
+# 46: Error: Failed to initialize Windows sockets!
+#
+Die Windows-Sockets konnten nicht initialisiert werden!
+#
+# 47/48: Progress message: IP address found: ...
+#
+IP-Adresse gefunden:
+.
+#
+# 49/50: Progress message: Connection accepted from: ...
+#
+Verbindung akzeptiert:
+.
+#
+# 51/52: Warning: Connection refused from: ...
+#
+Verbindung zurückgewiesen:
+.
+#
+# 53/54: Error: Failed to send data to ..., disconnected!
+#
+Fehler beim Senden an
+, Verbindung beendet!
+#
+# 55/56: Progress message: Releasing connection to ...
+#
+Verbindungsabbau:
+.
+#
+# 57/58: Progress message: Connecting to host ...
+#
+Verbindungsaufbau:
+.
+#
+# 59/60: Error: Failed to connect to: ...
+#
+Verbindungsaufbau fehlgeschlaagen:
+!
+#
+# 61/62: Error: Not an IP netmask: "..."!
+#
+Keine IP-Netzmaske: "
+"!
+
diff --git a/support/dktools/dktools/de/dknet4.txt b/support/dktools/dktools/de/dknet4.txt
new file mode 100644
index 0000000000..01e18d59ed
--- /dev/null
+++ b/support/dktools/dktools/de/dknet4.txt
@@ -0,0 +1,70 @@
+
+BEZEICHNUNG
+
+ dknet4 - Datentransfer über Netzwerk (nur mit IPv4)
+
+ÃœBERSICHT
+
+ dknet4 -s <Port> [-c <Anzahl>] [-a <Adresse>[/<Maske>]] [<Datei>]
+ dknet4 -r <Host>:<Port> [-t] [<Datei>]
+
+BESCHREIBUNG
+
+Das Programm überträgt Daten über das Netzwerk von einem Sender zu einem
+oder mehreren Empfängern. Das Programm ist beschränkt auf IPv4, dafür
+aber auch auf älteren Systemen compilierbar und lauffähig.
+Für IPv6 verwenden Sie bitte dknet.
+
+OPTIONEN
+
+-s <Port>
+ Sender-Modus, legt den Port fest, an dem der Sender auf
+ eingehende Verbindungsanfragen wartet.
+
+-c <Anzahl>
+ Maximale Anzahl von Clients (Standardwert: 1).
+ Wird 0 angegeben, ist die Client-Anzahl unlimitiert. In diesem Fall
+ muss für den letzten Client die Option -t verwendet werden, um die
+ Ãœbertragung zu starten.
+
+-a <Adresse>[/<Maske>]
+ Client-Adressen auf den angegebenen IP-Adressbereich beschränken.
+ Angegeben werden hier eine IP-Adresse und die zugehörige Netzmaske,
+ beide jeweils dargestellt durch 4 Dezimalzahlen, die durch Punkte
+ getrennt sind, z.B. "192.168.113.0/255.255.255.0".
+ Wird die Option -a nicht verwendet, dürfen sich beliebige Clients mit
+ dem Sender verbinden.
+
+-r <Host>:<Port>
+ Empfänger-Modus, Angabe, mit welchem Sender eine
+ Verbindung hergestellt werden soll. Für den Sender müssen
+ Hostname bzw. IP-Adresse und Portnummer angegeben werden.
+
+-t
+ Ãœbertragung starten, dazu dem Server mitteilen, dass der letzte Client
+ verbunden wurde.
+
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+Das Programm dknet4 ersetzt das Programm tcptool aus vorherigen Versionen
+von dktools.
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ xxx --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-boot.txt b/support/dktools/dktools/de/dkwt-boot.txt
new file mode 100644
index 0000000000..30f0d2ace4
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-boot.txt
@@ -0,0 +1,55 @@
+
+BEZEICHNUNG
+
+ dkwt boot - Aufräumen im System-Boot-Script
+
+ÃœBERSICHT
+
+ dkwt boot [-t]
+
+BESCHREIBUNG
+
+Ein Aufruf von "dkwt boot" kann in das System-Boot-Script von PCs in
+PC-Klassen eingetragen werden. Dies bewirkt ein automatisches Bereinigen
+beim Booten.
+
+OPTIONEN
+
+-t
+ Test-Mode, keine Dateien oder Verzeichnisse löschen. Nur Meldungen
+ ausgegeben, welche Dateien oder Verzeichnisse beim Bereinigen gelöscht
+ würden.
+
+EXIT-STATUS
+
+Es wird immer 0 zurückgegeben, unabhängig von evtl. aufgetretenen Fehlern.
+
+DATEIEN
+
+dkwt.conf
+ Die Datei dkwt.conf enthält die Konfigurationsangaben zum automatischen
+ Bereinigen des PCs.
+ Verwenden Sie
+ dkwt help
+ um nähere Informationen über diese Konfigurationsdatei zu erhalten.
+
+BEMERKUNGEN
+
+Nach Änderungen an dkwt.conf sollte
+ dkwt boot -t
+verwendet werden, um die Einstellungen zu prüfen.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-clp.txt b/support/dktools/dktools/de/dkwt-clp.txt
new file mode 100644
index 0000000000..8639bbd4be
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-clp.txt
@@ -0,0 +1,44 @@
+
+BEZEICHNUNG
+
+ dkwt cleanup-profiles - Benutzerprofile bereinigen.
+
+ÃœBERSICHT
+
+ dkwt cleanup-profiles
+ dkwt clp
+
+BESCHREIBUNG
+
+Unter Windows Vista and Nachfolgerversionen laufen die Skripte zum
+Hoch- und Herunterfahren sowie beim Ein- und Ausloggen unter einem
+Benutzeraccount, dessen Berechtigungen kein Bereinigen fremder Benutzer-
+profile erlauben.
+
+Daher muss hier eine Eingabeaufforderung *als Administrator* gestartet
+werden, in dieser kann dann "dkwt cleanup-profiles" gestartet werden.
+
+Das Programm verwendet zum Löschen von Verzeichnissen zunächst System-
+funktionen und ruft dann nochmals das Kommando "RD" auf.
+
+Die Datei dkwt.conf enthält Angaben, wo Benutzerprofile gespeichert werden
+und welche Profile beim Bereinigen nicht gelöscht werden sollen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-env.txt b/support/dktools/dktools/de/dkwt-env.txt
new file mode 100644
index 0000000000..db8996f59a
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-env.txt
@@ -0,0 +1,117 @@
+
+BEZEICHNUNG
+
+ dkwt env - Umgebungsvariablen bearbeiten
+
+ÃœBERSICHT
+
+ dkwt env [<Option(en)>] <Name> [<Wert>]
+ dkwt environment [<Option(en)>] <Name> [<Wert>]
+
+BESCHREIBUNG
+
+Diese Funktion bearbeitet Umgebungsvariablen, sowohl in der Systemumgebung
+als auch in der Umgebung des aktuellen Nutzers.
+Der Fokus liegt auf Variablen, die Datei- oder Verzeichnisnamen speichern
+wie z.B. PATH.
+Mit den Optionen -i oder -a kann sichergestellt werden, dass eine solche
+Variable ein bestimmtes Verzeichnis bzw. eine bestimmte Datei enthält.
+Der Pfad wird nur hinzugefügt, falls er noch nicht im Variablenwert
+aufgeführt ist.
+
+OPTIONEN
+
+-s
+ Systemumgebung bearbeiten.
+ Ohne diese Option wird die Umgebung des aktuellen Nutzers bearbeitet.
+
+-e
+ REG_EXPAND_SZ anstelle von REG_SZ für neue Registry-Einträge verwenden.
+ Beim Bearbeiten bestehender Registry-Einträge wird diese Option
+ ignoriert.
+
+-u
+ Registry-Eintrag für Variable komplett löschen.
+
+-i
+ Einfügen, falls Wert noch nicht enthalten.
+ Falls die Variable den angegebenen Wert (Verzeichnis- oder
+ Dateiname) noch nicht enthält, wird er am Beginn des Wertes
+ eingefügt.
+
+-a
+ Anhängen, falls Wert noch nicht enthalten.
+ Falls die Variable den angegebenen Wert (Verzeichnis- oder
+ Dateiname) noch nicht enthält, wird er am Ende des Wertes angehangen.
+
+-d
+ Pfad (Verzeichnis- oder Dateiname) aus Variable entfernen.
+ Falls der Wert der Variable dadurch leer wird, wird die
+ Variable komplett gelöscht.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+BEISPIELE
+
+Wert der Variable TEMP aus der Nutzerumgebung anzeigen:
+
+ dkwt env TEMP
+
+Wert der Variable PATH aus der Systemumgebung anzeigen:
+
+ dkwt env -s PATH
+
+Variable FOO aus der Nutzerumgebung löschen:
+
+ dkwt env -u FOO
+
+Variable BAR aus der Systemumgebung löschen:
+
+ dkwt env -s -u BAR
+
+Variable FOO in der Nutzerumgebung setzen:
+
+ dkwt env FOO Alles nach dem Namen ist der neue Wert
+
+Variable BAR in der Systemumgebung setzen:
+
+ dkwt env -s BAR Und dies gilt fuer Systemvariablen genau so
+
+Sicherstellen, dass Variable PATH in der Systemumgebung das Verzeichnis
+"C:\Program Files\Tolles Programm" enthält (am Beginn einfügen, falls
+noch nicht enthalten):
+
+ dkwt env -s -i Path C:\Program Files\Tolles Programm
+
+Sicherstellen, dass dass Variable PATH in der Systemumgebung das Verzeichnis
+"C:\Program Files\Noch ein Programm" enthält (am Ende anhängen, falls noch
+nicht enthalten):
+
+ dkwt env -s -a Path C:\Program Files\Noch ein Programm
+
+Verzeichnis "C:\Program Files\Tolles Programm" aus System-Variable PATH
+entfernen:
+
+ dkwt env -s -d Path C:\Program Files\Tolles Programm
+
+BEMERKUNGEN
+
+Mit "dkwt env" durchgeführte Operationen wirken sich nicht auf bereits
+geöffnete Eingabeaufforderungs-Fenster aus.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-groups.txt b/support/dktools/dktools/de/dkwt-groups.txt
new file mode 100644
index 0000000000..d2cbbda4d8
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-groups.txt
@@ -0,0 +1,41 @@
+
+BEZEICHNUNG
+
+ dkwt groups - Gruppen auflisten
+
+ÃœBERSICHT
+
+ dkwt groups [<Option>]
+
+BESCHREIBUNG
+
+Das Kommando listet die im System eingerichteten Gruppen auf.
+
+OPTIONEN
+
+-l
+ Langes (ausführliches) Listing erstellen.
+
+-s
+ Kurzes Listing erstellen (nur die Gruppennamen).
+
+Die Optionen -l und -s können nicht gleichzeitig verwendet werden.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-help.txt b/support/dktools/dktools/de/dkwt-help.txt
new file mode 100644
index 0000000000..ab50d7ced0
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-help.txt
@@ -0,0 +1,202 @@
+
+BEZEICHNUNG
+
+ dkwt - Dirk Krauses Windows-Tool
+
+ÃœBERSICHT
+
+ dkwt users [<Option(en)>]
+ dkwt groups [<Option(en)>]
+ dkwt printers [<Option(en)>]
+ dkwt print [<Option(en)>] [<Datei(en)>]
+ dkwt boot
+ dkwt login
+ dkwt logout
+ dkwt shutdown
+ dkwt cleanup-profiles
+ dkwt keep
+ dkwt unkeep
+ dkwt env [<Option(en)>] <Name> [<Wert>]
+ dkwt help <Kommando>
+ dkwt -h
+ dkwt -v
+ dkwt -L
+
+BESCHREIBUNG
+
+dkwt users Nutzer anzeigen.
+dkwt groups Gruppen anzeigen.
+dkwt printers Drucker anzeigen.
+dkwt print Datei drucken.
+dkwt boot Aufräumen (beim Booten).
+dkwt login Aufräumen (beim Anmelden eines Benutzers).
+dkwt logout Aufräumen (beim Abmelden eines Benutzers).
+dkwt shutdown Aufräumen (beim Herunterfahren).
+dkwt cleanup-profiles Benutzerprofile aufräumen.
+dkwt keep Aufräumen unterdrücken bis einschließlich nach der
+ nächsten Nutzeranmeldung.
+dkwt unkeep Normale Aufräum-Routinen wieder herstellen.
+dkwt help Hilfetext anzeigen. Wird ein Kommando als
+ zusätzliches Argument angegeben, wird ein Hilfetext für das Kommando angezeigt.
+dkwt -h Diesen Hilfetext anzeigen.
+dkwt -v Versionsnummer anzeigen.
+dkwt -L Lizenzbedingungen anzeigen.
+
+Die Kommandos boot, login, logout, shutdown, cleanup-profile, keep und
+unkeep sind zur Verwendung in PC-Klassenräumen gedacht, siehe BEMERKUNGEN
+weiter unten.
+
+OPTIONEN
+
+-s
+ Kurze Ausgabe beim Auflisten von Nutzern oder Gruppen.
+
+-l
+ Lange (ausführliche) Ausgabe beim Auflisten von Nutzern oder Gruppen.
+
+-d <Gerät>
+ Drucker (Anschluss- bzw. Gerätename) für das Ausdrucken von Dateien.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+DATEIEN
+
+dkwt.conf
+ Die Datei dkwt.conf wird für die Kommandos boot, login, logout,
+ shutdown und cleanup-profiles verwendet.
+ Das empfohlene Verzeichnis für diese Datei ist
+ "C:\Program Files\Krause\etc\dkt-3-site" bzw.
+ "C:\Program Files (x86)\Krause\etc\dkt-3-site", je nach Windows-Version
+ (32- oder 64-Bit).
+ Die Datei besteht aus drei Abschnitten:
+ "options", "public" und "profiles", alle drei Abschnitte sind optional.
+
+ Im options-Abschnitt kann der Name für den Benutzer "System" und
+ den Benutzer "Jeder" in der Sprache der jeweiligen Installation
+ angegeben werden. Sind diese Angaben nicht vorhanden, werden die
+ Nutzernamen der SIDs "S-1-5-18" und "S-1-1-0" verwendet.
+
+ Im public-Abschnitt werden Verzeichnisse aufgelistet, die für alle
+ Nutzer schreibbar bzw. mit Vollzugriff versehen sind und die daher
+ regelmäßig aufgeräumt werden sollen.
+
+ Im profiles-Abschnitt wird in der Startanweisung das Basisverzeichnis
+ angegeben, in dem sich die Benutzerprofile befinden. Im Abschnitt
+ selbst werden alle Unterverzeichnisse dieses Verzeichnisses
+ aufgelistet, die beim Aufräumen erhalten werden sollen.
+
+ Beispiel:
+
+ [options]
+ system user = System
+ everyone use = Jeder
+
+ [public]
+ c:\temp
+
+ [profiles C:\Users]
+ All users
+ Default User
+ Public
+ Administrator
+ admin
+ sshd_server
+
+BEMERKUNGEN
+
+Die Kommandos boot, login, logout, shutdown und cleanup-profiles sind für die
+Verwendung in PC-Klassenräumen vorgesehen.
+Dabei wird von folgenden Annahmen ausgegangen:
+- Nutzeraccounts werden zentral gemanaget, z.B. im AD bzw. in einer Domäne.
+ Es existieren nur wenige lokale Benutzeraccounts, die bei der
+ Windows-Installation angelegt wurden oder für den Betrieb spezieller Dienste
+ erforderlich sind.
+- Jeder "normale" Nutzer hat ein Homeverzeichnis auf einem Fileserver und
+ speichert seine Daten dort.
+- Typischerweise melden sich an allen PCs die Nutzer mehr oder weniger
+ gleichzeitig an und ab (Beginn und Ende von Lehrveranstaltungen).
+Benutzerprofile werden aus folgenden Gründen nicht auf dem Server gespeichert:
+- Ein Großteil des Nutzerprofiles besteht aus Daten, die nichts mit den
+ Lehrveranstaltungen zu tun haben. Den Web-Browser-Cache aller Nutzer auf
+ dem Fileserver zu speichern wäre eine Verschwendung von TB...
+ Windows bietet zwar auch eine Blacklist für Profil-Unterverzeichnisse an,
+ die nicht mit dem Server synchronisiert werden sollen, aber die Pflege einer
+ solchen Blacklist bedeutet ständiges Hinterherputzen nach jedem Update und
+ jeder Softwareinstallation.
+- Bei der simultanen An- und Abmeldung der Nutzer an allen PCs hätte ein
+ Abgleich aller Profile mit dem Server Belastungsspitzen für Server und
+ Netzwerk zur Folge, die weit über die normale Benutzung hinausgehen.
+Somit werden folgende Einstellungen verwendet:
+- In den group policies werden nur lokale Benutzerprofile erlaubt,
+ Profilsynchronisierung mit dem Server wird deaktiviert.
+- Während der Lehrveranstaltung speichern die Nutzer ihre Daten in einem
+ für alle Nutzer schreibbaren Verzeichnis, z.B. C:\Temp oder C:\Lehre.
+- Am Ende der Lehrveranstaltung werden die noch benötigten Daten entweder in
+ das Homeverzeichnis und/oder auf private Medien wie USB-Sticks gesichert.
+ Dies erscheint auf den ersten Blick unkomfortabel, die Nutzer lernen aber
+ hierbei, wo ihre Daten gespeichert sind, die gesichert werden müssen.
+- Vor der Abmeldung löschen Nutzer ihre Daten aus dem für alle schreibbaren
+ Verzeichnis bzw. Verzeichnissen.
+- Beim Abmelden wird ein Abmeldescript benutzt, das für den gesamten noch
+ in den allgemein schreibbaren Verzeichnissen befindlichen Inhalt Vollzugriff
+ für jedermann erlaubt und anschließend versucht, diese Inhalte zu löschen.
+ Auch auf das Profilverzeichnis wird Vollzugriff für jeden gestattet,
+ anschließend wird versucht, dieses zu löschen.
+- Beim Abmelden können u.U. nicht alle Daten des Nutzers gelöscht werden,
+ daher wird bei der Anmeldung des nächsten Nutzers, beim Herunterfahren und
+ beim nächsten Systemstart ein erneuter Versuch unternommen. Beim
+ Systemstart sind die Aussichten auf erfolgreiches Löschen am besten.
+Um diese Aufräumarbeiten zu automatisieren, müssen Aufrufe von
+ dkwt boot
+ dkwt login
+ dkwt logout
+ dkwt shutdown
+in das System-Startup-Script, das Benutzer-Login-Script, das
+Benutzer-Logout-Script und das Herunterfahren-Script eingefügt werden
+(in dieser Reihenfolge).
+
+In Windows Vista, Windows 7 und den Nachfolgeversionen laufen die
+o.g. Skripte unter einem Benutzeraccount, der nicht die erforderlichen
+Berechtigungen zum Aufräumen der Benutzerprofile hat.
+Mit "dkwt boot", "dkwt login", "dkwt logout" und "dkwt shutdown" wird auf
+diesen Systemen keine Bereinigung der Benutzerprofile durchgeführt.
+Stattdessen können Sie manuell eine Eingabeaufforderung *als Administrator*
+öffnen und "dkwt cleanup-profiles" verwenden.
+Wenn Sie "dkwtadm cleanup-profiles" verwenden, wird die UAC benutzt,
+um entsprechende Berechtigungen zu erlangen.
+
+Werden Lehrveranstaltungen zur Systemprogrammierung (z.B. Erstellung eigener
+Treiber) durchgeführt, kann es beim Testen zu Abstürzen und Hängenbleiben
+des Systems kommen. Wird das Problem durch Neustart/Ausschalten gelöst, gehen
+beim Aufräumen die noch nicht gesicherten Daten verloren.
+Mit
+ dkwt keep
+kann das Aufräumen temporär außer Kraft gesetzt werden bis einschließlich zur
+nächsten Benutzeranmeldung. Der Befehl "dkwt keep" muss natürlich eingegeben
+werden, bevor riskante Experimente (z.B. Tests selbstgeschriebener
+systemnaher Software) erfolgen.
+Mit
+ dkwt unkeep
+wird der normale Aufräum-Betrieb wiederhergestellt. Dieser Befehl sollte
+unmittelbar vor dem Abmelden verwendet werden, nachdem alle Tests erfolgreich
+durchgeführt wurden und die Daten gespeichert wurden.
+Der Registry-Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\DKrause\Shared\dkwt muss
+vorhanden sein, Vollzugriff auf diesen Schlüssel muss entweder für "Jeder"
+oder "INTERAKTIV" eingerichtet sein.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-keep.txt b/support/dktools/dktools/de/dkwt-keep.txt
new file mode 100644
index 0000000000..a4789bbaf4
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-keep.txt
@@ -0,0 +1,42 @@
+
+BEZEICHNUNG
+
+ dkwt keep - Automatisches Bereinigen zeitweise außer Kraft setzen
+
+ÃœBERSICHT
+
+ dkwt keep
+
+BESCHREIBUNG
+
+Mit diesem Kommando wird das automatische Bereinigen zeitweise - bis
+einschließlich zur nächsten Benutzer-Anmeldung - außer Kraft gesetzt.
+Sie sollten dieses Kommando vor Aktionen verwenden, die zum Hängenbleiben
+oder Abstürzen des Systems führen können, insbesondere in Lehrveranstaltungen
+zur Mikroprozessortechnik oder Systemprogrammierung, beispielsweise wenn
+selbstentwickelte Treiber oder direkte Hardwarezugriffe getestet werden sollen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+REGISTRY
+
+Der Registry-Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\DKrause\Shared\dkwt muss
+vorhanden sein, Vollzugriff auf diesen Schlüssel muss entweder für "Jeder"
+oder "INTERAKTIV" eingerichtet sein.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-login.txt b/support/dktools/dktools/de/dkwt-login.txt
new file mode 100644
index 0000000000..f76556e901
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-login.txt
@@ -0,0 +1,55 @@
+
+BEZEICHNUNG
+
+ dkwt login - Aufräumen im Nutzer-Login-Script
+
+ÃœBERSICHT
+
+ dkwt login [-t]
+
+BESCHREIBUNG
+
+Ein Aufruf von "dkwt login" kann in das Nutzer-Login-Script von PCs in
+PC-Klassen eingetragen werden. Dies bewirkt ein automatisches Bereinigen
+beim Anmelden eines Nutzers.
+
+OPTIONEN
+
+-t
+ Test-Mode. Es werden keine Dateien oder Verzeichnisse gelöscht, sondern
+ nur Meldungen ausgegeben, welche Dateien oder Verzeichnisse
+ beim Bereinigen gelöscht werden.
+
+EXIT-STATUS
+
+Es wird immer 0 zurückgegeben, unabhängig von evtl. aufgetretenen Fehlern.
+
+DATEIEN
+
+dkwt.conf
+ Die Datei dkwt.conf enthält die Konfigurationsangaben zum automatischen
+ Bereinigen des PCs.
+ Verwenden Sie
+ dkwt help
+ um nähere Informationen über diese Konfigurationsdatei zu erhalten.
+
+BEMERKUNGEN
+
+Nach Änderungen an dkwt.conf sollte
+ dkwt login -t
+verwendet werden, um die Einstellungen zu prüfen.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-logout.txt b/support/dktools/dktools/de/dkwt-logout.txt
new file mode 100644
index 0000000000..4adb7e06bc
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-logout.txt
@@ -0,0 +1,55 @@
+
+BEZEICHNUNG
+
+ dkwt logout - Aufräumen im Nutzer-Logout-Script
+
+ÃœBERSICHT
+
+ dkwt logout [-t]
+
+BESCHREIBUNG
+
+Ein Aufruf von "dkwt logout" kann in das Nutzer-Logout-Script von PCs in
+PC-Klassen eingetragen werden. Dies bewirkt ein automatisches Bereinigen
+beim Abmelden eines Nutzers.
+
+OPTIONEN
+
+-t
+ Test-Mode. Es werden keine Dateien oder Verzeichnisse gelöscht, sondern
+ nur Meldungen ausgegeben, welche Dateien oder Verzeichnisse
+ beim Bereinigen gelöscht werden.
+
+EXIT-STATUS
+
+Es wird immer 0 zurückgegeben, unabhängig von evtl. aufgetretenen Fehlern.
+
+DATEIEN
+
+dkwt.conf
+ Die Datei dkwt.conf enthält die Konfigurationsangaben zum automatischen
+ Bereinigen des PCs.
+ Verwenden Sie
+ dkwt help
+ um nähere Informationen über diese Konfigurationsdatei zu erhalten.
+
+BEMERKUNGEN
+
+Nach Änderungen an dkwt.conf sollte
+ dkwt logout -t
+verwendet werden, um die Einstellungen zu prüfen.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-print.txt b/support/dktools/dktools/de/dkwt-print.txt
new file mode 100644
index 0000000000..3f351f8666
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-print.txt
@@ -0,0 +1,37 @@
+
+BEZEICHNUNG
+
+ dkwt print - Datei drucken
+
+ÃœBERSICHT
+
+ dkwt print [<Option>] [<Datei(en)>]
+
+BESCHREIBUNG
+
+Das Programm druckt die angegebene(n) Datei(en).
+
+OPTIONEN
+
+-d <Gerät>
+ Gerätename der Druckwarteschlange, *nicht* der Druckername.
+ Ohne diese Option erfolgt der Ausdruck auf dem Standarddrucker.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-printers.txt b/support/dktools/dktools/de/dkwt-printers.txt
new file mode 100644
index 0000000000..91b29b0275
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-printers.txt
@@ -0,0 +1,37 @@
+
+BEZEICHNUNG
+
+ dkwt printers - Drucker auflisten
+
+ÃœBERSICHT
+
+ dkwt printers [<Option>]
+
+BESCHREIBUNG
+
+Das Kommando listet die im System vorhandenen Drucker auf.
+
+OPTIONEN
+
+-l
+ Langes (ausführliches) Listing. Ohne diese Option wird
+ nur der Druckername ausgegeben.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-shutdown.txt b/support/dktools/dktools/de/dkwt-shutdown.txt
new file mode 100644
index 0000000000..a5927da0b8
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-shutdown.txt
@@ -0,0 +1,55 @@
+
+BEZEICHNUNG
+
+ dkwt shutdown - Aufräumen im System-Shutdown-Script
+
+ÃœBERSICHT
+
+ dkwt shutdown [-t]
+
+BESCHREIBUNG
+
+Ein Aufruf von "dkwt shutdown" kann in das System-Shutdown-Script von PCs in
+PC-Klassen eingetragen werden. Dies bewirkt ein automatisches Bereinigen
+beim Herunterfahren.
+
+OPTIONEN
+
+-t
+ Test-Mode, es werden keine Dateien oder Verzeichnisse gelöscht, sondern
+ nur Meldungen ausgegeben, welche Dateien oder Verzeichnisse beim
+ Bereinigen gelöscht werden.
+
+EXIT-STATUS
+
+Es wird immer 0 zurückgegeben, unabhängig von evtl. aufgetretenen Fehlern.
+
+DATEIEN
+
+dkwt.conf
+ Die Datei dkwt.conf enthält die Konfigurationsangaben zum automatischen
+ Bereinigen des PCs.
+ Verwenden Sie
+ dkwt help
+ um nähere Informationen über diese Konfigurationsdatei zu erhalten.
+
+BEMERKUNGEN
+
+Nach Änderungen an dkwt.conf sollte
+ dkwt shutdown -t
+verwendet werden, um die Einstellungen zu prüfen.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-unkeep.txt b/support/dktools/dktools/de/dkwt-unkeep.txt
new file mode 100644
index 0000000000..d679bc402e
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-unkeep.txt
@@ -0,0 +1,38 @@
+
+BEZEICHNUNG
+
+ dkwt unkeep - Automatisches Bereinigen wieder aktivieren
+
+ÃœBERSICHT
+
+ dkwt unkeep
+
+BESCHREIBUNG
+
+Mit diesem Kommando wird das automatische Bereinigen wieder eingeschaltet,
+nachdem es mit "dkwt keep" zeitweise deaktiviert wurde.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+REGISTRY
+
+Der Registry-Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\DKrause\Shared\dkwt muss
+vorhanden sein, Vollzugriff auf diesen Schlüssel muss entweder für "Jeder"
+oder "INTERAKTIV" eingerichtet sein.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt-users.txt b/support/dktools/dktools/de/dkwt-users.txt
new file mode 100644
index 0000000000..9432d74df3
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt-users.txt
@@ -0,0 +1,41 @@
+
+BEZEICHNUNG
+
+ dkwt users - Nutzer auflisten
+
+ÃœBERSICHT
+
+ dkwt users [<Option>]
+
+BESCHREIBUNG
+
+Das Programm listet die im System vorhandenen Benutzer.
+
+OPTIONEN
+
+-l
+ Langes (ausführliches) Listing.
+
+-s
+ Kurzes Listing (nur Nutzername).
+
+Die Optionen -l und -s können nicht gleichzeitig verwendet werden.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+AUTOR
+
+Dirk Krause
+
+LIZENZBEDINGUNGEN
+
+Ein Aufruf von
+ dkwt --license-terms
+zeigt die Lizenzbedingungen an.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/dkwt.str b/support/dktools/dktools/de/dkwt.str
new file mode 100644
index 0000000000..da80f6fa31
--- /dev/null
+++ b/support/dktools/dktools/de/dkwt.str
@@ -0,0 +1,501 @@
+#
+# 0: Attribute label: FUll user name
+#
+Name:
+#
+# 1: Attribute label: Comment for user
+#
+Kommentar:
+#
+# 2: Attribute label: User comment
+#
+Nutzer-Kommentar:
+#
+# 3: Attribute label: HOme directory
+#
+Homeverzeichnis:
+#
+# 4: Attribute label: User profile directory
+#
+Nutzerprofil:
+#
+# 5: Attribute label: User SID
+#
+SID:
+#
+# 6: Attribute label: User type
+#
+Typ:
+#
+# 7: User type: guest
+#
+Gast
+#
+# 8: User type: Normal user
+#
+Nutzer
+#
+# 9: User type: Administrator
+#
+Administrator
+#
+# 10: Attribute label: User flags.
+#
+Flags:
+#
+# 11: Account attribute: Login script executed
+#
+Login-Script ausgeführt.
+#
+# 12: Account attribute: Account disabled
+#
+Account deaktiviert.
+#
+# 13: Account attribute: Home directory required
+#
+Homeverzeichnis wird benötigt.
+#
+# 14: Account attribute: No password required
+#
+Kein Passwort notwendig.
+#
+# 15: Account attribute: Password can not be changed
+#
+Passwort kann nicht geändert werden.
+#
+# 16: Account attribute: Locked out
+#
+Account ausgesperrt.
+#
+# 17: Account attribute: Password does not expire
+#
+Passwort verfällt nicht.
+#
+# 18: Account attribute: Encrypted text password allowd
+#
+Verschlüsseltes Text-Passwort erlaubt.
+#
+# 19: Account attribute: Account is sensitive, no delegation
+#
+Wichtiger Account, keine Delegierung.
+#
+# 20: Account attribute: Smartcard required
+#
+Smartcard gefordert.
+#
+# 21: Account attribute: DES keys are allowed only
+#
+Nur DES-Keys.
+#
+# 22: Account attribute: No Kerberos pre-auth required
+#
+Keine Kerberos Pre-Authentication erforderlich.
+#
+# 23: Account attribute: Account is trusted for delegation
+#
+Dem Account wird für Delegierung vertraut.
+#
+# 24: Account attribute: Password is expired
+#
+Passwort ist abgelaufen.
+#
+# 25: Account attribute: Trusted to authenticate for delegation
+#
+Dem Account wird hinsichtlich der Authentifierung für Delegierung getraut.
+#
+# 26: Account type: Normal user account
+#
+Normaler Nutzer-Account.
+#
+# 27: Account type: Duplicated account for user from other domain
+#
+Duplizierter Account für Nutzer aus anderer Domäne.
+#
+# 28: Account type: Workstation trust account
+#
+Workstation-Trust-Account.
+#
+# 29: Account type: Server trust account
+#
+Server-Trust-Account.
+#
+# 30: Account type: Interdomain trust account
+#
+Interdomain-Trust-Account.
+#
+# 31: Empty string
+#
+
+#
+# 32: Operator privileges label
+#
+Operator:
+#
+# 33: Operator type: Accounts operator
+#
+Account-Operator.
+#
+# 34: Operator type: Server operator
+#
+Server-Operator.
+#
+# 35: Operator type: Communications operator
+#
+Kommunikations-Operator.
+#
+# 36: Operator type: Print operator
+#
+Druck-Operator.
+#
+# 37: Attribute label: Country code
+#
+Landes-Code:
+#
+# 38: Attribute label: Code page number
+#
+Codepage-Nummer:
+#
+# 39: Attribute label: Source
+#
+Quelle:
+#
+# 40: Attribute label: Comment
+#
+Kommentar:
+#
+# 41: Source type: Net
+#
+Netz
+#
+# 42: Source type: Local
+#
+Lokal
+#
+# 43: Attribute label: SID
+#
+SID:
+#
+# 44: Attribute label: Comment
+#
+Kommentar:
+#
+# 45: Attribute label: Description
+#
+Beschreibung:
+#
+# 46: Attribute label: Location
+#
+Herkunft:
+#
+# 47: Attribute label: Server
+#
+Server:
+#
+# 48: Attribute label: Share name
+#
+Freigabe:
+#
+# 49: Attribute label: Port
+#
+Port:
+#
+# 50: Attribute label: Driver
+#
+Treiber:
+#
+# 51: Attribute label: Device
+#
+Gerät:
+#
+# 52: Attribute label: Separator file
+#
+Trennseiten-Datei:
+#
+# 53: Attribute label: Print processor
+#
+Druck-Processor:
+#
+# 54: Attribute label: Data type
+#
+Datentyp:
+#
+# 55: Attribute label: Parameters
+#
+Parameter:
+#
+# 56/57: Error message: Failed to create print file "..."!
+#
+Die Druckdatei "
+" konnte nicht erzeugt werden!
+#
+# 58: Error message: Failed to schedule print job!
+#
+Der Druck-Job konnte nicht in die Warteschlange gestellt werden!
+#
+# 59: Error message: Failed to add print job!
+#
+Der Druck-Job konnte nicht gedruckt werden!
+#
+# 60/61: Error message: Failed to open printer "..."!
+#
+Keine Verbindung zum Drucker "
+" möglich!
+#
+# 62: Error message: Printer name too long!
+#
+Drucker-Name zu lang!
+#
+# 63/64: Error message: No printer found for device "..."!
+#
+Kein Drucker fpr Port "
+" gefunden!
+#
+# 65: Error message: Failed to find default printer!
+#
+Kein Standarddrucker vorhanden!
+#
+# 66: Error message: Redefinition of profile base directory!
+#
+Profil-Verzeichnis neu definiert!
+#
+# 67: Error message: No profile base directory specified!
+#
+Kein Profil-Verzeichnis bekannt!
+#
+# 68: Error message: Syntax - Unknown section type!
+#
+Syntax-Fehler - Unbekannter Abschnittstyp!
+#
+# 69: Error message: Syntax - Incomplete section header!
+#
+Syntax-Fehler - Unvollständiger Abschnittsbeginn!
+#
+# 70: Error message: Syntax - Missing section header!
+#
+Syntax-Fehler - Abschnittsbeginn fehlt!
+#
+# 71: Error message: Syntax - Redefinition of system user!
+#
+Syntax-Fehler - Nutzer "SYSTEM" neu definiert!
+#
+# 72: Error message: Syntax - Redefinition of everyone user!
+#
+Syntax-Fehler - Nutzer "Jeder" neu definiert!
+#
+# 73: Error message: Syntax - Unknown option!
+#
+Syntax-Fehler - Unbekannte Option!
+#
+# 74: Error message: Syntax - Not a key/value pair!
+#
+Syntax-Fehler - Kein Schlüssel/Wert-Paar!
+#
+# 75: Error message: Options -l and -s are exclusive!
+#
+Optionen -l und -s sind exklusiv!
+#
+# 76: Error message: Arguments are ignored!
+#
+Argumente werden ignoriert!
+#
+# 77: Error message: Failed to set keep-data flag.
+#
+DAS DATENERHALTUNGS-FLAG KONNTE NICHT GESETZT WERDEN!
+#
+# 78: Notice: Keep-data flag was set successfully.
+#
+Das Datenerhaltungs-Flag wurde gesetzt.
+#
+# 79/80: Execution of "..." indicated an error!
+#
+Kommando gab Statuscode für Fehler zurück: \n"
+"
+#
+# 81/82: Error: Failed to find name for SID "..."!
+#
+Für SID "
+" wurde kein Name gefunden!
+#
+# 83/84: Progress: Cleaning up local print queue ... .
+#
+Bereinige lokale Druckwarteschlange "
+".
+#
+# 85/86/87: Progress: Successfully deleted job ...: "...".
+#
+Druckauftrag
+: "
+" wurde gelöscht.
+#
+# 88: Unnamed print job
+#
+Druckauftrag ohne Namen
+#
+# 89/90/91: Error: Failed to delete job ...: "..."!
+#
+Druckauftrag
+: "
+" konnte nicht gelöscht werden!
+#
+# 92/93: Error: Failed to open printer ...!
+#
+Keine Verbindung zu Drucker "
+"!
+#
+# 94: Error: Failed to enumerate local printers!
+#
+Die installierten Drucker konnten nicht ermittelt werden!
+#
+# 95: Error: Missing user name!
+#
+Benutzername für Druckauftrag fehlt.
+#
+# 96: Progress: Print queue cleaned up successfully.
+#
+Druckwarteschlange wurde bereinigt.
+#
+# 97: ERROR: Failed to send request!
+#
+Löschbefehl konnte nicht gesendet werden!
+#
+# 98: ERROR: Failed to connect to remote host!
+#
+Keine Verbindung zum Server!
+#
+# 99: ERROR: Failed to create network socket!
+#
+Socket konnte nicht erzeugt werden!
+#
+# 100: ERROR: Failed to find IP address!
+#
+Keine IP-Adresse gefunden!
+#
+# 101/102: Progress: Cleaning up remote print queue ...
+#
+Bereinige Netzwerk-Druckwarteschlange "
+".
+#
+# 103: ERROR: Request too long for buffer!
+#
+Befehl zu lang für den Puffer!
+#
+# 104/105: ERROR: Empty queue name in "..."!
+#
+Wartschlangen-Name fehlt in "
+"!
+#
+# 106/107: ERROR: Empty host name in "..."!
+#
+Hostname fehlt in "
+"!
+#
+# 108/109: ERROR: Not a queue@host name: "..."!
+#
+Name entspricht nicht queue@host: "
+"!
+#
+# 110/111: ERROR: Queue name "..." too long!
+#
+Druckwarteschlangen-Name "
+" ist zu lang!
+#
+# 112: ERROR: Failed to initialize Windows sockets!
+#
+Winsock-Subsystem konnte nicht initialisiert werden!
+#
+# 113/114: Error: Error code: ...
+#
+Fehler-Code:
+.
+#
+# 115/116: IP address: ...
+#
+IP-Adresse:
+.
+#
+# 117
+#
+Auf diesem System läuft Windows Vista oder höher.\nNutzerprofile können hier nicht automatisch bereinigt werden!
+#
+# 118/119: Progress: Executing command: ...
+#
+Kommando wird ausgeführt:\n
+
+#
+# 120/121: Progress: Remove directory: ...
+#
+Verzeichnis wird gelöscht:\n
+
+#
+# 122/123: Progress: Remove file: ...
+#
+Datei wird gelöscht:\n
+
+#
+# 124/125/126: Progress: Delete Registry key ...
+#
+Registry-Key wird gelöscht:\n
+\\
+
+#
+# 127/128: DEBUG: Registry key "..." deleted.
+#
+Registry-Key "
+" gelöscht.
+#
+# 129/130/131: ERROR: Failed to remove registry key:
+#
+Registry-Key konnte nicht gelöscht werden:\n
+\\
+
+#
+# 132/133
+#
+Registry-Key konnte nicht geöffnet werden:\n
+
+#
+# 134
+#
+Profil-Verzeichnis wird bereinigt (Start).
+#
+# 135
+#
+Interner Fehler (Bug), kein Name für Verzeichniseintrag gefunden!
+#
+# 136/137
+#
+Umgebungsvariablen in String\n"
+",\nkonnten nicht expandiert werden, Puffer zu klein!
+#
+# 138/139
+#
+Subkey-Name zu lang:\n
+
+#
+# 140
+#
+Profil-Bereinigung wird wegen Fehlern nicht ausgeführt.
+#
+# 141
+#
+Profil-Verzeichnis wird bereinigt (Ende).
+#
+# 142
+#
+Nur eine der Optionen -u, -i, -a oder -d zulässig!
+#
+# 143
+#
+Mindestens ein Argument (Variablenname) muss angegeben werden!
+#
+# 144
+#
+Verzeichnis/Datei muss angegeben werden!
+#
+# 145
+#
+Administrator-Berechtigungen erforderlich!
+#
+# 146
+#
+Nur Administratoren können System-Umgebungsvariablen ändern!
diff --git a/support/dktools/dktools/de/dkwx.str b/support/dktools/dktools/de/dkwx.str
new file mode 100644
index 0000000000..cdda8a3f08
--- /dev/null
+++ b/support/dktools/dktools/de/dkwx.str
@@ -0,0 +1,45 @@
+#
+# 0: Log level: Worse than panic
+#
+Schlimmeres Problem als Panik
+#
+# 1: Log level: Panic
+#
+Panik
+#
+# 2: Log level: Fatal error
+#
+Fataler Fehler
+#
+# 3: Log level: Error
+#
+Fehler
+#
+# 4: Log level: Warning
+#
+Warnung
+#
+# 5: Log level: Information
+#
+Information
+#
+# 6: Log level: Progress message
+#
+Fortschritt
+#
+# 7: Log level: Debug message
+#
+Debug
+#
+# 8: Log level: Ignore message
+#
+Ignoriere
+#
+# 9: Error: Not enough memory!
+#
+Zu wenig Hauptspeicher!
+#
+# 10: Error: Help file not found!
+#
+Hilfe-Datei nicht gefunden!
+
diff --git a/support/dktools/dktools/de/dkwxpath.str b/support/dktools/dktools/de/dkwxpath.str
new file mode 100644
index 0000000000..a603707293
--- /dev/null
+++ b/support/dktools/dktools/de/dkwxpath.str
@@ -0,0 +1,88 @@
+#
+# 0: Program name
+#
+dkwxpath
+#
+# 1: Application group name
+#
+dkt-3
+#
+# 2: Software vendor name
+#
+Dirk Krause
+#
+# 3: Label text: Modifying PATH environment variable.
+#
+Umgebungsvariable PATH wird bearbeitet.
+#
+# 4: Window title
+#
+dktools setup
+#
+# 5: Dialog title: Failed to modify PATH variable.
+#
+PATH nicht bearbeitet!
+#
+# 6: Start of label text: Failed to modify PATH environment variable!
+#
+Die Umgebungsvariable PATH konnte nicht geändert werden!
+#
+# 7: Label text contents: Please add
+#
+Bitte fügen Sie
+#
+# 8: Label text contents: to the PATH environment variable
+#
+manuell zur Umgebungsvariable PATH hinzu
+#
+# 9: Label text contents: Please remove
+#
+Bitte entfernen Sie
+#
+# 10: Label text contents: from the PATH environment variable
+#
+aus der Umgebungsvariable PATH
+#
+# 11: Label text contents: and reboot the computer as soon as possible.
+#
+und starten Sie anschließend Ihren Computer neu.
+#
+# 12
+#
+WxBmpp - EPS-Bild
+#
+# 13
+#
+WxBmpp - PDF-Bild
+#
+# 14
+#
+WxBmpp - PDF-Objekt
+#
+# 15
+#
+WxBmpp - PDF-Dokument
+#
+# 16
+#
+WxBmpp - PS-Dokument
+#
+# 17
+#
+WinPrint - Standarddrucker
+#
+# 18
+#
+WinPrint - Drucker auswählen
+#
+# 19
+#
+Öffnen mit WxBmpp
+#
+# 20
+#
+Öffnen mit WxDkct
+#
+# 21
+#
+Prüfsummen
diff --git a/support/dktools/dktools/de/dkwxwiz.str b/support/dktools/dktools/de/dkwxwiz.str
new file mode 100644
index 0000000000..e57bf39b9a
--- /dev/null
+++ b/support/dktools/dktools/de/dkwxwiz.str
@@ -0,0 +1,66 @@
+#
+# 0: Program name.
+#
+dkwxwiz
+#
+# 1: Program group name.
+#
+dkt-3
+#
+# 2: String table file name.
+#
+dkwxwiz.str
+#
+# 3: Help file name.
+#
+dkwxwiz.txt
+#
+# 4: Copyright owner.
+#
+__CHANGE__ 001: Copyright-Eigentümer
+#
+# 5: License type.
+#
+__CHANGE__ 002: Lizenztyp
+#
+# 6 7 File base name too long!
+#
+Dateiname "
+" ist zu lang!
+#
+# 8 9 File already exists!
+#
+Datei "
+" existiert bereits!
+#
+# 10
+#
+Unbekanntes Macro in Template!
+#
+# 11
+#
+Zu wenig Kommandozeilenargumente!
+#
+# 12 13 14 15 16 17 18 19 20 21
+#
+Sie sollten die folgenden Dateien bereitstellen:
+Hilfe-Datei für Windows-Systeme: "
+Hilfe-Datei für andere Systeme: "
+Icon für Windows-Systeme: "
+Icon für andere Systeme: "
+".
+.chm
+.htb
+.ico
+.xpm
+#
+# 22 23
+#
+Text zu lang oder kein ASCII-Text: "
+"!
+#
+# 24 25
+#
+Kein C/C++ Identifier: "
+"!
+
diff --git a/support/dktools/dktools/de/dkwxwiz.txt b/support/dktools/dktools/de/dkwxwiz.txt
new file mode 100644
index 0000000000..f978764819
--- /dev/null
+++ b/support/dktools/dktools/de/dkwxwiz.txt
@@ -0,0 +1,89 @@
+
+BEZEICHNUNG
+
+ dkwxwiz - Wizard für wxWidgets+dkct basierte Projekte.
+
+ÃœBERSICHT
+
+ dkwxwiz [<Optionen>] <Programm> <Application> <Window>
+
+BESCHREIBUNG
+
+Das Programm erzeugt ein Code-Skelett für eine wxWidgets-basierte GUI-Anwendung,
+wobei die dktools-Bibliotheken und dkct im Projekt verwendet werden.
+
+Die folgenden Argumente müssen angegeben werden:
+
+* Der Name des zu erzeugenden Programmes (ohne eventuelle Endung .exe),
+ z.B. "myprog".
+
+* Der Name der von wxApp abgeleiteten Anwendungsklasse, z.B. "MyProgApp".
+
+* Der Name der Top-Level-Window-Klasse, z.B. "MyProgFrame".
+
+Alle drei Angaben müssen gültige C/C++-Identifier sein.
+
+OPTIONEN
+
+-h --help
+ Hilfetext anzeigen.
+
+-v --version
+ Versionsnummer anzeigen.
+
+-L --license-terms
+ Lizenzbedingungen anzeigen.
+
+-f --force
+ Ãœberschreiben bereits vorhandener Ausgabedateien erlauben. Vorsicht!
+
+-c <Copyright-Inhaber>
+ Copyright-Inhaber.
+
+-l <license type>
+ Lizenztyp ("bsd", "gpl", "lgpl" oder "commercial").
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+BEISPIEL
+
+Verwenden Sie
+ dkwxwiz testprog TestApp TestFrame
+in einem leeren Verzeichnis, um ein neues Projekt anzulegen.
+
+DATEIEN
+
+Die folgenden Dateien aus dem dkt-3 Resourcenverzeichnis werden benutzt:
+
+dkwxwizh.txt Template für Header-Datei *.h.
+
+dkwxwiza.txt Template für Application-Klasse *.cpt.
+
+dkwxwizf.txt Template für Top-Level-Window-Klasse *.wxc.
+
+dkwxwizc.txt Template für configure.ac für autoconf.
+
+dkwxwizm.txt Template für Makefile.in.
+
+dkwxwizx.txt Template für *.xpm-Icon.
+
+Sie können Kopien dieser Dateien in dkt-3-site bzw. dk3app-site
+platzieren und bearbeiten, z.B. um Standardwerte für Copyright-Inhaber
+und Lizenztyp festzulegen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
+AUTOR
+
+Dirk Krause
+
+LIZENZ
+
+Mit
+ dkwxwiz --license-terms
+können Sie die Lizenzbedingungen einsehen.
+
diff --git a/support/dktools/dktools/de/fig2lat.str b/support/dktools/dktools/de/fig2lat.str
new file mode 100644
index 0000000000..8b2159b193
--- /dev/null
+++ b/support/dktools/dktools/de/fig2lat.str
@@ -0,0 +1,147 @@
+#
+# 0 1: Invalid PS level preference value!
+#
+PS-Level-Preference "
+" nicht verwendbar!
+#
+# 2 Input file name too long!
+#
+Name für Eingabedatei zu lang:\n
+#
+# 3 Failed to read input file!
+#
+Lesen der Eingabedatei fehlgeschlagen!
+#
+# 4 Failed to process input file!
+#
+Verarbeitung der Eingabedatei fehlgeschlagen!
+#
+# 5 No regular file, no directory!
+#
+Keine reguläre Datei und kein Verzeichnis!
+#
+# 6 Command line options processing failed!
+#
+Auswertung der Optionen fehlgeschlagen!
+#
+# 7 + 8 Unknown driver!
+#
+Unbekannter Treiber "
+"!
+#
+# 9 + 10 Invalid tf value!
+#
+Ungültiger Wert "
+" für tf, erlaubt sind "fig" oder "similar"!
+#
+# 11 + 12 Invalid font size!
+#
+Fehlerhafte Schriftgrößenangabe "
+"!
+#
+# 13 + 14 Invalid size specification!
+#
+Fehlerhafte Größenangabe "
+" (Bereichsüberlauf)!
+#
+# 15 + 16 + 17 + 18 Value below minimum, maximum!
+#
+Der Wert "
+" liegt unter dem gefordertem Minimum "
+"!
+" liegt über dem gefordertem Maximum"
+#
+# 19 + 20 Option requires positive argument!
+#
+Die Option "
+" erfordert einen positiven Wert!
+#
+# 21 + 22 Option requires a numeric argument!
+#
+Die Option "
+" erfordert eine Wert-Angabe!
+#
+# 23 Source type already set!
+#
+Der Quell-Datei-Typ wurde bereits gesetzt!
+#
+# 24 + 25 Option requires an unsigned numeric argument!
+#
+Die Option "
+" erfordert einen vorzeichenlosen Wert!
+#
+# 26 Can not handle negative font size!
+#
+Negative Schriftgrößen sind nicht zulässig!
+#
+# 27 + 28 Illegal option/key name!
+#
+Unzulässiger Name für Option "
+"!
+#
+# 29 + 30 Option too long!
+#
+Option zu lang:\n"
+"!
+#
+# 31 Option argument too long!
+#
+Options-Argument zu lang:\n"
+#
+# 32 Option -l requires an argument!
+#
+Zur Option "-l" muss ein Treibername angegeben werden!
+#
+# 33 PS level must be 2 or 3!
+#
+Das PostScript-Level muss 2 oder 3 sein!
+#
+# 34 Minimum of arrowhead segments corrected to 2!
+#
+Arrowhead-Segmente wurden auf Minimum 2 korrigiert!
+#
+# 35 Mathematical problem (coordinates transformation)!
+#
+Mathematisches Problem bei Koordinatentransformation!
+#
+# 36 Mathematical problem (spline calculation)!
+#
+Mathematisches Problem bei Spline-Berechnung!
+#
+# 37 Arrowhead too long for spline!
+#
+Pfeilspitze an Spline zu lang!
+#
+# 38 Mathematical problem (path construction)!
+#
+Mathematisches Problem bei Pfad-Generierung!
+#
+# 39 Arrowheads in summary too long for spline!
+#
+Pfeilspitzen an Spline sind in Summe zu lang!
+#
+# 40 Failed to calculate graphics state transformation!
+#
+Transformation des Graphics State nicht ermittelbar!
+#
+# 41 Failed to add instructions to PDF graphics!
+#
+Fehler beim Hinzufügen von Graphikbefehlen zu PDF-Datei!
+#
+# 42 Skipping special text!
+#
+LaTeX Special Text wird ignoriert!
+#
+# 43 Unknown object type!
+#
+Unbekannter Objekt-Typ!
+#
+# 44 Special text found!
+#
+Datei enthält LaTeX Special Text!
+#
+# 45 46
+#
+Keine Linienbreite: "
+"!
+
diff --git a/support/dktools/dktools/de/fig2lat.txt b/support/dktools/dktools/de/fig2lat.txt
new file mode 100644
index 0000000000..dfad2d9715
--- /dev/null
+++ b/support/dktools/dktools/de/fig2lat.txt
@@ -0,0 +1,265 @@
+
+BEZEICHNUNG
+
+fig2lat - Fig to LaTeX conversion
+
+KOMMANDOZEILE
+
+ fig2lat [-l <Treiber>] [<Optionen>] [-o <Key>=<Value>]* <Datei>
+
+BESCHREIBUNG
+
+Fig2lat wandelt *.fig-Dateien (mit XFig, jFig oder WinFIG erzeugt)
+in andere Graphik-Formate, hauptsächlich für die Verwendung mit
+LaTeX/pdfLaTeX.
+
+OPTIONEN
+
+-l <Treiber>
+ Treiber, einer der nachfolgenden:
+
+ Treiber, um Fig-Dateien mit latex oder pdflatex zu verwenden:
+
+ pdf.tex Erstelle ein Paar *.tex/*.pdf. Im LaTeX-Dokument
+ schließen Sie die *.tex per \input{...} ein, diese
+ importiert dann wiederum die *.pdf-Datei.
+
+ eps.tex Erstelle ein Paar *.tex/*.eps. Im LaTeX-Dokument
+ schließen Sie die *.tex per \input{...} ein, diese
+ importiert dann wiederum die *.eps-Datei.
+
+ pgf Erstelle eine *.pgf-Datei, die Sie mit \input{...}
+ in Ihr LaTeX-Dokument einbinden können.
+
+ Treiber um Standalone-Graphiken zu erzeugen:
+
+ tex.pdf Erstelle ein Paar *.tex/*-i.pdf. Die *.tex-Datei
+ können Sie mit pdfLaTeX übersetzen, dabei entsteht
+ dann eine PDF-Datei.
+
+ tex Erstelle eine *.tex-Datei, die Sie mit pdfLaTeX
+ übersetzen können. Dabei entsteht dann eine
+ PDF-Datei.
+
+ eps Erstelle eine EPS-Datei.
+
+ svg Erstelle eine SVG-Datei.
+
+-m
+ Make-Modus: Beim Verarbeiten eines Verzeichnisses
+ wird eine Konvertierung nur gestartet, wenn keine aktuellen
+ Zieldateien vorliegen.
+
+-o Key=Value
+ Schlüssel-Wert-Paare in der Konfiguration.
+ Die folgenden Schlüssel können benutzt werden:
+
+ Allgemeine Optionen:
+
+ lw[=<Breite>] Basis für die Linienbreite.
+ Standardmäßig wird für Fig-Dateien 1/80 Zoll
+ verwendet.
+ Mit folgenden Breitenangaben kann dies
+ geändert werden:
+ <Zahl>bp Angabe in bp (PS points).
+ <Zahl>pt Angabe in pt.
+ <Zahl>in Angabe in Zoll.
+ <Zahl>cm Angabe in cm.
+ <Zahl>mm Angabe in mm.
+ lighten 1/160 Zoll.
+ auto 0.4pt * Textgröße / 10.
+
+ Text-Optionen:
+
+ tf=<string> Schriftart-Auswahl für normalen
+ (nicht-special) Text.
+ Entweder "similar" oder "fig".
+
+ ts=<size> Schriftgröße für normalen Text. Entweder
+ "none" (LaTeX-Standardschriftgröße verwenden)
+ oder Skalierungsfaktor (typischerweise
+ 0.95 ... 1.0).
+
+ bbts=[<boolean>] Text-Größe in Bounding-Box-Berechnung
+ mit berücksichtigen.
+
+ smash[=<boolean>] Anweisung \smash in LaTeX-Ausgabe benutzen.
+
+ mbox[=<boolean>] Anweisung \mbox in LaTeX-Ausgabe benutzen.
+
+ reset@font[=<boolean>] Anweisung \reset@font in LaTeX-Ausgabe.
+
+ ste[=<encoding>] Encoding für Special-Text, entweder
+ "utf-8" oder "plain".
+
+
+ X-Spline- und Bezier-Spline-Optionen:
+
+ xsss[=<number>] Anzahl der Bezier-Spline-Segmente pro
+ X-Spline-Segment. Standard: 8, Minimum: 2.
+
+
+ Pfeilspitzen-Optionen:
+
+ ahas=<number> Anzahl der X-Spline-Segmente pro
+ 90-Grad-Winkelbereich für Pfeilspitzen an
+ Kreisbögen. Standard: 4.
+
+ ahss=<integer> Anzahl der X-Spline-Segmente der Pfeilspitze
+ pro Original-Spline-Segment für Pfeilspitzen
+ an Splines. Standard: 4.
+
+ ahms=<integer> Minimale Anzahl X-Spline-Segmente an jeder
+ Pfeilspitzen-Kante. Standard: 4.
+
+ ahip=<float> Iterations-Genauigkeit für Pfeilspitzen.
+ Standard: 0.04.
+
+
+ Ausgabe-Optionen:
+
+ codi=[<number>] Anzahl Nachkommastellen in Farbangaben.
+ Standard: 3.
+
+
+ Kompatibilitäts-Optionen (Kompatibilität mit fig2dev):
+
+ cosp[=<boolean>] Kompatible Splines.
+
+ coah[=<boolean>] Kompatible Pfeilspitzen.
+
+ xsah[=<boolean>] X-Spline-Pfeilspitzen (nur ohne coah).
+
+ cols[=<boolean>] Kompatible Linientypen verwenden.
+
+ cofop[=<boolean>] Füllung für offene Graphikpfade erlauben.
+
+
+ Erzeuger der Fig-Datei:
+
+ xfig Xfig.
+
+ jfig jFig.
+
+ winfig WinFIG.
+
+
+ Treiber-spezifische Optionen (tex, tex.pdf):
+
+ dcts[=<number>] Schriftgrößenangabe in pt in der
+ Dokumentenklasse.
+
+
+ Treiber-spezifische Optionen (eps, eps.tex):
+
+ showpage[=<boolean>] Operator showpage verwenden.
+
+ level=<integer> PS-Level, 2 oder 3.
+
+
+ Treiber-spezifische Optionen (svg)
+
+ css[=<boolean>] Style-Angaben mit CSS.
+
+ group[=<boolean>] Pfeilspitzen-Objekte mit dazugehöriger Line,
+ Spline oder Kreisbogen in einer Gruppe
+ zusammenfassen.
+
+ fragment[=<boolean>] SVG-Fragment anstelle einer kompletten Datei
+ erzeugen.
+
+ fontbase[=<string>] Verzeichnis für GhostScript-Fonts als
+ TTF-Dateien angeben, "none", "local" oder
+ "web".
+
+ replacementfonts[=<boolean>] Verwendung von Ersatz-Schrift-
+ familien erlauben oder verbieten.
+
+ miterlimit[=<boolean>] Verwendung der "stroke-miterlimit" Stil-
+ Angabe erlauben oder verbieten.
+
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+DATEIEN
+
+Fig2lat benutzt die folgenden Dateien aus dem aktuellen Verzeichnis:
+
+f2lfonts.tex wird bei tex- bzw. tex.pdf-Ausgabe in der Präambel
+ benutzt. Der Dateiinhalt ersetzt die Standardanweisungen
+ für die Schriftartauswahl und -einstellung.
+
+f2lother.tex wird bei tex- bzw. tex.pdf-Ausgabe in der Präambel
+ benutzt. Der Dateiinhalt ersetzt die Standardanweisungen
+ für "sonstiges Setup".
+
+HINWEISE
+
+Die Ausgabe von fig2lat unterscheidet sich von der Ausgabe von fig2dev.
+Dies ist beabsichtigt, denn sonst hätte fig2lat keine Existenzberechtigung.
+
+* Interpolierte Splines: Fig2lat berechnet q=-0.5*s korrekt wie in [BS1995]
+ angegeben.
+
+* Pfeilspitzen: Die mit Xfig 3.2.5 eingeführten - aber nicht dokumentierten -
+ Pfeilspitzen werden untersützt. An Splines und Kreisbögen werden
+ gekrümmte Pfeilspitzen angebracht. Zum Zeichnen der Pfeilspitze wird
+ dieselbe Linienbreite verwendet wie für die Original-Linie.
+ Die Angaben zur Linienbreite der Pfeilspitze aus der Fig-Datei werden
+ ignoriert.
+
+* Text: Für Treiber mit LaTeX-Bezug (tex, tex.pdf, pdf.tex, eps.tex, pgf)
+ wird aller Text durch LaTeX/pdfLaTeX verarbeitet. Die tf-Einstellung legt
+ fest, ob für normalen Text (nicht-special) ein PS-Font oder ein LaTeX-Font
+ mit gleichen Eigenschaften verwendet wird.
+ Für special Text werden keinerlei Anweisungen zu Schriftart und Schrift-
+ größe geschrieben, somit wird die Standard-Schrift des Dokumentes
+ verwendet.
+
+* Füllmuster: Füllmuster sind als Vektor-Graphik implementiert.
+
+* Splines: X-Splines werden durch eine Folge von Bezier-Spline-Segmenten
+ realisiert, nicht durch Linienzüge.
+
+
+BEKANNTE PROBLEME
+
+* Die gekrümmten Pfeilspitzen an Kreisbögen und Splines werden durch eine
+ Folge kurzer - manchmal sehr kurzer - Bezierkurven realisiert.
+ Verschiedene Anzeigeprogramme kommen mit diesen kurzen Bezierkurven
+ unterschiedlich gut zurecht.
+ Die Pfeilspitzen-Testdatei wird in manchen Programmen richtig angezeigt,
+ in anderen Programmen fehlerhaft.
+ Sollten derartige Probleme auftreten, gibt es zwei Lösungsansätze:
+ - Für Batik 1.7 Squiggle kann die SVG-Option mit der Option
+ "miterlimit=no" vorgenommen werden. Dabei wird das sonst verwendete
+ Miterlimit 20 nicht in die Ausgabe geschrieben, Squiggle verwendet
+ dann den Standardwert 4.
+ - Kompatible Pfeilspitzen können mit der Option "coah" erzeugt werden,
+ diese geraden Pfeilspitzen werden als Polygone realisiert.
+
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+Dieses Programm ersetzt das Programm fig2vect aus früheren dktools-Versionen.
+
+COPYRIGHT UND LIZENZ
+
+Mit
+ fig2lat --license-terms
+können Sie die Lizenzbedingungen einsehen.
+
+SIEHE AUCH
+
+[BS1995] Carole Blanc, Christophe Schlick:
+ X-Splines: A Spline Model Designed for the End-User
+ Proceedings of the SIGGRAPH 1995
+
+[fig2lat] http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/htmlbook.str b/support/dktools/dktools/de/htmlbook.str
new file mode 100644
index 0000000000..7551a83305
--- /dev/null
+++ b/support/dktools/dktools/de/htmlbook.str
@@ -0,0 +1,313 @@
+#
+# 0: Title for impressum page
+#
+Impressum
+#
+# 1: Link title
+#
+Zur Startseite:
+#
+# 2: Link title
+#
+Auf der Startseite.
+#
+# 3: Link title
+#
+Zur vorherigen Seite:
+#
+# 4: Link title
+#
+Auf der ersten Seite.
+#
+# 5: Link title
+#
+Zur nächsten Seite:
+#
+# 6: Link title
+#
+Auf der letzten Seite.
+#
+# 7: Link title
+#
+Zum Stichwort-Index.
+#
+# 8: Syntax error, missing =
+#
+Syntax-Fehler, "=" fehlt!
+#
+# 9: Syntax error, empty value!
+#
+Syntax-Fehler, kein Wert angegeben!
+#
+# 10: Syntax error, only allowed in options section
+#
+Syntax-Fehler, Einstellung nur im options-Abschnitt möglich!
+#
+# 11: Syntax error, illegal character set
+#
+Syntax-Fehler, Zeichensatz muss "ascii" oder "utf-8" sein!
+#
+# 12: Syntax error, no path specification in file name allowed!
+#
+Syntax-Fehler, Pfadangabe in Dateinamen unzulässig!
+#
+# 13: Missing project file name
+#
+Kein Name für Projekt-Datei!
+#
+# 14: Too many project files specified, just one allowed!
+#
+Nur eine Projekt-Datei erlaubt!
+#
+# 15: No parent candidate found!
+#
+Kein Elternknoten gefunden (wahrscheinlich ein Bug)!
+#
+# 16
+#
+Syntax-Fehler, Name für Abschnitt fehlt!
+#
+# 17
+#
+Syntax-Fehler, schließende eckige Klammer fehlt!
+#
+# 18
+#
+Syntax-Fehler, unzulässiger Abschnitts-Name!
+#
+# 19
+#
+Kein Template angegeben!
+#
+# 20
+#
+Dateiname nicht gefunden (wahrscheinlich ein Bug)!
+#
+# 21 22
+#
+String "
+" enhält Zeichen, die in URL nicht verwendbar sind!
+#
+# 23 Header External links
+#
+Externe Links
+#
+# 24 Error: No source file
+#
+Keine Quelldatei angegeben!
+#
+# 25 26 Error: Illegal menu style
+#
+Syntax-Fehler, unzulässige Style-Angabe "
+"!
+#
+# 27 ERROR: Illegal key
+#
+Syntax-Fehler, unzulässiges Attribut: "
+#
+# 28 ERROR: Contents is allowed only in templates!
+#
+Syntax-Fehler, %%contents%% ist nur in Templates zulässig!
+#
+# 29 ERROR: Illegal special command
+#
+Syntax-Fehler, unbekanntes Spezial-Kommando "
+#
+# 30 ERROR: Parsing failed
+#
+Syntax-Fehler, Parsen des Spezial-Kommandos schlug fehl nahe:\n"
+#
+# 31 ERROR: Line too long
+#
+Zeile zu lang:\n"
+#
+# 32
+#
+Syntax-Fehler, Kopf-Daten fehlen!
+#
+# 33
+#
+Syntax-Fehler, schließendes @ fehlt!
+#
+# 34
+#
+Syntax-Fehler, Text nach @ fehlt!
+#
+# 35
+#
+Syntax-Fehler, Ãœberschriften-Level fehlt!
+#
+# 36
+#
+Syntax-Fehler, kein Text nach führendem Punkt in Zeile!
+#
+# 37
+#
+Ãœberschrift-Level korrigiert zu Maximalwert 6!
+#
+# 38
+#
+Syntax-Fehler, url kann nur in options-Abschnitt gesetzt werden!
+#
+# 39
+#
+Ausführung eines Spezial-Kommandos fehlgeschlagen!
+#
+# 40
+#
+Syntax-Fehler, Einlesen der Argumente fehlgeschlagen!
+#
+# 41
+#
+Syntax-Fehler, zu viele Menüeinträge angegeben!
+#
+# 42
+#
+Syntax-Fehler, kein Menüeintrag angegeben!
+#
+# 43 44
+#
+Syntax-Fehler, unzulässige Option: "
+"!
+#
+# 45
+#
+Inhaltsverzeichnis
+#
+# 46
+#
+Stichwort-Index
+#
+# 47
+#
+Kein Standard-Thema gefunden!
+#
+# 48
+#
+Das "text"-Attribut fehlt!
+#
+# 49
+#
+Das "file"-Attribut fehlt!
+#
+# 50
+#
+Spezial-Kommando "index" ist in Template nicht zulässig!
+#
+# 51
+#
+Kein Ziel für den Link gefunden!
+#
+# 52 53
+#
+Kein Text für Knoten:\n"
+"!
+#
+# 54 55 56 57
+#
+Aktuelle Position
+Inhaltsverzeichnis für aktuelle Seite
+Externe Links
+Inhaltsverzeichnis
+#
+# 58 59
+#
+Groß
+Bild
+#
+# 60
+#
+Menüeintrag
+#
+# 61 Text "Impressum" in head range of HTML page, link tag
+#
+Impressum
+#
+# 62 Error message, unfinished command!
+#
+Nicht abgeschlossenes "%%"-Kommando!
+#
+# 63 64 Error: Not a backslash sequence
+#
+Keine gültige Backslash-Sequenz: "
+"!
+#
+# 65
+#
+Bild
+#
+# 66
+#
+Einstellung "div" wird durch "table" überschrieben!
+#
+# 67 68
+#
+Kein Ausgabe-Verzeichnis konfiguriert!
+Kein Ausgabe-Script konfiguriert!
+#
+# 69 ... 83
+#
+Bisheriger Wert der Einstellung "author" überschrieben.
+Bisheriger Wert der Einstellung "title" überschrieben.
+Bisheriger Wert der Einstellung "output directory" überschrieben.
+Bisheriger Wert der Einstellung "output script" überschrieben.
+Bisheriger Wert der Einstellung "template" überschrieben.
+Bisheriger Wert der Einstellung "style" überschrieben.
+Bisheriger Wert der Einstellung "short" überschrieben.
+Bisheriger Wert der Einstellung "file" überschrieben.
+Bisheriger Wert der Einstellung "suffix" überschrieben.
+Bisheriger Wert der Einstellung "icon toc" überschrieben.
+Bisheriger Wert der Einstellung "icon previous" überschrieben.
+Bisheriger Wert der Einstellung "icon next" überschrieben.
+Bisheriger Wert der Einstellung "icon index" überschrieben.
+Bisheriger Wert der Einstellung "shortcut icon" überschrieben.
+Bisheriger Wert der Einstellung "var" überschrieben.
+#
+# 84 85
+#
+Datei nicht vorhanden: "
+"!
+#
+# 86
+#
+Bisheriger Wert der Einstellung "file" überschrieben.
+#
+# 87
+#
+Startseite
+#
+# 88
+#
+Zu viele Code-Zeilen, nur 999 am Stück erlaubt!
+#
+# 89 90
+#
+Syntax-Fehler, Unerwarteter %%hint%%-Key \"
+" ignoriert!
+#
+# 91
+#
+Syntax-Fehler, Text für %%hint%% fehlt!
+#
+# 92
+#
+Syntax-Fehler, Titel für %%hint%% fehlt!
+#
+# 93 94
+#
+Zum Inhaltsverzeichnis:
+Auf der Startseite.
+#
+# 95
+#
+Bisheriger Wert der Einstellung "icon home" überschrieben.
+#
+# 96
+#
+Syntax error, Wert fehlt!
+#
+# 97 98 99
+#
+Bisheriger Wert der Einstellung ``meta description'' überschrieben!
+Bisheriger Wert der Einstellung ``meta keywords'' überschrieben!
+Bisheriger Wert der Einstellung ``location'' überschrieben!
diff --git a/support/dktools/dktools/de/htmlbook.txt b/support/dktools/dktools/de/htmlbook.txt
new file mode 100644
index 0000000000..ad94361eef
--- /dev/null
+++ b/support/dktools/dktools/de/htmlbook.txt
@@ -0,0 +1,327 @@
+
+BEZEICHNUNG
+
+ htmlbook - HTML-Dateien für ein Buch-Äquivalent
+
+ÃœBERSICHT
+
+ htmlbook [<Optionen>] <Projekt>
+
+BESCHREIBUNG
+
+Das Programm erzeugt HTML-Dateien, die Struktur des erzeugten Webangebotes
+ähnelt einem Buch. Der Autor kann sich auf den Inhalt konzentrieren,
+das Programm htmlbook übernimmt die Erstellung von Navigationsmenü,
+Navigationsblock mit Icons, Inhaltsverzeichnis und Stichwortverzeichnis.
+
+OPTIONEN
+
+-i <encoding>
+--input-encoding=<encoding>
+ Erwartetes Eingabe-Encoding für die
+ Projektdatei.
+
+-o Name[,Name...]
+ Optionale Abschnitte der Projektdatei
+ aktivieren.
+
+-s Name=Wert
+--set=Name=Wert
+ Variable setzen, überschreibt
+ Variablen, die im options-Abschnitt der
+ Projektdatei gesetzt wurden.
+
+-h
+--help
+ Hilfetext anzeigen.
+
+-v
+--version
+ Versionsnummer anzeigen.
+
+-L
+--license
+ Lizenzbedingungen anzeigen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+DATEIEN
+
+Die Projektdatei ist der Startpunkt von htmlbook. Sie gibt an, welche
+Textdateien unter Zuhilfename welcher Templates benutzt werden.
+
+Projektdatei
+------------
+Die Projektdatei besteht aus den Abschnitten "[options]", "[files]"
+und "[contents]".
+Weiterhin sind optionale Abschnitte der Form "[options:<Name>]",
+"[files:<Name>]" und "[contents:<Name>]" möglich, diese Abschnitt werden
+nur dann verarbeitet, wenn sie beim Programmstart mit der Option -o
+aktiviert wurden. Auf Windows-Systemen werden optionale Abschnitte mit dem
+Namen "windows" immer verarbeitet, auf Nicht-Windows-Systemen
+optionale Abschnitte mit dem Namen "non-windows".
+
+Der options-Abschnitt enthält Zeilen der Form "Schlüssel=Wert", folgende
+Schlüssel können verwendet werden:
+
+ output directory Verzeichnis für die Ausgabedateien, muss leer
+ sein, wird bei jedem Aufruf des output script
+ gelöscht und neu angelegt.
+
+ output script Ausgabescript, legt das Ausgabeverzeichnis neu
+ an und kopiert die Daten dorthin.
+
+ title Titel-Angabe.
+
+ url URL unter der das Webangebot online steht.
+
+ index file Dateiname für Text auf Startseite.
+
+ html charset Zeichensatz für HTML-Dateien, "us-ascii",
+ "utf-8" oder "ascii".
+
+ template Dateiname für das Standard-Template ("web.hbt").
+
+ style Dateiname für die Standard-Style-Datei
+ ("style.css").
+
+ page toc Flag: Seiteninternes Inhaltsverzeichnis anlegen.
+
+ create toc Flag: Inhaltsverzeichnis anlegen (über alle
+ Seiten).
+
+ create index Flag: Stichwortverzeichnis (Index) anlegen.
+
+ section numbers in index Flag: Abschnittsnummer in Index anzeigen.
+
+ replace ampersand Flag: Zeichen & ersetzen (Standard: aus).
+
+ tidy Flag: tidy zur Kontrolle und Korrektur
+ verwenden.
+
+ ln Flag: ln anstelle von cp verwenden.
+
+ author Autor-Angabe.
+
+ location Ortsangabe.
+
+ write position Flag: Positionsangabe schreiben.
+
+ section numbers in position Flag: Abschnittsnummer in Positionsangabe.
+
+ shortcut icon URL zu favicon.
+
+ icon toc Dateinamen für Icons in Navigationsleiste
+ icon previous (Inhaltsverzeichnis, vorheriger Abschnitt,
+ icon next nächster Abschnitt, Index).
+ icon index
+
+ impressum link URL zu Impressum.
+
+ impressum page Text-Knoten für Impressum.
+ Es kann entweder ein Impressum-Link oder ein
+ Impressum-Knoten verwendet werden.
+
+ chm Flag: HTML erzeugen, aus dem später eine
+ CHM-Datei erstellt wird.
+
+ chm language Sprachangabe für CHM-Projekt
+ (Standard: "0x409 English (USA)").
+
+ js file Dateiname für JavaScript-Datei.
+
+ inherit js Flag: JavaScript-Dateien von Eltern... erben.
+
+ var Variable setzen (das erste Textwort auf der
+ rechten Seite ist der Variablenname, der Rest
+ der Zeile ist der Wert der Variablen).
+
+Der Abschnitt "[files]" listet die Namen zusätzlich zu kopierender
+Dateien, eine per Zeile.
+
+Der Abschnitt "[contents]" enthält die Baumstruktur für die Navigation.
+Jeder Unterabschnitt für einen Knoten beginnt mit dem Titel.
+Die Baumstruktur ergibt sich aus den Einrückungen. Gleich weit eingerückte
+Titel bezeichnen benachbarte Knoten innerhalb derselben Kollektion.
+Der Elternknoten eines jeden Knotens ist der letzte oberhalb befindliche
+Knoten, der weniger weit eingerückt ist.
+
+Auf einen Knoten-Titel können ein oder mehrere Zeilen folgen, die mit
+@ beginnen. Diese Zeilen enthalten Konfigurationsangaben zum Knoten:
+
+ file = Datei Dateiname der Textdatei.
+ input encoding = Encoding Encoding, falls kein BOM in Eingabedatei.
+ suffix = String Dateinamen-Endung für Ausgabedatei.
+ short = Kurztitel Kurzfassung des Titels für Navigationsmenü.
+
+Weiterhin sind die options-Angaben "html charset", "template", "style",
+"page toc", "write position", "replace ampersand", "tidy", "ln", "author",
+"location", "js file", "inherit js", "var", "icon toc", "icon previous",
+"icon next", "icon index" und "shortcut icon" erlaubt.
+
+Blätter (Knoten ohne weitere Unterknoten) müssen eine Angabe zur
+Textdatei haben, für andere Knoten ist dies optional.
+
+Template
+--------
+Das Template gibt an, was zwischen den Tags <BODY> und </BODY> steht.
+Über Spezial-Kommandos der Form %%Kommando%% können u.a. der Text eingebunden
+werden, das Navigationsmenü bzw Navigationsblöcke eingefügt werden.
+Folgende Spezial-Kommandos können verwendet werden:
+
+ %%contents%% fügt den Inhalt der Textdatei an dieser
+ Stelle ein.
+
+ %%title%% fügt den Titel des aktuellen Dokumentes ein.
+
+ %%img <Optionen>%% fügt ein Bild ein. Folgende Optionen
+ können verwendet werden:
+ div[=Bool] div-Tag um img-Tag
+ centered[=Bool] Bild zentriert zeigen, nicht linksbündig
+ src=Datei Dateiname für Bilddatei
+ alt="Text" Beschreibungstext
+ title[="Text"] Titel (Standard: alt)
+ caption[="Text"] Bildunterschrift (aktiviert div)
+ longdesc=Datei URL der ausführlichen Bildbeschreibung
+ border=Breite Bildrahmenbreite
+ height=Höhe Bildhöhe
+ width=Breite Bildbreite
+ svg=Datei URL der Vektorgraphik (SVG-Format)
+ svgwh[=Bool] Für SVG Abmessungen aus PNG/JPEG nutzen
+ object[=Bool] SVG-Objekt erzeugen
+ pdf=Datei URL der Vektorgraphik (PDF-Format)
+ larger=Datei URL einer hochauflösenden Bildvariante
+ ismap[=Bool] Flag: Bild ist eine Map
+ usemap=Datei URL der Map
+ name=name Name für das Bild
+ id=ID ID für CSS-Styling
+ class=Klasse Klasse für CSS-Styling
+ align=Ausrichtung Ausrichtung des Bildes
+ vspace=Abstand Vertikaler Abstand
+ hspace=Abstand Horizontaler Abstand
+ download[=Bool] Download-Links für Vektorgraphiken erzeugen
+ cache Bildgröße in Cache zwischenspeichern für
+ mehrmalige Verwendung desselben Bildes.
+ Automatisch aktiv, wenn %%img%% in Template
+ verwendet wird.
+
+ %%menu <Optionen>%% fügt das Navigationsmenü ein.
+ Folgende Optionen können verwendet werden:
+ style=Stil Menü-Stil, "reverse" (Standard), "full",
+ "current" oder "top".
+ sub[=Bool] Flag: Kind-Knoten der aktuellen Seite anzeigen.
+
+ %%navigation <Optionen>%% fügt einen Navigationsblock mit anklickbaren
+ Navigationsicons ein. Folgende Optionen
+ können verwendet werden:
+ itop=Datei Icon für Inhaltsverzeichnis ("toc.png").
+ iprev=Datei Icon für vorherigen Abschnitt ("prev.png").
+ inext=Datei Icon für nächsten Abschnitt ("next.png").
+ ikind=Datei Icon für Stichwortverzeichnis ("index.png").
+
+ %%author%% fügt die Angabe zum Autor ein.
+
+ %%location%% fügt die Angabe zum Ort ein.
+
+ %%date <Optionen>%% fügt das aktuelle Datum ein.
+ Folgende Optionen können verwendet werden:
+ style=Stil Datums-Stil (derzeit nur "german" unterstützt).
+
+ %%var <Name> <Optionen>%% fügt den Wert der angegebenen Variable ein.
+ Folgende Optionen können verwendet werden:
+ url[=Bool] Der Wert wird in einer Codierung passend
+ für URLs ausgegeben.
+
+ %%code <Optionen>%% schaltet das Code-Verhalten um.
+ Folgende Optionen können verwendet werden:
+ enable[=Bool] schaltet Code-Verarbeitung ein.
+ on[=Bool] schaltet Code-Verarbeitung ein.
+ disable[=Bool] schaltet Code-Verarbeitung aus.
+ off[=Bool] schaltet Code-Verarbeitung aus.
+ toggle schaltet Code-Verarbeitung um.
+
+ %%a <Optionen>%% fügt einen Link ein.
+ Folgende Optionen können verwendet werden:
+ href=URL Ziel-URL des Links.
+ name=Name Anker-Name (entweder href oder name erlaubt).
+ text="Text" Link-Text (Standard: href-Angabe).
+ title="Text" Link-Titel, wenn Maus über Link.
+ target=Ziel Zielfenster oder -frame.
+ type=Typ MIME-Typ.
+ external[=Bool] Flag: Externer Link, überschreibt die
+ automatische Erkennung.
+ id=ID ID für CSS-Styling.
+ class=Klasse Klasse für CSS-Styling.
+ style=Stilangabe Direkte Stil-Angaben.
+ hreflang=Sprache Sprache für die href-Angabe.
+ charset=Zeichensatz Zeichensatz des Links.
+ onblur=Script Script wenn Link den Fokus verliert.
+ onfocus=Script Script, wenn Link den Fokus erhält.
+ accesskey=Key Hotkey für den Link.
+ tabindex=Index Tabulator-Reihenfolge durch Zahlenangabe.
+ shape=Form Verweis-sensitiver Bereich bei Objekten.
+ coords=Koordinaten Verweis-sensitiver Bereich bei Objekten.
+ rel=Relation Vorwärts-Verknüpfung.
+ rev=Revision Rückwärts-Verknüpfung.
+
+ %%menuentry <Optionen>%% fügt die Darstellung eines Menüeintrages ein.
+ Folgende Optionen können verwendet werden:
+ item="Text" Mehrfach verwendbar bei hierarchischen
+ Menüs.
+
+ %%sourcefile <Optionen>%% stellt eine Datei in <PRE></PRE>-Umgebung
+ dar und bietet einen Download-Link an.
+ Folgende Optionen können verwendet werden:
+ file=Datei Darzustellende Datei, Pflichtangabe.
+ type=Typ MIME-Typ der Datei.
+ title="Text" Titel für Link.
+
+Textdatei
+---------
+Textdateien enthalten den eigentlichen Seiteninhalt.
+Zur Strukturierung können Überschriften der Form
+ .1 @name@ Ãœberschrift
+verwendet werden mit den Tiefen 1, 2, 3, 4 und 5. Aus diesen Tiefenangaben
+wird dann <h2>...<h6> erzeugt.
+Die Namensangabe ist optional. Ist sie vorhanden, wird ein mit Namen
+versehener Anker
+ <a name="name"></a>
+vor der Ãœberschrift angelegt. Ohne die Namensangabe wird automatisch ein
+Anker-Name gebildet.
+
+Text-Dateien können ebenfalls die unter "Template" aufgeführten
+Spezial-Kommandos enthalten, mit Ausnahme von %%contents%%. Zusätzlich
+ist in Textdateien noch das folgende Spezialkommando erlaubt:
+
+ %%index <Optionen>%% fügt einen Eintrag zum Stichwortverzeichnis
+ hinzu. Folgende Optionen sind möglich:
+ text="Text" Text (Pflichtangabe).
+ name=Name Anker-Name (optional).
+ reference[=Bool] Flag: Index-Eintrag bezieht sich auf einen
+ bereits vorhandenen Anker (z.B. eine
+ mit Namen versehene Ãœberschrift oder einen
+ explizit gesetzten Anker).
+
+HINWEISE
+
+Alle Textdateien, Templates, Style-Dateien und Bilder müssen lokale
+Dateien im aktuellen Verzeichnis sein.
+
+SIEHE AUCH
+
+ http://dktools.sourceforge.net
+
+AUTOR
+
+ Dirk Krause
+
+LIZENZ
+
+Mit dem Kommando
+
+ htmlbook -L
+
+werden die Lizenzbedingungen angezeigt.
+
diff --git a/support/dktools/dktools/de/itadmin.str b/support/dktools/dktools/de/itadmin.str
new file mode 100644
index 0000000000..3c4ea48e3f
--- /dev/null
+++ b/support/dktools/dktools/de/itadmin.str
@@ -0,0 +1,961 @@
+#
+# 0: Title for network documentation
+#
+Netzwerk-Dokumentation
+#
+# 1: Subject for network documentation
+#
+Netzwerk-Dokumentation
+#
+# 2: LaTeX packages for localization
+#
+\\usepackage{ngerman}
+#
+# 3: Hosts
+#
+Hosts
+#
+# 4: Other hosts
+#
+Andere Hosts
+#
+# 5: Overview
+#
+Ãœbersicht
+#
+# 6: Purpose:
+#
+Verwendungszweck:
+#
+# 7: Inventory ID:
+#
+Inventar-Nr.:
+#
+# 8: Serial no:
+#
+Seriennr.:
+#
+# 9: not specified (unknown)
+#
+nicht bekannt
+#
+# 10: Main user: (person responsible for host)
+#
+Systemverantwortlicher:
+#
+# 11: Place (building and room)
+#
+Aufstellungsort:
+#
+# 12: Network
+#
+Netzwerk
+#
+# 13: IP address
+#
+IP-Adresse:
+#
+# 14: DNS domain
+#
+DNS-Domäne:
+#
+# 15: MAC address
+#
+MAC-Adresse:
+#
+# 16: Ethernet socket (patch no)
+#
+Datendose:
+#
+# 17: DHCP class
+#
+DHCP-Klasse:
+#
+# 18: DHCP group
+#
+DHCP-Gruppe:
+#
+# 19: Netgroups
+#
+Netgroups
+#
+# 20: Notice, this is an address from a DHCP pool
+#
+IP-Adresse aus DHCP-Pool, dynamisch zugewiesen.
+#
+# 21: Short section header BYOD + DHCP
+#
+BYOD DHCP
+#
+# 22: Section header BYOD + DHCP
+#
+Privatgeräte, für DHCP zugelassen
+#
+# 23:
+#
+Dies ist ein Privatgerät ("`bring your own device"'), nicht Eigentum der
+#
+# 24:
+#
+Organisation bzw. Organisationseinheit.
+#
+# 25:
+#
+Dieser Computer gehört nicht zum Verantwortungsbereich der Organisationseinheit.
+#
+# 26:
+#
+Er ist in Konfigurationsdateien und in der Netzwerkdokumentation aufgeführt,
+#
+# 27:
+#
+weil Computer der Organisationseinheit mit diesem Computer kommunizieren.
+#
+# 28:
+#
+IP-Adresse, die dynamisch verschiedenen Computern zugewiesen wird.
+#
+# 29: Parent groups
+#
+Obergruppen
+#
+# 30: Subgroups
+#
+Untergruppen
+#
+# 31: Additional network interface
+#
+Zusätzliches Netzwerk-Interface an einem Computer.
+#
+# 32: Member hosts for netgroups
+#
+Mitglieder-Hosts
+#
+# 33: DHCP pools
+#
+DHCP-Pools
+#
+# 34: Start address
+#
+Start-Adresse:
+#
+# 35: End address
+#
+End-Adresse:
+#
+# 36: Allow unknown clients
+#
+Unbekannte Clients zugelassen:
+#
+# 37: Deny unknown clients
+#
+Unbekannte Clients verboten:
+#
+# 38: Allow members of group
+#
+Zugelassene DHCP-Klasse
+#
+# 39: yes
+#
+ja
+#
+# 40: no
+#
+nein
+#
+# 41: DHCP classes
+#
+DHCP-Klassen
+#
+# 42: Ethernet connectors
+#
+Datendosen
+#
+# 43: Connector
+#
+Datendose
+#
+# 44: Room
+#
+Raum
+#
+# 45: VLAN
+#
+VLAN
+#
+# 46: Speed
+#
+Geschwindigkeit
+#
+# 47: Hub port
+#
+Hub-Port
+#
+# 48: Available licenses
+#
+Verfügbare Lizenzen
+#
+# 49/50: Message to explain section contents
+#
+Die hier aufgeführten Lizenzen wurden erworben, aber (bisher) noch keinem
+Benutzer oder Computer zugeordnet.
+#
+# 51: LaTeX text for pdftitle
+#
+Lizenz-Report
+#
+# 52: LaTeX text for pdfsubject
+#
+Lizenzen
+#
+# 53: Default license type: Single computer license
+#
+Einzelplatz-Lizenz
+#
+# 54: LaTeX text: Purchase process ID
+#
+Beschaffungs-Vorgang:
+#
+# 55: LaTeX text: Delivery date
+#
+Liefer-Datum:
+#
+# 56: LaTeX text: Delivery note ID (Lieferschein-Nr)
+#
+Lieferschein-Nr.:
+#
+# 57: LaTeX text: Invoice date
+#
+Rechnungs-Datum:
+#
+# 58: LaTeX text: Invoice ID (Rechnungs-Nr)
+#
+Rechnungs-Nr.:
+#
+# 59: LaTeX text: Complete license list
+#
+Komplette Lizenz-Liste
+#
+# 60: LaTeX text: Host unknown
+#
+Computer nicht bekannt
+#
+# 61: LaTeX text: Assignment to host not specified.
+#
+Zuordnung zu Computer nicht bekannt
+#
+# 62: LaTeX text: Other people's hosts
+#
+Fremde Computer
+#
+# 63: LaTeX text: Licenses used on other people's hosts
+#
+Lizenzen, die auf fremden Computern genutzt werden
+#
+# 64: LaTeX text
+#
+Die hier aufgeführten Lizenzen wurden dem Nutzer zugewiesen.
+#
+# 65: LaTeX text
+#
+Die Angabe, auf welchem Computer die Lizenzen genutzt werden, ist
+#
+# 66: LaTeX text
+#
+(noch) nicht erfolgt.
+#
+# 67: LaTeX text
+#
+Die hier aufgeführten Lizenzen wurden dem Nutzer zugewiesen.
+#
+# 68: LaTeX text
+#
+Zur Zeit werden die Lizenzen auf Computern im Verantwortungsbereich
+#
+# 69: LaTeX text
+#
+anderer Benutzer verwendet.
+#
+# 70: LaTeX text
+#
+Hinweis:
+#
+# 71: LaTeX text
+#
+Diese Lizenzen werden hier im Lizenzreport zweimal aufgeführt:
+#
+# 72: LaTeX text
+#
+Einmal hier und einmal in dem Abschnitt für den betreffenden Computer.
+#
+# 73: LaTeX text
+#
+Im Abschnitt für den betreffenden Computer sind diese Lizenzen dadurch
+#
+# 74: LaTeX text
+#
+kenntlich gemacht, dass der Name des Lizenzinhabers in Kursivschrift im
+#
+# 75: LaTeX text
+#
+Lizenzeintrag zusätzlich zu den dort normalerweise vorhandenen Angaben erfolgt.
+#
+# 76: String separator in date, - for english, . for german
+#
+.
+#
+# 77: Progress message: Expanding netgroup dependencies.
+#
+Netgroup-Abhängigkeiten werden untersucht.
+#
+# 78: Progress message: Writing hosts file.
+#
+Datei "hosts" wird geschrieben.
+#
+# 79: Progress message: Writing hosts.ldif file.
+#
+Datei "hosts.ldif" wird geschrieben.
+#
+# 80: Progress message: Writing ethers files.
+#
+Datei "ethers" wird geschrieben.
+#
+# 81: Progress message: Writing ethers.ldif file.
+#
+Datei "ethers.ldif" wird geschrieben.
+#
+# 82: Progress message: Writing netgroup.ldif file.
+#
+Datei "netgroup.ldif" wird geschrieben.
+#
+# 83: Progress message: Writing dhcpd.conf file.
+#
+Datei "dhcpd.conf" wird geschrieben.
+#
+# 84: Progress message: Writing netdocu.tex file.
+#
+Datei "netdocu.tex" wird geschrieben.
+#
+# 85: Progress message: Writing licenses.tex file.
+#
+Datei "licenses.tex" wird geschrieben.
+#
+# 86: Progress message: Finished writing output files.
+#
+Die Ausgabedateien wurden erzeugt.
+#
+# 87: Progress message: Reading users table.
+#
+Benutzer-Tabelle wird gelesen.
+#
+# 88: Progress message: Reading buildings table.
+#
+Gebäude-Tabelle wird gelesen.
+#
+# 89: Progress message: Reading network speed types table.
+#
+Geschwindigkeits-Einstellungen-Tabelle wird gelesen.
+#
+# 90: Progress message: Reading VLANs table.
+#
+VLAN-Tabelle wird gelesen.
+#
+# 91: Progress message: Reading ethernet connectors table.
+#
+Datendosen-Tabelle wird gelesen.
+#
+# 92: Progress message: Reading netgroups table.
+#
+Netgroups-Tabelle wird gelesen.
+#
+# 93: Progress message: Reading netgroup dependencies table.
+#
+Netgroup-Abhängigkeits-Tabelle wird gelesen.
+#
+# 94: Progress message: Reading networks table.
+#
+Netzwerk-Tabelle wird gelesen.
+#
+# 95: Progress message: Reading DHCP classes table.
+#
+DHCP-Klassen-Tabelle wird gelesen.
+#
+# 96: Progress message: Reading DHCP groups table.
+#
+DHCP-Gruppen-Tabelle wird gelesen.
+#
+# 97: Progress message: Reading DHCP pools table.
+#
+DHCP-Pool-Tabelle wird gelesen.
+#
+# 98: Progress message: Reading hosts table.
+#
+Computer-Tabelle wird gelesen.
+#
+# 99: Progress message: Reading host name aliases table.
+#
+Host-Aliases-Tabelle wird gelesen.
+#
+# 100: Progress message: Reading DHCP options table.
+#
+DHCP-Optionen-Tabelle wird gelesen.
+#
+# 101: Progress message: Reading software manufacturers table.
+#
+Softwarehersteller-Tabelle wird gelesen.
+#
+# 102: Progress message: Reading software products table.
+#
+Softwareprodukte-Tabelle wird gelesen.
+#
+# 103: Progress message: Reading license types table.
+#
+Lizenztyp-Tabelle wird gelesen.
+#
+# 104: Progress message: Reading licenses table.
+#
+Lizenz-Tabelle wird gelesen.
+#
+# 105: Progress message: Finished reading input from database.
+#
+Die Daten wurden aus der Datenbank eingelesen.
+#
+# 106/107: ERROR: Not a boolean value "..."!
+#
+Kein boolscher Wert: "
+"!
+#
+# 108/109: ERROR: Configuration text "..." too long!
+#
+Konfigurationswert "
+" zu lang!
+#
+# 110/111: ERROR: No such database type: "..."!
+#
+Unzulässiger Datenbank-Typ: "
+"!
+#
+# 112: ERROR: A value text is required!
+#
+Textangabe erforderlich!
+#
+# 113/114: ERROR: Unknown configuration option "..."!
+#
+Unzulässige Konfigurationsoption "
+"!
+#
+# 115: ERROR: Syntax error - "=" and value required!
+#
+Syntax-Fehler: Wertangabe fehlt!
+#
+# 116: ERROR: Input line too long!
+#
+Ãœberlange Zeile gefunden!
+#
+# 117: ERROR: Missing end of section name!
+#
+Abschnittsname wird nicht beendet!
+#
+# 118/119: ERROR: File name contains wildcards, this is not allowed!
+#
+Der Dateiname "
+"\nenthält Leerzeichen, dies ist nicht erlaubt!
+#
+# 120/121: WARNING: File name "..." is not an absolute path name!
+#
+Der Dateiname "
+"\nist kein absoluter Dateiname!
+#
+# 122: ERROR: Missing database host name!
+#
+Der Hostname für die Datenbank fehlt!
+#
+# 123: ERROR: Missing database name!
+#
+Der Datenbank-Name fehlt!
+#
+# 124: WARNING: Missing DHCP VLAN name!
+#
+Der VLAN-Name für DHCP fehlt!
+#
+# 125: ERROR: Missing organization name!
+#
+Der Organisationsname fehlt!
+#
+# 126: ERROR: Missing organizational unit name!
+#
+Der Name für die Organisationseinheit fehlt!
+#
+# 127: ERROR: Missing administrator name!
+#
+Der Name des Administrators fehlt!
+#
+# 128: ERROR: Missing database credentials file name!
+#
+Der Dateiname für Datenbank-Nutzernamen und -passwort fehlt!
+#
+# 129: ERROR: Missing database user name!
+#
+Der Nutzername für die Datenbank fehlt!
+#
+# 130: ERROR: Missing database user password!
+#
+Das Passwort für die Datenbank fehlt!
+#
+# 131: ERROR: No configuration files found!
+#
+Keine Konfigurationsdatei "itadmin.conf" gefunden!
+#
+# 132: ERROR: Configuration problems!
+#
+Konfigurationsproblem(e),\nbitte die Datei(en) itadmin.conf überprüfen!
+#
+# 133: ERROR: Unsupported database type!
+#
+Unzulässiger Datenbank-Typ!
+#
+# 134: ERROR start: DHCP pool "
+#
+DHCP-Pool "
+#
+# 135: ERROR:
+#
+": Inkonsistentes Setup\nDer Zugriff für unbekannte Hosts kann enweder verboten oder erlaubt werden!
+#
+# 136: ERROR start DHCP class "
+#
+DHCP-Klasse "
+#
+# 137: ERROR: DHCP class assigned to pools in different networks!
+#
+"\nwurde DHCP-Pools in unterschiedlichen Netzwerken zugewiesen!
+#
+# 138: ERROR: DHCP pool "...": Missing allowed DHCP class name!
+#
+":\nDer Name der zugelassenen DHCP-Klasse fehlt!
+#
+# 139/140: ERROR: No such VLAN!
+#
+VLAN "
+" nicht vorhanden!
+#
+# 141: ERROR: Failed to obtain results list!
+#
+Ergebnis-Liste für Datenbank-Abfrage konnte nicht erstellt werden!
+#
+# 142: ERROR: Failed to query database!
+#
+Datenbank-Abfrage fehlgeschlagen!
+#
+# 143: ERROR: Primary key is not numeric!
+#
+Tabelle "licenses", Eintrag
+#
+# 144: ERROR: Primary key is not numeric!
+#
+\nPrimärschlüssel ist nicht numerisch!
+#
+# 145: ERROR: Missing primary key!
+#
+\nKein Primärschlüssel vorhanden!
+#
+# 146, 147, 148: License type "...": Not a number "..."!
+#
+Lizenz-Typ "
+":\nAnstatt "
+" wird eine Zahlenangabe erwartet!
+#
+# 149/150: ERROR: Tabel swm record ... Missing primary key!
+#
+Tabelle "swmanufacturers" Eintrag
+\nKein Primärschlüssel vorhanden!
+#
+# 151: ERROR start: Table "dhcpoptions" record ...
+#
+Tabelle "dhcpoptions" Eintrag
+#
+# 152: ERROR: Primary key is not numeric!
+#
+\nPrimärschlüssel ist nicht numerisch!
+#
+# 153: ERROR: Missing primary key!
+#
+\nKein Primärschlüssel vorhanden!
+#
+# 154: ERROR: Failed to set database encoding!
+#
+Zeichencodierung konnte nicht eingestellt werden!
+#
+# 155/156/157: ERROR: Failed to connect to database!
+#
+Verbindung zur Datenbank "
+" auf Host "
+" fehlgeschlagen!
+#
+# 158/159: ERROR: Illegal database name!
+#
+Unzulässiger Datenbank-Name: "
+"!
+#
+# 160: ERROR: Failed to convert database user password!
+#
+Datenbank-Passwort konnte nicht zu UTF-8 konvertiert werden!
+#
+# 161/162: ERROR: Failed to convert database user name to UTF-8!
+#
+Datenbank-Benutzername "
+"\nkonnte nicht zu UTF-8 konvertiert werden!
+#
+# 163/164: ERROR: Failed to convert database host name to UTF-8!
+#
+Datenbank-Hostname "
+"\nkonnte nicht zu UTF-8 konvertiert werden!
+#
+# 165: ERROR: Failed to initialize MySQL client object!
+#
+MySQL-Client-Objekt konnte nicht initialisiert werden!
+#
+# 166: ERROR: Failed to initialize MySQL client library!
+#
+MySQL-Client-Bibliothek konnte nicht initialisiert werden!
+#
+# 167: ERROR: MySQL database support not available!
+#
+MySQL-Unterstützung nicht verfügbar!
+#
+# 168/169: ERROR: User name "...": Duplicated entry!
+#
+Benutzer "
+" mehrfach vorhanden!
+#
+# 170/171: ERROR: Building "...": Duplicated entry!
+#
+Gebäude "
+": mehrfach vorhanden!
+#
+# 172/173: ERROR: Ethernet speed setting "...": Duplicated entry!
+#
+Geschwindigkeitseinstellung "
+": mehrfach vorhanden!
+#
+# 174/175: VLAN "...": Duplicated entry!
+#
+VLAN "
+": mehrfach vorhanden!
+#
+# 176/177: Computer "...": Duplicated entry!
+#
+Computer "
+": mehrfach vorhanden!
+#
+# 178/179: Software manufacturer "...": Duplicated entry!
+#
+Softwarehersteller "
+": mehrfach vorhanden!
+#
+# 180/181: Netgroup "...": Duplicated entry!
+#
+Netgroup "
+": mehrfach vorhanden!
+#
+# 182/183: Netgroup "..." not defined!
+#
+Netgroup "
+" nicht vorhanden!
+#
+# 184/185: Ethernet connector "...": Duplicated entry!
+#
+Datendose "
+": mehrfach vorhanden!
+#
+# 186/187: Ethernet speed setting "..." not defined!
+#
+Geschwindigkeitseinstellung "
+" nicht vorhanden!
+#
+# 188/189: VLAN "..." not defined!
+#
+VLAN "
+" nicht vorhanden!
+#
+# 190/191: Building "..." not defined!
+#
+Gebäude "
+" nicht vorhanden!
+#
+# 192/193: Failed to convert net mask "..."!
+#
+Netzwerkmaske "
+" konnte nicht gelesen werden!
+#
+# 194: Using default net mask 255.255.255.0!
+#
+Standard-Netzwerkmaske 255.255.255.0 wird benutzt!
+#
+# 195/196: Failed to convert default gateway "..."!
+#
+Netzwerk-Gateway "
+" konnte nicht gelesen werden!
+#
+# 197/198: Using default gateway ...
+#
+Standard-Gateway
+wird verwendet.
+#
+# 199/200: Failed to convert broadcast address!
+#
+Broadcast-Adresse "
+" konnte nicht gelesen werden!
+#
+# 201/202: Network "...": Duplicated entry!
+#
+Network "
+": mehrfach vorhanden!
+#
+# 203: Attempt to define IP network without specifying an IP address!
+#
+IP-Netzwerk-Definition ohne Basisadresse!
+#
+# 204/205: DHCP class "...": Duplicated entry!
+#
+DHCP-Klasse "
+": mehrfach vorhanden!
+#
+# 206/207: DHCP group "...": Duplicated entry!
+#
+DHCP-Gruppe "
+": mehrfach vorhanden!
+#
+# 208/209: Invalied network address "..."!
+#
+Netzwerkadresse "
+" ist fehlerhaft!
+#
+# 210/211: DHCP class "..." not defined!
+#
+DHCP-Klasse "
+" nicht vorhanden!
+#
+# 212/213: Network "..." not defined!
+#
+Netzwerk "
+" nicht vorhanden!
+#
+# 214/215: DHCP pool "...": Invalid end address!
+#
+DHCP-Pool "
+": Endadresse fehlerhaft!
+#
+# 216/217: DHCP pool "...": Missing end address!
+#
+DHCP-Pool "
+": Endadresse fehlt!
+#
+# 218/219: DHCP pool "...": Invalid start address!
+#
+DHCP-Pool "
+": Startadresse fehlerhaft!
+#
+# 220: DHCP pool definition attempted with empty start address!
+#
+DHCP-Pool mit leerer Startadresse!
+#
+# 221/222: Computer "...": Illegal MAC address!
+#
+Computer "
+": Unzulässige MAC-Adresse!
+#
+# 223/224: Computer "...": MAC address too long!
+#
+Computer "
+": MAC-Adresse zu lang!
+#
+# 225/226/227: Computer "...": User "..." not defined!
+#
+Computer "
+": Benutzer "
+" nicht vorhanden!
+#
+# 228/229/230: Computer "...": Netgroup "..." not defined!
+#
+Computer "
+": Netgroup "
+" nicht vorhanden!
+#
+# 231/232/233: Computer "...": DHCP class "..." not defined!
+#
+Computer "
+": DHCP-Klasse "
+" nicht vorhanden!
+#
+# 234/235/236: Computer "...": DHCP group "..." not defined!
+#
+Computer "
+": DHCP-Gruppe "
+" nicht vorhanden!
+#
+# 237/238/239: Computer "...": Ethernet connector "..." not defined!
+#
+Computer "
+": Datendose "
+" nicht vorhanden!
+#
+# 240/241/242: Computer "...": Building "..." not defined!
+#
+Computer "
+": Gebäude "
+" nicht vorhanden!
+#
+# 243/244: Computer "...": Both DHCP class and IP address defined!
+#
+Computer "
+":\nSowohl DHCP-Klasse als auch IP-Adresse zugewiesen!
+#
+# 245/246: Computer "...": DHCP class specified, but MAC address missing!
+#
+Computer "
+":\nDHCP-Klasse zugewiesen, aber keine MAC-Adresse!
+#
+# 247/248: Computer "...": Netgroup specified, but IP address missing!
+#
+Computer "
+":\nNetgroup zugewiesen, aber keine IP-Adresse!
+#
+# 249/250: Computer "...": Netgroup specified, but DNS domain missing!
+#
+Computer "
+":\nNetgroup zugewiesen, aber keine DNS-Domäne!
+#
+# 251/252: Computer "...": FQDN first flag set, but DNS domain missing!
+#
+Computer "
+":\nFQDN-Angabe gewünscht, aber keine DNS-Domäne angegeben!
+#
+# 253/254: Computer "...": Over expiration date, should be removed!
+#
+Computer "
+":\nZulassungszeitraum abgelaufen, entweder verlängern oder Computer löschen!
+#
+# 255: Attempt to define a computer without a host name!
+#
+Versuch, Computer ohne Hostnamen zu definieren!
+#
+# 256/257/258: Alias "...": Computer "..." not defined!
+#
+Alias "
+": Computer "
+" nicht vorhanden!
+#
+# 259/260/261: DHCP option ...: VLAN "..." not defined!
+#
+DHCP-Option
+: VLAN "
+" nicht vorhanden!
+#
+# 262/263/264: DHCP option ...: Network "..." not defined!
+#
+DHCP-Option
+: Netzwerk "
+" nicht vorhanden!
+#
+# 265/266/267: DHCP option ...: DHCP group "..." not defined!
+#
+DHCP-Option
+: DHCP-Gruppe "
+" nicht vorhanden!
+#
+# 268/269/270: DHCP option ...: DHCP pool "..." not defined!
+#
+DHCP-Option
+: DHCP-Pool "
+" nicht vorhanden!
+#
+# 271/272/273: DHCP option ...: Computer "..." not defined!
+#
+DHCP-Option
+: Computer "
+" nicht vorhanden!
+#
+# 274/275/276: DHCP option ...: Unknown scope type name "..."!
+#
+DHCP-Option
+: Unzulässiger Scope-Type "
+"!
+#
+# 277/278: Software product "...": Duplicated entry!
+#
+Softwareprodukt "
+": mehrfach vorhanden!
+#
+# 279/280/281: Software product "...": Manufacturer "..." not defined!
+#
+Softwareprodukt "
+": Softwarehersteller "
+" nicht vorhanden!
+#
+# 282/283: License type "...": Duplicated entry!
+#
+Lizenztyp "
+": mehrfach vorhanden!
+#
+# 284/285: License ...: Duplicated entry!
+#
+Lizenz
+: mehrfach vorhanden!
+#
+# 286/287/288: License ...: User "..." not defined!
+#
+Lizenz
+: Benutzer "
+" nicht vorhanden!
+#
+# 289/290/291: License ...: Computer "..." not defined!
+#
+Lizenz
+: Computer "
+" nicht vorhanden!
+#
+# 292/293/294: License ...: License type "..." not defined!
+#
+Lizenz
+: Lizenztyp "
+" nicht vorhanden!
+#
+# 295/296/297: License ... assigned to computer "..." but no user specified!
+#
+Lizenz
+ wurde dem Computer "
+" zugewiesen,\naber keinem Benutzer!
+#
+# 298/299: License ...: No software product specified!
+#
+Lizenz
+: Kein Softwareprodukt angegeben!
+#
+# 300/301: Illegal date specification "..."!
+#
+Unzulässige Datumsangabe: "
+"!
+#
+# 302: Koma-script suggestion
+#
+Die Verwendung von koma-script ist derzeit deaktiviert.\nNutzer in Europa - speziell in deutschsprachigen Ländern - sollten\nkoma-script aktivieren.
+#
+# 303/304
+#
+Unzulässiger Kurzname für Software-Hersteller: "
+"!
+#
+# 305/306
+#
+Unzulässiger Kurzname für Software: "
+"!
+#
+# 307/308
+#
+Unzulässiger Kurnzname für Lizenztyp: "
+"!
+#
+# 309
+#
+Sensitiver Speicherbereich nicht zurückgesetzt!
diff --git a/support/dktools/dktools/de/lprngcl.str b/support/dktools/dktools/de/lprngcl.str
new file mode 100644
index 0000000000..aaffda5d4c
--- /dev/null
+++ b/support/dktools/dktools/de/lprngcl.str
@@ -0,0 +1,53 @@
+#
+# 0 ERROR: Failed to set up signal handlers!
+#
+Signal-Handler konnten nicht eingerichtet werden!
+#
+# 1 ERROR: Failed to restore signal handlers!
+#
+Signal-Handler konnten nicht wiederhergestellt werden!
+#
+# 2 ERROR: Failed to set up text stream processor!
+#
+Text-Analyse konnte nicht initialisiert werden!
+#
+# 3 ERROR: Failed to construct request!
+#
+Request konnte nicht konstruiert werden!\nQueue- oder Nutzername zu lang!
+#
+# 4 ERROR: Failed to convert queue name to 8 bit text!
+#
+Queue-Name konnte nicht zu 8-Bit-Text konvertiert werden!
+#
+# 5 ERROR: No host name specified in queue!
+#
+Queue-Name enthält keinen Host-Namen!
+#
+# 6 ERROR: Queue name too long!
+#
+Der Queue-Name ist zu lang!
+#
+# 7 ERROR: Failed to obtain command line argument (bug)!
+#
+Fehler beim Durchsuchen der Kommandozeilen-Argumente (Bug)!
+#
+# 8 ERROR: Failed to convert user name to 8 bit text!
+#
+Nutzer-Name konnte nicht zu 8-Bit-Text konvertiert werden!
+#
+# 9 ERROR: Failed to find current user name!
+#
+Nutzer-Name konnte nicht ermittelt werden!
+#
+# 10 ERROR: Queue name(s) required!
+#
+Keine Queue-Namen angegeben, diese sind erforderlich!
+#
+# 11 ERROR: Failed to write to standard output!
+#
+Problem(e) beim Schreiben in Standardausgabe!
+#
+# 12 13
+#
+Request:\n"
+".
diff --git a/support/dktools/dktools/de/lprngcl.txt b/support/dktools/dktools/de/lprngcl.txt
new file mode 100644
index 0000000000..1edd5e39cb
--- /dev/null
+++ b/support/dktools/dktools/de/lprngcl.txt
@@ -0,0 +1,70 @@
+
+BEZEICHNUNG
+
+ lprngcl - Clean LPRng print queues
+
+ÃœBERSICHT
+
+ lprngcl [-a] [-v] [-t <Sekunden> [<Druckwarteschlange(n)>]
+ lprngcl [--help] [--version] [--license] [--manual]
+
+BESCHREIBUNG
+
+Das Programm löscht alle Druckaufträge, die vom aktuellen Benutzer
+erzeugt wurden aus den angegebenen LPD/LPRng-Druckwarteschlangen.
+Vorgesehen ist es für den Einsatz in PC-Laboren bzw. PC-Lehrklassen in
+Schulen oder Hochschulen.
+Meldet sich hier ein Nutzer vom Computer ab, kann davon ausgegangen werden,
+dass er den Raum verlässt und kein Interesse mehr an den ausgelösten
+Druckaufträgen besteht.
+
+OPTIONEN
+
+-a
+--ascii
+ Der LPRng-Host verwendet ASCII-Encoding. Standard: UTF-8.
+
+-t <Sekunden>
+--timeout=<Sekunden>
+ Timeout für Netzwerk-Operationen.
+
+-v
+--verbose
+ Ausführliche Ausgabe erzeugen, Antwort des LPRng-Servers
+ anzeigen.
+
+--help
+ Hilfetext anzeigen.
+
+--version
+ Versionshinweise anzeigen.
+
+--license
+ Lizenzbedingungen anzeigen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+HINWEISE
+
+In Version 4.3.0 und später verwendet lprngcl keine dk3print.conf-Datei mehr.
+Somit steht aber auch kein Standard-Host und keine Standard-Druckwarteschlange
+mehr zur Verfügung.
+Die aufzuräumenden Druckwarteschlangen müssen in der Form
+<Warteschlange>@<Host> als Kommandozeilenargumente angegeben werden.
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZ
+
+Run
+ lprngcl --license-terms
+to see the license conditions.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/pjsnmp.str b/support/dktools/dktools/de/pjsnmp.str
new file mode 100644
index 0000000000..7fa8812a69
--- /dev/null
+++ b/support/dktools/dktools/de/pjsnmp.str
@@ -0,0 +1,355 @@
+#
+# NOTE: Status messages from pjsnmp are shown by lpq as Filter_Status
+# lines. The lpq program or equivalents are run not only on the print
+# server but on print clients too.
+#
+# Print clients are not required to use the same encoding as the print
+# server. Some Linux/Unix clients use UTF-8 encoding, others don't.
+#
+# CONCLUSION: When localizing this string file stick to the ASCII
+# character set. Avoid any characters requiring UTF-8 encoding, i.e.
+# german umlauts.
+#
+#
+#
+# 0 Status: Printer ready.
+#
+Drucker bereit.
+#
+# 1 Status: Printer warming up.
+#
+Drucker-Aufwaermphase.
+#
+# 2 Status: Printing.
+#
+Es wird gedruckt.
+#
+# 3 Status: Waiting for printer to start printing.
+#
+Auf Beginn des Druckvorganges wird gewartet.
+#
+# 4 Status: Error on printer.
+#
+MANUELLES EINGREIFEN ERFORDERLICH! (PAPIERSTAU...)
+#
+# 5 Status: Printer in unknown state.
+#
+Unbekannter Drucker-Zustand.
+#
+# 6 Status: Printer does not respond.
+#
+DRUCKER NICHT ANSPRECHBAR! BITTE DRUCKER EINSCHALTEN!
+#
+# 7 Status: Failed to create SNMP request.
+#
+FEHLER: SNMP-Anfrage konnte nicht erstellt werden!
+#
+# 8 Status: Invalid SNMP response from printer!
+#
+FEHLER: Ungueltige SNMP-Antwort vom Drucker.
+#
+# 9 SNMP response:
+#
+SNMP-Antwort:
+#
+# 10 device=0
+#
+hrDeviceStatus=0,
+#
+# 11 device=unknown
+#
+hrDeviceStatus=unknown (1),
+#
+# 12 device=running
+#
+hrDeviceStatus=running (2),
+#
+# 13 device=warning
+#
+hrDeviceStatus=warning (3),
+#
+# 14 device=testing
+#
+hrDeviceStatus=testing (4),
+#
+# 15 device=down
+#
+hrDeviceStatus=down (5),
+#
+# 16 printer=0
+#
+hrPrinterStatus=0.
+#
+# 17 printer=other
+#
+hrPrinterStatus=other (1).
+#
+# 18 printer=unknown
+#
+hrPrinterStatus=unknown (2).
+#
+# 19 printer=idle
+#
+hrPrinterStatus=idle (3).
+#
+# 20 printer=printing
+#
+hrPrinterStatus=printing (4).
+#
+# 21 printer=warmup
+#
+hrPrinterStatus=warmup (5).
+#
+# 22 Error: Out of paper!
+#
+DRUCKER-FEHLER: KEIN PAPIER!
+#
+# 23 Information: Paper available.
+#
+Drucker-Fehler behoben: Papier vorhanden.
+#
+# 24 Error: Paper low.
+#
+Drucker-Warnung: Wenig Papier.
+#
+# 25 Information: No more paper low.
+#
+Drucker-Warnung behoben: Ausreichend Papier.
+#
+# 26 Error: Out of toner!
+#
+DRUCKER-FEHLER: KEIN TONER!
+#
+# 27 Information: Error condition resolved (no toner).
+#
+Drucker-Fehler behoben: Toner vorhanden.
+#
+# 28 Warning condition: toner low.
+#
+Drucker-Warnung: Wenig Toner.
+#
+# 29 Information: Printer conditions resolved (toner low).
+#
+Drucker-Warnung behoben: Ausreichend Toner.
+#
+# 30 Error: Output tray full!
+#
+DRUCKER-FEHLER: AUSGABESCHACHT VOLL!
+#
+# 31 Information: Error condition resolved (output tray full).
+#
+Drucker-Fehler behoben: Ausgabeschacht ok.
+#
+# 32 Warning: Output tray nearly full!
+#
+Drucker-Warnung: Ausgabeschacht fast voll!
+#
+# 33 Information: Warning condition resolved (output tray nearly full).
+#
+Drucker Warnung behoben: Ausgabeschacht ok.
+#
+# 34 Error: Door open!
+#
+DRUCKER-FEHLER: DRUCKER OFFEN!
+#
+# 35 Information: Door now closed.
+#
+Drucker-Fehler behoben: Nicht mehr offen.
+#
+# 36 Error: Paper jam!
+#
+DRUCKER-FEHLER: PAPIERSTAU!
+#
+# 37 Information: Error condition resolved (paper jam).
+#
+Drucker-Fehler behoben: Kein Papierstau.
+#
+# 38 Error: Printer offline!
+#
+DRUCKER-FEHLER: DRUCKER IST OFFLINE!
+#
+# 39 Information: Error condition resolved (printer offline).
+#
+Drucker-Fehler behoben: Nicht mehr offline.
+#
+# 40 Error: Service requested!
+#
+Drucker-Warning: Manuelles Eingreifen erforderlich.
+#
+# 41 Information: Error condition resolved (service requested).
+#
+Drucker-Warnung behoben: Kein Eingreifen erforderlich.
+#
+# 42 Error: Input tray missing!
+#
+DRUCKER-FEHLER: EINGABESCHACHT FEHLT!
+#
+# 43 Information: Error condition resolved (input tray missing).
+#
+Drucker-Fehler behoben: Eingabeschacht vorhanden.
+#
+# 44 Error: Output tray missing!
+#
+DRUCKER-FEHLER: AUSGABESCHACHT FEHLT!
+#
+# 45 Information: Error condition resolved (output tray missing).
+#
+Drucker-Fehler behoben: Ausgabeschacht vorhanden.
+#
+# 46 ERROR: Marker supply missing!
+#
+DRUCKER-FEHLER: MARKER-ZUBEHOER (FIXIEREINHEIT?) FEHLT!
+#
+# 47 Information: Error condition resolved (marker supply missing).
+#
+Drucker-Fehler behoben: Marker-Zubehoer vorhanden.
+#
+# 48 Error: Input tray empty!
+#
+Drucker-Warnung: Mindestens ein Eingabeschacht leer.
+#
+# 49 Information: Error condition resolved (input tray empty).
+#
+Drucker-Warnung behoben: Kein leerer Eingabeschacht.
+#
+# 50 Error: Overdue preventive maintenance!
+#
+Drucker-Warnung: Planmaessige Wartung durchfuehren.
+#
+# 51 Information: Error condition resolved (overdue preventive maintenance).
+#
+Drucker-Warnung behoben: Keine Wartung erforderlich.
+#
+# 52/53 Error: Configuration entry "..." needs an argument!
+#
+FEHLER: Argument für Konfigurationseintrag "
+" fehlt!
+#
+# 54
+#
+Druckjob beendet, es traten Fehler auf.
+#
+# 55
+#
+Druckjob erfolgreich fertiggestellt.
+#
+# 55/57
+#
+Druckjob erfolgreich fertiggestellt,
+ Seite(n).
+#
+# 58
+#
+Druckjob durch Signal abgebrochen.
+#
+# 59
+#
+FEHLER: Umgebungsvariable PRINTCAP_ENTRY fehlt!
+#
+# 60
+#
+FEHLER: Zu wenig Hauptspeicher!
+#
+# 61
+#
+FEHLER: Hostname fuer Drucker ist nicht konfiguriert!
+#
+# 62
+#
+FEHLER: Portnummer fuer Drucker ist nicht konfiguriert!
+#
+# 63/64
+#
+FEHLER: Unzulaessiger Accounting-Typ "
+" konfiguriert!
+#
+# 65/66
+#
+FEHLER: Unzulaessige SNMP-Version "
+" konfiguriert!
+#
+# 67/68
+#
+FEHLER: Unzulaessige Portnummern-Angabe "
+" konfiguriert (keine Zahl)!
+#
+# 69/70
+#
+FEHLER: Unzulaessige Portnummern-Angabe "
+" konfiguriert (Zahlenbereichsueberlauf)!
+#
+# 71
+#
+FEHLER: Standardeingabe-Daten konnten nicht in Datei gespeichert werden!
+#
+# 72
+#
+FEHLER: SNMP-Sitzung konnte nicht geoeffnet werden!
+#
+# 73
+#
+Warnung: SNMP-Sitzung konnte nicht geoeffnet werden!
+#
+# 74
+#
+FEHLER: Die temporaere Druckdaten-Datei konnte nicht gelesen werden.
+#
+# 75
+#
+FEHLER: Keine Verbindung zum Drucker herstellbar!
+#
+# 76
+#
+FEHLER: Daten-Senden zum Drucker fehlgeschlagen!
+#
+# 77
+#
+FEHLER: SNMP-Anfrage konnte nicht erstellt werden!
+#
+# 78
+#
+FEHLER: Accounting-Anfrage wird zu lang!
+#
+# 79
+#
+FEHLER: Kein Benutzername fuer aktuellen Druckjob gefunden!
+#
+# 80
+#
+FEHLER: Kein Druckername fuer aktuellen Druckjob gefunden!
+#
+# 81
+#
+FEHLER: Accounting-Datei ist keine UNIX-Domain-Socket.
+#
+# 82
+#
+FEHLER: Keine Berechtigung fuer diesen Drucker!
+#
+# 83
+#
+FEHLER: Verbindung zum Accounting-System nicht moeglich!
+#
+# 84
+#
+FEHLER: Daten-Senden zum Accounting-System fehlgeschlagen!
+#
+# 85
+#
+FEHLER: Shutdown der Accounting-Socket fehlgeschlagen!
+#
+# 86
+#
+Zaehlerstand vor Druckjob:
+#
+# 87
+#
+Zaehlerstand nach Druckjob:
+#
+# 88
+#
+Antwort vom Drucker:
+#
+# 89
+#
+FEHLER: Signal-Behandlung konnte nicht konfiguriert werden!
diff --git a/support/dktools/dktools/de/plpdftex.str b/support/dktools/dktools/de/plpdftex.str
new file mode 100644
index 0000000000..bb4c915f76
--- /dev/null
+++ b/support/dktools/dktools/de/plpdftex.str
@@ -0,0 +1,156 @@
+#
+# 0 Program name
+#
+plpdftex
+#
+# 1
+#
+Zu viele Argumente, nur ein Dateiname erlaubt!
+#
+# 2
+#
+Erstes Argument nicht gefunden (möglicherweise ein Bug)!
+#
+# 3
+#
+Erste Zeile enthält keine Ausgabedatei-Namen!
+#
+# 4
+#
+Dateiname in der ersten Zeile zu lang!
+#
+# 5
+#
+Dateinamens-Endung muss *.pdftex oder *.pdftexs sein!
+#
+# 6
+#
+Zweite Zeile mit Breiten- und Höhenangabe fehlt!
+#
+# 7
+#
+Breite und Höhe nicht angegeben!
+#
+# 8
+#
+Zahlenbereichsüberlauf, Breite und/oder Höhe zu groß!
+#
+# 9
+#
+PDF-Daten konnten nicht in Datei geschrieben werden!
+#
+# 10
+#
+PDF-Seite konnte nicht geöffnet werden!
+#
+# 11
+#
+PDF-Seite konnte nicht geschlossen werden!
+#
+# 12
+#
+Syntax-Fehler, Dokument bereits beendet!
+#
+# 13
+#
+Syntax-Fehler, Zeile muss mit "t", "p" oder "#" beginnen!
+#
+# 14
+#
+Syntax-Fehler, kein Kommando angegeben!
+#
+# 15
+#
+PDF-Clip-Operation fehlgeschlagen!
+#
+# 16
+#
+PDF-Fill-Operation fehlgeschlagen!
+#
+# 17
+#
+PDF-Stroke-Operation fehlgeschlagen!
+#
+# 18
+#
+PDF-Closepath-Operation fehlgeschlagen!
+#
+# 19
+#
+PDF-Curveto-Operation fehlgeschlagen!
+#
+# 20
+#
+Syntax-Fehler, Zahlenwert wird erwartet!
+#
+# 21
+#
+Syntax-Fehler, zu wenig Argumente für Kommando!
+#
+# 22
+#
+PDF-Moveto-Operation fehlgeschlagen!
+#
+# 23
+#
+Syntax-Fehler, negativer Radius!
+#
+# 24
+#
+PDF-Lineto-Operation fehlgeschlagen!
+#
+# 25
+#
+PDF-Operation zum Setzen der Füllfarbe fehlgeschlagen!
+#
+# 26
+#
+Syntax-Fehler, Farbe ist nicht bekannt!
+#
+# 27
+#
+PDF-Operation zum Setzen der Strichfarbe fehlgeschlagen!
+#
+# 28
+#
+PDF-Set-Dash-Operation fehlgeschlagen!
+#
+# 29
+#
+PDF-Set-Linejoin-Operation fehlgeschlagen!
+#
+# 30
+#
+PDF-Set-Linecap-Operation fehlgeschlagen!
+#
+# 31
+#
+Syntax-Fehler, negative Linienbreite!
+#
+# 32
+#
+PDF-Set-Linewidth-Operation fehlgeschlagen!
+#
+# 33
+#
+PDF-Grestore-Operation fehlgeschlagen!
+#
+# 34
+#
+PDF-Gsave-Operation fehlgeschlagen!
+#
+# 35
+#
+Daten konnten nicht in TeX-Ausgabedatei geschrieben werden!
+#
+# 36
+#
+Syntax-Fehler, ungültige Angabe für horizontale Ausrichtung!
+#
+# 37
+#
+Syntax-Fehler, ungültige Angabe für vertikale Ausrichtung!
+#
+# 38
+#
+Syntax-Fehler, falsche Reihenfolge von fs, font-setup, package, preamble, text!
diff --git a/support/dktools/dktools/de/printqd.str b/support/dktools/dktools/de/printqd.str
new file mode 100644
index 0000000000..3528623e61
--- /dev/null
+++ b/support/dktools/dktools/de/printqd.str
@@ -0,0 +1,60 @@
+#
+# 0 The string table name.
+#
+printqd.str
+#
+# 1,2 Request received:
+#
+REQUEST:\n
+
+#
+# 3,4 Response:
+#
+RESPONSE:\n
+
+#
+# 5,6,7
+#
+Limit=%lu used=%lu account=%lu job=%lu => used=%lu account=%lu
+ERGEBNIS:\n
+
+#
+# 8,9 ERROR: Database name too long!
+#
+Datenbank-Dateiname zu lang:\n"
+"!
+#
+# 10
+#
+Gruppenwechsel zu Nicht-root-Gruppe fehlgeschlagen!
+#
+# 11
+#
+Wechsel zu Nicht-root-Account fehlgeschlagen!
+#
+# 12,13
+#
+Name für Konfigurationsverzeichnis zu lang:\n"
+"!
+#
+# 14,15 ERROR: Failed to change owner for directory!
+#
+Verzeichniseigentümer konte nicht geändert werden für: "
+"!
+#
+# 16,17 ERROR: Failed to create directory!
+#
+Verzeichnis konnte nicht angelegt werden: "
+"!
+#
+# 18 Message: Exiting printqd normally.
+#
+Printqd wird normal beendet (durch Signal).
+#
+# 19 ERROR: Exiting due to errors.
+#
+Printqd wird wegen aufgetretenen Fehlern beendet!
+#
+# 20 ERROR: Failed to set up signal handling!
+#
+Signalbehandlung konnte nicht aktiviert werden!
diff --git a/support/dktools/dktools/de/printqda.str b/support/dktools/dktools/de/printqda.str
new file mode 100644
index 0000000000..f447633f6f
--- /dev/null
+++ b/support/dktools/dktools/de/printqda.str
@@ -0,0 +1,65 @@
+#
+# 0 Name of localized message texts file.
+#
+printqda.str
+#
+# 1 2 Option was already set!
+#
+Die Option wurde bereits gesetzt: "
+"!
+#
+# 3 4 Option not started by a character!
+#
+Option beginnt nicht mit einem Buchstaben: "
+"!
+#
+# 5 6 Empty option!
+#
+Leere option: "
+"!
+#
+# 7 Syntax error in request!
+#
+Syntax-Fehler in Request!
+#
+# 8 Syntax error, string not finalized!
+#
+Syntax-Fehler, String nicht abgeschlossen!
+#
+# 9 Request contents too long!
+#
+Request zu lang!
+#
+# 10 Incomplete request!
+#
+Unvollständiger Request!\nMindestens eine Angabe fehlt:\nNutzername, Druckername, Zählerstand, Jobname oder Job-Titel!
+#
+# 11 Too few arguments in request!
+#
+Zu wenige Angaben in Request!
+#
+# 12 Incomplete request!
+#
+Unvollständiger Request! Nutzer- oder Druckername fehlt!
+#
+# 13 14 Illegal control sub-request!
+#
+Unzulässiger Control-Request: "
+"!
+#
+# 15
+#
+Keine Verbindung, alle folgenden Eingaben werden ignoriert!
+#
+# 16 17
+#
+Dateiname für Konfigurationsverzeichnis zu lang:\n"
+"!
+#
+# 18
+#
+Dateiname für Konfigurationsverzeichnis nicht gefunden!
+#
+# 19
+#
+Nur printqda kann control-Requests verarbeiten, nicht printqdc!
diff --git a/support/dktools/dktools/de/printqdc.str b/support/dktools/dktools/de/printqdc.str
new file mode 100644
index 0000000000..ec5a41c8a8
--- /dev/null
+++ b/support/dktools/dktools/de/printqdc.str
@@ -0,0 +1,132 @@
+#
+# 0 String table file name
+#
+printqdc.str
+#
+# 1, 2 ERROR: Not a limit value!
+#
+Ungültige Limit-Angabe: "
+"!
+#
+# 3, 4 ERROR: Alias already exists!
+#
+Alias bereits vorhanden: "
+"!
+#
+# 5, 6 ERROR: Printer already exists!
+#
+Drucker bereits vorhanden: "
+"!
+#
+# 7, 8 ERROR: Class already defined!
+#
+Klasse bereits vorhanden: "
+"!
+#
+# 9 ERROR: Missing class name!
+#
+Klassenname fehlt!
+#
+# 10 ERROR: No argument allowed after section title!
+#
+Argumente nach diesem Abschnitts-Namen nicht erlaubt!
+#
+# 11, 12 ERROR: Illegal configuration section title!
+#
+Unzulässiger Abschnitts-Name: "
+"!
+#
+# 13 ERROR: Closing bracket is missing!
+#
+Schließende eckige Klammer fehlt!
+#
+# 14 ERROR: Printer already assigned to a class!
+#
+Der Drucker ist bereits einer Klasse zugeordnet!
+#
+# 15, 16 ERROR: No such class
+#
+Klasse nicht definiert: "
+"!
+#
+# 17, 18 ERROR: Illegal configuration key!
+#
+Unzulässiger Konfigurationseintrag: "
+"!
+#
+# 19, 20 ERROR: Limit for group already defined!
+#
+Für die Gruppe "
+" wurde bereits ein Limit festgelegt!
+#
+# 21
+#
+Die Limit-Angabe muss in der Form "Name:Limit" erfolgen!
+#
+# 22, 23 ERROR: Limit for user already defined!
+#
+Für Nutzer "
+" ist bereits ein Limit definiert!
+#
+# 24 25 ERROR: Illegal deny action!
+#
+Unzulässige Aktion: "
+"! Entweder "remove" oder "hold" erlaubt!
+#
+# 26 ERROR: Database file name already defined!
+#
+Dateiname für Datenbank wurde bereits angegeben!
+#
+# 27 ERROR: Socket file name already defined!
+#
+Dateiname für Socket wurde bereits angegeben!
+#
+# 28 ERROR: Info port already defined!
+#
+TCP-Port für info-Requests wurde bereits angegeben!
+#
+# 29, 30 ERROR: Range overflow in port number!
+#
+Zahlenbereichs-Überlauf für Port-Nummer: "
+"!\nDie Portnummer darf maximal 65535 sein!
+#
+# 30, 31 ERROR: Not a number!
+#
+Keine Zahl: "
+"!
+#
+# 32 ERROR: User account to run daemon is already defined!
+#
+Nutzer-Account wurde bereits angegeben!
+#
+# 33 ERROR: Group to run daemon is already defined!
+#
+Nutzer-Gruppe wurde bereits angegeben!
+#
+# 34, 35 ERROR: No such user!
+#
+Nutzer existiert nicht: "
+"!
+#
+# 36, 37 ERROR: No such group!
+#
+Gruppe existiert nicht: "
+"!
+#
+# 38 ERROR: Missing value!
+#
+Wert-Angabe fehlt!
+#
+# 39, 40 ERROR: Local state directory name too long!
+#
+Name für /var-Verzeichnis zu lang: "
+"!
+#
+# 41 ERROR: Failed to find local state directory name!
+#
+Zu benutzendes /var-Verzeichnis wurde nicht gefunden!
+#
+# 42, 43 ERROR: UNIX domain socket name too long!
+#
+Dateiname für UNIX-Domain-Socket zu lang: "
+"!
diff --git a/support/dktools/dktools/de/printqdi.str b/support/dktools/dktools/de/printqdi.str
new file mode 100644
index 0000000000..075c39e066
--- /dev/null
+++ b/support/dktools/dktools/de/printqdi.str
@@ -0,0 +1,56 @@
+#
+# 0
+#
+Thread-Attribute konnten nicht initialisiert werden!
+#
+# 1
+#
+Standard-Thread-Zustand konnte nicht auf "detached" gesetzt werden!
+#
+# 2
+#
+Mutex-Attribute konnten nicht initialisiert werden!
+#
+# 3
+#
+Standard-Mutex-Typ konnte nicht gesetzt weden.
+#
+# 4
+#
+Programm wird wegen Fehlern beendet.
+#
+# 5
+#
+Programm wird normal beendet (wegen Signal).
+#
+# 6
+#
+Konfigurationsdatei konnte nicht gelesen werden!
+#
+# 7
+#
+Konfigurations-Problem, Prüfung der Konfiguration fehlgeschlagen!
+#
+# 8
+#
+Server-Sockets konnten nicht erstellt werden!
+#
+# 9
+#
+Thread für neue Verbindung konnte nicht angelegt werden!
+#
+# 10
+#
+Wechsel zu Nicht-root-Account fehlgeschlagen!
+#
+# 11
+#
+Wechsel zu Nicht-root-Gruppe fehlgeschlagen!
+#
+# 12
+#
+Dateiname für Konfigurationsdatei nicht gefunden!
+#
+# 13
+#
+Signalbehandlung konnte nicht eingerichtet werden!
diff --git a/support/dktools/dktools/de/winprint.str b/support/dktools/dktools/de/winprint.str
new file mode 100644
index 0000000000..f7c493864a
--- /dev/null
+++ b/support/dktools/dktools/de/winprint.str
@@ -0,0 +1,184 @@
+#
+# 0: Menu "File"
+#
+Datei
+#
+# 1: Menu item "File/Exit"
+#
+Beenden
+#
+# 2: Tool tip text for menu item "File/Exit"
+#
+Anwendung beenden
+#
+# 3: Menu "Help"
+#
+Hilfe
+#
+# 4: Menu item "Help/About"
+#
+Ãœber...
+#
+# 5: Tooltip text for menu item "Help/About"
+#
+Versionsnummber anzeigen
+#
+# 6: Menu item "Help/Contents"
+#
+Inhalt
+#
+# 7: Tooltip text for menu item "Help/Contents"
+#
+Inhaltsverzeichnis der Online-Hilfe öffnen
+#
+# 8: Initial status text
+#
+Bereit
+#
+# 9: Copyright notice.
+#
+Copyright (c)
+#
+# 10: Dialog box title "About ..."
+#
+Ãœber winprint
+#
+# 11: This program uses the following libraries
+#
+Dieses Programm nutzt Bibliotheken aus folgenden Projekten:
+#
+# 12: See
+#
+Siehe:
+#
+# 13: __CHANGE__ 015: Text for dummy label, can be reused if lDummy removed.
+#
+Druckwarteschlangen-Namen werden ermittelt.
+#
+# 14
+#
+Erfolg, Programm wird beendet.
+#
+# 15
+#
+Drucken
+#
+# 16
+#
+Datei zu Drucker senden.
+#
+# 17
+#
+Druckdaten werden übertragen.
+#
+# 18
+#
+Datei auswählen
+#
+# 19
+#
+Abbruch durch Benutzer!
+#
+# 20
+#
+Datenübertragung
+#
+# 21
+#
+Abbrechen
+#
+# 22
+#
+Datenübertragung abbrechen
+#
+# 23
+#
+Datenübertragung wird abgebrochen, bitte warten...
+#
+# 24
+#
+FEHLER: Ungültiger Drucker-Name!
+#
+# 25
+#
+FEHLER: Kein Standarddrucker vorhanden!
+#
+# 26
+#
+FEHLER: Druck-Konfiguration nicht ermittelbar!
+#
+# 27
+#
+FEHLER: Hintergrund-Thread konnte nicht erstellt werden!
+#
+# 28
+#
+FEHLER: Fortschrittsanzeige konnte nicht erstellt werden!
+#
+# 29
+#
+Fehler beim Drucken
+#
+# 30
+#
+Drucker-Auswahl
+#
+# 31
+#
+Drucker auswählen:
+#
+# 32
+#
+OK
+#
+# 33
+#
+Den ausgewählten Drucker verwenden.
+#
+# 34
+#
+Abbrechen
+#
+# 35
+#
+Drucken abbrechen
+#
+# 36
+#
+Ziel-Drucker auswählen
+#
+# 37
+#
+Datenübertragung abgeschlossen.
+#
+# 38
+#
+FEHLER: Druck-Daten können nicht in Job-Datei geschrieben werden!
+#
+# 39
+#
+FEHLER: Eingabedatei kann nicht gelesen werden!
+#
+# 40
+#
+FEHLER: Job kann nicht in Druckwarteschlange eingefügt werden!
+#
+# 41
+#
+FEHLER: Job-Datei kann nicht erzeugt werden!
+#
+# 42
+#
+FEHLER: Job kann nicht in Druckwarteschlange eingefügt werden!
+#
+# 43
+#
+FEHLER: Druckwarteschlange kann nicht geöffnet werden!
+#
+# 44
+#
+FEHLER: Dateiname nicht verwendbar!
+#
+# 45
+#
+FEHLER: Druckername nicht verwendbar!
diff --git a/support/dktools/dktools/de/wprclean.str b/support/dktools/dktools/de/wprclean.str
new file mode 100644
index 0000000000..a2a553cd58
--- /dev/null
+++ b/support/dktools/dktools/de/wprclean.str
@@ -0,0 +1,21 @@
+#
+# 0 1
+#
+Druckjob
+ gelöscht.
+#
+# 2 3 4
+#
+Druckjob
+, konnte nicht gelöscht werden, Fehlercode:
+.
+#
+# 5 6
+#
+Auf Drucker "
+" kann nicht zugegriffen werden!
+#
+# 7 8
+#
+Der Drucker "
+" wurde nicht gefunden!
diff --git a/support/dktools/dktools/de/wprclean.txt b/support/dktools/dktools/de/wprclean.txt
new file mode 100644
index 0000000000..f2a6ce9b5a
--- /dev/null
+++ b/support/dktools/dktools/de/wprclean.txt
@@ -0,0 +1,66 @@
+
+BEZEICHNUNG
+
+ wprclean - Windows print cleanup
+
+ÃœBERSICHT
+
+ wprclean [-c] [<printers>]
+ wprclean [-h] [-v] [-L]
+
+BESCHREIBUNG
+
+Das Programm wprclean löscht alle Druckjobs, die vom aktuellen Nutzer
+erzeugt wurden. Vorgesehen ist es für den Einsatz in PC-Laboren bzw.
+PC-Lehrklassen in Schulen oder Hochschulen.
+Meldet sich hier ein Nutzer vom Computer ab, kann davon ausgegangen werden,
+dass er den Raum verlässt und kein Interesse mehr an den ausgelösten
+Druckaufträgen besteht.
+
+OPTIONEN
+
+-c
+--computer
+ Nur diejenigen Druckaufträge löschen, die auf dem aktuellen
+ Computer erzeugt wurden.
+
+-h
+--help
+ Hilfetext anzeigen.
+
+-v
+--version
+ Versionshinweise anzeigen.
+
+-L
+--license-terms
+ Lizenzbedingungen anzeigen.
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+DATEIEN
+
+Die Datei dk3print.conf kann benutzt werden, um kurze Alias-Namen für
+die Windows-Druckwarteschlangen zu konfigurieren.
+
+HINWEISE
+
+Wenn Sie sowohl wprclean als auch lprngcl verwenden, sollte wprclean
+vor lprngcl benutzt werden.
+
+AUTOR
+
+Dirk Krause
+
+COPYRIGHT UND LIZENZ
+
+Mit
+ wprclean --license
+werden die Lizenzbedingungen angezeigt.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/de/wxbmpp.str b/support/dktools/dktools/de/wxbmpp.str
new file mode 100644
index 0000000000..5fb653b329
--- /dev/null
+++ b/support/dktools/dktools/de/wxbmpp.str
@@ -0,0 +1,482 @@
+#
+# 0: Program name
+#
+wxbmpp
+#
+# 1: Application group name
+#
+dkt-3
+#
+# 2: Software vendor name
+#
+Dirk Krause
+#
+# 3: Empty text.
+#
+
+#
+# 4: Toolbar button text: Directory
+#
+Directory
+#
+# 5: Toolbar button tip text: Choose the directory to process.
+#
+Directory (Verzeichnis) zum Bearbeiten auswählen
+#
+# 6: Toolbar button text: Options
+#
+Optionen
+#
+# 7: Toolbar button tip text: Set conversion options.
+#
+Einstellungen für die Konvertierung vornehmen
+#
+# 8: Toolbar button text: Run
+#
+Start
+#
+# 9: Toolbar button tip text: Run conversion
+#
+Konvertierung starten
+#
+# 10: Toolbar button text: Exit
+#
+Beenden
+#
+# 11: Toolbar button tip text: Exit the application
+#
+Programm beenden
+#
+# 12: Menu text: File
+#
+&Datei
+#
+# 13: Menu text: Help
+#
+&Hilfe
+#
+# 14: Menu item text: Directory
+#
+&Directory... Alt-D
+#
+# 15: Menu item tip text: Choose directory
+#
+Directory (Verzeichnis) auswählen
+#
+# 16: Menu item text: Options
+#
+&Optionen Alt-O
+#
+# 17: Menu item tip text: Set conversion options
+#
+Einstellungen für die Konvertierung vornehmen
+#
+# 18: Menu item text: Run
+#
+&Start Alt-S
+#
+# 19: Menu item tip text: Run conversion
+#
+Konvertierung starten
+#
+# 20: Menu item text: Exit
+#
+&Beenden Alt-B
+#
+# 21: Menu item tip text: Exit the application
+#
+Programm beenden
+#
+# 22: Menu item: Contents
+#
+&Inhalt F1
+#
+# 23: Menu item tip text: Show table of contents
+#
+Inhaltsverzeichnis der Hilfe anzeigen
+#
+# 24: Menu item text: About
+#
+&Ãœber... Alt-I
+#
+# 25: Menu item tip text: Show version number
+#
+Informationen über wxbmpp
+#
+# 26: Label text: Directory:
+#
+Directory:
+#
+# 27: Empty string to indicate no directory name available
+#
+
+#
+# 28: Empty string for initial status text
+#
+
+#
+# 29: Directory dialog title: Choose directory
+#
+Directory auswählen
+#
+# 30: Autorun result: Processing succeeded, application will exit.
+#
+Verarbeitung war erfolgreich, Programm wird beendet.
+#
+# 31: ERROR: Automatic run canceled due to errors.
+#
+Kein automatischer Start wegen Fehler!
+#
+# 32: Progress dialog title: Conversion progress
+#
+Fortschritt der Konvertierung
+#
+# 33: Progress dialog button title: Cancel
+#
+Abbrechen
+#
+# 34: Progress dialog button tool tip: Abort after current file
+#
+Verarbeitung nach aktueller Datei abbrechen
+#
+# 35: Notification text: Cancel command scheduled... wait, please!
+#
+Abbruch eingeleitet... Bitte warten!
+#
+# 36: Options dialog box title
+#
+Konvertierungs-Optionen
+#
+# 37: Options dialog box paragraph: General
+#
+Allgemeine Einstellungen
+#
+# 38: Checkbox: Make mode
+#
+Make-Modus
+#
+# 39: Tool tip for checkbox make mode
+#
+Konvertierung nur starten, falls keine aktuelle Zieldatei vorhanden.
+#
+# 40: Dialog box paragraph: Output
+#
+Ausgabe
+#
+# 41: Label output format
+#
+Ausgabeformat:
+#
+# 42: Output format PS
+#
+PS
+#
+# 43: Output format EPS
+#
+EPS
+#
+# 44: Output format PDF
+#
+PDF
+#
+# 45: Output format: Bounding box
+#
+Bounding Box
+#
+# 46: Label output type
+#
+Ausgabe-Modus:
+#
+# 47: Output type image
+#
+Bild
+#
+# 48: Output type object
+#
+Objekt
+#
+# 49: Output type document
+#
+Dokument
+#
+# 50: Label finishing
+#
+Fertigstellung:
+#
+# 51: Finishing Single-side
+#
+Einseitig
+#
+# 52: Finishing duplex, no tumble
+#
+Zweiseitig (Buch)
+#
+# 53: Finishing duplex and tumble
+#
+Zweiseitig (Kalender)
+#
+# 54: Checkbox draft mode
+#
+Entwurf
+#
+# 55: Tool tip text for draft checkbox
+#
+Nur Platzhalter anstelle der Bilder erzeugen
+#
+# 56: Checkbox color
+#
+Farbe
+#
+# 57: Tool tip text for checkbox color
+#
+Farbige PS-Ausgabe erlauben
+#
+# 58: Paragraph output size
+#
+Größe
+#
+# 59: label resolution
+#
+Auflösung
+#
+# 60: Resolution 1 pixel = 1 point
+#
+1px=1pt
+#
+# 61: Resolution as specified in input file
+#
+Eingabedatei
+#
+# 62: Resolution as specified
+#
+Auflösung angeben:
+#
+# 63: Label paper size
+#
+Papiergröße:
+#
+# 64: Paragraph image quality
+#
+Bildqualität
+#
+# 65: Checkbox image interpolation
+#
+Interpolation
+#
+# 66: Tool tip text for checkbox image interpolation
+#
+Pixel-Interpolation erlauben
+#
+# 67: Checkbox image interpolation for JPEG
+#
+Interpolation auch für JPEG-Dateien
+#
+# 68: Tool tip text for checkbox image interpolation for JPEG files
+#
+Pixel-Interplation auch für DCT-Daten aus JPEG-Dateien erlauben
+#
+# 69: Paragraph transparency
+#
+Transparenz
+#
+# 70: Label background color
+#
+Hintergrund-Farbe:
+#
+# 71: Checkbox Force background color
+#
+Hintergrund-Farbe immer verwenden
+#
+# 72: Tool tip text for checkbox force background
+#
+Immer die angegebene Hintergrundfarbe verwenden, Angaben in Quelldatei ignorieren
+#
+# 73: Paragraph output format details
+#
+Details für Ausgabe
+#
+# 74: Label PS level
+#
+PS Level:
+#
+# 75: Label predictor
+#
+Predictor:
+#
+# 76: Predictor none
+#
+None
+#
+# 77: Predictor tiff
+#
+TIFF
+#
+# 78: Predictor sub
+#
+PNG-SUB
+#
+# 79: Predictor up
+#
+PNG-UP
+#
+# 80: Predictor average
+#
+PNG-AVERAGE
+#
+# 81: Predictor paeth
+#
+PNG-PAETH
+#
+# 82: Checkbox DSC
+#
+DSC
+#
+# 83: Tool tip text for checkbox dsc
+#
+DSC-Kommentare erzeugen
+#
+# 84: Button text OK
+#
+OK
+#
+# 85: Tool tip for OK button
+#
+Einstellungen übernehmen und Dialogbox verlassen
+#
+# 86: Button Cancel
+#
+Abbrechen
+#
+# 87: Tool tip for cancel button
+#
+Einstellungen verwerfen und Dialogbox verlassen
+#
+# 88: Tool tip for color viewer.
+#
+Klicken Sie hier, um die Hintergrundfarbe einzustellen
+#
+# 89: Check box: Use DCT compressed data from JPEGs directly
+#
+DCT-Daten aus JPEG-Dateien direkt benutzen
+#
+# 90: Tool tip text: Allow direct re-usse of DCT compressed data from JPEGs
+#
+DCT-komprimierte Daten aus JPEG-Dateien direkt benutzen
+#
+# 91: Tool tip: Choose output format
+#
+Ausgabeformat auswählen: PS / EPS / PDF oder Bounding Box
+#
+# 92: Tool tip: Choose output type
+#
+Ausgabe-Typ auswählen: Bild / Objekt / Dokument
+#
+# 93: Tool tip: Choose finishing
+#
+Fertigstellung auswählen: Einseitig / Doppelseitig (Buch) / Doppelseitig (Kalender)
+#
+# 94: Tool tip: Choose resolution handling
+#
+Auflösung festlegen: 1 pixel = 1 PS Point / Eingabedatei-Auflösung / Auflösung angeben / Papiergröße
+#
+# 95: Tool tip: Choose a paper size
+#
+Wählen Sie die Papiergröße. Großgeschriebene Papiergrößen-Namen verwenden das Blatt komplett, kleingeschriebene Namen lassen einen Rand
+#
+# 96: Tool tip: Choose a PS level
+#
+Wählen Sie den PS-Level (2 oder 3)
+#
+# 97: Tool tip: Choose a predictor for flate compression
+#
+Wählen Sie einen Predictor für die Flate-Kompression (im Zweifelsfall keinen)
+#
+# 98: Tool tip: Specify a resolution in dpi
+#
+Geben Sie die Auflösung in dpi (Pixel pro Inch) an
+#
+# 99: Menu item: Setup...
+#
+Einstellungen... Alt-E
+#
+# 100: Tool tip for menu item Setup
+#
+Einstellungen für die Konvertierung vornehmen
+#
+# 101: Menu item: Reset options
+#
+Reset... Alt-R
+#
+# 102: Tool tip for menu item Reset options
+#
+Einstellungen auf sinnvolle Standardwerte zurücksetzen
+#
+# 103: Question: Do you really want to reset all options to default values?
+#
+Wollen Sie wirklich alle Einstellungen auf die Standardwerte zurücksetzen?
+#
+# 104: Message box title: Reset all conversion options to default values
+#
+Sind Sie sicher?
+#
+# 105: Error: Not enough memory!
+#
+Zu wenig Hauptspeicher!
+#
+# 106/107: Message: Processing directory "..." (start).
+#
+Verzeichnis "
+" wird bearbeitet.
+#
+# 108/109: Message: Processing directory "..." (finished).
+#
+Verzeichnis "
+" wurde bearbeitet.
+#
+# 110: Newline
+#
+\n
+#
+# 111/112: Error: File name too long!
+#
+Dateiname zu lang:\n"
+"!
+#
+# 113: Error: No file found to convert
+#
+Keine in Frage kommenden Quelldateien gefunden!
+#
+# 114/115: Message: Processing file "..." (start).
+#
+Datei "
+" wird verarbeitet.
+#
+# 116/117: Message: Processing file "..." (finished).
+#
+Datei "
+" wurde verarbeitet.
+#
+# 118/119: Error: File name "..." contains unconvertable characters!
+#
+Der Dateiname "
+" enthält Zeichen, die nicht vearbeitet werden können!
+#
+# 120: Checkbox: Reduce bits per components
+#
+Bits per component reduzieren
+#
+# 121: Tool tip text: Reduce bits per component if possible
+#
+Versuchen, die Bits pro Farbkomponente zu reduzieren
+#
+# 122: Dialog box title: About wxbmpp
+#
+Ãœber wxbmpp
+#
+# 123: This program uses libraries from the following projects
+#
+Dieses Programm nutzt Bibliotheken aus den folgenden Projekten:\n
+#
+# 124: See:
+#
+Siehe:\n
diff --git a/support/dktools/dktools/de/wxdkclock.str b/support/dktools/dktools/de/wxdkclock.str
new file mode 100644
index 0000000000..829b045f6c
--- /dev/null
+++ b/support/dktools/dktools/de/wxdkclock.str
@@ -0,0 +1,116 @@
+#
+# 0: Menu "File"
+#
+Datei
+#
+# 1: Menu item "File/Exit"
+#
+Beenden
+#
+# 2: Tool tip text for menu item "File/Exit"
+#
+Anwendung beenden
+#
+# 3: Menu "Help"
+#
+Hilfe
+#
+# 4: Menu item "Help/About"
+#
+Ãœber
+#
+# 5: Tooltip text for menu item "Help/About"
+#
+Versions-Informationen anzeigen
+#
+# 6: Menu item "Help/Contents"
+#
+Inhalt
+#
+# 7: Tooltip text for menu item "Help/Contents"
+#
+Inhaltsverzeichnis der Online-Hilfe öffnen
+#
+# 8: Check box in options dialog
+#
+Wecken
+#
+# 9: Copyright notice.
+#
+Copyright (c)
+#
+# 10: Dialog box title "About ..."
+#
+Ãœber
+#
+# 11: This program uses the following libraries
+#
+Dieses Programm benutzt die folgenden Bibliotheken:
+#
+# 12: See
+#
+Siehe:
+#
+# 13: __CHANGE__ 015: Text for dummy label, can be reused if lDummy removed.
+#
+Optionen
+#
+# 14 15: Menu item: Options
+#
+Wecken
+Wecken ein- und ausschalten, Weckzeit einstellen
+#
+# 16: Dialog box title
+#
+Optionen
+#
+# 17 18: OK button
+#
+OK
+Einstellungen anwenden und Dialogbox schließen
+#
+# 19 20: Cancel button
+#
+Abbrechen
+Dialogbox schließen und Einstellungen verwerfen
+#
+# 21: Minute
+#
+Minute:
+#
+# 22: Hour
+#
+Stunde:
+#
+# 23: Tool tip "Enable or disable alert"
+#
+Wecken ein- und ausschalten
+#
+# 24 25: Tool tips Choose alert time.
+#
+Weckzeit (Stunde) auswählen
+Weckzeit (Minute) auswählen
+#
+# 26 27
+#
+Fenster wiederherstellen
+Anwendung beenden
+#
+# 28 29
+#
+Task-Leiste
+Hauptfenster hinter Task-Leisten-Icon verstecken
+#
+# 30 Menu: Colour
+#
+Farbe
+#
+# 31 32 Menu item: Normal state
+#
+Normal
+Uhr-Farbe im Normalzustand
+#
+# 33 34 Menu item: Alert state
+#
+Alarm
+Uhr-Farbe bei Weckruf
diff --git a/support/dktools/dktools/de/wxdkct.str b/support/dktools/dktools/de/wxdkct.str
new file mode 100644
index 0000000000..d6a5c07478
--- /dev/null
+++ b/support/dktools/dktools/de/wxdkct.str
@@ -0,0 +1,333 @@
+#
+# 0: Program name
+#
+wxdkct
+#
+# 1: Application group name
+#
+dkt-3
+#
+# 2: Software vendor name
+#
+Dirk Krause
+#
+# 3: Menu: File
+#
+&Datei
+#
+# 4: Menu: Help
+#
+&Hilfe
+#
+# 5: Menu: File / Exit
+#
+&Beenden Alt-X
+#
+# 6: Menu: Help / About
+#
+&Ãœber... Alt-A
+#
+# 7: Tip text for menu entry File / Exit
+#
+Anwendung beenden
+#
+# 8: Tip text for menu entry Help / About
+#
+Versionsinformation anzeigen
+#
+# 9: Menu Help / Contents
+#
+&Inhalt F1
+#
+# 10: Menu tool tip Help / Contents
+#
+Inhaltsverzeichnis der Online-Hilfe
+#
+# 11: Label text: Directory
+#
+Verzeichnis:
+#
+# 12: Menu text: Choose Directory
+#
+&Verzeichnis Alt-V
+#
+# 13: Menu tool tip: Choose source directory
+#
+Quelltext-Verzeichnis wählen...
+#
+# 14: Menu text: Setup
+#
+&Einstellungen Alt-E
+#
+# 15: Menu tool tip: Set conversion options
+#
+Einstellungen vornehmen
+#
+# 16 Label text: yes, to stdout
+#
+ja, auf Standardausgabe
+#
+# 17: Toolbar button text: Directory
+#
+Verzeichnis
+#
+# 18: Toolbar button text: Options
+#
+Einstellungen
+#
+# 19: Toolbar button text: Run
+#
+Start
+#
+# 20: Toolbar button text: Exit
+#
+Beenden
+#
+# 21: Toolbar button tooltip: Choose directory
+#
+Quelltext-Verzeichnis auswählen
+#
+# 22: Toolbar button tooltip: Set options.
+#
+Einstellungen vornehmen
+#
+# 23: Toolbar button tooltip: Run conversion
+#
+Konvertierung starten
+#
+# 24: Toolbar button tooltip: Exit the application
+#
+Anwendung beenden
+#
+# 25: Current directory.
+#
+.
+#
+# 26: Button text: OK
+#
+OK
+#
+# 27: Button text: Cancel
+#
+Abbrechen
+#
+# 28: Button tool tip for OK button.
+#
+Dialog schließen, Einstellungen anwenden
+#
+# 29: Button tool tip for cancel button.
+#
+Dialog schließen, Einstellungen verwerfen
+#
+# 30: Dialog title: Options
+#
+Einstellungen
+#
+# 31: Checkbox label: Use make mode
+#
+"make"-Modus
+#
+# 32: Checkbox tool tip: Run conversions only if necessary.
+#
+Nur konvertieren, falls nötig
+#
+# 33: Static box title: General options
+#
+Allgemeine Einstellungen
+#
+# 34: Static box title: Output
+#
+Ausgabe
+#
+# 35: Checkbox label: Line numbers
+#
+Zeilennummern
+#
+# 36: Static box title: Debug
+#
+Debugging
+#
+# 37: Checkbox label: Create debug output
+#
+Debug-Ausgaben erzeugen
+#
+# 38: Checkbox label: Debug to standard output
+#
+Debug-Ausgaben in die Standardausgabe
+#
+# 39: Checkbox label: Include timestamp
+#
+Debug-Ausgaben mit Zeitstempel
+#
+# 40: Checkbox label: Use trace keyword
+#
+Debug-Ausgaben mit Text "trace" beginnen
+#
+# 41: Checkbox label: Wide character support
+#
+Debug-Ausgaben mit Support für Windows-16-Bit-Text
+#
+# 42: Checkbox tool tip: Create line number directives
+#
+Zeilennummern-Direktiven für C-Compiler
+#
+# 43: Checkbox tool tip: Generate code for debug messages
+#
+Code mit Trace/Debug-Ausgaben erzeugen
+#
+# 44: Checkbox tool tip: Write trace/debug messages to standard output
+#
+Trace/Debug-Ausgaben in die Standardausgabe schreiben
+#
+# 45: Checkbox tool tip: Include a timestamp into debug messages
+#
+Trace/Debug-Ausgaben mit Uhrzeit versehen
+#
+# 46: Checkbox tool tip: Include "trace" keyword into debug messages
+#
+Trace/Debug-Ausgaben mit Schlüsselwort "trace" versehen
+#
+# 47: Checkbox tool tip: Add support for TRACE_WIDE
+#
+Trace/Debug-Ausgaben mit Support für 16-Bit-Text für Windows
+#
+# 48: Dialog title: Conversion progress
+#
+Fortschritt
+#
+# 49: File name (empty string)
+#
+
+#
+# 50: Button text: Cancel
+#
+Abbrechen
+#
+# 51: Button tool tip: Abort conversion after finishing current file
+#
+Abbruch nach Verarbeitung der gerade bearbeiteten Datei
+#
+# 52: Notification text: Cancel command scheduled... Wait, please!
+#
+Abbruch eingeleitet... Bitte warten!
+#
+# 53: Directory dialog title: Choose directory
+#
+Verzeichnis wählen
+#
+# 54: Message text: Directory:
+#
+Verzeichnis:
+#
+# 55: Message text: Destination files up to date.
+#
+Alle Zieldateien sind aktuell.
+#
+# 56: Message text: Processing succeeded.
+#
+Verarbeitung erfolgreich.
+#
+# 57: Message text:Processing failed!
+#
+Verarbeitung fehlgeschlagen!
+#
+# 58: Error: Can not handle directory name!
+#
+FEHLER: Der Verzeichnisname kann nicht verwendet werden!
+#
+# 59/60: Error: Failed to open directory "..."!
+#
+FEHLER: Verzeichnis "
+" kann nicht geöffnet werden!
+#
+# 61/62: Error: File name is not plain ASCII text: "..."!
+#
+FEHLER: Nicht-ASCII-Zeichen in Dateinamen: "
+"!
+#
+# 63: Error: Not enough memory!
+#
+FEHLER: Zu wenig Speicher!
+#
+# 64: Menu item: Run
+#
+&Start Alt-S
+#
+# 65: Menut tool tip: Start conversion
+#
+Konvertierung starten
+#
+# 66: About dialog title.
+#
+Ãœber wxdkct
+#
+# 67: Empty text (initial status text).
+#
+
+#
+# 68: Run result: Processing succeeded
+#
+Verarbeitung erfolgreich
+#
+# 69: Run result: Warnings occured
+#
+Warnungen
+#
+# 70: Run result: Errors occured
+#
+Fehler
+#
+# 71: ERROR: Automatic run cancelled due to errors.
+#
+Automatischer Start wegen Fehlern nicht möglich!
+#
+# 72: Autorun result: Processing succeeded, application will exit.
+#
+Verarbeitung erfolgreich, Anwendung wird beendet.
+#
+# 73: Newline
+#
+\n
+#
+# 74: This program uses libraries from the following projects:
+#
+Dieses Programm verwendet Bibliotheken aus folgenden Projekten:\n
+#
+# 75: See:
+#
+Siehe:\n
+#
+# 76-93: Special character candidates for splint.
+#
+@
+^
+°
+!
+"
+§
+$
+%
+&
+?
+~
+\#
+|
+,
+;
+.
+:
+_
+#
+# 94-95: Comments for splint
+#
+Kommentare für splint
+Schreibe Kommentare für splint
+#
+# 96: Choose comment character for splint
+#
+Kommentar-Zeichen für splint auswählen
+#
+# 97 98 Check box: Portable debug code and tool tip
+#
+Portabler Trace-Code
+Code für Trace-Ausgabe portabel gestalten
diff --git a/support/dktools/dktools/de/wxdkfcs.str b/support/dktools/dktools/de/wxdkfcs.str
new file mode 100644
index 0000000000..422c8176be
--- /dev/null
+++ b/support/dktools/dktools/de/wxdkfcs.str
@@ -0,0 +1,79 @@
+#
+# 0: Menu "File"
+#
+Datei
+#
+# 1: Menu item "File/Exit"
+#
+Beenden
+#
+# 2: Tool tip text for menu item "File/Exit"
+#
+Anwendung beenden
+#
+# 3: Menu "Help"
+#
+Hilfe
+#
+# 4: Menu item "Help/About"
+#
+Ãœber wxdkfcs
+#
+# 5: Tooltip text for menu item "Help/About"
+#
+Versions-Information anzeigen
+#
+# 6: Menu item "Help/Contents"
+#
+Inhalt
+#
+# 7: Tooltip text for menu item "Help/Contents"
+#
+Inhaltsverzeichnis der Online-Hilfe
+#
+# 8: Initial status text
+#
+Bereit
+#
+# 9: Copyright notice.
+#
+Copyright (c)
+#
+# 10: Dialog box title "About ..."
+#
+Ãœber wxdkfcs
+#
+# 11: This program uses the following libraries
+#
+Dieses Programm benutzt die folgenden Bibliotheken:
+#
+# 12: See
+#
+Siehe:
+#
+# 13: __CHANGE__ 015: Text for dummy label, can be reused if lDummy removed.
+#
+Datei:
+#
+# 14 ... 20: Label MD5
+#
+MD5
+RIPEMD-160
+SHA-1
+SHA-224
+SHA-256
+SHA-384
+SHA-512
+#
+# 21: Column head
+#
+Prüfsumme
+#
+# 22: wxFileDialog header line
+#
+Datei auswählen
+#
+# 23 24: Menu item File/Open
+#
+Öffnen
+Datei auswählen und öffnen
diff --git a/support/dktools/dktools/de/wxdkhtb.str b/support/dktools/dktools/de/wxdkhtb.str
new file mode 100644
index 0000000000..ea5114c2b7
--- /dev/null
+++ b/support/dktools/dktools/de/wxdkhtb.str
@@ -0,0 +1,76 @@
+#
+# 0: Menu "File"
+#
+Datei
+#
+# 1: Menu item "File/Exit"
+#
+Beenden
+#
+# 2: Tool tip text for menu item "File/Exit"
+#
+Anwendung beenden
+#
+# 3: Menu "Help"
+#
+?
+#
+# 4: Menu item "Help/About"
+#
+Ãœber
+#
+# 5: Tooltip text for menu item "Help/About"
+#
+Versionsnummer anzeigen
+#
+# 6: Menu item "Help/Contents"
+#
+Inhalt
+#
+# 7: Tooltip text for menu item "Help/Contents"
+#
+Inhaltsverzeichnis der *.htb-Datei öffnen
+#
+# 8: Initial status text
+#
+Bereit
+#
+# 9: Copyright notice.
+#
+Copyright (c)
+#
+# 10: Dialog box title "About ..."
+#
+Information
+#
+# 11: This program uses the following libraries
+#
+Dieses Programm benutzt die folgenden Bibliotheken:
+#
+# 12: See
+#
+Siehe auch:
+#
+# 13: Text for dummy label, can be reused if lDummy removed.
+#
+Hauptfenster des HTB-Viewers
+#
+# 14: No help controller created
+#
+Kein Hilfe-Controller wurde erstellt!
+#
+# 15: Error
+#
+Fehler
+#
+# 16
+#
+Auf der Kommandozeile wurde kein *.htb-Dateiname angegeben!
+#
+# 17
+#
+Die angegebene *.htb-Datei existiert nicht!
+#
+# 18
+#
+Hilfe-Controller konnte nicht angelegt werden, Speicher/Resourcen-Problem!
diff --git a/support/dktools/dktools/de/wxdkscrsz.str b/support/dktools/dktools/de/wxdkscrsz.str
new file mode 100644
index 0000000000..bcb5c74d29
--- /dev/null
+++ b/support/dktools/dktools/de/wxdkscrsz.str
@@ -0,0 +1,120 @@
+#
+# 0: Menu "File"
+#
+Datei
+#
+# 1: Menu item "File/Quit"
+#
+Beenden
+#
+# 2: Tool tip text for menu item "File/Exit"
+#
+Anwendung beenden
+#
+# 3: Menu "Help"
+#
+Hilfe
+#
+# 4: Menu item "Help/About"
+#
+Ãœber
+#
+# 5: Tooltip text for menu item "Help/About"
+#
+Version anzeigen
+#
+# 6: Menu item "Help/Contents"
+#
+Inhalt
+#
+# 7: Tooltip text for menu item "Help/Contents"
+#
+Inhaltsverzeichnis öffnen
+#
+# 8: Initial status text
+#
+Bereit
+#
+# 9: Copyright notice.
+#
+Copyright (c)
+#
+# 10: Dialog box title "About ..."
+#
+Ãœber
+#
+# 11: This program uses the following libraries
+#
+Dieses Programm benutzt folgende Bibliotheken:
+#
+# 12: See
+#
+Siehe:
+#
+# 13: __CHANGE__ 015: Text for dummy label, can be reused if lDummy removed.
+#
+Änderungsvorgang:
+#
+# __CHANGE__ 016: Add further texts as required.
+#
+# 14
+#
+Noch nicht gestartet
+#
+# 15
+#
+Gestartet
+#
+# 16
+#
+Erfolgreich
+#
+# 17
+#
+Fehlgeschlagen
+#
+# 18
+#
+Fehler
+#
+# 19
+#
+Die aktuellen Bildschirm-Einstellungen konnten nicht ermittelt werden!
+#
+# 20
+#
+Die Bildschirmgröße konnte nicht geändert werden!
+#
+# 21
+#
+Dieses Programm ist nur für Windows verfügbar!
+#
+# 22 23
+#
+Keine vorzeichenlose ganze Zahl: "
+"!
+#
+# 24
+#
+Kommandozeilenargumente erforderlich: Breit, Höhe
+#
+# 25
+#
+Alte Bildschirmgröße
+#
+# 26 27
+#
+Breite:
+Höhe:
+#
+# 28 Empty string
+#
+
+#
+# 29 New screen size
+#
+Neue Bildschirmgröße
+#
+# 30 Result
+#
+Ergebnis
diff --git a/support/dktools/dktools/de/wximgsz.str b/support/dktools/dktools/de/wximgsz.str
new file mode 100644
index 0000000000..94bcaa16e2
--- /dev/null
+++ b/support/dktools/dktools/de/wximgsz.str
@@ -0,0 +1,225 @@
+#
+# 0 Program name.
+#
+wximgsz
+#
+# 1 Menu name: File
+#
+Datei
+#
+# 2 Menu item: File => Exit
+#
+Beenden Alt-B
+#
+# 3 Data grid column head: Width
+#
+Breite
+#
+# 4 Data grid column head: Height
+#
+Höhe
+#
+# 5 Data grid column head: Factor
+#
+Faktor
+#
+# 6 Label text: Original image
+#
+Original-Bild
+#
+# 7 Label text: Results
+#
+Ergebnis
+#
+# 8 Label text: Width:
+#
+Breite:
+#
+# 9 Label text: Height:
+#
+Höhe:
+#
+# 10 Label text: Intended change
+#
+Gewünschte Änderung
+#
+# 11 Label text: Action:
+#
+Bearbeitung:
+#
+# 12 Choice: Decrease image
+#
+Bild verkleinern
+#
+# 13 Choice: Width range
+#
+Breitenbereich
+#
+# 14 Choice: Height range
+#
+Höhenbereich
+#
+# 15 Label: Minimum:
+#
+Minimum:
+#
+# 16 Label: Maximum:
+#
+Maximum:
+#
+# 17 Button label: Run
+#
+>>>
+#
+# 18 Empty text for initial status
+#
+
+#
+# 19 Tooltip: Exit the application
+#
+Anwendung beenden
+#
+# 20 Tooltip: Specify original image width
+#
+Original-Bildbreite eingeben (positiv ganzzahlig).
+#
+# 21 Tooltip: Specify original image height
+#
+Original-Bildhöhe eingeben (positiv ganzzahlig).
+#
+# 22 Tooltip: Choose type of modification
+#
+Gewünschte Bearbeitung auswählen.
+#
+# 23 Tooltip: Specify intended minimum for image width or height
+#
+Gewünschtes Minimum für Bildbreite bzw. -höhe eingeben.
+#
+# 24 Tooltip: Specify intended maximum for image width or height
+#
+Gewünschtes Maximum für Bildbreite bzw. -höhe eingeben.
+#
+# 25 Tooltip: Calculate new image sizes
+#
+Berechnung starten.
+#
+# 26 Spaces to initialize text fields
+#
+
+#
+# 27 Menu: Help
+#
+Hilfe
+#
+# 28 Menu item: Contents
+#
+Inhaltsverzeichnis
+#
+# 29 Menu item: About
+#
+Ãœber...
+#
+# 30 Menu tip: Open table of contents
+#
+Inhaltsverzeichnis der Online-Hilfe öffnen.
+#
+# 31 Menu tip: Show version number dialog box
+#
+Versionsnummer anzeigen.
+#
+# 32 Error message title: Incorrect input
+#
+Fehlerhafte Eingabe
+#
+# 33 Error message text: Please enter a postivie integer number.
+#
+Bitte geben Sie einen positiven ganzzahligen Wert ein!
+#
+# 34 Status message: No results found!
+#
+Keine Ergebnisse erzielt!
+#
+# 35 About box title.
+#
+Ãœber wximgsz
+#
+# 36 Indicator for best quality
+#
+++
+#
+# 37 Indicator for good quality
+#
++
+#
+# 38 Menu: Extras
+#
+Extras
+#
+# 39 Menu item: Options
+#
+Optionen
+#
+# 40 Tip: Set options
+#
+Einstellungen für das Programm ändern
+#
+# 41 Dialog box title: Options
+#
+Einstellungen
+#
+# 42 Checkbox text: Choose background color by scale factor quality
+#
+Hintergrundfarbe für Skalierungsfaktor
+#
+# 43 Tooltip text: Indicate scale factor quality by background colour.
+#
+Hintergrundfarbe entsprechend Qualität des Skalierungsfaktors verwenden.
+#
+# 44 Button: OK
+#
+OK
+#
+# 45 Button: Cancel
+#
+Abbrechen
+#
+# 46 Tool tip text: Apply settings and exit dialog.
+#
+Einstellungen anwenden und Dialog verlassen.
+#
+# 47 Tool tip text: Skip settings and exit dialog.
+#
+Einstellungen verwerfen und Dialog verlassen.
+#
+# 48
+#
+Bitmap-Datei auswählen
+#
+# 49
+#
+Öffnen Alt-O
+#
+# 50
+#
+Bildabmessungen aus Bilddatei verwenden.
+#
+# 51
+#
+Die Datei konnte nicht geladen werden!\nMöglicherweise ist die Datei beschädigt oder der Bildtyp wird von wximgsz nicht unterstützt.
+#
+# 52
+#
+Bilddatei nicht geladen!
+#
+# 53
+#
+\n
+#
+# 54
+#
+Dieses Programm benutzt Bibliotheken aus folgenden Projekten:\n
+#
+# 55
+#
+Siehe:\n
+
diff --git a/support/dktools/dktools/de/wxpqdc.str b/support/dktools/dktools/de/wxpqdc.str
new file mode 100644
index 0000000000..aefac35d3b
--- /dev/null
+++ b/support/dktools/dktools/de/wxpqdc.str
@@ -0,0 +1,189 @@
+#
+# 0: Menu "File"
+#
+Datei
+#
+# 1: Menu item "File/Quit"
+#
+Beenden
+#
+# 2: Tool tip text for menu item "File/Exit"
+#
+Die Anwendung beenden
+#
+# 3: Menu "Help"
+#
+Hilfe
+#
+# 4: Menu item "Help/About"
+#
+Ãœber
+#
+# 5: Tooltip text for menu item "Help/About"
+#
+Versionshinweise anzeigen
+#
+# 6: Menu item "Help/Contents"
+#
+Inhalt
+#
+# 7: Tooltip text for menu item "Help/Contents"
+#
+Inhaltsverzeichnis der Hilfe öffnen
+#
+# 8: Initial status text
+#
+Bereit
+#
+# 9: Copyright notice.
+#
+Copyright (c)
+#
+# 10: Dialog box title "About ..."
+#
+Ãœber
+#
+# 11: This program uses the following libraries
+#
+Dieses Programm benutzt die nachfolgenden Bibliotheken:
+#
+# 12: See
+#
+Siehe:
+#
+# 13: Label text "Limit:"
+#
+Limit:
+#
+# 14: Limit value "unlimited"
+#
+unbegrenzt
+#
+# 15: Label text "Used:"
+#
+Verbraucht:
+#
+# 16: Dummy label text to initialize number of used pages
+#
+00000000
+#
+# 17: Label text "Personal print account:"
+#
+Pers. Seiten-Guthaben:
+#
+# 18: Label text "Printing allowed:"
+#
+Drucken möglich:
+#
+# 19 20: Result text values
+#
+JA
+NEIN
+#
+# 21: Label text "Waiting for response from server."
+#
+Antwort vom Server wird erwartet.
+#
+# 22: Menu "View"
+#
+Anzeige
+#
+# 23: Menu item: View -> Update
+#
+Aktualisieren
+#
+# 24: Tool tip text for menu item: View -> Update
+#
+Informationen im Fenster aktualisieren
+#
+# 25: Toolbar button text "Update"
+#
+Aktualisieren
+#
+# 26: Toolbar button text "Exit"
+#
+Beenden
+#
+# 27: Information: unknown
+#
+unbekannt
+#
+# 28: Error: Failed to send request
+#
+Anfrage konnte nicht gesendet werden!
+#
+# 29: Error: No response from server!
+#
+Keine Antwort vom Server!
+#
+# 30 31
+#
+Kommandozeile
+Die angegebene Kommandozeile konnte nicht verarbeitet werden!
+#
+# 32 33
+#
+Speicher
+Nicht ausreichend Hauptspeicher vorhanden!
+#
+# 34 35
+#
+Unzulässiger Host-Name
+Der Host-Name konnte nicht verarbeitet werden!
+#
+# 36 37
+#
+Host-Name fehlt
+Bitte benutzen Sie\n-h host\num den Host-Namen anzugeben!
+#
+# 38 39
+#
+Unzulässiger Queue-Name
+Der Queue-Name konnte nicht verarbeitet werden!
+#
+# 40 41
+#
+Queue-Name fehlt
+Bitte benutzen Sie\n-q queue\num den Queue-Namen anzugeben!
+#
+# 42 43 44
+#
+Unzulässiger Remote-Port
+Die Portnummer ist zu groß (keine 16-Bit-Zahl)!
+Portnummer 0 kann nicht benutzt werden!
+#
+# 45 46
+#
+Unzulässiger Nutzer-Name
+Der Nutzer-Name konnte nicht verarbeitet werden!
+#
+# 47 48
+#
+Nutzer-Name fehlt
+Bitte benutzen Sie\n-u user\num den Nutzer-Namen anzugeben!
+#
+# 49 50 51
+#
+Unzulässiger lokaler Port
+Die Portnummer ist zu groß (keine 16-Bit-Zahl)!
+Portnummer 0 kann nicht benutzt werden!
+#
+# 52 53
+#
+Bug
+Der Request-String konnte nicht konstruiert werden!
+#
+# 54 55
+#
+Zahlenbereichs-Ãœberlauf
+Eine Größenberechnung schlug wegen Zahlenbereichs-Überlauf fehl!
+#
+# 56 57
+#
+Netzwerk-Fehler
+Die Socket zur Kommunikation mit dem Server konnte nicht erstellt werden!
+#
+# 58 59
+#
+Fehler
+Ein nicht näher bekannter Fehler trat auf!
diff --git a/support/dktools/dktools/de/x.txt b/support/dktools/dktools/de/x.txt
new file mode 100644
index 0000000000..b9c96c6538
--- /dev/null
+++ b/support/dktools/dktools/de/x.txt
@@ -0,0 +1,46 @@
+
+BEZEICHNUNG
+
+ÃœBERSICHT
+
+BESCHREIBUNG
+
+OPTIONEN
+
+EXIT-STATUS
+
+0 bei Erfolg, alle anderen Exit-Codes weisen auf Fehler hin.
+
+FEHLER
+
+DIAGNOSE-MELDUNGEN
+
+BEISPIELE
+
+ENVIRONMENT
+
+DATEIEN
+
+WARNUNGEN
+
+BUGS / FEHLER
+
+EINSCHRÄNKUNGEN
+
+HINWEISE
+
+AUTOR
+
+Dirk Krause
+
+GESCHICHTE
+
+COPYRIGHT UND LIZENZBESTIMMUNGEN
+
+Führen Sie
+ XXXXX --license
+aus, um Lizenz-Informationen anzuzeigen.
+
+SIEHE AUCH
+
+http://dktools.sourceforge.net
diff --git a/support/dktools/dktools/dkwxwiza.txt b/support/dktools/dktools/dkwxwiza.txt
new file mode 100644
index 0000000000..76837b34d1
--- /dev/null
+++ b/support/dktools/dktools/dkwxwiza.txt
@@ -0,0 +1,419 @@
+%% options
+
+# __CHANGE__ 001: Correct copyright owner if necessary.
+copyright owner = $copyrightowner$
+
+# __CHANGE__ 003: Correct copyright year(s) if necessary.
+copyright year = $year$
+
+# __CHANGE__ 002: Correct license type if necessary.
+# Use "bsd", "gpl", "lgpl", or "commercial".
+license = bsd
+
+
+
+%% header
+
+/** @file $application$.h The $application$ class.
+*/
+
+
+
+/** Application class, derived from wxApp, one instance per program.
+*/
+class $application$ : public wxApp
+{
+ protected:
+
+ /** Helper object.
+ */
+ Dk4WxApplicationHelper *pAh;
+
+ /** Controller fr online help.
+ */
+ Dk4WxHelpController *pHc;
+
+ /* __CHANGE__ 009: Add further members here.
+ */
+
+ protected:
+
+ /** Show error message if there is not enough memory available.
+ */
+ void
+ ShowMemoryErrorMessage(void);
+
+ public:
+
+ /** Application initialization.
+ @return true on success, false on error.
+ */
+ virtual
+ bool
+ OnInit();
+
+ /** Application shutdown.
+ @return 0 on success, any other value indicates an error.
+ */
+ virtual
+ int
+ OnExit();
+};
+
+
+
+/** Declaration as the wxApp object.
+*/
+DECLARE_APP($application$)
+
+
+
+/* vim: set ai sw=4 ts=4 : */
+%% module
+
+#include "$program$.h"
+
+
+
+$!trace-include
+
+
+
+/** Localized wxChar texts.
+*/
+static wxChar const * $program$_texts[] = {
+$!string-table macro=wxT
+#
+# 0: Menu "File"
+#
+File
+#
+# 1: Menu item "File/Quit"
+#
+Quit
+#
+# 2: Tool tip text for menu item "File/Exit"
+#
+Exit the application
+#
+# 3: Menu "Help"
+#
+Help
+#
+# 4: Menu item "Help/About"
+#
+About
+#
+# 5: Tooltip text for menu item "Help/About"
+#
+Show version information
+#
+# 6: Menu item "Help/Contents"
+#
+Contents
+#
+# 7: Tooltip text for menu item "Help/Contents"
+#
+Open table of contents
+#
+# 8: Initial status text
+#
+Ready
+#
+# 9: Copyright notice.
+#
+Copyright (c)
+#
+# 10: Dialog box title "About ..."
+#
+About
+#
+# 11: This program uses the following libraries
+#
+This program uses the following libraries:
+#
+# 12: See
+#
+See:
+#
+# 13: __CHANGE__ 015: Text for dummy label, can be reused if lDummy removed.
+#
+Dummy text to have at least one label in the frame
+#
+# __CHANGE__ 016: Add further texts as required.
+#
+$!end
+};
+
+
+
+/** Non-localized wxChar texts.
+*/
+static wxChar const * $program$_nl_wx[] = {
+$!string-table macro=wxT
+#
+# 0: Program name. __CHANGE__ 004: Correct program name.
+#
+$program$
+#
+# 1: Program version. __CHANGE__ 005: Correct program version.
+#
+1.0.0
+#
+# 2: Copyright owner name. __CHANGE__ 001: Correct copyright owner name.
+#
+Copyright owner
+#
+# 3: Software vendor name. __CHANGE__ 007: Correct software vendor name
+# if necessary. Must be one
+# string without spaces.
+#
+SoftwareVendor
+#
+# 4: Resource name of Windows icon
+#
+aaaaa
+#
+# 5: UNUSED (previously Windows chm help file name)
+#
+
+#
+# 6: UNUSED (previously non-Windows htb help file name)
+#
+
+#
+# 7: Space
+#
+
+#
+# 8: Newline
+#
+\n
+#
+# 9 10 11 12 13 14 15: List of libraries used.
+#
+DK tools, wxWidgets, libpng, libjpeg, libtiff, zlib.
+http://dktools.sourceforge.net
+http://www.wxwidgets.org
+http://www.libpng.org/pub/png/libpng.html
+http://www.ijg.org
+http://www.remotesensing.org/libtiff
+http://www.zlib.net
+#
+# 16 17
+#
+Error
+Not enough memory (RAM)!
+$!end
+};
+
+
+
+/** Non-localized dkChar texts.
+*/
+static dkChar const * $program$_nl_dk[] = {
+$!string-table macro=dkT
+#
+# 0: Program group name. __CHANGE__ 006: Correct program group name.
+#
+$program$-group
+#
+# 1: String table name.
+#
+$program$.str
+#
+# 2: CHM help file name
+#
+$program$.chm
+#
+# 3: HTB help file name
+#
+$program$.htb
+$!end
+};
+
+
+
+/** Implementation of the wxApp functionality.
+*/
+IMPLEMENT_APP($application$)
+
+
+bool
+$application$::OnInit()
+{
+ $frame$ *frame = NULL;
+ wxChar const * const *localizedTexts = NULL;
+ wxPNGHandler *phPng = NULL;
+ wxXPMHandler *phXpm = NULL;
+ wxICOHandler *phIco = NULL;
+ wxArchiveFSHandler *phArchiveFS = NULL;
+ bool back = false;
+
+ $? "+ $application$::OnInit"
+
+ /* Initialize members.
+ */
+ pAh = NULL;
+ pHc = NULL;
+
+ /* __CHANGE__ 009: Initialize further members here.
+ */
+
+ /* Set up helper object.
+ */
+ pAh = new Dk4WxApplicationHelper();
+ if (NULL == pAh) {
+ ShowMemoryErrorMessage();
+ goto finished;
+ }
+ if (!(pAh->Initialize(argv[0], $program$_nl_wx[3], $program$_nl_dk[0]))) {
+ goto finished;
+ }
+
+ /* Add image and file system handlers for online help.
+ */
+ phPng = new wxPNGHandler();
+ if (NULL != phPng) {
+ wxImage::AddHandler(phPng);
+ }
+ else {
+ ShowMemoryErrorMessage();
+ goto finished;
+ }
+
+ phXpm = new wxXPMHandler();
+ if (NULL != phXpm) {
+ wxImage::AddHandler(phXpm);
+ }
+ else {
+ ShowMemoryErrorMessage();
+ goto finished;
+ }
+
+ phIco = new wxICOHandler();
+ if (NULL != phIco) {
+ wxImage::AddHandler(phIco);
+ }
+ else {
+ ShowMemoryErrorMessage();
+ goto finished;
+ }
+
+ phArchiveFS = new wxArchiveFSHandler();
+ if (NULL != phArchiveFS) {
+ wxFileSystem::AddHandler(phArchiveFS);
+ }
+ else {
+ ShowMemoryErrorMessage();
+ goto finished;
+ }
+
+ /* Set up help controller.
+ */
+ pHc = new Dk4WxHelpController();
+ if (NULL == pHc) {
+ ShowMemoryErrorMessage();
+ goto finished;
+ }
+ if (!(pHc->Initialize(pAh, $program$_nl_dk[2], $program$_nl_dk[3]))) {
+ goto finished;
+ }
+
+ /* Attempt to obtain localized texts in users preferred language.
+ */
+ localizedTexts = pAh->GetStringTable($program$_nl_dk[1], $program$_texts);
+ if(!(localizedTexts)) {
+ localizedTexts = $program$_texts;
+ }
+
+ /* Create and show frame.
+ */
+ frame = new $frame$(
+ $frame$_MainWindow,
+ pAh,
+ pHc,
+ argc,
+ argv,
+ localizedTexts,
+ $program$_nl_wx,
+ $program$_nl_dk
+ );
+ if(!(frame)) {
+ ShowMemoryErrorMessage();
+ goto finished;
+ }
+
+ /* Show frame, restore position and indicate success.
+ */
+ frame->Show();
+ frame->RestorePosition();
+ back = true;
+
+ /* Release resources if initialization failed.
+ */
+ finished:
+ if(!(back)) {
+ if (NULL != pHc) {
+ pHc->Cleanup(); delete(pHc); pHc = NULL;
+ }
+ if (NULL != pAh) {
+ pAh->Cleanup(); delete(pAh); pAh = NULL;
+ }
+ }
+ $? "- $application$::OnInit %d", (back ? 1 : 0)
+ return back;
+}
+
+
+
+int
+$application$::OnExit()
+{
+ int back = 0;
+
+ $? "+ $application$::OnExit"
+
+ /* __CHANGE__ 009: Release resources allocated by further members.
+ */
+
+ /* Release resources.
+ */
+ if (NULL != pHc) {
+ pHc->Cleanup(); delete(pHc); pHc = NULL;
+ }
+ if (NULL != pAh) {
+ pAh->Cleanup(); delete(pAh); pAh = NULL;
+ }
+
+ /* __CHANGE__ 010: Set exit status code.
+ */
+ $? "- $application$::OnExit %d", back
+ return back;
+}
+
+
+
+void
+$application$::ShowMemoryErrorMessage(void)
+{
+ const wxChar *s_title = NULL;
+ const wxChar *s_text = NULL;
+
+ if (NULL != pAh) {
+ s_title = pAh->GetBasicString(6);
+ s_text = pAh->GetBasicString(7);
+ }
+ if (NULL == s_title) {
+ s_title = $program$_nl_wx[16];
+ }
+ if (NULL == s_text) {
+ s_text = $program$_nl_wx[17];
+ }
+ wxMessageBox(s_text, s_title, (wxOK | wxCENTRE | wxICON_ERROR));
+}
+
+
+
+/* vim: set ai sw=4 ts=4 : */
+
diff --git a/support/dktools/dktools/dkwxwizc.txt b/support/dktools/dktools/dkwxwizc.txt
new file mode 100644
index 0000000000..847a11a55e
--- /dev/null
+++ b/support/dktools/dktools/dkwxwizc.txt
@@ -0,0 +1,45 @@
+dnl configure-script
+AC_INIT($frame$.h)
+dnl AC_CONFIG_HEADER(config.h)
+AC_PROG_CC
+AC_PROG_CPP
+AC_C_BIGENDIAN
+
+WXCPPFLAGS=''
+WXCXXFLAGS=''
+WXCFLAGS=''
+WXLDFLAGS=''
+WXCPPFLAGS=`wx-config --cppflags`
+WXCXXFLAGS=`wx-config --cxxflags`
+WXCFLAGS=`wx-config --cflags`
+WXLDFLAGS=`wx-config --libs`
+
+if [[ -f dk4info.out ]]
+then
+ rm -fr dk4info.out
+fi
+dk4info -l > dk4info.out
+
+ZLIBFLAG=`cat dk4info.out | grep DK4_HAVE_ZLIB_H | sed -e 's/[[ \t]][[ \t]]*//g' | cut -f 2 -d '='`
+BZLIBFLAG=`cat dk4info.out | grep DK4_HAVE_BZLIB_H | sed -e 's/[[ \t]][[ \t]]*//g' | cut -f 2 -d '='`
+
+ZLIB=''
+if [[ "X$ZLIBFLAG" = "X1" ]]
+then
+ ZLIB='-lz'
+fi
+BZLIB=''
+if [[ "X$BZLIBFLAG" = "X1" ]]
+then
+ BZLIB='-lbz2'
+fi
+
+AC_SUBST(WXCPPFLAGS)
+AC_SUBST(WXCXXFLAGS)
+AC_SUBST(WXLDFLAGS)
+AC_SUBST(WXCFLAGS)
+AC_SUBST(BZLIB)
+AC_SUBST(ZLIB)
+
+AC_OUTPUT(Makefile)
+
diff --git a/support/dktools/dktools/dkwxwizf.txt b/support/dktools/dktools/dkwxwizf.txt
new file mode 100644
index 0000000000..b91f94add4
--- /dev/null
+++ b/support/dktools/dktools/dkwxwizf.txt
@@ -0,0 +1,371 @@
+%% options
+
+# __CHANGE__ 001: Correct copyright owner if necessary.
+copyright owner = $copyrightowner$
+
+# __CHANGE__ 003: Correct copyright year(s) if necessary.
+copyright year = $year$
+
+# __CHANGE__ 002: Correct license type if necessary.
+# Use "bsd", "gpl", "lgpl", or "commercial".
+license = bsd
+
+
+
+%% wx-gui
+
+type = frame
+contents = mainSizer
+icon = $program$_icon
+status bar = 1 sTexts[8]
+menu bar = mbMain
+
+[wxMenuBar mbMain]
+contents = menuFile
+contents = menuHelp
+
+[wxMenu menuFile]
+text = sTexts[0]
+contents = miFileExit
+
+[wxMenuItem miFileExit]
+id = $frame$_Quit
+text = sTexts[1]
+tip = sTexts[2]
+
+[wxMenu menuHelp]
+text = sTexts[3]
+contents = miHelpAbout
+contents = miHelpContents
+
+[wxMenuItem miHelpAbout]
+id = $frame$_Help_About
+text = sTexts[4]
+tip = sTexts[5]
+
+[wxMenuItem miHelpContents]
+id = $frame$_Help_Contents
+text = sTexts[6]
+tip = sTexts[7]
+
+[wxBoxSizer mainSizer]
+direction = horizontal
+contents = $space(10)
+contents = verticalSizer
+contents = $space(10)
+
+[wxBoxSizer verticalSizer]
+direction = vertical
+grow = yes
+proportion = 1
+contents = $space(10)
+contents = contentsSizer
+contents = $space(10)
+
+[wxGridBagSizer contentsSizer]
+grid = 5 5
+
+# __CHANGE__ 015: The dummy label was added to have at least
+# one GUI element in the sizer.
+# Remove lDummy (next 4 lines) and add the real
+# window contents here.
+contents = lDummy 0 0 1 1 left
+
+[wxStaticText lDummy]
+text = sTexts[13]
+
+
+
+%% header start
+
+
+
+%% class start
+class $frame$ : public Dk4WxFrame
+{
+ private:
+
+ /** Event table for frame.
+ */
+ DECLARE_EVENT_TABLE()
+
+ protected:
+
+ /** Localized texts.
+ */
+ wxChar const * const *sTexts;
+
+ /** Non-localized texts.
+ */
+ wxChar const * const *sNlWx;
+
+ /** Non-localized texts.
+ */
+ dkChar const * const *sNlDk;
+
+ /* __CHANGE__ 011: Add further member variables.
+ */
+
+%% class end
+
+ public:
+
+ /** Constructor.
+ @param wxid Window ID.
+ @param applicationHelper Application helper object.
+ @param hc Help controller for online help.
+ @param argc Number of command line arguments.
+ @param argv Command line arguments array.
+ @param localizedTexts Localized wxChar texts.
+ @param nlWx Non-localized wxChar texts.
+ @param nlDk Non-localized dkChar texts.
+ */
+ $frame$(
+ int wxid,
+ Dk4WxApplicationHelper *applicationHelper,
+ Dk4WxHelpController *hc,
+ int argc,
+ wxChar **argv,
+ wxChar const * const *localizedTexts,
+ wxChar const * const *nlWx,
+ dkChar const * const *nlDk
+ );
+
+ /** Destructor.
+ */
+ ~$frame$();
+
+ /** Check whether we can close the window.
+ @param isLast Flag: Last main window to close.
+ */
+ bool
+ CanClose(bool isFinal);
+
+ /** Handler for File/Exit.
+ @param event Event to process.
+ */
+ void
+ OnQuit(wxCommandEvent & event);
+
+ /** Handler for Help/About.
+ @param event Event to process.
+ */
+ void
+ OnAbout(wxCommandEvent & event);
+
+ /** Handler for Help/Contents.
+ @param event Event to process.
+ */
+ void
+ OnHelpContents(wxCommandEvent & event);
+
+ /* __CHANGE__ 008: Remove OnIdle if no idle processing required.
+ */
+ /** Handler for idle events.
+ */
+ void
+ OnIdle(wxIdleEvent & event);
+
+ /* __CHANGE__ 017: Event handlers for further events.
+ */
+
+ /* __CHANGE__ 014: Add further methods.
+ */
+
+};
+
+%% header end
+
+
+/* vim: set ai sw=4 ts=4 : */
+%% module start
+
+#include "$program$.h"
+
+
+#if !defined(__WXMSW__)
+#include "$program$.xpm"
+#endif
+
+
+
+$!trace-include
+
+
+
+/* __CHANGE__ 017: Add further events. */
+/* __CHANGE__ 008: Remove OnIdle if no idle processing required. */
+BEGIN_EVENT_TABLE($frame$, wxFrame)
+ EVT_MENU($frame$_Quit, $frame$::OnQuit)
+ EVT_MENU($frame$_Help_About, $frame$::OnAbout)
+ EVT_MENU($frame$_Help_Contents, $frame$::OnHelpContents)
+ EVT_IDLE($frame$::OnIdle)
+END_EVENT_TABLE()
+
+
+
+%% constructor start
+$frame$::$frame$(
+ int wxid,
+ Dk4WxApplicationHelper *applicationHelper,
+ Dk4WxHelpController *hc,
+ int argc,
+ wxChar **argv,
+ wxChar const * const *localizedTexts,
+ wxChar const * const *nlWx,
+ dkChar const * const *nlDk
+) : Dk4WxFrame(nlWx[0], applicationHelper, hc, wxid)
+{
+ $? "+ $frame$::$frame$"
+ /* __CHANGE__ 012: Add further local variables.
+ */
+
+ /* __CHANGE__ 012: Initialize further local variables.
+ */
+
+ sTexts = localizedTexts;
+ sNlWx = nlWx;
+ sNlDk = nlDk;
+#if defined(__WXMSW__)
+ wxIcon $program$_icon(sNlWx[4]);
+#else
+ wxIcon $program$_icon($program$_xpm);
+#endif
+
+ /* __CHANGE__ 011: Initialize further class members.
+ */
+
+%% constructor end
+ if(dkctGUILayoutOK) {
+ SetTitle(nlWx[0]);
+#if 0
+ RestorePosition();
+#endif
+ }
+
+ /* __CHANGE__ 012: Release resources allocated by local variables.
+ */
+
+ $? "- $frame$::$frame$"
+}
+
+%% module end
+
+
+
+$frame$::~$frame$()
+{
+ $? "+ $frame$::~$frame$"
+
+ /* __CHANGE__ 011: Release resources allocated by further class members.
+ */
+
+ $? "- $frame$::~$frame$"
+}
+
+
+
+bool
+$frame$::CanClose(bool isLast)
+{
+ bool back = true;
+ $? "+ $frame$::CanClose isLast=%d", (isLast ? 1 : 0)
+
+ /* __CHANGE__ 013: Check for unsaved data.
+ */
+
+ $? "- $frame$::CanClose %d", (back ? 1 : 0)
+ return back;
+}
+
+
+void
+$frame$::OnQuit(wxCommandEvent & event)
+{
+ $? "+ $frame$::OnQuit"
+ $? "- $frame$::OnQuit"
+ Close();
+}
+
+
+
+void
+$frame$::OnAbout(wxCommandEvent & event)
+{
+ wxString text(wxT(""));
+ wxString title(wxT(""));
+ $? "+ $frame$::OnAbout"
+ /* Construct message text. */
+ text.Append(sNlWx[0]);
+ text.Append(sNlWx[7]);
+ text.Append(sNlWx[1]);
+ text.Append(sNlWx[8]);
+ text.Append(sTexts[9]);
+ text.Append(sNlWx[2]);
+ text.Append(sNlWx[8]);
+ text.Append(sNlWx[8]);
+ text.Append(sTexts[11]);
+ text.Append(sNlWx[8]);
+ text.Append(sNlWx[9]);
+ text.Append(sNlWx[8]);
+ text.Append(sNlWx[8]);
+ text.Append(sTexts[12]);
+ text.Append(sNlWx[8]);
+ text.Append(sNlWx[10]);
+ text.Append(sNlWx[8]);
+ text.Append(sNlWx[11]);
+ text.Append(sNlWx[8]);
+ text.Append(sNlWx[12]);
+ text.Append(sNlWx[8]);
+ text.Append(sNlWx[13]);
+ text.Append(sNlWx[8]);
+ text.Append(sNlWx[14]);
+ text.Append(sNlWx[8]);
+ text.Append(sNlWx[15]);
+ text.Append(sNlWx[8]);
+
+ /* Construct dialog box title. */
+ title.Append(sTexts[10]);
+ title.Append(sNlWx[0]);
+
+ /* Show dialog box. */
+ wxMessageBox(text, title);
+
+ /* __CHANGE__ 019: Create better about box.
+ */
+ $? "- $frame$::OnAbout"
+}
+
+
+
+void
+$frame$::OnHelpContents(wxCommandEvent & event)
+{
+ $? "+ $frame$::OnHelpContents"
+ DisplayContents();
+ $? "- $frame$::OnHelpContents"
+}
+
+/* __CHANGE__ 017: Event handlers for further events.
+*/
+
+/* __CHANGE__ 014: Implementation of further methods.
+*/
+
+
+/* __CHANGE__ 008: Remove OnIdle if no idle processing required.
+*/
+
+void
+$frame$::OnIdle(wxIdleEvent & event)
+{
+ $? "+ $frame$::OnIdle"
+ /* __CHANGE__
+ */
+ $? "- $frame$::OnIdle"
+ event.RequestMore();
+ event.Skip();
+}
+
+
+/* vim: set ai sw=4 ts=4 : */
diff --git a/support/dktools/dktools/dkwxwizh.txt b/support/dktools/dktools/dkwxwizh.txt
new file mode 100644
index 0000000000..fe190c68a0
--- /dev/null
+++ b/support/dktools/dktools/dkwxwizh.txt
@@ -0,0 +1,131 @@
+#ifndef H_INCLUDED_$program$
+/** Include file only once.
+*/
+#define H_INCLUDED_$program$ 1
+
+#ifndef DK4CONF_H_INCLUDED
+#include <dk4conf.h>
+#endif
+
+#ifndef DK4TYPES_H_INCLUDED
+#include <dk4types.h>
+#endif
+
+#ifndef WX_WXPREC_H_INCLUDED
+#include <wx/wxprec.h>
+#define WX_WXPREC_H_INCLUDED 1
+#endif
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#ifndef WX_WX_H_INCLUDED
+#include <wx/wx.h>
+#define WX_WX_H_INCLUDED 1
+#endif
+#endif
+
+#ifndef WX_ARRSTR_H_INCLUDED
+#include <wx/arrstr.h>
+#define WX_ARRSTR_H_INCLUDED 1
+#endif
+
+#ifndef WX_CONFIG_H_INCLUDED
+#include <wx/config.h>
+#define WX_CONFIG_H_INCLUDED 1
+#endif
+
+#ifndef WX_FILENAME_H_INCLUDED
+#include <wx/filename.h>
+#define WX_FILENAME_H_INCLUDED 1
+#endif
+
+#ifndef WX_GBSIZER_H_INCLUDED
+#include <wx/gbsizer.h>
+#define WX_GBSIZER_H_INCLUDED 1
+#endif
+
+#ifndef WX_THREAD_H_INCLUDED
+#include <wx/thread.h>
+#define WX_THREAD_H_INCLUDED 1
+#endif
+
+#ifndef WX_GAUGE_H_INCLUDED
+#include <wx/gauge.h>
+#define WX_GAUGE_H_INCLUDED 1
+#endif
+
+#ifndef WX_HELP_H_INCLUDED
+#include <wx/help.h>
+#define WX_HELP_H_INCLUDED 1
+#endif
+
+#ifndef WX_FS_ZIP_H_INCLUDED
+#include <wx/fs_zip.h>
+#define WX_FS_ZIP_H_INCLUDED 1
+#endif
+
+#ifndef WX_CMDLINE_H_INCLUDED
+#include <wx/cmdline.h>
+#define WX_CMDLINE_H_INCLUDED 1
+#endif
+
+#ifndef WX_DIR_H_INCLUDED
+#include <wx/dir.h>
+#define WX_DIR_H_INCLUDED 1
+#endif
+
+/* __CHANGE__ 018: Add further wxWidgets header files.
+*/
+
+
+#ifndef DK4WXAPPLICTIONHELPER_H_INCLUDED
+#include <Dk4WxApplicationHelper.h>
+#endif
+
+#ifndef DK4WXFRAME_H_INCLUDED
+#include <Dk4WxFrame.h>
+#endif
+
+#ifndef DK4WXPROGRESSDIALOG_H_INCLUDED
+#include <Dk4WxProgressDialog.h>
+#endif
+
+#ifndef DK4WXHELPCONTROLLER_H_INCLUDED
+#include <Dk4WxHelpController.h>
+#endif
+
+#include "$application$.h"
+
+#include "$frame$.h"
+
+/* __CHANGE__ 018: Add header files for further classes and modules.
+*/
+
+/** IDs for menu items, buttons and other elements.
+*/
+enum {
+
+ /** Exit the application.
+ */
+ $frame$_Quit = wxID_EXIT ,
+
+ /** Main window ID.
+ */
+ $frame$_MainWindow = ((wxID_HIGHEST) + 1) ,
+
+ /** Show version dialog box.
+ */
+ $frame$_Help_About ,
+
+ /** Open table of conents for online help.
+ */
+ $frame$_Help_Contents
+};
+
+#endif
+
+/* vim: set ai sw=4 ts=4 : */
+
diff --git a/support/dktools/dktools/dkwxwizm.txt b/support/dktools/dktools/dkwxwizm.txt
new file mode 100644
index 0000000000..2a20b8d392
--- /dev/null
+++ b/support/dktools/dktools/dkwxwizm.txt
@@ -0,0 +1,85 @@
+# Package prefix
+DESTDIR=
+
+SOVERS=3.0
+
+# Compiler and linker
+
+CC=$(CXX)
+LD=$(CC)
+
+# Standard directory variables from autoconf
+prefix=@prefix@
+datarootdir=@datarootdir@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+sbindir=@sbindir@
+libexecdir=@libexecdir@
+datadir=${datarootdir}
+sysconfdir=@sysconfdir@
+scd=$(sysconfdir)
+libdir=@libdir@
+sharedlibdir=$(libdir)/shared
+mandir=@mandir@
+includedir=@includedir@
+localstatedir=@localstatedir@
+srcdir=@srcdir@
+top_srcdir=@top_srcdir@
+VPATH=@srcdir@
+
+# Compiler options for wxWidgets
+
+WXCPPFLAGS=@WXCPPFLAGS@
+WXCXXFLAGS=@WXCXXFLAGS@
+WXCFLAGS=@WXCFLAGS@
+WXLDFLAGS=@WXLDFLAGS@
+ZLIB=@ZLIB@
+BZLIB=@BZLIB@
+
+INCLUDES= -I. -I../.. -I../../gui
+
+COPTS= $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+COMPILEC= $(CXX) $(COPTS) $(WXCXXFLAGS)
+COMPILEPP= $(CXX) $(COPTS) $(WXCXXFLAGS)
+
+# Use DK libraries
+
+DKLIBS=-ldk4wx -ldk4c -ldk4ma -ldk4maiodd -ldk4maiowd -ldk4maio8d -ldk4base $(BZLIB) $(ZLIB)
+
+.SUFFIXES:
+
+.SUFFIXES: .cpp .c .o
+
+.c.o:
+ @echo Compile $<
+ $(COMPILEC) -o $@ -c $<
+
+.cpp.o:
+ @echo Compile $<
+ $(COMPILEPP) -o $@ -c $<
+
+all: # Build example.
+all: $program$
+
+# __CHANGE__ 018: Add further modules.
+
+OBJ_$program$= \
+ $application$.o \
+ $frame$.o
+
+# __CHANGE__ 018: Add further libraries.
+
+$program$: # Test program.
+$program$: $(OBJ_$program$)
+ @echo Link $program$
+ $(LD) $(CFLAGS) $(LDFLAGS) $(WXCFLAGS) $(WXLDFLAGS) -o $program$ $(OBJ_$program$) $(DKLIBS) -lm
+ chmod 755 $program$
+
+.PHONY: help clean
+
+clean:
+ -rm $program$ *.o
+
+help:
+ -@egrep '^[^:;=. ]*::?[ ]*' Makefile | grep '#' | grep -v '^#'
+
diff --git a/support/dktools/dktools/dkwxwizr.txt b/support/dktools/dktools/dkwxwizr.txt
new file mode 100644
index 0000000000..12f485925d
--- /dev/null
+++ b/support/dktools/dktools/dkwxwizr.txt
@@ -0,0 +1,37 @@
+aaaaa ICON $program$.ico
+
+#include <windows.h>
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,0
+ PRODUCTVERSION 1,0,0,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "$program$\0"
+ VALUE "CompanyName", "$copyrightowner$\0"
+ VALUE "FileDescription", "Program for this and that\0"
+ VALUE "FileVersion", "1.0.0\0"
+ VALUE "InternalName", "$program$\0"
+ VALUE "LegalCopyright", "Copyright © $year$ $copyrightowner$\0"
+ VALUE "ProductName", "$program$\0"
+ VALUE "ProductVersion", "1.0.0\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
diff --git a/support/dktools/dktools/dkwxwizv.txt b/support/dktools/dktools/dkwxwizv.txt
new file mode 100644
index 0000000000..70aae5d111
--- /dev/null
+++ b/support/dktools/dktools/dkwxwizv.txt
@@ -0,0 +1,404 @@
+# ##### START OF CONFIGURATION SECTION.
+#
+# __CHANGE__
+#
+# You may need to customize this section.
+#
+#
+#
+
+# 64-bit support
+# ==============
+# Uncomment the BITS64 line to build for 64-bit Windows platforms.
+
+# BITS64=1
+
+
+# Parent directory where programs reside
+# --------------------------------------
+
+# --- Programs folder on german Windows versions before Vista
+# PROGRAMS=C:\Programme
+
+# --- English versions and version on Vista and above
+PROGRAMS=C:\Program Files
+
+
+# Parent directory for 32-bit software
+# ------------------------------------
+
+!IFDEF BITS64
+PROGRAMSX86=C:\Program Files (x86)
+!ELSE
+PROGRAMSX86=C:\Program Files
+!ENDIF
+
+
+# Name of vendor subdirectory in the directory above.
+# ---------------------------------------------------
+# One string without spaces or tabulators!
+
+VENDOR=SoftwareVendor
+
+
+# Compiler and linker
+# ===================
+
+
+# Program names
+# -------------
+# Which programs to use for compiling and linking?
+
+CC=CL
+LD=LINK
+
+
+# Unicode settings
+# ----------------
+# DK tools wants the wxWidgets libraries with Unicode support,
+# release, static multi-threaded
+#
+UNICODE= /D_UNICODE=1 /DUNICODE=1
+# UNICODE=
+
+# Code generation
+# ---------------
+# MT Multi-Thread, Release, static -> LIBCMT.LIB
+# MTd ..., Debug, ... -> LIBCMTD.LIB
+# ML Single-Thread, Release, static -> LIBC.LIB
+# MLd ..., Debug, ... -> LIBCD.LIB
+# MD Multi-Thread, Release, DLL -> MSVCRT.LIB
+# MDd ..., Debug, ... -> MSVCRTD.LIB
+
+# --- Visual Studio 2005/2008 on Windows 7
+COPTIONS= /nologo /MT /W3 \
+ /D "WIN32" /D "_WIN32" /D "NDEBUG" /D "_CONSOLE" \
+ -D_CRT_SECURE_NO_WARNINGS=1 -D_CRT_SECURE_NO_DEPRECATE=1 \
+ $(UNICODE)
+
+DLLCOPTIONS= /nologo /MD /W3 \
+ /D "WIN32" /D "_WIN32" /D "NDEBUG" /D "_CONSOLE" \
+ -D_CRT_SECURE_NO_WARNINGS=1 -D_CRT_SECURE_NO_DEPRECATE=1 \
+ $(UNICODE)
+
+LINKMANIFEST= /MANIFEST
+
+
+
+# Visual Studio and Platform SDK location
+# ---------------------------------------
+
+# Where is Visual C?
+# Directories lib, include and bin must be beyound this.
+
+# --- Visual C++ 5
+# VC=$(PROGRAMS)\DevStudio\Vc
+
+# --- Visual Studio (Version 6?)
+# VC=$(PROGRAMS)\Microsoft Visual Studio\Vc98
+
+# --- Visual Studio 2003
+# VC=$(PROGRAMS)\Microsoft Visual Studio .NET 2003\Vc7
+
+# --- Visual Studio 2005
+# VC=$(PROGRAMS)\Microsoft Visual Studio 8\VC
+
+# --- Visual Studio 2005 when Platform SDK for Windows 7 is installed
+VC=$(PROGRAMSX86)\Microsoft Visual Studio 9.0\VC
+
+
+# Where is the Platform SDK for Windows 7
+
+# --- Older Platform SDKs
+# PLATFORMSDK=$(VC)\PlatformSDK
+
+# --- Use SDK shipped with Visual Studio
+# PLATFORMSDK=$(VC)
+
+# --- Platform SDK installed separately
+PLATFORMSDK=$(PROGRAMS)\Microsoft SDKs\Windows\v7.0
+
+
+# Directories
+# ===========
+# System configuration directory
+
+SCD= -DSYSCONFDIR=\"C:\\ETC\"
+
+
+
+# XCOPY overwrites
+# ================
+# does xcopy need a special option to overwrite
+# files without prompting.
+
+XCOPYFL= /Y
+
+
+
+# Required libraries
+# ==================
+
+# Location of required libraries
+# ------------------------------
+# Where do the libraries reside?
+
+LIBSRC=C:\P\LIB-STT
+
+
+# Bzip2 support
+# -------------
+BZL_DEF=-DDK4_HAVE_BZLIB_H=1
+BZL_DIR=-I$(LIBSRC)\Include
+BZL_LIB=libbz2.lib
+
+
+
+# Zlib support
+# ------------
+ZL_DEF=-DDK4_HAVE_ZLIB_H=1
+ZL_DIR=-I$(LIBSRC)\Include
+ZL_LIB=zlib.lib
+
+
+
+# Libpng support
+# --------------
+PNG_DEF=-DDK4_HAVE_LIBPNG=1 -DDK4_HAVE_PNG_H=1
+PNG_DIR=-I$(LIBSRC)\Include
+PNG_LIB=libpng.lib
+PNGEPSOBJ=pngeps.obj
+BMEPSEXE=bmeps.exe
+
+
+
+# Jpeg support
+# ------------
+JPG_DEF=-DDK4_HAVE_JPEGLIB_H=1
+JPG_DIR=-I$(LIBSRC)\Include
+JPG_LIB=libjpeg.lib
+JPGEPSOBJ=jpgeps.obj
+
+
+
+# TIFF support
+# ------------
+TIF_DEF=-DDK4_HAVE_TIFF_H=1
+TIF_DIR=-I$(LIBSRC)\Include
+TIF_LIB=libtiff.lib
+TIFEPSOBJ=tifeps.obj
+
+
+
+# wxWidgets support
+# ----------------
+WXDIR=C:\p\wxWidgets-2.8.12
+WXLIBS= \
+ $(WXDIR)\lib\vc_lib\wxbase28u.lib \
+ $(WXDIR)\lib\vc_lib\wxbase28u_net.lib \
+ $(WXDIR)\lib\vc_lib\wxbase28u_odbc.lib \
+ $(WXDIR)\lib\vc_lib\wxbase28u_xml.lib \
+ $(WXDIR)\lib\vc_lib\wxmsw28u_adv.lib \
+ $(WXDIR)\lib\vc_lib\wxmsw28u_aui.lib \
+ $(WXDIR)\lib\vc_lib\wxmsw28u_core.lib \
+ $(WXDIR)\lib\vc_lib\wxmsw28u_dbgrid.lib \
+ $(WXDIR)\lib\vc_lib\wxmsw28u_gl.lib \
+ $(WXDIR)\lib\vc_lib\wxmsw28u_html.lib \
+ $(WXDIR)\lib\vc_lib\wxmsw28u_media.lib \
+ $(WXDIR)\lib\vc_lib\wxmsw28u_qa.lib \
+ $(WXDIR)\lib\vc_lib\wxmsw28u_richtext.lib \
+ $(WXDIR)\lib\vc_lib\wxmsw28u_xrc.lib \
+ $(WXDIR)\lib\vc_lib\wxexpat.lib \
+ $(WXDIR)\lib\vc_lib\wxregexu.lib
+
+# We typically have newer variants of these libraries installed, so we
+# use $(IMGLIBS) $(ZL_LIB) instead of these libraries.
+WXIMGLIBS= $(WXDIR)\lib\vc_lib\wxpng.lib \
+ $(WXDIR)\lib\vc_lib\wxtiff.lib \
+ $(WXDIR)\lib\vc_lib\wxjpeg.lib \
+ $(WXDIR)\lib\vc_lib\wxzlib.lib
+
+
+# DK tools libraries
+# ------------------
+DK_BASE=$(PROGRAMS)\Krause
+DK_DIR=-I"$(DK_BASE)\include"
+DK_LIB=/LIBPATH:"$(DK_BASE)\lib" dk4wx.lib dk4c.lib dk4base.lib
+
+#
+#
+#
+# No changes should be necessary below this line.
+#
+# ##### END OF CONFIGURATION SECTION
+
+
+
+# ##### Start of internal setup section
+#
+#
+
+exec_prefix = $(PREFIX)
+bindir = $(exec_prefix)\bin
+sbindir = $(exec_prefix)\sbin
+libexecdir = $(exec_prefix)\libexec
+datadir = $(PREFIX)\share
+sysconfdir = $(PREFIX)\etc
+libdir = $(exec_prefix)\lib
+sharedlibdir = $(libdir)\shared
+mandir = $(PREFIX)\man
+includedir = $(PREFIX)\include
+srcdir = .
+top_srcdir = .
+
+# How to build an EXE file
+# ------------------------
+
+!IFDEF BITS64
+EXEFLAGS= /nologo /subsystem:console /incremental:no $(MACHINE) /release \
+ /LIBPATH:"$(PLATFORMSDK)\Lib\x64" /LIBPATH:"$(PLATFORMSDK)\Lib" \
+ /LIBPATH:"$(VC)\LIB\AMD64" /LIBPATH:"$(VC)\LIB" \
+ /LIBPATH:"$(LIBSRC)\LIB"
+!ELSE
+EXEFLAGS= /nologo /subsystem:console /incremental:no $(MACHINE) /release \
+ /LIBPATH:"$(PLATFORMSDK)\Lib" \
+ /LIBPATH:"$(VC)\LIB" \
+ /LIBPATH:"$(LIBSRC)\LIB"
+!ENDIF
+
+EXE= LINK $(EXEFLAGS) $(LINKMANIFEST)
+
+# How to build a GUI exe file with wxWidgets support
+# --------------------------------------------------
+!IFDEF BITS64
+GUIEXEFLAGS= /nologo /subsystem:WINDOWS /incremental:no $(MACHINE) /release \
+ /LIBPATH:"$(PLATFORMSDK)\Lib\x64" /LIBPATH:"$(VC)\LIB\AMD64" \
+ /LIBPATH:"$(PLATFORMSDK)\Lib" /LIBPATH:"$(VC)\LIB" \
+ /LIBPATH:"$(LIBSRC)\LIB"
+!ELSE
+GUIEXEFLAGS= /nologo /subsystem:WINDOWS /incremental:no $(MACHINE) /release \
+ /LIBPATH:"$(PLATFORMSDK)\Lib" \
+ /LIBPATH:"$(VC)\LIB" \
+ /LIBPATH:"$(LIBSRC)\LIB"
+!ENDIF
+
+GUIEXE= LINK $(GUIEXEFLAGS) $(LINKMANIFEST)
+
+LIB= LIB /nologo
+
+IMGLIBS= $(PNG_LIB) $(JPG_LIB) $(TIF_LIB)
+
+# compile .c to .obj
+#
+DEF1= $(BZL_DEF) $(BZL_DIR)
+DEF2= $(ZL_DEF) $(ZL_DIR)
+DEF3= $(PNG_DEF) $(PNG_DIR)
+DEF4= $(JPG_DEF) $(JPG_DIR)
+DEF5= $(TIF_DEF) $(TIF_DIR)
+DEF6= $(DK_DIR)
+DEF7= -DTRACE_WIDE=1
+
+DEFS= $(DEF1) \
+ $(DEF2) \
+ $(DEF3) \
+ $(DEF4) \
+ $(DEF5) \
+ $(DEF6) \
+ $(DEF7)
+
+COBJFLAGS= $(COPTIONS) $(DEFS) \
+ /I. /I.. /I"$(PLATFORMSDK)\Include" /I"$(VC)\Include" $(SCD)
+
+DLLCOBJFLAGS= $(DLLCOPTIONS) $(DEFS) \
+ /I. /I.. /I"$(PLATFORMSDK)\Include" /I"$(VC)\Include" $(SCD)
+
+LIB32= kernel32.lib \
+ gdi32.lib \
+ advapi32.lib \
+ user32.lib
+
+WXLIB32= ole32.lib \
+ oleaut32.lib \
+ shell32.lib \
+ comctl32.lib \
+ comdlg32.lib \
+ winspool.lib
+
+WSC32= ws2_32.lib
+NETAPI32= winspool.lib netapi32.lib
+
+VC_MANIFEST_EMBED_EXE= \
+if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;1
+
+VC_MANIFEST_EMBED_DLL= \
+if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;2
+
+#
+# ##### End of internal setup section
+
+
+# ##### Start of internal configuration
+#
+#
+
+MYDEFS=/I$(WXDIR)\lib\vc_lib\mswu \
+ /I$(WXDIR)\include\msvc \
+ /I$(WXDIR)\include \
+ -DDK4_USE_WX=1
+
+WXCOBJFLAGS=$(COBJFLAGS) $(MYDEFS) /EHsc /GF /Gy /fp:precise
+
+WXDEFS=$(DEFS) $(MYDEFS)
+
+.c.obj:
+ @echo Compile $*.c
+ $(CC) $(WXCOBJFLAGS) $(CFLAGS) /c $*.c
+
+.cpp.obj:
+ $(CC) $(WXCOBJFLAGS) $(CFLAGS) /c $*.cpp
+
+.rc.res:
+ RC $(WXDEFS) $*.rc
+
+WXEXE=$(GUIEXE) /LIBPATH:$(WXDIR)\lib\vc_lib /entry:"WinMainCRTStartup"
+
+#
+#
+# ##### End of internal configuration
+
+
+
+# ##### Start of targets
+#
+# __CHANGE__
+#
+# Modify this section as needed by your project.
+#
+#
+
+PROGRAMSTOBUILD= \
+ $program$.exe
+
+all: $(PROGRAMSTOBUILD)
+
+OBJ_$program$= \
+ $application$.obj \
+ $frame$.obj \
+ $program$.res
+
+$program$.exe: $(OBJ_$program$)
+ $(WXEXE) $(DK_LIB) $(LIB32) $(WXLIB32) /out:$program$.exe $(OBJ_$program$) $(WXLIBS) $(IMGLIBS) $(ZL_LIB)
+ $(VC_MANIFEST_EMBED_EXE)
+
+.PHONY: clean
+
+clean:
+ -DEL *.obj
+ -DEL *.exe
+ -DEL *.lib
+ -DEL *.deb
+
+#
+#
+# ##### End of targets
+
diff --git a/support/dktools/dktools/dkwxwizx.txt b/support/dktools/dktools/dkwxwizx.txt
new file mode 100644
index 0000000000..7b13ddb67f
--- /dev/null
+++ b/support/dktools/dktools/dkwxwizx.txt
@@ -0,0 +1,43 @@
+/* XPM */
+static const char *$program$_xpm[] = {
+/* width height ncolors chars_per_pixel */
+"32 32 4 1",
+/* colors */
+" c #000000",
+". c #DFBB00",
+"X c #FFD600",
+"o c #C3A300",
+/* pixels */
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" .XXXXXXXXXXXXXXX",
+" o...............",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX ",
+"XXXXXXXXXXXXXXXX "
+};
diff --git a/support/dktools/dktools/en/ChooseDirectory.png b/support/dktools/dktools/en/ChooseDirectory.png
new file mode 100644
index 0000000000..42c3d1b3f7
--- /dev/null
+++ b/support/dktools/dktools/en/ChooseDirectory.png
Binary files differ
diff --git a/support/dktools/dktools/en/Exit.png b/support/dktools/dktools/en/Exit.png
new file mode 100644
index 0000000000..27b641786b
--- /dev/null
+++ b/support/dktools/dktools/en/Exit.png
Binary files differ
diff --git a/support/dktools/dktools/en/Options.png b/support/dktools/dktools/en/Options.png
new file mode 100644
index 0000000000..7f5570cbd0
--- /dev/null
+++ b/support/dktools/dktools/en/Options.png
Binary files differ
diff --git a/support/dktools/dktools/en/Run.png b/support/dktools/dktools/en/Run.png
new file mode 100644
index 0000000000..0ae92ba9de
--- /dev/null
+++ b/support/dktools/dktools/en/Run.png
Binary files differ
diff --git a/support/dktools/dktools/en/dk-blks.txt b/support/dktools/dktools/en/dk-blks.txt
new file mode 100644
index 0000000000..983c5687e4
--- /dev/null
+++ b/support/dktools/dktools/en/dk-blks.txt
@@ -0,0 +1,42 @@
+
+NAME
+
+dk-blks - Adjust block size.
+
+SYNOPSIS
+
+dk-blks [<option>]
+
+DESCRIPTION
+
+The program reads a data stream from standard input and writes it to standard
+output using a specified block size.
+
+It is inteded to prepare a data stream for the ``dd'' program, source data
+may come from network transmission or a decryption or decompression program.
+
+OPTIONS
+
+-b <size>, --block-size=<size>
+ Block size (default: 4096).
+ You can append ``k'', ``m'', ``g'' or ``t'' for multiples of
+ 1024, 1024^2, 1024^3 or 1024^4, i.e. ``-b 4k'' or ``-b 1m''.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-blks --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-bmm.txt b/support/dktools/dktools/en/dk-bmm.txt
new file mode 100644
index 0000000000..6b21405977
--- /dev/null
+++ b/support/dktools/dktools/en/dk-bmm.txt
@@ -0,0 +1,63 @@
+
+NAME
+
+dk-bmm - Backup media management
+
+SYNOPSIS
+
+dk-bmm [<option(s)>] [<file>]
+
+DESCRIPTION
+
+The dk-bmm program performs one of the following four operations:
+
+* Retrieve name of current backup media set (option -s).
+
+* Confirm that backup to current media set was finished successfully
+ (options -s and -c).
+
+* Retrieve number of current backup media (default operation, neither
+ -s nor -c required).
+
+* Confirm that backup to current media was finished successfully
+ (option -c).
+
+OPTIONS
+
+-s Process backup media sets.
+--set
+
+-c Confirm that previous backup was finished successfully.
+--confirm
+
+-r Write report for one media set.
+--report
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+AUTHOR
+
+Dirk Krause
+
+HISTORY
+
+This program was named ``tape'' in version 2.x.x, in version 3.x.x the
+functionality was availalbe in ``dkt tape''.
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-bmm --license
+ to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-cat.txt b/support/dktools/dktools/en/dk-cat.txt
new file mode 100644
index 0000000000..b187701033
--- /dev/null
+++ b/support/dktools/dktools/en/dk-cat.txt
@@ -0,0 +1,85 @@
+
+NAME
+
+ dk-cat - Show text files.
+
+SYNOPSIS
+
+ dk-cat [<options>] [<file(s)>]
+
+DESCRIPTION
+
+The dk-cat program shows text files. If a BOM (byte order marker) at the
+start of file indicates an encoding, the file is recoded to the system
+encoding or the encoding required by command line options.
+
+OPTIONS
+
+-c <boolean>, --crnl=<boolean>
+ Enable/disable use of the CR/NL sequence.
+ Without this option the systems default is used.
+
+-n, --line-numbers
+ Line numbers before each line.
+
+--line-number-width=<integer>
+ Minimum number of digits to use for line numbers, default: 5.
+
+-w, --normalize
+ Normalize text lines (remove leading and trailing white spaces,
+ replace whitespace sequences by one space).
+
+-i <string>
+ Expected input encoding, one from:
+ plain ASCII text,
+ ascii synonym for plain,
+ ansi ANSI encoding,
+ utf-8 UTF-8 encoding,
+ utf-16 UTF-16 encoding in systems default endianness,
+ utf-16le UTF-16 encoding with least significant byte first,
+ utf-16be UTF-16 encoding with most significant byte first,
+ c32 32 bit characters in systems default endianness,
+ c32le 32 bit characters with least significant byte first,
+ c32be 32 bit characters with most significant byte first.
+ The encoding specified here is overwritten if a BOM is found at the
+ start of an input file.
+
+-o <string>
+ Output encoding, see above for encodings.
+ Use <encoding>[,bom] - i.e. utf-16be,bom - to require writing
+ a byte order marker at start of output.
+ The default is no BOM when writing to a terminal,
+ use BOM when writing to file.
+
+-p, --pass-through
+ Pass-through of UTF-8 encoded data when UTF-8 output
+ is wanted and UTF-8 input is found.
+ Without this option input is decoded to 32 bit characters
+ and encoded to UTF-8 (check for correct UTF-8 encoding).
+
+--verbose
+ Show error message on interrupt by SIGPIPE.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-cat --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-db2t.txt b/support/dktools/dktools/en/dk-db2t.txt
new file mode 100644
index 0000000000..b5be8fa521
--- /dev/null
+++ b/support/dktools/dktools/en/dk-db2t.txt
@@ -0,0 +1,102 @@
+
+NAME
+
+dk-db2t - Show simple database as text
+
+SYNOPSIS
+
+dk-db2t [<option>...] <database>
+
+DESCRIPTION
+
+The program shows a simple text database as text on standard output.
+
+A ``simple database'' is a Berkeley DB, NDBM or in-memory database.
+The records are key/value pairs, both key and value are a byte array.
+Keys are unique.
+
+In a ``simple text database'' all keys and values are text strings.
+The finalizing 0 character is saved in the database together with the
+texts.
+
+Use type::filename to specify databases (Type and file name are separated
+by two colons). The following type names can be used:
+bdb Berkeley DB
+ndbm NDBM database
+mem in-memory database
+
+OPTIONS
+
+-k <size>, --key-buffer-size=<size>
+ Size for key buffer (must be large enough to store the largest
+ string including the finalizing 0 character).
+
+-v <size>, --value-buffer-size=<size>
+ Size for value buffer (must be large enough to store the largest
+ value string including the finalizing 0 character).
+
+-R, --reset
+ Ignore preferences values for key and value buffer size.
+
+--help
+ Show short help text.
+
+--version
+ Show version and supported database backends.
+
+--license
+ Show license terms.
+
+--manual
+ Show this long help text.
+
+--verbose
+ Show error message on interrupt by SIGPIPE.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+EXAMPLES
+
+* Show in-memory database file1.dat
+ dk-db2t mem::file1.dat
+
+* Show Berkeley DB database file2.dat
+ dk-db2t bdb::file2.dat
+
+* Show NDBM database file3 (consisting of file3.dir and file3.pag)
+ dk-db2t ndbm::file3
+
+PREFERENCES
+
+text-db.key.max-size
+ Size of key buffer if option -k was not used.
+
+text-db.value.max-size
+ Size of value buffer if option -v was not used.
+
+RESTRICTIONS
+
+There is no wildcard expansion for file names on Windows, * and ? can not
+be used in file names.
+
+AUTHOR
+
+Dirk Krause
+
+HISTORY
+
+In previous DK tools versions the functionality was provided by the
+``dkdbt text'' command.
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-db2t --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-dbco.txt b/support/dktools/dktools/en/dk-dbco.txt
new file mode 100644
index 0000000000..be22b76c9c
--- /dev/null
+++ b/support/dktools/dktools/en/dk-dbco.txt
@@ -0,0 +1,82 @@
+
+NAME
+
+dk-dbco - Copy and convert simple databases
+
+SYNOPSIS
+
+dk-dbco [<options>] <source> <destination>
+
+DESCRIPTION
+
+The program copies the records from a simple database into another
+simple database. The records are converted to the new database type
+if necessary.
+
+A ``simple database'' is a Berkeley DB, NDBM or in-memory database.
+The records are key/value pairs, both key and value are a byte array.
+Keys are unique.
+
+Use type::filename to specify databases (Type and file name are separated
+by two colons). The following type names can be used:
+bdb Berkeley DB
+ndbm NDBM database
+mem in-memory database
+
+OPTIONS
+
+-a, --add
+ adds data to an existing database (modifies or adds records).
+ Without this option the program deletes an existing database
+ and creates a new one.
+
+-k <size>, --key-buffer-size=<size>
+ Key buffer size (number of bytes), default: 4096.
+
+-v <size>, --value-buffer-size=<size>
+ Value buffer size (number of bytes), default: 4096.
+
+-R, --reset
+ Ignore preference values for key and value buffer size.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+EXAMPLES
+
+* Convert Berkeley DB database db1.db to in-memory database db2.dat,
+ truncate db2.dat if it already exists:
+ dk-dbco bdb::db1.db mem::db2.dat
+
+* Convert NDBM database db3 (consisting of files db3.dir and db3.pag)
+ to in-memory database db4.dat, keep existing records in db4.dat:
+ dk-dbco -a ndbm::db3 mem::db4.dat
+
+PREFERENCES
+
+db.key.max-size
+ Key buffer size if the -k option was not used.
+
+db.value.max-size
+ Value buffer size if the -v option was not used.
+
+AUTHOR
+
+Dirk Krause
+
+HISTORY
+
+In previous DK tools versions the funcionality was provided by the
+``dkdbt copy'' command.
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-dbco --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-fic.txt b/support/dktools/dktools/en/dk-fic.txt
new file mode 100644
index 0000000000..e70748cdaf
--- /dev/null
+++ b/support/dktools/dktools/en/dk-fic.txt
@@ -0,0 +1,96 @@
+
+NAME
+
+dk-fic - File integrity checker
+
+SYNOPSIS
+
+dk-fic [<options>] [<file(s)>]
+
+DESCRIPTION
+
+The program can either build file checksum list or check (verify)
+checksum lists.
+A checksum list contains message digests (MD5, SHA-1, RIPEMD-160 and SHA-512),
+file size and file name.
+If support for the SHA-512 message digest algorithm was not found during
+build process, the SHA-512 message digest is skipped.
+Message digests are converted to text using ASCII-85 encoding, not
+ASCII-Hex.
+When building a file checksum list, the files specified as command line
+arguments contain lists of file names to produce checksums for. If no file
+is specified as argument, the list of file names is read from standard
+input.
+When verifying checksum lists, the files specified as command line arguments
+contain checksum lists previously produced. If no file is specified as
+argument, the checksum list is read from standard input.
+
+OPTIONS
+
+-c
+--check
+ Check (verify) a checksum list.
+ Without this option the program produces a checksum list.
+
+-v
+--verbose
+ Produce a message for succeeded tests too when checking.
+ By default a message is only produced for failed tests.
+
+-q
+--quiet
+ No output for failed tests when checking a checksum list.
+ Options -v and -q are mutually exclusive.
+
+-l <size>
+--line-size=<size>
+ Input line buffer size.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+PREFERENCES
+
+line.size
+ configures the line buffer size if the -l option was not used.
+
+EXAMPLES
+
+Produce a checksum list on Windows:
+ dk-ls -r -tf -pn <directory> | dk-fic > checklist.txt
+
+Produce a checksum list on non-Windows systems:
+ find <directory> -type f | dk-fic > checklist.txt
+
+Verify a checksum list:
+ dk-fic -c < checklist.txt
+
+When creating a checksum list, make sure the checksum list file is not
+included in the checksum list itself.
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+AUTHOR
+
+Dirk Krause
+
+HISTORY
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-fic --license
+to see license information.
+
+This product includes cryptographic software written by
+Eric Young (eay@cryptsoft.com).
+This product includes software written by Tim Hudson (tjh@cryptsoft.com).
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-hex.txt b/support/dktools/dktools/en/dk-hex.txt
new file mode 100644
index 0000000000..52c678f280
--- /dev/null
+++ b/support/dktools/dktools/en/dk-hex.txt
@@ -0,0 +1,51 @@
+
+NAME
+
+dk-hex - Show file contents in hexadecimal notation
+
+SYNOPSIS
+
+dk-hex [<options>] [<file(s)>]
+
+DESCRIPTION
+
+The dk-hex program shows file contents in hexadecimal or octal notation.
+Input is read from the specified files or from standard input if no files
+are specified.
+
+OPTIONS
+
+-o Use octal notation instead of hexadecimal notation.
+--octal
+
+-a Show addresses too.
+--addresses
+
+-t Show printable text characters too.
+--text
+
+--verbose Show error message on interrupt by SIGPIPE.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+RESTRICTION
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-hex --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-ls.txt b/support/dktools/dktools/en/dk-ls.txt
new file mode 100644
index 0000000000..d78190e0d6
--- /dev/null
+++ b/support/dktools/dktools/en/dk-ls.txt
@@ -0,0 +1,271 @@
+
+NAME
+
+ dk-ls - List files
+
+SYNOPSIS
+
+ dk-ls [<options>] [<file(s)>]
+
+DESCRIPTION
+
+The dk-ls program shows information about files.
+
+OPTIONS
+
+-r
+--recursive
+ Recursive listing.
+
+-f
+--stay-on-filesystem
+ Stay in the current file system for recursive listings.
+
+-p <string>
+--print-order=<string>
+ Print order.
+ The string consists of key characters for information to print:
+ n Name
+ N Name, but do not show symbolic link target
+ s Size
+ t Type
+ p Permissions (attributes on Windows systems)
+ c Creation timestamp
+ m Modification timestamp
+ a Last access timestamp
+ l Number of links
+ u File owner user ID (not on Windows systems)
+ g File group ID (not on Windows systems)
+ d Device number (volume serial number on Windows systems)
+ i Inode number (file index on Windows systems)
+ r Relative device number for special files
+ w Windows reparse tag value (only on Windows systems)
+ x Message digest (file checksum)
+ The default is ``mtpn'' on non-Windows systems, ``mtn'' on Windows
+ unless the ``print.order'' preference is defined.
+
+-t <string>
+--types=<string>
+ Types to show information for:
+ d Directories
+ f Non-directory entries.
+
+-s
+--summary
+ Show summary at end (total number of reported directories, files
+ and sizes in bytes).
+
+-m <string>
+--message-digest=<string>
+ Message digest type and encoding, separated by dot.
+ The digest type can be one from ``md5'', ``sha-1'', ``sha-224'',
+ ``sha-256'', ``sha-384'', ``sha-512'', or ``ripemd-160''.
+ The encoding can be one from ``hex'' (ASCII-Hex encoding) or
+ ``a85'' (ASCII-85 encoding).
+ The default is ``sha-1.hex'' unless the ``message.digest''
+ preference is defined.
+
+-R
+--reset
+ Ignores all preference values for options (print order and
+ message digest type).
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+DIAGNOSTICS
+
+A sequence of question marks is printed if the program fails to obtain
+device number, volume serial number, inode number, or file index number.
+
+A single question mark is printed if the program fails to obtain
+number of links, file owner UID, or file owner GID.
+
+A sequence of `x' characters is printed if a message digest is requested
+for anything else than a regular file or if the program failed to read
+the file.
+
+TYPE OUTPUT ON NON-WINDOWS SYSTEMS
+
+The output consists of 2 characters:
+
+* One link indicator character. `l' for symbolic links within the same
+ file system, `L' for far links (crossing file system boundaries),
+ `!' for dangling links (link target does not exist),
+ '-' for all other entries.
+
+* One file type character, one from:
+ d for directories,
+ - for regular files,
+ p for pipe (FIFO),
+ c for a character special device,
+ b for a block special device,
+ s for network sockets,
+ C for multiplexed character special device,
+ B for a multiplexed block special device,
+ D for a name service door,
+ e for event ports,
+ o for Xenix special files,
+ n for Xenix semaphores,
+ m for Xenix shared data,
+ v for VXFS compressed file,
+ n for a network special file,
+ w for a whiteout,
+ a for an ACL shadow entry.
+
+PERMISSIONS OUTPUT ON NON-WINDOWS SYSTEMS
+
+The output consists of 3 groups: Permissions for file owner user,
+file owner group and other persons. Each group consists of 3 characters
+indicating read, write, and execute permission.
+
+If the set user ID bit is set, the execution permission character
+for the user is changed from `x' to `s' or from `-' to `S'.
+If the set group ID bit is set, the execution permission character
+for the group is changed from `x' to `s' or from `-' to `S'.
+If the restricted deletion flag or sticky bit is set, the execution
+permission character for others is changed from `x' to `t' or from
+`-' to `T'.
+
+
+TYPE OUTPUT ON WINDOWS SYSTEMS
+
+The output consists of 2 characters:
+
+* One reparse point character:
+ - not a reparse point,
+ m for mount points,
+ l for symbolic links,
+ w for mounted WIM images,
+ s for SIS reparse points,
+ n for NFS reparse points,
+ c for CSV reparse points,
+ d for DFS reparse points,
+ f for DFSR reparse points,
+ u for deduplication reparse points,
+ h for HSM reparse points,
+ 2 for HSM2 reparse points,
+ r for all other reparse point types.
+
+* One file type character, one from:
+ d for directories
+ - for regular files
+ b for (block special) devices
+
+ATTRIBUTES OUTPUT ON WINDOWS SYSTEMS
+
+The output consists of 10 characters:
+
+* One character for ``read-only'' atribute,
+ R if file is read-only.
+ - otherwise.
+
+* One character for ``system'' attribute,
+ S for system files or directories,
+ - otherwise.
+
+* One character for ``hidden'' attribute,
+ H for hidden files,
+ - otherwise.
+
+* One character for ``not indexed'' attribute,
+ I for exclusion from indexing,
+ - otherwise.
+
+* One character for ``compressed'' attribute,
+ C for compressed files,
+ - otherwise.
+
+* One character for ``encrypted'' attribute,
+ E for encrypted files,
+ - otherwise.
+
+* One character for ``offline'' attribute,
+ O for offline files,
+ - otherwise.
+
+* One character for ``sparse'' attribute,
+ P for sparse files,
+ - otherwise.
+
+* One character for ``temporary'' attribute,
+ T for temporary files,
+ - otherwise.
+
+* One character for ``virtual'' attribute,
+ V for virtual files,
+ - otherwise.
+
+PREFERENCES
+
+print.order
+ Default value for the print order if the -p option was not specified.
+
+message.digest
+ Default value for the message digest type and encoding if
+ the -m option was not specified.
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+On Windows systems user management and file permission concepts differ
+significantly from the concepts on Linux and Unix systems.
+The characters `u' and `g' in the print order specification have no effect.
+
+On Windows there are different functions available to obtain information
+about files. Sometimes a function delivering less information succeeds
+for files where the default function delivering more information fails
+(i.e. when non-privileged processes ask for information about
+c:\pagefile.sys).
+In such situations we can not print volume serial number, file index
+or number of links. Question marks are shown instead.
+
+On non-Windows systems there is no reparse point tag, so a `w' in the
+print order specification has no effect.
+
+QUOTED FILE NAMES ON WINDOWS
+
+On Windows systems the backslash is used for two purposes:
+* as separator between path name components and
+* as escape character, i.e. in double quoted strings.
+Quotes are used around text containing spaces to pass the entire text as
+one argument to a command. Unfortunately quoting also activates processing
+of backslashes as start of escape sequences.
+
+Text typed in the shell Passed from the shell to the command
+ C: C:
+ "C:" C:
+ C:\ C:\
+ "C:\" C:"
+ C:\\ C:\\
+ "C:\\" C:\
+
+In the fourth example we want to specify the root directory of a disk drive,
+enclosed in double quotes. Unfortunately the end of the directory name
+(the backslash) and the closing quote are recognized as a backslash escape
+sequence by cmd.exe, as a result backslash escape sequence processing a
+double quote is passed to the command.
+So if you type
+ dk-ls "C:\"
+cmd.exe provides C:" as file name to dk-ls. When using double quotes
+for file names, take care of backslash escape sequence processing,
+ dk-ls "C:\\"
+would be the correct command here.
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-ls --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-pwd.txt b/support/dktools/dktools/en/dk-pwd.txt
new file mode 100644
index 0000000000..619aa9f613
--- /dev/null
+++ b/support/dktools/dktools/en/dk-pwd.txt
@@ -0,0 +1,39 @@
+
+NAME
+
+dk-pwd - Print working directory
+
+SYNOPSIS
+
+dkpwd [<option(s)>]
+
+DESCRIPTION
+
+The program shows the current working directory name on standard output.
+
+OPTIONS
+
+-l Last part of name only.
+
+-b Backslashes (on Windows) replaced by slashes.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+AUTHOR
+
+Dirk Krause
+
+HISTORY
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-pwd --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-pwgen.txt b/support/dktools/dktools/en/dk-pwgen.txt
new file mode 100644
index 0000000000..495a24cc97
--- /dev/null
+++ b/support/dktools/dktools/en/dk-pwgen.txt
@@ -0,0 +1,139 @@
+
+NAME
+
+dk-pwgen - Password, pin, hexadecimal key generator
+
+SYNOPSIS
+
+dk-pwgen [<options>]
+
+DESCRIPTION
+
+The dk-pwgen program generates passwords, pins or hexadecimal keys
+(i.e. used for WiFi).
+The output type is one of the following:
+
+* Normal user password.
+ This is the default output type. Specify a range (or just a value)
+ for password length, number of uppercase characters in the password,
+ number of digits in the password and number of special characters
+ in the password. The minimum password length must be at least the
+ summary of uppercase, digits and special character maximum.
+
+* Hard password
+ Use -h to switch to hard passwords and specify the length (either value
+ or range). Characters are choosen in the range 0x33 (`!') to
+ 0x7A (`z').
+
+* Binary random data
+ Use -b to produce binary random data instead of a password, specify
+ the length (either value or range).
+ Not available on Windows platforms, use the dk-rand program instead.
+
+* Pin number
+ Use -p to switch to pin numbers and specify the length (either value
+ or range).
+
+* Hexadecimal key
+ Use -x or -X to switch to hexadecimal keys and specify the length (either
+ value or range).
+
+OPTIONS
+
+-h
+--hard
+ Hard password instead of normal user passwords.
+
+-b
+--binary
+ Binary random data instead of passwords, pins or keys.
+ Not available on Windows platforms, use the dk-rand
+ program instead.
+
+-x
+--hex
+ Hexadecimal key using `a'...`f' for 10...15.
+
+-X
+--Hex
+ Hexadecimal key using `A'...`F' for 10...15.
+
+-p
+--pin
+ PIN number.
+
+-l <range>
+--length=<range>
+ Output length.
+ Ranges are specified as <min>-<max>, i.e. ``6-8''.
+
+-u <range>
+--upper-case=<range>
+ Number of upper case characters for normal
+ user passwords.
+
+-d <range>
+--digits=<range>
+ Number of digits for normal user passwords.
+
+-s <range>
+--special=<range>
+ Number of special characters for normal user passwords.
+
+-n
+--no-newline
+ Suppress the newline at end of output.
+
+--verbose
+ Show error message on interrupt by SIGPIPE.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+EXAMPLES
+
+Create normal user password, 8 to 10 characters long, containing
+1 to 3 upper case characters, 1 to 2 digits and 1 to 2 special
+characters:
+
+dk-pwgen -l 8-10 -u 1-3 -d 1-2 -s 1-2
+
+
+Create a harder password, 8 to 10 characters long:
+
+dk-pwgen -h -l 8-10
+
+
+Create a numeric PIN, 6 characters long:
+
+dk-pwgen -p -l 6
+
+
+Create a hexadecimal key for WiFi, 64 characters long:
+
+dk-pwgen -x -l 64
+
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-pwgen --license
+to see license information.
+
+#if DK4_HAVE_OPENSSL_RAND_H
+This product includes software developed by the OpenSSL Project for use in
+the OpenSSL Toolkit (http://www.openssl.org/).
+This product includes cryptographic software written by
+Eric Young (eay@cryptsoft.com).
+This product includes software written by Tim Hudson (tjh@cryptsoft.com).
+#endif
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-recv.txt b/support/dktools/dktools/en/dk-recv.txt
new file mode 100644
index 0000000000..843dd1335d
--- /dev/null
+++ b/support/dktools/dktools/en/dk-recv.txt
@@ -0,0 +1,66 @@
+
+NAME
+
+dk-recv - Receive data from a dk-send process
+
+SYNOPSIS
+
+dk-recv [<option(s)>] <host> <port> [<file>]
+
+DESCRIPTION
+
+The program establishes a TCP connection to the given host and port
+and receives data. Output is written to the given file or standard output.
+
+OPTIONS
+
+-t Tell dk-send process to start transmission.
+--transmission
+
+-l <port> Local port number to use (service name
+--local-port=<port> allowed).
+
+-c <timeout> Timeout for connection (integer or floating
+--connect-timeout=<timeout> point number).
+
+--help Show short help screen.
+
+--manual Show manual text (this text).
+
+--version Show version information.
+
+--license Show license.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+EXAMPLES
+
+* Receive data and store on hard disk (or partition):
+ dk-recv 192.0.2.103 9876 | dk-blks -b 4k | dd of=/dev/sda bs=4096
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+AUTHOR
+
+Dirk Krause
+
+HISTORY
+
+The functionality of this program was available in ``dknet -r'' in version
+3.x.x.
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-recv --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-send.txt b/support/dktools/dktools/en/dk-send.txt
new file mode 100644
index 0000000000..2f2d132b5a
--- /dev/null
+++ b/support/dktools/dktools/en/dk-send.txt
@@ -0,0 +1,77 @@
+
+NAME
+
+dk-send - Send data to one or multiple recipients (dk-recv processes)
+
+SYNOPSIS
+
+dk-send [<option(s)>] <port> [<file>]
+
+DESCRIPTION
+
+The program accepts incoming connection requests and establishes connections.
+The file contents (or data from standard input) is sent to all recipients.
+
+OPTIONS
+
+-n <number> Number of expected clients or ``unlimited''.
+--number-of-clients=<number> When specifying ``unlimited'' here, the
+ last client must use the -t option.
+
+-a <clients> Comma-separated list of allowed client
+--allow=<clients> addresses. Each client address consists
+ of an IP address (IPv4 or IPv6), optionally
+ followed by a netmask (IP address or bit
+ number). IP address and mask are separated
+ by a slash.
+
+-l Listen on local interfaces only.
+--local-only
+
+-b <number> Number of connection requests to queue
+--backlog=<number> if necessary.
+
+-c <timeout> Timeout in seconds for read attempt after
+--connect-timeout=<timeout> establishing a connection.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+EXAMPLES
+
+* Send an entire hard disk or partition
+ dd if=/dev/sda bs=4096 | dk-send 9876
+
+* ... to 3 recipients
+ dd if=/dev/sda bs=4096 | dk-send -n 3 9876
+
+* ... which must be in 192.0.2.0/255.255.255.0
+ dd if=/dev/sda bs=4096 | dk-send -n 3 -a 192.0.2.0/255.255.255.0 9876
+ or
+ dd if=/dev/sda bs=4096 | dk-send -n 3 -a 192.0.2.0/24 9876
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+AUTHOR
+
+Dirk Krause
+
+HISTORY
+
+The functionality of this program was available in ``dknet -s'' in version
+3.x.x.
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-send --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-sort.txt b/support/dktools/dktools/en/dk-sort.txt
new file mode 100644
index 0000000000..b4769c9701
--- /dev/null
+++ b/support/dktools/dktools/en/dk-sort.txt
@@ -0,0 +1,106 @@
+
+NAME
+
+dk-sort - Sort text line by line
+
+SYNOPSIS
+
+dk-sort [<options>] [<file(s)>]
+
+DESCRIPTION
+
+The program sorts input text from the specified files (or from standard
+input if no file is specified) line by line.
+
+OPTIONS
+
+-i <string>
+--input-encoding=<string>
+ Expected input encoding. A byte order marker (BOM) at the beginning
+ of the file overwrites the encoding specified here.
+
+-c
+--case-insensitive
+ Case-insensitive comparisons.
+
+-b
+--ignore-leading-blanks
+ Ignore leading whitespace sequences at start of line.
+
+-w
+--normalize
+ Normalize lines (deletes leading and trailing whitespace
+ sequences and replaces other whitespace sequences by one space).
+
+-e
+--suppress-empty-lines
+ Suppress empty lines.
+
+-n
+--number
+ Compare lines by leading integer number.
+
+-u
+--unsigned
+ Compare lines by leading unsigned integer number.
+
+-x
+--hex
+ Compare lines by leading unsigned integer number in hexadecimal
+ notation.
+
+-f
+--float
+ Compare lines by leading floating point number (C data type
+ double is used).
+
+-v
+--value-lines-first
+ Write lines containing a value (-n, -u, -x, -f) before lines
+ containing no value. Default is to write the lines without
+ value first.
+
+-m
+--merge-equal-lines
+ Write only one line from a sequence of equal lines to output.
+
+-r
+--reverse
+ Reversed sort order.
+
+-l <size>
+--line-size=<size>
+ Line buffer size (default and minimum is 1024).
+
+-R
+--reset
+ Ignore preference settings for line buffer size.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+PREFERENCES
+
+line.size
+ Line buffer size if the -l option was not used.
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-sort --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-sqlsplit.txt b/support/dktools/dktools/en/dk-sqlsplit.txt
new file mode 100644
index 0000000000..8f0b822aa7
--- /dev/null
+++ b/support/dktools/dktools/en/dk-sqlsplit.txt
@@ -0,0 +1,42 @@
+
+NAME
+
+dk-sqlsplit - Split overlong SQL lines
+
+SYNOPSIS
+
+dk-sqlsplit [<file(s)>]
+
+DESCRIPTION
+
+The program splits overlong SQL lines (i.e. produced by mysqldump)
+at record borders. Record borders are sequences of closing bracket,
+comma, and opening bracket outside single quoted, double quoted, or
+back-tick quoted strings or comments.
+
+The program reads input from standard input or from the specified files and
+writes output to standard output.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-sqlsplit --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-t2db.txt b/support/dktools/dktools/en/dk-t2db.txt
new file mode 100644
index 0000000000..185bfe476c
--- /dev/null
+++ b/support/dktools/dktools/en/dk-t2db.txt
@@ -0,0 +1,116 @@
+
+NAME
+
+dk-t2db - Text to database converter
+
+SYNOPSIS
+
+dk-t2db [<options>] [<file>...] <database>
+
+DESCRIPTION
+
+The program converts text from the specified files or standard input
+into a simple text database.
+
+A ``simple database'' is a Berkeley DB, NDBM or in-memory database.
+The records are key/value pairs, both key and value are a byte array.
+Keys are unique.
+
+In a ``simple text database'' all keys and values are text strings.
+The finalizing 0 character is saved in the database together with the
+texts.
+
+Use type::filename to specify databases (Type and file name are separated
+by two colons). The following type names can be used:
+bdb Berkeley DB
+ndbm NDBM database
+mem in-memory database
+
+OPTIONS
+
+-a, --add
+ adds data to an existing database (modifies or adds records).
+ Without this option the program deletes an existing database
+ and creates a new one.
+
+-R, --reset
+ ignores preference values for line, key and value buffer size.
+
+-l <size>, --line-size=<size>
+ Line buffer size (number of characters), default: 1024.
+
+-k <size>, --key-buffer-size=<size>
+ Key buffer size (number of characters), default: 512.
+
+-v <size>, --value-buffer-size=<size>
+ Value buffer size (number of characters), default: 512.
+
+-i <string>, --input-encoding=<string>
+ Expected input encoding. The encoding is overwritten if a
+ byte order marker (BOM) is found at the start of input.
+
+-c <string>, --comment=<string>
+ Optional comment character. All lines having the comment character
+ as first non-whitespace character are comments.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+EXAMPLES
+
+* Process standard input, create in-memory database file db.dat:
+ dk-t2db -c "#" mem::db.dat
+
+* Process text input file db.in, create Berkeley DB file bdb.dat:
+ dk-t2db -c "#" db.in bdb::bdb.dat
+
+* Process text input file db.in, modify existing NDBM database ndbm.dat:
+ dk-t2db -a -c "#" db.in ndbm::ndbm.dat
+
+PREFERENCES
+
+line.size Input line buffer size
+
+text-db.key.max-size Key buffer size
+
+text-db.value.max-size Value buffer size
+
+FILES
+
+Input files are text files. Each text line specifies one record.
+The first word in a line (first sequence of non-whitespace characters) is
+the key text. All further text started by the second word until the
+line end is used as value.
+
+The key can not contain spaces, the value can contain spaces.
+
+A line containing just a key but no value results in deletion of the
+specified record.
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+Wildcards can not be used to specify the database file name.
+
+AUTHOR
+
+Dirk Krause
+
+HISTORY
+
+In previous DK tools versions the functionality was provided by the
+``dkdbt make'' command.
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-t2db --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-t2h.txt b/support/dktools/dktools/en/dk-t2h.txt
new file mode 100644
index 0000000000..db23c6e641
--- /dev/null
+++ b/support/dktools/dktools/en/dk-t2h.txt
@@ -0,0 +1,61 @@
+
+NAME
+
+dk-t2h - Text to HTML converter
+
+SYNOPSIS
+
+dk-t2h [<options>] [<file(s)>]
+
+DESCRIPTION
+
+The program converts text from the specified files or standard input
+to HTML. Alternatively you can use the -e option to convert text specified
+on the command line.
+
+OPTIONS
+
+-i <string> Input encoding, one from:
+--input-encoding=<string> ``ascii'' (use this for ISO-LATIN-1 too),
+ ``ansi'', ``utf-8'',
+ ``utf-16'', ``utf-16-le'', ``utf-16-be'',
+ ``c32'', ``c32-le'', or ``c32-be''.
+
+-l Wrap all lines into
+--code-lines ``<code title="001">...</code>''.
+
+-e Convert the command line arguments, do
+--echo not treat them as file names.
+
+-f Produce a full HTML file, not just a
+--full fragment.
+ Options -e and -f are mutually exclusive.
+
+-t <string> Title for full HTML file, ignored if
+--title=<string> the -f option is not present.
+
+--verbose Show error message on interrupt by SIGPIPE.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-t2h --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-t2l.txt b/support/dktools/dktools/en/dk-t2l.txt
new file mode 100644
index 0000000000..b0868c1202
--- /dev/null
+++ b/support/dktools/dktools/en/dk-t2l.txt
@@ -0,0 +1,114 @@
+
+NAME
+
+dk-t2l - Text to LaTeX converter
+
+SYNOPSIS
+
+dk-t2l [<options>] [<file(s)>]
+
+DESCRIPTION
+
+The program converts text from the specified files or standard input
+to LaTeX. Alternatively you can use the -e option to convert text specified
+on the command line.
+
+OPTIONS
+
+-i <string> Input encoding, one from:
+--input-encoding=<string> ``ascii'' (use this for ISO-LATIN-1 too),
+ ``ansi'', ``utf-8'',
+ ``utf-16'', ``utf-16-le'', ``utf-16-be'',
+ ``c32'', ``c32-le'', or ``c32-be''.
+
+-e Convert the command line arguments, do
+--echo not treat them as file names.
+
+-n Command line arguments are characters
+--numeric given as decimal numbers.
+
+-h Command line arguments are characters
+--hex given as hexadecimal numbers.
+
+-r Write usable font encodings and recommended
+--recommendations LaTeX packages list.
+
+-l Write \\ sequence before newline
+--line-feed (default is to simply write the newline).
+
+-t Write \HT{} for tabulators
+--tabulator (default is to write a space).
+
+--verbose Show error message on interrupt by SIGPIPE.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+FILES
+
+The program uses translation tables in *.t2l files to convert from UNICODE
+to LaTeX. Typically the files are stored in the ${datadir}/dktools/charmap
+directory.
+The files consist of empty lines, comment lines, and data lines.
+A comment line is started by a raute character `#' as first text character.
+A data line consists of several texts, separated by whitespaces or
+whitespace sequences. It contains the following components:
+- Hexadecimal character value (required).
+ The UNICODE standard uses 24 (newer versions) or 32 bits (older versions)
+ for characters.
+ The character value in a data line must be in the range 0...FFFFFFFF.
+- b=<string> (optional)
+ A LaTeX sequence that can be used in both math mode and non-math mode
+ for the character.
+- t=<string> (optional)
+ A LaTeX sequence that can be used in text mode (non-math mode) for the
+ character.
+- m=<string> (optional)
+ A LaTeX sequence that can be used in math mode for the characters.
+NOTE: At least one from b=..., t=..., m=... is required!
+- e=<string> (optional)
+ Information about font encodings.
+ You can either specify the font encodings usable in a comma-separated list
+ (``ot1'', ``t1'', ``t4'', ``t5''), i.e. ``t1,ot1'' or use an exclamation
+ mark to specify a list of denied encoding, i.e. ``!t4,t5''.
+- p=<string> (optional)
+ Information about LaTeX packages required.
+
+RESTRICTIONS
+
+On Windows the file name length is restricted to _MAX_PATH (260) characters
+if the file name contains a wildcard (* or ? character).
+
+The program uses translation tables in *.t2l files to convert from UNICODE
+to LaTeX. UNICODE contains 1,114,112 characters (wikipedia article, 2015-05-12),
+so I can not
+provide complete tables for all characters.
+As I am a native German speaker, the tables include support for some
+Central European languages.
+
+CONTRIBUTIONS
+
+You can provide further translation tables from UNICODE to LaTeX,
+please use the SourceForge project page
+http://sourceforge.net/projects/dktools
+to contact me (forums, patches).
+I can only accept your work if you use a 3 clauses BSD license.
+I think translation tables should be made by native speakers of a language
+(or at least people experienced in the language) with at least some
+LaTeX experience.
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-t2l --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk-uid.txt b/support/dktools/dktools/en/dk-uid.txt
new file mode 100644
index 0000000000..fdb0b2c950
--- /dev/null
+++ b/support/dktools/dktools/en/dk-uid.txt
@@ -0,0 +1,38 @@
+
+NAME
+
+dk-uid - Find free user ID
+
+SYNOPSIS
+
+dk-uid <min> <max>
+
+DESCRIPTION
+
+The program searches for the first free UID in a given range and
+writes the number to standard output.
+
+ARGUMENTS
+
+<min> Minimum UID number.
+
+<max> Maximum UID number.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk-uid --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/dk4info.txt b/support/dktools/dktools/en/dk4info.txt
new file mode 100644
index 0000000000..d56e3458cb
--- /dev/null
+++ b/support/dktools/dktools/en/dk4info.txt
@@ -0,0 +1,40 @@
+
+NAME
+
+dk4info - Information about directories and features
+
+SYNOPSIS
+
+dk4info [-l]
+
+DESCRIPTION
+
+The program shows the directories currently used and the directories
+configured during build process.
+Option -l additionally prints the compiler constants created by the
+configure script.
+
+OPTIONS
+
+-l Show compiler constants.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+AUTHOR
+
+Dirk Krause
+
+HISTORY
+
+COPYRIGHT AND LICENSE
+
+Run
+ dk4info --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/lprngcl.txt b/support/dktools/dktools/en/lprngcl.txt
new file mode 100644
index 0000000000..1b1bdd426f
--- /dev/null
+++ b/support/dktools/dktools/en/lprngcl.txt
@@ -0,0 +1,69 @@
+
+NAME
+
+ lprngcl - Clean LPRng print queues
+
+SYNOPSIS
+
+ lprngcl [-a] [-v] [-t <seconds> [<queue(s)>]
+ lprngcl [--help] [--version] [--license] [--manual]
+
+DESCRIPTION
+
+The lprng program deletes all print jobs submitted by the current user from
+the specified LPD/LPRng print queues.
+It is intended to be used in PC classrooms in schools or universities.
+If a user logs off from a computer, he will leave the room so we should skip
+her/his print jobs still in the queue.
+
+OPTIONS
+
+-a
+--ascii
+ The LPRng host uses ASCII encoding. Default: UTF-8.
+
+-t seconds
+--timeout=seconds
+ Timeout for network operations.
+
+
+-v
+--verbose
+ Produce verbose output, show the LPRng servers response.
+
+--help
+ Show short help text.
+
+--version
+ Show version information.
+
+--license
+ Show license terms.
+
+--manual
+ Show (this) longer help text.
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+NOTES
+
+In version 4.3.0 and above lprngcl does not longer use a dk3print.conf file.
+There is no default host and no default queue, so all queues to clean up
+must be specified on the command line in queue@host notation.
+
+AUTHOR
+
+Dirk Krause
+
+COPYRIGHT AND LICENSE
+
+Run
+ lprngcl --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/en/x.txt b/support/dktools/dktools/en/x.txt
new file mode 100644
index 0000000000..ad8d98811b
--- /dev/null
+++ b/support/dktools/dktools/en/x.txt
@@ -0,0 +1,47 @@
+
+NAME
+
+SYNOPSIS
+
+DESCRIPTION
+
+OPTIONS
+
+EXIT STATUS
+
+0 on success, all other values indicate errors.
+
+ERRORS
+
+DIAGNOSTICS
+
+EXAMPLES
+
+ENVIRONMENT
+
+FILES
+
+CAVEATS
+
+BUGS
+
+RESTRICTIONS
+
+NOTES
+
+AUTHOR
+
+Dirk Krause
+
+HISTORY
+
+COPYRIGHT AND LICENSE
+
+Run
+ XXXXX --license
+to see license information.
+
+SEE ALSO
+
+http://dktools.sourceforge.net
+
diff --git a/support/dktools/dktools/htmlbook/GNUmakefile b/support/dktools/dktools/htmlbook/GNUmakefile
new file mode 100644
index 0000000000..42e7d04a7a
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/GNUmakefile
@@ -0,0 +1,145 @@
+#
+# CONFIGURATION:
+# Set language here.
+# If your LANG environment variable ends on ``.UTF-8'' or ``.utf8''
+# you have to use the same suffix here.
+#
+ifndef LANG
+LANG=en_US.utf8
+endif
+
+#
+# CONFIGURATION:
+# How to run the htmlbook program?
+#
+ifndef HTMLBOOK
+HTMLBOOK=htmlbook
+endif
+
+ifndef GXHCONVERT
+GXHCONVERT=LANG=C gxhconvert
+endif
+
+#
+# CONFIGURATION:
+# Resolution when converting from vector to bitmaps.
+# Higher values create larger images.
+#
+ifndef FIGPNGRES
+FIGPNGRES=96
+endif
+
+#
+# If one of the *.prj, *.hbt or *.txt files was modified,
+# we have to rebuild all.
+#
+TEXTFILES := $(wildcard *.txt)
+HBTFILES := $(wildcard *.hbt)
+PRJFILES := $(wildcard *.prj)
+
+#
+# All *.fig images, *.gp plots and *.tex files (formulas) are
+# converted to *.png, *.pdf and *.svg.
+#
+IMAGES := \
+ $(patsubst %.fig,%.png,$(wildcard *.fig)) \
+ $(patsubst %.fig,%.pdf,$(wildcard *.fig)) \
+ $(patsubst %.fig,%.svg,$(wildcard *.fig)) \
+ $(patsubst %.gp,%.png,$(wildcard *.gp)) \
+ $(patsubst %.gp,%.pdf,$(wildcard *.gp)) \
+ $(patsubst %.gp,%.svg,$(wildcard *.gp)) \
+ $(patsubst %.tex,%.png,$(wildcard *.tex)) \
+ $(patsubst %.tex,%.pdf,$(wildcard *.tex)) \
+ $(patsubst %.tex,%.svg,$(wildcard *.tex))
+
+#
+# Suffixes for graphics files
+#
+.SUFFIXES: .png .svg .pdf .tex .fig .gp
+
+#
+# Graphics conversion rules
+#
+.tex.pdf:
+ gxhconvert -o=pdf $<
+
+.fig.pdf:
+ gxhconvert -o=pdf $<
+
+.gp.pdf:
+ gxhconvert -o=pdf $<
+
+.pdf.svg:
+ gxhconvert -o=svg $<
+
+#
+# CONFIGURATION:
+# If you do not need transparency, remove the -a option from the
+# gxhconvert command below.
+#
+.svg.png:
+ gxhconvert -o=png -r=$(FIGPNGRES) -a $<
+ optipng -q -i1 -zc1-9 -zm1-9 -zs0-3 -f0-5 $@
+
+#
+# Names of icon files
+#
+ICONS= home.png toc.png prev.png next.png index.png
+
+#
+# The first target is the default target.
+#
+install: # Create HTML page set for local viewing and install
+install: $(TEXTFILES) $(HBTFILES) $(PRJFILES) $(IMAGES)
+ -[ ! -f htmlbook.sh ] || rm -f htmlbook.sh
+ LANG=$(LANG) $(HTMLBOOK) index.prj
+ chmod 755 htmlbook.sh
+ ./htmlbook.sh
+
+webinstall: # Create HTML page set for web server and install
+webinstall: $(TEXTFILES) $(HBTFILES) $(PRJFILES) $(IMAGES) $(ICONS)
+ -[ ! -f htmlbook.sh ] || rm -f htmlbook.sh
+ LANG=$(LANG) $(HTMLBOOK) -o web index.prj
+ chmod 755 htmlbook.sh
+ ./htmlbook.sh
+
+chminstall: # Create HTML page set for CHM file building
+chminstall: $(TEXTFILES) $(HBTFILES) $(PRJFILES) $(IMAGES)
+ -[ ! -f htmlbook.sh ] || rm -f htmlbook.sh
+ LANG=$(LANG) $(HTMLBOOK) -o chm index.prj
+ chmod 755 htmlbook.sh
+ ./htmlbook.sh
+
+#
+# Icons
+#
+
+home.png: # Icon to return to homepage
+home.png: home.fig
+ gxhconvert -o=png -r=36 -a $<
+ optipng -q -i1 -zc1-9 -zm1-9 -zs0-3 -f0-5 $@
+
+toc.png: # Icon for table of contents
+toc.png: toc.fig
+ gxhconvert -o=png -r=36 -a $<
+ optipng -q -i1 -zc1-9 -zm1-9 -zs0-3 -f0-5 $@
+
+prev.png: # Icon to go back to previous page
+prev.png: prev.fig
+ gxhconvert -o=png -r=36 -a $<
+ optipng -q -i1 -zc1-9 -zm1-9 -zs0-3 -f0-5 $@
+
+next.png: # Icon to go forward to next page
+next.png: next.fig
+ gxhconvert -o=png -r=36 -a $<
+ optipng -q -i1 -zc1-9 -zm1-9 -zs0-3 -f0-5 $@
+
+index.png: # Icon to go to keyword index
+index.png: index.fig
+ gxhconvert -o=png -r=36 -a $<
+ optipng -q -i1 -zc1-9 -zm1-9 -zs0-3 -f0-5 $@
+
+help: # Show targets in GNUmakefile
+ @echo 'Here is a list of the targets in this GNUmakefile:'
+ -@egrep '^[^:;= ]*::?[ ]*' GNUmakefile|grep '#'|grep -v '^#'
+
diff --git a/support/dktools/dktools/htmlbook/chm.hbt b/support/dktools/dktools/htmlbook/chm.hbt
new file mode 100644
index 0000000000..cbdd3b2108
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/chm.hbt
@@ -0,0 +1 @@
+<div>%%contents%%</div>
diff --git a/support/dktools/dktools/htmlbook/home.fig b/support/dktools/dktools/htmlbook/home.fig
new file mode 100644
index 0000000000..25372f1f55
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/home.fig
@@ -0,0 +1,22 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+A4
+100.0
+Single
+-2
+1200 2
+0 32 #364e6d
+2 2 0 0 7 7 999 1 -1 1.00 0 0 0 0 0 5
+ 0 0 1200 0 1200 1200 0 1200 0 0
+2 4 0 0 0 0 105 1 5 0 0 0 19 0 0 5
+ 150 150 1125 150 1125 1125 150 1125 150 150
+2 4 0 0 0 0 104 1 10 0 0 0 19 0 0 5
+ 112 112 1087 112 1087 1087 112 1087 112 112
+2 4 0 0 4 4 103 1 20 0 0 0 16 0 0 5
+ 75 75 1050 75 1050 1050 75 1050 75 75
+2 4 0 0 6 6 102 1 20 0 0 0 16 0 0 5
+ 150 150 975 150 975 975 150 975 150 150
+2 3 0 0 4 4 100 1 20 0 0 0 12 0 0 4
+ 225 787 900 787 562 300 225 787
diff --git a/support/dktools/dktools/htmlbook/home.png b/support/dktools/dktools/htmlbook/home.png
new file mode 100644
index 0000000000..e368b62492
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/home.png
Binary files differ
diff --git a/support/dktools/dktools/htmlbook/index.fig b/support/dktools/dktools/htmlbook/index.fig
new file mode 100644
index 0000000000..3d776a5db2
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/index.fig
@@ -0,0 +1,24 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+A4
+100.0
+Single
+-2
+1200 2
+0 32 #364e6d
+2 2 0 0 7 7 999 1 -1 1.00 0 0 0 0 0 5
+ 0 0 1200 0 1200 1200 0 1200 0 0
+2 4 0 0 0 0 105 1 5 0 0 0 19 0 0 5
+ 150 150 1125 150 1125 1125 150 1125 150 150
+2 4 0 0 0 0 104 1 10 0 0 0 19 0 0 5
+ 112 112 1087 112 1087 1087 112 1087 112 112
+2 4 0 0 4 4 103 1 20 0 0 0 16 0 0 5
+ 75 75 1050 75 1050 1050 75 1050 75 75
+2 4 0 0 6 6 102 1 20 0 0 0 16 0 0 5
+ 150 150 975 150 975 975 150 975 150 150
+1 1 0 0 0 0 100 1 20 0 1 0.0 524 524 318 319 206 205 842 843
+2 1 0 5 0 0 100 1 -1 0 0 0 12 0 0 2
+ 881 881 731 731
+1 1 0 0 7 7 99 1 20 0 1 0.0 525 525 262 262 263 263 787 787
diff --git a/support/dktools/dktools/htmlbook/index.png b/support/dktools/dktools/htmlbook/index.png
new file mode 100644
index 0000000000..6eb43e21de
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/index.png
Binary files differ
diff --git a/support/dktools/dktools/htmlbook/index.prj b/support/dktools/dktools/htmlbook/index.prj
new file mode 100644
index 0000000000..7e5144e4da
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/index.prj
@@ -0,0 +1,186 @@
+[options]
+
+# ##### START OF REQUIRED SETTINGS
+#
+#
+
+# Destination directory for our book release.
+# DO NOT USE THE CURRENT DIRECTORY OR
+# ANY DIRECTORY CONTAINING DATA!
+# The output script removes the directory completely,
+# creates the directory again and fills it with data.
+# Any existing data in this directory will be lost!
+# ---------------------------------------------------
+output directory = /home/joe/work/test-html
+
+# Book title.
+# -----------
+title = Introduction to something
+
+# URL where to publish the book.
+# ------------------------------
+url = http://www.my-server.org/something
+
+# Impressum included in contents.
+# Alternatively you could use "impressum page".
+# ---------------------------------------------
+impressum link = http://www.my-server.org/impressum.html
+# impressum page = impressum.txt
+
+# Authors name.
+# May be changed per node.
+# ------------------------
+author = Me, myself and I
+
+# Location where the book is produced.
+# May be changed per node.
+# ------------------------------------
+location = Somewhere
+
+#
+#
+# ##### END OF REQUIRED SETTINGS
+
+
+
+# Output character set, us-ascii or utf-8.
+# May be changed per node.
+# ----------------------------------------
+html charset = utf-8
+
+# Template used for all output files.
+# May be changed per node.
+# -----------------------------------
+template = web.hbt
+
+# Style used for all output files.
+# You may want to modify the stylesheet for a
+# color scheme corresponding to your corporate
+# identity colors.
+# May be changed per node.
+# --------------------------------------------
+style = style.css
+
+# Enable/disable page-internal table of contents.
+# May be changed per node.
+# -----------------------------------------------
+page toc = no
+
+# File used to build the index.html start page.
+# ---------------------------------------------
+index file = index.txt
+
+# Enable/disable clickable keywords index kw.html.
+# ------------------------------------------------
+create index = no
+
+# Enable/disable conversion of ampersands.
+# May be changed per node.
+# ----------------------------------------
+replace ampersand = no
+
+# Enable/disable use of tidy for inspection/correction.
+# May be changed per node.
+# -----------------------------------------------------
+tidy = yes
+
+# Enable/disable use of ln instead of cp (reduces
+# disk space consumption).
+# May be changed per node.
+# -----------------------------------------------
+ln = yes
+
+# Enable/disable position text on top of page.
+# May be changed per node.
+# --------------------------------------------
+write position = yes
+
+# Switch navigation between "icons", "text", "both".
+# This option was intended originally, but skipped.
+# --------------------------------------------------
+# navigation = icons
+
+# Shortcut icon.
+# May be changed per node.
+# -------------------------------------------
+shortcut icon = favicon.ico
+
+# Enable/disable HTML for CHM (othewise HTML for web).
+# ----------------------------------------------------
+chm = no
+
+# Output script name.
+# Run the script after running the htmlbook program.
+# --------------------------------------------------
+output script = htmlbook.sh
+
+# Enable/disable line numbers for code from sourcefile
+# and code special commands.
+# ----------------------------------------------------
+code line numbers = yes
+
+# Option for CHM production, activated by
+# "htmlbook -o chm index.prj", overwrites some
+# existing settings.
+# You can have multiple such settings, activate them
+# by "htmlbook -o chm,this,that,another index.prj"
+# --------------------------------------------------
+[options:chm]
+chm = yes
+template = chm.hbt
+code line numbers = no
+# The language setting for the CHM project, default is
+# 0x409 English (USA)
+# Should correspond to the LANG setting in Makefile/GNUmakefile.
+#
+# chm language = 0x407 Deutsch (Deutschland)
+#
+
+# Similar optional section for web publishing.
+# --------------------------------------------
+[options:web]
+chm = no
+template = web.hbt
+
+# Optional section, activated automatically on
+# Windows systems (no need for "-o windows").
+# A similar section on non-Windows systems would be
+# [options:non-windows]
+# -------------------------------------------------
+[options:windows]
+output script = htmlbook.cmd
+
+
+
+# Additional files to copy
+# ------------------------
+[files]
+example1.c
+
+
+
+# Book contents, structed by indent level of
+# node title lines.
+# ------------------------------------------
+[contents]
+Something
+ Install something on Linux/Unix
+ @short = Installation Linux/Unix
+ @file = installu.txt
+ Installation from source
+ @short = Source installation
+ @file = instalus.txt
+ Installation using program X
+ @short = Installation using X
+ @file = instalux.txt
+ Install something on Windows
+ @short = Windows installation
+ @file = installw.txt
+Start something
+ Start something on Linux/Unix
+ @short = Linux start
+ @file = startu.txt
+ Start something on Windows
+ @short = Windows start
+ @file = startw.txt
+
diff --git a/support/dktools/dktools/htmlbook/math-img.tex b/support/dktools/dktools/htmlbook/math-img.tex
new file mode 100644
index 0000000000..cb63f512fc
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/math-img.tex
@@ -0,0 +1,34 @@
+\documentclass[12pt]{article}
+% begin font setup
+\usepackage[T1]{fontenc}
+\usepackage{mathptmx}
+\usepackage[scaled=.92]{helvet}
+\usepackage{courier}
+% end font setup
+% begin other packages
+\usepackage{textcomp}
+\usepackage[intlimits]{amsmath}
+% end other packages
+\usepackage{color}
+\setlength{\paperwidth}{20cm}
+\setlength{\paperheight}{20cm}
+\pagestyle{empty}
+\setlength{\voffset}{-0.9in}
+\setlength{\topmargin}{0bp}
+\setlength{\headheight}{0bp}
+\setlength{\headsep}{0bp}
+\setlength{\topskip}{0bp}
+\setlength{\hoffset}{-0.9in}
+\setlength{\oddsidemargin}{0bp}
+\setlength{\evensidemargin}{0bp}
+\setlength{\marginparwidth}{0bp}
+\setlength{\marginparsep}{0bp}
+\setlength{\textwidth}{\paperwidth}
+\setlength{\textheight}{\paperheight}
+\setlength{\parskip}{0bp}
+\setlength{\parindent}{0bp}
+\setlength{\pdfpagewidth}{\paperwidth}
+\setlength{\pdfpageheight}{\paperheight}
+\begin{document}% FORMULA GOES INTO NEXT LINE, REPLACE EXISTING ONE
+\(a^2+b^2=c^2\)
+\end{document}
diff --git a/support/dktools/dktools/htmlbook/next.fig b/support/dktools/dktools/htmlbook/next.fig
new file mode 100644
index 0000000000..b19114a8f9
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/next.fig
@@ -0,0 +1,22 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+A4
+100.0
+Single
+-2
+1200 2
+0 32 #364e6d
+2 2 0 0 7 7 999 1 -1 1.00 0 0 0 0 0 5
+ 0 0 1200 0 1200 1200 0 1200 0 0
+2 4 0 0 0 0 105 1 5 0 0 0 19 0 0 5
+ 150 150 1125 150 1125 1125 150 1125 150 150
+2 4 0 0 0 0 104 1 10 0 0 0 19 0 0 5
+ 112 112 1087 112 1087 1087 112 1087 112 112
+2 4 0 0 4 4 103 1 20 0 0 0 16 0 0 5
+ 75 75 1050 75 1050 1050 75 1050 75 75
+2 4 0 0 6 6 102 1 20 0 0 0 16 0 0 5
+ 150 150 975 150 975 975 150 975 150 150
+2 3 0 0 4 4 100 1 20 0 0 0 12 0 0 4
+ 338 225 338 900 825 562 338 225
diff --git a/support/dktools/dktools/htmlbook/next.png b/support/dktools/dktools/htmlbook/next.png
new file mode 100644
index 0000000000..c02bdaead9
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/next.png
Binary files differ
diff --git a/support/dktools/dktools/htmlbook/prev.fig b/support/dktools/dktools/htmlbook/prev.fig
new file mode 100644
index 0000000000..6a1b4c467a
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/prev.fig
@@ -0,0 +1,22 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+A4
+100.0
+Single
+-2
+1200 2
+0 32 #364e6d
+2 2 0 0 7 7 999 1 -1 1.00 0 0 0 0 0 5
+ 0 0 1200 0 1200 1200 0 1200 0 0
+2 4 0 0 0 0 105 1 5 0 0 0 19 0 0 5
+ 150 150 1125 150 1125 1125 150 1125 150 150
+2 4 0 0 0 0 104 1 10 0 0 0 19 0 0 5
+ 112 112 1087 112 1087 1087 112 1087 112 112
+2 4 0 0 4 4 103 1 20 0 0 0 16 0 0 5
+ 75 75 1050 75 1050 1050 75 1050 75 75
+2 4 0 0 6 6 102 1 20 0 0 0 16 0 0 5
+ 150 150 975 150 975 975 150 975 150 150
+2 3 0 0 4 4 100 1 20 0 0 0 12 0 0 4
+ 787 225 787 900 300 562 787 225
diff --git a/support/dktools/dktools/htmlbook/prev.png b/support/dktools/dktools/htmlbook/prev.png
new file mode 100644
index 0000000000..2d41c5ec3f
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/prev.png
Binary files differ
diff --git a/support/dktools/dktools/htmlbook/style.css b/support/dktools/dktools/htmlbook/style.css
new file mode 100644
index 0000000000..4df8742182
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/style.css
@@ -0,0 +1,1295 @@
+@media screen {
+ /* General formats.
+ */
+ body {
+ background-color: white;
+ }
+ h1 {
+ font-size: 200%;
+ font-weight: bold;
+ }
+ h2 {
+ font-size: 180%;
+ font-weight: bold;
+ }
+ h3 {
+ font-size: 160%;
+ font-weight: bold;
+ }
+ h4 {
+ font-size: 140%;
+ font-weight: bold;
+ }
+ h5 {
+ font-size: 120%;
+ font-weight: bold;
+ }
+ h6 {
+ font-size: 100%;
+ font-weight: bold;
+ }
+ span.hint {
+ cursor: help;
+ border-bottom: 1px dotted;
+ }
+ pre {
+ background-color: #FFFFE8;
+ border-width: 1px;
+ border-style: solid;
+ border-color: black;
+ padding-top: 0.5em;
+ padding-left: 2em;
+ padding-right: 2em;
+ padding-bottom: 0.5em;
+ margin-top: 0.5em;
+ margin-left: 2em;
+ margin-right: 2em;
+ margin-bottom: 0.5em;
+ overflow: auto;
+ }
+ pre > i {
+ font-family: inherit;
+ font-style: italic;
+ }
+ pre code:before {
+ content: attr(title)':\20';
+ font-weight: bold;
+ color: #999999;
+ }
+ pre:hover code:before {
+ content: '\20\20\20\20\20';
+ }
+ /* Classes from the template
+ */
+ div.header {
+ margin: 5px;
+ }
+ div.headerleft {
+ float: left;
+ text-align: left;
+ }
+ div.headercenter {
+ text-align: center;
+ }
+ span.title {
+ font-size: 200%;
+ }
+ div.headerright {
+ float: right;
+ text-align: right;
+ }
+ div.navicon {
+ clear: both;
+ margin: 5px;
+ }
+ div.naviheader {
+ background-color: yellow;
+ text-align: center;
+ }
+ div.contents {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ }
+ div.footer {
+ clear: both;
+ background-color: yellow;
+ border: 1px silver;
+ margin: 5px;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ div.footerleft {
+ float: left;
+ text-align: left;
+ }
+ div.footercenter {
+ text-align: center;
+ }
+ div.footerright {
+ float: right;
+ text-align: right;
+ }
+ /* Classes produced by htmlbook
+ */
+ div.hb_nm_div {
+ float: right;
+ width: 23em;
+ background-color: yellow;
+ margin-left: 2em;
+ margin-bottom: 1em;
+ }
+ ul.hb_nm_ul {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ }
+ li.hb_nm_li {
+ list-style: none;
+ }
+ a.hb_nm_a:link {
+ color: red;
+ text-decoration: none;
+ }
+ a.hb_nm_a:visited {
+ color: red;
+ text-decoration: none;
+ }
+ a.hb_nm_a:hover {
+ color: red;
+ text-decoration: underline;
+ }
+ a.hb_nm_a:focus {
+ color: red;
+ text-decoration: underline;
+ }
+ a.hb_nm_a_parent:link {
+ color: red;
+ font-weight: bold;
+ text-decoration: none;
+ }
+ a.hb_nm_a_parent:visited {
+ color: red;
+ font-weight: bold;
+ text-decoration: none;
+ }
+ a.hb_nm_a_parent:hover {
+ color: red;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ a.hb_nm_a_parent:focus {
+ color: red;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ li.hb_nm_c {
+ list-style: none;
+ color: red;
+ font-weight: bold;
+ }
+ li.hb_nm_sep {
+ list-style: none;
+ }
+ div.hb_navigation {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ }
+ a.hb_navi_a {
+ }
+ img.hb_navi_img {
+ }
+ div.hb_pos_div {
+ }
+ table.hb_pos_ta {
+ }
+ tr.hb_pos_tr {
+ }
+ td.hb_pos_td_arrow {
+ font-family: sans-serif;
+ font-size: 75%;
+ text-align: center;
+ vertical-align: top;
+ }
+ td.hb_pos_td_text {
+ font-family: sans-serif;
+ font-size: 75%;
+ text-align: left;
+ vertical-align: top;
+ }
+ div.contents_from_text {
+ }
+ span.hb_link_number {
+ display: none;
+ }
+ table.hb_img_ta {
+ }
+ tr.hb_img_tr {
+ }
+ td.hb_img_td_img {
+ vertical-align: top;
+ text-align: center;
+ }
+ td.hb_img_td_empty {
+ width: 5ex;
+ }
+ td.hb_img_td_a {
+ vertical-align: top;
+ text-align: left;
+ }
+ a.hb_img_a_larger {
+ font-family: sans-serif;
+ font-size: 75%;
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_img_a_larger:link {
+ font-family: sans-serif;
+ font-size: 75%;
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_img_a_larger:visited {
+ font-family: sans-serif;
+ font-size: 75%;
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_img_a_larger:hover {
+ font-family: sans-serif;
+ font-size: 75%;
+ color: green;
+ text-decoration: underline;
+ }
+ a.hb_img_a_larger:focus {
+ font-family: sans-serif;
+ font-size: 75%;
+ color: green;
+ text-decoration: underline;
+ }
+ a.hb_a_i:link {
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_a_i:visited {
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_a_i:focus {
+ color: green;
+ text-decoration: underline;
+ }
+ a.hb_a_i:hover {
+ color: green;
+ text-decoration: underline;
+ }
+ a.hb_a_e {
+ }
+ table.hb_me_ta {
+ background-color: silver;
+ }
+ tr.hb_me_tr {
+ }
+ td.hb_me_td_text {
+ font-family: sans-serif;
+ text-align: left;
+ vertical-align: top;
+ }
+ td.hb_me_td_arrow {
+ font-family: sans-serif;
+ text-align: center;
+ vertical-align: top;
+ }
+ table.hb_ptoc_ta {
+ }
+ tr.hb_ptoc_tr {
+ }
+ td.hb_ptoc_td_empty {
+ width: 3ex;
+ }
+ td.hb_ptoc_td_data {
+ font-family: sans-serif;
+ font-size: 75%;
+ text-align: left;
+ vertical-align: top;
+ }
+ a.hb_ptoc_a:link {
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_ptoc_a:visited {
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_ptoc_a:focus {
+ color: green;
+ text-decoration: underline;
+ }
+ a.hb_ptoc_a:hover {
+ color: green;
+ text-decoration: underline;
+ }
+ div.hb_link_div {
+ display: none;
+ }
+ table.hb_link_ta {
+ }
+ td.hb_link_td_number {
+ text-align: center;
+ vertical-align: top;
+ }
+ td.hb_link_td_url {
+ text-align: left;
+ vertical-align: top;
+ }
+ div.hb_dtoc_div {
+ }
+ table.hb_dtoc_ta {
+ }
+ tr.hb_dtoc_tr {
+ }
+ td.hb_dtoc_td_space {
+ }
+ td.hb_dtoc_td_entry {
+ font-family: sans-serif;
+ font-size: 75%;
+ }
+ a.hb_dtoc_a:link {
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_dtoc_a:visited {
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_dtoc_a:focus {
+ color: green;
+ text-decoration: underline;
+ }
+ a.hb_dtoc_a:hover {
+ color: green;
+ text-decoration: underline;
+ }
+ div.hb_ki_div {
+ }
+ h2.hb_ki_h2 {
+ }
+ dl.hb_ki_dl {
+ }
+ dt.hb_ki_dt {
+ font-weight: bold;
+ }
+ dd.hb_ki_dd {
+ }
+ ul.hb_ki_ul {
+ }
+ li.hb_ki_li {
+ list-style: none;
+ font-family: sans-serif;
+ font-size: 75%;
+ }
+ a.hb_ki_a:link {
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_ki_a:visited {
+ color: green;
+ text-decoration: none;
+ }
+ a.hb_ki_a:focus {
+ color: green;
+ text-decoration: underline;
+ }
+ a.hb_ki_a:hover {
+ color: green;
+ text-decoration: underline;
+ }
+ div.hb_file_div {
+ background-color: #FFFFE8;
+ border-width: 1px;
+ border-style: solid;
+ border-color: black;
+ padding-top: 0.5em;
+ padding-left: 2em;
+ padding-right: 2em;
+ padding-bottom: 0.5em;
+ margin-top: 0.5em;
+ margin-left: 2em;
+ margin-right: 2em;
+ margin-bottom: 0.5em;
+ }
+ div.hb_file_div pre {
+ border-style: none;
+ padding-top: 0.5em;
+ padding-left: 0px;
+ padding-right: 0px;
+ padding-bottom: 0px;
+ margin-top: 0px;
+ margin-left: 0px;
+ margin-right: 0px;
+ margin-bottom: 0px;
+ overflow: auto;
+ }
+ div.hb_file_div pre > i {
+ font-family: inherit;
+ font-style: italic;
+ }
+ a.hb_file_a:link {
+ color: green;
+ font-weight: bold;
+ text-decoration: none;
+ }
+ a.hb_file_a:visited {
+ color: green;
+ font-weight: bold;
+ text-decoration: none;
+ }
+ a.hb_file_a:focus {
+ color: green;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ a.hb_file_a:hover {
+ color: green;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ div.hb_img_div_outer {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+ }
+ div.hb_img_div_no_vspace {
+ margin-top: 0.25em;
+ margin-bottom: 0.25em;
+ }
+ div.hb_img_div_inner_img {
+ float: left;
+ vertical-align: top;
+ text-align: left;
+ margin-right: 2em;
+ min-height: 3em;
+ }
+ div.hb_img_div_inner_img_centered {
+ float: left;
+ vertical-align: top;
+ text-align: center;
+ margin-right: 2em;
+ min-height: 3em;
+ }
+ p.hb_img_p_download {
+ }
+ span.hb_img_caption {
+ margin-top: 1em;
+ }
+ /* Classes for easier alignment.
+ */
+ .topleft {
+ vertical-align: top;
+ text-align: left;
+ }
+ .topcenter {
+ vertical-align: top;
+ text-align: center;
+ }
+ .topright {
+ vertical-align: top;
+ text-align: right;
+ }
+ .middleleft {
+ vertical-align: middle;
+ text-align: left;
+ }
+ .middlecenter {
+ vertical-align: middle;
+ text-align: center;
+ }
+ .middleright {
+ vertical-align: middle;
+ text-align: right;
+ }
+ .bottomleft {
+ vertical-align: bottom;
+ text-align: left;
+ }
+ .bottomcenter {
+ vertical-align: bottom;
+ text-align: center;
+ }
+ .bottomright {
+ vertical-align: bottom;
+ text-align: right;
+ }
+ .paddedtopleft {
+ vertical-align: top;
+ text-align: left;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedtopcenter {
+ vertical-align: top;
+ text-align: center;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedtopright {
+ vertical-align: top;
+ text-align: right;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedmiddleleft {
+ vertical-align: middle;
+ text-align: left;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedmiddlecenter {
+ vertical-align: middle;
+ text-align: center;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedmiddleright {
+ vertical-align: middle;
+ text-align: right;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedbottomleft {
+ vertical-align: bottom;
+ text-align: left;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedbottomcenter {
+ vertical-align: bottom;
+ text-align: center;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedbottomright {
+ vertical-align: bottom;
+ text-align: right;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedtop {
+ vertical-align: top;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedmiddle {
+ vertical-align: middle;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedbottom {
+ vertical-align: bottom;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedleft {
+ text-align: left;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedcenter {
+ text-align: center;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedright {
+ text-align: right;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .padded {
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .floatleft {
+ float: left;
+ }
+ .marginfloatleft {
+ float: left;
+ margin-right: 2em;
+ margin-bottom: 1em;
+ }
+ .floatright {
+ float: right;
+ }
+ .clearboth {
+ clear: both;
+ }
+ table.overview {
+ background-color: yellow;
+ padding-top: 0.5em;
+ padding-left: 2em;
+ padding-right: 2em;
+ padding-bottom: 0.5em;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ }
+}
+
+@media print {
+ /* General classes
+ */
+ /* In FF the TD element does not inherit the font size from body for print */
+ * {
+ font-size: 12pt;
+ }
+ body {
+ font-size: 12pt;
+ }
+ h1 {
+ font-size: 180%;
+ font-weight: bold;
+ }
+ h2 {
+ font-size: 160%;
+ font-weight: bold;
+ }
+ h3 {
+ font-size: 160%;
+ }
+ h4 {
+ font-size: 140%;
+ font-weight: bold;
+ }
+ h5 {
+ font-size: 140%;
+ }
+ h6 {
+ font-size: 120%;
+ font-weight: bold;
+ }
+ pre {
+ border-width: 1px;
+ border-style: solid;
+ border-color: black;
+ padding-top: 0.5em;
+ padding-left: 2em;
+ padding-right: 2em;
+ padding-bottom: 0.5em;
+ margin-top: 0.5em;
+ margin-left: 2em;
+ margin-right: 2em;
+ margin-bottom: 0.5em;
+ overflow: auto;
+ }
+ pre > i {
+ font-family: inherit;
+ font-style: italic;
+ }
+ pre code:before {
+ content: attr(title)':\20';
+ font-size: 50%;
+ }
+ /* Classes from the template
+ */
+ div.header {
+ margin: 5pt;
+ }
+ div.header div.headerleft {
+ float: left;
+ text-align: left;
+ }
+ div.header div.headercenter {
+ text-align: center;
+ }
+ div.header div.headercenter span.title {
+ font-size: 120%;
+ }
+ div.header div.headerright {
+ float: right;
+ text-align: right;
+ display: none;
+ }
+ div.navicon {
+ clear: both;
+ margin: 5pt;
+ }
+ div.navicon div.naviheader {
+ }
+ div.navicon div.contents: {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ }
+ div.footer {
+ clear: both;
+ border-style: solid;
+ border-width: 0.12pt;
+ border-color: black;
+ margin: 5px;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ div.footer div.footerleft {
+ float: left;
+ text-align: left;
+ }
+ div.footer div.footercenter {
+ text-align: center;
+ }
+ div.footer div.footerright {
+ float: right;
+ text-align: right;
+ }
+ /* Classes from htmlbook
+ */
+ div.hb_nm_div {
+ display: none;
+ float: right;
+ width: 23em;
+ }
+ ul.hb_nm_ul {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ }
+ li.hb_nm_li {
+ list-style: none;
+ }
+ a.hb_nm_a:link {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_nm_a:visited {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_nm_a:hover {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_nm_a:focus {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_nm_a_parent:link {
+ color: black;
+ font-weight: bold;
+ text-decoration: none;
+ }
+ a.hb_nm_a_parent:visited {
+ color: black;
+ font-weight: bold;
+ text-decoration: none;
+ }
+ a.hb_nm_a_parent:hover {
+ color: black;
+ font-weight: bold;
+ text-decoration: none;
+ }
+ a.hb_nm_a_parent:focus {
+ color: black;
+ font-weight: bold;
+ text-decoration: none;
+ }
+ li.hb_nm_c {
+ list-style: none;
+ color: black;
+ font-weight: bold;
+ }
+ li.hb_nm_sep {
+ list-style: none;
+ }
+ div.hb_navigation {
+ display: none;
+ }
+ a.hb_navi_a {
+ }
+ img.hb_navi_img {
+ }
+ div.hb_pos_div {
+ }
+ table.hb_pos_ta {
+ }
+ tr.hb_pos_tr {
+ }
+ td.hb_pos_td_arrow {
+ font-family: sans-serif;
+ font-size: 75%;
+ text-align: center;
+ vertical-align: top;
+ }
+ td.hb_pos_td_text {
+ font-family: sans-serif;
+ font-size: 75%;
+ text-align: left;
+ vertical-align: top;
+ }
+ div.contents_from_text {
+ }
+ span.hb_link_number {
+ }
+ table.hb_img_ta {
+ }
+ tr.hb_img_tr {
+ }
+ td.hb_img_td_img {
+ vertical-align: top;
+ text-align: center;
+ }
+ td.hb_img_td_empty {
+ display: none;
+ }
+ td.hb_img_td_a {
+ display: none;
+ }
+ a.hb_img_a_larger:link {
+ font-family: sans-serif;
+ font-size: 75%;
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_img_a_larger:visited {
+ font-family: sans-serif;
+ font-size: 75%;
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_img_a_larger:hover {
+ font-family: sans-serif;
+ font-size: 75%;
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_img_a_larger:focus {
+ font-family: sans-serif;
+ font-size: 75%;
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_a_i:link {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_a_i:visited {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_a_i:focus {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_a_i:hover {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_a_e {
+ }
+ table.hb_me_ta {
+ border-width: thin;
+ border-style: solid;
+ border-color: black;
+ }
+ tr.hb_me_tr {
+ border-width: thin;
+ border-style: solid;
+ border-color: black;
+ }
+ td.hb_me_td_text {
+ font-family: sans-serif;
+ text-align: left;
+ vertical-align: top;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ }
+ td.hb_me_td_arrow {
+ font-family: sans-serif;
+ text-align: center;
+ vertical-align: top;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ }
+ table.hb_ptoc_ta {
+ display: none;
+ }
+ tr.hb_ptoc_tr {
+ }
+ td.hb_ptoc_td_empty {
+ width: 3ex;
+ }
+ td.hb_ptoc_td_data {
+ font-family: sans-serif;
+ font-size: 75%;
+ text-align: left;
+ vertical-align: top;
+ }
+ a.hb_ptoc_a:link {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_ptoc_a:visited {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_ptoc_a:focus {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_ptoc_a:hover {
+ color: black;
+ text-decoration: none;
+ }
+ div.hb_link_div {
+ }
+ table.hb_link_ta {
+ margin-bottom: 1em;
+ }
+ td.hb_link_td_number {
+ text-align: center;
+ vertical-align: top;
+ }
+ td.hb_link_td_url {
+ text-align: left;
+ vertical-align: top;
+ }
+ div.hb_dtoc_div {
+ }
+ table.hb_dtoc_ta {
+ }
+ tr.hb_dtoc_tr {
+ }
+ td.hb_dtoc_td_space {
+ }
+ td.hb_dtoc_td_entry {
+ font-family: sans-serif;
+ font-size: 75%;
+ }
+ a.hb_dtoc_a:link {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_dtoc_a:visited {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_dtoc_a:focus {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_dtoc_a:hover {
+ color: black;
+ text-decoration: none;
+ }
+ div.hb_ki_div {
+ display: none;
+ }
+ h2.hb_ki_h2 {
+ }
+ dl.hb_ki_dl {
+ }
+ dt.hb_ki_dt {
+ font-weight: bold;
+ }
+ dd.hb_ki_dd {
+ }
+ ul.hb_ki_ul {
+ }
+ li.hb_ki_li {
+ list-style: none;
+ font-family: sans-serif;
+ font-size: 75%;
+ }
+ a.hb_ki_a:link {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_ki_a:visited {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_ki_a:focus {
+ color: black;
+ text-decoration: none;
+ }
+ a.hb_ki_a:hover {
+ color: black;
+ text-decoration: none;
+ }
+ div.hb_file_div {
+ border-width: 1px;
+ border-style: solid;
+ border-color: black;
+ padding-top: 0.5em;
+ padding-left: 2em;
+ padding-right: 2em;
+ padding-bottom: 0.5em;
+ margin-top: 0.5em;
+ margin-left: 2em;
+ margin-right: 2em;
+ margin-bottom: 0.5em;
+ }
+ div.hb_file_div pre {
+ border-style: none;
+ padding-top: 0.5em;
+ padding-left: 0px;
+ padding-right: 0px;
+ padding-bottom: 0px;
+ margin-top: 0px;
+ margin-left: 0px;
+ margin-right: 0px;
+ margin-bottom: 0px;
+ overflow: auto;
+ }
+ div.hb_file_div pre > i {
+ font-family: inherit;
+ font-style: italic;
+ }
+ a.hb_file_a:link {
+ color: black;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ a.hb_file_a:visited {
+ color: black;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ a.hb_file_a:focus {
+ color: black;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ a.hb_file_a:hover {
+ color: black;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ div.hb_img_div_outer {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+ }
+ div.hb_img_div_no_vspace {
+ }
+ div.hb_img_div_inner_img {
+ float: left;
+ vertical-align: top;
+ text-align: left;
+ margin-right: 2em;
+ }
+ div.hb_img_div_inner_img_centered {
+ float: left;
+ vertical-align: top;
+ text-align: center;
+ margin-right: 2em;
+ }
+ p.hb_img_p_download {
+ display: none;
+ }
+ span.hb_img_caption {
+ margin-top: 1em;
+ }
+ /* Classes for easier alignment.
+ */
+ .topleft {
+ vertical-align: top;
+ text-align: left;
+ }
+ .topcenter {
+ vertical-align: top;
+ text-align: center;
+ }
+ .topright {
+ vertical-align: top;
+ text-align: right;
+ }
+ .middleleft {
+ vertical-align: middle;
+ text-align: left;
+ }
+ .middlecenter {
+ vertical-align: middle;
+ text-align: center;
+ }
+ .middleright {
+ vertical-align: middle;
+ text-align: right;
+ }
+ .bottomleft {
+ vertical-align: bottom;
+ text-align: left;
+ }
+ .bottomcenter {
+ vertical-align: bottom;
+ text-align: center;
+ }
+ .bottomright {
+ vertical-align: bottom;
+ text-align: right;
+ }
+ .paddedtopleft {
+ vertical-align: top;
+ text-align: left;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedtopcenter {
+ vertical-align: top;
+ text-align: center;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedtopright {
+ vertical-align: top;
+ text-align: right;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedmiddleleft {
+ vertical-align: middle;
+ text-align: left;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedmiddlecenter {
+ vertical-align: middle;
+ text-align: center;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedmiddleright {
+ vertical-align: middle;
+ text-align: right;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedbottomleft {
+ vertical-align: bottom;
+ text-align: left;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedbottomcenter {
+ vertical-align: bottom;
+ text-align: center;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedbottomright {
+ vertical-align: bottom;
+ text-align: right;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedtop {
+ vertical-align: top;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedmiddle {
+ vertical-align: middle;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedbottom {
+ vertical-align: bottom;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedleft {
+ text-align: left;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedcenter {
+ text-align: center;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .paddedright {
+ text-align: right;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .padded {
+ padding-left: 0.25em;
+ padding-right: 0.25em;
+ padding-top: 0.12em;
+ padding-bottom: 0.12em;
+ }
+ .floatleft {
+ float: left;
+ }
+ .marginfloatleft {
+ float: left;
+ margin-right: 2em;
+ margin-bottom: 1em;
+ }
+ .floatright {
+ float: right;
+ }
+ .clearboth {
+ clear: both;
+ }
+ table.overview {
+ padding-top: 0.5em;
+ padding-left: 2em;
+ padding-right: 2em;
+ padding-bottom: 0.5em;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ }
+}
+
+@page {
+ margin-top: 1.5cm;
+ margin-bottom: 1.5cm;
+}
+
+@page :left {
+ margin-left: 1.5cm;
+ margin-right: 2.5cm;
+}
+
+@page :right {
+ margin-left: 2.5cm;
+ margin-right: 1.5cm;
+}
+
diff --git a/support/dktools/dktools/htmlbook/toc.fig b/support/dktools/dktools/htmlbook/toc.fig
new file mode 100644
index 0000000000..102f7243a4
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/toc.fig
@@ -0,0 +1,36 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+A4
+100.0
+Single
+-2
+1200 2
+0 32 #364e6d
+2 2 0 0 7 7 999 1 -1 0 0 0 0 0 0 5
+ 0 0 1200 0 1200 1200 0 1200 0 0
+2 4 0 0 0 0 105 1 5 0 0 0 19 0 0 5
+ 150 150 1125 150 1125 1125 150 1125 150 150
+2 4 0 0 0 0 104 1 10 0 0 0 19 0 0 5
+ 112 112 1087 112 1087 1087 112 1087 112 112
+2 4 0 0 4 4 103 1 20 0 0 0 16 0 0 5
+ 75 75 1050 75 1050 1050 75 1050 75 75
+2 4 0 0 6 6 102 1 20 0 0 0 16 0 0 5
+ 150 150 975 150 975 975 150 975 150 150
+2 1 0 5 0 0 99 1 -1 0 0 0 12 0 0 2
+ 225 337 712 337
+2 1 0 5 0 0 99 1 -1 0 0 0 12 0 0 2
+ 900 337 825 337
+2 1 0 5 0 0 99 1 -1 0 0 0 12 0 0 2
+ 225 487 712 487
+2 1 0 5 0 0 99 1 -1 0 0 0 12 0 0 2
+ 900 487 825 487
+2 1 0 5 0 0 99 1 -1 0 0 0 12 0 0 2
+ 225 637 712 637
+2 1 0 5 0 0 99 1 -1 0 0 0 12 0 0 2
+ 900 637 825 637
+2 1 0 5 0 0 99 1 -1 0 0 0 12 0 0 2
+ 225 787 712 787
+2 1 0 5 0 0 99 1 -1 0 0 0 12 0 0 2
+ 900 787 825 787
diff --git a/support/dktools/dktools/htmlbook/toc.png b/support/dktools/dktools/htmlbook/toc.png
new file mode 100644
index 0000000000..6248f9a4b6
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/toc.png
Binary files differ
diff --git a/support/dktools/dktools/htmlbook/web.hbt b/support/dktools/dktools/htmlbook/web.hbt
new file mode 100644
index 0000000000..9f59b60999
--- /dev/null
+++ b/support/dktools/dktools/htmlbook/web.hbt
@@ -0,0 +1,24 @@
+<div class="header">
+<div class="headerleft">
+%%img src=mylogo.png alt="My introduction to something" title%%
+</div><!-- class="headerleft" -->
+<div class="headerright">
+</div><!-- class="headerright" -->
+<div class="headercenter">
+<span class="title">%%title%%</span>
+</div><!-- class="headercenter" -->
+</div><!-- class="header" -->
+<div class="navicon">
+%%menu%%
+<div class="naviheader">&nbsp;</div>
+<div class="contents">
+%%navigation%%
+<div class="contents_from_text">%%contents%%</div><!-- class="contents_from_text" -->
+%%navigation%%
+</div><!-- class="contents" -->
+</div><!-- class="navicon" -->
+<div class="footer">
+<div class="footerleft">%%author%%</div>
+<div class="footerright">%%location%%, %%date style=german%%</div>
+<div class="footercenter">&nbsp;</div>
+</div><!-- class="footer" -->
diff --git a/support/dktools/dktools/itadmin/it-de.sql b/support/dktools/dktools/itadmin/it-de.sql
new file mode 100644
index 0000000000..ab58d7e4da
--- /dev/null
+++ b/support/dktools/dktools/itadmin/it-de.sql
@@ -0,0 +1,314 @@
+
+-- The database is named it
+
+create database it;
+
+use it;
+
+-- VLANs
+
+CREATE TABLE vlans (
+ vl_s char(8) NOT NULL default '', -- short VLAN type, i.e. 500
+ vl_l char(64) default 'mein Netzwerk', -- long type
+ vl_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY (vl_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE networks(
+ nw_ip char(18) NOT NULL default '', -- IP
+ nw_ma char(18) default '', -- Maske
+ nw_gw char(18) default '', -- Gateway
+ nw_bc char(18) default '', -- Broadcast-Adresse
+ vl_s char(8) default '', -- VLAN
+ nw_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ CONSTRAINT cf FOREIGN KEY(vl_s) REFERENCES vlans(vl_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY(nw_ip),
+ INDEX(vl_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Datendosen-Speed
+
+CREATE TABLE ddspeed (
+ sp_s char(12) NOT NULL default '', -- Kurze Bezeichnung
+ sp_l char(64) default NULL, -- ausfuerhliche Bezeichnung
+ sp_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sp_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+INSERT INTO ddspeed (sp_s, sp_l ) VALUES
+('auto', 'Autonegotiation'),
+('10', '10 MBit/s halbduplex'),
+('100', '100 MBit/s halbduplex'),
+('10fd', '10 MBit/s vollduplex'),
+('100fd', '100 MBit/s vollduplex');
+
+-- Gebaeude
+
+CREATE TABLE buildings (
+ gb_s char(4) NOT NULL default '', -- Name kurz
+ gb_l char(64) default NULL, -- Name komplett
+ gb_a1 char(64) default NULL, -- Adresszeile 1
+ gb_a2 char(64) default NULL, -- Adresszeile 2
+ gb_a3 char(64) default NULL, -- Adresszeile 3
+ gb_a4 char(64) default NULL, -- Adresszeile 4
+ gb_plz char(32) default '12345', -- PLZ
+ gb_ort char(64) default 'Irgendwo', -- Ort
+ gb_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(gb_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Datendosen
+
+CREATE TABLE patches (
+ dd_n char(16) NOT NULL default '', -- Kurze Bezeichnung der Dose, Aufdruck
+ sp_s char(12) default 'auto', -- Speed
+ vl_s char(8) default '-', -- VLAN type
+ dd_p char(16) default NULL, -- Port am Hub
+ gb_s char(4) default '', -- Haus
+ dd_r char(8) default NULL, -- Raumnummer
+ dd_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ CONSTRAINT c2 FOREIGN KEY (sp_s) REFERENCES ddspeed(sp_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c3 FOREIGN KEY (vl_s) REFERENCES vlans(vl_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c4 FOREIGN KEY (gb_s) REFERENCES buildings(gb_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY(dd_n),
+ INDEX(sp_s),
+ INDEX(vl_s),
+ INDEX(gb_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+-- Personen (Systemverantwortliche, Lizenzinhaber...)
+
+CREATE TABLE users (
+ us_s char(12) NOT NULL default '-', -- Loginname
+ us_t char(32) default NULL, -- Titel
+ us_sn char(64) default '', -- Vorname
+ us_fn char(64) default '', -- Familienname
+ us_em char(64) default NULL, -- E-Mail-Adresse
+ us_ko char(16) default NULL, -- Kostenstelle
+ us_se char(16) default NULL, -- SE 1...
+ us_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(us_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Netgroups
+
+CREATE TABLE netgroups (
+ ng_s char(12) NOT NULL default '-', -- Netgroup Name
+ ng_l char(64) default '', -- Beschreibung
+ ng_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(ng_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Beziehungen zwischen Netgroups
+
+CREATE TABLE ngdeps (
+ nd_pk int(10) unsigned NOT NULL auto_increment,
+ nd_p char(12) default NULL, -- Elterngruppe
+ nd_c char(12) default NULL, -- Kind (in Eltern enthalten)
+ nd_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ CONSTRAINT c5 FOREIGN KEY (nd_p) REFERENCES netgroups(ng_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c6 FOREIGN KEY (nd_c) REFERENCES netgroups(ng_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY(nd_pk),
+ INDEX(nd_p),
+ INDEX(nd_c)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- DHCP-Klassen
+
+CREATE TABLE dhcpclasses (
+ dc_s char(16) NOT NULL default '-', -- DHCP class name
+ dc_d char(64) default NULL, -- description
+ nw_ip char(18) NOT NULL default '0.0.0.0', -- IP address range for class
+ dc_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ CONSTRAINT cm FOREIGN KEY (nw_ip) REFERENCES networks(nw_ip) ON UPDATE CASCADE ON DELETE RESTRICT;
+ PRIMARY KEY(dc_s),
+ INDEX(nw_ip)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- DHCP-Pools
+
+CREATE TABLE dhcppools(
+ dp_pk int(10) unsigned NOT NULL auto_increment, -- primary key
+ dp_st char(18) default NULL, -- start address
+ dp_en char(18) default NULL, -- end address
+ nw_ip char(18) default NULL, -- network
+ dp_al integer default 0, -- allow unknown clients
+ dp_dn integer default 1, -- deny unknown clients
+ dc_s char(16) default NULL, -- allowed DHCP class
+ dp_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ CONSTRAINT ci FOREIGN KEY(nw_ip) REFERENCES networks(nw_ip) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cj FOREIGN KEY(dc_s) REFERENCES dhcpclasses(dc_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY(dp_pk),
+ INDEX(nw_ip)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- DHCP-Groups
+CREATE TABLE dhcpgroups(
+ dg_s char(16) NOT NULL, -- Group name, primary key
+ dg_l char(64) default NULL, -- description
+ dg_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(dg_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- DHCP-Options
+CREATE TABLE dhcpoptions(
+ do_pk int(10) unsigned NOT NULL auto_increment, -- primary key
+ do_sc ENUM('server', 'vlan', 'network', 'group', 'pool', 'host') default 'server',
+ do_sn char(32) default NULL, -- scope name
+ do_n char(64) NOT NULL, -- option name
+ do_v char(128) NOT NULL, -- option value
+ do_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(do_pk),
+ INDEX(do_sc),
+ INDEX(do_sn),
+ INDEX(do_n)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Hosts
+
+CREATE TABLE computers (
+ co_s char(16) NOT NULL default 'e__', -- Computername
+ us_s char(12) default '-', -- Systemverantwortlicher
+ co_ip char(18) default '192.168.101.1', -- IP-Adresse
+ co_mc char(18) default NULL, -- MAC-Adresse
+ ng_s char(12) default NULL, -- Netzgruppe
+ co_co char(64) default NULL, -- Kommentar
+ dc_s char(16) default NULL, -- DHCP-Klasse
+ dg_s char(16) default NULL, -- DHCP-Gruppe
+ dd_n char(16) default NULL, -- Datendose
+ gb_s char(4) default 'B', -- Gebaeude
+ co_r char(8) default '', -- Raumnummer
+ co_in char(12) default '0700000', -- Inventar-Nummer
+ co_sn char(64) default NULL, -- Seriennummer
+ co_dd char(64) default NULL, -- DNS Domain
+ co_ff integer default 0, -- full name first
+ co_gu integer default 0, -- guest PC
+ co_hi char(32) default NULL, -- Host-ID
+ co_ex DATE default NULL, -- Ablaufdatum Studenten-Laptops
+ co_nn integer default 0, -- skip when creating network docu
+ co_na integer default 0, -- skip in arpwatch
+ co_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ CONSTRAINT c7 FOREIGN KEY (us_s) REFERENCES users(us_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c8 FOREIGN KEY (ng_s) REFERENCES netgroups(ng_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cg FOREIGN KEY (gb_s) REFERENCES buildings(gb_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT ch FOREIGN KEY (dc_s) REFERENCES dhcpclasses(dc_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT ck FOREIGN KEY (dg_s) REFERENCES dhcpgroups(dg_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cm FOREIGN KEY (dd_n) REFERENCES patches(dd_n) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY (co_s),
+ INDEX(us_s),
+ INDEX(co_ip),
+ INDEX(ng_s),
+ INDEX(dc_s),
+ INDEX(dg_s),
+ INDEX(dd_n),
+ INDEX(gb_s),
+ INDEX(co_r),
+ INDEX(co_in),
+ INDEX(co_sn)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Aliases
+
+CREATE TABLE aliases (
+ al_s char(80) NOT NULL, -- the alias
+ co_s char(16) default NULL, -- alias target
+ al_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ CONSTRAINT co FOREIGN KEY(co_s) REFERENCES computers(co_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY(al_s),
+ INDEX(co_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Software-Hersteller
+
+CREATE TABLE swmanufacturers (
+ sm_s char(16) NOT NULL, -- Hersteller kurz
+ sm_l char(64) default '', -- Hersteller lang
+ sm_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sm_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Software-Produkte
+
+CREATE TABLE swproducts (
+ sw_s char(16) NOT NULL, -- Produkt, kurz
+ sw_l char(64) default '', -- Produkt lang
+ sm_s char(16) default '', -- Hersteller kurz
+ sw_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ CONSTRAINT c9 FOREIGN KEY (sm_s) REFERENCES swmanufacturers(sm_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY(sw_s),
+ INDEX(sm_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Software-Verkaeufer
+
+CREATE TABLE swresellers (
+ sr_s char(16) NOT NULL, -- Verkaeufer kurz
+ sr_l char(64) default '', -- Voller Name
+ sr_a1 char(64) default NULL, -- Addresszeile 1
+ sr_a2 char(64) default NULL, -- Addresszeile 2
+ sr_a3 char(64) default NULL, -- Addresszeile 3
+ sr_a4 char(64) default NULL, -- Addresszeile 4
+ sr_plz char(8) default NULL, -- PLZ
+ sr_ort char(64) default NULL, -- Ort
+ sr_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sr_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Lizenztypen
+
+CREATE TABLE licensetypes (
+ lt_s char(16) NOT NULL, -- Kurzbezeichnung
+ lt_l char(64) default '', -- vollstaendige Bezeichnung
+ lt_i int default 1, -- Anzahl der Plaetze
+ lt_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(lt_s),
+ INDEX(lt_l)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+INSERT INTO licensetype(lt_s, lt_l, lt_i) VALUES
+('e', 'Einzelplatzlizenz (1 Nutzer auf 1 Computer)', 1),
+('c', 'Concurrent-Lizenz für 1 Nutzer', 1),
+('flexlm' 'Flexlm-Client-Installation', 1),
+('gpl2', 'GNU General Public License, Version 2', 1),
+('lgpl2', 'GNU Lesser General Public License, Version 2', 1),
+('gpl3', 'GNU General Public License, Version 3', 1),
+('lgpl3', 'GNU Lesser General Public License, Version 3', 1),
+('bsd', 'BSD-Lizenz', 1),
+('flexlm-s5', 'Flexlm-Lizenz-Server, 5 Nutzer', 5);
+
+-- Nachweis ueber erworbene und eingesetzte Lizenzen
+
+CREATE TABLE licenses (
+ li_pk int(10) unsigned NOT NULL auto_increment,
+ li_on char(24) default NULL, -- Auftragsnummer der Bestellung
+ sw_s char(16) default NULL, -- Software-Produkt
+ us_s char(12) default NULL, -- User Login Name
+ co_s char(16) default NULL, -- Computer, auf dem eingesetzt
+ lt_s char(16) default 's', -- Lizenztyp
+ li_no char(64) default NULL, -- Notes (Bemerkungen)
+ sr_s char(16) default NULL, -- Verkaeufer
+ li_dd char(16) default NULL, -- Datum Lieferschein
+ li_nd char(16) default NULL, -- Lieferschein-Nr
+ li_di char(16) default NULL, -- Rechnungsdatum
+ li_ni char(16) default NULL, -- Rechnungsnummer
+ li_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ CONSTRAINT ca FOREIGN KEY (sw_s) REFERENCES swproducts(sw_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cb FOREIGN KEY (sr_s) REFERENCES swresellers(sr_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cc FOREIGN KEY (lt_s) REFERENCES licensetypes(lt_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cd FOREIGN KEY (us_s) REFERENCES users(us_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT ce FOREIGN KEY (co_s) REFERENCES computers(co_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY(li_pk),
+ INDEX(li_on),
+ INDEX(sw_s),
+ INDEX(us_s),
+ INDEX(co_s),
+ INDEX(lt_s),
+ INDEX(sr_s),
+ INDEX(li_dd),
+ INDEX(li_nd),
+ INDEX(li_di),
+ INDEX(li_ni)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
diff --git a/support/dktools/dktools/itadmin/it-latin1.sql b/support/dktools/dktools/itadmin/it-latin1.sql
new file mode 100644
index 0000000000..039e3eeac9
--- /dev/null
+++ b/support/dktools/dktools/itadmin/it-latin1.sql
@@ -0,0 +1,312 @@
+
+-- The database is named it
+
+create database it;
+
+use it;
+
+-- VLANs
+
+CREATE TABLE vlans (
+ vl_s char(8) NOT NULL default '', -- short VLAN type, i.e. 500
+ vl_l char(64) default 'my network', -- long type, description
+ vl_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY (vl_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE networks(
+ nw_ip char(18) NOT NULL default '', -- IP
+ nw_ma char(18) default '', -- network mask
+ nw_gw char(18) default '', -- default gateway
+ nw_bc char(18) default '', -- broadcast address
+ vl_s char(8) default '', -- VLAN
+ nw_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(nw_ip),
+ INDEX(vl_s),
+ CONSTRAINT cf FOREIGN KEY(vl_s) REFERENCES vlans(vl_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- network connection speed setup
+
+CREATE TABLE ddspeed (
+ sp_s char(12) NOT NULL default '', -- short name (abbreviation)
+ sp_l char(64) default NULL, -- long name, description
+ sp_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sp_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+INSERT INTO ddspeed (sp_s, sp_l ) VALUES
+('auto', 'Autonegotiation'),
+('10', '10 MBit/s half-duplex'),
+('100', '100 MBit/s half-duplex'),
+('10fd', '10 MBit/s full-duplex'),
+('100fd', '100 MBit/s full-duplex');
+
+-- buildings
+
+CREATE TABLE buildings (
+ gb_s char(4) NOT NULL default '', -- short name (abbreviation)
+ gb_l char(64) default NULL, -- complete name
+ gb_a1 char(64) default NULL, -- address line 1
+ gb_a2 char(64) default NULL, -- address line 2
+ gb_a3 char(64) default NULL, -- address line 3
+ gb_a4 char(64) default NULL, -- address line 4
+ gb_plz char(32) default '12345', -- ZIP code
+ gb_ort char(64) default 'Somewhere', -- location (town or city name)
+ gb_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(gb_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- network connections
+
+CREATE TABLE patches (
+ dd_n char(16) NOT NULL default '', -- short name, label on socket
+ sp_s char(12) default 'auto', -- speed setup
+ vl_s char(8) default '-', -- VLAN
+ dd_p char(16) default NULL, -- hub port used for socket
+ gb_s char(4) default '', -- building
+ dd_r char(8) default NULL, -- room
+ dd_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(dd_n),
+ INDEX(sp_s),
+ INDEX(vl_s),
+ INDEX(gb_s),
+ CONSTRAINT c2 FOREIGN KEY (sp_s) REFERENCES ddspeed(sp_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c3 FOREIGN KEY (vl_s) REFERENCES vlans(vl_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c4 FOREIGN KEY (gb_s) REFERENCES buildings(gb_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+-- persons (computer owners, license owners)
+
+CREATE TABLE users (
+ us_s char(12) NOT NULL default '-', -- short name, i.e. login name
+ us_t char(32) default NULL, -- title
+ us_sn char(64) default '', -- surname
+ us_fn char(64) default '', -- name
+ us_em char(64) default NULL, -- e-mail address
+ us_ko char(16) default NULL, -- department (costs controlling ID)
+ us_se char(16) default NULL, -- staff ID number
+ us_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(us_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- netgroups
+
+CREATE TABLE netgroups (
+ ng_s char(12) NOT NULL default '-', -- name
+ ng_l char(64) default '', -- description
+ ng_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(ng_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- netgroup relations
+
+CREATE TABLE ngdeps (
+ nd_pk int(10) unsigned NOT NULL auto_increment,
+ nd_p char(12) default NULL, -- parent group
+ nd_c char(12) default NULL, -- child group
+ nd_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(nd_pk),
+ INDEX(nd_p),
+ INDEX(nd_c),
+ CONSTRAINT c5 FOREIGN KEY (nd_p) REFERENCES netgroups(ng_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c6 FOREIGN KEY (nd_c) REFERENCES netgroups(ng_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- DHCP classes
+
+CREATE TABLE dhcpclasses (
+ dc_s char(16) NOT NULL default '-', -- DHCP class name
+ dc_d char(64) default NULL, -- description
+ nw_ip char(18) NOT NULL default '0.0.0.0', -- IP network for class
+ dc_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(dc_s),
+ INDEX(nw_ip),
+ CONSTRAINT cm FOREIGN KEY (nw_ip) REFERENCES networks(nw_ip) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- DHCP pools
+
+CREATE TABLE dhcppools(
+ dp_pk int(10) unsigned NOT NULL auto_increment, -- primary key
+ dp_st char(18) default NULL, -- start address
+ dp_en char(18) default NULL, -- end address
+ nw_ip char(18) default NULL, -- network
+ dp_al integer default 0, -- allow unknown clients
+ dp_dn integer default 1, -- deny unknown clients
+ dc_s char(16) default NULL, -- allowed DHCP class
+ dp_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(dp_pk),
+ INDEX(nw_ip),
+ CONSTRAINT ci FOREIGN KEY(nw_ip) REFERENCES networks(nw_ip) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cj FOREIGN KEY(dc_s) REFERENCES dhcpclasses(dc_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- DHCP groups
+CREATE TABLE dhcpgroups(
+ dg_s char(16) NOT NULL, -- group name, primary key
+ dg_l char(64) default NULL, -- description
+ dg_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(dg_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- DHCP options
+CREATE TABLE dhcpoptions(
+ do_pk int(10) unsigned NOT NULL auto_increment, -- primary key
+ do_sc ENUM('server', 'vlan', 'network', 'group', 'pool', 'host') default 'server', -- scope type
+ do_sn char(32) default NULL, -- scope name
+ do_n char(64) NOT NULL, -- option name
+ do_v char(128) NOT NULL, -- option value
+ do_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(do_pk),
+ INDEX(do_sc),
+ INDEX(do_sn),
+ INDEX(do_n)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- hosts
+
+CREATE TABLE computers (
+ co_s char(16) NOT NULL default 'e__', -- hostname
+ us_s char(12) default NULL, -- system owner
+ co_ip char(18) default NULL, -- IP address
+ co_mc char(18) default NULL, -- MAC address
+ ng_s char(12) default NULL, -- netgroup
+ co_co char(64) default NULL, -- comment, description
+ dc_s char(16) default NULL, -- DHCP class
+ dg_s char(16) default NULL, -- DHCP group
+ dd_n char(16) default NULL, -- network patch socket
+ gb_s char(4) default NULL, -- building
+ co_r char(8) default NULL, -- room
+ co_in char(12) default NULL, -- inventory number
+ co_sn char(64) default NULL, -- serial number
+ co_dd char(64) default NULL, -- DNS domain
+ co_ff integer default 0, -- full name first flag
+ co_gu integer default 0, -- guest PC flag
+ co_hi char(32) default NULL, -- host ID
+ co_ex DATE default NULL, -- expiration date (for guest PCs)
+ co_nn integer default 0, -- skip host when creating network docu
+ co_na integer default 0, -- skip in arpwatch
+ co_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY (co_s),
+ INDEX(us_s),
+ INDEX(co_ip),
+ INDEX(ng_s),
+ INDEX(dc_s),
+ INDEX(dg_s),
+ INDEX(dd_n),
+ INDEX(gb_s),
+ INDEX(co_r),
+ INDEX(co_in),
+ INDEX(co_sn),
+ CONSTRAINT c7 FOREIGN KEY (us_s) REFERENCES users(us_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c8 FOREIGN KEY (ng_s) REFERENCES netgroups(ng_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cg FOREIGN KEY (gb_s) REFERENCES buildings(gb_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT ch FOREIGN KEY (dc_s) REFERENCES dhcpclasses(dc_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT ck FOREIGN KEY (dg_s) REFERENCES dhcpgroups(dg_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cn FOREIGN KEY (dd_n) REFERENCES patches(dd_n) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE aliases (
+ al_s char(80) NOT NULL, -- the alias
+ co_s char(16) default NULL, -- alias target
+ co_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(al_s),
+ INDEX(co_s),
+ CONSTRAINT co FOREIGN KEY(co_s) REFERENCES computers(co_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- software manufacturers
+
+CREATE TABLE swmanufacturers (
+ sm_s char(16) NOT NULL, -- short name (abbreviation, key)
+ sm_l char(64) default '', -- full name
+ sm_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sm_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- software products
+
+CREATE TABLE swproducts (
+ sw_s char(16) NOT NULL, -- short name (order key or abbreviation)
+ sw_l char(64) default '', -- full product name
+ sm_s char(16) default '', -- software manufacturer
+ sw_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sw_s),
+ INDEX(sm_s),
+ CONSTRAINT c9 FOREIGN KEY (sm_s) REFERENCES swmanufacturers(sm_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- software resellers
+
+CREATE TABLE swresellers (
+ sr_s char(16) NOT NULL, -- short name (abbreviation, key)
+ sr_l char(64) default '', -- full name
+ sr_a1 char(64) default NULL, -- address line 1
+ sr_a2 char(64) default NULL, -- address line 2
+ sr_a3 char(64) default NULL, -- address line 3
+ sr_a4 char(64) default NULL, -- address line 4
+ sr_plz char(8) default NULL, -- ZIP code
+ sr_ort char(64) default NULL, -- location (town or city name)
+ sr_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sr_s)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- license types
+
+CREATE TABLE licensetypes (
+ lt_s char(16) NOT NULL, -- short name (abbreviation, key)
+ lt_l char(64) default '', -- full name of license type
+ lt_i int default 1, -- number of places for concurrent use
+ lt_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(lt_s),
+ INDEX(lt_l)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+INSERT INTO licensetypes (lt_s, lt_l, lt_i) VALUES
+('s', 'Single user user license', 1),
+('c', 'Single user concurrent license', 1),
+('flexlm', 'Flexlm controlled client installation', 1),
+('gpl2', 'GNU General Public License, version 2', 1),
+('lgpl2', 'GNU Lesser General Public License, version 2', 1),
+('gpl3', 'GNU General Public License, version 3', 1),
+('lgpl3', 'GNU Lesser General Public License, version 3', 1),
+('bsd', 'BSD style license', 1),
+('flexlm-s5', 'Flexlm license server, 5 users', 5);
+
+
+-- list of obtained licenses/installations
+
+CREATE TABLE licenses (
+ li_pk int(10) unsigned NOT NULL auto_increment,
+ li_on char(24) default NULL, -- internal order ID
+ sw_s char(16) default NULL, -- software product
+ us_s char(12) default NULL, -- user name of license owner
+ co_s char(16) default NULL, -- computer where license is used
+ lt_s char(16) default 's', -- license type
+ li_no char(64) default NULL, -- notes
+ sr_s char(16) default NULL, -- software reseller
+ li_dd char(16) default NULL, -- date of delivery
+ li_nd char(16) default NULL, -- delivery letter ID
+ li_di char(16) default NULL, -- date of invoice
+ li_ni char(16) default NULL, -- invoice ID
+ li_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(li_pk),
+ INDEX(li_on),
+ INDEX(sw_s),
+ INDEX(us_s),
+ INDEX(co_s),
+ INDEX(lt_s),
+ INDEX(sr_s),
+ INDEX(li_dd),
+ INDEX(li_nd),
+ INDEX(li_di),
+ INDEX(li_ni),
+ CONSTRAINT ca FOREIGN KEY (sw_s) REFERENCES swproducts(sw_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cb FOREIGN KEY (sr_s) REFERENCES swresellers(sr_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cc FOREIGN KEY (lt_s) REFERENCES licensetypes(lt_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cd FOREIGN KEY (us_s) REFERENCES users(us_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT ce FOREIGN KEY (co_s) REFERENCES computers(co_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
diff --git a/support/dktools/dktools/itadmin/it-utf8.sql b/support/dktools/dktools/itadmin/it-utf8.sql
new file mode 100644
index 0000000000..fe6c9158ff
--- /dev/null
+++ b/support/dktools/dktools/itadmin/it-utf8.sql
@@ -0,0 +1,312 @@
+
+-- The database is named it
+
+create database it;
+
+use it;
+
+-- VLANs
+
+CREATE TABLE vlans (
+ vl_s varchar(8) NOT NULL default '', -- short VLAN type, i.e. 500
+ vl_l varchar(64) default 'my network', -- long type, description
+ vl_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY (vl_s)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE networks(
+ nw_ip varchar(18) NOT NULL default '', -- IP
+ nw_ma varchar(18) default '', -- network mask
+ nw_gw varchar(18) default '', -- default gateway
+ nw_bc varchar(18) default '', -- broadcast address
+ vl_s varchar(8) default '', -- VLAN
+ nw_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(nw_ip),
+ INDEX(vl_s),
+ CONSTRAINT cf FOREIGN KEY(vl_s) REFERENCES vlans(vl_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- network connection speed setup
+
+CREATE TABLE ddspeed (
+ sp_s varchar(12) NOT NULL default '', -- short name (abbreviation)
+ sp_l varchar(64) default NULL, -- long name, description
+ sp_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sp_s)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+INSERT INTO ddspeed (sp_s, sp_l ) VALUES
+('auto', 'Autonegotiation'),
+('10', '10 MBit/s half-duplex'),
+('100', '100 MBit/s half-duplex'),
+('10fd', '10 MBit/s full-duplex'),
+('100fd', '100 MBit/s full-duplex');
+
+-- buildings
+
+CREATE TABLE buildings (
+ gb_s varchar(4) NOT NULL default '', -- short name (abbreviation)
+ gb_l varchar(64) default NULL, -- complete name
+ gb_a1 varchar(64) default NULL, -- address line 1
+ gb_a2 varchar(64) default NULL, -- address line 2
+ gb_a3 varchar(64) default NULL, -- address line 3
+ gb_a4 varchar(64) default NULL, -- address line 4
+ gb_plz varchar(32) default '12345', -- ZIP code
+ gb_ort varchar(64) default 'Somewhere', -- location (town or city name)
+ gb_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(gb_s)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- network connections
+
+CREATE TABLE patches (
+ dd_n varchar(16) NOT NULL default '', -- short name, label on socket
+ sp_s varchar(12) default 'auto', -- speed setup
+ vl_s varchar(8) default '-', -- VLAN
+ dd_p varchar(16) default NULL, -- hub port used for socket
+ gb_s varchar(4) default '', -- building
+ dd_r varchar(8) default NULL, -- room
+ dd_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(dd_n),
+ INDEX(sp_s),
+ INDEX(vl_s),
+ INDEX(gb_s),
+ CONSTRAINT c2 FOREIGN KEY (sp_s) REFERENCES ddspeed(sp_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c3 FOREIGN KEY (vl_s) REFERENCES vlans(vl_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c4 FOREIGN KEY (gb_s) REFERENCES buildings(gb_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+
+-- persons (computer owners, license owners)
+
+CREATE TABLE users (
+ us_s varchar(12) NOT NULL default '-', -- short name, i.e. login name
+ us_t varchar(32) default NULL, -- title
+ us_sn varchar(64) default '', -- surname
+ us_fn varchar(64) default '', -- name
+ us_em varchar(64) default NULL, -- e-mail address
+ us_ko varchar(16) default NULL, -- department (costs controlling ID)
+ us_se varchar(16) default NULL, -- staff ID number
+ us_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(us_s)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- netgroups
+
+CREATE TABLE netgroups (
+ ng_s varchar(12) NOT NULL default '-', -- name
+ ng_l varchar(64) default '', -- description
+ ng_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(ng_s)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- netgroup relations
+
+CREATE TABLE ngdeps (
+ nd_pk int(10) unsigned NOT NULL auto_increment,
+ nd_p varchar(12) default NULL, -- parent group
+ nd_c varchar(12) default NULL, -- child group
+ nd_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(nd_pk),
+ INDEX(nd_p),
+ INDEX(nd_c),
+ CONSTRAINT c5 FOREIGN KEY (nd_p) REFERENCES netgroups(ng_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c6 FOREIGN KEY (nd_c) REFERENCES netgroups(ng_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- DHCP classes
+
+CREATE TABLE dhcpclasses (
+ dc_s varchar(16) NOT NULL default '-', -- DHCP class name
+ dc_d varchar(64) default NULL, -- description
+ nw_ip varchar(18) NOT NULL default '0.0.0.0', -- IP network for class
+ dc_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(dc_s),
+ INDEX(nw_ip),
+ CONSTRAINT cm FOREIGN KEY (nw_ip) REFERENCES networks(nw_ip) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- DHCP pools
+
+CREATE TABLE dhcppools(
+ dp_pk int(10) unsigned NOT NULL auto_increment, -- primary key
+ dp_st varchar(18) default NULL, -- start address
+ dp_en varchar(18) default NULL, -- end address
+ nw_ip varchar(18) default NULL, -- network
+ dp_al integer default 0, -- allow unknown clients
+ dp_dn integer default 1, -- deny unknown clients
+ dc_s varchar(16) default NULL, -- allowed DHCP class
+ dp_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(dp_pk),
+ INDEX(nw_ip),
+ CONSTRAINT ci FOREIGN KEY(nw_ip) REFERENCES networks(nw_ip) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cj FOREIGN KEY(dc_s) REFERENCES dhcpclasses(dc_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- DHCP groups
+CREATE TABLE dhcpgroups(
+ dg_s varchar(16) NOT NULL, -- group name, primary key
+ dg_l varchar(64) default NULL, -- description
+ dg_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(dg_s)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- DHCP options
+CREATE TABLE dhcpoptions(
+ do_pk int(10) unsigned NOT NULL auto_increment, -- primary key
+ do_sc ENUM('server', 'vlan', 'network', 'group', 'pool', 'host') default 'server', -- scope type
+ do_sn varchar(32) default NULL, -- scope name
+ do_n varchar(64) NOT NULL, -- option name
+ do_v varchar(128) NOT NULL, -- option value
+ do_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(do_pk),
+ INDEX(do_sc),
+ INDEX(do_sn),
+ INDEX(do_n)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- hosts
+
+CREATE TABLE computers (
+ co_s varchar(16) NOT NULL default 'e__', -- hostname
+ us_s varchar(12) default NULL, -- system owner
+ co_ip varchar(18) default NULL, -- IP address
+ co_mc varchar(18) default NULL, -- MAC address
+ ng_s varchar(12) default NULL, -- netgroup
+ co_co varchar(64) default NULL, -- comment, description
+ dc_s varchar(16) default NULL, -- DHCP class
+ dg_s varchar(16) default NULL, -- DHCP group
+ dd_n varchar(16) default NULL, -- network patch socket
+ gb_s varchar(4) default NULL, -- building
+ co_r varchar(8) default NULL, -- room
+ co_in varchar(12) default NULL, -- inventory number
+ co_sn varchar(64) default NULL, -- serial number
+ co_dd varchar(64) default NULL, -- DNS domain
+ co_ff integer default 0, -- full name first flag
+ co_gu integer default 0, -- guest PC flag
+ co_hi varchar(32) default NULL, -- host ID
+ co_ex DATE default NULL, -- expiration date (for guest PCs)
+ co_nn integer default 0, -- skip host when creating network docu
+ co_na integer default 0, -- skip in arpwatch
+ co_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY (co_s),
+ INDEX(us_s),
+ INDEX(co_ip),
+ INDEX(ng_s),
+ INDEX(dc_s),
+ INDEX(dg_s),
+ INDEX(dd_n),
+ INDEX(gb_s),
+ INDEX(co_r),
+ INDEX(co_in),
+ INDEX(co_sn),
+ CONSTRAINT c7 FOREIGN KEY (us_s) REFERENCES users(us_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT c8 FOREIGN KEY (ng_s) REFERENCES netgroups(ng_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cg FOREIGN KEY (gb_s) REFERENCES buildings(gb_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT ch FOREIGN KEY (dc_s) REFERENCES dhcpclasses(dc_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT ck FOREIGN KEY (dg_s) REFERENCES dhcpgroups(dg_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cn FOREIGN KEY (dd_n) REFERENCES patches(dd_n) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE aliases (
+ al_s varchar(80) NOT NULL, -- the alias
+ co_s varchar(16) default NULL, -- alias target
+ co_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(al_s),
+ INDEX(co_s),
+ CONSTRAINT co FOREIGN KEY(co_s) REFERENCES computers(co_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- software manufacturers
+
+CREATE TABLE swmanufacturers (
+ sm_s varchar(16) NOT NULL, -- short name (abbreviation, key)
+ sm_l varchar(64) default '', -- full name
+ sm_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sm_s)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- software products
+
+CREATE TABLE swproducts (
+ sw_s varchar(16) NOT NULL, -- short name (order key or abbreviation)
+ sw_l varchar(64) default '', -- full product name
+ sm_s varchar(16) default '', -- software manufacturer
+ sw_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sw_s),
+ INDEX(sm_s),
+ CONSTRAINT c9 FOREIGN KEY (sm_s) REFERENCES swmanufacturers(sm_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- software resellers
+
+CREATE TABLE swresellers (
+ sr_s varchar(16) NOT NULL, -- short name (abbreviation, key)
+ sr_l varchar(64) default '', -- full name
+ sr_a1 varchar(64) default NULL, -- address line 1
+ sr_a2 varchar(64) default NULL, -- address line 2
+ sr_a3 varchar(64) default NULL, -- address line 3
+ sr_a4 varchar(64) default NULL, -- address line 4
+ sr_plz varchar(8) default NULL, -- ZIP code
+ sr_ort varchar(64) default NULL, -- location (town or city name)
+ sr_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(sr_s)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- license types
+
+CREATE TABLE licensetypes (
+ lt_s varchar(16) NOT NULL, -- short name (abbreviation, key)
+ lt_l varchar(64) default '', -- full name of license type
+ lt_i int default 1, -- number of places for concurrent use
+ lt_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(lt_s),
+ INDEX(lt_l)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+INSERT INTO licensetypes (lt_s, lt_l, lt_i) VALUES
+('s', 'Single user user license', 1),
+('c', 'Single user concurrent license', 1),
+('flexlm', 'Flexlm controlled client installation', 1),
+('gpl2', 'GNU General Public License, version 2', 1),
+('lgpl2', 'GNU Lesser General Public License, version 2', 1),
+('gpl3', 'GNU General Public License, version 3', 1),
+('lgpl3', 'GNU Lesser General Public License, version 3', 1),
+('bsd', 'BSD style license', 1),
+('flexlm-s5', 'Flexlm license server, 5 users', 5);
+
+
+-- list of obtained licenses/installations
+
+CREATE TABLE licenses (
+ li_pk int(10) unsigned NOT NULL auto_increment,
+ li_on varchar(24) default NULL, -- internal order ID
+ sw_s varchar(16) default NULL, -- software product
+ us_s varchar(12) default NULL, -- user name of license owner
+ co_s varchar(16) default NULL, -- computer where license is used
+ lt_s varchar(16) default 's', -- license type
+ li_no varchar(64) default NULL, -- notes
+ sr_s varchar(16) default NULL, -- software reseller
+ li_dd varchar(16) default NULL, -- date of delivery
+ li_nd varchar(16) default NULL, -- delivery letter ID
+ li_di varchar(16) default NULL, -- date of invoice
+ li_ni varchar(16) default NULL, -- invoice ID
+ li_m timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+ PRIMARY KEY(li_pk),
+ INDEX(li_on),
+ INDEX(sw_s),
+ INDEX(us_s),
+ INDEX(co_s),
+ INDEX(lt_s),
+ INDEX(sr_s),
+ INDEX(li_dd),
+ INDEX(li_nd),
+ INDEX(li_di),
+ INDEX(li_ni),
+ CONSTRAINT ca FOREIGN KEY (sw_s) REFERENCES swproducts(sw_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cb FOREIGN KEY (sr_s) REFERENCES swresellers(sr_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cc FOREIGN KEY (lt_s) REFERENCES licensetypes(lt_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT cd FOREIGN KEY (us_s) REFERENCES users(us_s) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT ce FOREIGN KEY (co_s) REFERENCES computers(co_s) ON UPDATE CASCADE ON DELETE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
diff --git a/support/dktools/dktools/print-snmp.conf b/support/dktools/dktools/print-snmp.conf
new file mode 100644
index 0000000000..a32f8c45c5
--- /dev/null
+++ b/support/dktools/dktools/print-snmp.conf
@@ -0,0 +1,174 @@
+#
+# The first ``default'' entry shows the built-in default
+# configuration.
+# It may be used as a template to construct your own models.
+#
+
+[default]
+
+# Phase 1: Mapping device/printer status to summary states
+# --------------------------------------------------------
+
+map = unknown/other unknown
+map = unknown/unknown unknown
+map = unknown/idle unknown
+map = unknown/printing unknown
+map = unknown/warmup warmup
+
+map = running/other standby
+map = running/unknown unknown
+map = running/idle idle
+map = running/printing busy
+map = running/warmup warmup
+
+map = warning/other standby
+map = warning/unknown unknown
+map = warning/idle idle
+map = warning/printing busy
+map = warning/warmup warmup
+
+map = testing/other unknown
+map = testing/unknown unknown
+map = testing/idle unknown
+map = testing/printing unknown
+map = testing/warmup warmup
+
+map = down/other error
+map = down/unknown error
+map = down/idle error
+map = down/printing error
+map = down/warmup warmup
+
+# Phase 2: Setting summary state to error for specified conditions
+# ----------------------------------------------------------------
+
+# Appearance of an error condition will interrupt printing.
+
+# Printer attempts to print, but no paper available.
+error condition = no-paper
+
+# Printer attempts to print, but no toner available.
+error condition = no-toner
+
+# Printer opened.
+error condition = door-open
+
+# Paper jam.
+error condition = paper-jam
+
+# Printer is offline (not working).
+error condition = offline
+
+# Input tray removed (i.e. to fill it).
+error condition = input-tray-missing
+
+# Output tray removed.
+error condition = output-tray-missing
+
+# Marker removed.
+error condition = marker-supply-missing
+
+# Output tray is full.
+error condition = output-full
+
+
+# Although the following conditions are referred to as error conditions
+# in RFC, they will not interrupt printing.
+# So we see them as warnings, not errors.
+
+# Only low amount of paper available, will become ``out of paper'' soon.
+# error condition = low-paper
+
+# Only low amount of toner available, will become ``out of toner'' soon.
+# error condition = low-toner
+
+# At least one input tray is empty.
+# error condition = input-tray-empty
+
+# Output tray is nearly full, will become full soon.
+# error condition = output-near-full
+
+# Service is requested, may be you need to press a button on the printer.
+# error condition = service-requested
+
+# Preventive maintenance required.
+# error condition = overdue-preventive-maintenance
+
+
+# Phase 3: For summary unknown use the text status OID
+------------------------------------------------------
+
+# OID to inspect for status text, _must_ be numeric.
+status text oid = 1.3.6.1.2.1.43.16.5.1.2.1.1
+
+# No texts are set up here as the texts are vendor, model and
+# language specific.
+# Use ``text standby'', ``start standby'', ``text idle'' or ``start idle''
+# to specify texts indicating standby or idle summary state.
+# Use ``start'' if you do not specify the entire text, but only
+# the first part of the status text.
+# Specify the string either in double quotes or as a hexadecimal byte sequence.
+
+# text standby = "Power Save"
+# text standby = 50 6F 77 65 72 20 53 61 76 65
+# text idle = " Druckbereit"
+# start idle = 20 20 20 20 20 20 20 20 44 72 75 63 6B
+
+
+#
+# The following model is a Xerox Phaser 4622 configured
+# for german language.
+#
+
+[xph4622-de]
+
+# Map device status / printer status combinations to summary states.
+#
+map = unknown/other unknown
+map = unknown/unknown unknown
+map = unknown/idle unknown
+map = unknown/printing unknown
+map = unknown/warmup warmup
+map = running/other unknown
+map = running/unknown unknown
+map = running/idle unknown
+map = running/printing unknown
+map = running/warmup warmup
+map = warning/other unknown
+map = warning/unknown unknown
+map = warning/idle unknown
+map = warning/printing unknown
+map = warning/warmup warmup
+map = testing/other unknown
+map = testing/unknown unknown
+map = testing/idle unknown
+map = testing/printing unknown
+map = testing/warmup warmup
+map = down/other error
+map = down/unknown error
+map = down/idle error
+map = down/printing error
+map = down/warmup warmup
+
+text standby = "Power Save"
+
+text idle = " Druckbereit"
+
+# Druckbereit
+start idle = 20 20 20 20 20 20 20 20 44 72 75 63 6B
+
+text busy = "Drucken"
+
+# Behaelter 2
+start error = 42 65 68 C3 A4 6C 74 65 72 20 32
+
+# Behaelter 2 ...
+start error = 20 20 20 20 20 20 42 65 68 C3 A4 6C 74 65 72 20 32
+
+# Fehler
+text error = "Fehler"
+
+start error = " Schacht 1"
+
+start error = "Angehalten"
+